16.12.2013

Про JavaScript

Ребята, хочу поделиться радостью, что читаю свою третью книжку про яваскрипт и она прекрасна. Первой было руководство по jQuery, скорее как справочник, потом врубился в «JavaScript. Оптимизация производительности» Николаса Закаса и наконец-то добрался до истоков — «JavaScript. Сильные стороны», 2008. Автор книги Дуглас Крокфорд — создатель всемирно известного инструмента отладки кода JSLint, на тот момент ведущий JS-разработчик Yahoo (с 2012 работает в Paypal).

Дуглас в свое время так полюбил JSON, что зарегистрировал домен json.org и опубликовал собственную спецификацию формата на радость всему интернету, а в 2006 году официально ее оформил (RFC 4627).

Крокфорд также известен добавлением фразы “The Software shall be used for Good, not Evil” в открытую лицензию на использование своей програмы JSMin в 2002 году. Скандал случился семь лет спустя, когда Google, которая размещала программу у себя, обнаружил непримеримое противоречие этой фразы и «true open source”-лицензии, последняя никак не ограничивает челоека использовать программу как на благо так и на зло. JSMin была с позором удалена с гугла. Сейчас то же самое происходит с его лицензией на JSON и лицензией PHP.

Из книги «Сильные стороны JavaScript»

«Иногда комитеты по стандартизации могут убрать из языка неудачные фрагменты, способные привести к сбою. Но как правило, они лишь добавляют новые функции к существующим, что порождает новые проблемы.
Тем не менее у вас есть возможность определять собственные подмножества и создавать хорошие программы, основываясь исключительно на удачных фрагментах.
Язык Javascript почти полностью состоит из недостатков…»

«API браузера и DOM просто ужасны, но обвинять JavaScript несправедливо. На любом языке нелегко работать с DOM, так как эта модель плохо определена и непоследовательно реализована. Эта книга вскользь касается DOM. Я думаю, что написать книгу о сильных сторонах DOM было бы крайне сложно.»

«В основу JavaScript положены как очень хорошие, так и очень плохие идеи. Очень хорошие — функции, нестрогая типизация, динамические объекты, нотации литералов объектов. Очень плохие — программирование на основе глобальных переменных.»