LINUX.ORG.RU
ФорумTalks

Псто ненависти к динамическим яп


0

5

И какой урод придумал всю эту динамическую типизацию а-ля питон с яваскриптом? Руки бы пообрывал. На нормальных языках (java, c#) кусок кода приличного качества можно накидать даже не заглядывая в документацию, пользуясь одним лишь автодополнением среды разработки и здравым смыслом. Даже если нифига не знаешь библиотек и фреймворков, используемых в проекте - можно быстро что-то разобрть и поправить. А в этом говне вместо написания кода сидишь часам в гугле и дебагере - чтобы разобраться что же тебе прилетает, что за фигню надо в функции передавать итд.

Надо на работе ввести правило - если проект вылезает за рамки ровно одного скрипта - переписываем к черту на нормальный язык!

★★★★

Все так, в документации тоже пусто. Ни что возращает, ни какие исключения возбуждает. Печаль, беда, слезы.

vladkuzm
()

полностью поддерживаю. недоязычки только для гостевух и годятся.

crowbar
()
Ответ на: комментарий от vladkuzm

Ни что возращает, ни какие исключения возбуждает

функция возвращает mixed — как хочешь, так и интерпретируй. чем собственно php и занимается.

crowbar
()

«Оувуь вфы Ыушту» как говорили в своё время немцы будучи на нашей территории. Динамические языки офигенно удобны для небольших (ну максимум пару сот строк) вещей.
Позволяет отбросить неинтересную рутину.

А большие проекты на всяких там РНР никто и не пишет, правда ведь?:)

Stahl ★★☆
()

Иногда подобные языки нужны.

DeadEye ★★★★★
()
Ответ на: комментарий от Stahl

«Оувуь вфы Ыушту» как говорили в своё время немцы будучи на нашей территории.

И не только на нашей. И на других. И даже на своей. И не только говорили, но и писали. Чтобы никто не забывал.

DeVliegendeHollander ★★
()

Дело привычки, как таковая динамичность она не особо же используется. Скорее распространено как опускание объявления типов, не более того. Указанные проблемы - это не проблемы языка, а проблемы среды разработки, раз там нет нормального автокомплита.

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

PS: единственная вещь, которая лично меня немного разражает - это писанина на жабаскрипте в виде одного файла в много тысяч строк. Но и это не проблема жабаскрипта, это скорее сложившийся способ вебописанины в целом.

ixrws ★★★
()
Ответ на: комментарий от Stahl

Угу, всякие пейсбуки со вконтактами - как раз на богомерзком пыхе. Так что про не пишет - явное преувеличение.

Хотя мне вот сейчас вроде надо дописать в маленький проект мелкую штуку - так все равно кучу времени убил на разборки с тем, какие переменные, как и откуда использует fabric и что возвращает boto (это питонвские приблуды такие, для удаленного выполнения комманд и работы с амазоновским rest api).

Nagwal ★★★★
() автор топика
Ответ на: комментарий от vladkuzm

В какой именно документации к какому именно проекту? Если речь про жабаскрипт, то и документация в3к хорошая и большие проекты вроде жикуэри тоже неплохо документированны.

ixrws ★★★
()
Ответ на: комментарий от Nagwal

Может это проблема этого мелкого проекта, у которого нет внятной документации или хотя бы примерного описания архитектуры?

ixrws ★★★
()
Ответ на: комментарий от ixrws

Скорее распространено как опускание объявления типов, не более того.

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

это не проблемы языка, а проблемы среды разработки, раз там нет нормального автокомплита.

Для динамического языка просто неозможно написать нормальный автокомплит. Потому что типы известны только в рантайме, на этапе разбора просто не хватает данных для него.

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

На жабе я спокойно разбирал проекты с десятками мегабайт исходников. А вот в коде даже простенького яваскриптового например фреймворка - уже черт ногу сломит.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от ixrws

Да есть эта документация. И на fabric и на boto. И на сам проект. Но в нее приходится лезть и копаться по каждому чиху. Вместо того чтобы за полчаса написать 20 строчек, пользуясь одним автокомплитом.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

Только вот при использовании нормального языка 9/10 времени на ее написание можно было потратить на более вменяемые задачи, потому что большая часть проекта становится самодокументированной.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от DeVliegendeHollander

Ну это была шутка про кириллицу — начал было писать, а раскладку не поменял. И стало настолько лень стирать и писать заново, что пришлось выкручиваться, придумывая всякую фигню про «территорию».

Stahl ★★☆
()

Да, кстати в тему вопрос родился - никто не в курсе, что есть в природе из _скриптовых_ языков со _статической_ типизацией?

Nagwal ★★★★
() автор топика

Сядь в таз с водой :}

Deleted
()

У меня никогда не возникало надобности сидеть часами в дебаггере для динамичских языков. Ты явно что-то делаешь не так.

E ★★★
()
Ответ на: комментарий от Nagwal

Есть, но о них никто не знает, ибо они не имеют практической выгоды. Хипстерские надстройки над б-гомерзким javascript, в основном. Есть ещё Google Dart и tcc.

E ★★★
()
Последнее исправление: E (всего исправлений: 1)

++

Каждый раз когда фикшу баг который может быть допущен только при динамической типизации, представляю на сколько меньше времени я бы потратил если бы это был хаскелль (прочитать ошибку компилятора и пофиксить) и грущу.

zinfandel ★★
()
Последнее исправление: zinfandel (всего исправлений: 1)

пользуясь одним лишь автодополнением среды разработки и здравым смыслом.

лорчую. У меня от 1-ого до 5-ти % кода так написано.

xwicked ★★☆
()

На нормальных языках (java, c#) кусок кода приличного качества можно накидать даже не заглядывая в документацию, пользуясь одним лишь автодополнением среды разработки и здравым смыслом

правильно ли я понял, что яба и си шарп - языки для мартышек, не читающих документацию?

xsektorx ★★★
()

Это ещё фигня. Вот когда начинаешь рефакторить — тут приходит полный пиздец.

Я тут рефакторил большой кусок кода на Scala, изменения получились в более чем полусотне файлов. Так это ЩАСТЕ, когда компилятор тебе говорит «извини, друг, но вот здесь у тебя сломалось». Никакие тесты так близко к месту возникновения ошибки не подходят.

Miguel ★★★★★
()
Ответ на: комментарий от DNA_Seq

Если вы, штатские, такие умные, то чего в столовую строем не ходите?

Nagwal ★★★★
() автор топика
Ответ на: комментарий от xsektorx

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

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Miguel

Ох, да, рефакторинг динамики - это вообще звиздец. Проще выкинуть и написать заново.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

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

Вовсе нет. Видимо не умеете читать чужой код.

outtaspace ★★★
()
Ответ на: комментарий от xsektorx

Нет. В этом то и проблема. Приходится писать на этом дерьме. А какое было бы счастье, если бы новый интерпретатор встраивался в браузер с той же легкостью, что и например плагин для флеша/явы. Т.е. входит пользователь на сайт, где клиентская логика написана например на шарпе и браузер видя скрипт type=«application/x-csharp» лезет на сайт моны за плагином.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от outtaspace

Скоро уже будет лет 10, как я получаю деньги за работу программистом. И даже в самом говноинтырпрайзе, с десятками мегабайт исходников и таким говнокодом, что челюсть оставляет синяк на ноге своим падением вниз при виде этого, проблем с разбором исходников у меня не было. При одном условии - если они были написаны на строго типизированом языке.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от outtaspace

Скоро уже будет лет 10, как я получаю деньги за работу программистом. И даже в самом говноинтырпрайзе, с десятками мегабайт исходников и таким говнокодом, что челюсть оставляет синяк на ноге своим падением вниз при виде этого, проблем с разбором исходников у меня не было. При одном условии - если они были написаны на строго типизированом языке.

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Nagwal

Все эти метрики меня не впечатлили. Учитесь читать/понимать чужой код, тем более вы профессионал, вам за это деньги платят.

outtaspace ★★★
()
Ответ на: комментарий от Nagwal

на шарпе

лучше уж яваскрипты. сторонние плагины не нужны, переносимость або смерть

xsektorx ★★★
()
Ответ на: комментарий от outtaspace

Нет, мне платят деньги за то, чтобы я решал проблемы. А понимание чужого говнокода - это мои личные трудности, которые начальство не волнуют.

Nagwal ★★★★
() автор топика

И какой урод придумал всю эту динамическую типизацию а-ля питон с яваскриптом? Руки бы пообрывал.

Динамически типизированный язык гораздо проще спроектировать. Получается, правда, говно, но зато их много.

ввести правило - если проект вылезает за рамки ровно одного скрипта - переписываем к черту на нормальный язык!

Не, это тоже крайность.

если они были написаны на строго типизированом языке.

Перестаем путать статическую и строгую типизации.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от xsektorx

тип в итоге всё равно при исполнении определяется

Это с чего ты взял? Компилятор нормального языка, разумеется, проверяет типы при компиляции. Потом уже результат подхватывается жабоскриптом в браузере и тут никаких статических типов нет; но чем это принципиально отличается от, скажем, компиляции в машкод, где и динамических тоже нет?

Miguel ★★★★★
()
Ответ на: комментарий от tailgunner

Не, это тоже крайность.

Ну ладно, уговорил, чертяка языкастый, три скрипта - и переписывать :)

Nagwal ★★★★
() автор топика
Ответ на: комментарий от Miguel

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

xsektorx ★★★
()
Ответ на: комментарий от Nagwal

три скрипта - и переписывать :)

Кстати... в приличных динамически типизированных языках вроде Python есть модули! Не обязательно думать в терминах «скриптов».

tailgunner ★★★★★
()
Ответ на: комментарий от xsektorx

тут просто интерпретация в другой язык,

Трансляция, не интерпретация.

в котором будут проверки каждый раз

JavaScript уже давно не так работает.

tailgunner ★★★★★
()
Ответ на: комментарий от xsektorx

в котором будут проверки каждый раз

JavaScript уже давно не так работает.

ты про jit-компиляцию?

Я про постоянную проверку типов.

tailgunner ★★★★★
()

кусок кода приличного качества можно накидать даже не заглядывая в документацию

Тебя тоже можно прооперировать не заглядывая в документацию

buddhist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.