Главная arrow Гибкие системы arrow Симбиоз FORTH, C, Assembler
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Симбиоз FORTH, C, Assembler Печать
Летом 1985 г. в водах Северной Атлантики на глубине более 3 км в кромешной темноте, исследуя гористый рельеф океанского дна, медленно продвигался подводный аппарат. Он носил имя «Арго» - в честь корабля, на котором герой древнегреческой мифологии Ясон отправился на поиски золотого руна. Этот аппарат, имевший около 5 м в длину, напоминал секцию строительных лесов, положенную набок и начиненную аппаратурой: мощными прожекторами, сон аром (акустическим эхолокатором), видеокамерами. А вверху, на поверхности океана, в рубке управления исследовательского судна ВМС США «Кнорр» перед видеоэкраном расположились члены франко-американской научной экспедиции. Они напряженно следили за изображениями, поступающими с борта аппарата, скользящего над безжизненным ландшафтом ущелий и грязевых долин.

После 16 дней упорных поисков на экране возникли россыпи металлических обломков, а затем очертания корабельного котла, которые ни с чем нельзя было спутать. Торжествующий крик вырвался из груди наблюдателей. Океанский лайнер «Титаник», затонувший 73 года назад (и унесший в океанские глубины более 1500 человек из 2200 находившихся на борту) был наконец обнаружен.

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

Комплекс устройств, установленных на борту «Арго» - сонар, прожекторы и видеокамеры, - управлялся несколькими компьютерами, каждый из которых был запрограммирован на своем языке. Компьютер самого подводного аппарата использовал компактный, но гибкий язык Форт (FORTH, не путать с Фортраном), разработанный первоначально для управления движением телескопов; теперь с его помощью осуществляется управление разнообразными приборами и процессами - от кардиомониторов до специализированных видеокамер.

Компьютер на борту судна «Кнорр» был запрограммирован на мощном, но малопонятном языке C. Телеметрическая система на обоих концах коаксиального кабеля (в палец толщиной), связывающего подводное и надводное суда, которая позволяла компьютерам «разговаривать» между собой, использовала еще один примитивный язык - язык Assembler.

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

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

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

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

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

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

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

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

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

Менее полувека назад машинный код был единственным средством общения человека с компьютером. С тех пор поколения создателей языков сумели заставить сам компьютер работать переводчиком с языков, понятных человеку, в машинный код. Если теперь программист пишет в программе команду PRINT «HELLO» (печатать «здравствуйте») или LET A = B * (C - D) (LET - положим), то вызывается программа перевода - называемая транслятором, - которая преобразует эти команды в нули и единицы, понятные компьютеру.
 
bsum
Первые языки программирования были столь несовершенны, что от идеи программы до ее реализации в виде машинных команд пролегал нелегкий путь. На рисунке воспроизведена фраза, записанная в «шифрованной» системе обозначений, называемой языком ассемблера, которая приказывает компьютеру занести (ST store) число 5 в ячейку памяти, помеченную меткой BSUM.