для чего драйвера-то, под какую ось?
если под линукс, то логичнее было бы запихнуть поддержку
haskell rts в ядро, как это сделали с C++.
я как-то не вижу особой необходимости в рекурсивых функциях
и pattern-matching внутри драйверов
>Доказательство правильности любого нетривиального алгоритма практически невозможно (на данный момент).
Добро пожаловать в мир ФП! Там (для чисто функциональных языков) это возможно, хотя тоже не тривиально. По крайней мере, намного проще, чем для императивных языков.
> Какие преимущества дает Haskell по сравнению например с C в плане написания системного софта?
преимущества тут скорее скорее в образе мышления, который диктует Haskell и даже не Haskell сам по себе, а ФП вцелом. хаскелисты говорят "если программа скомпиллировалась правильно, то скорее всего, она не содержит ошибок" и как правило так оно и есть. основных преимуществ, на мой взгляд два: более надёжный код и высокая скорость разработки.
что касается системного софта - один бразильский студент написал на Haskell полноценный компилятор С всего за 2,5 месяца. причём имейте в виду, что на хаскеле AFAIK практически нет такого количества готовых библиотек как н.п. SF или Freshmeat для С или CPAN для перла, когда из готовых модулей можно собрать конструктор. в данном случае этому студенту всё пришлось писать с нуля на голом языке.
из недостатков - высокий начальный порог освоения. нужно быть готовым к тому, что на освоение ФП может придётся потратить год а то и более.
Сейчас уже вовсю бабуины на вижалбейсике программируют, так что данную задачу придется решать программистам вообще, или уходить за полярный круг -- там бабуинов нет.
дело-то совсем не в том, что ты именно "программист на..", а в том, что после знакомства с такими языками как lisp, ml и haskell от всего остального мейнстрима начинает подташнивать.. а каждый день на работе испытывать такое чувство не хотелось бы..
> Всё это конечно класно, но к сожалению haskel программисту приходится решать сильно нетривиальную задачу -- найти работу haskel программистом.
это да, но изучение и хаскеля и ФП полезно и само по себе - полученные навыки в новом для себя стиле мышления помогут и при решении задач на традиционных ЯП. я при этом подразумеваю, что под haskel-программистом понимается не человек, просто знающий синтаксис хаскеля :-) вообще идиома "программист на <ЯП>" - это IMHO идиотизм. человек либо программист, либо непрограммист :-)
ну и потом с усложнением проектов, над которыми приходится работать программистам острее встанет вопрос о соответствии кода заданным спецификациям, об автоматическом доказательстве правильности кода. так что ФП ещё себя покажет.
>после знакомства с такими языками как lisp, ml и haskell от всего остального мейнстрима начинает подташнивать.
Очень похоже на этот текст:
>>Цитата:
>Предлагаю радикальный вариант: модифицированый Prolog! Что-нибудь типа Delphi+клей+Prolog.
>Самой лучшей характеристикой языков логического (декларативного) программирования типа Prolog является название статьи "Prolog ещё жив". В теории программирования в 80-е годы бытовало мнение, что это самое перспективное направление. Так было до тех пор, пока не стали понятны проблемы этих языков - необходимость усечений для ликвидации бесконечной рекурсии, негарантированность времени отклика, крайне низкая негарантированная надёжность систем. Появление объектного
>Однако на языки программирования они не тянут - соответствующие средства 3D должны быть стандартными в "языке программирования будущего". Очевидно, что это будет
а) алгоритмический язык (так что функциональные языки типа Lisp и ML отпадают - их время прошло, как и у декларативных языков)
б) язык структурного программирования (так что Java и C# отпадают - они неструктурны. В них совмещены декларация с реализацией.)
в) язык объектного программирования
>Самыми перспективными языками являются функциональные языки. Скоро. Очень скоро императивные языки будут побиты функиональными. В числе лидеров функционального программирования идут Prolog, Haskell, ML, Schema. так что их учить надо. Хотя, лучше изучать их все, т.е. парадигму функционального программирования.
Если уж есть время на изучение экзотики, лучше смотрите в сторону c++. В сторону новых веяний в этом языке. Haskel, ml, lisp... Ну, начните, например, с boost::lambda, boost::spirit (www.boost.org). Вещи, от которых крышу сносит, и при том это вещи, которые компилятся на всех популярных компайлерах c++.
Надёжность, возможность автоматического распараллеливания, возможность формального доказательства соответствия реализации и спецификации, высокая скорость разработки, значительно больший code reuse, чем в любом другом языке. Этого мало?
Да, конечно, есть и недостатки - херовый тормозной runtime, поганые
компиляторы, недоделанный inference свойств для классов типов... И ведь можно же ленивые языки компилировать эффективно - см. тот же Clean, почему такого никто для Haskell не сделает - dunno.
Сколько можно повторять? Не бывает работы "XXX программистом", где XXX - любой язык или технология. Бывают только "XXX кодеры". Программиста же никто не спрашивает, какие инструменты он собирается использовать.
ЗЫ: а найти работу, где от тебя потребуют знание Лиспа, Хаскелля, МЛ-а - довольно легко.
А это подташнивание выливается в желание мейнстрим облагородить. От чего и получаются такие проекты, как SISC или JSE (на последнее (искать на свежемясе) - приказываю немедленно смотреть всем, кто программирует на Java).
Да, а на C++ смотреть не так уж и тошно - он позволяет, при некоторой степени изращённости ума, писать очень даже с качественными подходами.
flamer если тебе приятно зубы через жопу рвать, то это твои проблемы ;)
пользуй tcl и будет тебе счатье ;)
П.С. лучше бы санки tcl до ума довели, чем это поделие под названием java конючат уже какой год
Хммм... В двух словах? Нужно было парсер http нарисовать. Знаешь как я его делал? Копировал синтаксис в BNF нотации из rcf2616, чуть правил, согласно реализации boost::spirit. Управился за день. Это просто чудо! Результат: очень понятный код + удобное отлаживание (встроенно в spirit). Имхо, всякие perl'ы и bison'ы просто сосут.
>знаешь, до антика ты не дотягиваешь... такое ощущение что по бумажке ругаешься. учись, студент, а то в биореактор не пустят :))
>HellAngel *
Есть идея выписать антику пожизненную индульгенцию, чтоб наблюдать крепчание маразма в процессе, не замутняемое жалкими подражателями. Вспоминается как чарли чаплин обосрался на конкурсе по походке чарли чаплина :)
> cout<<"Hello World\n!";
> И где здесь поможет ФП?
Плохая попытка.
$ cat zz.C
cout<<"Hello World\n!";
$ c++ zz.C
zz.C:1: syntax error before `<<' token
$ cat zz.hs
main = print "Hello World!"
$ ghc zz.hs
$
Так что даже hello world на Хаскеле сильно проще.
Почему как C? Просто в сообщении(на которое я отвечал) была _скрыта_ бОльшая часть C++ной "правды" - #include, main, {,}, и что-то с namespace. Без этого cout<<"Hello" _не_ компилируется, что и было показано.
А хаскелевская - компилится. Так что вот так вот:-)