К основному контенту

Нет, только не JavaScript


"О нет, только не JavaScript". Все чаще и чаще мне приходится слышать это от опытных веб-девелоперов. Вот основные их аргументы:
  • JavaScript - не полноценный язык;
  • JavaScript - процедурно-ориентированный язык программирования;
Разберемся, так ли это...

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

JavaScript - процедурно-ориентированный язык программирования. Скорее JavaScript - объектно ориентированный язык программирования с прототипно-ориентированной парадигмой. Другими словами понятия класс в JavaScript нет, но его функциональность реализовывается синтаксисом функции. Сложно звучит, но на примере все просто и наглядно (один из вариантов написания):
// Описание класса
var Order = function(){
   // Приватное поле
   var state = null;
   // Публичное поле
   this.Description = "";
   // Публичный метод
   this.Deliver = function(){
     state = "Delivering";
   };
}; 

// Использование класса
var myOrder = new Order();
myOrder.Description = "Бубен";
myOrder.Deliver();
Поначалу смотрится непривычно особенно избалованным C#-ом программистам, но после написания пару десятка классов, все становиться на свои места.



JavaScript - родной язык для веба. JavaScript имеет одну из самых высоких степеней проницаемости, а это практически любой современный браузер.
Исходя из этого человек знающий JavaScript сможет написать клиент-серверное бизнес-приложение. При этом используя на клиенте нативную поддержку JavaScript браузером, а на сервере быстрый веб-сервер на javascript движке V8 - nodejs (раз, два). А изюминка - это повторное использование кода на сервере и на клиенте и все это бесплатно. Не нужно тратить деньги на дорогую: Visual Studio, Windows Server, SQL Server. Не нужно учить дополнительные языки: C#, ASP.NET, PHP и т.д. Не нужно зависеть от установленного клиентом плагина на подобии Flash/Silverlight. Вот отличная статья по обустройстве рабочего пространства для JavaScript программиста.



Капля дёгтя в бочке мёда. Для создания/написания пользовательского интерфейса (GUI) нам понадобиться HTML и CSS. Здесь одним JavaScript'ом не обойтись. Но я убежден в одном, что это работа скорее для дизайнера, чем для программиста.

Основной конкурент JavaScript. Зная какой другой язык программирования мы сможем создать полноценное клиент-серверное приложение? Возможно Java со своим JavaFX на клиенте, частично C# c клиентским Silverlight.
P.S.: Чем-то похожая статья http://codebetter.com/drusellers/2011/10/20/one-language-everywhere/

Комментарии