Первоначальный прогресс в технологии программирования был связан с идеей использования имен вместо кодов операций и адресов данных. Использование имен вместо кодов операций резко улучшают читабельность программ. Для описания размещения данных вместо машинных адресов используется список из нескольких имен, которые обозначают блоки оперативной памяти. Все прочие адреса описываются смещением от начала того или иного поименованного блока. В результате достигаются две цели. Во-первых, программа лучше читается и, соответственно, лучше отлаживается и лучше модифицируется. Во-вторых, для изменения адресации программы нужно изменить не все адреса, а всего лишь один начальный адрес именованного блока. Все другие смещения от этого адреса изменяются автоматически.
Язык записи команд, основанный на этой идее, получил название языка Ассемблера. На самом деле его структура намного сложнее описанной здесь. Однако в основнй своей части – максимальной приближенности к системе машин¬ных команд – дело обстоит так, как описано. В-частности, разные типы компьютеров характеризуются разными Ассемблерами, так что один из упомянутых недостатков машинных языков сохраняется. Однако при использовании Ассемблера возникает новый интересный аспект. Программа, записанная на Ассемблере, не может восприниматься компьютером непосредственно. Следовательно, ее нуж¬но прочесть как обыкновенный текст и затем преобразовать в информацию, которая будет интерпретироваться компьютером как программа. Это дела¬ется с помощью специальной программы, называемой транслятором, а про¬цесс преобразо¬вания программы на Ассемблере называется трансляцией. Попутно при трансляции на транслятор можно возложить выявление неко¬торых ошибок при записи программы, нарушающих соглашения по записи. Такие ошибки называются синтаксическими.
Развитие программирования связано со слиянием двух ветвей – теорети¬ческо¬го и практического программирования – и появлением языков програм¬миро¬вания высокого уровня. Язык программирования высокого уров¬ня позволяет отвлечься от конкретного машинного языка конкретного типа компьютеров и конкретного Ассемблера. Такой язык содержит правила записи программ, которые, с одной стороны, достаточ¬ны и удобны для описания алгоритмов решения задач, а с другой стороны, толкуются совершенно однозначно и могут быть преобразованы в програм¬мы в машинных кодах. Задача программиста заключается в том, чтобы подготовить правильный текст на языке программирования, а остальное возьмет на себя транслятор, который прочтет этот текст, проверит его на соответствие правилам языка и сформирует программу на машинном языке. Естественно, транслятор должен быть свой для каждого типа компьютера.
Языки программирования с описанными выше свойствами называются машинно-независимыми. Отметим, что при повсевместном переходе на языки программирования программой стал называться текст на языке программи¬ро¬вания, а оттранслированная программа на машинном языке стала назы¬ваться машинным кодом или просто кодом.
Забегая вперед, следует сказать, что никто не составляет текст программы целиком вплоть до малейших деталей. В мире уже составлено огромное коли¬чество программ, и очень многие из них имеют тождественные фрагменты, выполня-ющие одинаковые подзадачи. Наиболее типичные и употребитель¬ные фрагменты уже написаны, отлажены и вставлены в трансляторы в форме так называемых стандартных процедур и функций. Из них составлены библи¬о¬теки, которыми программист может пользоваться (и обычно пользуется). Поэтому при трансляции программы, составленной программистом, не получается нормального кода: в нем нет тех внешних программ, которые хранятся в библиотеках. Чтобы отличить такой промежуточный продукт от работоспособной программы, он помещается в файл с расширением .obj (object), в то время как окончательный код получает расширение .exe (execute). Соответственно компиляцией называется преобразование текста программы в obj-файл, в то время как образование exe файла путем сборки кода из нескольких фрагментов называется редактированием связей (линков¬кой на жаргоне программистов, от английского Link).
8th Май 2011
|
Теги:
|