Для кого эта статья?

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

Ко мне периодически обращаются юноши, которые горят желанием программировать, но теряются. Действительно, есть много такого, что хочется создать своими руками. Много разного. Чаще всего молодёжь хочет написать крутейшую игру, которая будет работать на слаааабенькой видеокарте :) Мне приходится их разочаровывать. Дело в том, оптимизация программы не менее сложная работа, чем её написание. целые команды профессионалов работают над этим. И наивно полагать,сто один разработчик,который только начал изучать азы программирования окажется более эффективным в этой задаче. Задача "крутая игра на слабом железе" возникает от невозможности позволить себе дорогую видеокарту. Обычно такую задачу ставят себе старшеклассники, либо студенты начальных курсов институтов.

Один из моих студентов со временем понял, что заниматься WEB программированием (не путать с вёрсткой) намного интереснее. А крутую видеокарту можно купить на нормальную зарплату программиста, без особого ущемления других своих потребностей.

Платформы

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

Основных направлений не так уж много:

  • Windows

  • Linux

  • MacOs

  • WEB-приложения

  • Мобильные приложения (Android, iOS)

  • Виртуальная и дополненная реальность AR/VR

  • Мультимедиа (Фото, видео и звук)

  • Встроенные системы и IoT(типа, Arduino, STM32, AVR, ESP и т.п.)

Наверняка есть ещё направления. Более экзотические. Или комбинации из перечисленных. Например, дополненная реальность в мобильных приложениях...

Выбирайте, с какими устройствами Вы хотите работать и переходим к следующему шагу.

Инструменты и технологии

Для каждой платформы есть свои инструменты разработки и отладки.
Конечно же, все эти инструменты перечислять бессмысленно. С этим списком ничего невозможно сделать.Вам нужно выбрать инструмент по какому-то критерию. Лучше всего - по популярности. Дело в том, что в разработке всегда, возникают неожиданности. В лучшем случае, это Ваши ошибки, в худшем - ошибки самих инструментов и целевых платформ. Обычно, программист получает сообщение об ошибке. Затем гуглит это сообщение, чтобы решить проблему. Чем популярнее инструмент - тем больше вероятность, что решение будет найдено.

Со временем Вы поймёте, что инструмент выбирается под конкретную задачу. Когда Вы только начинаете изучение - Вам лучше всего выбрать именно популярный инструмент. Он стал популярным не случайно. Например, в WEB программировании самый популярный инструмент это Node.js с его кучей готовых компонентов и библиотек. По сути, готовых решений.

Лёгкий старт

Для того, чтобы новичку придать начальное ускорение в каждом развитом технологическом решении (платформа + инструмент) есть примеры готовых приложений, которые можно просто собрать и запустить на выполнение. Посмотреть как оно работает. Поизучать какие изменение в тексте программы как влияет на исполнение приложения. Есть так же образцы кода, которые можно скопировать в своё приложение. На жаргоне программистов это называется "скопипастить" от слов Copy + Paste Правда, они могут не всегда работать :)

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

Так что, если у Вас с программированием серьёзные отношения придётся изучить ещё и git. Именно git - по причине самой высокой популярности. На первых порах достаточно знать и понимать не больше десятка команд, так что на пугайтесь. Тем более, что для git существуют разные графические интерфейсы, с помощью которых можно работать с историей изменений более наглядно. Многие компании исторически используют другие системы управления версиями. имея опыт с git для Вас не составит большого труда изучить и другую систему.

Живое сотрудничество

Итак, Вы определились с целевой платформой, задачей и технологией. Что дальше. Пришла пора практических шагов. Установка необходимого ПО. Тех самых инструментов. Как правило, на первых порах выбирают интегрированную среду разработки IDE, где редактор, отладчик, компилятор ( или интерпретатор ) находятся "в одном флаконе". Процесс разработки максимально упрощён. Но даже при этом упрощении на обойтись без инструкций, как этим пользоваться В самом комфортном варианте - это видеоинструкции. Обычно на youtube этих инструкций много и нужно подобрать ту, которая для Вас наиболее доходчива. И всё равно, готовьтесь к тому, что какие-то вопросы нужно будет задать живым людям. Либо в форумах, либо авторам видеоуроков, либо, просто, знакомым, которые в теме. Кстати.достаточно эффективный ресурс qna.habr.com Здесь вероятность найти компетентного человека очень высока. Сам пробовал. Правда, бывают такие вопросы, на которые может ответить только автор технологии. С этим вопросом мне пришлось обращаться в STM И несколько недель ждать ответа.

Тайные смыслы

Наконец-то первое приложение из примера собрано, запущено, протестировано. Однако, хочется, чтобы программа была своя и имела именно тот функционал, который хочется Вам, а не тот, который заложил автор примера. Вот тут придётся попотеть. Дело в том, что язык программирования - это ЯЗЫК. он предполагает некоторый набор смысловых конструкций. Если Вы программист - Вам нужно вникать в самые разные смыслы. Смысл переменных, объектов, функций, библиотек, ключевых слов, директив, примитивов, запросов. Вам нужно вникать в смысл того, что вы сейчас используете. Где это находится, как это работает? Я бы сказал, что работа - исследовательская. Контрольный вопрос: "Вы готовы заниматься исследовательской работой?"

Почему так сложно? Потому, что современное программирование давно и далеко ушло от своих истоков. Наработано огромное количество технологий, библиотек, компонетов и прочего кода, который хочется использовать повторно. На жаргоне это называется Reuse (реюз) Встают практические задачи совместно использовать один компонент с другим, одновременно использовать разные компоненты, в одном приложении или системе использовать различные технологии одновременно. Такая задача называется интеграцией. Сборкой чего-то целого из частей. И программисты часто сталкиваются с проблемой совместимости этих самых частей. возникают ошибки, конфликты сборки и исполнения, различия систем понятий. Чтобы разрешить проблемы нужно глубоко вникать в детали и подробности. Глубже и глубже. Делать предположения, проверять их. Затем тестировать. В общем, это целый мир. "Зазеркалье"

Хотите туда? Интересно? Тогда дерзайте.

Эта статья не претендует на введение в специальность.
Она была написана постольку, поскольку вопросы задаются и я на них отвечаю.

Комментарии (15)


  1. sshikov
    11.08.2021 17:02
    +3

    Основных направлений не так уж много:

    Ну да, ну да. А где большие данные и машинное обучение? Куда они пропали? А где, извините, просто игры, под каким названием они тут скрываются? А кровавый энтерпрайз где, я вас спрашиваю? Вы туда не хотите? А ведь там как раз деньги платят, стабильно и порой довольно много.


    1. Arashi5
      11.08.2021 17:21

      Судя по тому как написана статья, не исключаю, что автор как раз практиковал ml/bd.


    1. yslav Автор
      11.08.2021 18:21
      -1

      Кстати да, "кровавый ентерпрайз" не владею. Подскажите куда посмотреть.


      1. sshikov
        11.08.2021 18:32
        +1

        В каком смысле тут владеть? Обычно под кровавым энтерпрайзом понимаются большие системы, типа банковских, или там биллинга у операторов сотовых. Пишут их как правило с применением СУБД (это вообще отдельная область программирования, которую вы тоже не упомянули), на языках типа Java или C#. Хотя нынче и на питоне пишут тоже, и на Javascript.

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


  1. third112
    11.08.2021 17:24
    +2

    И ни слова про алгоритмы, а это ИМХО самое важное! Технологии это молотки, которые просто перебирать и выбирать.


    1. yslav Автор
      11.08.2021 18:22

      Да, точно. Спасибо за напоминание. Добавлю в эту статью, или в следующую. Более продвинутую.


  1. Ivnika
    11.08.2021 17:25
    +2

    Почему-то кажется что начинающий прогер прочтя статью спросит - так что же мне делать, с чего начать?! :)

    Автор, без обид, но получилось как-то очень поверхностно


  1. PrinceKorwin
    11.08.2021 17:26
    +2

    Нормальная статья для тех кому до 12 лет и они интересуются программированием.

    Но как же много здесь неточностей и недоговоренностей. Вы человеку не помогаете, а отбиваете желание :)

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

    Например начать писать/изменять существующие моды к маинкрафт.

    Да и вообще просто поднять свой сервер - это уже пол дела!


    1. yslav Автор
      11.08.2021 18:26

      Уточнения, дополнения, идеи - приму с удовольствием. Пишите.
      Про быстрый старт - полностью согласен. В следующую статью впишу.


      1. third112
        11.08.2021 23:46

        Один из ЯП для быстрого старта — это ЯП Лого, но черепашья графика сильно ограничена, и ученик быстро упирается в потолок. Быстрый старт обеспечивала IDE Dr Pascal. Там было много возможностей. Про Delphi-7 хорошие отзывы.


  1. Evg
    11.08.2021 17:37

    Для web (не приложений), лучше начать с html, css и js. И Bootstrap стороной обходить. Вот есть у нас попытка 1 класс проскочить. Это только потом боком выходит. ИМХО. )


  1. x0rff
    11.08.2021 18:26
    +1

    Мда....


  1. anonymous
    00.00.0000 00:00


  1. h0rn3t
    11.08.2021 23:02
    +1

    Основных направлений не так уж много: Windows, Linux, MacOs

    Простите но это ОС, а не направления, многие работают со всеми тремя, а то и более...


  1. diakin
    12.08.2021 07:25

    Если на десктопе, то для создания "настоящего" приложения с формами, кнопками, разноцветными линиями удобно использовать Дельфи. Или даже RapidQ Basic - он сильно упрощен по сравнению с Дельфи, легче разбираться начинающему. А там много во что вникать можно - свойства, методы, события. Обработчики событий, функции.. в общем все простые элементы программирования.
    Можно в web идти, сайтик для начала разработать на чистом html в нотепаде, причем для начала самые простые варианты оформления - <font color=red> <b> и тому подобное. Можно играться со всем этим и тут же видеть наглядный результат. А потом выложить на хостинг и получить настоящий сайт сделанный своими руками. )