Найти в Дзене
Golang-news

Глава 1: Основы программирования

1 Что вы узнаете из этой главы? 2 охваченных технических концепции 3 Введение Эта книга о Go. Прежде чем перейти к нашей основной теме, вам необходимо получить некоторые базовые знания о компьютерах. Опытные программисты могут пропустить эту главу. Новичкам следует потратить некоторое время на его изучение. Ваши программы будут работать на оборудовании. Знание того, как работает ваше оборудование, может улучшить дизайн ваших программ. Сначала мы опишем основные компоненты компьютера. Затем мы увидим, что такое программа и как с ней справляется машина. 4 Четыре аппаратных компонента Компьютер состоит из четырех основных частей: Четыре аппаратных компонента представляют собой схематический вид компонентов компьютера. 5 Память Компьютер состоит из двух типов памяти: Существуют две категории памяти: 5.1 Центральная память Этот тип памяти необходим для запуска операционных систем и всех других программ, которые будут запускаться на вашем компьютере. Центральная память содержит два типа пам
Оглавление

Глава 1: Программирование компьютера
Глава 1: Программирование компьютера

1 Что вы узнаете из этой главы?

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

2 охваченных технических концепции

  • Блок памяти, арифметико-логический блок, ввод/вывод, блок управления
  • Центральная память, Вспомогательная память
  • Энергонезависимая и энергонезависимая память
  • ОЗУ/ПЗУ
  • Процессор
  • Языки высокого и низкого уровня
  • язык ассемблера, ассемблер
  • Компилируемый и интерпретируемый язык

3 Введение

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

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

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

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

4 Четыре аппаратных компонента

Компьютер состоит из четырех основных частей:

  • Блок памяти (MU) , в котором хранятся данные и программы. Например, мы можем сохранить в блоке памяти оценки за класс колледжа. Мы также можем иметь программу, которая будет вычислять среднюю оценку класса.
  • Арифметико-логическое устройство (АЛУ) . Его роль заключается в выполнении арифметических и логических операций над данными, хранящимися в блоке памяти. Этот блок может выполнять, например, сложения, приращения, уменьшения, которые называются операциями . В общем, каждая операция требует двух операндов и вывода результата. Допустим, мы хотим сложить 5 и 4. Эти два числа являются операндами. Результат этой операции равен 9. Операнды загружаются из блока памяти. ALU представляет собой электрическую схему, предназначенную для выполнения операций.
  • Блок ввода-вывода (I/OU) будет отвечать за загрузку данных в блок памяти с устройства ввода . Это устройство также отправляет данные из блока памяти на устройство вывода .
    Устройство ввода — это, например, сенсорная панель вашего компьютера, клавиатура, мышь.
    Устройство вывода — это, например, ваш монитор.
  • Блок управления (БУ) будет получать инструкции от программ и будет контролировать деятельность других блоков.

Четыре аппаратных компонента представляют собой схематический вид компонентов компьютера.

5 Память

Компьютер состоит из двух типов памяти:

  • Центральная память
  • Вспомогательная память

Существуют две категории памяти:

  • Летучий
  • Не летучий

5.1 Центральная память

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

  • ОЗУ (оперативное запоминающее устройство). Этот тип хранилища требует электроэнергии для сохранения данных. Когда вы выключите компьютер, память, содержащаяся в этом типе хранилища, будет стерта. Операционная система и программы, которые вы используете, будут загружены в эту память. Этот тип памяти является энергозависимым .
  • ПЗУ (постоянная память). Это память, содержащая данные, необходимые для правильной работы компьютера. Такая память не энергозависима (при выключении компьютера она не стирается). Он предназначен только для чтения и не обновляется системой.

5.2 Вспомогательная память

Этот тип памяти не является энергозависимым. При отключении питания сохраненные данные не удаляются. Вот несколько примеров вспомогательной памяти: жесткие диски, USB-накопители, CD-ROM, DVD и т. д.

Чтение и запись в этот тип памяти медленнее по сравнению с оперативной памятью.

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

5.2.1 Жесткий диск SSD

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

SSD (твердотельные накопители) так не устроены. Нет ни магнитной головки, ни магнитных дисков. Вместо этого данные хранятся в ячейках флэш-памяти. Доступ к данным быстрее на таком диске. Обратите внимание, что SSD также стоит дороже, чем традиционные электромагнитные жесткие диски.

6 ЦП

CPU — это инициалы центрального процессора . ЦП также обозначается процессором . Центральный процессор содержит:

  • Арифметико-логическое устройство (АЛУ)
  • Блок управления (БУ)

ЦП будет отвечать за выполнение инструкций, данных программой. Например, программа может указать выполнить сложение между двумя числами. Эти числа будут извлечены из блока памяти и переданы в АЛУ. Программа также может потребовать выполнения операции ввода-вывода, такой как чтение данных с жесткого диска и загрузка их в ОЗУ для дальнейшей обработки. CPU будет выполнять эти инструкции.

ЦП является центральным компонентом компьютера.

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

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

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

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

  1. Вывод «Пожалуйста, введите свой первый номер и нажмите Enter» на мониторе.
  2. Когда число набрано и на клавиатуре нажата клавиша «Ввод», сохраните число в памяти. Обозначим А. Это число.
  3. Вывод «Пожалуйста, введите второе число и нажмите Enter» на мониторе.
  4. Когда число набрано и на клавиатуре нажата клавиша «Ввод», сохраните число в памяти. Обозначим Б. Это число.
  5. Отправьте в АЛУ два числа (А и Б) и дополнительный код операции и сохранить результат в памяти.
  6. Вывести результат на монитор

Выполняются два типа инструкций:

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

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

×Бумажная и цифровая версия этой книги доступны здесь. Я также снял видеокурс по созданию реального проекта с помощью Go.

8 Как говорить с машиной?

8.1 Языки программирования — это формальные языки

Инструкции, которые даются машине, написаны на языках программирования. Языки программирования являются формальными языками. Они состоят из слов, составленных из алфавита (набора отдельных символов). Эти слова организованы по определенным правилам . Go — это язык программирования, такой как x86 Assembly, Java, C, C++, Javascript...

Это два типа языков программирования:

  • Низкий уровень
  • Высокий уровень

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

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

Классификация языков программирования
Классификация языков программирования

8.2 Машинный язык

Чтобы говорить с процессором компьютера, мы можем использовать машинный язык . Машинные языки состоят исключительно из нулей и единиц. Инструкция, написанная на машинном языке, представляет собой набор 0 и 1. Каждый процессор (или семейство процессоров) определяет список инструкций, называемый набором инструкций . Есть инструкция добавить к числу, увеличить на единицу, уменьшить на единицу, скопировать данные из одного места в памяти в другое место... и т.д.

Можно писать компьютерные программы прямо на машинном языке. Однако это непросто.

8.3 Язык ассемблера

Ассемблер — это язык программирования низкого уровня . Инструкции программы, написанной на языке ассемблера, соответствуют машинным инструкциям. Языки ассемблера используют мнемоники, которые представляют собой небольшие слова, соответствующие машинным инструкциям. Например MOV Укажет машине переместить данные из одного места в другое. Разработчики также могут комментировать код (что невозможно с машинным языком).

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

Вот пример инструкции, написанной на сборке x86 Linux:

// assembly code mov eax,1 int 0x80

Эти две строки будут выполнять системный вызов, который закроет программу («1» представляет собой номер системного вызова, который означает «выход из программы»). Обратите внимание, что язык ассемблера отличается от машины к машине. Мы говорим, что это зависит от машины .

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

От ассемблерного кода к исполняемому файлу
От ассемблерного кода к исполняемому файлу

8.4 Языки высокого уровня

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

os.Exit(1)

На языке C мы можем написать:

// C Code exit(1)

С помощью Java мы можем написать:

// Java Code System.exit(1);

В этом примере нам не нужно перемещать число в регистр; мы используем языковые конструкции (функции, пакеты, методы, переменные, типы...). Цель этой книги — дать вам точные и краткие определения этих инструментов для создания приложений Go.

Программы высокого уровня также записываются в файлы. Файлы называются «исходные файлы». Как правило, языки программирования требуют добавления определенного расширения к имени файла. Для программ Go мы добавим «.go» в конец каждого файла, который мы будем писать. В PHP расширение «.php».

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

Go — компилируемый язык
Go — компилируемый язык

8.4.1 Компиляция и интерпретация

Обратите внимание, что некоторые языки программирования являются интерпретируемыми. Когда исходные файлы написаны, программисту не нужно их компилировать. Когда исходные файлы готовы, система может выполнить программу благодаря интерпретатору. Каждая инструкция, записанная в исходный файл, транслируется и выполняется интерпретатором. В некоторых случаях интерпретаторы сохраняют в кэше скомпилированную версию программы для повышения производительности (исходные файлы не переводятся каждый раз). PHP, Python, Ruby, Perl — это интерпретируемые языки.

9 Проверьте себя

9.1 Вопросы

  1. Где хранятся программы?
  2. Чтение данных с жесткого диска происходит медленнее, чем чтение данных из оперативной памяти. Правда или ложь?
  3. Вы можете записать в ПЗУ? Правда или ложь?
  4. Какие два типа памяти существуют?
  5. Каково определение «энергозависимой памяти»?
  6. Какая программа преобразует код, написанный на ассемблере, в объектный код?
  7. Какая программа преобразует объектный код в исполняемый файл?
  8. Назовите два преимущества языков высокого уровня по сравнению с языками низкого уровня?
  9. Go является интерпретируемым языком? Правда или ложь?

9.2 Ответы

  1. Где хранятся программы? В блок памяти (MU)
  2. Чтение данных с жесткого диска происходит медленнее, чем чтение данных из оперативной памяти. Правда или ложь? Истинный. Извлечение и запись данных в ОЗУ происходит молниеносно, тогда как доступ к данным, хранящимся на жестких дисках, обычно занимает больше времени.
  3. Пользователь компьютера может записать ПЗУ? Правда или ложь?ЛОЖЬ. Память этого типа доступна только для чтения. Он используется для хранения ОС (операционной системы)
  4. Какие два типа памяти существуют?
    Центральная память
    Вспомогательная память
  5. Каково определение «энергозависимой памяти»? Энергозависимая память будет стерта при выключении компьютера.
  6. Какая программа преобразует код, написанный на ассемблере, в объектный код? Ассемблер примет в качестве входных данных код языка ассемблера и сгенерирует машинный код.
  7. Какая программа преобразует объектный код в исполняемый файл? Линкер
  8. Назовите два преимущества языков высокого уровня по сравнению с языками низкого уровня?
    Они предлагают конструкции высокого уровня, которые проще в использовании.
    Код не будет привязан к технической архитектуре машины. Мы говорим, что код переносим.
  9. Go является интерпретируемым языком? Правда или ложь? Ложь: Go — компилируемый язык

10 ключевых выводов

  • На макроуровне компьютер состоит из:
    Блок памяти (MU): для хранения данных и программ
    Арифметико-логическое устройство (АЛУ): для выполнения вычислений.
    Блок ввода и вывода (IOU): для управления устройствами ввода и вывода.
    Блок управления (CU) будет управлять MU, ALU и IOU, следуя инструкциям, данным исполняемой программой.
  • CPU означает центральный процессор (также называемый процессором или микропроцессором), состоящий из ALU и CU.
  • Программа – это набор инструкций.
  • Разработчики пишут программы на языке программирования.
  • Языки программирования состоят из слов и символов, которые должны быть упорядочены в соответствии с определенными правилами.
  • Это языки программирования высокого и низкого уровня.
  • Машинный язык и язык ассемблера являются низкоуровневыми. Инструкции, написанные на этих языках, тесно связаны с аппаратной организацией и возможностями. Они предоставляют небольшие абстракции.
  • Go — это компилируемый язык программирования высокого уровня.