Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

План лекции. Имени И.М. Губкина в г. Оренбурге




Программирования

Имени И.М. Губкина в г. Оренбурге

 

Л Е К Ц И Я № 18

 

по учебной дисциплине "ИНФОРМАТИКА"

Тема № 5. Программное обеспечение и технологии

Занятие № 25. Языки программирования высокого уровня

 

 

I. Введение................................................................................... 5 мин.

II. Основная часть ……………………………………………. 80 мин.

 

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

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

3. Системы программирования...................... 20 мин.

 

III. Заключение........................................................................... 5 мин.

 

 

ВВЕДЕНИЕ

 

При изучении темы № 4 было показано, что любая задача, подлежащая решению на ЭВМ, должна быть предварительно соответствующим образом подготовлена. Подготовка задачи к решению на ЭВМ включает несколько этапов. Один из основных этапов подготовки – создание алгоритма решения задачи. При этом было отмечено, что алгоритм может быть представлен различными способами: для человека наиболее понятен алгоритм, изображенный в виде блок-схемы, а для ЭВМ подходит только представление алгоритма средствами алгоритмического языка программирования.

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

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

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

 

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

 

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

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

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

Рассмотрим некоторые основные понятия, общие для большинства языков программирования.

Оператор – одно из ведущих понятий всех языков программирования. Каждый оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных.

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

Любая величина характеризуется типом, именем и значением. Наиболее распространенные типы величин – числовые (целые и вещественные), символьные, логические.

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

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

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

 
 

Язык программирования составляет ядро системы программирования. Существующие языки про­граммирования можно разделить на две группы: процедурные и непроцедурные (рис.1).

 

Рисунок 1 – Общая классификация языков программирования

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

Процедурные языки программирования разделяют на языки низкого и высокого уровня.

Каждый процессор имеет систему команд – совокупность машинных кодов, которые он понимает и может исполнять. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня (машинно-ориентированным). Это вовсе не означает, что он "плохой". Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком программирования самого низкого уровня является язык ассемблера. Языки программирования низкого уровня позволяют создавать про­граммы из машинных кодов, обычно в шестнадцатеричной форме. С ними трудно работать, но созданные с их помощью высококвалифицированным программистом программы занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее разрабатывать системные программы, драйверы, некоторые другие виды программ. Поскольку наборы инструкций для каждого типа процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык программирования низкого уровня, и написанная на нем программа может быть использована только в этой среде.

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

Во-первых, машинная программа, в конечном счете, записывается с помощью лишь двух симво­лов: 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операций, ориентированных на структуру процессора. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т. п. Коман­да на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементар­ные арифметические и логические операции.

Языки программирования высокого уровня имеют, по сравнению с языками программирования низкого уровня, следующие достоинства:

– алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;

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

– конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде;

– используется аппарат переменных и действия с ними;

– поддерживается широкий набор типов данных.

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

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

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

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

 

Сформулируем выводы по первому учебному вопросу:

1. Основное назначение языков программирования – облегчить процесс алгоритмизации вычислительного процесса на языке, понятном процессору ПЭВМ.

2. Различают языки программирования низкого (например, язык ассемблера) и высокого (алгоритмические языки) уровней.

 

 

2 ОБЗОР ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

 

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

Fortran (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассем­блере, выражали серьезное сомнение в возможности появления высокопроизво­дительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и заканчивая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях.

Cobol (Кобол). Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х годов. Он отличается большой "многословностью" – его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня. Достаточно сказать, что наибольшую зарплату в США получают программисты на Коболе.

А1gо1 (Алгол). Компилируемый язык, созданный в 1960 году. Он был призван заме­нить Фортран, но из-за более сложной структуры не получил широкого распростра­нения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия доста­точно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы. Язык Алгол сыграл большую роль в теории, но для практического программирования сейчас почти не используется.

Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования Никлаусом Виртом и названный в честь ученого Блеза Паскаля, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных программных проектов. Изначально Паскаль был задуман как язык программирования для студентов. Он и сейчас является основным языком программирования, используемым в качестве учебного, во многих высших учебных заведениях. На базе языка Паскаль созданы несколько более мощных языков (Модула, Ада, Дельфи).

BASIC (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Бейсик был создан в 1964 г. Томасом Куртом и Джоном Кемени как язык для начинающих программистов, облегчающий написание простых программ. В настоящее время разработано несколько различных версий языка Бейсик, таких как GWBASIC, QBASIC, Pro-BASIC, Turbo-BASIC, Visual-BASIC и др.

С (Си). Данный язык был создан в лаборатории Ве11 и первоначально не рассматри­вался как массовый. Он планировался для замены ассемблера, чтобы иметь возмож­ность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора.

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

PL/1 (ПЛ/1). В середине 60-х годов компания 1ВМ решила взять все лучшее из языков Фортран, Кобол и Алгол и воплотить в одном языке программирования. В результате в 1964 году на свет появился новый компилируемый язык программирования, который получил название Programming Language One. В этом языке было реализовано множество уникальных решений, полезность которых удается оценить только спустя 33 года, в эпоху крупных про­граммных систем. По своим возможностям ПЛ/1 значительно мощнее многих других языков (Си, Паскаля). Например, в ПЛ/1 присутствует уникальная возможность указания точности вычислений – ее нет даже у Си++ и Явы. В настоящее время язык ПЛ/1 почти не используется.

Ada (Ада). Назван по имени леди Огасты Ады Лавлейс, дочери английского поэта Байрона и его отдаленной родственницы Анабеллы Милбэнк. В 1979 году сотни экспертов Министерства обороны США отобрали из 17 вариантов именно этот язык, разработанный небольшой группой под руководством Жана Ихбиа. Он удовле­творил на то время все требования Пентагона, а к сегодняшнему дню в его развитие вложены десятки миллиардов долларов. Структура самого языка похожа на Паскаль. В нем имеются средства строгого разграничения доступа к различным уровням спецификаций, доведена до предела мощность управляющих конструкций.

 

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

– выделении классов объектов;

– установлении характерных свойств объектов и методов их обработки;

– создании иерархии классов, наследовании свойств объектов и методов их обработки.

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

Из языков объектного программирования, популярных среди профессионалов, следует назвать прежде всего:

С++ (Си++). Си++ - это объектно-ориентированное расширение языка Си, создан­ное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность работы программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки;

Java (Джава). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора – виртуальной Java-машины, версии которой созданы сегодня для любых платформ. Благодаря наличию мно­жества Java-машин программы на Джава можно переносить не только на уровне исход­ных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Джава сегодня занимает второе место в мире после Бейсика. Язык Джава чрезвычайно эффективен для создания интерактивных Web-страниц;

Smalltalk (Смолток). Работа над этим языком началась в 1970 году в исследова­тельской лаборатории корпорации XEROX, а закончились спустя 10 лет, вопло­тившись в окончательном варианте интерпретатора SMALLTALK - 80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В этом языке отсутствуют операторы или данные. Все, что входит в Смолток, является объектами, а сами объекты общаются друг с другом исключи­тельно с помощью сообщений (например, появление выражения I+1 вызывает посыл­ку объекту I сообщения "+", то есть "прибавить", с параметром 1, который считается не числом-константой, а тоже объектом). Больше никаких управляющих структур, за исключением "оператора" ветвления (на самом деле функции, принадлежащей стандартному объекту), в языке нет, хотя их можно очень просто смоделировать. Сегодня версия VisualAge for Smalltalk активно развивается компанией IВМ;

Delphi (Дельфи) – язык объектно-ориентированного "визуального" программирования. Явился развитием языка Паскаль.

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

Типичными представителями декларативных языков являются:

LISP (Лисп). Интерпретируемый язык программирования, созданный в 1960 году Джоном Маккарти. Ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку больших объемов текстовой информации;

Prolog (Пролог). Создан в начале 70-х годов. Программа на этом языке, в основу которого положена математическая модель теории исчисления пре­дикатов, строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний "мотор" Пролога сам ищет решение с помощью методов поиска и сопоставления.

 

Подведем краткие итоги изучения второго учебного вопроса:

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

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

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 499; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.056 сек.