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

Что такое машинный язык ?


Чтобы задать вопрос, почему Форт работает не так, как другие языки программирования, надо сначала спросить, а что такое язык ЭВМ ? Компьютер -- это машина, которая может производить включение и выключение переключающих устройств с очень большой скоростью (миллион или более раз в секунду). Каждое переключающее устройство может представлять "1" (включено) или "0" (выключено), большая часть этих переключающих устройств находится в памяти ЭВМ. Компьютер может хранить числа, буквы и другие данные в памяти, поскольку он обладает способностью переводить их в последовательность из единиц и нулей (включенных и выключенных состояний переключающих устройств). Так, например, буква R обычно хранится в ЭВМ в виде 01010010, буква S -- в виде 0101011, а буква r -- как 01110010. Но еще важнее, что и инструкции, которые указывают компьютеру, что он должен делать, также хранятся в памяти в виде последовательности из единиц и нулей. Центральное процессорное устройство (ЦПУ) считывает эти последовательности, определяя, что делать. Эта последовательность единиц и нулей, на которую отзывается центральный процессор, представляет собой программу самого низкого уровня, и фактически только такую программу процессор может непосредственно исполнять.

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

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

Язык ассемблера все же неудобен для решения большинства практических задач, поэтому в основном его используют для написания других языков программирования, чтобы еще на одну ступень подняться над машинным языком ЦПУ. Языки такого рода называют языками программирования высокого уровня. К ним относятся Фортран, Бейсик, Кобол, АПЛ, Паскаль и тот, который нас здесь больше всего интересует -- Форт. Они преобразуют понятные человеку символы (например, * -- обозначение операции умножения двух чисел) в последовательность понятных компьютеру инструкций из единиц и нулей. Следовательно, языки высокого уровня выполняют роль переводчиков между человеком и ЭВМ.

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


Часто текст программы называют просто кодом, будь то язык машины, ассемблера или язык высокого уровня. Компилирующие языки появились первыми, самыми старыми среди них являются Фортран, Алгол и Кобол, которые еще и сейчас применяются преимущественно на больших ЭВМ.

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

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


Содержание раздела