Javascript очень мощный язык, в нем заложен большой потенциал. При бурно растущих веб-технологиях он может стать одним из лидеров среди языков программирования. Среда исполнения javascript кода присутствует в любом компьютере, в большинстве телефонов, да и серверное ПО можно разработать на этом замечательном языке.
Но язык не лишен недостатков. Наиболее значимые из них:
Чем масштабнее и значительнее становится софт, тем сильнее будут ощущаться проблемы с отладкой кода и с его производительностью.
Какие есть пути решения? Отказаться от использолвания javascript? Google, например, уже придумала замену — язык google dart. А как быть с уже написанным кодом? Годы полезной работы наших замечательных программистов?
Не все так печально.
Все недостатки языка javascript устранимы. Его смело можно использовать в масштабных проектах. Замена языку пока не нужна.
Но язык не лишен недостатков. Наиболее значимые из них:
- Язык компилируется в момент исполнения кода. Каждый раз, когда вы открываете сайт, javascript код начинает компилироваться. Как минимум увеличивается время выполнения программы.
- Отсутствует типизация данных. Проблема всех скриптовых языков. Пока выполнение кода не дойдет до нужной строчки, не узнаешь работает ли она. А ведь значительную часть по поиску ошибок мог бы взять на себя компилятор, если бы знал типы данных, с которыми он работает. Да и по скорости выполнения, типизированный код быстрее.
- Не привычная для многих программистов объектная модель. Классы и наследование классов присутствует, но оно сильно отличается от привычной многим реализаций в языках программирования C++/C#/Java.
Чем масштабнее и значительнее становится софт, тем сильнее будут ощущаться проблемы с отладкой кода и с его производительностью.
Какие есть пути решения? Отказаться от использолвания javascript? Google, например, уже придумала замену — язык google dart. А как быть с уже написанным кодом? Годы полезной работы наших замечательных программистов?
Не все так печально.
- Проблему с типизаций позволяет решить удивительное ПО от google — closure compiler. Необходимо в коде рядом с переменными, функциями и параметрами функций добавлять специальным образом оформленные комментарии — аннотации, в которых указаны типы данных. И умное ПО от google подскажет вам, где вы совершили ошибку.
Официальная документация: developers.google.com/closure/compiler/docs/js-for-compiler?hl=ru
- Компилировать код на данный момент нельзя. Но можно уменьшить объем кода, сжав его как логически (переименовав переменные, убрав лишние пробелы, преобразовав код и т.д.), так и при помощи алгоритмов сжатия (например, gzip). Здесь же есть простор для браузеров. Браузеры могут компилировать код только при первой загрузку с сайта, и уже откомпилированный код запоминать. И при следующем запуске использовать уже откомпилированный код. Производительность железа тоже не отстает, сейчас уже даже телефон может не уступать по производительности простенькому настольным компьютеру.
- Избавиться от «корявой» объектной модели позволяет сам язык javascript. Имеются замечательные инструменты:
Mootools: mootools.net
AWeb library: a-web.me
Описание классов внешне приближается к описанию классов на языке C++/C#/Java. Это действительно удобно как для понимания, так и для сопровождения кода. Второй инструмент привносит полноценные public, protected и private методы, добавляет полноценные свойства классов. Все просто и изящно.
Все недостатки языка javascript устранимы. Его смело можно использовать в масштабных проектах. Замена языку пока не нужна.