Для кого эта «книга»? Эта книга предназначена для всех, кто интересуется программированием, кому трудно начать. Что охватывает эта книга:

  • Почему программа?
  • Основная информация, необходимая для начала работы с программированием.
  • Различные способы программирования.
  • Искусство гугления.
  • Выбор языка программирования.
  • Поля для программирования. Чего НЕ охватывает эта книга:
  • Как программировать на конкретном языке программирования
  • Продвинутая теория программирования Программирование — обширная и сложная тема. И начать программировать непросто, потому что используемая терминология часто может сбивать с толку. Эта книга призвана заполнить многие пробелы и помочь читателям преодолеть эти барьеры и стать опытными пользователями Google.

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

Почему вы должны программировать? Это первый важный вопрос, который нужно себе задать. Вы заинтересованы в программировании? Вы, наверное, студент? Для работы? Кем бы вы ни были, программирование — это обогащающий предмет, который, как только вы его поймете, станет полезным или даже забавным инструментом для использования. Программирование может показаться невыполнимой задачей, но не позволяйте этому влиять на вас. Просто трудно начать.

ℹ️ Некоторые предметы очень сложны в программировании, но вы обнаружите, что многие из них просты.

Практическое использование программирования.
Программирование применимо в самых разных областях, и иногда вы даже не подозреваете, что используете программу. Программирование используется в технике, медицине, науке, создании приложений, веб-сайтов и многом другом. Что касается того, чего можно достичь программированием, ответ — «всего». Любая задача, которую вы можете придумать, которая может произойти, может быть запрограммирована. Веб-сайты, приложения, операционные системы и устройства общего назначения запрограммированы или могут быть запрограммированы. Короче говоря, программирование полезно, если вам нужно что-то сделать. Программирование как хобби
Программирование тоже может быть хобби. Это может быть сногсшибательным занятием, которое изменит ваше мышление к лучшему. И помочь вам понять вещи вокруг вас. Описать это непросто.

Программное мышление
Первый шаг к тому, чтобы начать программировать, — это понять, как об этом думать. Во-первых, «программа» — это серия инструкций, которые должен выполнить компьютер. Это определение имеет некоторые термины программирования. Проще говоря, «программа» — это набор кода, который может быть запущен компьютером. Иногда программы используются так же, как «исходные файлы», то есть файлы, содержащие код, написанный на языке программирования. Итак, программа — это то, что понимает компьютер, а исходный файл — это то, что вы пишете. На данный момент не так уж важно различать эти термины, но вы можете.

ℹ️ Наборы исходных файлов или программ, которые вы можете использовать для написания программы, могут называться «библиотеками» или «модулями». Обратите внимание, что у слова «библиотеки» есть сокращение: «libs».

Итак, теперь у вас есть общее представление о том, как файлы организованы при программировании. Еще одна важная часть мышления программиста — рассматривать все как упорядоченные инструкции, которые вы даете компьютеру. Вы говорите компьютеру показать «Hello World!» на экране это видно. Думайте об этом, как о том, чтобы сказать компьютеру «сделай это, затем сделай то».

ℹ️ В большинстве случаев вы не говорите компьютеру, что делать. Вы говорите языку программирования, который вы используете, сделать это за вас. Если это не имеет смысла, игнорируйте это. При необходимости изучите то, что известно как «вычислительное мышление»; это очень полезно.

Понимание того, что такое кодирование на самом деле:
кодирование имеет нечеткое определение. Но я бы определил это как создание представления о том, что впоследствии может стать программой. Таким образом, такие вещи, как Scratch, по-прежнему считаются кодом, и написание кода в файлах тоже считается. Когда вы программируете, обязательно думайте об этом. Написание кода
Резюме:

  • Программа: то, что может выполнить компьютер, обычно создается из исходного файла.
  • Исходный файл: файл, который предоставляется языку программирования для создания программы.
  • Программирование: создание представления о том, что может стать программой. Это вам пока мало поможет. Итак, давайте разберемся, как писать код. В общем, вы найдете эти шаблоны в большинстве программ.
  • Функции
  • Струны
  • Целые числа
  • Числа с плавающей запятой
  • Списки и массивы.
  • Кортежи
  • Операторы if
  • Пока циклы
  • Для петель

Переменная — это имя для значения. Например, представьте переменную с именем pi со значением 3.14159. Теперь, когда вы пишете pi, вы получаете 3.14159. Есть 3 основных типа переменных, и они могут сбивать с толку. Наиболее распространены изменяемые переменные. Например, вы определяете переменную с именем x как 5. Затем вы меняете x на 2. Конечно, поскольку программы выполняются по порядку, весь код до того, как вы изменили x на 2, приведет к 5. В отличие от математики, переменные могут быть определены сами по себе. Итак, если бы вы изменили x на x + 1, это было бы 5 + 1, то есть 6. Думайте об «изменяемых» как о «мутировать», что означает изменение.
Другие типы, неизменяемые и постоянные переменные, не могут изменяться. Они не одинаковы, но я не буду вас путать.

Ссылки — это просто когда вы пишете имя для чего-то, например идентификатора или функции. Больше нечего сказать.

Функции используются для именования и повторного использования фрагментов кода, который вы написали. Например, представьте себе программу, которая складывает 5 и 2 и выводит их, но вы хотите, чтобы это происходило много раз, а не один раз. В этом случае одним из решений будет использование функции. Вы бы назвали свою функцию как хотите, с параметрами и телом. Параметры – это переменные, которые могут принимать аргументы от программиста, вызывающего функцию. Аргументы — это любые значения, которые будут иметь смысл в теле функции на самом простом уровне. Тело функции — это код внутри нее.

Например, представьте функцию с именем add1 с параметром num и телом return num + 1. Если вы вызовете add1 с 1 в качестве аргумента для параметра num, вы получите 2. return обычно означает, к чему должна привести функция. Это чем-то похоже на функции в математике, например f(x) = x + 1.

Я хочу, чтобы что-то происходило только при выполнении определенного условия. Как мне это сделать? Используя так называемый оператор if. Оператор if состоит из условия и тела. Условие — это именно то, на что это похоже. Например, оператор if с условием, что pi > 3, и тело, которое выводит «Pi больше 3», будет выполняться, только если pi больше 3. Операторы if могут сопровождаться телами else и else if. else происходит только в том случае, если все условия не выполняются, а else if s происходит только в том случае, если все вышеперечисленные условия не выполняются.

А если я хочу, чтобы что-то происходило только при выполнении условия? Вот почему существует ключевое слово while, и оно почти такое же, как if с точки зрения использования.

Что, если я хочу, чтобы что-то произошло определенное количество раз? Здесь вы можете использовать цикл for. То, как они используются, различается в разных языках программирования, но обычно существует так называемая управляющая переменная и количество итераций. Управляющая переменная — это переменная, которая изменяется каждый раз, когда тело цикла for повторяется, к которому вы можете получить доступ. Итерации — это повторение тела цикла for.

В совокупности они называются потоком управления.

Типы — это то, о чем вы много слышали в программировании.

  • Строки: текст
  • Целые числа: целые числа, отрицательные или нет
  • Числа с плавающей запятой: числа с десятичным разрядом
  • Списки и массивы: несколько значений одного типа, на которые можно ссылаться по одному имени.
  • Кортежи: несколько значений, на которые можно ссылаться с помощью одного имени. Существует также «ввод», который относится не к записи на компьютере, а к тому, как типы используются по умолчанию.
  • Динамическая типизация: значение переменной может менять тип, а значения параметров функции, а также ее результирующее (возвращаемое) значение могут менять тип.
  • Статическая типизация: значение переменной не может изменить тип, типы функции не могут измениться.

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

  • Императив: заинтересован в том, «как» программа
  • Процедурный: ориентирован на функции в стиле программирования. Это подпарадигма императива. Существует также объектно-ориентированное программирование, которое тоже довольно распространено.
  • Объектно-ориентированное программирование: ориентировано на «объекты». Это подпарадигма императива. И есть подпарадигмы декларативного программирования, такие как функциональное и разметка.
  • Декларативный: связанный с тем, «что» в программе.
  • Функциональный: ориентирован на функции математического стиля и неизменяемые переменные. Это подпарадигма декларативного.
  • Разметка: используется для отображения значимых изображений.

Эта книга в основном посвящена императивному программированию, и я предлагаю вам пока придерживаться его. Подробное обсуждение парадигм программирования не входит в задачи этой книги, но если в какой-то момент они вас заинтересуют, поищите их. Я расскажу немного больше в главе «Выбор языка программирования».

Что такое гуглить на самом деле? Чтобы Google был доволен, я определяю гугление как использование поисковой системы Google для получения информации по любому вопросу. И программисты гуглят гораздо больше, чем вы думаете. На самом деле гугление — это самый важный навык для программиста. Вы гуглите, чтобы выучить новый язык программирования, новую библиотеку, выяснить, что не так с вашим кодом, найти помощь и многое другое. Итак, как эффективно использовать Google? Поиск в Google — это навык, который можно развивать годами. Но хорошая новость заключается в том, что, поскольку вы пока не являетесь опытным пользователем Google, вы можете быстро улучшить свои навыки.

Как ты это делаешь? Используя синтаксис модификаторов поиска Google. У них может быть собственное имя, но я буду использовать только это. «Синтаксис» просто означает, как что-то написано. В совокупности синтаксис английского языка состоит из его грамматики, пунктуации, лексики и т. д.

Это изображение я получил прямо из Гугла, и вы можете увидеть их там, если хотите. На этом изображении показаны не все модификаторы поиска, но я сомневаюсь, что вы будете искать ответы на свои проблемы с программированием в социальных сетях, за исключением Reddit. Вы когда-нибудь замечали, что, когда вы что-то ищете, вы продолжаете получать несвязанные результаты? Или, возможно, Google игнорирует некоторые из ваших поисковых запросов?

С обеими этими проблемами я часто сталкиваюсь при поиске. Но решение простое. Если вы не хотите, чтобы Google игнорировал некоторые слова в вашем поисковом запросе, заключите его в кавычки, например "GitHub pages". Это вернет только результаты, которые точно содержат текст «страницы GitHub»; слово GitHub должно следовать за страницами слова. Если вам просто нужны результаты, содержащие и то, и другое, используйте поисковый запрос"GitHub" "Pages".

Допустим, вы продолжаете искать обмен стеком, то есть: обмен стеком. Это модель поисковых запросов, которые вы, скорее всего, сделаете, если забудете некоторые термины. Вы будете продолжать получать результаты от StackExchange, веб-сайта и других веб-сайтов, которые говорят об этом. Итак, теперь попробуйте exchanging a stack. Увы, это ничего не меняет. Хорошей идеей здесь является удаление результатов, содержащих «StackExchange». Итак, к вашему новому поисковому запросу добавьте-stackexchange. И вот, вы нашли свой результат: обмен стеками.

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

  • Цитаты: когда у вас есть ошибка. Будьте осторожны, чтобы не включить часть, где говорится, где ошибка произошла в вашем коде.
  • Минус: когда вы продолжаете получать результат, который вам не нужен.
  • site:foo.bar: когда хочешь найти ответ на вопрос, который потерял.
  • before:date и after:date: когда полученные результаты бесполезны, потому что они слишком новые или слишком старые.Какие веб-сайты искать:
    это зависит от используемого вами языка программирования. Но для большинства языков программирования попробуйте найти ответы StackOverflow, проекты или проблемы GitHub и любой веб-сайт, который вы найдете.

Это дыра, в которую попадают многие начинающие программисты, они просто не могут выбрать, с какого языка начать. Что ж, я здесь, чтобы помочь с этим. Выбрать язык сложно, потому что вариантов так много. «Я хочу заниматься JavaScript, чтобы заниматься веб-разработкой, но мне не нравится этот язык». Или «Я хочу заняться Python, потому что у него отличные библиотеки, но он мне не нравится». Много и много всего подобного.

Настоящий ответ таков: если честно, не имеет значения, какой у вас родной язык. Я попытался начать с JavaScript, но он показался мне слишком запутанным, и в итоге я начал с Python. По сей день Python — это язык, который я знаю больше всего. Но учиться было очень трудно. В какой-то момент я решил, почему бы мне не изучить и другие языки программирования? Так что я попытался. Было тяжело, но намного легче. И теперь я обнаружил, что изучение Haskell, считающегося сложным языком программирования, довольно легко.

Я хочу сказать, что вы должны начать с любого языка программирования, к которому вы склоняетесь, даже если у вас есть сомнения по этому поводу.
Мои противоречивые мнения:
противоречивые мнения о том, с какого языка программирования начать. Такова природа любого, кто помогает другим выбрать язык для начала. Я рекомендую начать с простого языка программирования, такого как Python, Lua или Ruby. Начните с языка программирования с динамической типизацией, потому что типы — сложная концепция.

Не начинайте с чего-то вроде C#, Java или C++. C# и Java требуют от вас понимания объектно-ориентированного программирования, что является сложной концепцией для начинающих и вызывает большие споры в сообществе программистов. И они оба просто жесткие. C++ также очень сложен по сравнению с другими языками. Я бы посоветовал начать с простого языка, такого как один из трех, которые я перечислил, а затем, если хотите, перейти к более сложным языкам.

По правде говоря, вам не всегда нужно использовать сложные языки программирования. Вы могли слышать, что Python и Ruby медленные. И это абсолютно верно. Они медленные. Но в большинстве случаев это не имеет значения. Вашему пользователю, скорее всего, все равно. И Lua очень быстро работает с LuaJIT, хотя Lua не очень популярен. Существует множество быстрых и простых языков программирования, таких как Go, Julia и другие. Но если вам не нравится их синтаксис, я бы начал с самого простого языка, который мне удалось найти.

Очевидно, это не означает, что нужно начинать с HTML и CSS, потому что это языки разметки и, скорее всего, они не помогут вам понять другие. Не говоря уже о том, что они довольно разочаровывают по сравнению с другим кодом.

Еще одна дыра, в которую часто попадают программисты, — это выбор парадигмы. Мой совет - делайте то, что вам нравится. Занимайтесь процедурным программированием, если вам это нравится, или объектно-ориентированным программированием, если вам это нравится. Но я постараюсь дать обзор преимуществ и недостатков некоторых наиболее популярных парадигм.

Процедурный:
Преимущества:

  • Интуитивно понятный и простой
  • Широко поддерживается
    Недостатки:
  • Редко для некоторых полей, таких как GUI.

Объектно-ориентированный: преимущества:

  • Используется для графического интерфейса
  • Хорошо для создания библиотек
  • Популярные
    Недостатки:
  • Сложный
  • Код беспорядка (подробный)

Функциональность:
Преимущества:

  • Очень легко отлаживать
  • Кратко
    Недостатки:
  • Комплекс для начала.
  • Менее широко поддерживается.
    Многие здесь со мной не согласятся. Я проигнорировал любые преимущества или недостатки, которые всплывают во всех трех. Я бы посоветовал начать с процедурных. Это действительно самое простое. Затем вы можете погрузиться в одну из других парадигм, когда у вас будет достаточно опыта.

Подводя итог: выбирайте то, что вам нравится, и не беспокойтесь об этом.

Я просто перечислю несколько популярных тем программирования.

  • Разработка приложений: графический интерфейс (обычно объектно-ориентированный, но вы можете использовать другие парадигмы).
  • Веб-разработка: Frontend (что видит пользователь) и backend (управление сервером и прием запросов от frontend)
  • Алгоритмы и структуры данных: я действительно не могу это объяснить, так что поищите.
  • Синтаксический анализ: разбиение языка на значимые единицы (у меня есть руководство по этому вопросу на моем веб-сайте).
  • Параллелизм: работа с несколькими программами, работающими одновременно.
    и многое другое. Опять же зависит от языка.

Первоначально опубликовано на https://github.com.