Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2014-06-23 07:46:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Про функциональное программирование и скалу
На сам деле споры за ФП являются довольно типовым примером "расхождения в фазе процесса":

Развитие более или менее любого набора технических (не только, но конкретности для) идей идет примрено по следующим этапам:

1) всякое невнятное брожение в научной-ниженерной среде, какие-то наметки etc (для ФП это примерно 70-е годы - рост интереса к типовым системам, автоматическому доказателству, кое-что во всяких смоллтолках)

2) формулировка их в виде "пионерских" опытных работ, статей, разработка более или менее формального понятийного аппарата etc - тоже внутри среды, но уже артикулировано
(для ФП этот период начинается с создания ML - 1977 год, ну и волны публикаций по теории типов данных в 80-е - завершилас эта волна в середине 90-х с устаканиванием Haskell)

3) попытки опытно-промышленного использования и начало популяризации - тема в становится "модной" уже в довольно широких кругах (ФП - 90-е - середина 2000-х)

4) популяризация среди профессионалов достигает того уровня, что начинается массовая инфильтрация идей в мэйнстрим на уровне "тяп-ляп-приделать вкусную идею и получит корявый, но полезный инструмент" и возникает "поп-мода". На этом этапе возникают как раз химеры типа C++ или Scala имеющие все шансы на оглушительный успех. Для ФП - это 2000-е - now.

Это своего рода период "моды для продвинутых хипстеров" - носят уже на всех улицах, но еще не все

5) Явление из моды превращается в доминирующее течение - устаревшие конструкции сносятся и заменяются отстроенными с нуля "на новой идейной основе" (для ООП это - Java, ФП приближается к). Все производители кидаются "делать это", технические поп-писатели пинут книги "структурное программирование на Фортране", "объектное программирование на С" и (пока нет, но вероятно будет) "Функциональное программирование на Java". Рекламные свистелки и перделки надрываются. Найти на улице человека не в джинсах становится проблемой.

6) угасание и превращение в legacy (сейчас в этой стадии находится С++ а Java - приближается к)

Так вот к чему это я - отношение к идейам зависит от того, в каком месте этой цепочки расположена ваша кормовая база и область привязанности. Так вот мне лично интересна в основном фаза (3) - начало реального внедрения. Вова Патрышев - типичный "хипстер" и "модник" - потому запал на Скалу именно сейчас - когда это уже "модно", но еще имеет налет "недлявсехности". Хотя сам процесс приближается к фазе 5.

И кстати потому же его видимо раздражало ФП в начале 2000-х - смысла происходящего он не понимал, зато видел, что "компутерные ученые" аццки профанируют его предыдущю любимую "элитную моду" - теорию категорий, используя его любиымый микроском просто "как молоток".

Граждане (не будем казать пальцем), рассуждающие что "хаскель бесполезен для бухгалтерии и ничего из этого не выйдет" - типический пример (6) (в основном здраво опасающиеся что как раз выйдет и наработки предыдущей волны начнут выбрасываться в корзину вместе с соответствующими квалификациями) - он же "никто не будет писать серьезные программы не на ассемблере", "да кому нужен этот ваш паскаль - фортран вечен", ну и так далее. Щас наиболее упертые держатся за С++.
PS1: если что - я не считаю нужным "писать на haskell реальные проекты" - imho это довольно неудачное технически изделие, которое полезно как источник идей и площадка, на которой можно быстро и грязно откатать какие-то решения перед их серьезной реализацией. Потому аргументы про то, что "ФП говно, потому что на Хаскелл серьезные люди не пишут" они просто не по теме

PS2: Тот же Haskell интересен именно как набор довольно большого количества еще не переваренных индустрией идей. Когда я говорил что в области дизайна FPGA есть смысл на него посмотреть я ни разу не имел в виду, "это надо писать на Haskell" - я имел в виду то, что довольно многие идеи, реализованные в Haskell могут быть уместны и полезны в этой области. Не потому что "ФП универсальный рулез", а потому что специфика задачи такова, что довольно много проблем родственных тем, которые возникают при попытке создания языка программирования без неявных побочных эффектов.

И да - все практически идеи связанные с тем, что сейчас называется ФП не имеют отношения "к лиспу". Общее там скорее название, да некоторые смутные мечты создателей Лиспа, которые тогда не были реализованы даже примерно - если искать предшественников то это скорее APL и бэкусовский FL.


(Добавить комментарий)


(Анонимно)
2014-06-23 18:19 (ссылка)
> "Функциональное программирование на Java"
есть уже такая - Functional Programming for Java Developers

(Ответить)