Рубрики
Без рубрики

Языки программирования, которые мне нравятся, и почему они мне нравятся

Будучи разработчиком-полиглотом, вы могли бы выбрать какой-то язык, который вам нравится больше других, и вот мой. С тегами java, rust, go, javascript.

Первоначально опубликовано на deepu.tech .

Быть разработчиком-полиглотом – это весело. Вы не состоите в браке с одним языком/экосистемой, и у вас есть разнообразный набор инструментов на выбор в зависимости от рассматриваемой проблемы. Но все же у вас будут избранные, основанные на вашем опыте работы с различными языками и их экосистемой.

За свою карьеру, охватывающую более 11 лет, я работал со многими языками программирования. Первый язык программирования, с которым я столкнулся, был базовым, когда я учился в школе, но я не буду считать это, так как я не обращал на это никакого внимания и не понимал его тогда.

Позже, когда я учился в колледже, у меня был обязательный курс информатики, я занимался электротехникой и электроникой, и там я впервые столкнулся с C, C++ и Java. Но опять же, это были всего лишь основы, и мне было не очень интересно, и я просто изучил достаточно, чтобы очистить бумагу.

Позже я вел блог о мотоциклах и начал увлекаться WordPress, Flash, ActionScript и JavaScript.

Первым языком программирования, который я действительно изучил с интересом, был Схема , Это был учебный язык, используемый на моей первой работе в качестве ИТ-стажера/стажера, и это меня зацепило, и через несколько месяцев я начал изучать Java и JavaScript.

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

Так что довольно большую часть своей карьеры я писал на Java и JavaScript, а затем на машинописном языке. Я работал с небольшим количеством Groovy, Python и Scala но мне не очень нравились эти языки и в тот момент у меня не было никакого интереса к изучению каких-либо новых языков.

Несколько лет назад, когда Голанг был в моде, я перешел к проекту, который был построен в Go, и поэтому начал изучать Go. Это было очень легко освоить, и мне очень понравилось работать с ним (какое-то время).

Ржавчина была совсем новой в тот момент, и я хотел попробовать ее, но нашел время для этого только год спустя, и я был влюблен в нее.

В последние два года я также иногда работал с Kotlin, PHP, Ruby и C#. Но я не был очень впечатлен Ruby и PHP.

Так что без дальнейших прощаний, это мои любимые языки программирования по порядку.

Ржавчина в настоящее время мой самый любимый язык. С этим так весело работать, и мне нравится задача переосмысления того, как вы пишете код. Вы знаете, как говорится, это вызывает радость, когда вы работаете с этим. Rust – действительно современный и мощный язык программирования.

Rust был бы моим выбором для системного программирования, встроенных, клипов, инструментов операционной системы, веб-сборки и так далее. Я думаю, что единственное место, где я не буду использовать Rust, – это серьезная разработка монолитных веб-приложений, поскольку экосистема еще не созрела для этого.

Я подробно написал о том, что мне нравится и не нравится в Rust в этом посте , но я кратко изложу это здесь для случайных скиммеров.

😍 Нравится

  • Безопасный по умолчанию : Rust безопасен для памяти, потокобезопасен, типобезопасен и безопасен для нуля
  • Абстракции с нулевой стоимостью : Пишите в любом стиле программирования, не беспокоясь о дополнительном снижении производительности
  • Потрясающий параллелизм : Отличная поддержка многопоточности, параллелизма и асинхронного программирования
  • Отличный инструмент из коробки : Грузовой, обрезной, Rustfmt и так далее. Это лучшая экосистема инструментов, с которой я сталкивался. Тестирование, сборка, загрузка, бенчмаркинг, компоновка и многое другое включены из коробки.
  • Неизменяемый по умолчанию : Вам необходимо явно объявить изменяемые операции
  • Встроенные абстракции функционального программирования : Монады, такие как итераторы, необязательные, цепочки и так далее
  • Макросы : Мощное метапрограммирование, которое можно использовать для определения пользовательских функций языка, возможности повторного использования кода и т. Д.
  • Отличное сообщество : быстрорастущее, активное и действительно поддерживающее сообщество
  • Супер быстрый, такой же быстрый, как или иногда даже быстрее, чем C/C++
  • Нет тяжелого времени выполнения : Нет сбора мусора и так далее. Существует очень небольшое время выполнения для паники и прочего, но ИМО это незначительно
  • Отличные языковые возможности : Сопоставление шаблонов, обобщения, итераторы, черты, выражения и т.Д на
  • Вручает лучший компилятор из существующих. Вы должны попробовать это, чтобы оценить по достоинству.
  • Быстро растущий и получающий широкое распространение : Ржавчина расползается по разным местам. Есть много громких имен (Google, Microsoft, Apple и т. Д.), Которые принимают его и, следовательно, укрепляют его место. Он также находит опору за пределами системного программирования, такого как встраиваемые, веб-сборки, веб-разработки, разработки игр и так далее. Как только экосистемы для различных вариантов использования созреют, я вижу большой потенциал для того, чтобы Rust стал отличным языком общего назначения без каких-либо серьезных компромиссов.
  • Собственные изображения : Создавать собственные изображения с помощью Rust так просто, никаких специальных настроек не требуется. Грузовой поддерживает сборку для вашей любимой платформы из коробки.

😩 Не любит

  • Сложность : Будучи объединением многих языков, Rust действительно кажется более сложным, чем многие другие языки. Я бы особенно предпочел, чтобы у меня не было нескольких способов сделать одно и то же.
  • Кривая обучения : Rust – не самый простой язык для изучения, особенно если вы новичок или привыкли работать только на одном языке, таком как Java, C# или Python. Но если вы полиглот и уже знакомы с несколькими языками, такими как C/C++, Java, TS и Go, вы будете чувствовать себя с Rust как дома. Существуют некоторые продвинутые концепции, такие как заимствование и продолжительность жизни, для понимания которых требуется некоторое привыкание и практика.
  • Экосистема недостаточно развита для многих вариантов использования. Я бы с удовольствием использовал Rust для разработки веб-приложений, но экосистема для этого еще очень молода, и вам будет трудно по сравнению с чем-то вроде Java или C#

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

Поэтому, если бы я начал свою собственную компанию с веб-приложением в качестве продукта, я бы на 100 % использовал JVM на бэкэнде либо с Java, либо с Kotlin, и, конечно, я создам его с помощью Хипстер .

Если вам нравится Java, трудно не любить Котлин. Похоже, что современная версия Java и создание приложений для Android с использованием Kotlin были приятным опытом. В отличие от Scala, Котлин не перегибает палку со всеми сложностями и неявными вещами.

Я мог бы выбрать Kotlin вместо Java, если создам новое веб-приложение и если у команды есть опыт работы с Kotlin.

Кроме того, Java близка моему сердцу, так как это язык программирования, с которого началась моя карьера.

Вот что мне нравится и не нравится в Java

😍 Нравится

  • Экосистема : Самая большая сила Java – это ее экосистема. Существуют отличные фреймворки и библиотеки для всего, что вы можете придумать, и большинство из этих решений чрезвычайно стабильны при большом сообществе и поддержке. На самом деле экосистема – это то, что поддерживает популярность и рост Java.
  • Опытное сообщество : У Java очень зрелое и опытное сообщество, поэтому, даже если вы новичок, есть много ресурсов, которые помогут вам
  • Отличный инструментарий : Для Java существует множество отличных инструментов. IDE, такие как IntelliJ, Eclipse, NetBeans, предлагают одни из лучших возможностей для разработчиков, а инструменты для сборки, такие как Gradle и Maven, настолько мощные и многофункциональные. Существуют также профилировщики, линтеры и так далее.
  • Встроенный абстракции функционального программирования : Монады, такие как итераторы, потоки, дополнительные функциональные интерфейсы и так далее
  • Довольно легко учиться : Java не очень сложна и, следовательно, довольно проста в освоении и начале работы даже с ее шаблоном.

😩 Не любит

  • Шаблон : Java требует слишком много шаблона. Нет хорошего способа сказать это. По сравнению с другими языками в своей лиге Java кажется слишком многословным. Лямбды сделали его более удобоваримым, но есть и другие языки JVM, такие как Kotlin или Scala, которые правильно поняли эту часть. Я действительно хочу, чтобы Java однажды появилась там, где вам не нужно писать 20 строк кода, чтобы прочитать файл.
  • Не так современно : Языковые особенности Java, скажем так, не вызывают радости, они улучшаются но если вы привыкли к нескольким другим языкам, то вам есть чего желать, и по сравнению со своими сверстниками Java кажется старой, хотя она такая же старая, как JS, Ruby или Python
  • Багаж : Java обладает отличной обратной совместимостью, но это также означает багаж. на Яве много такого багажа, и, по моему скромному мнению, это сдерживает развитие языка.
  • Виртуальная машина : JVM была отличной идеей, когда была представлена Java, поскольку переносимость в то время была непростой но в современном ИТ-ландшафте контейнеры и собственные изображения облегчили переносимость, и это делает виртуальную машину Java избыточной. JVM по-прежнему предоставляет множество ценных функций, но она также занимает ресурсы и пространство, в то время как такие языки, как Go или Rust, могут просто создавать крошечные собственные двоичные файлы, которые можно развернуть с помощью docker, чтобы повысить производительность при меньшем использовании ресурсов, чем приложение Java, работающее на JVM.

Большинство разработчиков Java ненавидят JavaScript но у меня есть отношения любви и ненависти с ним. JavaScript – один из самых причудливых языков в мире, и нравится вам это или нет, это де-факто для Интернета, и он выполняет свою работу.

Мне нравится TypeScript намного больше, чем JavaScript, и я нахожу, что с ним работать намного приятнее, чем с JS. Снимки и, соответственно, JS будут связаны с Java для второго места для меня.

TS/JS по-прежнему является моим выбором для быстрого написания сценариев и создания клиентских приложений и мобильных приложений (React Native/PWA)

Я подробно написал о том, что мне нравится и не нравится в JS в этом посте, вот краткое изложение

😍 Нравится

  • Гибкий : Динамический характер JS/TS делает его чрезвычайно гибким и мощным. Это также очень снисходительный язык. Если вы знаете, что делаете, нет буквально ничего, что вы не могли бы сделать. Конечно, гибкость имеет свою цену.
  • Сообщество : JavaScript имеет самое большое сообщество среди языков программирования. Он активный, зрелый и процветающий. Это огромная сила, поскольку она помогает как новичкам, так и экспертам в решении проблем и улучшении экосистемы в целом.
  • Экосистема : JS имеет огромную экосистему с множеством библиотек и фреймворков. Вы найдете все, что только можно себе представить в качестве библиотеки. Экосистема настолько велика, что она начала становиться проблемой с точки зрения “еще одного рамочного синдрома”.
  • Асинхронное программирование : JS обладает одной из лучших экосистем для асинхронного программирования. Так легко писать асинхронный код с обещаниями и асинхронностью/ожиданием и в наши дни это стало де-факто способом программирования в JS.
  • Отличный инструментарий : У JS отличный инструментарий, благодаря NodeJS и его экосистеме. IDE, такие как VS Code, Atom, Webstorm и т. Д., Обеспечивают отличную поддержку JS. Существует также так много замечательных инструментов, таких как Webpack, Rollup, Jest и так далее.
  • Функциональное программирование : JS является многопарадигмальной и имеет большую поддержку функционального программирования. Это отлично подходит для функционального программирования.
  • Легко выучить : JS – это простой язык для изучения и начала работы. Это один из самых удобных языков и сообществ для начинающих. Конечно, в JS есть сложные вещи, но вам не нужно это знать, чтобы начать.
  • NodeJS : NodeJS был лучшим, что могло произойти для разработки программного обеспечения. Это не только произвело революцию в мире JS, но и вдохновило другие языки принять к сведению и быть более удобными для разработчиков и создавать простые в использовании инструменты и экосистемы. Вы можете увидеть это вдохновение в Rust, Golang и так далее.
  • Машинописный текст : TS – еще одно лучшее, что случилось с JS. Это дает ответ на множество проблем JS, которые беспокоят людей, и позволяет использовать JS более удобным для разработчиков способом в огромной кодовой базе.

😩 Не любит

  • Фрагментация : Это самая большая проблема с JS. Есть стандарты и есть поставщики, и это идеальный рецепт катастрофы. Большую часть времени разработчик JS тратит на то, чтобы заставить его работать в разных браузерах и платформах. Кончина IE сделала это лучше но эй, я слышал, что Safari – это следующий IE, так что это так.
  • Подверженный ошибкам : Это побочный эффект чрезмерной гибкости. Код JS чрезвычайно подвержен ошибкам и неуправляем в огромных кодовых базах. Машинопись делает это намного лучше, но, тем не менее, с помощью JS так легко стрелять в собственную ногу.
  • Перегрузка фреймворка : Слишком много фреймворков для одного и того же, слишком много библиотек для одного и того же и библиотек для выполнения чрезвычайно тривиальных вещей, таких как заполнение слева:( Конкуренция – это хорошо но IMO то, что у нас есть в экосистеме JS, – это просто слишком много. Это приводит к умственному истощению и ненужной фрагментации в сообществе.
  • Чрезмерная инженерия в экосистеме : Я занимаюсь JS уже более 11 лет и я замечаю явную тенденцию к чрезмерной инженерии в экосистеме. Посмотрите, например, на инструментарий сборки JS, он был переработан до такой степени, что настройка сама по себе кажется проектом.

Go – самый простой язык, с которым я работал, и его легче всего выучить. Мне нравится Golang за то, что он быстро что-то собирает, и код Go довольно легко читается.

Но я бы выбрал Rust вместо go для большой кодовой базы, так как Go через некоторое время становится раздражающим из-за его ограниченных возможностей, особенно на больших кодовых базах. IMO go по-прежнему идеально подходит для создания небольших системных утилит и микросервисов.

Я подробно написал о том, что мне нравится и не нравится в Go in этот пост , вот краткое изложение

😍 Нравится

  • Простота : Перейти чрезвычайно просто. Технически вы могли бы выучить его за день или два. В Go легко начать и быть продуктивным. Это также легко читать и отлаживать, так как есть только один способ сделать что-либо, чтобы вы знали, что происходит, не спрашивая человека, написавшего код. Это также самый простой язык для начинающих.
  • Встроенный инструментарий и руководство по стилю : Go предоставляет встроенный инструментарий для всех основных вещей, таких как управление зависимостями, тестирование, сборка и так далее. Он также имеет самоуверенный форматер, который экономит много времени.
  • Гороутины : Гороутины потрясающие. Он настолько прост в использовании, интуитивно понятен и обеспечивает лучший опыт параллелизма, который вы можете найти.
  • Собственные изображения : С помощью Go так легко создавать собственные образы, никаких специальных настроек не требуется. Он поддерживает создание для вашей любимой платформы из коробки.

😩 Не любит

  • Простота : Простота Go действительно приятна, когда вы начинаете, но она начинает раздражать, как только вы начинаете писать больше кода Go. Если вы пришли с другого языка, вы скоро начнете тосковать по таким функциям, как универсальные шаблоны, обработка ошибок, значения по умолчанию и так далее. Сохранение кода СУХИМ является проблемой в Go из-за отсутствия дженериков. IMO Go был бы отличным языком, если бы в нем были дженерики. Кроме того, я боюсь писать если ошибаюсь в Go.
  • Шаблон : Побочный эффект того, что Go слишком прост. В больших кодовых базах вы бы повторяли такие вещи, как поиск элемента из массива или карты так много раз, что через некоторое время шаблонный шаблон будет просто слишком большим.
  • Неявные интерфейсы : Может, это всего лишь я. Мне не нравятся неявные реализации интерфейса. Это просто кажется мне неправильным и сбивающим с толку.

Это мои личные фавориты среди языков программирования, и это не значит, что симпатии и антипатии будут относиться к кому угодно. делайте свои собственные выводы, но используйте язык, прежде чем выносить суждение об этом.

В современном ИТ-ландшафте быть разработчиком-полиглотом становится обязательным требованием. И лично я считаю, что, будучи полиглотом, вы становитесь лучшим программистом и инженером-программистом. Я ранее писал о как быть эффективным разработчиком-полиглотом , обязательно проверьте это, если вам интересно.

Если вам понравилась эта статья, пожалуйста, оставьте лайк или комментарий.

Вы можете следовать за мной дальше Twitter и LinkedIn .

Фото автора Питер Херрманн вкл Отклеить

Оригинал: “https://dev.to/deepu105/the-programming-languages-i-like-and-why-i-like-them-385o”