Машинные языки, языки ассемблера и языки высокого уровня

Лекция 1

ВВЕДЕНИЕ. ОСНОВЫ ПРОГРАММИРОВАНИЯ

Для работы с микроконтроллерами сегодня адаптировано множество традиционных языков программирования и их вариантов. Тем не менее основным языком для профессионального программирования микроконтроллеров является С или С++.

Основной задачей курса является изучение применяемого на сегодняшний день повсеместно объектно-ориентированного подхода при проектировании и разработке приложений с использованием языка С++, а также изучение методов программирования программ под ОС Microsoft Windows.

Инструментальное программное обеспечение

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

Язык программирования – формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера).

Составными частями языка программирования являются:

- алфавит – конечный набор элементарных символов, разрешенных для использования;

- синтаксис – набор правил образования языковых конструкций и символов алфавита;

- семантика – набор правил однозначного толкования языковых конструкций.

Система программирования – это система разработки программного обеспечения на каком-либо языке программирования, включающая в себя следующие компоненты:

- интегрированную среду программирования;

- транслятор;

- редактор текстов программ,

- библиотеки функций,

- программную документацию,

- отладчик и др.

Интегрированная среда программирования (от англ. Integrated Development Environment, IDE) – это программа, имеющая встроенный редактор текстов, подсистему работы с файлами, транслятор, встроенный отладчик, справочную систему, некоторые библиотеки функций. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке программного обеспечения.

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

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

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

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

Машинные языки, языки ассемблера и языки высокого уровня

На сегодня существуют сотни языков программирования. Их можно разделить на три основных типа:

– машинные языки

– языки ассемблера

– языки высокого уровня

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

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

Язык С является базисным для языка программирования С++. Поэтому кратко остановимся на предыстории этого языка.

Язык программирования С был разработан в лабораториях Bell Laboratories в США в период с 1969 по 1973 год Кеном Томпсоном и Деннисом Ритчи (практически в одно время с Паскалем) для организации операционной системы UNIX. Предшественниками языка С явились языки Algol 60, CPL, BCPL и B.

Для выполнения этой работы Ритчи нуждался в таком языке программирования, который был бы кратким, а так же мог бы обеспечивать эффективное управление аппаратными средствами и создание компактных, быстро работающих программ. Традиционно такие потребности программистов удовлетворял язык ассемблера, который тесно связан с внутренним машинным языком компьютера. Однако язык ассемблера – это язык низкого уровня, т.е. он привязан к определённому типу компьютера. Поэтому, если программу на языке ассемблера необходимо перенести на компьютер другого типа, то её приходится переписывать заново на другом языке ассемблера. Операционная система UNIX предназначалась для работы на разнообразных типах компьютеров (или платформах). А это предполагало использование языка высокого уровня, который ориентирован на решение задач, а не на конкретное программное обеспечение. Это обеспечивается использованием специальных программ (компиляторов), которые переводят программу с языка высокого уровня на машинный язык. Поэтому программу на языке высокого уровня можно использовать на разных платформах, применяя соответствующий компилятор.

 
  Машинные языки, языки ассемблера и языки высокого уровня - student2.ru

Рисунок 1 – Схема развития языка программирования С++

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

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

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

Чтобы преодолеть эти и другие недостатки языка С был разработан на его основе язык программирования С++ сотрудником научно-исследовательского центра AT&T Bell Laboratories (Нью-Джерси, США) Бьярном Страуструпом в 1979 году. Первоначальное название «С++ с классами» было изменено на С++ в 1983 году. С++ обеспечивает возможность ООП

Основное отличие языка C++ от С заключается в реализации объектно-ориентированного подхода программирования - чрезвычайно мощного современного способа программирования. Однако, С++ произошел от С, поэтому по-прежнему со­храняет свойства структурного языка программирования.

Существует множество различных реализаций для С++. Каждая из них имеет свои достоинства и недостатки. Наибольшей популярностью пользуются реализации этого языка фирм Borland – Turbo C++, C++ Builder и Microsoft – Visual C++, а также Symantec – Symantec C++.

С++ обеспечивает концептуальный фундамент, на который опираются другие языки программирования и многие современные средства обработки данных. Потомками С++ стали такие почитаемые языки, как С# (С Sharp от Microsoft) и Java (от Sun Microsystems), используемые для написания web-приложений. C-подобный синтаксис имеют также языки PHP, Java Script, Nemerle, D.

Наши рекомендации