Pull to refresh

Comments 61

UFO just landed and posted this here

+1. Да и причём тут вообще Javascript? Подобный трэш можно написать на любом языке(вспомним знаменитое #define true false).

Ну или согласно другому примеру статьи
#define true (rand() % 20 > 0)
Трешовый код может быть в сторонних модулях, которые в большом количестве используются в проектах на JavaScript
И как и в других языках нужно знать про источники возможных проблем. Зачем вы приплетаете другие языки когда статья про JavaScript — не понятно
Суть в том, что статья применима не только к JS.

И как вы от этого обезопаситесь? Проблема надумана полностью. Статью можно заменить одним предложением: "Чтобы говна не было, не испражняйтесь"

Я ответил в комментарии выше

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

Всегда нравилось как люди рассуждают с позиции своего Я :) Зачем учить людей программировать и писать о возможностях языка? Это же и так очевидно. Зачем маленький ребенок засунул гвоздь в розетку, а потом плачет, очевидно же что его ударит током :)
А если отвлечься от лирики, автор статьи с самого начала сообщил что он намеренно рассматривает «темные стороны языка» которые воспроизводятся и на других языках. Где вы тут увидели героизм и связь с реальными кейсами непонятно :)

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

где Вы тут увидели темные стороны языка вот что непонятно. Реально, первый комент в ветке самы показательный:
— пишем функцию, творящую трэш
— вызываем её
— получаем трэш
у д и в и т е л ь н о
Linux как воплощение зла
rm -rf /

Windows как воплощение зла
— Добро пожаловать в Windows Vista

Программист как воплощение зла
— Настрой мне, пожалуйста, принтер

Кукуруза как воплощение зла
image

RuVDS как воплощение зла
Красиво расписать бесполезную статью в качестве пиара
про линух не канонично, там должна быть точка и пробел после нее.
точно, не смог вспомнить наверняка
Счастливая девочка… за секунду до…
У любой технологии есть свои хейтеры, например многие незаслуженно ненавидят PHP.
И что вы хотите сказать этой ссылкой? Автор недвусмысленно пишет
На самом деле с большинством написанного я соглашусь. PHP – противоречив. Многословен. Там действительно есть примеры неадекватного поведения. У него есть много проблем. Порой он уродлив. Иногда он неуклюж в обиходе. Многое оставляет желать лучшего.

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

Мне вот органически неприятно писать на JS, например, но я же не пытаюсь навязать свое мнения тем, кому он нравится. Тогда почему те, кому не нравится PHP, pascal, Java, C#, любой другой язык, позволяют себе выливать на окружающих тонны своей ненависти?
А что плохого в обсуждении недостатков технологий? Я такие статьи люблю уже хотя бы за то, что они обнажают грабли малознакомых технологий, с которыми может быть случится столкнуться.

Обижаться на то, что какой-то негодяй ругает твою любимую технологию — это же бестолково и иррационально)
Пафосное и, зачастую безосновательное, клеймение позором и обсуждение недостатков — это несколько разные вещи.
Второе, в большинстве случаев, интересно и конструктивно.
Первое — «бестолково и иррационально» и вызывает чувство, что вляпался во что-то мерзкое.
Одно дело, если вас называют «бестолковым %LANG%шником», совсем другое — если "%LANG% — ни на что не годный микроскоп с интегрированным гвоздодёром". Статейка про «фрактал плохого дизайна» относится как раз ко второй группе, как можно ее считать «клеймением позором» тех, кто этот язык использует — это для меня вопрос. Стыд возникает тогда, когда человек не в силах изменить обстоятельства. Вы ведь, по вашим словам, принимаете критику, но продолжаете использовать язык. Значит на это есть достаточно весомые причины.
Вот вам прямая цитата
И я никогда не встречал PHP-разработчика, который может сделать тоже самое на PHP. Но я натыкался на достаточное количество тех, кто сразу начинает извинятся за что-то и всё, что делает PHP. Такое мышление ужасает.


как можно ее считать «клеймением позором» тех, кто этот язык использует — это для меня вопрос

Третий абзац сверху
PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.


Если вы считаете, что это конструктивная критика не переходящая на личности, то могу ответить только еще одной цитатой из той же нетленки:
честно, я не могу представить, как мы с вами в чём-либо можем достигнуть согласия.
Если вы считаете, что это конструктивная критика не переходящая на личности

Я считаю, что это личное оценочное суждение о технологии и немного бугурт в сторону фанбоев. Да, конструктива здесь не много, но и поливания грязью огульно всего PHP-сообщества я здесь не вижу.

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

Если же вы этим не болеете, тогда я более, чем уверен, что эти «лучи добра» направлены мимо вас.
Значит у нас с вами несколько разные представления о границах допустимого в цивилизованной дискуссии. Бывает.
Мне сейчас можно оскорбиться?)
Мы с вами говорим о разных вещах.

Вот представьте, сидит человек в ресторане, ест стейк. И тут из-за соседнего столика подходит фанатичный веган и начинает размахивать своими лозунгами. (ничего не имею против веганов, пока они не начинают агрессивно навязывать свое мировоззрение).
В такой ситуации наш подопытный скорее не оскорбится, а удивится и попытается объяснить, что на вкус и цвет товарищей нет, что он прекрасно знает про мучения животных и несомненный вред жареного, но, черт возьми, он хочет есть стейк, а не отбиваться от фанатика, который пытается втирать ему какую-то дичь.
Фактически вы приходите на кулинарный форум, где на одном из стендов рядом новоиспеченный веган вещает о том, что он жил в обмане всю жизнь и возмущается, что эти «мясоеды» мясо любят лишь потому, что ленятся подобрать себе сбалансированный растительный рацион. И… говорите, что вам неприятно это слышать.
Но что же вам мешает пройти мимо стенда и не обращать на чудака внимание, как наверняка поступили бы в реальной жизни? Или тут дело во внутреннем конфликте?
Nope :)
Если проследить ветку с самого начала, то в разговоре за способы готовки, кто-то сказал «кто-то вообще стейки на сковороде жарит и ничего!» И тут появляется веган.
Если проследить ветку с самого начала, то в разговоре за способы приготовления стейков

Хм. Эта ветка начинается с троллинга о том, что PHP-могет, а кто считает иначе — не прав. Хотя статья вообще не про PHP. Но о своей любви заявить было нужно. Очевидно, это был вызов на дуэль, который мигом приняли.
Да вот мне тоже кажется, что самый первый пост писался с целью «выстрелить в толпу». У него получилось.
попытается объяснить, что на вкус и цвет товарищей нет

На вкус и цвет — это ставить "$" перед переменными или табы с пробелами. Но ведь бывают дыры в дизайне, которые бывают вполне объективно хуже реализованы, в сравнении с другими языками. Популярные языки прошли длинный путь развития, они неизбежно будут содержать в себе тонны устаревших конструкций и поддерживать весь ужас, написанный за годы развития.
Дженерики в Java, макросы в Си, выделение блоков отступами в Python, TMTOWTDI в Perl, в целом JS ;) — для любого языка можно найти спорные реализации/решения.
И тянутся они от версии к версии, где-то как груз обратной совместимости, где-то как «фишка языка», оправдываемая только любящими писать на них.

Да, изначальный дизайн PHP не то, чтоб хорош, но к его чести можно сказать, что он активно развивается и улучшается. Начиная с 5.6 на нем можно писать хорошо, удобно и быстро, не сталкиваясь в повседневной жизни с 90% того, что описано в хейтерской статье — было бы желание.
Ну вот те же дженерики джавы и сишарпа — это вкусовщина или все же объективный недостаток дизайна первой? Лучшее, что вам ответит на это джавист: «Потому что это не нужно».
Бинго!
(сарказм) А еще она многословна, глючна, тормозна, ничего нормально не напишешь без многомегабайтных спрингов и вообще не компилится в нативный код — приходится JVM повсюду таскать.

Собственно единственное, что я пытался донести — это то, что статьи в стиле «Говно! Говно! Роза! Роза? Наверное пахнет как говно! Чтоб вы все сгорели!» — в принципе не могут нести никакого конструктива. И, так долго обсуждаемый нами, текст относится именно к такому типу, к сожалению.
Вместо того, чтобы смотреть на говно с розами, можно было бы черпать новую информацию об интересующих технологиях)
Люди делятся опытом насчет тонких мест и краевых условий, пишут бенчмарки, кидаются пруфами, лезут в исходники библиотек… Это все абсолютно бесплатно и скорейшим образом, чтобы максимально доходчиво показать, насколько же вы ебобонекомпетентны. Это же прекрасно и одна из главных целей существования хабра.

А разводить холивары с упоротыми противниками, которые по сути дела ничего сказать не могут — это уже вопрос к себе: «Что ты тут забыл?». Поэтому нет ничего глупее, чем ввязываться в холивары с единственной целью — восстановить справедливость.
почему те, кому не нравится PHP, pascal, Java, C#, любой другой язык, позволяют себе выливать на окружающих тонны своей ненависти?

Это уже вопросы к ним, а не ко мне :)

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

Вы блестяще подтвердили этот тезис.

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

Нет, я комментировал вторую часть того предложения, а именно
многие незаслуженно ненавидят PHP.

К «незаслуженности» у меня возникли вопросы.

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

Если у человека есть неприязнь к инструменту и он её обосновал, то что тут не так?
Есть разница между «я не могу придумать условия, при которых я бы выбрал инструмент Ч для решения своих задач» и «я ненавижу Х, когда же он сдохнет?!!!»
Пацаны — вообще ребята! =) Оба привели статьи 2012 года выпуска, может давайте еще про PHP4 будем говорить, или лучше про то говнецо, что в те далекие года гордно несло название JavaScript? Вы вообще PHP7+ в глаза то хоть видели?
>>>> Кстати: я обожаю Python. И с удовольствием прожужжу тебе уши, ноя о нём
этим все сказано :( вечная борьба Python против PHP, ох уж эти питонисты, что им спокойно не живется, я вот никак не могу понять природу ненависти языка PHP у программистов на Python. P.S. использую оба этих языка в работе.
оо, статья шестилетней давности. Давайте ещё PHP 3 поругаем
О боже, RuVDS как вы могли перевести эту статью, после таких крутых статей?
«в информатике есть две трудные проблемы: у нас только одна шутка и она не смешная»
Мне показалось, что статья задумывалась как каламбур типа вредных советов с моралью как избегать запутанного кода. Но по слогу несколько не дотянули до эталонов жанра, получилось скорее глупо нежели зло.
Вы извините, конечно, но на разделе «Непростые имена» я уже не выдержал. Неужели вы найдете хоть одного разработчика, который в имя переменной будет подсовывать «какахи» и полноширинные символы вместо обычных, чтобы потом использовать эти имена? Про самоуничтожающиеся объекты через геттеры-сеттеры — это вообще какая извращенная фантазия должна быть?! Так можно дойти до того, что в конструкторах одного класса будем уничтожать произвольные объекты другого класса. Почему нет, Javascript же позволяет. Это нужно поместить в раздел «Ненормальное программирование» и поменять «желтый» заголовок.
киррилица вполне может встретиться в именах. Особенно «с», поскольку на одной клавише с «c» в qwerty/йцукен раскладке.
К реальным минусам js отнёс бы отсутствие типобезопасности и const-корректности.
Ну для мелких проектов типобезопастность это не проблема — все держишь в памяти и легко находишь ошибку. Для крупных есть TS и Flowtype.
const-корректность — это вы про то, что свойства константного объекта можно менять? И правильно, константность не всегда означает иммутабельность.

ИМХО, отсутствие многопоточности и/или средств кооперативной многозадачности куда большая проблема.
Методы не могут гарантировать неизменность объекта. Не знаю, может это я как адепт Си++ придираюсь. Но отсутствие явного типового соответствия в функциях напрягает, да и неявное приведение типов просто чумовое)
Методы не могут гарантировать неизменность объекта.
Это уже к иммутабельности (которую мы можем обеспечить через заморозку и ко).
отсутствие явного типового соответствия в функциях
Идите в TS, он вам больше понравится
неявное приведение типов
Правила приведения типов не нарушаются, просто это более свободная версия. Минусом это трудно назвать, равно как и плюсом. Скорее, подводный камень.
Конечно, треш можно написать на любом языке, но некоторые языки словно подталкивают к этому обилием всяких хитрых неочевидных конструкций. Например, раньше писал на Перле, так ведь этот язык просто все время нашептывает тебе на ухо: «Брось писать читабельный код, используй только знаки препинания!»
> Если вы пишете код, с которым нужно будет работать другим людям, JS даёт вам неисчерпаемое количество возможностей для того, чтобы этих людей раздражать, путать, всячески изводить и обманывать.

> let get = (obj, property, default) => {

Если бы вы писали определение функции со словом function, оно было бы читабельнее, понятнее (с первого слова понятно, что у нас функция, в случае с let это не так) и точно меньше бы раздражало:

function get(obj, property, default) { 


Насколько это чище, аккуратнее, красивее!
Sign up to leave a comment.