Блог разработчиков

В защиту JavaScript

Макс Ищенко
Опубликовано 25.06.2006 в Разработка, Статьи

Написать этот пост меня побудила пара статей в последних номерах “КО”, авторы которых весьма пренебрежительно отзывались об этом языке.
Я не большой знаток JavaScript, но у меня сложилось о нем очень даже хорошее мнение. Это, по крайней мере, полноценный язык, а не набор хаков под названием PHP. А такое отношение похоже на отношение некоторых к тикл.
Так что мне не очень понятно, когда жалуются, что JavaScript не поддерживает, к примеру, наследование. Ну и что? C++ не поддерживает type interference, но разве это проблема С++? Это, скорее, проблема программиста.

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

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

P.S.: JavaScript: The World’s Most Misunderstood Programming Language

top of hotblogs.org.ua
1 звезда2 звезды3 звезды4 звезды5 звезд (Еще не оценили)
Загрузка ... Загрузка ...

Понравилась статья? Подпишись на обновления по RSS/E-mail

Подписаться, не оставляя комментарий

Все комментарии (32) к “В защиту JavaScript”

  1. Вячеслав Колдовский говорит:

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

    Вот тут сейчас придут товарищи, для которых “набор хаков под названием PHP” не совсем верное утверждение, и такое начнется :)))

    Но я все же позволю обратить внимание на такой момент:

    “Технические проблемы наверняка тоже есть, но я с ними не сталкивался так как, повторюсь, очень немного на нем программировал”.

    Не понятен смысл поста в защиту - поскольку получается из той же оперы “Я Солженицына не читал, но осуждаю” :)

    Собственно моя “пренебрежительность” проявляется в том, что я пропагандирую прагматичный подход, важным критерием которого является соотношение “время/деньги”, так вот, у JavaScript это соотношение далеко не самое лучшее, и здесь “проблемных” программистов будет IMHO поболе, чем даже у PHP, но не только по их вине, сколько по той причине, что “в одном браузере эта фенечка не работает, в другом работает, но не так, а в третьем - это же самое можно сделать, но с помощью другой фенечки”.

    Конечно, сам JavaScript как язык тут совсем не причем, но это в чем-то похоже и на коммунизм - “идейка-то хорошая, только реализация прихрамывает”. :)))

    Так что мой коммент можно тоже рассматривать в защиту JavaScript :)))

    PS. Да, и еще, Max, в целях политкорректности, позволю себе еще одно замечание: вот если я, к примеру, говорю, что мне не нравится ни JavaScript, ни PHP, то мой блог крутится под ASP.NET, который мне нравится. А вот Вы говорите про “набор хаков”, но все-же не пренебрегаете использовать пхпшный-WordPress. Это прям как “мыши плакали, кололись, но продолжали есть кактус” :))

  2. Скакунов Саша говорит:

    Провокатор ты, Макс :]
    Так и подмывает начать спорить про PHP…

    Да, меня тоже всегда удивляло, насколько JS грамотно придуман.

  3. Max говорит:

    PHP/WordPress я использую как раз потому, что прагматик. ;)

    В значительной степени ради эксперимента я даже пишу проект база зарплат на PHP. И пришел выводу что пользоваться PHP/MySQL вполне можно — если осторожно, хотя я все же предпочитаю Python/PostgreSQL.

    А Солженицына, тьфу, JavaScript я все-таки использовал/использую и мнение свое составил.Другое дело - исторический багаж browser-related проблем. Ну так 90% уже можно выкинуть на свалку истории. А использование JavaScript браузером не ограничивается.

  4. Max говорит:

    Саня: конечно я провокатор. ;-)

    А насчет “набора хаков” - ничего личного, голые факты. ;-) То же можно сказать и насчет, например, CVS — которая вышла родом из SCCS которая вышла из набора sh-скриптов.

  5. Andrey Khavryuchenko говорит:

    CVS вийшла не з SCCS а з RCS, який був повним редизайном SCCS.

  6. crash говорит:

    Дык в КО как-раз говорили не столько о том что JS плохой язык, там как раз рассказывают о том почему ему нужна смена, так-как JS не полноценный OO язык программирования.

  7. Yuriy говорит:

    Есть такое мнение, что полиморифзм, инкапсуляция и наследование это неразрывные понятия. JavaScript простой, элегантный и очень мощный язык. К сожалению все воспринимают его как язык сценариев для web страниц. И даже в таком смысле используют как топор. Хотя модно посмотреть на cores разных AJAX frameworkов.

    Наверное JavaScript надо сравнивать по цонцепции со SmallTalkом.

  8. Max говорит:

    Соглашусь с тем, что “JS не полноценный OO язык программирования”. JavaScript - просто “полноценный язык программирования”. И с тем, что отсутствие “ОО” есть достаточная причина для его замены - не согласен абсолютно.

    В Cи/Haskell/Lua тоже нет ОО, ну и что? Если программист говорит, что язык без наследования для него не язык, то для меня это не программист. ;-) Так как даже чтобы быть хорошим ОО-программистом необходимо знать другие языки/парадигмы программирования.

  9. Yuriy говорит:

    “Есть такое мнение, что полиморифзм, инкапсуляция и наследование это неразрывные понятия.” - к сожалению большинство с этим согласно, и рассматривают все через поддерживает/не поддерживает. Так сложилось.

    Но хуже то, что для многих ActionScript - это что-то мощное, а JavaScript это чтобы цвет DIVа поменять. Оказывается можно писать код под FLASH и DOM и ничего общего не видеть.

    Обидно то, что такой стиль разработки это почти mainstream. Только единицы пытаются понять как что-то работает глубже.

  10. Profuel говорит:

    Скажу так - кричат, что JS плохой те, кто
    1) не писал на нем что-то интересное (сам видел глаза ребят за соседними столами, когда что-то напишешь несложное на JS, но красиво работающее)
    2) кто не знает его вообще и потому, следуя тому же mainstream, “за глаза” ругают.
    Не могу сказать, что знаю JS “от а до я”, но знаний пока хватает, благо всегда есть под рукой google и разум, которые позволяют решить большое кол-во проблем.
    Кстати, может кто не в курсе - под FireFox есть отличный отладчик этих самыж скриптов. Ну а под Explorer - в MSVisualStudio тем более есть.
    И оба неплохо справляются с проблемой ALERT() :)

  11. ivan говорит:

    Странное сравнение JS и PHP, да и скрытое желание подыграть холиварс.

  12. Vadim Voituk говорит:

    Поддержу мнение Макса об элегантности JavaScript.
    Не так давно решил написать что-то Ajax-овое - получил массу удовольствия от того, насколько можно элегантно и просто решать некоторые задачи. Сразу оговорюсь что использовал библиотеку Prototype, но от этого JavaScript не становится хуже :)
    Мнение о “php - набор хаков” - тоже готов отстаивать, хотя последний год только php меня и кормит.
    Может я тоже прагматик?:)

  13. RaDiy говорит:

    Нуууу просто не могу удержаться:
    JS - плохой язык потому что:
    1. ОН оооооооочень медленный, потому что он интерпретируемый, и с этим ничего не поделаешь отсюда простой вывод: на JS невозможно писать UI сложнее определенного предела (в который многие уже уперлись).
    2. Он не поддерживает OO. Отсюда простой вывод: на нем не возможно писать программ большого объема потому как они становятся неуправляемые.
    Сложите 1+2 и вы получите следующие: JS отлично справляется с тем для чего он был создан, но с требованиями сегодняшнего дня он справляется со скрипом или не справляется вовсе.

  14. Анонимно говорит:

    1. php - не набор хаков. это язык.
    2. js поддерживает наследование.

    можно этот список и продолжить..
    но статья, как минимум, некомпетентна.

  15. Vadim Voituk говорит:

    Ну все, началось…
    Предлагаю запретить постинг комментов в этот пост :)

  16. Вячеслав Колдовский говорит:

    Да, похоже так и есть.

    Предлагаю не разводить флейм, а дружненько сходить вот по этому адресу: http://www.rsdn.ru/article/?797

    И почитать всем полезную статью на очень близкую тему, ну а потом можно и впечатлениями поделиться.

    Хотя по поводу “лучше/хуже” для языка программирования я все-таки приведу очень хорошее высказывание, которое является эпиграфом к параграфу 4.1 “Выбор языка программирования” книги Стива Макконелла “Совершенный код”:

    Избавляя разум от всей ненужной работы, хорошая нотация позволяет сосредоточится на более сложных проблемах и в конечном счете повышает интеллект человечества. До появления арабской нотации умножение было весьма сложным, а деление даже целых числе требовало усилий ведущих математиков. Возможно, ничто в современном мире не смогло бы удивить греческого математика сильнее, чем то, что большинство европейцев умеют делить крупные числа. Это показалось бы ему абсолютно невозможным… Легкость выполнения операций над десятичными дробями - почти сверхъестественный результат постепенного обнаружения отличной нотации… (Alfred North Whitehead)

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

  17. Max говорит:

    Ладно, проехали. Я не утверждаю, что JavaScript - верх совершенства. Просто он значительно лучше, чем о нем принято думать. То, что C#/.NET/VS на порядок прогрессивнее я тоже спорить не буду.

    Тем не менее. В дизайне языка JavaScript виден “дизайн”. Он наверное странноват и несовершенен, но он есть. В PHP его нет, есть просто нагромождение функциональности.

    Сравнивать же JavaScript и PHP я не собирался, это apples and oranges.

  18. kost говорит:

    Что-то не увидел ни аргументов в защиту, не против.

  19. xedus говорит:

    мда, автор реально опозорился. он бы еще javascript с pl/sql сравнил и с ассемблером.

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

    “набор хаков под названием PHP” - мда, это конечно не превед, но думаю фразочка разойдется широко :))

  20. Vadim Voituk говорит:

    Вот уж если бы не xedus никто бы и не узнал что

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

    .

    2xedus:
    Коллега, (а я все-таки надеюсь что так оно и есть), прочтите внимательнее пост, потом ещё пару раз прочтите и до вас дойдет, что никто не обсуждал тут особенности и специфику использования того или иного языка.
    Говорилось о “правильности дизайна” JavaScript, и его нотации.
    А вы начинаете устраивать тут holy-wars даже не попытавшись вникнуть в в ту мысль, какую пытался выразить автор.

    А подобную фразочку я уже слышал на 4-й PHPConf от одного из докладчиков.

  21. Victor Repetsky говорит:

    Не любят JavaScript те кто его не знают и сталкиваются с использованием этого языка таких же не знающих. Наверное это самый “незнаемый” из популярных ЯП.
    Здесь сравнение прототипного подхода и ООП

  22. Арок говорит:

    >дурацкое название (так как с Java язык имеет очень мало общего)

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

    На мой взгляд, с ПХП его сложно сравнивать, т.к. они решают совершенно разные задачи.

    И самое главное: юзер может отключить ЯваСкрипт легко и просто, чего не скажешь про ПХП. Это сильно ограничивает его применение.

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

    А вы потеряли посетителя.

  23. Malx говорит:

    Для все тех, кто здесь пишет.
    Для тех кто давно пользуется 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…”
    :)
    “…Классы - это определенный тип объектов, созданный для управления другими объектами…”

  24. Max говорит:

    Кстати, с xotcl я как-то баловался. Там даже IDE какая-то была, на нем же писанная. Эх-х, молодость. ;-)

  25. Eugene Ffotin говорит:

    Скажу по секрету, шо на JS можна реалізувати всі парадигми ООП. Навіть ad-hoc поліморфізм.
    8)

  26. Eugene Ffotin говорит:

    Ну и наслідування звичайно… 8)

  27. Иван Сагалаев говорит:

    Несмотря на то, что дед учил меня украинским названиям месяцев, я к своему стыду совершенно не помню, что такое “Червень”, поэтому рискую влезть в давно остывшую дискуссию :-).

    Javascript называют “самым недооцененным языком в программировании”. Он, на самом деле, дико мощный, хотя и не привычный для людей с нашим классическим образованием, где ОО объясняют на примере только в стиле С++.

    Javascript’овые closures и прототипы дают практически тот же функционал, что объекты. Очень рекомендую Reintroduction to Javascript. Специально для таких случаев написана.

    Очень удивила фраза, что “он медленный, потому что интерпретируемый, а значит UI на нем не напишешь”. Как тогда люди пишут на Java, которая тоже интерпретируемая? Как тогда быть с интерфейсом XUL-браузеров, который работает именно на Javascript?

  28. SS говорит:

    Единстванная проблема с Javascript это неоднозначная поддержка онного разными браузерами. В остальном он просто гений ;)

  29. Malx говорит:

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

    В случае JS - это не проблема. Если в случае C++ ваша программа не скомпилится в несовместимой среде, тут запросто написать программу которая сама (не вылетая по ошибке) поймет в какой среде она исполняется и воспользуется предлагаемыми конкретным броузером особенностями. Если лень это делать самому - есть достаточно кросс-броузерных библиотек (например DynApi)

    ps. почитал
    http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7
    проникся :)

  30. Vityok говорит:

    Помилка в назві посилання: система типізації Хіндлі-Мілнера (виведення типів), не interference, а, як вказано в URL посилання: inference.

  31. Evgeny Sergeev говорит:

    JavaScript, действительно более интересный язык чем PHP, по крайней мере я получаю массу удовольствия при работе на нем!

  32. St.Lukas говорит:

    Я бы хотел напомнить, что использование JavaScript не ограничивается браузерами. Я вот недавно автоматизирующий работу с фотографиями скрипт для фотошопа написал:) И я был “очень приятно удивлен”, когда нашел поддеержку JavaScript’а, а то пришлось бы на VB писать… :(
    Что насчет “JS тормозит” - торомозит его реализация в среде исполнения, а не сам язык.
    Что касается споров что круче, то эти споры из разряда: “функциональный или процедурный?”
    “JavaScript: самый непонятый язык программирования в мире” - очень убедительная статья.
    Я не ПОЛНЫЙ КОДЕР:), а “околокодер”, но и то мне удалось написать очень симпатичные вещи на JavaScript’е: интерактивную карту г.Мурманска и небольшую игру.
    Так что великие гении кодинга снизойдите до JavaScript’а и может вы сделаете че-дь покруче Гугла, который между прочим не гнушается его и делает современыый интерактивный “клиентский Интернет”.

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.

Архив

Вакансии rss icon

Все вакансии

Комментарии