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

    Дисклеймер: данный текст не рекомендован к прочтению детям до 13 лет (для них нужно устанавливать отдельную политику конфиденциальности), сеньорам, мидлам, людям со слабой психикой, любителям VBA и языка АЛГОЛ, а также беременным женщинам. Все изложенное является личным мнением неадекватного автора и не изложено здесь с целью посеять рознь среди адептов статической и динамической типизации. Поехали: new Thread().start()



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

    Я прошел долгий путь от сперматозоида до программиста от подростка, любящего паскаль и windows 3.11, до человека, не любящего ничего, кроме роллов и терминала. Поэтому сейчас я вам всё объясню и даже, возможно, покажу несколько картинок. Поехали.

    Так какой же язык программирования выбрать?


    Глупость всех подобных вопросов состоит в том, что нельзя стать условным сферическим программистом в вакууме. Программист сейчас — это не дискретный математик прошлого, для которого ПО и аппаратная часть вторичны. В большинстве случаев сейчас программист — ремесленник, который работает в рамках действующего «окна» технологий. Причем это «окно» движущегося вагона, за которым вы бежите. Технологии постоянно меняются, и мы вынуждены как Алиса Кэррола бежать, чтобы оставаться на месте. Взять хотя бы мой любимый Google, не успеешь одно Android API понять, а уже там половина фич deprecated, еще и гайки закручивают…
    Кхм, да-да, статья вроде для новичков, что ж, давайте разберемся. Для начала все же придется определить, чем именно вы хотите заниматься? Область, ну хотя бы приблизительно?

    Ничего не понимаете вообще?


    Начните изучать алгоритмические конструкции. Ветвления, циклы, структуры данных, блоксхемы. Очень помогает перенос (перенос, а не копипаст из википедии!) алгоритмов и блоксхем на реальный язык программирования.

    Какой же язык выбрать для начала, если хотите заложить фундамент?


    В принципе, любой. Так как вам надо просто научиться писать простейшие программы, понять что такое переменные, операторы, исследовать классические алгоритмы, типа поиска максимума, сортировки, бинарный поиск и т. п. Далее принимайтесь за ООП и структуры данных, ведь вас на собеседовании-таки спросят, чем вектор от списка отличается!

    Но что делать, если язык вам нужен для прикладных задач?
    Да и не хотите вы становиться программистом. Может, вы ученый, которому надо парсить текстовые файлы с цепочками ДНК, или инвестор с идеей написать торгового робота. Тут я бы посоветовал Python, да простят меня адепты других языков. Python — язык с головокружительными возможностями и при этом низким порогом входа. Новичкам даже поначалу кажется, что это какой-то легкий, «учебный» язык (пока не начинаешь их тыкать в корутины и функционалку).

    Хорошо, скажете вы, но куда двигаться дальше? Не питоном же единым…? Конечно нет. А куда вас тянет? Веб? Десктоп? Скрипты? Системный уровень? Мобилка? Вы уж, дорогой, определитесь, универсальных решений не бывает!

    Нравится сайтостроение? Ну, давайте я как попугай тут напишу: html, javascript и иже с ними (еще там тихонечко притаились python с django и кое-кто еще)

    Хотите суровые вебсервисы? PHP, node.js, ruby, Java и тот же Python.

    Хотите быть поближе к железу и операционным системам? Возьмитесь за С/С++ (только не отстрелите себе ногу и не порежьтесь, хотя куда там — все в гипсе ходили). Кстати, я бы советовал всем программистам хотя бы разобраться с основами С/С++ и базовыми классами из STL, знаете ли, помогает потом другими глазами смотреть на GC. Если железка упадет вам на голову — учите ассемблер.

    Хотите скриптовать, парсить, майнить, работать с большими данными, строить модели, писать ботов, администрировать ОС и многое другое? Берите уже озвученный Python3+. Если больше работы с данными — можно еще R взять.

    Мечтаете написать десктопное приложение? Тут на чем угодно! Хоть Delphi берите! Шутка, конечно. Тут надо смотреть, под какую систему писать, и нужна ли кроссплатформенность. Например, код на Python или Java будет переносим. C/C++ придется собирать отдельно под каждую платформу.

    Хотите познать java core? Значит вы уже знаете, зачем вам джава. Не знаете? Как бы вам объяснить сейчас, зачем вам она. Вот вы видели воздух? А тем не менее без него не прожить.:)

    Есть конечно модные штуки, Kotlin, например. Классная вещь, этот язык убил моего давнего друга по прозвищу NPE, ну как убил — ранил! Я вот только так и не понял, как его нормально изучать людям, не знающим java? Нет, «Hello world» на нем пишется легко и без джавы, а вот дальше — не знаю.

    Может вы игры вздумали писать? Есть много готовых конструкторов, тот же Unity3D, а также двумерные движки, обычно, сразу под кучу платформ. Там уже сами смотрите: C#, Java и т. п. И все это сверху полируется знанием различных протоколов передачи данных, операционных систем, фреймворков, шифрования и криптографии, авторизации и аутентификации, XML, JSON, технологий работы с базами данных, защиты приложений, систем контроля версий и много-много другого.

    Сейчас открою самый большой секрет как стать программистом: программируй! Хоть что! Пиши программы, даже когда это никому не нужно. Пиши потому, что это надо тебе, а не кому-то. Упирайся постоянно в некомпетентность, заполняй эти пробелы и снова упирайся в новые. И так пока хватит памяти во всех возможных кешах твоей головы.

    Как еще можно ответить на вопрос: «Какой язык учить?». Очевидно тот, на котором собираетесь разговаривать.

    С уважением, Эдвард Кох,
    преподаватель международной школы IT и кибербезопасности HackerU
    HackerU
    Международная высшая школа IT и безопасности

    Комментарии 13

      +3
      Я вот пошел на сайт из информации — hackerupro.ru, а там Малышева советует как от геморроя лечиться. Вы бы это, сайт проверили…

        0
        Я вот пошел на сайт из информации — hackerupro.ru

        Это в профиле ссылка была? Сейчас уже нет :) Но по ссылке все еще лечат геморрой, кому надо — торопитесь :)
          0
          Блок информации прямо на этой странице. Как-то оно… сапожник, которому сапоги порвали…
            0
            Точно, спасибо!
        –1
        Судя по минусам статейка задела множество неокрепших чувств)
        Программист — это состояние души, ну, или, на крайний случай, образ мысли, никогда не понимал, как на него можно выучиться.
        А вот с последним заключением не согласен: «пиши и станешь программистом» не работает — редкого, когда удавалось объяснить людям зачем нужна эта или та нелепая неказистая программка — потому, что это интересно, потому, что лично мне это нужно, потому, что просто могу это сделать. Когда задают вопрос «как стать программистом» — встаю в тупик. Как объяснить человеку, что надо просто писать? Самое простое объяснение: программист — тот, кто готов потратить такое же время на написание кода, что уйдет на ручную обработку тех же данных, чтобы в конце сделать эту работу в один клик.
        Программист — это писатель. Есть интересные, а есть не очень.
        На сайт не заходил, не интересно.
          +5
          Судя по минусам статейка задела множество неокрепших чувств)

          От статейки разит некомпетентностью, обсуждать которую означает втягиваться в холивар, поэтому просто молча минусуют.
            –1
            М-да, что-то упустил этот момент.
            –2
            Как-то про тему статьи забыл) Язык значения не имеет. Язык — совокупность необходимостей — времени, задачи, возможностей и т.д. Тут все зависит от умения, либо писать на том языке, какой нужен, либо втиснуть задачу в тот язык, какой нужен.
            Первый язык в жизни тоже значения не имеет, главное, это приобрести способность накладывать алгоритмы действий на код. И чтобы не было стыдно отвечать на вопрос «с чего вы начинали» :D
            +1

            Мой совет новичку: чтобы узнать, что изучать, нужно не подобные статейки читать, а найти специалиста в области, которой заинтересовался, и расспросить его, что да как. Ещё лучше взять у него несколько уроков. Если специалиста найти не удалось, то пойти в онлайн-магазин книжек и приобрести пару книг по теме для ознакомления с интересующей темой.

              0

              Статья из ряда "вот ссылка, отстань" )) А вообще понравилось, раскидал по фактам. Не хочу показаться грубым, но тот же Go отличный инструмент для терминальных утилит и сервер-сайд, плюс Гугл скоро (2021) релизнит фуксию и будем все писать горутины (движок на нём написан с нуля).
              Должен заметить тему с флутером и его перспективой. Сам по себе язык дарт мне показался довольно удобным для старта, опять же гугловская тема, тесная работа с фуксией (юзают его на фронте), кроссплатформенные приложухи

                0

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

                  –1
                  Пытался учить Python — вроде не сложно, базовые программы пишет (это во вне рабочее время, т.к. специализация в иной отрасли).
                  Но как только задумаешься о чём-то конкретном — пусть хоть написать какой-нибудь блок к действующей программе — всё — вилы!!! А уж о сопряжении с каким-нибудь другим кодом- это другой мир…
                  Имеются ли такие занятия для новичков, и чтоб не за очень дорого, чтобы практика была на конкретных задачах, а не по учебнику и написанию кода в среде разработки???
                    0
                    По факту язык — это только инструмент. Но вообще есть разница в оплате разработчикам на PHP или на Java, например.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое