Выбрать нужный, правильный язык программирования из десятков их - дело нелегкое, особенно, поначалу.
И от этого выбора зависит очень многое. Сделав неправильный - Вы можете сильно разочароваться и вообще все бросить к чертовой бабушке.
Но я не буду Вам тут "загонять" стандартными "штампами", а разложу как есть, сермяжную правду человека "изнутри".
Итак, по БелАЗам - и погнали!
Содержание
- Популярные мифы про выбор языка программирования
- Выбираем направление
- Web
- Desktop
- Enterprise
- Mobile
- Научное направление
- Встроенные системы ("железо")
- Геймдев
- Другое
- Подведем итоги
Популярные мифы про выбор языка программирования
Давайте начнем с так называемых мифов - тех утверждениях (и убеждениях), о которых "трубят" на каждом углу в Интернете. И я сразу буду их опровергать.
"PHP - отстой и умер, учите Python".
Так вот, это вранье из вранья. Пайтон (учитесь сразу говорить правильно, он "пайтон", а не "питон", "путон", "путхон" или "пистон") - хороший язык, не спорю, но для новичка поставить на сервере через консоль интерпретатор Python, окружение, потом все это сконфигурить и завязать на nginx, и чтобы все работало с первого раза - задача непосильная.
А вот PHP есть практически на 99% веб-серверов.
И второе - PHP хороший язык программирования, если держать себя в руках и писать код дисциплинированно, не "сря" им, а стараясь делать качественно и аккуратно. Поэтому проблема "плохого кода" на PHP - это проблема "прокладки" между компьютером и стулом, а не проблема самого языка программирования.
"Начинать учить нужно только с C++, выбор другого языка программирования - слабость и глупость".
Это тоже миф, и миф очень вредный. Сам язык C++ - неплох, но очень сложен. И уж точно его не следует выбирать как первый язык.
И, конечно, если Вы идете в Web-направление, то Вам там "плюсы" (С++) не понадобится (если Вы не будете разрабатывать с нуля сами веб-сервера, а вы их не будете разрабатывать, если просто хотите клепать сайты).
Просто у некоторых программистов очень завышенное ЧСВ (среди нас, программеров, действительно много таких, кто гордится тем, что знает, например, АСМ или плюсы, и смотрит на других как на говно, такой классический задрот, которого чмырили в школе, а он учился, учился, устроился программером на зарплату в 100к рублей и теперь смотрит на других как на го*но, вымещая свои детские комплексы на окружающих, кто хоть немного слабее его в плане интеллекта, это неправильно). Не ведитесь на такое, начинайте с других языков, а то С++ Вам всю охоту стать программистом отобьет, с гарантией.
"Сначала выучи весь язык программирования, а потом уже создавай что-то".
И это тоже миф, мол, нужно сначала книжку в голову запихнуть, а потом только "спуститься на землю" и что-то кодить практическое.
Поверьте, кодинг - это чистое прикладное ремесло. Ремесло. А программист - это ремесленник. Искусства тут - ноль. А для разработки новых подходов, паттернов и архитектур есть специальные люди - системные архитекторы. Вот эти умные ребята - они и занимаются всякими сложными штуками. А Вы, как будущий программист, будете заниматься, по сути, ремеслом.
Просто примите это, снимите "розовые очки", Вы не будете заниматься архисложными штуками, как в фильмах показывают, нет. Вы будете преобразовывать техзадания в код. Все, ничего больше. И это вполне нормальная работа за которую платят хорошие деньги.
Если не повезет - будете копаться в легаси-коде (т.е. старом готовом коде, что требует поддержки), который написал Моисей Иванович в 1994 году на Фортране для компании, а сам уехал на историческую Родину. И вот этот код, с 1994 года, что до сих пор работает, Вам придется поддерживать, чтобы бухгалтерия заводоуправления работала как 25 лет назад. Или что-то подобное, какое-нибудь доисторическое го*но, что пыхтит, пердит, но работает, а Вы - при нем техником, "починяете" его, чтобы все было нормально. Но это не самая лучшая работа, лучше идти в продуктовые компании или крупные, вроде Яндекс.ру, Сбер, САП и т.д. Там хоть будет развитие, там Вы не зарастете паутиной и пылью, и будете востребованы на рынке труда.
Ладно, что-то я грустную картинку нарисовал, давайте дальше и более конкретней.
Выбираем направление
Вам нужно определиться с тем, куда Вы хотите направить свои стопы. То бишь, в какой сфере работать.
Их очень много (десятки), но пока Вы зеленый новичок - стоит выбрать какую-то одну и двигаться в ее направлении, осваивая стек технологий этой сферы.
Ниже я перечислю самые крупные и популярные направления, и разберу их особенности. Но, как Вы сами понимаете, сделать это детально в рамках одной статьи - невозможно, поэтому просто "пробежимся по верхушкам", ладно?
Какое-то базовое представление у Вас все равно появится, а дальше - Гугл и читать-читать-читать. Появятся вопросы - пишите в комментариях к этой статье, что знаю - подскажу, помогу. Ну и другие читатели тоже подключатся. Всем миром, как говорится, и батьку легче бить )) (это я сейчас не про Белоруссию, кто не понял, просто пословица такая есть)
Web
Все движется в Веб, постепенно и неизменно. И все придет к тому, что будет у каждого по смартфону 8G с Интернетом в гигабиты в секунду. Тогда отпадает весь смысл хранить что-то на самом устройстве, все можно сделать по клиент-серверной технологии.
Это удобно тем, что для обновлений и модификаций достаточно лишь обновить в одном месте - на сервере, а у клиентов, что подключаются к серверу (сайту, серваку, неважно) будет новая версия (централизация рулит!).
Короче, Веб - направление очень мощное, перспективное и оно Топ-1 из всех. Если выбираете и стоите на распутье - идите в Веб, не пожалеете, гарантирую!
Выбор языка программирования для веб-программиста - я рекомендую PHP либо JavaScript. Python тоже можно (как и Руби), но работы где-то, кроме Москвы и Питера Вы не найдете как начинающий Junior Developer, если это не PHP или JS. Все эти Руби, Питоны и Эрланги нужны только в крупных мегаполисах, да и то, не во всех. А в городке на 100к жителей (к - тысяча, 100к - 100 тысяч, это сленг, привыкайте, не пугайтесь )), там только "пыха" (PHP) или "жс" (JavaScript), плюс-минус.
Короче, не делайте себе мозг - берите один из этих двух языков и не смотрите на вопли всяких "гуру" в Сети, с этим выбором у Вас всегда будет и работа, и хлеб с маслом.
Desktop
Это те самые "классические" программы (сейчас уже называют - приложения). Помните, как мы их раньше устанавливали с CD-дисков, ждали, пока софт (от software - программное обеспечение) установится, пока диск пожужжит, а потом запускали то, что установили. Да, были времена... ))
А сейчас - скачиваем из онлайна, "сидюков"-то, наверное, и не осталось уже ни у кого. У меня на ноуте - так точно нет даже привода для оптических дисков, анахронизмъ, понимаете-с ))
Это направление хорошее, но слегка "стагнирует". Но все равно работы - куча. Но, на 99% - это "классическая" работа в офисе.
Рекомендую, если не нравится Веб, в десктоп-направлении - куча возможностей.
Из языков программирования - выбор не очень большой - либо .Net (а это - от Visual Basic до F# ), либо "свободное ПО" - то бишь, Java и ее вселенная (здравствуй, Spring, Hibernate и бессонные ночи по выявлению того, почему собранный из различных технологий "Франкенштейн" не хочет работать нормально). Шутка. Но не совсем ))
Короче, тут выбирайте C# или Java, не ошибетесь.
Enterprise
Это направление - "золотая жила". Тут крутятся просто "бешенные бабки". Ну, оно и понятно, корпоративный мир с миллиардами денег. И Вы, как высококвалифицированный (читайте - незаменимый) специалист, можете очень хорошо зарабатывать здесь.
Тут выбора практически нет - это Java.
Иногда еще - C++. Но лучше - берите Джаву. Сначала Core, а потом и все остальное доучите, включая J2EE.
Mobile
Тут остались только 2 враждующих лагеря - это Android и iOS.
Хотите пойти в Андроид-разработку - учите Kotlin (это будущее, забывайте уже про Java4Android).
Хотите в разработку мобильных приложений под айфон и айпад - учите Swift.
Больше выбора, как такового, тут и нет.
Ну, можете пойти еще окружным путем и учить C++, чтобы создавать приложения для Андроид, либо учить какой-то скриптовый язык, вроде Пайтона, чтобы компилить через специальные фреймворки довольно монструозные (и тяжелые по весу (в смысле, размеру конечного apk-файла)) прилки, что будут работать на Андроиде. Но оно Вам нужно? Вряд ли. Учите сразу Котлин и не создавайте себе дополнительные трудности.
Научное направление
А вот тут для любителей Пайтона самая малина. Если хотите уйти в такие направления, как:
- Big Data,
- распознавание образов,
- нейросети,
- Data Science,
- блокчейн и т.д.,
то Вам стоит крепко взяться за Python.
Есть и альтернативный язык программирования для "чистых научников" - это R.
Почитайте об обоих, выберите. Рекомендую именно Python, под него есть куча всего, начиная от мануалов и кейсов внедрения до готовых высококлассных библиотек, фреймворков и прочего.
Встроенные системы ("железо")
Это направление для тех, кому нравится возиться с железом. Я имею в виду не "качалку" с штангами, гантелями и гирями, а компьютерное железо - микропроцессоры, радиодетали (резисторы, транзисторы, конденсаторы и т.д.). Хотите построить роботов, которые захватят мир? - Вам сюда, в это направление ))
Область интересная, но дюже сложная. Нужно быть не просто чистым программером, работая с абстрактными вещами, а настоящим, реальным инженером.
Поверьте, это сложно, нужно знать и уметь кучу всего - от пайки и разводки схем до сложных языков программирования. Это действительно сложно, во много раз труднее, чем штамповать сайтики на Битриксе или ВордПресс.
Но если нравится - почему бы и нет? Ваш выбор.
Тут лучше начинать с Ассемблера (любого), либо, что лучше - чистого Си (pure C, ANSI C), затем "шлифануть" "плюсами" (C++), это будет полезно.
Если 8-битные архитектуры - не Ваш выбор, а только мощные микроконтроллеры и SoC (System on Chip - система-на-чипе, т.е. и проц, и память, и еще куча всего в одном куске кремния с ножками) - то можно сразу обратить внимание на Java.
Да, Джава - это не только Андроид и Энтерпрайз, а еще и миллионы микроволновок и холодильников по всему миру. Очень многие устройства с микропроцессорами работают благодаря существованию Джавы, это факт.
Геймдев
Gamedev - т.е. игрострой. Короче, создание игр.
Если еще "не испорчены" ничем - выбирайте Unity3D с C#, либо движок Unreal с C++.
Т.е. - либо учите C# (си диез, си шарп, си решетка, как только его не называют), либо "плюсы" для работы с "анриалом" (в Unreal есть и более простая технология Blueprint, но лучше ведь уметь создать что-то сложнее, чем казуалочки, так что, хотите или нет, но "кресты" (C++) подучить придется, коли выбрали этот игровой движок).
Другое
Тут я Вам уже не советчик и вряд ли помогу. Но могу поискать инфу, если интересно. Пишите в комменты, может чего и посоветую.
Подведем итоги
Статья получилась очень раздутая, простите. Я не люблю гундеть не по делу и растекаться мыслью по древу, но уменьшить не получилось, и так много чего осталось "за кадром".
В общем, если что-то интересно - спрашивайте ниже, постараюсь ответить побыстрее, но я не двуликий Янус, у меня тоже работа, дела, а этот бложик - так, для души. Либо другие читатели ответят.
Вообще, среди айтишников взаимоподдержка - это почти правило, а не исключение. Пишите, сообщество поможет.
Давайте кратко, в двух словах - что стоит учить: PHP (Web), JS (Web), Kotlin (Android), Swift (iOS), C# (Unity3D и Desktop на Windows), Java (железки, Enterprise, Desktop на любых платформах (Win, *NIX, Solaris и т.д.)). Наука - тут Python, практически без выбора. Железки - царство Си (кто хочет достичь дзена - C++).
Удачи!