ЧТО ТЫ ТАКОЕ?



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

Боюсь, всему виной сложившиеся стереотипы.

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

Второй "тип программиста" - это люди величины Павла Дурова или Марка Цукерберга, в нашем представлении люди обеспеченные, разъезжающие на дорогих авто и в целом ведущие беспечный образ жизни.

Но как и обычно истина где-то посередине.

Появление стереотипов лишь следствие неправильного понимания Пути Программиста, неверный взгляд на финал, на вершину, на то, к чему можно прийти в той или иной форме. Не все, кто сидит за компами денно и нощно, являются программистами. Также и те, кто владеет дорогими авто и может позволить беспечный образ жизни, - могут не иметь понятия о программировании от слова "совсем". Так что делает из программиста Программиста?

Знания. Опыт. Умение реализовать существующий или разработанный самостоятельно алгоритм на языке программирования.


РАЗБИ­РАЕМСЯ


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

Программирование - это запись алгоритма на языке программирования.

Зрим в корень: программирование - это запись не команд, не символов, не выражений, а именно алгоритма. Самым важным в программировании является алгоритмизация, если вы не представляете что это такое, то и программирование вам будет так себе. (Стоп! Без паники! В этом учебнике всё рассмотрено, вы научитесь!)

Теперь резко уйдём от темы на реальные практические примеры.


АБ­СТРАК­ЦИЯ №1


В поисковой системе по запросу "как создать приложение для android" вы получите кучу ссылок, некоторые из них действительно будут достойными, описывающими весь процесс с нуля. Потратив на чтение, установку необходимых программ и практику недельку, вы создадите простое приложение, в котором будет несколько кнопок и поля ввода значений. И всё это даже будет работать, и даже без ошибок.

На самом деле расположить элементы управления в окне программы на Android несложно. Пишите себе команды, пейте чай и запускайте программу время от времени, чтобы полюбоваться результатом и вздохнуть: "Ох, я у мамки программист".

Сложность начнётся на следующем этапе, когда вы себя спросите: "И что дальше?" А ничего. Всё. Конец истории. Вы не сможете сделать и шага вперёд, если не владеете алгоритмизацией, то есть не представляете, как и по каким правилам компьютер обрабатывает данные.


АБ­СТРАК­ЦИЯ №2


Мы с вами нашли на просторах интернета инструкцию, позволяющую вставить карту от Google в приложение на Android. Прекрасно! И здесь вновь возникает вопрос: ну и что дальше? А давайте-ка мы сделаем собственный навигатор? Круче, чем гугловский и яндексовский вместе взятые.

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

Если бы вы знали алгоритмизацию, то знали бы алгоритм поиска кратчайшего пути между двумя точками. Реализуется на основе теории графов с использованием списков. Зная этот алгоритм, вы бы сформулировали задачу: нужно получить координаты двух конкретных точек, между которыми нужно проложить маршрут.

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



АБ­СТРАК­ЦИЯ №3


Ok, boomer, скажете вы. Давай что-нибудь полегче. Хорошо. "Морской бой". Помните, многие играли на уроках? На бумажке. Где рисуются два поля 10х10 клеток и устанавливаются "кораблики", а противник называет координаты и "ранит" или "убивает" ваши плавсредства?

За неделю вы "нагуглите", как нарисовать координатную сетку и отрисовать в ней кораблики. Но что дальше?

А дальше вам нужно будет правильно организовать хранение данных, например, в двумерных списках, и наладить алгоритм обработки этих данных. Тут никакие поисковики не помогут, тут придётся думать своей головой и опираться на собственный разум. Впрочем, вы можете найти и скачать код готового "морского боя", но вы не сможете без понимания алгоритмизации разобраться в нём.

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


СПРА­ВОЧ­НИ­КИ


Как говорится, "мухи отдельно, котлеты отдельно". Посмотрим на существующие учебные материалы по программированию. Я их делю на "справочники" и "системные знания". Справочники сообщают нам о предназначении той или иной команды. Говорят о результатах работы. Например, вот программа, которая вычисляет сумму двух чисел:

a = 10 b = 20 s = a + b print(s)

В нашем примере результатом будет 30. Легко? Едем дальше. Держите программу, которая вводит строку:

a = input("Введите строку: ")

Спасибо, кэп!

Следующая программа выведет символ "П" из слова "Привет!" на экран. Символ считается "нулевым" (в квадратных скобках указан ноль), так как в Python такое правило:

s = "Привет!" print(s[0])

А теперь внимание! Вы только что познакомились с инструментами, из которых на 75% состоит программа Steam Guard. Та самая, которая просит вас ввести символы, когда вы заходите в Steam с другого компьютера. Да-да, у вас на руках возможность написания проверки пользователя по коду, почти как это сделали в стиме.

Ещё 15% в Steam Guard - это работа с датой и временем, легко гуглится по поиску "как получить дату и время в Python". Но сможете ли вы написать собственный Steam Guard?

К сожалению, вряд ли. Но почему? И вот здесь всё дело в алгоритмизации - в правилах и последовательности обработки данных для получения результата.

И никакие "справочники" вам не помогут пройти далеко вперёд.


ОБОБ­ЩЕНИЕ


Умеющие водить автомобиль подтвердят, что ничего сверхсложного в этом процессе нет. Особенно, если авто с автоматической коробкой передач. Я соглашусь. Знай себе крути руль, нажимай педальки и мало-мальски куда-нибудь поедешь.

Но никто не выпустит на дороги автомобилиста, только и умеющего, что управлять транспортом. Почему?

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

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

Программирование состоит из двух вещей: технического навыка записи кода и алгоритмизации - умения реализовывать правила обработки данных.

Этот учебник - сосредоточие справочника и системного знания: здесь рассматриваются технические аспекты построения программ и правила обработки данных. Кстати, об обработке данных будет сказано очень много.

Таким образом фраза из отзыва "стандартные алгоритмы применимые к любому языку" - это плюс данного материала, спасибо большое за замечание, оно очень важно. Научившись здесь, вы перейдёте на другой язык с меньшим усилием!

Именно здесь, в этом учебнике, линии параллельны, что способствует более качественному обучению и быстрому росту вас, как будущего профессионала. Наслаждайтесь программированием!

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


"ВЕРТО­ЛЁТИК"


У меня есть написанная 2D игрушка на Python (с использованием графики PyGame). Программа генерирует здания и площадку для посадки вертолёта. Игрок должен управлять вертолётом и успешно, без лишней тряски, сесть на площадку. В игре есть влияние физики, ветра, ускорения и всякого такого. Также нельзя врезаться в дома, что иногда сложно.

Если вы напишите мне в Telegram, я вам скину этот код: делайте, что хотите. Код без комментариев, поэтому разобраться будет трудно. Причём "трудно" не в техническом плане, а в плане алгоритма.

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

Так что если хотите понять, почему важна алгоритмизация, - добро пожаловать в Telegram, спрашивайте, отправлю код, а вы попробуете его изучить (для себя, для собственного опыта)!


© 2019-2024 Виктор Трофимов
[ Оглавление ] [ В начало страницы ]