Найти тему

Какой язык программирования выбрать? +личный опыт

Очередная статья на тему выбора ЯП(язык программирования).
ВАЖНО, я не профессиональный разработчик с десятками лет опыта, не так давно передо мной самим становился этот вопрос я лишь поделюсь своим мнением. Сначала разберем немного популярные языки, после расскажу что выбрал сам и доволен ли выбором.

Итак, во-первых вы, вероятнее всего, если станете разработчиком - не будете пользоваться чем-то одним. ЯП - это лишь инструмент и чем больше их в ассортименте у вас, тем лучше.(относительно, забивать голову не нужными тоже не стоит)
Так вот, мы будем говорить о том какой ЯП лучше выбрать для начала.

Здесь я просто поочередно приведу языки(это не топ, поочередность) опишу коротко их плюсы и для чего используются.

1. Python - в крачайшие сроки писать кроссплотформенный код для десктопов.
Ну и как обычно начнем с языка название которого нам кричат из каждого утюга - Python, названия язык получил не в честь животного. Когда создатель давал ему название он смотрел комедийную передачу Монти Пайтона, отсюда и название(всё, что я запомнил из книги про пайтон). И для чего же нам нужен пайтон, я не стану козырять крутыми терминами из вики если коротко:

  • Динамическая типизация Пайтон сам назчает необходимый тип переменной. Удобно при разработке
  • В случае необходимости пайтон сам изменяет тип переменной. Удобно при разработке(в этом есть и минусы).
  • Ооочень простой синтаксис.
  • Обилие встроенных функций
  • Очень много готовых библиотек и фреймворков. Язык простой, сообщество огромное. Почти на любой вопрос можно найти ответ на тостере или стековерфлоу
  • Есть фреймворк(Django) и для веб разработки. Поэтому зная пайтон вы можете очень быстро написать качественное веб-приложение.
  • Много вакансий, большая конкуренция. Но как и везде - специалисты без куска хлеба не останутся.
-2

2. JS. Веб-разработка.
Один из самых популярных языков в мире(скорее всего самый). Огроменное сообщество, тонны библиотек. Его активно развивают такие гиганты как facebook, google. Ни один сайт сейчас не работает без js. На любой вопрос есть решения на любом языке.

  • Динамическая типизация(то же, что и у пайтона)
  • Есть расширения языка(Typescript), который в случае необходимости, позволяет строго типизировать данные.
  • На JS можно написать что угодно. Фронтент, Бэкенд(nodejs) и даже десктоп(electron).
  • Простой синтаксис, воистинну безграничные возможности. Хотите писать в ооп стиле - пишите. А может функциональный - без проблем.
  • Хорошая документация библиотек. Частично переведен реакт. У вью js есть русскоязычная документация. Да, это хороший аргумент ибо сейчас везде пишут на фреймворках.
  • Немнго про electron. Это библиотека для JS, которая позволяет вам создавать кроссплатформенные приложения на пк. На ней сделана:visual studio code, avocode. На оф. сайте больше инфы.
  • NODEJS. Консольные приложения, серверные приложения, абсолютно любой каприз. В пакетном менеджере множество готовых библиотек. Можно очень быстро развернуть качественное приложения, написав минимум кода. Вообще про ноду надо рассказывать отдельно, ибо это слишком всеобъемлющий инструмент, чтобы описать его в паре предложений.
-3

3. PHP. Веб-разработка.
Не очень уважаемый язык в окружение программистов, но я не эксперт поэтому просто процитирую(кого-то там): "Если у вас сломался стол, вы можете купить инстрмент, закончить столярские курсы(nodejs) и починить стол. Но если у вас вечерника и вам нужно починить стол за пару часов вы покупаете скотч(php) и чините стол."
ЯП вполне рабочий, первая версия фейсбука была написана на нём.
Огромное сообщество

  • Простота
  • Высокая скорость разработки(быстрее чем на nodejs)
  • Есть некоторые косяки, но в реальной разработке вы скорее всего их не встретите.
  • Конечно не так много фреймворков как на JS, но парочка достойных будет(например yii)
-4

4. Java.
Здесь я мало что могу сказать, но оставить его без внимание не хочется. Только ООП разработка, без классов и пакетов здесь ничего не живет. Соотвественно лучше бы понимать, сущность классов методов(есть разница между методом и функцией). Здесь придется знакомится с конструкторами и деструкторами, абстракциями. Это конечно может быть и JS или пайтон, но в JAVA - это неотъемлемая часть языка. И хотите вы этого или нет знать это надо.

  • Только строгая типизация. Сложнее, но больше контроля памяти.
  • Кроссплатформенность. Т. к. код javы выполняется на виртуальной машине java вам не нужно думать об переносимости(в отличии от C)
  • Нужно знать "что под капотом". Хоть в java есть автоматический сборщик мусора, надо знать как он работает и "намекать" ему, когда стоит очистить память.
  • Сторогость языка может быть и плюсом, если в js глаза разбегаются от изобилия стилей кодинга, то здесь всё более однозначно и декларативно.
  • Это отец ооп, поэтому "из коробки" идут 1000-чи библиотек, функциональности которых хватит для любых задач.

5. С/C++ софт для пк.
Бесспорно вечная классика.
Начнем с того что на С можно сделать все, абсолютно. Как говорится на джаве можно написать все, что душе угодно, а на С можно написать джаву. Считается одним из самых сложных высокоуровненных языков. Много описывать о обоих языках я не стану, если вы решили идти по хардкору и начинать с них - вы обязаны уметь искать информацию.

  • Кроссплатформенность. Ой-ой, это вам не джава или пайтон. Здесь нет закулисной магии, надо вгрызаться в реализации разных компиляторов, пробовать потом снова пробовать, гореть. Да есть проекты, которые забирают на себя эту работу, но в этих проеках тоже нужно разбираться. Что я хочу сказать? В си нельзя поставить где-то галочку или написать пару строчек для решения проблемы, здесь нужно действительно разбираться во всем.
  • Конечно это и плюс. Вы получаете огромный контроль над системой, вы сами управляете памятью(но это значит, что вы должны ее вовремя очищать), вы можете делать ассемблерные вставки и напрямую управлять регистрами процессора, напрямую обращаться к системным вызовам. Большая сила - большая отвественность.
  • Язык сложный, но нужно понимать что если вы действительно сможете хорошо изучить его все языки вам будут по силам. Конечно же, что бы его изучить требуется много работать и на это нужно время, если вы хотите быстро залететь в IT сферу - это явно не ваш вариант. Поэтому подумайте несколько раз перед началом его изучения, если уверены - дерзайте.
  • Это очень быстрый язык, на нем пишут операционки и игровые движки(обычные приложения на С писать невыгодно), а для этого надо знать еще больше. Исходя из этого работу вы так просто не найдете.

Совсем пара слов про С++, к плюсам применены почти все пункты си, появился раньше c# поэтому многие крупные игровые студии привыкли к нему. Хороший выбор для геймдева есть крупный игровой движок(unreal engine), который значительно упростит разработку игр.

-5

Ну и сам C# тоже не оставим без внимания.
По заявлениям майкрософт C# - это джава из который выбросили все лишнее. В целом он очень похож на джаву, куда легче своих предков в виде си и плюсов, нет таких проблем с кроссплотформенности как у предков. Хороший вариант для геймдева на движке Unity(достаточно низкий порог входа).

Теперь коротко про мой опыт.
Итак, впервые заинтересовался я программирование достаточно давно и так же быстро сдался - посчитал что это сложно и я вообще дебил. Не зная чем заниматься, примерно полгода назад я понял что в этом году я получаю бесполезный диплом о среднем образование и я беспонятия что мне делать дальше. вышка? если идти на вышку вопрос денег становится еще более сложным, из родителей одна мать и оплачивать даже учебу у нас нет возможности, поэтому даже если я пойду работать и учиться одновременно вряд-ли мне хватит денег на жизнь и оплату учебы. так вышло что всю свою студенческую жизнь я проводил не с большой пользой. Да как обычно в этом возрасте я задавался вопросами денег пробовал себя в трейдинге(хи), вел телеграмм каналы и тд. все это приносило прибыль хоть и не большую. но ни к чему серьезному я так и не пришел. Я знал немного Пайтон, базовый синтаксис по прошлому опыту и меня знакомый попросил написать простенький скрипт(парсер) опустим этот процесс - результат я его сделал по большей части копипастом. Ну и у меня банально загорелись глаза, получил мотивацию которая так же быстро сошла на нет. В течени короткого времени я повторил все что знал и начал изучать новое написал несколько простых ботов на aiogram, после понял что каждый второй это умеет и это ничего мне не дает. Продолжил изучение selenium, bs4, lxml для парсинга - все еще не хватает практики поскольку не особо нравится заниматься подобным. Заработал несколько тысяч(5) на фриланс биржах, но очевидно что это далеко не кнопка бабло учитывая что зарубежные биржи не работают для россиян. Для себя я решил что хочу заняться чем-то более серьезным чем боты и парсинг сайтов веб-разработка меня никогда особо не привлекала и я подумываю о изучение С++. Но проблема в том что мне 19, если не сейчас то осенью меня забирают в армию ну и мне банально нужно деньги что бы жить. Мне кажется самый правильный способ в этой ситуации - догнать пайтон до вменяемого уровня что бы смог зарабатывать деньги на существование и получать какой-то коммерческий опыт, после начать учить то что мне интересно. Проблема в моей самодисциплине очень сложно учить то что тебе не интересно поэтому рассматриваю вариант пойти каким-нибудь консультантом что бы было на что жить, а в свободное время учить плюсы. С радостью васлушал бы ваше мнение, если сюда кто-то дочитал.


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