@react_js

Страница 2275 из 5115
Юра
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:13:23
Котяй Негодяй
10.10.2017
00:13:26
Т.е. делает частично то же, что и компилятор?

Котяй Негодяй
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:18:55
Котяй Негодяй
10.10.2017
00:19:18
Потому что там нет нормального вывода типов, и на каждый чих надо самому кастовать. А IDE пытается кастовать за тебя. Т.е. авторы IDE в теории могли бы дописать чуток и сам язык.

Так вот. К чему это я.

IDE для JS существует.

Юра
10.10.2017
00:20:09
Всё очень взаимосвзанно.
Ну, я тут ХЗ. Компилятор компилирует, IDE подставляет всякие штуки и рефакторит.

Котяй Негодяй
10.10.2017
00:20:49
Ну, я тут ХЗ. Компилятор компилирует, IDE подставляет всякие штуки и рефакторит.
IDE делает всё это на основе более продвинутого статического анализа, чем есть у компилятора.

Ну и TS можешь попробовать. Но я не пробовал.

Юра
10.10.2017
00:22:39
IDE делает всё это на основе более продвинутого статического анализа, чем есть у компилятора.
Ну, для этого язык должен позволять делать вывод типов. А в js-е информация о типах появляется только на этапе исполнения. Собственно, почему все IDE для js-а плохие.

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

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

Но я ее забыл.

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

Юра
10.10.2017
00:26:08
статическую*
Во. Клевый ник, как раз в тему бестипового лямбда-исчисления.

Даниил
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: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
Угадай, зачем Maybe в JS-е?
чтобы не ловить тайп эрроры из-за нуллов в рантайме

Котяй Негодяй
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:53
нет, спасибо
Вопрос привычки просто -) Я пишу на JS-е и мне Maybe не нужен, хотя я даже сам когда-то делал его реализацию и думал, что это клево.

куда отсутствующие значения заворачивать? в null? это в 2017-то?
От отсутствующих значений нужно избавляться как можно раньше.

Даниил
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:37
Ну, проверка на undefined я лично за проверку типов не считаю.

Даниил
10.10.2017
00:46:40
ну так или иначе - занимаются
когда у тебя где-то выскакивает TypeError и ты лезешь искать где накосячил - это тоже ручная проверка типов)

Юра
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:48:17
вот соответствующий код на Haskell: data Maybe a = Just a | Nothing
Ты не прав, ты приводишь «пустую» реализацию datatype, которая в жс выглядит как аналогичное объявление классов. Дальше идут имплементации тайпклассов

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

Даниил
10.10.2017
00:50:05
Ты не прав, ты приводишь «пустую» реализацию datatype, которая в жс выглядит как аналогичное объявление классов. Дальше идут имплементации тайпклассов
ну да, мне лень было вырезать само определение или добавлять реализации к примеру на Haskell но суть в том что в любом случае типобезопасное определение ADT на Flow выглядит как костыль по сравнению с ADT в нормальных языках это ни разу не камень в твой огород, если чё)

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

Страница 2275 из 5115