Информация об изменениях

Сообщение Re[5]: И всё таки F# жив? от 16.05.2021 9:01

Изменено 16.05.2021 13:10 mrTwister

Re[5]: И всё таки F# жив?
Здравствуйте, VladD2, Вы писали:


VD>Нет. Это проблема не языка, а программиста. Возможность писать в том или ином стиле определяется именно фичами языка. Если язык обладает достаточным количеством функциональных фич, на нем можно писать в функциональном стиле. Что лично я и делаю.


Одних фич мало, С++ тоже давно всё умеет, толку то. Фичи языка существуют не в вакууме. Кроме них есть существующие синьор программисты, которые пишут, как диды писали и которые учат мидлов. Есть идлы, которых научили синьоры и которые учат джунов. Есть существующие книжки и курсы, которые в случае C# как правило учат императивщине. Есть существующая гигантская кодовая база по аналогии с которой пишут новый код и с которой интегрируются. Есть стандартная библиотека, ориентированная на императивный стиль.

VD>Просто C# до недавнего времени не обладал необходимым набором, что и делало применение в нем ФП ограниченным.

Да и сейчас не обладает, но об этом ниже.

VD>Это только точка зрения. Более того сама догма, что нужно придерживаться одного стиля — это догма. ФП не во всех случаях хорош и полезен. Иногда нужна производительность. Иногда ты решаешь императивные задачи (например, ГУИ). Язык поддерживающий разные стили позволяет выбрать подходящий стиль для части задачи.


Проблема разных стилей в том, что они как правило превращают кодовую базу в помойку, особенно если над ней работают много программистов. Один старообрядец начинает делает развесистые иерархии наследования, второй, начитавшись хаскеля, в жалких потугах начинает лепить монады, третий прочитал книжку про паттерны и вот у него теперь везде визиторы с бриджами и стратегиями, а четвертый проперся от акторов. В результате код — помойка потому что выбранный стиль выбирается не под задачу, а просто в зависимости от того, какому программисту задача досталась. Когда все пишут в одном стиле получается гораздо лучше и пример Go это прекрасно демонстрирует.

VD>На сегодня C# уступает F# только в поддержке метапрограммирования, так как F# поддерживает дата-провайдеры и зачатки квази-цитирования.


VD>Можно, конечно, еще притянуть за уши каринг и бесскобочных синтаксис, но на практике это ничего не дает. Больше строк не проблема, если строки не значащие (скобки). А каринг спокойно заменяется вложенными локальными функциями. Да и вообще не так то уж часто нужен.


Метапрограммирование — это баловство и не нужно. В C# отсутствуют гараздо более важные фичи, а именно: discriminated unions (а вместе с ними и поддержка алгебраических типов данных), поддержка хвостовой рекурсии и, самое главное, immutability by default
Re[5]: И всё таки F# жив?
Здравствуйте, VladD2, Вы писали:


VD>Нет. Это проблема не языка, а программиста. Возможность писать в том или ином стиле определяется именно фичами языка. Если язык обладает достаточным количеством функциональных фич, на нем можно писать в функциональном стиле. Что лично я и делаю.


Одних фич мало, С++ тоже давно всё умеет, толку то. Фичи языка существуют не в вакууме. Кроме них есть существующие синьор программисты, которые пишут, как диды писали и которые учат мидлов. Есть мидлы, которых научили синьоры и которые учат джунов. Есть существующие книжки и курсы, которые в случае C# как правило учат императивщине. Есть существующая гигантская кодовая база по аналогии с которой пишут новый код и с которой интегрируются. Есть стандартная библиотека, ориентированная на императивный стиль.

VD>Просто C# до недавнего времени не обладал необходимым набором, что и делало применение в нем ФП ограниченным.

Да и сейчас не обладает, но об этом ниже.

VD>Это только точка зрения. Более того сама догма, что нужно придерживаться одного стиля — это догма. ФП не во всех случаях хорош и полезен. Иногда нужна производительность. Иногда ты решаешь императивные задачи (например, ГУИ). Язык поддерживающий разные стили позволяет выбрать подходящий стиль для части задачи.


Проблема разных стилей в том, что они как правило превращают кодовую базу в помойку, особенно если над ней работают много программистов. Один старообрядец начинает делает развесистые иерархии наследования, второй, начитавшись хаскеля, в жалких потугах начинает лепить монады, третий прочитал книжку про паттерны и вот у него теперь везде визиторы с бриджами и стратегиями, а четвертый проперся от акторов. В результате код — помойка потому что выбранный стиль выбирается не под задачу, а просто в зависимости от того, какому программисту задача досталась. Когда все пишут в одном стиле получается гораздо лучше и пример Go это прекрасно демонстрирует.

VD>На сегодня C# уступает F# только в поддержке метапрограммирования, так как F# поддерживает дата-провайдеры и зачатки квази-цитирования.


VD>Можно, конечно, еще притянуть за уши каринг и бесскобочных синтаксис, но на практике это ничего не дает. Больше строк не проблема, если строки не значащие (скобки). А каринг спокойно заменяется вложенными локальными функциями. Да и вообще не так то уж часто нужен.


Метапрограммирование — это баловство и не нужно. В C# отсутствуют гараздо более важные фичи, а именно: discriminated unions (а вместе с ними и поддержка алгебраических типов данных), поддержка хвостовой рекурсии и, самое главное, immutability by default