От любов към JavaScript?

SVIndex Завърза се интересна дискусия“Кой език за програмиране да учим? И наистина ли JavaScript е толкова търсен език?” Всичко започна от индекса, който разработвам, наречен SV Index. Това е една статистика (индекс), “изградена на база колко обяви за работа има в страната към днешна дата, в които се споменава даден език за програмиране”.

Как да лъжем със статистика

Преди да се впуснем в “анализи” на индекса, искам да ви обърна внимание, че статистиката е доста коварен прийом. В тази връзка, чета една много силна книга на Darell Huff – How to Lie with Statistics (“Как да лъжем със статистика”). В нея се засяга именно темата за това колко много се използва статистиката за различни манипулации и изкривяване на действителността – понякога неволно, а друг път целенасочено. (Вероятно нашите родни политици я препрочитат всяка година, но това е друга тема). Аз лично не я чета, за да манипулирам някого по-успешно. :) Просто книгата е една от 10-те книги, които всеки предприемач е хубаво да прочете според Inc.com. А и заглавието изглежда интересно. Затова реших да я прочета. А създадох SV Index , защото на мен просто ми беше интересно да знам какви езици се споменават в обявите за работа в България. Ако и на вас ви е интересно, може да следите всеки месец индекса тук. Ето как изглежда статистиката за месец юни:

ПозицияЕзик за ПрограмиранеСрещанияSV IndexПредходен МесецИзменениеИконка
1JavaScript23623,89 %24,15 %-0,27 %
2Java17217,41 %19,06 %-1,65 %
3PHP16316,50 %15,37 %1,13 %
4C#11611,74 %10,58 %1,16 %
5C10710,83 %10,28 %0,55 %
6C++979,82 %10,58 %-0,76 %
7Python404,05 %4,19 %-0,14 %
8ObjectiveC222,23 %2,50 %-0,27 %
9VisualBasic191,92 %2,20 %-0,27 %
10Ruby131,32 %0,60 %0,72 %
11Delphi30,30 %0,50 %-0,20 %

Кой език за програмиране да учим?

Излиза ли, че отговорът на въпроса “Кой език за програмиране да учим” е JavaScript? Според Светлин Наков отговорът е “Не”. Със съответната силна обосновка, че това е второстепенен език, който се ползва като допълнение към някой от сериозните езици като Java, PHP или C#. Съответно JavaScript се среща по-скоро като език, който е бонус да знаем, но не и водещ. Разбира се, преди няколко години и аз бих се съгласил напълно. Но не и днес. Не и 2013г. Днес съм съгласен наполовина. Да, JavaScript може би не е най-важният език за програмиране в България. Но JavaScript е тук, за да остане.

И отново – не казвам, че трябва да учим JavaScript, защото е “най-търсеният” език за програмиране според някаква статистика. Далеч не. Но твърдя, че търсенето на JavaScript не е случайно и второстепенно.

От любов към JavaScript?

За добро или за лошо, JavaScript се превръща във все по-предпочитан език за програмиране. От една страна:

  • Предпочитан от потребителите, които не искат (или въобще нямат) browser plugin-и;
  • Предпочитан от мениджърите, които не искат да инвестират в native мобилни приложения, а предпочитат HTML5 + JavaScript мобилни приложения;
  • Предпочитан от потребителите, които искат всичко да се случва в browser-а. Защо да си инсталирам софтуер, когато мога да ползвам cloud базирано web приложение, което не иска да го инсталирам?

От друга страна, въпреки че не е особено предпочитан от програмистите, JavaScript упорито променя пейзажа на езиците за програмиране с развитието на всички технологии около него. Например:

  • JavaScript от доста време насам е основният език за клиентско web програмиране.
  • Популярността на web технологии, като AJAX, и библиотеки, като jQuery, говори много и за популярността на езика.
  • JavaScript е силно застъпен в новите web ориентирани операционни системи като Chrome OS на Google и Firefox OS на Mozilla;
  • Други платформи, като JavaScriptCore (iOS и MacOS) и Windows 8 JavaScript APIs, ни позволяват да разработваме JavaScript настолни и мобилни приложения;
  • JavaScript + HTML5 с помощта на други технологии (като PhoneGap) ни позволяват да разработваме мобилни приложения.
  • JavaScript се ползва в NoSQL базите данни и сървърните технологии като Node.JS;
  • Появата на езици от по-високо ниво, компилиращи се до JavaScript, като DARTCoffeeScript и TypeScript, също говорят за интереса към езика;
  • Дори в научните среди кипи много сериозен интерес към JavaScript. Има предположения, че следващият модерен език за програмиране ще бъде издънка на JavaScript;
  • и т.н.

JavaScript се превръща в толкова популярен език не от чиста любов към него, а от самото развитие на технологиите около него.

Трислойна архитектура срещу cloud+web клиент

Гореспоменатият модел на приложения (cloud+web) все повече размива така наречената трислойна архитектура (SQL база, сървър, клиент). Представете си, че имате NoSQL (Mongo, CouchDB…) база някъде в cloud-а. Достъпвате я директно през web API, например REST, което връща JSON (Форматът на данни неслучайно се казва JSON – JavaScript Object Notation :) ) В този примерен модел JavaScript е основният език за програмиране. Защото всъщност основната логика е изнесена на клиента. Разбира се, това е един прекалено опростен модел на клиентско приложение. В реалността би изглеждал по-скоро като мегамикс от технологии и код, написан на различни езици за програмиране. Но въпросът е, че вероятността JavaScript да присъства под някаква форма в този микс е огромна.

Езикът JavaScript

За да не си помислите, че съм пристрастен, ще ви кажа, че съм C# програмист от 2005г. насам до ден днешен. И аз обичам C#. Но истината е, че JavaScript убива с бързи темпове технологията, с която се занимавам последните 4 години. И сега волю-неволю уча JavaScript. Не от огромна любов към езика, а защото ми трябва. В интерес на истината, като свикнеш със странностите и невероятните “гимнастики”, които се правят, за да прилича на обектно-ориентиран език, и разбереш особеностите на динамичната type система (добра статия по темата), всъщност е един доста приятен език за програмиране. Даже започва да ми допада леснотата, с която стават много неща. Елементите на функционален стил на програмиране заедно с плюсовете на динамичната type система (и duck typing-а) правят програмирането доста забавно. Но това е друга тема. Е, не всичко е особено розово, разбира се. :)

Как изглежда JavaScript…от Angus Croll - "The Politics Of JavaScript" :)
Как изглежда JavaScript…от Angus Croll – “The Politics Of JavaScript” :)

И за финал – още малко статистика за използваемостта на езиците за програмиране в най-голямото online repository за source code в света – github. Тази статистика също ясно показва, че JavaScript е тук, за да остане.

github-languages

Но не забравяйте:

  1. Това е статистика за проекти с отворен код.
  2. Това е просто статистика и далеч не казва кой език трябва да учите.

Учете езика, който вие прецените за най-добре. Не този, който една или друга статистика казва, че е най-търсен. И прочетете 10-те правила за по-успешна кариера на програмист.

Благодарности на Руми Нейкова и Надя Атанасова за редакцията.

By Miroslav Miroslavov

Основател на 'платформата за управление на офиси' - Office R&D. Основна движеща сила на www.sofiavalley.com.

18 comments

  1. Javascrip is a must за всеки програмист или уеб дизайнер, който има дори малък досег с фронтенд работа.

    От една страна е хубаво, че е loosely defined и слабо типизиран – може да си позволим различни синтаксиси за едно и също нещо, и то ползвайки обекти тип object .
    От друга стран, това прави езика труден за поддръжка и налагане на code standards – нещо от което ентърпрайза има отчаяна нужда.

    Мисля си, че ако има IDEs със силна валидация и показване на грешки в кода (стил compile errors), javascript ще стане далеч по-предпочитан. А може би пък има вече такива?

    1. Може да си пуснеш тестове, ако нямаш IDE и да ги третираш като compile time грешки. Проблема не е в инструментите или езика, а в налагането и контрола над правилата (каквито и да са те).

  2. “Появата на езици от по-високо ниво, компилиращи се до JavaScript, като DART, CoffeeScript и TypeScript също говорят за интереса към езика;”

    С това не съм съгласен. Значи ли това, че появата на езици от по-високо ниво, които се компилират до Java байт код говори за засилен интерес към Java? НЕ!

    Това говори единствено за засилен интерес към run-time платформата и точно обратен интерес към самия език.

    В случая с JS, е необходимо да се използва защото на практика няма друг толкова разпространен скриптов език, който да работи в браузъра. Необходимо е да се ползва неговият run-time.

    От друга страна, самия език не струва и затова хората са измислили други езици, а които да им е по-лесно и по-приятно да работят.

    1. Много добра забележка. Абсолютно съм съгласен, че това е интерес към run-time-a и анти-интерес към езика.
      Но от друга страна тези езици имат доста съмнително бъдеще. За момента DART е провал според мен, TypeScript е в зародиш (а и той е просто JavaScript ES5 + малко sugar и tooling). CoffeeScript може да се каже, че е успешен. Но докато те се борят за оцеляване, JS продължава да се развива от tooling, платформи, APIs, екосистеми и какво ли не. Докато това е езикът, който разбира browser-а, винаги ще е една крачка пред другите езици. Според мен. (Това не значи, че не бих се радвал, ако има по-добра алтернатива) :)

    2. Напротив езика си е ОК. Това, че създателите и потребителите на разни компилации ги мързи да пишат е съвсем друг въпрос. За мен CoffeeScript е пълна боза, която пести писане, но намалява гъвкавостта на конструкцията, това е за набивачи на код.
      Конкретно по темата, js вече е водещ език, той е централно звено в редица популярни платформи и все повече ще навлиза в корпоративните среди, където нещата са били винаги консервативни. Защото е не труден за писане, предвидим и лесен за използване в сценарии, където други езици и платформи, излизат много по-скъпо (време, опит, пари, работна ръка, хардуер и т.н.)

  3. Хубава статия, две забележки само:

    1. AJAX е по-скоро технология, не платформа. jQuery също не бих го категоризирал като платформа, а като библиотека. То дори си го пише на сайта: “jQuery is a fast, small, and feature-rich JavaScript library.”

    2. Няма нужда на се правят “гимнастики” за обектен модел – вече има достатъчно готови решения. Моделът на MooTools примерно е едно от тях (не е панацея, но върши добра работа).

    1. Съгласен. Кофти употреба на БГ термини. Сори. Оправено.
      А за “гимнастиките” – за човек, който идва от C# света са си меко казано гимнастики. :)

  4. Тъй като пиша на python, и аз никак не съм въодушевен, че ми се налага да уча js в дълбочина. Обаче не съм съгласен, че javascript e допълнителен език. Javascript стана толкова популярен заради Node.js, a то си бек-енд със каквото се сетиш като библиотека, а понеже е event-driven, scale-ва по-добре от почти всичко друго.

  5. Това е доста интересна книга за javaScript (http://www.amazon.com/Effective-JavaScript-Specific-Software-Development/dp/0321812182). Описва доста от капаните и защо работи така. Иначе и това е технология която стой за да покаже какво се получава, когато нещо се пише с твърдо фиксирани крайни срокове и важното е да върви. :)

  6. И това общо-взето, по мое скромно мнение е напълно неактуална статистика :)
    Не зная как някой може да възприема на сериозно такива неща, когато
    1) очевадно JAVAscript съдържа в себе си Java и ми се струва много вероятно енджина, който изравя тия неща доста да се е пообъркал.
    2) дори и при невярно 1) C#? Кажи честно? .NET изобщо не е фактор? .ASP, WPF(макар силвърлайта да залязва) – как точно от всички възможности точно C# е бил избран за тая статистика, като в кой да е сайт за работа, когато напишеш .NET ще ти излязат (поне)около 150-200 резултата…
    Случая е друг обаче с C#, въпреки, че влиза в дефиницията (те са всъщност C# Web Templates, Office Templates, Workflow Templates и тн. – по msdn дефиниции).
    Лично аз съм имал не един два случая, когато казвам C# и отсреща(HR-а, представител на някоя агенция)човека ми отвръща “А .NET?!?”
    И между другото съм *предимно* безпристрастен – аз лично съм шокиран(е… това е един начин да се изразя) от това какво търсене имат фронт/бек енд уиндоуските истории – имам конфликти със себе си колко съм “за” и колко “против” – но това по никакъв начин не прави актуална тая статистика, която е поствана на доста места!
    Ако това с Javascript-а наистина някой успее да ми докаже, че е самата, студена, мрачна, ужасяваща действителност, ей заричам се – ще се преселя да живея на друга планета :)
    Да не говорим, че мога да споря поне няколко месеца(без храна, вода, подслон и разни други такива незначителни подробности) с всеки, който твърди, че JS е ПРОГРАМЕН език…
    И мисля, че всеки един, който е правил нещо “сериозно”(ака. нещо не за собствено удоволствие, което да решава задачи от университета) на С/С++/QT ще ме подкрепи за последното.

    Както и да е – извинения на всеки, който намери тая безкрайна стена от почти безсмислен текст за арогантна, обидна и по някакъв начин я приеме лично – нищо лично няма :)
    Поздрави!

    1. Здравей Александър,
      Благодаря за коментара. :)

      Много добро наблюдение, че JavaScript съдържа Java. Но ако се замислиш малко повече, ще установиш, че всъщност това само би увеличило срещанията на Java, а не на JavaScript. Ако engine-а беше чак толкова ламерски, би трябвало да брои всички срещания на JavaScript за Java. Но не го прави, между другото…;)
      C# е Език за програмиране. .NET е Framework-а. Ако броим Езици срещу Платформи не ти ли се струва малко като да сравняваме ябълки и круши? :)
      А за JavaScript-а дали е език, мисля да не коментирам повече. :D
      Поздрави и успешен ден.

      1. Java във JavaScript-a е по чисто маркетингови причини :)

Leave a comment

Your email address will not be published. Required fields are marked *