В защиту JavaScript
Макс ИщенкоОпубликовано 25.06.2006 в Ссылки
Написать этот пост меня побудила пара статей в последних номерах “КО”, авторы которых весьма пренебрежительно отзывались об этом языке.
Я не большой знаток JavaScript, но у меня сложилось о нем очень даже хорошее мнение. Это, по крайней мере, полноценный язык, а не набор хаков под названием PHP. А такое отношение похоже на отношение некоторых к тикл.
Так что мне не очень понятно, когда жалуются, что JavaScript не поддерживает, к примеру, наследование. Ну и что? C++ не поддерживает type interference, но разве это проблема С++? Это, скорее, проблема программиста.
Как по мне, достаточно крупными недостатками языка являются: а) дурацкое название (так как с Java язык имеет очень мало общего) и б) отсутствие хорошей документации собственно по языку.
Технические проблемы наверняка тоже есть, но я с ними не сталкивался так как, повторюсь, очень немного на нем программировал.
P.S.: JavaScript: The World’s Most Misunderstood Programming Language
Понравилась статья? Подпишись на обновления по RSS/E-mail

Ну что тут скажешь – религиозные войны абсолютно бессмыссленны, поскольку в них права каждая сторона.
Вот тут сейчас придут товарищи, для которых “набор хаков под названием PHP” не совсем верное утверждение, и такое начнется
))
Но я все же позволю обратить внимание на такой момент:
Не понятен смысл поста в защиту – поскольку получается из той же оперы “Я Солженицына не читал, но осуждаю”
Собственно моя “пренебрежительность” проявляется в том, что я пропагандирую прагматичный подход, важным критерием которого является соотношение “время/деньги”, так вот, у JavaScript это соотношение далеко не самое лучшее, и здесь “проблемных” программистов будет IMHO поболе, чем даже у PHP, но не только по их вине, сколько по той причине, что “в одном браузере эта фенечка не работает, в другом работает, но не так, а в третьем – это же самое можно сделать, но с помощью другой фенечки”.
Конечно, сам JavaScript как язык тут совсем не причем, но это в чем-то похоже и на коммунизм – “идейка-то хорошая, только реализация прихрамывает”.
))
Так что мой коммент можно тоже рассматривать в защиту JavaScript
))
PS. Да, и еще, Max, в целях политкорректности, позволю себе еще одно замечание: вот если я, к примеру, говорю, что мне не нравится ни JavaScript, ни PHP, то мой блог крутится под ASP.NET, который мне нравится. А вот Вы говорите про “набор хаков”, но все-же не пренебрегаете использовать пхпшный-WordPress. Это прям как “мыши плакали, кололись, но продолжали есть кактус”
)
Провокатор ты, Макс :]
Так и подмывает начать спорить про PHP…
Да, меня тоже всегда удивляло, насколько JS грамотно придуман.
PHP/WordPress я использую как раз потому, что прагматик.
В значительной степени ради эксперимента я даже пишу проект база зарплат на PHP. И пришел выводу что пользоваться PHP/MySQL вполне можно — если осторожно, хотя я все же предпочитаю Python/PostgreSQL.
А Солженицына, тьфу, JavaScript я все-таки использовал/использую и мнение свое составил.Другое дело – исторический багаж browser-related проблем. Ну так 90% уже можно выкинуть на свалку истории. А использование JavaScript браузером не ограничивается.
Саня: конечно я провокатор.
А насчет “набора хаков” – ничего личного, голые факты.
То же можно сказать и насчет, например, CVS — которая вышла родом из SCCS которая вышла из набора sh-скриптов.
CVS вийшла не з SCCS а з RCS, який був повним редизайном SCCS.
Дык в КО как-раз говорили не столько о том что JS плохой язык, там как раз рассказывают о том почему ему нужна смена, так-как JS не полноценный OO язык программирования.
Есть такое мнение, что полиморифзм, инкапсуляция и наследование это неразрывные понятия. JavaScript простой, элегантный и очень мощный язык. К сожалению все воспринимают его как язык сценариев для web страниц. И даже в таком смысле используют как топор. Хотя модно посмотреть на cores разных AJAX frameworkов.
Наверное JavaScript надо сравнивать по цонцепции со SmallTalkом.
Соглашусь с тем, что “JS не полноценный OO язык программирования”. JavaScript – просто “полноценный язык программирования”. И с тем, что отсутствие “ОО” есть достаточная причина для его замены – не согласен абсолютно.
В Cи/Haskell/Lua тоже нет ОО, ну и что? Если программист говорит, что язык без наследования для него не язык, то для меня это не программист.
Так как даже чтобы быть хорошим ОО-программистом необходимо знать другие языки/парадигмы программирования.
“Есть такое мнение, что полиморифзм, инкапсуляция и наследование это неразрывные понятия.” – к сожалению большинство с этим согласно, и рассматривают все через поддерживает/не поддерживает. Так сложилось.
Но хуже то, что для многих ActionScript – это что-то мощное, а JavaScript это чтобы цвет DIVа поменять. Оказывается можно писать код под FLASH и DOM и ничего общего не видеть.
Обидно то, что такой стиль разработки это почти mainstream. Только единицы пытаются понять как что-то работает глубже.
Скажу так – кричат, что JS плохой те, кто
1) не писал на нем что-то интересное (сам видел глаза ребят за соседними столами, когда что-то напишешь несложное на JS, но красиво работающее)
2) кто не знает его вообще и потому, следуя тому же mainstream, “за глаза” ругают.
Не могу сказать, что знаю JS “от а до я”, но знаний пока хватает, благо всегда есть под рукой google и разум, которые позволяют решить большое кол-во проблем.
Кстати, может кто не в курсе – под FireFox есть отличный отладчик этих самыж скриптов. Ну а под Explorer – в MSVisualStudio тем более есть.
И оба неплохо справляются с проблемой ALERT()
Странное сравнение JS и PHP, да и скрытое желание подыграть холиварс.
Поддержу мнение Макса об элегантности JavaScript.
Не так давно решил написать что-то Ajax-овое – получил массу удовольствия от того, насколько можно элегантно и просто решать некоторые задачи. Сразу оговорюсь что использовал библиотеку Prototype, но от этого JavaScript не становится хуже
Мнение о “php – набор хаков” – тоже готов отстаивать, хотя последний год только php меня и кормит.
Может я тоже прагматик?:)
Нуууу просто не могу удержаться:
JS – плохой язык потому что:
1. ОН оооооооочень медленный, потому что он интерпретируемый, и с этим ничего не поделаешь отсюда простой вывод: на JS невозможно писать UI сложнее определенного предела (в который многие уже уперлись).
2. Он не поддерживает OO. Отсюда простой вывод: на нем не возможно писать программ большого объема потому как они становятся неуправляемые.
Сложите 1+2 и вы получите следующие: JS отлично справляется с тем для чего он был создан, но с требованиями сегодняшнего дня он справляется со скрипом или не справляется вовсе.
1. php – не набор хаков. это язык.
2. js поддерживает наследование.
можно этот список и продолжить..
но статья, как минимум, некомпетентна.
Ну все, началось…
Предлагаю запретить постинг комментов в этот пост
Да, похоже так и есть.
Предлагаю не разводить флейм, а дружненько сходить вот по этому адресу: http://www.rsdn.ru/article/?797
И почитать всем полезную статью на очень близкую тему, ну а потом можно и впечатлениями поделиться.
Хотя по поводу “лучше/хуже” для языка программирования я все-таки приведу очень хорошее высказывание, которое является эпиграфом к параграфу 4.1 “Выбор языка программирования” книги Стива Макконелла “Совершенный код”:
Так что нет смысла доказывать того, что интерпретируемый скриптовый язык – верх совершенства, а все остальное – проблемы программиста. Не разумно это, господа программисты – прогресс не стоит на месте, и JavaScript в текущей реализации устарел – это есть свершившийся факт .
Ладно, проехали. Я не утверждаю, что JavaScript – верх совершенства. Просто он значительно лучше, чем о нем принято думать. То, что C#/.NET/VS на порядок прогрессивнее я тоже спорить не буду.
Тем не менее. В дизайне языка JavaScript виден “дизайн”. Он наверное странноват и несовершенен, но он есть. В PHP его нет, есть просто нагромождение функциональности.
Сравнивать же JavaScript и PHP я не собирался, это apples and oranges.
Что-то не увидел ни аргументов в защиту, не против.
мда, автор реально опозорился. он бы еще javascript с pl/sql сравнил и с ассемблером.
на счет наследования, интерфейсов и пр. – наличие оных существенно облегчает разработку и повышает надежность приложений. и это понятно каждому кто программил чуть больше чем “очень немного”
“набор хаков под названием PHP” – мда, это конечно не превед, но думаю фразочка разойдется широко
)
Вот уж если бы не xedus никто бы и не узнал что
.
2xedus:
Коллега, (а я все-таки надеюсь что так оно и есть), прочтите внимательнее пост, потом ещё пару раз прочтите и до вас дойдет, что никто не обсуждал тут особенности и специфику использования того или иного языка.
Говорилось о “правильности дизайна” JavaScript, и его нотации.
А вы начинаете устраивать тут holy-wars даже не попытавшись вникнуть в в ту мысль, какую пытался выразить автор.
А подобную фразочку я уже слышал на 4-й PHPConf от одного из докладчиков.
Не любят JavaScript те кто его не знают и сталкиваются с использованием этого языка таких же не знающих. Наверное это самый “незнаемый” из популярных ЯП.
Здесь сравнение прототипного подхода и ООП
>дурацкое название (так как с Java язык имеет очень мало общего)
Название действительно неудачное – половина вебмастеров до сих пор не может понять, чем отличается Ява от ЯваСкрипта, и что это разные языки.
На мой взгляд, с ПХП его сложно сравнивать, т.к. они решают совершенно разные задачи.
И самое главное: юзер может отключить ЯваСкрипт легко и просто, чего не скажешь про ПХП. Это сильно ограничивает его применение.
Ну, сделали вы сайт со всеми наворотами, Аяксами и прочим. А юзер зашел, и ничего не понял – он просто не в курсе, что сисадмин борется за безопасность его компьютера (вчера нашли свежую дырку в ИЕ, а хакеры уже выложили эксплойт), и отключил все скрипты в браузере.
А вы потеряли посетителя.
Для все тех, кто здесь пишет.
Для тех кто давно пользуется JS но даже не пробовал его изучать (таких большинство) настоятельно рекомендую проч итать:
http://www.jalix.org/ressources/internet/javascript/_JS15guide/JS15core/obj2.html
Чтобы не говорили что это не ОО язык только потому что в нем нет классов.
Классы – это вообще Хак, который возник из-за невозможности быстрой реализации полноценного ОО языка (такого как JS
. JS-у проще, он интерпретируемый.
А вот другой язык с подобным ОО:

http://media.wu-wien.ac.at/whatIsXOTcl.html
“…The object system enables us to define objects, classes, and meta-classes. Classes are special objects with the purpose of managing other objects…”
“…Классы – это определенный тип объектов, созданный для управления другими объектами…”
Кстати, с xotcl я как-то баловался. Там даже IDE какая-то была, на нем же писанная. Эх-х, молодость.
Скажу по секрету, шо на JS можна реалізувати всі парадигми ООП. Навіть ad-hoc поліморфізм.
Ну и наслідування звичайно…
Несмотря на то, что дед учил меня украинским названиям месяцев, я к своему стыду совершенно не помню, что такое “Червень”, поэтому рискую влезть в давно остывшую дискуссию
.
Javascript называют “самым недооцененным языком в программировании”. Он, на самом деле, дико мощный, хотя и не привычный для людей с нашим классическим образованием, где ОО объясняют на примере только в стиле С++.
Javascript’овые closures и прототипы дают практически тот же функционал, что объекты. Очень рекомендую Reintroduction to Javascript. Специально для таких случаев написана.
Очень удивила фраза, что “он медленный, потому что интерпретируемый, а значит UI на нем не напишешь”. Как тогда люди пишут на Java, которая тоже интерпретируемая? Как тогда быть с интерфейсом XUL-браузеров, который работает именно на Javascript?
Единстванная проблема с Javascript это неоднозначная поддержка онного разными браузерами. В остальном он просто гений
В случае JS – это не проблема. Если в случае C++ ваша программа не скомпилится в несовместимой среде, тут запросто написать программу которая сама (не вылетая по ошибке) поймет в какой среде она исполняется и воспользуется предлагаемыми конкретным броузером особенностями. Если лень это делать самому – есть достаточно кросс-броузерных библиотек (например DynApi)
ps. почитал
http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7
проникся
Помилка в назві посилання: система типізації Хіндлі-Мілнера (виведення типів), не
interference, а, як вказано в URL посилання:inference.JavaScript, действительно более интересный язык чем PHP, по крайней мере я получаю массу удовольствия при работе на нем!
Я бы хотел напомнить, что использование JavaScript не ограничивается браузерами. Я вот недавно автоматизирующий работу с фотографиями скрипт для фотошопа написал:) И я был “очень приятно удивлен”, когда нашел поддеержку JavaScript’а, а то пришлось бы на VB писать…
Что насчет “JS тормозит” – торомозит его реализация в среде исполнения, а не сам язык.
Что касается споров что круче, то эти споры из разряда: “функциональный или процедурный?”
“JavaScript: самый непонятый язык программирования в мире” – очень убедительная статья.
Я не ПОЛНЫЙ КОДЕР:), а “околокодер”, но и то мне удалось написать очень симпатичные вещи на JavaScript’е: интерактивную карту г.Мурманска и небольшую игру.
Так что великие гении кодинга снизойдите до JavaScript’а и может вы сделаете че-дь покруче Гугла, который между прочим не гнушается его и делает современыый интерактивный “клиентский Интернет”.