На Горох
Информатика, 7 класс

§ 3. История языков программирования

"Информатика (в 2-х частях)", Горячев А.В., Макарина Л.А., Паволоцкий А.В., Платонова Н.С.

Объяснение темы В оглавлении: § 3. История языков программирования

Кратко о теме

Языки программирования позволяют записывать команды, по которым компьютер решает задачи. Первые программы составляли из машинных кодов — их компьютер выполнял напрямую, но человеку было трудно их запоминать и проверять. Ассемблер заменил часть кодов условными обозначениями, а языки высокого уровня сделали запись алгоритмов ещё понятнее. Чтобы компьютер понял такую программу, используют транслятор: он переводит команды заранее или по мере выполнения. История языков показывает, как способы программирования становились удобнее и подходили для всё более сложных задач.

Объяснение темы

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

Определения и обозначения

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

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

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

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

Как это устроено

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

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

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

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

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

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

ЭтапКак записывали командыЧто требовалось для выполненияПреимущество и ограничение
Машинный языкКодами команд, понятными процессоруКомпьютер выполнял команды непосредственноПрямое управление, но запись трудна для человека
Язык ассемблераУсловными обозначениями машинных командПеревод в машинный кодЗапись понятнее, но тесно связана с командами компьютера
Языки высокого уровняКомандами, удобными для записи алгоритмовПеревод или интерпретацияУдобно человеку, но обычно требуется транслятор
Роль транслятораПреобразует программу с одного языка на другойКомпилятор переводит заранее, интерпретатор — во время выполненияПозволяет компьютеру выполнять программу, записанную на другом языке

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

Разбор задач

Задача 1

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

  1. Сначала поставим машинный язык: команды в нём записаны кодами, которые процессор может выполнять напрямую.
  2. Следом укажем ассемблер: в нём те же машинные команды записывают условными обозначениями, более удобными человеку.
  3. Последними поставим языки высокого уровня: их команды ещё понятнее для человека и позволяют описывать алгоритмы без постоянной работы с машинными кодами.
  4. Сравним результат: по мере развития запись становилась удобнее человеку, но для выполнения всё чаще требовался перевод.

Ответ. Порядок такой: машинный язык, язык ассемблера, язык высокого уровня. Команды перешли от кодов к условным обозначениям, а затем к более понятной человеку записи алгоритмов.

Задача 2

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

  1. Отметим, что команды записаны условными обозначениями, а не непосредственными машинными кодами.
  2. Сопоставим это с определениями: условные обозначения машинных команд характерны для языка ассемблера.
  3. Проверим, может ли компьютер выполнить запись без преобразования. Процессор выполняет машинные команды, поэтому обозначения ассемблера сначала нужно перевести.

Ответ. Это язык ассемблера. Его обозначения удобнее человеку, но они не являются машинным кодом, поэтому для выполнения требуется перевод в машинные команды.

Задача 3

Условие. Для одной задачи написали программу на языке высокого уровня. Объясни, зачем компьютеру нужен транслятор, и сравни предварительный перевод всей программы с переводом команд во время выполнения. Важно различать не сами языки, а способы перевода.

  1. Установим причину: язык высокого уровня удобен программисту, но процессор выполняет машинные команды.
  2. Значит, понадобится транслятор — программа, которая преобразует запись в понятную компьютеру форму.
  3. При предварительном переводе компилятор обрабатывает программу целиком до её выполнения.
  4. При переводе во время работы интерпретатор обрабатывает команды по мере того, как программа выполняется.

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

Типичные ошибки

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

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

Ошибка: путать язык программирования с транслятором. Оба связаны с записью и выполнением программы, поэтому их роли иногда смешивают. Язык задаёт правила записи команд, а транслятор — это программа, которая переводит запись; проверь, описывается ли система правил или инструмент перевода.

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

Связь с другими темами

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

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

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

Что запомнить

  • Язык программирования задаёт правила записи команд для компьютера.
  • Машинный язык компьютер выполняет непосредственно.
  • Ассемблер использует условные обозначения для машинных команд.
  • Языки высокого уровня удобнее человеку для записи алгоритмов.
  • Для выполнения программы на другом языке может понадобиться транслятор.
  • Компилятор обычно переводит программу заранее, а интерпретатор — в ходе выполнения.
  • Развитие языков связано с поиском более удобных способов создавать программы.

Частые вопросы по теме

Почему первые программы было трудно писать?

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

Чем язык ассемблера отличается от машинного языка?

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

Почему компьютер не всегда может выполнить программу на языке высокого уровня напрямую?

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

Чем компилятор отличается от интерпретатора?

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

Почему старые языки программирования продолжают использовать?

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

Спросить по теме параграфа

§ 3. История языков программирования

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
7 класс
Учебник
"Информатика (в 2-х частях)", Горячев А.В., Макарина Л.А., Паволоцкий А.В., Платонова Н.С.