И всё таки F# жив?
От: merge  
Дата: 10.05.21 13:27
Оценка:
Зарегался тут на джетбрейновскую конфу и один из топиков звучит

"Why Every Day as a Developer Would Be Easier with F#"

дискас
Re: И всё таки F# жив?
От: BlackEric http://black-eric.lj.ru
Дата: 10.05.21 13:33
Оценка: +1
Здравствуйте, merge, Вы писали:

M>Зарегался тут на джетбрейновскую конфу и один из топиков звучит


M>"Why Every Day as a Developer Would Be Easier with F#"


M>дискас


Судя по числу вакансий на hh.ru не очень.
Rust или Go из новых языков учить, мне кажется выгоднее.
https://github.com/BlackEric001
Re: И всё таки F# жив?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 10.05.21 15:12
Оценка:
Здравствуйте, merge, Вы писали:

M>дискас


Закопайте стюардессу
Re[2]: И всё таки F# жив?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.05.21 15:42
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Судя по числу вакансий на hh.ru не очень.

Немного странный ответ на тезис, содержащий вопрос "почему"...

BE>Rust или Go из новых языков учить, мне кажется выгоднее.

И это тоже не вписывается в тему дискуссии
Отредактировано 13.05.2021 17:53 VladD2 . Предыдущая версия .
Re: И всё таки F# жив?
От: varenikAA  
Дата: 11.05.21 01:34
Оценка:
Здравствуйте, merge, Вы писали:

M>Зарегался тут на джетбрейновскую конфу и один из топиков звучит


M>"Why Every Day as a Developer Would Be Easier with F#"


M>дискас


Жив, более того, очень активно развивается. Т.к. главный архитектор Дон Сайм до сих пор не потерял к нему интереса и даже
утверждает, судя по темам выступлений, что он "🧡 F#".
И жив он потому что позволяет красиво и кратко выражать многие абстракции, если сравнивать с C#.
Ну и по производительности(исключая старт приложений) он уделывает на сложных вещах его.
А вот такое, наверно, вообще никогда не появится в C#. https://github.com/rspeele/Rezoom.SQL
Хотя с появлением Source Generators быть может. По сути для вебсервисов было бы приятней его юзать.
Вообще плюшка в строгости, т.е. меньшей неоднозначности при работе с асихронным кодом, явные преобразования и т.п.
Другой вопрос решается ли в F# "проблема выражений"? Не уверен. Хотя вроде ка вычислительные выражения позволяют что-то делать более чисто.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: И всё таки F# жив?
От: varenikAA  
Дата: 11.05.21 01:40
Оценка:
Здравствуйте, merge, Вы писали:

M>"Why Every Day as a Developer Would Be Easier with F#"


Tutorial F#
Не очень свежий, сейчас еще плюшки появились, но в целом может дать понять почему.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: И всё таки F# жив?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.05.21 14:22
Оценка:
Здравствуйте, varenikAA, Вы писали:
AA>А вот такое, наверно, вообще никогда не появится в C#. https://github.com/rspeele/Rezoom.SQL
Ты имеешь в виду автовывод типов из миграционных скриптов?
Потому что всё остальное там — слабое подобие Linq
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: И всё таки F# жив?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.05.21 00:44
Оценка: 1 (1) +1
Здравствуйте, varenikAA, Вы писали:

AA>И жив он потому что позволяет красиво и кратко выражать многие абстракции, если сравнивать с C#.


Нет. Жив он потому что жив автор и не потерял интерес к языку.

AA>Ну и по производительности(исключая старт приложений) он уделывает на сложных вещах его.


Это чушь полнейшая. С точки зрения производительности они принципиально одинаковые, так как в итоге компилируются в MSIL. А конкретная производительность зависит от применяемого стиля и алгоритмов. ФП на F# ни разу не способствует росту производительности, так как в отличии от какого-нибудь Хаскеля имеющего хитрые оптимизации для ФП F# (как и C#) генерирует классы для замыканий и не преобразует последовательность фукнций высшего порядка в эквивалентный код без замыканий.

AA>А вот такое, наверно, вообще никогда не появится в C#. https://github.com/rspeele/Rezoom.SQL


Именно такое когда-нибудь появится. Но не скоро, так как МС очень медленно переваривает идеи. Причем "это" есть не только в F#. В Nemerle "это" есть с 2003-года.

AA>Хотя с появлением Source Generators быть может. По сути для вебсервисов было бы приятней его юзать.


Ну, вот лет через 10 он и дорастет до того, что сейчас в F# есть. А до Немерловых возможностей еще лет через 10 после того (т.е. через 20). В остальном же современный шарп по возможностям с F# почти сравнялся.

AA>Вообще плюшка в строгости, т.е. меньшей неоднозначности при работе с асихронным кодом, явные преобразования и т.п.


"строгость" это как раз недостаток системы вывода типов в F#.

AA>Другой вопрос решается ли в F# "проблема выражений"? Не уверен. Хотя вроде ка вычислительные выражения позволяют что-то делать более чисто.


Не решается. Но это на практике проблем не создает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: И всё таки F# жив?
От: mrTwister Россия  
Дата: 14.05.21 08:40
Оценка: 3 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Ну, вот лет через 10 он и дорастет до того, что сейчас в F# есть. А до Немерловых возможностей еще лет через 10 после того (т.е. через 20). В остальном же современный шарп по возможностям с F# почти сравнялся.


Недостаточно просто наличие или отсутствие фичей у языков, важно учитывать, какой код на языке является идеоматичным, то есть как фактически язык используется. С этой точки зрения, несмотря на то, что в C# есть много функциональных фичей, это ему мало что дает, так как 99% кода на C# — это императивный код с крохотными функциональными вставками, которые по сути почти ничего не меняют. А у F# — всё почему-то наоборот.
лэт ми спик фром май харт
Re[3]: И всё таки F# жив?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.05.21 22:17
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Ты имеешь в виду автовывод типов из миграционных скриптов?

S>Потому что всё остальное там — слабое подобие Linq

Он имеет в виду провадеры-типо, ака метапрограммирование. Эта хрень лезет в СУБД вовремя работы иде или компиляции, читает из нее метаинформацию, и на лету формирует по ней типы. А Linq это не более чем встроенная фича языка. К тому же на фиг на практике не нужная (речь о синтаксисе).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: И всё таки F# жив?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.05.21 22:18
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>Недостаточно просто наличие или отсутствие фичей у языков, важно учитывать, какой код на языке является идеоматичным, то есть как фактически язык используется.


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

T>С этой точки зрения, несмотря на то, что в C# есть много функциональных фичей, это ему мало что дает, так как 99% кода на C# — это императивный код с крохотными функциональными вставками, которые по сути почти ничего не меняют. А у F# — всё почему-то наоборот.


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

А главный недостаток C# в том, что он развивался в сторону поддержки ФП эволюционно. Хейльсберг ничего не понимал в ФП когда создавал C#. Плюс они глупо криативили, когда вставляли фичи. В итоге некоторые фичи получились не так удобны. Но, в целом, приемлемо.

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

Можно, конечно, еще притянуть за уши каринг и бесскобочных синтаксис, но на практике это ничего не дает. Больше строк не проблема, если строки не значащие (скобки). А каринг спокойно заменяется вложенными локальными функциями. Да и вообще не так то уж часто нужен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: И всё таки F# жив?
От: mrTwister Россия  
Дата: 16.05.21 09:01
Оценка:
Здравствуйте, VladD2, Вы писали:


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


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

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

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

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


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

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


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


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