Как я стал писать код
На момент 2023 года, я уже 11 лет как пишу код. Да, в основном для себя, но пишу.
Что же привело меня в данную точку "не возврата"?
Начнем с того, что все свое детство и отрочество я не был кем-то особенным, у меня не было каких-то талантов, меня ничто особо не интересовало. По большей части я учился (не сказал бы, что хорошо xD ) и играл в игры.
Как-то так дошло до того, что со временем я стал учиться лучше, поступил в 10 класс, но не знал своего предназначения. Писать код на тот момент я не мог (да и не задумывался об этом).
В школе до этого момента - нас информатике не учили. Мы лишь писали под диктовку как пользоваться вордом или экселем. Один раз даже создали свои учетки почты в mail.ru. Ни о каком программировании речи даже не шло. Да и учитель, что преподавала - информатику сама то хорошо и не знала (мое подозрение).
Что уж говорить о том, что 10-й класс для меня показался сложным на тот момент и я решил попробовать это исправить.
Решение исправить было странным.
Я задумался, что мой интеллект не достаточен для решения сложных задач и чтобы это справить - надо натренировать мозг. Но как?
Что я делал большую часть детства и подросткового периода? Играл в игры. Но ведь их кто-то - как-то создает. Мне стало интересно - как?
Я зашел в "Яндекс" и написал - "Программа для создания программ" (до сих пор этот запрос у меня вызывает смех xD ). Почему не игр? Ну, я посчитал, что создавать программы - дело более серьезное, чем игры. Да игра - это та же программа.
Яндекс выдал мне много вариантов. Я по шерстил форумы и наткнулся на примерно такой же вопрос, как у меня. Ответ на который был - Delphi 7.
Что такое Delphi 7 - я в "душе не чаял". Принялся искать и его.
И "вуаля" - нашел Delphi 7 Lite, которую скачал и удачно установил на свой (на тот момент) Windows 7.
Спустя установку я запустил Delphi 7 и увидел вот это:
Я упоминал, что английский я не знал вообще, а в школе учил французский? Воооот... xD
Когда я это увидел, моя голова начала болеть. Я осмотрелся в программе (посмотрел на код) и сразу закрыл, сославшись на то, что "не повезло - не фортануло, не мое". ;D
Не помню, во что я думал уже пойти играть, но сидя и смотря в пустой рабочий стол Windows 7 - приуныл. Меня терзало чувство, что я не выполнил то, на что настроился.
Я проговорил в голове "Ну я должен... собирался же. Попробую еще раз" и открыл Delphi 7 снова.
Открыв программу - я потыкал на форму 2 раза и увидел это:
"Вот, что это вообще такое? Что это значит? Что я должен писать сюда?" - думал я, смотря на это "безобразие" ;D
Попытавшись написать что-то на "эльфийском", я понял, что не зная английского - шансов у меня нет, но я уже решился на вторую попытку, отступать было некуда.
Я подумал, что мне нужно "плясать" не от программы, на которой я пишу, а от программы, которую я хочу создать. Так и появились запросы в Яндексе по типу "Как в Delphi 7 сделать кнопку", "Как что-то сделать при нажатии кнопки" и т.д.
На сегодня могу сказать, что куда продуктивнее было бы написать эти вопросы так: "Delphi 7 поставить кнопку" и "Delphi 7 выполнить действие по нажатию кнопки", так как поисковик ищет запросы по ключевым словам и первым нужно указать - для какой программы ищем функцию, а после указать действие, а не спрашивать как делать то или это. Причем, чем конкретнее действие - тем качественнее выйдут результаты. Это ускоряет поиск.
Так я потихоньку и начал разбираться как и что работает. Например я понял, как работает объект и его свойства раньше, чем как создавать переменные (А это база! Это знать надо xD).
Объект и его свойства разделяются точкой,
например: Button0.Caption := 'Hello';
1. Button0 - объект (кнопка, ее имя);
2. Caption - это свойство объекта, (как цвет кожи у человека) он означает - какой текст написан на кнопке;
3. Точка - разделитель объекта и свойства;
4. := - присвоение одно другому;
5. 'Hello' - строка с текстом, которую присваиваем свойству Caption у объекта кнопки;
6. ; - конец выполнения инструкции в данной строчке, так как на строчке одной может быть несколько команд.
И да, я долго семье показывал магию, как код выполняет действие при нажатии на кнопку (Это было очень в новинку для меня) xD
Зачем я вообще рассказал эту историю? Ну... во-первых - просто хотел рассказать историю (почему бы и да? ;D), а во-вторых - показатель, что писать код может научиться человек, который никогда не писал код.
Условности
Есть, правда и несколько но...
- К тому моменту я умел пользоваться ПК и это дало мне преимущество;
- Мой склад ума позволил мне освоить код, но не у всех людей такой склад ума, у кого-то эффективнее, а у кого то - менее эффективен (у каждого уровень сложности - свой);
- Понадобились годы, чтобы освоить код на хорошем уровне (я циклами то научился пользоваться спустя год только, до этого использовал goto (Безусловный переход по коду, что я запрещаю, осуждаю и фу-фу-фу так делать) xD);
- Не зная английского можно научиться кодить (код научит Вас понимать его. Взять тот же пример у меня), но это добавит сложностей (Хотя никто переводчики не отменял пока что ;) ).
Есть способ проверить, позволяет ли Ваш склад ума освоить код.
Просто представьте себе ситуацию (В уме, конечно. Делать так не надо!), что Вы идете к другу в гости и решили ему просто от нечего делать нагрубить (задев его самолюбие) и теперь спрогнозируйте его реакцию, его действия, и варианты решения - как исправить сложившуюся ситуацию. Если у Вас получилось хотя-бы 70% от мысленного эксперимента - значит логический склад ума у Вас есть и Вам будет проще освоить код. Если не вышло - не отчаивайтесь, вполне возможно, что Вы ему сможете научиться.
Логика - не такая уж и сложная наука на самом деле, гуманитарии тоже ей активно пользуются, просто не осознают этого (писатели знают структуру текста, музыканты знают последовательности звуков и паттернов, художники - знают какие фигуры чему соответствуют для сопоставления в рисунке), так что у Вас все шансы есть.
Ну а что насчет математики? Не все ее знают, или знают на базовом уровне.
Как ни странно, но в программировании в самом начале пути понадобится только простейшая математика (сложить, вычесть, поделить, умножить, квадрат, корень и т.д.), да и то, только чтобы знать, что код посчитает за Вас (отлаживая программу заблаговременно до теста), а так - компьютер зачастую будет все считать сам. Главное - знать что использовать в тот или иной момент.
Магия кода состоит в том, что он в какой-то мере сам будет учить Вас математике путем проб и ошибок. Понимание и осознание приходит со временем (Нужно набраться терпения).
Особенности программирования
Программирование - это творческое направление. Писать код - тоже искусство. И как у любого искусства, у него есть свои особенности и правила.
Например, у любого языка программирования есть ключевые слова (они же - зарезервированные слова), которые означают те или иные действия (списки на разных языках программирования ниже).
У всех 3-х языков (что представлены на картинках) есть совпадающие зарезервированные слова, например: for, while, if, class (если взять Delphi, а не чистый Pascal), true, false и т.д.
Во всех их - эти слова значат одно и то же, что позволяет очень просто переходить с одного языка программирования на другой. Выучив один язык - освоить остальные не составит труда.
Отличающиеся слова и символы (Они же называются операторами: +,-,*,/,=,==,:=,>,<,= и т.д.) хоть и разные, но часто работают одинаково. Например:
- В Pascal - "begin end;", C++ - "{ }", Python - табуляция (отступ красной строки), что означает тело метода (часть кода, которая логически отделена от остального кода, например функция (процедура) или условие);
- В Pascal - "result := x"; (В последних версиях, в старых версиях нужно было писать название функции, например "foo := x;", где foo - это название функции, из которой идет возвращение значения), C++ и Python - "return x;", что означает возврат определенного значения;
- В Pascal - "function foo():Integer;", C++ - "int foo();", Python - "def foo():", что означает функцию, которая возвращает (то есть после манипуляций в функции - мы можем получить результат ее работы) целое число int (Число без запятой (Integer на английском), например: 0,1,2,3,4,5... -127, -30000) и т.д.
Как видно из вышесказанного, в какой-то мере, языки взаимно заменяемы. Освоив один - можно освоить и другие с минимальными затратами усилий.
Если Вы знаете где используются ключевые слова и операторы, то Вы уже знаете язык на 50%, но должен убедить Вас в том, что ни один программист наизусть не вспомнит все ключевые слова, так как в этом нет смысла (операторы же знают все - это математические операции сложения, вычитания, присвоения и т.д.).
Современные программисты все, что не запомнили - записывают или "гуглят", так как память не совершенна. Со временем часто используемые логические конструкции - откладываются в памяти и "гуглить" больше не приходится.
Ну и ошибаться - это нормально, даже самые опытные программисты постоянно ошибаются. Главное - исправлять ошибки. ;)
Как обучиться то?
Вы все же решились писать код, но как начать? Что писать и где брать информацию?
Ну, для начала могу сказать, что плохой идеей будет покупка какого-то курса по программированию, так как Вы потратите средства, время, сделаете пару кнопок и в голове почти ничего не отложится. Вся информация лежит в открытом доступе, надо только научиться гуглить. Вы заплатите за воздушный шар, а корочка Вам не даст преимуществ. Нужен опыт.
Книги я тоже не посоветую. Почему? Потому что они морально устаревают чуть-ли не каждый год (хотя, если хотите - там знания более систематизированы, так что может и полезно будет полистать парочку). Из-за этой "фигни" я долго не мог в свое время перебраться на C++ (автор книги сказал, что GCC компилятор на Windows не установить, а только покупать платный (Что уже много лет как ложь, "бурдёж" и провокация, так как MinGW с GCC доступен на Windows, да и компилятор от Майкрософт можно скачать бесплатно с официального сайта), а в примере он указал #include <iostream.h>, что в новых версиях компилятора не верно, а верно так #include <iostream>). Вам может показаться, что проблема высосана из пальца, но для человека, который в руках C++ не держал - это фатальная проблема. xD
А что тогда советую? Советую придумать какую-то программу (ну или игру), которую вы хотите создать и начинать искать информацию о том, как сделать ту или иную ее часть. Это очень сложно, но это научит Вас исправлять свои ошибки, понимать суть вещей и получать самый ценный опыт.
На форумах писать свои проблемы не надо, так как Вашу проблему испытали сотни таких же программистов и ответы уже вероятнее всего там есть, просто нужно искать.
В общем, гугл, яндекс, и умение читать в помощь! Гайдов просто море и маленькая тележка, сами посмотрите ;)
На чем же лучше писать? Тут решать Вам в зависимости от цели.
А что именно Вы собираетесь писать? Приложения для Windows, Linux или Mac OS - тогда: C++, C#, Lazarus (Это тот же Delphi. Хотя язык мертвый, учтите).
Скрипты для автоматизации Вашей кофеварки, готовящей кофе по расписанию: Python, Bash в помощь!
Web приложения: C# + ASP MVC, Python, GoLang, JavaScript, PHP!
Android приложения: Java + Android SDK (Android Studio) или Kotlin.
Нейросети: C++, Python.
Научные математические вычисления: а не все ли равно на чем писать формулы? Формула преобразования Фурье будет работать на любом языке, только скорость разная и внешний вид немного отличается.
Заключение
И все же, важнейшим фактором является интерес к программированию и упорство. Даже если у Вас нет преимуществ в обучении, но Вам это интересно - у Вас все может получиться. Удачи! ;)