Last_Alien писал(а):
После паскалей, оберонов, Си и С++ я попытался посмотреть на Хаскель. Не смог. Тоже почему то заплакал. Первоначальная идея языков высокого уровня заключалась в упрощении восприятия человеком того, что он пишет или читает. Т.е. программа на хорошем языке должна легко читаться.
Вот числа Фибаначи на Хаскелле.
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Я понимаю, что возможно слишком глуп, но если бы в вики не было написано, что эти иероглифы значат, вряд ли я бы это понял.
Вообще, такие языки напоминают китайский или японский - удивительно красивые иероглифы, которые нужно постигать годами. Но при этом на практике их могут использовать только фанаты каллиграфии в очень узком диапазоне деятельности человека.
Как говорится, на любом языке можно писать как на фортране.
Конкретно эта функция довольно легко понимается, если знать, что делают функции zipWith и tail, иметь представление о бесконечных ленивых списках (которые в других языках реализуются как итераторы), и понимать, что операция в скобках "(+)" является просто передачей функции сложения в какую-то другую функцию.
При достаточно развитом образном мышлении можно вполне наглядно представить себе как расчиывается этот список чисел Фибоначчи.
Начинать изучение хаскелла с разбора подобных функций не совсем правильно, наверное. Да и вообще учить язык по википедии неблагодарное занятие.
Last_Alien писал(а):
Кстати, компилятор Хаскелля написан на нем же самом?
Естественно, ведь хаскел просто идеально подходит для написания компиляторов.
Last_Alien писал(а):
Если нет, то Вы не имеете права его сравнивать с полноценными языками.
о_О Чой-то вдруг? Множество компиляторов реализуются на других языках, более подходящих для этой цели.
Вот возьмём оберон-2 -- оксфордская реализация оберона-2 сделана на Окамле, а виртуальная машина, интерпретирующая байт-код, генерируемый этим компилятором, вообще на сях написана.
Астробовский компилятор Оберона-07 написан на сишарпе, так же как и компилятор
Зоннона.
Онлайн-компилятор
OberonJS написан на яваскрипте (хотя автор планирует со временем переписать его на оберон), а референсный транслятор ECMAScript'а написан на SML, и сомневаюсь, что трансляторы яваскрипта, используемые в браузерах, написаны на самом яваскрипте.