@Fsharp_chat

Страница 199 из 772
Pawel
06.06.2017
16:29:07
Популярна - не значит хороша :)
а что лучше на твой взгляд?

Nikolay
06.06.2017
16:29:51
а что лучше на твой взгляд?
Я не сказал, что это плохо, чего в штыки то сразу)

Pawel
06.06.2017
16:31:11
да ни разу не в штыки) просто я особо альтернатив не вижу Result-у и панике

Google
Nikolay
06.06.2017
16:33:27
Если популярно, не значит хорошо. Вот например JS хайп, люди жалуются на типизацию, производительность, утечки, миллиард зависимостей, но пишут на нём и патчат V8 под себя :)

Vasily
06.06.2017
16:43:41
Короче, не работает этот ваш dotnet new, и откуда что лезет, непонятно

Я уже ему и конфиг файл подложил нюгетовский

С вычищенными сурсами

Pawel
06.06.2017
16:44:39
по поводу "Тут у всех свои определения, и поэтому мы путаемся" : "Одновременность — это о том, чтобы иметь дело одновременно с множеством вещей. А параллелизм — это о том, чтобы делать одновременно множество вещей Как говорится, почувствуйте разницу" (С)

Pawel
06.06.2017
16:47:35
Если популярно, не значит хорошо. Вот например JS хайп, люди жалуются на типизацию, производительность, утечки, миллиард зависимостей, но пишут на нём и патчат V8 под себя :)
да я согласен с этим тезисом. Но касательно обработки ошибок уже всем очевидно что эксепшены - это грех. И кидать их надо только в предсмертной агонии, а не делать частью апи. По моему очень хорошо что это модно сейчас)

Evgeniy
06.06.2017
16:47:53
Мне не очевидно.

Исключения порой упрощают код.

Pawel
06.06.2017
16:49:44
ок, давай пример

Roman
06.06.2017
16:50:33
ок, давай пример
fable c их failwith "never" xD

Тут Result не нужен

Pawel
06.06.2017
16:51:26
это не обработка ошибок и не часть апи

Google
Roman
06.06.2017
16:52:18
Да.

Nikolay
06.06.2017
16:52:23
А какие ещё варианты обработки ошибки есть кроме исключений и возврата ошибки (типа Result в F#, или кортежи в Go)?

Roman
06.06.2017
16:53:31
это не обработка ошибок и не часть апи
Для C# API не обойтись без исключений

Из F# конечно же

Pawel
06.06.2017
17:02:28
А какие ещё варианты обработки ошибки есть кроме исключений и возврата ошибки (типа Result в F#, или кортежи в Go)?
это один и тот же подход с учётом языка). "Для C# API не обойтись без исключений" - в упор не вижу ни малейшей разницы мкжду C# и F# в этом смысле. ты наверное попутал C# с джавой

Roman
06.06.2017
17:06:45
Не, если ты хочешь что бы пользователи твоей библиотеки отказывались от неё, потому что она нестандартно работает с исключениями, то конечно нет никакой разницы. В c# идеоматически надо использовать исключения , а не Result

Pavel
06.06.2017
17:12:46
Почему это в c# надо использовать исключения? По моему уже даже создатели ApplicationException поняли, что это плохой подход.

Pawel
06.06.2017
17:16:04
ага, кто это такое сказал что надо непременно в эксепшены в С#? И что нестандартного в типе Result с т.з. C# программиста ?

Vagif
06.06.2017
17:18:46
Result надо не забыть проверить, а от exception не уйти, везде достанет.

Pavel
06.06.2017
17:19:00
Я был в шоке, когда столкнулся с ошибками http реквнстов в джаве, там надо кэтчить ioexcetion и потом проверять у объекта статус ответа. Дикость какая-то

Pawel
06.06.2017
17:19:46
Result надо не забыть проверить, а от exception не уйти, везде достанет.
у нас же есть стат. гарантии целостности проверок оператора match

Vagif
06.06.2017
17:22:35
Это в F#, я про то, почему в C# тяжело на одном результате, без exceptions.

Pawel
06.06.2017
17:31:00
не обязательно Result, можно и кортеж с типом-ошибкой, не суть важно. С# достаточно развит для любого варианта. Есть даже средства для проверки целостности типов-сумм, (тут уже как-то был про это разговор) Главное, это что контрол-флоу проще без перехвата эксепшенов, код боее читаем и нет упс-эффекта

Evgeniy
06.06.2017
17:34:50
ок, давай пример
Мои мысли на этот счет совпадают с теми, что приведены в статье.

Pawel
06.06.2017
17:35:20
А что за концепция? Fail fast?
ну это принцип такой - не кидать эксепшенов, а вместо этого возвращать из функции значение с ошибкой каким-то образом. А если что-то действительно пошло не так - записать стектрейс и аварийно завершить работу

Vlad
06.06.2017
17:37:13
А, понял

Pawel
06.06.2017
17:49:12
Мои мысли на этот счет совпадают с теми, что приведены в статье.
но там нет ни аргументации, ни пруф оф концепт. Просто утверждение. Автор чисто интуитивно убеждён что юзеры библиотек должны сами ловить все эксепшены только потому что ему,как автору библиотек, лень этим заниматься . Юзеры библиотек с ним категорически не согласны.

Evgeniy
06.06.2017
17:50:29
shrug

Google
Evgeniy
06.06.2017
17:50:59
У меня сейчас не то настроение, чтобы кому-то что-то доказывать в интернетах.

Pawel
06.06.2017
17:58:02
@gsomix сочувствую)

А асинхронный бы не блокировал.
Забавно совпало - сегодня интервьюировал двоих соискателей на эту тему в т.ч.. Так вот поцанчики именно так же плавали в этих вопросах. Видимо нормальному человеку сложно понять, ибо ересь та ещё на самом деле. На пальцах: асинхронщина - это всего лишь синтаксический сахар над callback hell (неизбежный в многопоточных приложениях на языках без нормальной поддержки многопоточности), чтобы уродливый код сделать условно менее уродливым, но значительно более глючным. Поэтому что она там блокирует или не блокирует - зависит от контекста использования.

Nikolay
06.06.2017
19:50:08
А кто-нибудь отправлял через стандартные Http Utilities multipart/form-data?

Sergio
06.06.2017
19:59:15
А кто Result использовал в C# проекте? свой велосипед писали/language-ext/optional/khorikov functionalcsharpextensions/... ?

Ivan
06.06.2017
20:28:11
Забавно совпало - сегодня интервьюировал двоих соискателей на эту тему в т.ч.. Так вот поцанчики именно так же плавали в этих вопросах. Видимо нормальному человеку сложно понять, ибо ересь та ещё на самом деле. На пальцах: асинхронщина - это всего лишь синтаксический сахар над callback hell (неизбежный в многопоточных приложениях на языках без нормальной поддержки многопоточности), чтобы уродливый код сделать условно менее уродливым, но значительно более глючным. Поэтому что она там блокирует или не блокирует - зависит от контекста использования.
Ну если уже зрить в корень, то то, что мы сейчас называем асинхронным кодом, вообще кодом не является. Это данные в перемешку с кодом. А за выпл\олнение их отвечает исполнительная среда. В .net обычно таск шедулер. И он заменяемый. Хотите гарантии не блокировки - сделайте свой шедулер. Но по мне это сложновато. ?

Nikolay
06.06.2017
20:32:56
Как в билдерах сделать обязательными кастомные операции?

Pawel
06.06.2017
20:33:09
"Хотите гарантии" - хочу, ну так кто ж мне даст?) "сделайте свой шедулер" - вангую что микры его сделают когда нибудь. Рано или поздно придёт понимание что программисты слишком тупы для асинк-эвэйта, и надо делать сами понимаете по какому образцу)

Nikolay
06.06.2017
20:34:02
Кто-то вроде говорил что можно

Pawel
06.06.2017
20:35:24
Да, Erlang и Go

Ivan
06.06.2017
20:37:20
Го -= это превернутыйй асинк. Там все асинк, а то что не асинк - го - роутайн. Ерланг - л\дорого иметь собствнный планировщик по числу инструкций. Во если бы при компиляции вставлялись спец инструкции преключения. Но ведь не сделают..

Aleksander
06.06.2017
20:38:29
есть же волшебный мир, где асинки используют не боясь блокировок

NodeJS

Ivan
06.06.2017
20:38:50
Ага - одна нить.

Aleksander
06.06.2017
20:39:07
да) нет множества потоков - нет блокировок)

Ivan
06.06.2017
20:40:23
Волшебство - ни гонок ни конкуренции.. Ни множителя от ядер. Запусти двадцать процессов и получишь результат. Тупмковый путь. На сотне ядер не канает

Aleksander
06.06.2017
20:41:17
просто хорошо бы отделить асинхронное выполнение от многопоточности.. но, кажется, что-то такое сегодня уже обсуждали

Vasily
06.06.2017
20:41:29
Читаю вас всех и понимаю, что жизнь-говно

Google
Ivan
06.06.2017
20:42:00
Вот нам бы в Ф машину состояний, как в С#, и мы бы уделали таски ?

Pawel
06.06.2017
20:42:47
ну не правда же. В Ноде есть например богомерзкий cluster для многопоточности. Да и вообще суть таже что и в дотнете - запрятать calback hell в promises hell, а promises hell - в асинки чтобы максимально усложнить жить и не отпутгнуть джунов с первого взгляда на код

Ivan
06.06.2017
20:43:41
Глянь в Hopac. То же асинхронка

Aleksander
06.06.2017
20:44:09
хм, а cluster умеет шарить данные между процессами?

Ivan
06.06.2017
20:44:28
И тебе ни авейтов ни промайсов. Ни калл беков. А работает приблизительно тк\ак же

Pawel
06.06.2017
20:44:51
да всё руки недойдут, собираюсь. мнения о наличие в нём легковесных потоков противоречивые есть. Автор гопака утверждает что есть, но ему ни кто не верит

Ivan
06.06.2017
20:45:48
Это ж наша боль, что писать с помощью десятка спец операцторов сложно. Во нам и дали заменитель. Соска для детей.

Pawel
06.06.2017
20:46:05
хм, а cluster умеет шарить данные между процессами?
да можно как-то извратиться. Собственно в ноде всё чистое безумие от начала и до конца. ckuster не исключение

Vlad
06.06.2017
20:47:00
В js настолько всем колбеки надоели, что асинк синтаксис копирнули от шарпа

Ivan
06.06.2017
20:47:01
А за нас все обратно в монадныое представление. А его впрямую не напишешь. Только через кучу монадных трансформеров. Что срдений программист не потянет ?

Ivan
06.06.2017
20:48:24
да, почитал. кажется, сообщения можно слать)
Нет общих данных, распараллевинае невозможно. Только евент соурсинг. А у него солидные ограничения по сфере применения в расчетной арифметике

Aleksander
06.06.2017
20:48:53
ну а кто делает расчетную арифметику на NodeJS?

Pawel
06.06.2017
20:49:51
Нет общих данных, распараллевинае невозможно. Только евент соурсинг. А у него солидные ограничения по сфере применения в расчетной арифметике
да хрен бы с ней. Про ноду тока одно можно сказать - с неё надо бежать сломя голову куда угодно, что собственно народ и делает

Aleksander
06.06.2017
20:49:54
а вот стейтлес сервисов наплодить - самое то. общие данные - в кэше или базе

Ivan
06.06.2017
20:50:44
А что делают на ноде? То же что и на шарпе . Все проблемы при столкновении с ВЫЧИСЛЕНИЯМИ. При долгом вычислении без переключения. В захвате нити из пула системой при ИО. А так все одно и то же.

Aleksander
06.06.2017
20:51:19
да у меня, если честно, проблем особых и нет:)

Roman
06.06.2017
20:51:42
Какой-то не f# флуд пошёл.

Ivan
06.06.2017
20:51:51
Согласен

Google
Pawel
06.06.2017
20:52:07
да, хватит про ноду

Aleksander
06.06.2017
20:52:14
весьма похоже на то, что генерит шарп с async await

Ivan
06.06.2017
20:53:18
Это типовая. Она на все монады одинаковая.

Aleksander
06.06.2017
20:53:41
ну да, я к тому что computation expressions в машину состояния и разворачиваются

Ivan
06.06.2017
20:53:47
Не совсем стейт машина

Потому асинки и медленнее тасков

Это так называемая частичная DO оптимизация. В Глазнго по моему где то в 2000 уже сделали по другому

Aleksander
06.06.2017
20:55:57
хотя да, там цепочка Bind'ов по идее должна быть

Ivan
06.06.2017
20:57:25
Цепочку биндов можно слегка подправить переходами. На вид похоже на стейт машину. Но нет стейтов. Если фиксированные типовые преходы

Это скорее стек оптимизация, а производительность почти не меняется

Стейт машина не пойдет дальше при ошибке таска, а монада пойдет по бед треку. В этом вся проблема

Pawel
06.06.2017
21:04:16
Го -= это превернутыйй асинк. Там все асинк, а то что не асинк - го - роутайн. Ерланг - л\дорого иметь собствнный планировщик по числу инструкций. Во если бы при компиляции вставлялись спец инструкции преключения. Но ведь не сделают..
тут весь цимес в том, чтобы мудрый рантайм решал когда надо переключать контекст выполнения и чтобы это было без убивания на хрен перформанса. А не компилятор. И уж тем более не программист.

Ivan
06.06.2017
21:06:26
Мудрый рантайм переключается только на вызовах Вот в эрланге счетчик инструкций - там от прораммиста вообще ничего не зависит. А Го - это если все функции сделать асинк

Вообще все

Ну ведь так и мы можем намисать ? Только бить надо ?

Vasily
06.06.2017
21:24:38
Уже второй функциональный чат,где заходит речь о го

Летучая
06.06.2017
21:56:36
Господа

Есть ли тулза

Которая позволяет из-под дотнета (конкретно — Ф шарпа) юзать питонские библиотеки? У питонистов прямо оч огромное комьюнити и куча годноты, было бы приятно иметь к ней доступ независимо от языка.

Вот щас хотел на основе некоторой статистики загенерить wordcloud. И чтобы покрасивее, кастомной формы, вот это всё. В нугете лежит одинокий пакет WordCloud, немного кривенький, без настроек, прямо совсем примитив. Тут в чате ещё, помню, писали, как юзали RProvider для того, чтобы строить такие диаграммы с данными. Попробовал я этот R, какая-то допотопщина, с миллионом настроек, запрятанных поглубже в систему, в общем, ниасилил, даже бубен не спас. Смотрю в сторону питона — там нужно написать pip install wordcloud и всё заработает.

Завидно.

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