×

Чому JavaScript став найпопулярнішою мовою серед новачків в IT

Усі статті, обговорення, новини про Front-end — в одному місці. Підписуйтеся на телеграм-канал!

Привіт. Мене звати Володимир Вишко. Я Solution Architect в компанії GlobalLogic. Маю понад 10 років досвіду в ІТ. За цей час встиг побути у різних ролях: розробник Java Backend, Js Frontend, Node.js Backend, Scrum Master, Lead, Cloud Architect. Є тренером різних курсів, включаючи «Algorithms and data structures» і «Distributed systems design».

Я починав свою кар’єру як Java backend dev, і на одному з проєктів мені виділили частину функціоналу, яку треба було реалізувати на frontend. Так я перейшов на frontend розробку. Я розповім, чому кодувати на JavaScript зручно, чому ця мова така популярна серед айтівців, як початківців, так і сеньйорів, та які в ній плюси і мінуси.

Коротко про популярність мови

JavaScript сьогодні — найпопулярніша мова для тих, хто займається написанням коду. Навіть серед розробників-дебютантів в IT сфері — JavaScript є фаворитом. Кількість вакансій в Україні для інженерів, які програмують цією мовою перевищує 1500. Чому так сталось та чому більшість обирає саме її? Розберемось предметніше.

По-перше, JS — це простий старт, на відміну від інших мов програмування. Щоб написати свою першу програму вам потрібен лише текстовий редактор та веббраузер. Не потрібно проходити курс лекцій в Оксфорді по функціональному програмуванню та прийомам ООП. Звичайно, це лише верхівка айсберга, знання ООП й ФП знадобиться, але ці прийоми будуть з’являтися природно у вашому арсеналі з досвідом.

По-друге, «Write once, run anywhere». Цей слоган, придуманий компанією Sun для своєї мови програмування Java, гідну реалізацію отримав лише в JavaScript. JavaScript — це про свободу запускати однаковий код на різних операційних системах, браузерах, платформах й архітектурах. Наприклад, ви можете розробити вебдодаток, який буде однаково працювати в браузері під Debian Linux, на мобільному телефоні Apple або десктопному додатку Windows. JavaScript не ідеальний інструмент, але він надає альтернативні шляхи розвитку. Як у Нео з «Матриці» у вас буде вибір, але цього разу не між двома таблетками, а цілим пакунком різноколірного драже.

Головною перевагою JavaScript є її доступність та зрозумілість. Перш за все, це налаштування вашого середовища розробки. Для того, щоб почати писати код на «С» в Ubuntu, вам потрібно встановити компілятор gcc, який тягне за собою купу залежностей, з якими не завжди все так просто, як хотілось би.

Наприклад, через несумісність версій чи застарілі версії пакетів у вашому репозиторії вам доведеться шерстити askubuntu в пошуках розв’язання вашої проблеми. З JavaScript все просто — Edge/Safari/Firefox йдуть в комплекті з ОС. Відкрийте термінал, почніть з «console.log(‘Hello world’)» — ваша перша програма готова.

Виглядає дуже просто, чи не так? Але JavaScript дозволяє писати й складні речі, адже поєднує у собі більшість популярних парадигм. Деякі люди стверджують, що JavaScript для анімацій з кнопками на сайті — це давно не так. Прикладом є робота Google Sheets. Програма завантажується за секунди й поєднує у собі функції Excel, особливості реактивного та асинхронного програмування.

Оскільки, усім потрібен сайт, то починають зазвичай з frontend. Але можливості розвитку на frontend практично необмежені. Складність frontend додатків деяких компаній вже перевищує складність програмування backend. Там вже потрібні frontend архітектори й висококваліфіковані інженери, які вміють писати ефективний код.

Якщо ж віддавати перевагу «абстракції», то є свобода почати писати backend на Node.js. Він все більше набирає популярність, усі великі компанії зі списку FAANG використовують Node.js для різних частин своєї екосистеми. Менш популярними, але не менш цікавими є напрямки написання десктопних додатків, нативних мобільних додатків з використанням React Native і програмування мікроконтролерів та IoT.

Чи може знання JavaScript замінити знання інших мов? JavaScript сама собою може бути досить різноманітною. Більшість JavaScript розробників вже пишуть код на TypeScript (статично типізована версія JS, що дозволяє знаходити деякі помилки на етапі компіляції). Іншою стороною JS може бути babel, що дозволяє використовувати конструкції, які ще офіційно не реалізовані браузерами чи рантаймом.

І треба розуміти, що JS не працює ізольовано від інших речей. Якщо ви back-end розробник, то SQL — це майже основа, яку потрібно знати тим, хто працює з реляційними БД, а якщо ви займаєте нішу на фронті, то там є препроцесори CSS зі своїм синтаксисом. Вибравши мобільний напрям, обмежитись JS/ReactNative теж не вийде, ви обов’язково зіткнетесь з Java/Kotlin/Swift/etc.

Тож висновок такий — знання інших мов програмування для розробника буде величезним плюсом на проєктах та збільшить цінність спеціаліста. Попри те, що JS — універсальний інструмент, вона одночасно як кільце з «Володаря перснів». One ring to rule them all — дійсно, спершу може здатись, що інші мови не потрібні, бо все можна написати на JS.

Але та сама універсальність-гнучкість є одночасно і плюсом, і мінусом JS. Ви пишете код, як подобається, але це працює до того часу, поки підтримувати такий код не стане занадто складно. Тоді й приходить час «переписати усе на реакті». Вивчення інших мов програмування збільшує кругозір і покращує стиль спеціаліста на JS.

Вивчення Java дає чудове відчуття принципів ООП, книги по чистому коду Java Боба Мартіна і Мартіна Фаулера покращать стиль і в JS також. Haskell дозволить відчути аспекти функціонального програмування і ви зможете використати ці знання в JS. З кожної мови можна почерпнути трохи знань, які покращать ваш JS. Не зупиняйтесь на одній мові, але і не беріться за все й одразу.

«Інь і ян»

В інтернеті є багато мемів про ніби то нелогічність JS. Щось на кшталт «2» + «2» = «22», а «2» — «2» = 0. Це дивно, тому що якщо зрозуміти механізм й пріоритет конвертації типів — усе стає дуже логічно. І якщо змінити ці базові правила і зробити «очевидніше», то це, як ефект метелика, зламає інші юзкейси JS і зробить його незручним для серіалізації, конвертації, валідації тощо.

В китайській філософії є концепція «Інь і ян», яка показує тісний зв’язок протилежних по своїй суті речей. JS має декілька характеристик, які є одночасно і плюсами, і мінусами, як подивитись:

  • простий старт, але багато поганого коду серед новачків;
  • висока популярність, але і висока різноманітність підходів і думок до написання коду;
  • гнучкість і поєднання концепцій і парадигм, але overengineering на деяких проєктах;
  • швидкий прогрес і створення нових фреймворків, але втома від змін.

Конфуцій писав про рівновагу і гармонію. У нашому випадку досягнення гармонії можливе за умови розуміння базових абстрактних речей, таких як: алгоритми та структури даних, принципи SOLID, KISS, YAGNI, GRASP, патерни ООП тощо.

Почесні друге й третє місця

Новачки також обирають Python і PHP. По принципу JS, ці мови дозволяють швидко почати писати back-end для вебдодатка, а інтернет повен інформації на цю тему.

Python та PHP мають простий механізм деплойменту, запуску й тестування. Python — ідеальний варіант для другої мови програмування, оскільки є універсальною мовою й застосовується усюди: починаючи від вебдодатків, закінчуючи штучним інтелектом та розпізнаванням зображень.

Чого чекати далі

Рано чи пізно знайдеться мова, що зможе замінити JS, але це навіть і добре. Для тих, хто встиг вляпатись у всі слабкі місця JS, нова мова, що виправить усі ці проблеми природно увійде в наше життя, легко засвоїться і покращить код. Головне розуміти, що знання, які ми отримуємо в JS, нікуди не зникнуть, а дозволять нам простіше осягати нові технології в майбутньому. Це природний процес.

👍ПодобаєтьсяСподобалось16
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Хочу можливість ставити дизлайк на ДОУ 🥲

Вибирають JS з однієї причини: Frontend. Бо якщо ти вибрав його, то великого вибору немає. Так, є варіанти на кшталт Elm, але це не для початківців. І так, це певна пастка, бо зазвичай починають вивчання Frontend зі CSS, HTML, тобто з того, що до саме програмування немає відношення. А потім починають JS, та часто з’ясовується, що саме програмування це дуже велика проблема. А Frontend тому що дивляться на кількість вакансій, а не на співвідношення вакансії/кандидати.

Для того, щоб почати писати код на «С» в Ubuntu, вам потрібно встановити компілятор gcc, який тягне за собою купу залежностей, з якими не завжди все так просто, як хотілось би.

Наприклад, через несумісність версій чи застарілі версії пакетів у вашому репозиторії вам доведеться шерстити askubuntu в пошуках розв’язання вашої проблеми. З JavaScript все просто — Edge/Safari/Firefox йдуть в комплекті з ОС.

Ну... по-перше, gcc зазвичай також іде у комплекті з OS, бо інакше можуть виникнути проблеми з пропрієтарними драйверами, які перекомпільовують свою частину при оновленні ядра. А якщо брати мінімалістичні збірки, то там скоріше за усе буде відсутній Firefox.

Кажемо JS, маємо на увазі TS ;)

Пишу на JS/TS. Буду сперечатися про простоту ) Так, дуже просто написати хелоу ворлд, тут без питань. Але питання починаються з конвертацій типів. Чому рядок + рядок то конкатенація рядків, а рядок — намбер — це математична операція. Чому [] == [] це false. Чому typeof ’string’; це string але ’string’ instanceof String; це false і так далі. Дуже багато прикладів коду JS, з якого ржуть девелопери, що пишуть на інших мовах. Насправді, то все досить прості речі, якщо розібратися, як працює мова. Але саме це не то, з чого починають вивчення JS (чомусь). І саме через це натикаються на незрозумілі речі і більшість просто ігнорить проблему, переписуючи код так, щоб він почав працювати, не розбираючись з причиною. І це велика проблема незрозумілості в JS

Ну питання референсів це штука складна, потрібно спускатися на два рівні нижче до системних мов програмування

js дуже проста мова, якщо вам здається що це не так, то гляньте щось на c++.

А ті кейси які ви називаєте, не зовсім схожі на кейси з робочого коду, скоріш просто забавні особливості.

А про [] !== [], то це база, що об’єкт не дорівнює іншому об’єкту. Це, здається, одна з початкових тем при вивченні js.

Я не кажу, що вона складна, я кажу, що вона не така, як інші, тому і приколів багато. Я знайомився з С в рамках курсу СS50 то я з вами згоден.
Про приклади з не робочого коду категорично не згоден. Якщо ти так не пишеш — це не означає, що не доведеться працювати з таким кодом, написаним до тебе. Так що чим краще ти розбираєшся тим легше побачити помилку в чужому коді.
Згоден про базу, але мені здається багато хто її просто пропускає і йде одразу формочки шльопать ) Ба, якщо трошки розібратися з тим, як джс працює, то стає все зрозуміло і очевидно.

Все так легко і просто. Не розумію, чому на проектах не так.

Тому що на вкладці вакансії багато років лідує frontend, ваш кеп.

Довільний коментар змінено!

JavaScript офигенный язык, но для новичков плохо подходит, т.к. позволяет слишком много и не бьет по рукам. Для новичков лучше всего Java.

Трейні без досвіду ? Можливо.

Все набагато простіше — у браузерах немає альтернативи, тому і юзають криве подєліє під назвою жс. Наслідком цього також є популярність ноди, бо з одного боку — маємо багато формошльопів, які шарять жс, а з іншого — гуглу довелося добре запаритися над оптимізацією V8, щоб монструозні жс фреймворки не лагали, тому цей двіжок справді швидкий. Плюс сама мова створювалася як засіб для створення рекламних попапів з пропозиціями збільшити певний девайс, і ніхто не очікував, що на ній з часом почнуть писати великі аплікухи. Звідси й ідіотська слабка типізація.

В принципі, якщо юзати TS замість vanilla JS, то цілком можна писати на ньому (так, я не вважаю TS самостійною мовою, це всього лиш обгортка над JS), але це не відміняє того факту, що JS — одна з найжахливіших мов в плані дизайну, і вся його екосистема — це набір костилів (достатньо згадати костиль-бабель, який конвертує TS чи новий JS код в старі версії жс, замість компіляції в байт-код, як це робиться в нормальних мовах).

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

По-перше, JS — це простий старт, на відміну від інших мов програмування.

Простий старт — це і C#, і Python і PHP, та майже будь-яка інша сучасна мова програмування.

По-друге, «Write once, run anywhere».

Але це не точно.

Головною перевагою JavaScript є її доступність та зрозумілість.

Тут написано, що JavaScript — це найбільш незрозуміла і нелогічна мова програмування, але автор трохи помилився і вийшло речення вище.

В інтернеті є багато мемів про ніби то нелогічність JS. Щось на кшталт «2» + «2» = «22», а «2» — «2» = 0. Це дивно, тому що якщо зрозуміти механізм й пріоритет конвертації типів — усе стає дуже логічно. І якщо змінити ці базові правила і зробити «очевидніше», то це, як ефект метелика, зламає інші юзкейси JS і зробить його незручним для серіалізації, конвертації, валідації тощо.

"Не достигнув желаемого, сделай вид что желал достигнутого" :)

Ну а что может быть лучше для автоматизации шаурмятницы чем JavaScript ? :^)

Все просто : работа есть вот и учат

Підписатись на коментарі