<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: В рамках проекта SMACK развивается новая система статической...</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html</link>
    <description>В списке рассылки разработчиков LLVM представлен (http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/058972.html) новый проект SMACK (http://smackers.github.com/smack/), в рамках которого создан инструмент для статической проверки свойств программ, написанных на языках  C/C++. На основании анализа исходных текстов программы, без непосредственного выполнения приложения, SMACK позволяет выявить нарушение заданных пользователем  утверждений корректности (assertions (https://github.com/smackers/smack/tree/master/examples)). &lt;br&gt;&lt;br&gt;&lt;br&gt;Код инструмента поставляется (https://github.com/smackers/smack) под лицензией MIT и интегрируется с инфраструктурой компиляции LLVM. При желании SMACK может быть выведен за рамки C/C++ и после небольшой доработки использован для проверки кода на любом другом языке программирования, поддерживаемом в LLVM. Также возможно создание расширений, работающих поверх SMACK.&lt;br&gt;&lt;br&gt;URL: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-February/058972.html&lt;br&gt;Новость: http://www.opennet.ru/opennews/art.</description>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Vkni)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#51</link>
    <pubDate>Wed, 06 Feb 2013 17:08:51 GMT</pubDate>
    <description>&amp;gt; Примерно также могли бы поступать и шаблоны в c++. Но видимо были &lt;br&gt;&amp;gt; на то какие-то веские основания так не делать.&lt;br&gt;&lt;br&gt;Хаскелл появился через год после введения шаблонов в С++.&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (scor)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#50</link>
    <pubDate>Wed, 06 Feb 2013 14:01:42 GMT</pubDate>
    <description>&amp;gt; В вашем примере же правила приведения какие-то отрабатывают, я так понимаю?&lt;br&gt;&lt;br&gt;http://www.ibm.com/developerworks/ru/library/l-haskell2/index.html?ca=drs-&lt;br&gt;Типы не приводятся автоматически, они могут выводятся, исходя их контекста написанного выражения.&lt;br&gt;Prelude&amp;gt; :t max&lt;br&gt;max :: Ord a =&amp;gt; a -&amp;gt; a -&amp;gt; a&lt;br&gt;В данном случае тип выражения наиболее общий. Любой тип, который может быть упорядочен (Ord), т.е. для которого определена функция &quot;compare&quot;. Но тип двух аргументов и результата должен быть одинаков.&lt;br&gt;Prelude&amp;gt; :t max 1&lt;br&gt;max 1 :: (Num a, Ord a) =&amp;gt; a -&amp;gt; a&lt;br&gt;Тут мы уже более конкретизировали наши намерения. Помимо Ord, мы ещё хотим, чтобы аргумент относился к классу чисел (Num), для которого определены функции: +, -, * и взятие абсолютного значения (abs).&lt;br&gt;Prelude&amp;gt; :t max 1.2&lt;br&gt;max 1.2 :: (Fractional a, Ord a) =&amp;gt; a -&amp;gt; a&lt;br&gt;Более конкретно. Мы хотим тип для которго определено значение функции / &quot;разделить&quot;.&lt;br&gt;Prelude&amp;gt; :t max &apos;a&apos;&lt;br&gt;max &apos;a&apos; :: Char -&amp;gt; Char&lt;br&gt;Тут мы хотим тип Char, для которого определена операция сравнения и с</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Vkni)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#49</link>
    <pubDate>Wed, 06 Feb 2013 13:50:48 GMT</pubDate>
    <description>&amp;gt; ну да, это трудно понимаемый кусок, помню с каким трудом въезжал - &lt;br&gt;&amp;gt; ещё на паскале... Но он довольно невелик и далеко не всегда &lt;br&gt;&amp;gt; нужен, если брать не яву какую.&lt;br&gt;&lt;br&gt;Алекс, по моему опыту, переход на по-настоящему новые приёмы всегда приводит к мозголомке. У меня она была при изучении процедурного програзма, потом ОО, потом шаблонов, потом функциональщины. Я просто помню эти мозголомки, поэтому мне кажется это всё неестественным.&lt;br&gt;&lt;br&gt;А дальше, как привыкнешь, уже всё кажется в доску естественным и правильным.&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Crazy Alex)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#48</link>
    <pubDate>Wed, 06 Feb 2013 13:04:15 GMT</pubDate>
    <description>ох, наверное, да. В вашем примере же правила приведения какие-то отрабатывают, я так понимаю? Тут я даже не уверен, какой вариант предпочту - всё же автоматическое примедение типов иногда делает те ещё подляны. Кстати, а что будет, если одним из аргументов вам сунуть не Double, а функцию или строку?&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Crazy Alex)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#47</link>
    <pubDate>Wed, 06 Feb 2013 13:01:37 GMT</pubDate>
    <description>ну да, это трудно понимаемый кусок, помню с каким трудом въезжал - ещё на паскале... Но он довольно невелик и далеко не всегда нужен, если брать не яву какую.&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Vkni)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#46</link>
    <pubDate>Wed, 06 Feb 2013 11:48:40 GMT</pubDate>
    <description>&amp;gt; NT вполне себе актуально. Просто здесь его некоторые активно не любят по &lt;br&gt;&amp;gt; понятным причинам, но ядро, насколько я знаю, неплохое.&lt;br&gt;&lt;br&gt;Очень хорошее ядро. Позволяет, в частности, построить поверх себя POSIX, OS/2, Win32 и т.д.&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (scor)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#45</link>
    <pubDate>Wed, 06 Feb 2013 05:57:30 GMT</pubDate>
    <description>&amp;gt; Хотя нет - эта не развернется, это ж не хвостовая рекурсия... будет стек создавать зачем-то...&lt;br&gt;&lt;br&gt;Тут вы правы. Гораздо читабельней и эффективней будет так:&lt;br&gt;let fac n = product &#091;1..n&#093;&lt;br&gt;&lt;br&gt;Понять, что тут произойдёт и чему равен результат сможет почти кто угодно.:)&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (scor)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#44</link>
    <pubDate>Wed, 06 Feb 2013 05:31:12 GMT</pubDate>
    <description>сложного ничего конечно, но работает не так, как, очевидно, ожидается.:)&lt;br&gt;чему равна в этом случае:&lt;br&gt;max(1, 2.3);&lt;br&gt;очевидно, что должно быть:&lt;br&gt;max(1, 2.3) == 2.3&lt;br&gt;но компилятор не согласен:)&lt;br&gt;error: no matching function for call to &apos;max(int, double)&apos;&lt;br&gt;note: candidate is:&lt;br&gt;note: template&amp;lt;class Type&amp;gt; Type max(Type, Type)&lt;br&gt;note: template argument deduction/substitution failed&lt;br&gt;note: deduced conflicting types for parameter &apos;Type&apos; (&apos;int&apos; and &apos;double&apos;)&lt;br&gt;&lt;br&gt;в отличии от:&lt;br&gt;Prelude&amp;gt; :t max&lt;br&gt;max :: Ord a =&amp;gt; a -&amp;gt; a -&amp;gt; a&lt;br&gt;Prelude&amp;gt; max 1 2&lt;br&gt;2&lt;br&gt;Prelude&amp;gt; max 1.0 2&lt;br&gt;2.0&lt;br&gt;Prelude&amp;gt; max 1 2.0&lt;br&gt;2.0&lt;br&gt;Prelude&amp;gt; max 1 (2/3)&lt;br&gt;1.0&lt;br&gt;Prelude&amp;gt; :t 1&lt;br&gt;1 :: Num a =&amp;gt; a&lt;br&gt;Prelude&amp;gt; :t 2.0&lt;br&gt;2.0 :: Fractional a =&amp;gt; a&lt;br&gt;Prelude&amp;gt; :t (2/3)&lt;br&gt;(2/3) :: Fractional a =&amp;gt; a&lt;br&gt;можно и явно указать, что мы хотим получить в результате:&lt;br&gt;Prelude&amp;gt; max 1 (2.0 :: Double)&lt;br&gt;2.0&lt;br&gt;Prelude&amp;gt; :t max 1 (2.0 :: Double)&lt;br&gt;max 1 (2.0 :: Double) :: Double&lt;br&gt;&lt;br&gt;Ну это я уже придираюсь видимо.:)&lt;br&gt;</description>
</item>

<item>
    <title>В рамках проекта SMACK развивается новая система статической... (Vkni)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/88526.html#43</link>
    <pubDate>Wed, 06 Feb 2013 01:27:52 GMT</pubDate>
    <description>&amp;gt; А простой template class MyClass&amp;lt;class T&amp;gt; :public T &#123;...&#125; наваять - ничего &lt;br&gt;&amp;gt; сложного, в общем-то.&lt;br&gt;&lt;br&gt;Алекс, наваять и метапрограммную фигню на них несложно. Сложно это читать. :-)&lt;br&gt;&lt;br&gt;Там, в шаблонах масса всяких косяков. Например, в С++98 целое число может быть параметром шаблона, а вещественное - нет.&lt;br&gt;</description>
</item>

</channel>
</rss>
