@Fsharp_chat

Страница 394 из 772
Evgeniy
04.11.2017
16:51:31
Какую книгу взять для изучения фшарпа, если основы знаешь? Желательно не просто скурпулезные тонкости узнать, но и научится строить программы
Мне кажется, тут лучше статьи ploeh почитать, какие-нибудь курс толковые про проектирование. @angmarr подскажет лучше.

Igor
04.11.2017
16:57:03
Ну если по курсам, то на plurasight мне офкоз понравились курсы от Марка Симанна - тк они не про F#, а паттерны и архитекутры, просто с примерами на F#. Вот обучающие курсы конкретно по F# - мне показались очень скучными. P.S. говорят где-то можно триал урвать на пару месяцев (или на rutracker скачать).

Летучая
04.11.2017
17:22:28
Кстати, а почему в тестах на F# часто пишут type TestFixture() = [<Fact>] member this.``test name``() = impl вместо module TestFixture = [<Fact>] let ``test name``() = impl ? Второй вариант же значительно читабельнее.

Google
Evgeniy
04.11.2017
17:37:51
Второй вариант для простых случаев.

Первый — когда нужна какая-то предварительная инициализация, например.

Artemy
04.11.2017
17:48:32
Но, мне кажется, рациональнее сначала на самом Pluralsight начать триал (там то ли 2 недели, то ли 30 дней).

А после использовать вышеупомянтую подписку

Летучая
04.11.2017
17:54:38
Первый — когда нужна какая-то предварительная инициализация, например.
Но ведь можно и статически чо-нибудь там инициализировать.

Evgeniy
04.11.2017
17:55:03
Но ведь можно и статически чо-нибудь там инициализировать.
Я помню, были какие-то проблемы с инициализацией через let в модулях.

Именно для тестов.

Летучая
04.11.2017
17:55:27
С другой стороны всякие хуниты через конструктор могут зависимости подсовывать... Но это не очень-то часто используется!

Evgeniy
04.11.2017
17:55:57
Делал так, проблем не было (нога не болит).
Не припомню конкретный кейс, если честно.

Sergey
05.11.2017
00:37:13
Так что все это значит?
Вот дон ответил https://github.com/fsprojects/FSharp.TypeProviders.SDK/issues/147#issuecomment-341922191

Google
Friedrich
05.11.2017
05:44:58
Кстати, а почему в тестах на F# часто пишут type TestFixture() = [<Fact>] member this.``test name``() = impl вместо module TestFixture = [<Fact>] let ``test name``() = impl ? Второй вариант же значительно читабельнее.
Я так пишу, когда мне нужны классы с полями или гарантиями выполнения конструктора / вызова Dispose. Если не нужны, то пишу модули.

Для тестирования кода Akka.NET, например, обязательно наследоваться от её базового класса для тестов. Этого уже с модулями не получается сделать.

Evgeniy
05.11.2017
06:07:50
@angmarr Я что вспомнил, про FSharpPlus. https://angrydexterous.github.io/typeclassish.html

Aminion
05.11.2017
08:59:18
Какой сейчас найменее фриковый способ построения веб приложения на фшарпе? Через темплейт на аспкоре?

Friedrich
05.11.2017
09:22:50
Какой сейчас найменее фриковый способ построения веб приложения на фшарпе? Через темплейт на аспкоре?
А они там все не фриковые :) Бери темплейт от Suave, Giraffe или Freya, ну или делай на чистом ASP.NET Core. Всё прилично работает с F#.

Aminion
05.11.2017
09:25:37
А какой вариант юзает всякий тырпрайз?

Anton
05.11.2017
09:29:40
Тырпрайз не юзает f#. *плак-плак*

Friedrich
05.11.2017
09:29:50
А какой вариант юзает всякий тырпрайз?
@VagifAbilov рассказывал про F# в «тырпрайзе», у них там Akka.NET.

Artemy
05.11.2017
09:30:16
Anton
05.11.2017
09:30:24
Это неправда.
Найди мне тырппайз разработку f# в Минске =(

Что бы вот прямо пошёл и устроился, а не требовали 3+ лет разработки и т.д

Хотя даже просто вакансий f# в Минске фигаз два.

Но вот кстати Scala есть.

Artemy
05.11.2017
09:32:30
А в Минске (да и в Беларуси), по-моему, в основном один аутсорс везде. А там им F# не шибко нужен, как я понимаю.

Но вот кстати Scala есть.
Потому что всякие Spark, Hadoop и т.п.

Anton
05.11.2017
09:33:15
В общем, грустно у нас всё ='(

Я работаю в продуктовой компании и у меня даже лимиты на linq в c#. Никто почти в него не умеет.

Не один раз приходилось переписывать кот на for&if/else, что бы «всем было понятно»

Artemy
05.11.2017
09:35:19
Вообще, конечно, это всё от руководства зависит, да.

Google
Кирилл
05.11.2017
10:45:03
Непереносимость линка это тру стори, да.
печаль какая-то, я верю что такое может быть, но звучит как дичь

Vagif
05.11.2017
10:54:26
Тырпрайз, с которым я работаю и где используется F# - это NRK, норвежское госТВ-радио. Один проект целиком на F# (и Akka), ещё в одном много F#, это сайт прогноза погоды yr.no. Но билд-скрипты других дотнет-проектов работают под Fake, а значит тоже на F#, поэтому в целом язык принят.

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

Неужели в Минске F# так мало, ведь некоторые разработчики из опенсорсных проектов из Белоруссии, насколько я знаю.

Жалко, что в опроснике по использованию F# ни о слова нет о географии разработчиков.

https://docs.google.com/forms/d/1l84WGQDUs0EJxVAFWj2jilA3WP0ArgyAqkSnv6Bcffo/viewanalytics

Непереносимость линка в 2017 году звучит дико. Напоминает запрет на динамический SQL и ORM.

Kirill
05.11.2017
11:12:04
Это тоже всё ещё живо

Vagif
05.11.2017
11:12:30
Хотя я помещение, как лет десять назад схлестнулись в виртуальной дискуссии Грег Янг и Клеменс Вастерс, и последний отчитывал Янга за

Отчитывал Янга как раз оптимизм в отношении генерации запросов к бд.

Типа базы данных - это тонкие материи, не надо школоте туда лезть со своими динамическими запросами.

Aminion
05.11.2017
11:15:11
Основной аргумент - линк неподебажишь. То есть брейкпойнт посередине не поставить. Я иногда специально бью цепочку варами, чтоб ребята были довольны.

Kirill
05.11.2017
11:16:43
так же, как и sql

но идея дебажить линк становится самнительной, если подумать как он работает

Artemy
05.11.2017
11:18:05
Ну так-то, наверное, лучше исполнять его поэтапно в процессе написания, а не написать за один раз длинную цепочку и потом смотреть, что она делает.

Vagif
05.11.2017
11:18:36
А зачем дебажить куски запросов LINQ. К ним стоит относиться как к вынесенным в C# запросам SQL.

Aminion
05.11.2017
11:18:45
Прикол в том, что линк будет безобидным, если в нем только чистые функции, но ребятушки иногда в нем ходят в базу, дергают кеш, и все такое, и потом бухтят.

Artemy
05.11.2017
11:19:57
https://oz-code.com/
Для F#-конвейеров бы такое

Google
Artemy
05.11.2017
11:20:10
Классная штука (на первый взгляд). Спасибо за ссылку.

Vagif
05.11.2017
11:20:15
но идея дебажить линк становится самнительной, если подумать как он работает
Именно. В основе LINQ deferred query execution, запрос предназначен для исполнения целиком, атомарно.

Evgeniy
05.11.2017
11:27:43
Для F#-конвейеров бы такое
Да. И кодлинзы для оторажения типов промежуточных шагов!

Artemy
05.11.2017
11:28:49
Ну с кодлинзами между строк будет слишком громоздко

Я бы хотел что-нибудь такое, чтобы можно было навестись на интересующую строку и узнать её тип.

Evgeniy
05.11.2017
11:30:01
Artemy
05.11.2017
11:30:55
Особо не использую Ionide. А следить за его прогрессом сложновато: уж больно быстро он развивается.)

Artemy
05.11.2017
11:32:43
Вообще, в VS уже есть частично, что я хочу: там в подсказке пишет, какие реальные типы вместо обобщённых подставляются. Но это не очень наглядно. Хотелось бы видеть всю сигнатуру с уже подставленными реальными типами вместо обобщённых.

Artemy
05.11.2017
11:34:19
https://github.com/ionide/ionide-vscode-fsharp/pull/510
А, это видел. Даже как-то обсуждали здесь уже.

И это-таки смержили. Прикольно.

Оно же чисто визуально, в исходники комменты не подставляются?

Evgeniy
05.11.2017
11:35:12
И там можно разделитель настроить.

Вместо //, например, | или ::.

Кому что нравится.

Artemy
05.11.2017
11:35:34
Тогда зачётно

Google
Artemy
05.11.2017
11:36:17
А, но оно небось работает только на завершённых выражениях?

Промежуточные результаты в зависимости от переноса строк не выдаёт?

Artemy
05.11.2017
11:39:23
Ну в таком виде (опираясь не переносы строк) оно не очень правильно будет.

Так-то можно сделать перенос строк на неполном выражении.

Надо как-то иначе

Evgeniy
05.11.2017
11:39:56
Я к тому, что в Ionide это может выглядеть компактно.

Кодлинзы.

Artemy
05.11.2017
11:40:18
Это да

Я убедился

М.б. неплохим вариантом будет просмотр типа выделенного выражения. Если выделено полное выражение — запрос типа успешен. Иначе — нет.

Dmitry
05.11.2017
11:59:25
Хотя даже просто вакансий f# в Минске фигаз два.
Вот ладно - я одним чувакам (большой российский заказчик с нефтью связанный) втихаря небольшой рест-сервис на F# впихнул, но это скорее от того что я один над ним работал и никому он сильно не был интересен

Anton
05.11.2017
12:00:57
Вот ладно - я одним чувакам (большой российский заказчик с нефтью связанный) втихаря небольшой рест-сервис на F# впихнул, но это скорее от того что я один над ним работал и никому он сильно не был интересен
Шанс на миллион и втихаря. А я имею ввиду прямо вот заходишь на жобс.тут.бай, пишешь F# и видишь 100500 ваканиский от джуна то сеньёра. Нет такого.

Roman
05.11.2017
12:04:51
Недавно было две вакансии подряд в Цюрихе, до этого были позиции в Лондоне. Ещё в Гонконге на контракт разработчика F# искали. Но это всё финансы.

Artemy
05.11.2017
12:05:26
И не на "жобс.тут.бай" :)

Roman
05.11.2017
12:06:27
Нее. Не там. Обычно на efinancialcareere дот ком

Sergey
05.11.2017
12:50:05
И не на "жобс.тут.бай" :)
Ещё вот тут бывают вакансии https://twitter.com/fsharpjobs

Андрій
05.11.2017
13:22:25
А в Минске (да и в Беларуси), по-моему, в основном один аутсорс везде. А там им F# не шибко нужен, как я понимаю.
К счастью есть местами подвижки. Например в Ciklum заказчику SBTech @antyadev на проекте подал F# и они в эту команду недавно набрали. И в Одессе у одного клиента разрешили и @timbabyuk собирается на проект внедрять. За Минск не скажу, но варианты появляются

Friedrich
05.11.2017
14:06:11
Основной аргумент - линк неподебажишь. То есть брейкпойнт посередине не поставить. Я иногда специально бью цепочку варами, чтоб ребята были довольны.
Ну, вообще-то, если обычный LINQ, то вполне подебажишь. Брейкпоинты в нём можно ставить, и они работают :)

Страница 394 из 772