
Nikolay
06.06.2017
16:28:47

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
по поводу "Тут у всех свои определения, и поэтому мы путаемся" :
"Одновременность — это о том, чтобы иметь дело одновременно с множеством вещей. А параллелизм — это о том, чтобы делать одновременно множество вещей Как говорится, почувствуйте разницу" (С)

Nikolay
06.06.2017
16:46:38

Pawel
06.06.2017
16:47:35

Evgeniy
06.06.2017
16:47:53
Мне не очевидно.
Исключения порой упрощают код.

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

Roman
06.06.2017
16:50:33
Тут 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
Из F# конечно же

Aleksander
06.06.2017
16:57:16

Pawel
06.06.2017
17:02:28

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

Vlad
06.06.2017
17:21:23

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

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

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

Vasily
06.06.2017
20:33:26

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

Ivan
06.06.2017
20:34:57

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

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

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

Aleksander
06.06.2017
20:47:02

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 и всё заработает.
Завидно.