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

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

"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.

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

Кратко о теме

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

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

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

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

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

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

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

Транслятор — программа, которая переводит исходную программу с одного языка программирования в другую форму, понятную компьютеру, либо организует её выполнение. Он связывает запись, удобную программисту, с машинными командами. В зависимости от способа работы транслятор может заранее подготовить программу или обрабатывать её во время исполнения. Без такого шага процессор не сможет выполнить команды, записанные на языке высокого уровня.

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

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

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

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

Ранние языки часто создавали для конкретных потребностей. Fortran, появившийся в 1957 году, предназначался прежде всего для научных и инженерных вычислений; COBOL, разработанный в конце 1950-х годов, — для обработки деловой информации. Algol, созданный около 1960 года, помогал записывать алгоритмы и повлиял на развитие языков программирования. Позже BASIC (1964) сделали доступным для обучения и работы на компьютерах, а Pascal (1970) стал использоваться, в частности, для обучения программированию.

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

Основные этапы развития языков программирования

Этап или периодЯзык или группа языковГлавная особенностьДля каких задач применяли
Машинные языкиДвоичные команды процессораИсполняются непосредственно, зависят от устройства компьютераУправление компьютером и выполнение любых задач на уровне машинных команд
АссемблерыЯзыки с мнемоническими обозначениямиКоманды записываются символами, но соответствуют командам процессораСистемное программирование и задачи, требующие точного управления машиной
Первые языки высокого уровняFortran, COBOL, Algol (1950–1960-е годы)Ориентированы на запись вычислений, данных и алгоритмов в более удобной формеНаучные и инженерные расчёты, деловая обработка данных
Языки общего и учебного назначенияBASIC (1964), Pascal (1970) и другиеПодходят для широкого круга задач или обучения основам программированияОбучение, создание программ и решение различных практических задач

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

Разбор задач

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

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

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

Задача 2. Укажите, с каким этапом развития связан каждый язык и для каких задач он создавался: Fortran, COBOL, Algol, BASIC, Pascal.

  1. Сгруппируем языки по времени появления: Fortran возник в 1957 году, COBOL — в конце 1950-х, Algol — около 1960 года; BASIC появился в 1964 году, Pascal — в 1970 году.
  2. Свяжем ранние языки высокого уровня с задачами своего времени: Fortran предназначался для научных и инженерных вычислений, COBOL — для деловой обработки данных, Algol — для записи алгоритмов.
  3. Затем определим назначение более поздних примеров: BASIC создавали как доступный язык, в том числе для обучения, а Pascal получил широкое применение в обучении и структурном программировании.

Ответ: все пять примеров относятся к языкам высокого уровня; первые три связаны с ранним этапом их развития и специализированными задачами, BASIC и Pascal — с более поздним развитием языков для широкого применения и обучения. Назначение языка объясняет, почему его конструкции были удобны для определённых пользователей.

Задача 3. Объясните, почему программу на языке высокого уровня нельзя просто передать процессору и чем компиляция отличается от интерпретации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем нужен транслятор?

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

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

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

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

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

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

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.