Всем привет. Это вторая часть обзора языков программирования , первую можете прочитать тут.
Nodejs / JS
Nodejs это не язык программирования конечно, а программная платформа, а язык Javascript, язык довольно интересный и его уровень сложности я бы оценил между Python и Java по моему субъективному мнения. В чем отличие и что дает Nodejs если сравнивать с обычным JS - впринципе дает возможность взаимодействовать с устройствами ввода и вывода через API написанные на C++, подключать различные библиотеки написанные на разных языках программирования. В основном платформа Nodejs используется для разработки серверной(Backend) части, хотя его можно использовать и для написания нативных или даже мобильных приложении, тогда как чистый JS используется как фронтенд разработка Web проектов.
Javascript - это уникальный язык с уникальной историей, его "создатель" Brendan Eich написал первоначальную его реализацию за 10 дней(из-за чего много лет люди потом страдали от него :D), современный Javascript мало чем похож на JS 200X годов, сейчас JS это уникальный и достаточно лаконичный язык разработки чего только угодно, сложность его достаточно низкая как и писал выше, платформа Nodejs умеет работать с большими нагрузками, абсолютно лаконичный стандарт Ecma, хотя часть людей называют Ecmascript однако ecmascript это обозначения языка программирования не имеющие возможности работать с устройствами ввода-вывода используемый в качестве основы для построения других скриптовых языков в которые входить JS.
Из его преимуществ стоит отметить большие нагрузки, огромное количество коммьюнити, использовать один язык и под фронтенд и под бэкенд и мобильное приложение и игры и десктоп, конечно последние 3 отрасли это с болью по тормозам и жратвы памяти будет, однако "можно ведь" :D
Плох JS и сама платформа Nodejs это огромным количеством мертвых пакетов, фреймворков и т.д., т.е. вы разрабатывает какой либо долгосрочный проект, в надежде на его развитиев дальнейшем но разработчики пакетов клали на то что вы хотите и в любой момент могут забить на то что вы используете и в дальнейшем у вас будет несколько выбора, либо переписать часть кода и использовать другой пакет/фреймворк либо самому все с нуля писать дабы не от кого не зависит, так что мега популярность языка это и хорошо и плохо одновременно. Так же язык не предназначен для многопоточной разработки, да там она поддерживается но по ресурсам она бьет не мало в отличии от других языков плюс данная возможность молодая и с ней часто возникают проблемы, язык в любом случае перспективен, хорош и как все остальные со своими болячками.
Мое мнение, если хотите высокопроизводительный язык и не хотите изучать 2 языка под бэкенд и фронтенд то Nodejs отличный выбор и в случае с Web разработкой вы не прогадаете, работы под нее огромное количество если считать в совокупи с фронтендом, даже на фриланс бирже если не найдете Nodejs то в любом случае найдете заказы на Фронтенд, убиваете 2 зайцев.
C++
C++ великий и могучий язык, самый производительный(помимо Assembler, Pure C и в дальнейшем не сравниваю с ними) самый контролируемы, позволяет отстрелит себе все от мизинца до указательного пальца в руке в котором держите пистолет :D
Разработан данный язык Бьерном Страуструпом, который делал абстракцию над языком "C" и позже решил сделать его отдельным языком программирования, назвав его Объектно-ориентированным языком, хоть язык и близко не является объектным о чем заявлял сам Алан Кей(создатель данной методологии), С++ разработан под влиянием языка Симула которая является Акторным языком, а не объектным, в С++ слишком много примитивов и не все функции подходят под определения высших функции в данном языке.
В целом язык как и писал выше очень производительный но и его сложность очень высока, да основы как и в любом языке можно изучить за неделю - 2 недели в зависимости как много времени тратить, однако в работе над проектом данный язык требует очень тщательного подхода к разработке, в этом языке статическая типизация, управления памятью в ручную, т.е. вам самим нужно уничтожать "объекты" прописывая и вызывая деструкторы(может в новых версиях сие языка что-то изменилось), язык хорош для всех спектров разработки, на нем создаются библиотеки для Backend разработчиков, на нем пишут сервисы, пишутся игры и различные приложения под разные платформы(от ПК до умных устройств) в умелых руках язык не потребляет много ресурсов, однако любая ошибка может привести к большим проблемам и этот язык требует большого вклада временных ресурсов для его изучения и так же необходимы знания работы ОС и процессора и ОЗУ чтобы вы могли понимать как можно оптимизировать свои проекты.
Так же стоит учесть что только недавно появилась возможность использования модулей и пакетного менеджера, без углубления скажу так, что у всех предыдущих языков есть так называемый пакетный менеджер который позволяет быстро установит пакет/библиотеку(например Angular, react, jquery, django, flask и т.д.) и использовать их сразу, в С++ нужно было ручками подключать через так называемые заголовочные файлы(.h), а перед этим необходимо было скачать эту библиотеку/исходники в проект, прописать его сборку в Makefile и только потом можно использовать сторонние библиотеки, сейчас язык идет на упрощение и это прекрасно, для тех кто мечтает работать в Game студиях или разрабатывать самому игры этот язык крайне рекомендую, ну либо C# для таких целей с Unity.
Golang
Довольно молодой язык программирования, создан внутри корпорации "зла" Google с целью сделать простой язык с строгой и статической типизацией, чтобы в нем не было лишней абстракции и был очень прост.
Стоит так-же учесть что язык компилируемый но так-же умеет работать в реальном времени как например Python / Nodejs и др. эта гибридность и хороша и создает проблемы, то что у вас работает в реальном времени необязательно будет работать после компиляции, это стоит учесть, у данного языка разные ограничения на 2 этих типа запуска.
В целом Google это удалось, язык взлетел по популярности, хоть изначально было у них в планах "убить" С++ но из-за решения добавить "сборщик мусора" для автоматической очистки памяти им это не удалось, в итоге язык заполнил нишу Web разработки высоконагруженных сервисов, ведь главное преимущество этого языка это Горутины которые позволяют создавать огромное количество "потоков" и обрабатывать большую нагрузку на сервисы, язык очень перспективный, по сложности он чуть выше чем Python.
Помимо Web этот язык полюбили даже администраторы серверов для замены языка Python, чем это обусловлено мне лично не понятно, скорее всего дело в хайпе просто, а не в удобстве.
Но и этот молодой и перспективный язык не лишен недостатков, а их у него не мало, начнем с того что язык хоть и "Хайповый" но под него очень мало годных библиотек которые бы поддерживались более 1 года, так-же у языка очень скудная стандартная библиотека которая не покрывает ежедневные потребности крупных компании, многие вещи приходится самому писать и тратить время на рутину, так-же в языке практически полностью отсутствует абстракция и дело не в "классах и объектах" их тут кстате нету, это не объектный язык, но в нем так же нету и динамической типизации помимо интерфейс, вроде как в этом месяце выходит поддержка Дженериков в языке что позволить избежать дублей кода которые сопровождались всегда, по поводу этапов разработки и более подробные анализы языков программирования я опишу потом по настроения, поэтому пока скажу так, язык сейчас конкретно хорош и его можно выбрать как первый язык программирования если вы желаете заниматься преимущественно Web разработкой или разработкой библиотек для других языков.
Rust
Ржавый или крабик, кто и как только его не назвал, это не "игра", а именно язык программирования от компании создателей Firefox, вышел он примерно в одно время с языком Golang но в отличии от Golang данный язык направленно шел на конкуренцию с Си и С++, Rust низкоуровневый язык, управления памятью у него происходить иначе чем в С++, тут вам не нужно вручную что либо очищать, очистка памяти происходить по принципу "Владения и заимствования", подробно описывать не буду т.к. не знаю как простым языком описать, скажу лишь что язык в данном аспекте проще чем С++, но так же Rust более груб чем С++ и это заключается в том что у данного языка есть правила которыми нельзя пренебречь иначе будете получать ошибки компиляции, язык сильно бьет по рукам и не позволить вам отстрелить себе ногу.
В целом его преимущества схожи с преимуществами С++ за исключением того что его база библиотек и фреймворков ниже, но язык может использовать С++ библиотеки так что нивелировать этот недостаток можно хоть и не особо безопасно.
Что я думаю по данному языку, мне он нравится, его синтаксис, его лаконичность, он не объектный язык программирования, в нем нет классов но в нем много абстракции и классы после него смотрятся громоздкими и не нужными. Подойдет ли он как первый язык? Нет, точно нет, вы работу просто не найдете, но как язык для саморазвития или хобби вполне.
Ruby
Язык созданный Мацумото родом из Японии, в свое время был на хайпе однако в последние годы популярность на территории России или даже на территории всей СНГ мала, не понятно по какой причине, этот язык единственный кроме Smalltalk который ближе всех остальных находится к принципу "чистого объектно-ориентированного программирования", в нем все есть объект и все можно изменить и мутировать, язык прост как Python и в большинстве очень схож, хотя и отстает от трендов как Java и стабилен так-же как Java, в последнее время его активно развивают и вроде собирались внедрить или уже внедрили асинхронное программирование, советовать ли его? Можно вприципе как язык для души, он по непонятнее причине гораздо приятнее чем Python да и если планируете работать с зарубежными компаниями то там язык еще очень популярен. Больше мне о нем нечего сказать вприципе. :D
#программирование #golang #nodejs #rust #c++