Абсолютное руководство по компьютерам и программированию для новичков

Абсолютное руководство по компьютерам и программированию для новичков Изучение

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

Сегодня мы для начинающих взглянем на то, как работает компьютер, и научим вас думать как программист. Если у вас нет опыта программирования или какого-либо языка программирования, вы обратились по адресу!

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

Внутренности компьютера

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

Вы, вероятно, взаимодействовали с каждой из этих вещей, даже не подозревая об этом!

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

Объем памяти

Память — это место, где компьютер хранит данные. У компьютеров есть два типа памяти: основная и дополнительная.

Первичная память — это память по умолчанию на каждом компьютере, к которой можно быстро получить доступ. Двумя наиболее распространенными устройствами первичной памяти являются постоянное запоминающее устройство (ПЗУ) и оперативное запоминающее устройство (ОЗУ).

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

ОЗУ используется для хранения данных, используемых в настоящее время. Хранение данных в ОЗУ увеличивает производительность, поскольку компьютер может использовать первичную память вместо более медленной вторичной памяти. Если используется все хранилище RAM, компьютер будет хранить дополнительные программы во вторичном хранилище в качестве резервной копии. Оперативная память является энергозависимой, что означает, что она стирается при выключении компьютера.

Вторичная память — это то, о чем большинство людей думает, представляя память компьютера. Жесткие диски, жесткие диски и флэш-накопители — все это примеры вторичной памяти. Этот тип памяти используется для запоминающих устройств и является энергонезависимым. Вторичная память относится к запоминающим устройствам или съемным носителям. К вторичной памяти не обращается напрямую ЦП. Сначала он загружается в ОЗУ, а затем отправляется в процессор.

Относительная скорость каждого типа памяти

Относительная скорость каждого типа памяти

Центральный процессор (ЦП)

Центральный процессор (ЦП) — это мозг компьютера, который обрабатывает и выполняет инструкции. Он состоит из трех частей: блока управления, блока арифметической логики и регистров.

Блок управления извлекает инструкции из ОЗУ и определяет, какие части ЦП должны их выполнять. Это менеджер ЦП, потому что он видит весь набор инструкций и отправляет инструкции, которые должна выполняться каждой частью.

Логическое устройство Арифметика (АЛУ) выполняет все инструкции, которые содержат или математическую или логическую операцию. Сложение — это типичный пример математической операции. Логические операции используются для оценки или сравнения данных.

Регистры небольшие летучие ячейки памяти в пределах центрального процессора, как rax, rbx, или rcx. ЦП может обращаться к регистрам быстрее, чем к первичной или вторичной памяти. Данные временно сохраняются в регистрах во время работы программы для повышения производительности. Регистры намного меньше ОЗУ, поэтому в данный момент здесь может храниться только небольшой объем данных.

Устройства ввода / вывода

Устройства ввода / вывода — это любое устройство, которое позволяет компьютеру взаимодействовать с внешним миром. Сюда входят устройства ввода, которые позволяют пользователю управлять компьютером, например клавиатуры и мыши. Устройства вывода позволяют компьютеру отображать обратную связь для пользователя, например, мониторы и принтеры.

Если вы читаете это на телефоне, ноутбуке или настольном компьютере, вы взаимодействуете с устройством ввода-вывода.

Что такое программа?

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

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

Компьютер читает эти программы и выполняет каждую инструкцию по порядку. Важно помнить, что компьютеры способны только к буквальному толкованию и не могут мыслить между строк.

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

Зачем нужны языки программирования?

Память, ЦП и устройства ввода-вывода обрабатывают данные и инструкции с помощью машинного кода, называемого двоичным. Двоичный файл — это длинная строка, состоящая из единиц и нулей в определенном порядке. Хотя двоичные строки легко понять для компьютеров, люди не могут их понять.

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

Программисты сначала пишут свои программы на языке программирования высокого уровня, таком как Java, Python или C ++. Затем компьютер берет этот код и отправляет его интерпретатору или компилятору.

Это преобразует его в двоичные инструкции. Эти двоичные инструкции затем передаются в ЦП для выполнения.

Трансформация программы

Трансформация программы

Языки программирования высокого уровня позволяют программистам передавать сложные инструкции ЦП без необходимости писать непосредственно в машинном коде.

Как думать как программист

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

Читайте также:  Учебное пособие по Python REST API: начало работы с FastAPI

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

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

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

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

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

Золотое правило: DRY

Золотое правило всех программистов — » Не повторяйся «. Это означает, что вы должны попытаться свести к минимуму количество кода или поведения, которое вы повторяете в своих программах.

Многие практики в программировании направлены на то, чтобы помочь программистам в этом, например «Решение» и «Повторение», описанные ниже.

Псевдокод

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

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

Планирование псевдокода позволяет:

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

Синтаксис

Синтаксис в программировании — это набор правил и доступных команд, уникальных для языка программирования. Если язык программирования подобен стандартному языку, то синтаксис — это комбинация грамматики и словаря этого языка.

Как написать псевдокод

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

Независимо от того, как вы пишете псевдокод, вот несколько рекомендаций, о которых следует помнить:

  1. Включайте только одно действие или шаг в строке
  2. Напишите все шаги в том порядке, в котором они должны быть выполнены
  3. Включите все шаги, необходимые для решения проблемы

Вернемся к нашей программе сравнения кругов и напишем псевдокод, чтобы найти длину окружности каждого круга:

Input: 
   Circle1 radius = 5
   Circle2 radius = 10

Calculate circumference of Circle1
Calculate circumference of Circle2

Output: Circumference Circle1 and Circle2

Выше мы сначала вводим два круга с разными радиусами в строках 2 и 3. Поскольку наша задача требует окружности, затем нам нужно найти длину окружности каждого круга в строках 5 и 6. Прямо сейчас мы только что включили равнину. язык «найди окружность»; однако мы могли бы включить сюда формулу окружности.

Теперь мы можем проверить, соответствует ли наш псевдокод всем требованиям, прежде чем двигаться дальше:

  1. Да, каждый шаг включает только одно действие
  2. Да, все шаги в правильном порядке
  3. И да, проблема решена и пропущенных шагов нет

Наша «фальшивая» программа готова к кодированию!

Блок-схемы

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

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

Ниже приведено руководство по фигурам, которые программисты используют для представления различных типов шагов:

Ниже приведено руководство по фигурам, которые программисты

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

Пример блок-схемы для программы по окружности

Пример блок-схемы для программы по окружности

Решения: Как добавить реактивность

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

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

Но что, если мы введем квадрат? Теперь наша программа должна решить, является ли форма кругом или нет.

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

Это принятие решений достигается за счет условных утверждений типа if, whileи elseэтот чек на определенное состояние. Мы используем эти операторы почти во всех языках программирования. Они составляют основу реактивных программ.

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

Например, в псевдокоде «если форма НЕ является кругом, не вычислять длину окружности». Условные операторы являются ключом к чистым, компактным и полезным решениям кодирования.

Совет для новичков

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

If statements

Самым распространенным условным оператором является ifоператор. Этот оператор сначала проверяет указанное условие. Если условие истинно, инструкции в операторе завершены. Если утверждение неверно, то инструкции внутри оператора пропускаются.

Читайте также:  Ускоренный курс по операционным системам: от ядер к виртуализации

Мы часто используем операторы if в повседневной жизни. Например, я могу принять решение, что если на улице солнечно, я выйду на улицу. Я проверяю, что погода «солнечная».

Если это условие выполняется, я завершаю шаг «выйти на улицу». Если условие не соответствует действительности, я не предпринимаю никаких действий и остаюсь внутри.

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

Input: 
   Circle1 radius = 5
   Circle2 radius = 10

Calculate circumference of Circle1
Calculate circumference of Circle2

if: circumference of Circle1 > circumference of Circle2
   Output: Circle1

if: circumference of Circle2 > circumference of Circle1
   Output: Circle2

Выше мы добавили строки 8-12, чтобы решить, какое имя круга выводить. В строке 8 программа проверит, имеет ли Circle1 большую окружность, чем Circle2. Если да, программа выполняет Output: Circle1инструкцию внутри.

Если нет, программа переходит к следующему ifоператору в строке 11, который проверяет, имеет ли Circle2 большую окружность, чем Circle1. Также если да, программа выводит имя Circle2 с инструкцией в строке 12.

Вот та же программа, представленная на блок-схеме:

Вот та же программа, представленная на блок-схеме

Программа окружности с решениями

Повторение: как упростить программы

Еще одно распространенное продвинутое поведение в программировании — это повторение. Многим программам приходится повторять один и тот же шаг на разных объектах. Для этого проще и быстрее написать поведение один раз и настроить программу на его многократный запуск, а не записывать копии поведения.

Программисты достигают этого с помощью циклов. У каждого цикла есть условие завершения и набор инструкций.

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

По достижении условия завершения цикл завершается и переходит к коду под циклом

Этапы цикла

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

Совет для новичков

Самый простой способ найти циклические участки в вашей программе — это описать процесс вслух и прислушаться к слову «до». Любую фразу «до» можно преобразовать в цикл while, а затем реализовать в коде.

Пример: «Пока не будут выполнены все шаги» → «Пока какие-либо шаги останутся незавершенными»

While loops

Самая распространенная петля — это whileпетля. Конечное условие в whileцикле — это момент, когда перечисленное условие становится неверным.

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

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

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

Вернемся к нашему примеру с псевдокодом выше и добавим цикл, чтобы упростить его:

Input: 
   Circle1 radius = 5
   Circle2 radius = 10

While: any circumference is unknown
    Calculate circumference of next circle

if: circumference of Circle1 > circumference of Circle2
   Output: Circle1

if: circumference of Circle2 > circumference of Circle1
   Output: Circle2

Выше мы уточнили два вычисления окружности, чтобы вместо этого они представляли собой whileцикл на строке 5. Цель этого раздела — вычислить длину окружности каждого круга, пока не будут найдены все окружности. Если мы изменим эту логику, мы можем сказать, что мы хотим продолжить вычисление длины окружности каждого круга, «пока любая окружность неизвестна».

Программа сначала проверит, неизвестна ли какая-либо окружность в строке 5. Если это правда и есть хотя бы одна неизвестная окружность, программа войдет в цикл. Затем программа выполняет инструкцию внутри цикла по линии 6, чтобы найти окружность следующего круга Circle1.

Затем цикл снова проверит условие и обнаружит, что длина окружности все еще неизвестна. А также затем программа снова входит в цикл и вычисляет длину окружности Circle2.

При третьей проверке у программы больше нет неизвестных окружностей. Затем программа обходит цикл и переходит к нашим условным операторам ниже.

Вот та же программа, но представлена ​​блок-схемой вместо псевдокода:

Программа окружности с решениями и повторением

Программа окружности с решениями и повторением

Примечание: масштабируемость

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

Что учить дальше

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

Отсюда вы можете глубже изучить затронутые сегодня темы, например:

  • Синтаксис и семантика
  • Переменные
  • Продвинутые компьютерные концепции
  • Полный жизненный цикл программы
  • Решение популярных задач программирования
Оцените статью
bestprogrammer.ru
Добавить комментарий