Языки программирования. Обзор, возможности, достоинства, недостатки

Автор работы: Пользователь скрыл имя, 25 Апреля 2010 в 17:13, Не определен

Описание работы

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

Файлы: 1 файл

Языки программирования.doc

— 90.00 Кб (Скачать файл)

Оглавление

1.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Понятие о языках программирования. 

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

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

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

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

Компиляторы и интерпретаторы. 

    Что же нужно, чтобы «создать язык программирования»?

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

    По принципу действия различают  два вида трансляторов: компиляторы и интерпретаторы. Соответственно с этим можно выделить два класса языков программирования: компилируемые и интерпретируемые.

    Трансляция – это перевод.  Если мы посмотрим, как работают  переводчики с иностранных языков, то тоже увидим, что существует  два подхода: синхронный перевод  и перевод текстов.

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

    Литературный переводчик сначала  несколько раз прочитает весь текст, подлежащий переводу. Он заранее найдет в нем все особо сложные для перевода места, построит нужные конструкции и будет ими пользоваться всякий раз, когда возникнет необходимость. При переводе одной конкретной фразы переводчик должен учитывать особенность всей книги в целом и даже особенности других произведений того же автора.

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

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

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

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

Уровни  языков программирования. 

    Существует два уровня языков программирования: языки низкого уровня и языки высокого уровня.

    Язык программирования низкого уровня – это язык программирования, созданный для использования со специальным типом процессора и учитывающий его особенности. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что язык близок к машинному коду (он позволяет непосредственно реализовать некоторые команды процессора).

    Языки низкого уровня мало  похожи на нормальный, привычный  человеку язык. Большие, грамосткие  программы на таких языках  пишутся редко. Зато если программа  будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.

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

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

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

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

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

    Достоинства языков программирования высокого уровня:

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

    Существуют также как универсальные, так и специализированные языки программирования. 

Языки низкого уровня.

Ассемблер.

    К языкам низкого уровня относятся языки Ассемблера. Свое название они получили от имени системной программы Ассемблер, которая преобразует исходные программы, написанные на таких языках, непосредственно в коды машинных команд. Термин «ассемблер» произошел от английского слова assembler – сборщик частей в одно целое. Частями здесь служат операторы, а результатом сборки – последовательность машинных команд. Процесс сборки называется ассемблированием.

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

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

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

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

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

Информация о работе Языки программирования. Обзор, возможности, достоинства, недостатки