
Юра
09.10.2017
23:53:13
Вот еще бы полноценну IDE под JS.
То чувство, когда пишешь код в текстовом редакторе.

Pauline
09.10.2017
23:54:00
ну поставь

Юра
09.10.2017
23:54:31

Google

Сергей
09.10.2017
23:55:26

Юра
09.10.2017
23:57:00
Нет смысла
Ну, как это нет. Посмотри на решарпер для C#.
Она разве что за тебя код не пишет.
Драматически увеличивает скорость кодирования и уменьшает число опечаток.

Pauline
09.10.2017
23:59:45
я думала, вебшторм ок

kana
10.10.2017
00:05:58
Я не против иде (но нормальных для жс не находил, хотел бы для хаскеля), но должен сказать, что если иде генерит кучу кода, то язык скорее всего очень бойлерплейтный (что вообще характерно для pure "ооп" языков)

Юра
10.10.2017
00:10:00

Котяй Негодяй
10.10.2017
00:12:33

Юра
10.10.2017
00:13:23

Котяй Негодяй
10.10.2017
00:13:26
Т.е. делает частично то же, что и компилятор?

Юра
10.10.2017
00:13:37

Котяй Негодяй
10.10.2017
00:13:48
Но не средствами компилятора?
Скорей всего.

Google

Юра
10.10.2017
00:14:58
Ну, там логика другая. Печатаешь два символа, и IDE тебе сразу выдает правильное название метода. Ты его выбираешь из списка и готово.

Котяй Негодяй
10.10.2017
00:15:02
А значит, нет гарантии, что качество проверки IDE будет эквивалентно качеству проверки со стороны компилятора?
А какую проверку делает компилятор?

Юра
10.10.2017
00:16:33

Котяй Негодяй
10.10.2017
00:16:36
Я думаю, это статический анализ?
И проверяет он ошибки в типах, прежде всего.
А знаешь почему IDE не использует средства нативного компилятора?

Юра
10.10.2017
00:17:48

Котяй Негодяй
10.10.2017
00:17:58

Юра
10.10.2017
00:18:55

Котяй Негодяй
10.10.2017
00:19:18
Потому что там нет нормального вывода типов, и на каждый чих надо самому кастовать. А IDE пытается кастовать за тебя. Т.е. авторы IDE в теории могли бы дописать чуток и сам язык.
Так вот. К чему это я.
IDE для JS существует.

Юра
10.10.2017
00:20:09

Котяй Негодяй
10.10.2017
00:20:49
Ну и TS можешь попробовать. Но я не пробовал.

Юра
10.10.2017
00:22:39
flow.org
Ну, да. Шаг вперед, конечно. Раньше такого не было.

Google

Юра
10.10.2017
00:24:07
Там теория даже есть под это, на самом деле. Как делать вывод типов.
Но я ее забыл.

Котяй Негодяй
10.10.2017
00:24:57

Даниил
10.10.2017
00:25:57


Юра
10.10.2017
00:26:08
Тем не менее, никто не мешает построить поверх языка диалект, который привносит сильную типизацию. Если код проходит проверку, ты коммитишь. Если не проходит, не коммитишь. В замен получаешь профит в виде крутейшего вывода типов, который тебе в C# не снился даже, и который юзают большинство редакторов, превращаясь сразу в IDE.
Это работает, только если весь код 100% свой и написан на flow. А обычно приходится работать с легаси кодом, да с кодом, который написан без деклараций типов.
Сейчас, конечно, с этим полегче стало. Но тем не менее.
статическую*
Во. Клевый ник, как раз в тему бестипового лямбда-исчисления.

Даниил
10.10.2017
00:28:35
хех

Котяй Негодяй
10.10.2017
00:28:59
статическую*
Ну, если мутирование значения в рамках какого-нибудь юниона попадает в рамки понятия статической типизации, то ок.

Даниил
10.10.2017
00:29:45
по сабжу: без HKT и нормальных тайпклассов все равно по-человечески программировать нельзя
ну и без ADT (не через костыли как в flow)

Юра
10.10.2017
00:31:41
А если серьезно, то это все, конечно, хорошо, но вот уложиться в дедлайн не помогает. Сейчас вообще другие навыки нужны в коммерческом программировании.

Котяй Негодяй
10.10.2017
00:32:43
Началось.

Даниил
10.10.2017
00:33:11

Котяй Негодяй
10.10.2017
00:33:15
Я проверил.

Даниил
10.10.2017
00:33:36
смотри, вот реализация Maybe через костыльный ADT на Flow: https://github.com/zerobias/apropos/blob/master/src/adt/maybe.js

Юра
10.10.2017
00:33:41
Это домыслы.
Ну, понятно, что на любое общее утверждение найдется свой частный случай.
Но блииин.

Даниил
10.10.2017
00:33:53
мне лень выдёргивать оттуда сам ADT, без логики, но суть в чём

Google

Даниил
10.10.2017
00:34:06
вот соответствующий код на Haskell:
data Maybe a = Just a | Nothing
чувствуешь разницу?

Юра
10.10.2017
00:34:21
Видел я в проекте чел писал на Maybe в проекте.

Даниил
10.10.2017
00:34:32
или Rust:
enum Maybe<T> {
Some(T),
None,
}

Юра
10.10.2017
00:34:41
Угадай, зачем Maybe в JS-е?

Котяй Негодяй
10.10.2017
00:34:45

Даниил
10.10.2017
00:35:04

Котяй Негодяй
10.10.2017
00:35:20
При этом я его состоятельность проверил в реальном проекте и готов тебе возразить.

Admin
ERROR: S client not available

Котяй Негодяй
10.10.2017
00:35:58
Не пренебрегай научным подходом. Иначе кто-нибудь сделает это за тебя.

Юра
10.10.2017
00:39:38

Даниил
10.10.2017
00:40:13
куда отсутствующие значения заворачивать? в null? это в 2017-то?

Котяй Негодяй
10.10.2017
00:41:02
Но зачем?

Юра
10.10.2017
00:41:53
нет, спасибо
Вопрос привычки просто -) Я пишу на JS-е и мне Maybe не нужен, хотя я даже сам когда-то делал его реализацию и думал, что это клево.

Даниил
10.10.2017
00:43:35
привычка тут не при чём
глупо делать самому то, что за тебя может сделать компилятор
например, проверять типы

Google

Даниил
10.10.2017
00:44:12
Maybe/Option - это способ гарантировать на уровне типов отсутствие всяких NPE

Юра
10.10.2017
00:44:26
В js-е никто типы не проверяет, все обращаются по указателю так, как будто там лежит правильное значение.

Даниил
10.10.2017
00:44:54
не, понятно что ручные тайп ассерты это хуйня
ну так для того и придумали Flow

Юра
10.10.2017
00:45:48
и что в этом хорошего?
В общем-то ничего. Но ты просто говоришь, что вручную типы проверять — зашквар. Я и аргументирую, что никто этим не занимается.

Даниил
10.10.2017
00:46:15
ну так или иначе - занимаются

Котяй Негодяй
10.10.2017
00:46:23

Юра
10.10.2017
00:46:37
Ну, проверка на undefined я лично за проверку типов не считаю.

Даниил
10.10.2017
00:46:40

Юра
10.10.2017
00:46:52
F L O W
Ответил ведь уже, что тема хорошая, но пока что сыровато.

Даниил
10.10.2017
00:47:11
при чём выскакивать TypeError может только при специфических условиях, раз в 1000 запусков, когда программист чешет левую пятку под полной луной
он ведь в рантайме выскакивает

Котяй Негодяй
10.10.2017
00:47:24

Даниил
10.10.2017
00:47:34

Юра
10.10.2017
00:47:35

Дмитрий
10.10.2017
00:48:17

Юра
10.10.2017
00:48:40

Дмитрий
10.10.2017
00:48:46
То есть это отнюдь не все объявление maybe

Даниил
10.10.2017
00:50:05

Юра
10.10.2017
00:50:08
Просто видел я по коду, как один программист писал в проекте на Maybe. Использовал он его для получения значения из форм, а что, логично, в форме нифига — это Nothing.
Регрессировал обратно на сравнение с пустотой где-то к третьему модулю в системе -)