Обзор языков програмирования

Автор работы: Пользователь скрыл имя, 06 Сентября 2013 в 20:47, реферат

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

Цель работы – исследовать виды языков программирования тенденцию развития, иерархию и способы программирования.

В процессе выполнения работы необходимо было проделать следующее.
Изучение языка Ассемблера
Изучение языков высокого уровня
Изучение объектно-ориентированных языков
Изучение парадигм программирования

Содержание работы

ВВЕДЕНИЕ 3
1. ЯЗЫК АССЕМБЛЕРА 4
2.ЯЗЫКИ ВЫСОКОГО УРОВНЯ................................................................................................8
2.1 FORTRAN................................................................ ........ ... ....... .........................................10
2.2 LISP..................................................................... ...... .......... ........................ . ......................12
3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 14
3.1 ЯЗЫК С++ 15
4. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ: 18
4.1 Процедурное программирование 18
4.2-Модульное программирование 18
4.3-Абстракция данных 18
4.4-Объектно-ориентированное программирование 19
4.5-Поддержка абстракции данных 21
4.6-Поддержка объектно-ориентированного программирования 21
ЗАКЛЮЧЕНИЕ 23
ЛИТЕРАТУРА.............................................................................................................................239

Файлы: 1 файл

UNIRS2.docx

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

Оглавление

 

ВВЕДЕНИЕ 3

1.  ЯЗЫК АССЕМБЛЕРА 4

2.ЯЗЫКИ ВЫСОКОГО УРОВНЯ................................................................................................8

2.1 FORTRAN................................................................ ........ ... ....... .........................................10

2.2 LISP..................................................................... ...... .......... ........................ . ......................12

3.  ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 14

3.1 ЯЗЫК С++ 15

4. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ: 18

4.1 Процедурное программирование 18

4.2-Модульное программирование 18

4.3-Абстракция данных 18

4.4-Объектно-ориентированное программирование 19

4.5-Поддержка абстракции данных 21

4.6-Поддержка объектно-ориентированного программирования 21

ЗАКЛЮЧЕНИЕ 23

ЛИТЕРАТУРА.............................................................................................................................239                             

              

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реферат

Пояснительная записка  с. 24,  6 источников.

 

ЯЗЫКИ ПРОГРАММИРОВАНИЯ, ПРОГРАММЫ, ДАННЫЕ, ПРОГРАММИРОВАНИЕ, АБСТРАКИЦИЯ.

 

Объектом исследования работы являлась языки программирования.

 

Цель работы – исследовать виды языков программирования тенденцию  развития, иерархию и способы программирования.

 

В процессе выполнения работы необходимо было проделать следующее.

  1. Изучение языка Ассемблера
  2. Изучение языков высокого уровня
  3. Изучение объектно-ориентированных языков
  4. Изучение парадигм программирования

 

 

 

 

 

ВВЕДЕНИЕ

 

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

 

ПОНЯТИЕ О  ЯЗЫКЕ ПРОГРАММИРОВАНИЯ

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

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

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

Синтаксис языка определяет правила построения операторов. Любой  корректный оператор соответствует  этим правилам. Правила синтаксиса — формальные. Проверка правильности исходного текста и поиск синтаксических ошибок могут быть выполнены автоматически.

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

 

 

 

  1. ЯЗЫК АССЕМБЛЕРА

 

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

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

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

Ассемблер, программа, преобразующая  текст на языке ассемблера в машинные команды, — это простейший транслятор.

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

 

Программисты уже были знакомы с понятием подпрограммы: Грейс Хоппер и ее коллеги применяли  подпрограммы на гарвардском «Марке-1»  во время второй мировой войны, однако каждая подпрограмма решала свою специфическую задачу. 
 
Язык ассемблера в русском языке часто называют просто ассемблером. Транслятор с этого языка тоже обычно называют просто ассемблером, что в ряде случаев может создать путаницу. Процесс трансляции с языка ассемблера в машинный код нередко называют ассемблированием.  
 
Использование термина «язык ассемблера» может вызвать ошибочное мнение о существовании единого языка низкого уровня или хотя бы стандарта на такие языки, что абсолютно не соответствует истине. Поэтому при именовании языка, на котором написана конкретная программа, желательно уточнять, для какой архитектуры она предназначена и на каком диалекте языка написана.

Ассемблерные программы  могут быть очень эффективными. Из программистов, с равными навыками и способностями, работающих на языке  Ассемблера создать программу более  компактную и быстродействующую, чем  такую же программу, написанную на языке  высокого уровня. Это так практически  для всех небольших или средних  программ. К сожалению, по мере возрастания  размеров, программы на языке Ассемблера теряют часть своих преимуществ. Это происходит из-за необходимого в ассемблерной программе внимания к деталям. Как вы видите, язык Ассемблера требует от вас планирования каждого  действия компьютера. В небольших  программах это позволяет оптимизировать работу программы с аппаратными  средствами. В больших же программах огромное количество деталей может  помешать вам эффективно работать над самой программой, даже если отдельные компоненты программы окажутся очень неплохими. Безусловно, программирование на языке Ассемблера отвечает потребностям не каждой программы.  
 
Программы на языке Ассемблера очень точны. Поскольку этот язык позволяет программисту непосредственно работать со всем аппаратным обеспечением, ассемблерная программа может делать то, что недоступно никакой другой программе. Несомненно, что в программировании устройств ввода-вывода, где требуется контроль над отдельными разрядами регистров устройства, программирование на языке Ассемблера - единственный подходящий выбор.  
 
Конечно, вы должны пользоваться программами на языке Ассемблера, когда нет другого способа написать программу. Например, программисты фирмы IBM писали с использованием процедур Ассемблера все программы управления устройствами ввода-вывода для IBM PC. Для управления устройствами ввода-вывода и системой прерываний, потребовалась та точность языка Ассемблера, которую не может обеспечить ни один другой язык программирования. Аналогично, на языке Ассемблера в фирме IBM писались процедуры диагностики, которые должны проверять каждую деталь аппаратуры.  
 
Язык Ассемблера необходим также и в тех случаях, когда главными являются рабочие характеристики программы. Это может быть время исполнения или конечный размер программы. Библиотека математических процедур Фортрана - пример программы, требующей хороших характеристик, как в отношении времени, так и размера. Математические процедуры являются частью любой программы на Фортране, поэтому они должны занимать как можно меньше места. Кроме того, эти процедуры управляют всеми математическими функциями в фортрановской программе и часто используются. Следовательно, они должны исполняться быстро. 
Какая программа не подходит для языка Ассемблера? Конечно, вы можете написать на нем любую программу, однако с большой программой лучше работать в языке высокого уровня, таком как Бэйсик или Паскаль. Эти языки позволяют вам сосредоточиться на своей проблеме. Вам не приходится непосредственно иметь дело с тонкостями аппаратного оборудования и процессора. Языки высокого уровня позволяют вам отступить назад и за деревьями увидеть лес.  
 
При программировании на языке Ассемблера и только через написание программ на этом уровне детализации вы можете понять, как работает машина на самом нижнем уровне. Если вы хотите узнать о компьютере все, вы должны быть знакомы с языком ассемблера. Единственный способ добиться этого: писать программы на этом языке.

 

Общепринятого стандарта  для синтаксиса языков ассемблера не существует. Однако, существуют стандарты де-факто — традиционные подходы, которых придерживаются большинство разработчиков языков ассемблера. Основными такими стандартами являются Intel-синтаксис и AT&T-синтаксис.  
 
Общий формат записи инструкций одинаков для обоих стандартов:  

`[метка:] опкод [операнды] [;комментарий]`

 
Опкод — непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). В качестве операндов могут выступать константы, названия регистров, адреса в оперативной памяти и пр.. Различия между стандартами Intel и AT&T касаются, в основном, порядка перечисления операндов и их синтаксиса при различных методах адресации. Используемые мнемоники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — мнемоники процессоров и контроллеров Motorola, ARM, x86). Они описываются в спецификации процессоров. Например, процессор Zilog Z80 наследовал систему команд Intel i8080, расширил ее и поменял мнемоники (и обозначения регистров) на свой лад. Например, сменил интеловские mov на ld. Процессоры Motorola Fireball наследовали систему команд Z80, несколько её урезав. Вместе с тем, Motorola официально вернулась к мнемоникам Intel. и в данный момент половина ассемблеров для Fireball работает с интеловскими мнемониками, а половина с мнемониками Zilog. 

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

-Определение данных (констант  и переменных)

-Управление организацией  программы в памяти и параметрами  выходного файла

-Задание режима работы  компилятора 

-Всевозможные абстракции (т.е. элементов языков высокого  уровня) – от оформления процедур  и функций до условных констукций и циклов.

 

При программировании на языке  ассемблера используются данные следующих

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

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

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

 

К недостаткам можно отнести:

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

 

  1. ЯЗЫКИ ВЫСОКОГО УРОВНЯ

 
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей.

 
Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) – для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения. 
 
Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal. 
 
Высокоуровневый язык программирования – язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. 
 
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным. 
 
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования. 
 
Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п. 
 

Информация о работе Обзор языков програмирования