Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 18 июн 2025, 13:27

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: 17 дек 2013, 12:00 
Не в сети

Сообщения: 203
Last_Alien писал(а):
После паскалей, оберонов, Си и С++ я попытался посмотреть на Хаскель. Не смог. Тоже почему то заплакал. Первоначальная идея языков высокого уровня заключалась в упрощении восприятия человеком того, что он пишет или читает. Т.е. программа на хорошем языке должна легко читаться.
Вот числа Фибаначи на Хаскелле.
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Я понимаю, что возможно слишком глуп, но если бы в вики не было написано, что эти иероглифы значат, вряд ли я бы это понял.
Вообще, такие языки напоминают китайский или японский - удивительно красивые иероглифы, которые нужно постигать годами. Но при этом на практике их могут использовать только фанаты каллиграфии в очень узком диапазоне деятельности человека.
Как говорится, на любом языке можно писать как на фортране.

Конкретно эта функция довольно легко понимается, если знать, что делают функции zipWith и tail, иметь представление о бесконечных ленивых списках (которые в других языках реализуются как итераторы), и понимать, что операция в скобках "(+)" является просто передачей функции сложения в какую-то другую функцию.
При достаточно развитом образном мышлении можно вполне наглядно представить себе как расчиывается этот список чисел Фибоначчи.

Начинать изучение хаскелла с разбора подобных функций не совсем правильно, наверное. Да и вообще учить язык по википедии неблагодарное занятие.

Last_Alien писал(а):
Кстати, компилятор Хаскелля написан на нем же самом?
Естественно, ведь хаскел просто идеально подходит для написания компиляторов.

Last_Alien писал(а):
Если нет, то Вы не имеете права его сравнивать с полноценными языками.
о_О Чой-то вдруг? Множество компиляторов реализуются на других языках, более подходящих для этой цели.
Вот возьмём оберон-2 -- оксфордская реализация оберона-2 сделана на Окамле, а виртуальная машина, интерпретирующая байт-код, генерируемый этим компилятором, вообще на сях написана.
Астробовский компилятор Оберона-07 написан на сишарпе, так же как и компилятор Зоннона.
Онлайн-компилятор OberonJS написан на яваскрипте (хотя автор планирует со временем переписать его на оберон), а референсный транслятор ECMAScript'а написан на SML, и сомневаюсь, что трансляторы яваскрипта, используемые в браузерах, написаны на самом яваскрипте.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 17 дек 2013, 12:38 
Не в сети

Сообщения: 203
Last_Alien писал(а):
Вот числа Фибаначи на Хаскелле.
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Я понимаю, что возможно слишком глуп, но если бы в вики не было написано, что эти иероглифы значат, вряд ли я бы это понял.

Вот, кстати, иллюстрация этого списка на самом распространённом трансляторе функционального языка в мире -- в Экселе.

В столбце A представлен этот список fibs (который иностранцы любят начинать с нуля, а не с 1 как я, напрмиер, привык).
Первые две ячейки A1 и A2 задаются явно -- 0 и 1 соответственно.
Ячейки начиная с A3 имеют формулу A(n) = B(n) + C(n) -- они "сшиваются" выражением "zipWith (+) fibs (tail fibs)"

В столбцах B и C отображается этот же список, но со смещением, для расчётов ячеек A3 и дальше:

B(n) = A(n-1) -- это список (tail fibs) для A3
С(n) = A(n-2) -- это список fibs для A3

В результате получается классическая формула вычисления чисел Фибоначчи:
A(n) = A(n-1) + A(n-2)


Вложения:
fibs-excel.png
fibs-excel.png [ 27.35 КБ | Просмотров: 9255 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club