Почему не существует лучшего языка программирования? Отвечает программист с 17-летним опытом!
Путешествуя по просторам интернета, часто можно наткнуться на публикации вроде "Самый перспективный язык программирования 2023 года", "Рейтинг языков программирования", "Схватка между C# и C++", и так далее. Неудивительно, что даже на нашем блоге появились несколько подобных статей - вот, например, здесь или здесь. Все эти заголовки звучат увлекательно, но на самом деле могут ввести начинающего разработчика в заблуждение. Что же делать? Кому довериться и как не запутаться?! Давайте разберемся в этом вопросе!
Сегодня мы прибегнем к использованию мощного оружия - эпической мортиры разрушения идеализации, чтобы нанести удар по застаревшим догмам. Сегодня мы проведем сравнение двух популярных языков программирования, которые долгое время удерживают лидирующие позиции в рейтингах. Из результатов сравнения мы сможем определить, какой из них лучше всего подходит для новичка в программировании (подсказка - ни один из них).

Как правило, начало карьеры программиста связано с выбором языка программирования. Молодой специалист стремится понять, с чего ему начать свой путь в этой профессии, и в поисках ответа натыкается на различные рекомендации. Он увлеченно изучает информацию о лучших и востребованных языках программирования, пытаясь выбрать тот, который больше всего соответствует его ожиданиям. Некоторым удача улыбается, и им удается найти язык, который сочетает в себе их интересы и высокую оплату труда. В то время как другие, потратив много времени и усилий, понимают, что выбранный язык не подходит их потребностям.
И вот казалось бы, такая обыденная и избитая тема! Однако почему-то постоянно возникают комментарии и записи о том, как еще один программист разочаровался в определенном языке программирования... Давайте попробуем разобраться, почему это происходит? И как же, в конечном итоге, сделать правильный выбор - такой выбор, который был бы эффективным и прибыльным с точки зрения личного развития на долгосрочной перспективе?
А что вообще значит лучший? 🏆
Из моего опыта, часто люди под "лучшим" подразумевают три типа идеализации: (1) наиболее популярный и обсуждаемый в СМИ, (2) самый высокооплачиваемый, или (3) самый востребованный язык. В целом, понятно, что начинающий специалист обычно ориентируется на один из этих критериев при выборе. Однако стоит задуматься - насколько эти критерии соответствуют действительности? Насколько они помогают принять правильное решение, а не мешают ему?
Давайте начнем с того, что большинство языков программирования разрабатывается для конкретных задач или отраслей (но это не всегда так! Ведь существуют удивительные эзотерические языки программирования, такие как Brainfuck, или даже более странные, например Petooh. Такие языки обычно создаются либо для исследовательских целей, либо для развлечения. Да, мы, программисты, такие люди...). Продолжим разговор о том, что в мире программирования существует цикличность, которая тесно связана с общемировыми трендами. И закончим тем, что все меняется очень быстро - настолько быстро, что пока вы будете углубляться в изучение "лучшего языка", он может стать абсолютно ненужным в течение следующих 5-7 лет.
Вернемся к основам - а именно, к тому, как различные языки программирования ориентированы на конкретные задачи. Рассмотрим, какой язык программирования является наиболее четким, лучшим и эффективным в контексте решения конкретной задачи. Каким должен быть идеальный герой, чтобы победить дракона? Каким должно быть идеальное колесо, чтобы автомобиль мог двигаться? Проведем сравнение именно в определенном контексте. В противном случае, мы будем сравнивать несравнимое - теплое с мягким, круглое с кубическим, телевизор с шваброй. Почему? Давайте рассмотрим на примере.Давайте рассмотрим два наиболее востребованных языка программирования на сегодняшний день - JavaScript и Python, согласно данным StackOverflow. Далее мы попытаемся провести их сравнение.
Зачем придумали 🐍 Python и 🟠 JS?
Брендан Эйх создал язык программирования JavaScript в 1995 году как часть веб-браузера Netscape Navigator 2.0, потратив на это всего 10 дней. Не так ли, Илон Маск? Этот язык, который был разработан всего за 10 дней, сегодня используется на 90% всех интернет-сайтов в мире. Интересно, что это произошло за 5 лет до выпуска Windows XP. JavaScript применяется в веб-программировании.

В общем, язык программирования JS был разработан специалистом, который работал на американскую компанию, специализирующуюся на создании веб-браузеров. Другими словами, основа этого языка - коммерческие цели. JS был создан в Соединенных Штатах, его автор также является американцем. Если вас интересует личный сайт автора, вы можете найти его здесь.
Python programming language was created by Guido Van Rossum in 1989 (before JS), while working at the "National Research Institute for Mathematics and Computer Science" in the Netherlands. The language's author initially positioned it as a successor to the ABC language, which was more convenient for working with the Amoeba operating system. Python was introduced to the public as a "general-purpose" language, suitable for solving "various tasks".

В общей сложности. Язык был разработан ученым-программистом, который трудится в научно-исследовательском учреждении, примерно за полгода. Другими словами, основа языка - научные исследования. Создатель языка - человек из Дании, его родина - Нидерланды. Ссылка на персональный веб-сайт автора - здесь.
Python vs JS. Производительность 🚀
Python - это интерпретируемый язык программирования. На операционной системе Windows, например, его необходимо устанавливать отдельно, как обычное .exe приложение. Программы, написанные на Python, представляют собой отдельные исполняемые файлы, которые часто имеют графический интерфейс.
JavaScript выполняется исключительно внутри браузера как часть веб-страницы. Если глубже копнуть, то JS работает в виртуальной среде. Из этого следует разница в производительности этих языков. В целом, Python будет немного быстрее, если не учитывать Node JS и другие "приблуды" поверх JS.
Для новичка разница в скорости выполнения этих языков программирования может показаться незначительной. Простой пример "hello world" будет работать быстро как в одном, так и в другом языке - практически мгновенно. Однако сравнивать производительность языков при выполнении сложных задач не совсем корректно. Некоторые задачи невозможно решить с помощью JavaScript, в то время как другие задачи могут быть неактуальны для Python.Например, создание сложной нейросети на JavaScript может быть вызовом, а иногда и невозможной задачей. В то же время, Python нельзя легко интегрировать в веб-сайт для выполнения интерактивных задач, таких как модальные окна, географические карты и другие подобные функции.
Python vs JS. Легкость изучения 👨💻
В настоящее время Python стал одним из основных языков обучения в области информационных технологий. Фактически, он вытеснил Pascal как основной язык для начального обучения программированию. Множество онлайн-курсов предлагают Python в качестве первого шага. Крупные российские университеты также переходят с Pascal на Python в своих программах. Python отличается простым и понятным синтаксисом, динамической типизацией и хорошей объектно-ориентированной моделью. Это делает его универсальным и легким для освоения новичком.
В отличие от Pascal, Python активно применяется в коммерческой разработке. Интересный факт: изначально "научный" язык перешел в сферу бизнеса. Это означает, что после освоения языка на достаточно высоком уровне можно сразу приступить к работе. Вакансии для разработчиков на Pascal (или в мире Delphi) сейчас практически не встречаются. На платформе hh.ru, на момент написания данной статьи, представлено всего 355 вакансий для разработчиков Delphi, в то время как вакансий для Python около 11 794. Разница огромная.

Когда речь идет о JavaScript, он в целом не слишком сложен для изучения. Язык позволяет многое. Первую программу можно написать без установки чего-либо. Просто откройте консоль разработчика в браузере и вперед! Можно творить. В то же время, у JavaScript есть свои особенности, которые могут запутать новичка.
Одним из ключевых моментов является JS (в его чистом виде без дополнительных инструментов, таких как TypeScript, CoffeeScript и других). Он тесно связан с браузером, что существенно ограничивает его область применения. Кроме того, для работы с ним необходимо хотя бы базовое понимание HTML и CSS. Хотя, конечно, можно обойтись и без них, но JS в первую очередь предназначен для работы с веб-страницами. В отличие от Python, написание, например, консольной утилиты для работы с файлами на JS будет затруднительным. У JS очень ограниченный доступ к файловой системе (можно сказать, что его вообще нет).
В общем, оба языка представляют собой отличный выбор для начала. Однако JS склоняет разработчика к веб-разработке (или к Node JS. Но это уже другая история). В то время как Python более универсален - можно создать сервер, нейронную сеть или консольное приложение.
Python vs JS. Стек разработки + библиотеки 📖
В настоящее время практически для всех языков программирования разработаны различные дополнения и инструменты. Они значительно увеличивают функциональность языка. Я считаю, что стоит также проанализировать, какие возможности предлагают нам два этих языка в виде внешних расширений.
Python - универсальный язык программирования, который обладает базовой гибкостью и поддерживается огромным количеством сторонних инструментов. С его помощью можно разрабатывать как веб-приложения, так и нейронные сети. Django, веб-фреймворк для Python, облегчает создание полноценных веб-приложений с использованием MVC и других удобных функций. Кроме того, Django активно поддерживается сообществом - последний коммит был сделан всего 7 часов назад.
Существует множество фреймворков для работы с нейронными сетями под Python, каждый из которых предлагает свои особенности и возможности. Например, популярный tensorflow от Google, о котором знают многие. Кроме того, существуют инструменты для создания привычных приложений для рабочего стола. В общем, выбор средств разработки здесь действительно обширен.
А что насчет JavaScript? В этом вопросе, пожалуй, наилучшим способом будет показать вот этот рисунок:

Да, на данный момент существует огромное количество фреймворков и инструментов для работы с JavaScript. И каждый день появляются новые. Это может быть как плюсом, так и минусом. Безусловно, такое разнообразие предоставляет огромный выбор отличных инструментов, которые значительно упрощают процесс разработки. Однако для новичка может быть непросто разобраться в этом многообразии.
Кроме того, если начать изучать сегодня популярный фреймворк, то завтра можно оказаться вне его круга. Уже вышла версия фреймворка 9999, а старая версия 10.1 (которую вы только что изучали) уже устарела. Теперь необходимо быстро освоить новые возможности внутри знакомой библиотеки (ведь в программировании важно постоянно обучаться).
Кроме того, помимо фреймворков, в JavaScript существуют инструменты, которые радикально изменяют весь язык. Например, такие языки как CoffeeScript или TypeScript. Оба они значительно расширяют возможности JavaScript, что позволяет считать их отдельными языками. И, конечно, существует NodeJS, который можно считать отдельным языком программирования и платформой, отделяющей JavaScript от браузера. С его помощью можно создавать консольные приложения для работы с файлами и многое другое.
Python vs JS. Итоги ⚖️
Итак, что же в общем? Что предпочтительнее? Какой из этих языков подойдет для новичка? Я скажу, что оба подходят. В то же время, ни один из них не подходит. Оба языка одновременно хороши и плохи. Нет лучшего выбора. Почему так? Все просто - у них абсолютно разные цели.
Python - это универсальный язык программирования, который подходит для решения различных задач на различных платформах. В отличие от Python, JavaScript узкоспециализирован и преимущественно используется для разработки веб-приложений и работы в браузере. Хотя JavaScript также может работать в браузере (за исключением NodeJS, который представляет собой отдельную сущность). Сравнивать эти два языка можно бесконечно, и это будет справедливо. Однако, это похоже на сравнение электрической отвертки с молотком - возможно, но они предназначены для разных целей.
По моему мнению, основная идея всей статьи заключается в том, что не существует идеальных или плохих языков программирования. Есть языки, которые лучше всего подходят для определенных задач, философий и людей. При выборе языка программирования необходимо ориентироваться не на его популярность или эффективность, а на соответствие конкретным потребностям проекта и личным представлениям о будущей работе в данной области.

Я считаю, что новичку следует выбирать технологию исходя из своих будущих планов. Например, если вы хотите заниматься фронтенд-разработкой, то лучше всего начать с изучения JavaScript. А если ваши планы связаны с нейросетями и data science, то Python будет идеальным выбором.
Разумеется, можно выражать свои мысли и идеи на различных платформах, но в сфере информационных технологий существуют определенные стандарты и инструменты, которые широко используются. Их появление не случайно. И, конечно же, не каждый новичок в IT сразу может определиться с выбором конкретной специализации. Это вполне естественно.
Не стоит застревать на одном языке программирования только потому, что он популярен и все вокруг утверждают, что лучше всего писать на C++, C#, PHP, Python и т.д. На самом деле, важно не забывать о базовых принципах - протоколах, типах данных, внутреннем устройстве и т.д. (в данном контексте я не упоминаю это просто потому, что сейчас говорим именно о языках программирования). Каждый человек в IT начинает свой путь по-своему, и у каждого он будет уникальным.
Анти-паттерн "Золотой молоток" 🔨
Необходимо также обратить внимание на ошибки в выборе языков программирования, платформ и других инструментов. Один из наиболее распространенных анти-паттернов - "Золотой молоток" или Golden hammer.
Золотой молоток - это подход к проектированию, при котором одно и то же решение или технология применяются повсюду. В данном случае не технология выбирается под задачу, а задача адаптируется под конкретную технологию.

Речь идет о симптомах. Предположим, разработчик-идеолог, стоящий за концепцией "Золотой молоток", сталкивается с проблемой при решении задачи или с новой для него проблемой. Вместо того чтобы попробовать новый набор технологий или другое (наиболее подходящее в данный момент) решение, он пытается приспособить или изменить задачу под хорошо знакомый и отличный (по его мнению) подход. При этом, хотя мы говорим больше о технологиях и наборе инструментов, совсем не обязательно, что именно они могут стать этим "золотым молотком". Это может быть даже просто какой-то понравившийся алгоритм, который человек теперь стремится использовать везде.
Такой подход явно неэффективен, поскольку даже самое кажущееся универсальное решение не всегда подходит. Каждая задача уникальна в своем роде, и для каждой из них можно найти оптимальное решение. Программисты занимаются именно этим - они получают задачу на входе и предлагают наиболее эффективное решение на выходе. Однако важно найти баланс, чтобы не изобретать велосипед постоянно. Иногда проверенный подход может быть применим к разным ситуациям. Но как говорится, во всем нужно знать меру.
Почему люди верят в золотой молоток? 🤔
У каждой сложности обычно есть корни. Ведь не просто так возник такой негативный образец, и почему-то многие продолжают его применять. Причин здесь может быть несколько:
В целом, можно заметить, что все здесь связано между собой. Однако, основной момент заключается в том, что даже опытный разработчик может столкнуться с подобной ситуацией. Ведь, когда человек работает с одним инструментом долгое время, ему может показаться, что нет необходимости изучать что-то новое.
Программирование - это путь 💻
Для начинающих программистов важно помнить несколько ключевых моментов. Не стоит застревать в одном языке программирования и не бросать обучение на полпути. Опытные программисты часто начинают представлять, как будет выглядеть их код на других языках программирования или с использованием других инструментов. Не обязательно знать все языки и технологии (ведь это практически невозможно), достаточно выбрать несколько "любимых" и сосредоточиться на них. Обычно это и есть их стек технологий:
В процессе обучения становится ясно, что каждому человеку ближе определенная область. Важно развиваться в этом направлении. Можно стать экспертом по JS или заняться разработкой низкоуровневых драйверов на C++ или даже ассемблере. В IT существует множество возможностей, но не получится освоить все сразу. Мы все являемся частями слаженной и эффективно работающей системы, и каждый находит свое место в этой индустрии.Разрушение идеализации - итоги 🏰
Если вы дочитали эту статью до конца, то вот краткое изложение основных идей и выводов, которые можно сделать на основе представленной информации.
1. Нет такого идеального языка программирования - у каждого свои достоинства и недостатки. Избегайте тех, кто утверждает обратное. Откажитесь от идеализирующих авторов, удаляйте завышенные ссылки, избавляйтесь от рекламных брошюр и всего этого.
2. Вместо того чтобы тратить время на поиск "Золотого Грааля", лучше сосредоточиться на решении конкретных задач. Оценивайте свой успех по полученному опыту или заработанным деньгам. Предпочтительнее - деньги.
3. При изучении рейтингов "самых-самых" языков - обрати внимание на детали. Неудивительно, что в лидерах уже находятся тысячи людей, и ты можешь стать следующим. Посмотри на следующие позиции в списке и строй планы заранее.
4. Оценивай каждую технологию с учетом своих возможностей. Подумай, насколько определенный язык программирования, технология или область знаний подходят именно тебе. Продвигайся в своем собственном ритме. Не стремись быть похожим на кого-то другого - оставайся самим собой. Ведь если ты будешь жить жизнью другого человека, то кто будет жить твоей жизнью?
5. [Экстра-спойлер] Сфера информационных технологий находится в периоде подъема. Возможно, она столкнется с тем же постепенным забвением и усреднением заработных плат, что произошло с банковским делом, юриспруденцией и многими другими отраслями. Успей поймать момент, если ты достаточно смел и настойчив.

🔥 Нравится? Подпишись! Вместе мы одержим победу над восстанием машин! 🔥

🚀 P.S. Для тех, кто хочет не просто читать о программировании, а начать свой путь джедая прямо сейчас, приглашаю на Boosty! Там представлен уникальный обучающий контент по программированию для всех уровней подготовки. Кроме того, вы сможете увидеть автора лично. Нажмите здесь и отправляйтесь в путь!🚀
У меня также имеется Telegram-канал, где публикуются более простые и веселые посты. Ссылка на канал доступна в моем профиле.Дополнительный бонус и немного юмора! Знакомьтесь с языком программирования "Petooh" 🐓 - поделитесь этой ссылкой с тем, кто его оценит.
Необходимо провести переформулировку данного текста и сделать его уникальным.
Автором данного материала является Андрей Сорокин, который является со-автором блога. Редакцией занимался Виталий П.
Comments