F# - провайдеры типов и не только
От: varenikAA  
Дата: 09.06.20 02:23
Оценка: +1
Судьба распорядилась так, что я стал программировать на C#.
На волне хайпа стал изучать F#. До этого был опыт использования scala, groovy в небольших по функционалу и средних в масштабе использования.
Первая версия была на Play Scala. После обновления scala все к чертям поломалось, после этого опыта пришлось откатиться на C#(Nancy.FX).
На groovy неожиданностей было меньше. Тогда я даже не осознавал, что использую функциональные языки. В журнале RSDN статьи по Nemerle не обращали внимания.
И тут F#: красиввый, лаконичный синтаксис. Изюминка — это необходимость определять типы сверху вниз, что автоматически избавляет от циклических зависимостей — кошмарный сон ООПэшника.
Но в F#, как и во многих более-менее современных языках есть большая беда. Бедность собственных библиотек.
Почему стали популярны java и c# — да потому, что худо-бедно у них был нормальный джентльменский набор, написанный на себе родном: GUI, Data, Xml, IO, Net, Http.
И еще куча вторичных, но по настоящему необходимых вещей.
И вот что я вижу в F#, провайдеры типов говорите?
Ну, начнем с того, что большинство из них работают только на .Net 4 под Windows, если же попытаться использовать это под линуксом, то вообще туши свет!
А настройка для скрипта и проекта могут вообще быть различны как небо и земля.
Практический пример, нужно было вытащить таблицу из html.
Ну, думаю, вот HtmlProvider — вообще ничего делать не надо.
Опаньки — имя таблицы в коде генерируется из тега <h5>. Имя динамическое. Упадет в рантайме(привет строгой типизации). Что делать?
Смотрю на тип, доступа к набору таблиц по индексу нет(ПОЧЕМУ?). Извращаюсь, гружу текст, заменяют теги <h> на ерунду, добавляют таблице title,
сую в тайппровайдер, ок. Стоп! html-кодировка #12;#12;#23; — преобразуется в крякозябры. Ну что же это такое!
Плюнул и переписал на XmlProvider, правда ручной работы стало примерно как в C#.
А далее мне нужно было построить график, опять на помощь приходят библиотеки, беру XPlot.GoogleCharts.
Все хорошо, но возникает ощущение, что это шулерство. Половина параметров, которые легко настраиваются на чистом js здесь просто игнорируются.
Ну ладно, но ведь и типизация к чертям — нужно опять перегонять в простые массивы.
А в итоге — в tmp генерится обычная html-страница.
Сидишь и думаешь: а нафига тогда писать на супер-пупер F#-пе, если можно на "козе" js написать html, используется node(deno) в качестве бэка?

Причем, обе используемые библиотеки мэйньтятся Доном Саймом(главный инженер группы разработки F#) и Томасом Петриком (наверно, главный популяризатор F#).

Т.е. получается все эти траспайлеры, врапперы всегда уступают по функционалу/удобству использования от на языке оригинала.
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.