Выполнил: студент 345 группы
Проверила : Коршикова В.А.
Хабаровск
2007
Содержание.
ВВЕДЕНИЕ. 3
1. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ. 5
2. ПРОБЛЕМНО – ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 6
3. ПРОЦЕДУРНО – ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 7
4. ОБЪЕКТНО – ОРИЕНТИРОВАННЫЕ ЯЗЫКИ 9
5. ХАРАКТЕРИСТИКА ЯЗЫКОВ ПРОГРАМИРОВАНИЯ 11
1. ЛИСП 11
2. ФОРТРАН 12
3. БЕЙСИК 14
4. РЕФАЛ 15
5. ПРОЛОГ И ПРОЛОГ ++ 16
6. CИ 18
7. СИ++ 20
ЗАКЛЮЧЕНИЕ 25
ПРАКТИЧЕСКАЯ ЧАСТЬ. 27
ЗАДАНИЕ 1. 27
ЗАДАНИЕ 2. 29
ЗАДАНИЕ 3. 32
ЗАДАНИЕ 4. 34
СПИСОК ЛИТЕРАТУРЫ 37
Введение.
Повышение производительности компьютеров и перемены в составе используемого ПО
делают роль языков описания сценариев в создании приложении будущего все более и
более важной. Эти языки отличаются от языков программирования системного уровня
тем, что их основное назначение – связывать различные компоненты и
приложения друг с другом , выполняя роль своего рода клея. В них находят
применение бестиповые подходы к описанию данных, что позволяет вывести
программирование на более высокий уровень и ускорить процесс разработки по
сравнению с языками системного уровня.
За прошедшие годы в методологии написания программ для компьютеров
произошла радикальная перемена. Она состоит в том, что разработчики перешли от
языков программирования системного уровня, таких как. С и С++, к языкам описания
сценариев, примерами которых могут служить Purl Tell. Хотя в эту перемену
оказалось вовлечено огромное количество людей, лишь немногие из них осознают , что
в действительности происходит , и еще меньше найдется таких , кто бы смог
объяснить причины.
Эти языки создавались для различных целей, что обусловило ряд
фундаментальных различий между ним. Системные разрабатывались для построения
структур данных и алгоритмов “ с нуля”, начиная от таких примитивных
элементов , как слово памяти компьютера . В отличие от этого , языки описания
сценариев создавались для связывания готовых программ . Их применение
подразумевает наличие достаточного ассортимента мощных компонентов , которые
требуется только объединить друг с другом . Языки системного уровня используют
строгий контроль типов, что помогает разработчикам приложении справляться со
сложными задачами; языки же описания сценариев не используют понятие типа, что
упрощает установление связей между компонентами и ускоряет разработку прикладных
систем.
Языки этих двух типов является взаимодополняющими , и большинство компьютерных
платформ еще с середины 60-х годов оснащаются как теми , так и другими . В
компонентных инфраструктурах они применяются , как правило , совместно
компоненты создаются на языках программирования системного уровня , а для их связи
между собой используются языки описания сценариев . Однако ряд современных
тенденции , включая появление более быстрых машин и более совершенных языков
описания сценариев , повышение значимости графического интерфейса пользователя и
компонентных архитектур , а также рост популярности Internet, чрезвычайно
расширили сферу применимости языков описания сценариев .Развитие этих тенденции
продолжиться и в следующем десятилетии , вследствие чего все больше приложении
будет создаваться целиком и полностью на языках описания сценариев , а роль языков
программирования системного уровня сведется почти исключительно к созданию
компонентов.
1. Классификация языков программирования высокого уровня.
Языки программирования системного уровня отличаются от ассемблеров, во-первых,
тем, что они являются более высокоуровневыми, и, во-вторых, используют более
строгий контроль типов. Термин “высокоуровневый” означает следующее:
многие детали обрабатываются автоматически, а программисту для создания своего
приложения приходится писать меньшее количество строк. В частности:
Распределением регистров занимается компилятор, так что программисту не надо
писать код, обеспечивающий перемещение данных между регистрами и памятью;
Последовательности вызова процедур генерируются автоматически; программисту нет
необходимости описывать помещение аргументов функции в стек и их извлечение
оттуда;
Для описания структур управления программист может использовать также ключевые
слова, как if, while; последовательности машинных команд, соответствующие этим
описаниям компилятор генерирует динамически.
Машинно – независимые языки – это средство описания алгоритмов
решения задач и информации, подлежащей обработке. Они удобны в использовании для
широкого круга пользователей и не требуют от них знания особенностей организации
функционирования ЭВМ и ВС.
Подобные языки получили название высокоуровневых языков программирования.
Программы, составляемые на таких языках, представляют собой последовательности
операторов, структурированные согласно правилам рассматривания языка(задачи,
сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна
выполнять система после трансляции программы на МЯ.
Т.о., командные последовательности (процедуры, подпрограммы), часто используемые
в машинных программах, представлены в высокоуровневых языках отдельными
операторами. Программист получил возможность не расписывать в деталях
вычислительный процесс на уровне машинных команд, а сосредоточиться на основных
особенностях алгоритма.
Выделяют следующие машинно-независимые языки программирования высокого уровня
:
1. проблемно – ориентированные
2. процедурно – ориентированные
3. объектно - ориентированные
Далее рассмотрю подробнее каждый из видов языков программирования.
2. Проблемно – ориентированные языки
С расширением областей применения вычислительной техники возникла
необходимость формализовать представление постановки и решение новых классов
задач. Необходимо было создать такие языки программирования, которые, используя в
данной области обозначения и терминологию, позволили бы описывать требуемые
алгоритмы решения для поставленных задач, ими стали проблемно –
ориентированные языки. Эти языки, языки ориентированные на решение определенных
проблем, должны обеспечить программиста средствами, позволяющими коротко и четко
формулировать задачу и получать результаты в требуемой форме.
Еще один шаг в разработке языков программирования был сделан в 1954 году, когда
был создан первый язык высокого уровня — Фортран (англ. FORTRAN - FORmula
TRANslator). Языки высокого уровня имитируют естественные языки, используя
некоторые слова разговорного языка и общепринятые математические символы. Эти
языки более удобны для человека, с помощью них, можно писать программы до
нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот
язык становился нечитаемым и трудно управляемым, когда дело касалось больших
программ. Решение этой проблемы пришло после изобретения языков структурного
программирования (англ. structured programming language), таких как Алгол(1958),
Паскаль(1970), Си(1972).
Проблемных языков очень много, например:
Фортран, Алгол – языки, созданные для решения математических задач;
Simula, Слэнг - для моделирования;
Лисп, Снобол – для работы со списочными структурами.
Об этих языках я расскажу дальше.
3. Процедурно – ориентированные языки
Появление новых технических возможностей поставило задачу перед системными
программистами – создать программные средства, обеспечивающие оперативное
взаимодействие человека с ЭВМ их назвали диалоговыми языками.
Эти работы велись в двух направлениях. Создавались специальные управляющие языки
для обеспечения оперативного воздействия на прохождение задач, которые
составлялись на любых раннее неразработанных (не диалоговых) языках.
Разрабатывались также языки, которые кроме целей управления обеспечивали бы
описание алгоритмов решения задач.
Необходимость обеспечения оперативного взаимодействия с пользователем потребовала
сохранения в памяти ЭВМ копии исходной программы даже после получения объектной
программы в машинных кодах. При внесении изменений в программу с использованием
диалогового языка система программирования с помощью специальных таблиц
устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет
осуществить требуемые редакционные изменения в объектной программе.
Одним из примеров диалоговых языков является Бэйсик.
Бэйсик использует обозначения подобные обычным математическим выражениям. Многие
операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот
язык позволяет решать достаточно широкий круг задач.
Си (англ. C) — стандартизованный процедурный язык программирования,
разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и
Денисом Ритчи как развитие языка Би. Си был создан для использования в
операционной системе (ОС) UNIX. С тех пор он был портирован на многие другие
операционные системы и стал одним из самых используемых языков программирования.
Си ценят за его эффективность; он является самым популярным языком для создания
системного программного обеспечения. Его также часто используют для создания
прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он
активно используется для обучения программированию. В дальнейшем синтаксис языка
Си стал основой для многих других языков (см. C-подобный синтаксис).
Язык программирования Си был разработан в лабораториях Bell Labs в период с 1969
по 1973 годы. Согласно Ритчи, самый активный период творчества пришёлся на 1972
год.
Для языка Си характерны лаконичность, современный набор конструкций управления
потоком выполнения, структур данных и обширный набор операций.
Си создавался с одной важной целью: сделать более простым написание больших
программ с минимумом ошибок по правилам процедурного программирования, не добавляя
лишних накладных расходов на итоговый код программы компилятором, как это всегда
делают языки очень высокого уровня, такие как Бейсик. С этой стороны Си имеет
следующие важные особенности:
1. простую языковую базу, из которой вынесены в библиотеки многие
существенные возможности, вроде математических функций или функций управления
файлами;
2. ориентацию на процедурное программирование, обеспечивающую удобство
применения структурного стиля программирования;
3. систему типов, предохраняющую от бессмысленных операций;
4. использование препроцессора для, например, определения макросов и
включения файлов с исходным кодом;
5. непосредственный доступ к памяти компьютера через использование
указателей;
6. минимальное число ключевых слов;
7. передачу параметров в функцию по значению, а не по ссылке (при этом
передача по ссылке выполняется с помощью указателей);
8. указатели на функции и статические переменные
9. области действия имён;
10. записи — определяемые пользователем собирательные типы данных
(структуры), которыми можно манипулировать как одним целым;
4. Объектно – ориентированные языки
Объектно-ориентированный язык программирования (ОО-язык) — язык,
благоприятствующий объектно-ориентированному программированию.
Рассмотрим особенности этих языков.
В современных ОО языках используются методы:
1. Наследование. Создание нового класса объектов путем добавления новых
элементов (методов). В данный момент ОО языки позволяют выполнять множественное
наследование, т. е. объединять в одном классе возможности нескольких других
классов.
2. Инкапсуляция. Сокрытие деталей реализации, которое (при грамотном
использование) позволяет вносить изменения в части программы безболезненно для
других её частей, что существенно упрощает сопровождение и модификацию ПО.
3. Полиморфизм. При полиморфизме некоторые части (методы) родительского
класса заменяются новыми, реализующими специфические для данного потомка действия.
Таким образом, интерфейс классов остаётся прежним, а реализация методов с
одинаковым названием и набором параметров различается. С понятием
«Полиморфизм» тесно связано понятие «Позднего связывания».
4. Типизация. Позволяет устранить многие ошибки на момент компиляции,
операции проводятся только над объектами подходящего типа.
Ниже приведен неполный список объектно-ориентированных языков
программирования:
1. Eiffel
2. Simula
3. Java
4. C++
5. Object Pascal (Delphi)
6. VB.NET
7. Visual DataFlex
8. JavaScript
9. JScript.NET
10. Ruby
11. Smalltalk
12. Ada
13. Xbase++
14. X++
Кроме ОО-языков общего назначения существуют и узкоспециализированные ОО-языки,
например 1С («один-эс»).
Object Pascal — полностью объектно-ориентированный диалект языка Pascal,
разработанный фирмой Borland. Начиная с Delphi 7 фирма Borland начала официально
называть свой язык Delphi . Однако Object Pascal поддерживается и развивается
другими разработчиками. Наиболее серьёзные реализации Object Pascal (помимо
Delphi) — это TMT Pascal, Virtual Pascal и Free Pascal.
5. Характеристика языков програмирования
1. Лисп
Один из самых старых языков программирования Фортран был создан в 50-х гг.
нашего века. Фортран и подобные ему языки программирования (Алгол, ПЛ/1)
предназначались для решения вычислительных задач, возникающих в математике,
физике, инженерных расчетах, экономике и т.п. Эти языки в основном работают с
числами.
Второй старейший язык программирования Лисп (List Information Symbol Processing),
Дж. Маккарти в 1962 г. скорее для работы со строками символов, нежели для работы с
числами. Это особое предназначение Лиспа открыло для программистов новую область
деятельности, известную ныне, как «искусственный интеллект». В
настоящее время Лисп успешно применяется в экспертных системах, системах
аналитических вычислений и т.п.
Обширность области возможных приложений Лиспа вызвала появление множества
различных диалектов Лиспа. Это легко объяснимо: применение Лиспа для понимания
естественного языка требует определенного набора базисных функций, отличных,
например, от используемого в задачах медицинской диагностики.
Существование множества различных диалектов Лиспа привело к созданию в начале
80-х гг. Common LISP Комитета, который должен был выбрать наиболее подходящий
диалект Лиспа и предложить его в качестве основного. Этот диалект, выбранный
Комитетом в 1985г., получил название Common LISP . В дальнейшем он был принят в
университетах США, а также многими разработчиками систем искусственного
интеллекта, в качестве основного диалекта языка Лисп.
Язык программирования Лисп существенно отличается от других языков
программирования, таких, как Паскаль, Си и т.п. Работа с символами и работа с
числами как с основными элементами требует разных способов мышления.
Первоначально Лисп был задуман как теоретическое средство для рекурсивных
построений, а сегодня он превратился в мощное средство, обеспечивающее
программиста разнообразной поддержкой, позволяющей ему быстро строить прототипы
весьма и весьма серьезных систем.
Профессор Массачусетского технологического института Дж. Самман заметил, что
математическая ясность и предельная четкость Лиспа – это еще не все. Главное
– Лисп позволяет сформулировать и запомнить «идиомы», столь
характерные для проектов по искусственному интеллекту.
2. Фортран
Одним из первых и наиболее удачных компиляторов стал язык Фортран,
разработанный фирмой IBM. Профессор Дж. Букс и группа американских специалистов в
области программирования в 1954 году опубликовало первое сообщение о языке.
Дословно, название языка FORmulae TRANslation –преобразование формул.
Среди причин долголетия Фортрана (а он один из самых распространенных языков в
мире), можно отметить простую структуру, как самого Фортрана, так и
предназначенных для него трансляторов. Программа на Фортране записывается в
последовательности предложений или операторов (описание некоего преобразования
информации), и оформляется по определенным стандартам. Эти стандарты накладывают
ограничения, в частности, на форму записи и расположения частей оператора в строке
бланка для записи операторов. Программа, записанная на Фортране, представляет
собой один или несколько сегментов (подпрограмм) из операторов. Сегмент,
управляющий работой всей программы в целом, называется основной программой.
Фортран был задуман для использования в сфере научных и инженерно-технических
вычислений. Однако на этом языке легко описываются задачи с разветвленной логикой
(моделирование производственных процессов, решение игровых ситуаций и т.д.),
некоторые экономические задачи и особенно задачи редактирования (составление
таблиц, сводок, ведомостей и т.д.).
Модификация языка Фортран, появившиеся в 1958 году, получила название Фортран II
и содержала понятие подпрограммы и общих переменных для обеспечения связи между
сегментами.
К 1962 году относится появление языка, известного под именем Фортран IV и
ставшего наиболее употребительным в настоящее время. К этому же времени относится
и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA),
которая выработала к 1966 году два стандарта – языки Фортран и базисный
(основной) Фортран (Basic FORTRAN). Эти языки приблизительно соответствуют
модификациям IV и II, однако базисный Фортран является подмножеством Фортрана, в
то время, как Фортран II таковым для Фортрана IV не является. Язык Фортран до сих
пор продолжает развиваться и совершенствоваться, оказывая влияние на создание и
развитие других языков. Например, Фортран заложен в основу Basic –
диалогового языка, очень популярного для решения небольших задач, превосходного
языка для обучения навыкам использования алгоритмических языков в практике
программирования. Разработан этот язык – Beginner’s All –purpose
Symbolic Instruction Code – группой сотрудников Вычислительного центра
Дармутского колледжа, штат Нью-Хемпшир созданный в 19…. . Но это уже
следующий язык.
3. Бейсик
Как знаменитые гамбургеры, бейсбол и баскетбол, Бейсик - это продукт Новой
Англии. Язык был создан в 1964г., как язык обучения программированию. Бейсик
является общепринятым акронимом от"Beginner's All-purpose Symbolic Insruction
Code" (BASIC) - Многоцелевой Символический Обучающий Код для
Начинающих".
Вскоре как обучаемые, так и авторы программ обнаружили, что Бейсик может делать
практически все то, что делает скучный неуклюжий Фортран. А так как Бейсику было
легко обучиться и легко с ним работать, программы на нем писались обычно быстрее,
чем на Фортране. Бейсик был также доступен на персональных компьютерах, обычно он
встроен в ПЗУ. Так Бейсик завоевал популярность. Интересно, что спустя 20 лет
после изобретения Бейсика, он и сегодня самый простой для освоения из десятков
языков общецелевого программирования, имеющихся в распоряжении любителей
программирования. Более того, он прекрасно справляется с работой.
Несмотря на высказывания снобов - сторонников языков Си и Паскаля, Бейсик
считается деловым языком, снабженным мощными средствами решения специфических
задач, которые обычно большинство пользователей решают при помощи небольших
компьютеров, а именно: работая с файлами и выводя текстовое и графическое
изображение на экране дисплея.
Несмотря на отдельные недостатки Бейсика, никто не будет отрицать, что Кемени и
Куртс достигли основной цели: сделать программирование доступнее для большего
числа людей.
Исторически Бейсик обычно реализовался как интерпретатор (знакомым изомером
является сам интерпретаторный Бейсик). Причинами перехода от любительского уровня
к профессиональному являются многочисленные расширения классической версии языка:
возможность отключения нумерации строк, многостроковые структурированные
программные конструкции, структуры типа "запись", поименованные
подпрограммы с параметрами и локальные переменные.
Более того, с появлением транслятора QuickBasic фирмы Microsoft разработчики
получили возможность строить на Бейсике приложения из раздельно откомпилированных
модулей, некоторые из которых могут быть написаны на других языках. Теперь, как и
в случае других ведущих языков программирования, разработчик имеет выбор из
нескольких промышленных библиотек подпрограмм, которые содержат готовые решения
для распространенных задач программирования.
4. Рефал
Несомненно надо рассказать и о некоторых языках программирования созданных у
нас на родине. Один из таких языков является Рефал, разработанный у нас в России
(СССР), в 1966г. ИПМ АН СССР. Этот язык прост и удобен для описания манипуляций
над произвольными текстовыми объектами.
Рефал широко применяется при разработке трансляторов с алгоритмических языков как
универсальных и проблемно – ориентированных, так и автокодов. Кроме
использования в задачах трансляции, Рефал имеет такие важные сферы применения, как
машинное выполнение громоздких аналитических выкладок в теоретической физике и
прикладной математике; проектирование «умных» информационных систем,
осуществляющих нетривиальную логическую обработку информации; машинное
доказательство теорем; моделирование целенаправленного поведения; разработка
диалоговых обучающих систем; исследования в области искусственного интеллекта и
т.п.
Программирование на Рефале имеет специфику, связанную, прежде всего, с тем, что
Рефал является языком функционального типа в отличие от обычных операторных языков
типа Алгол, Фортран и т.д.. Если программа на операторных языках – ни что
иное, как совокупность приказов-операторов, то программа на Рефале представляет
собой по существу описание связей и отношений между определенными понятиями.
Вследствие того, что в Рефале программист сам определяет структуру обрабатываемой
информации, эффективность программы существенно зависит от удачного или неудачного
выбора этой структуры. Для задания структур в Рефале используются скобки, а
специфика всех реализаций языка такова, что использование скобок резко повышает
эффективность выполнения программы. Это достигается с помощью адресного соединения
скобок.
Определенной спецификой обладают и переменные типа «выражения»
– имеется в виду их способность удлиняться при отождествлении. Правильное
использование переменных этого типа также позволяет значительно повысить
эффективность Рефал – программы.
5. Пролог и Пролог ++
Пролог - это язык, предназначенный для поиска решений. Это декларативный язык,
то есть формальная постановка задачи может быть использована для ее решения.
Пролог определяет логические отношения в задаче, как отличные от пошагового
решения этой задачи.
Центральной частью Пролога являются средства логического вывода, которые решают
запросы, используя заданное множество фактов и правил, к которым обращаются как к
утверждениям. Пролог также не имеет деления переменных на типы и может динамически
добавлять правила и факты к средствам вывода. Таким образом, это гибкий язык, и он
более пригоден для объектно-ориентированного расширения, чем язык со строго
заданными типами, например, Паскаль. Пролог ++ представляет собой дополнение к
стандартному Прологу.
Все свойства языка по-прежнему доступны программистам. Следовательно,
Пролог ++ можно отнести к группе гибридных языков, представителями которой
считаются Object Pascal и C++. Расширение Пролог ++ поддерживает все свойства,
присущие обычно объектно-ориентированным языкам: концепции объектов и классов,
единичное и многократное наследование, разбиение на подклассы и передачу
сообщений. Поддерживаются также некоторые усовершенствованные свойства,
существующие в таких языках, как C++ и Smalltalk, включая общие и частные
методы.
Интересным свойством является поддержка в языке программирования с управлением
данными. Эта техника, которая может быть еще названа программированием,
"управляемым событиями", используется в большинстве языков
объектно-ориентированного программирования, особенно в тех, которые разработаны
для машин с интерфейсом, управляемым "мышью".
Объектно-ориентированная программа реагирует на события, которые определяют
поток управления. В Прологе ++ программирование с управлением данными достигается
при помощи концепции демонов. Демон представляет собой объект, методы которого
вызываются в случае определенных событий и могут быть таким образом использованы
для поддержки программирования с управлением данными.
Сам язык основан на концепции передачи сообщений. Программа на Прологе ++
строится вокруг множества объектов Пролога ++, которые обмениваются сообщениями. В
этом смысле Пролог ++ ближе к чистому объектно-ориентированному языку, такому, как
Smalltalk, чем C++ или Object Pascal. Определения объектов строятся исходя из
вызовов
Open_Object [имя_объекта] и Close_Object [имя_объекта], а методы
определяются практически так же, как в других объектно-ориентированных языках. Для
задания наследования можно явным образом указать, какой метод какого объекта
должен наследоваться, что является необходимым для многократного
наследования.
6. Cи
Си – это язык программирования общего назначения, хорошо известный своей
эффективностью, экономичностью, и переносимостью. Указанные преимущества Си
обеспечивают хорошее качество разработки почти любого вида программного продукта.
Использование Си в качестве инструментального языка позволяет получать быстрые и
компактные программы. Во многих случаях программы, написанные на Си, сравнимы по
скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую
наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в
относительно малом по размеру языке.
Си – это замечательный язык, и хотя некоторым он не нравится, но все же
большинство программистов его любят. На Си вы можете создавать программы, которые
делают все, что вы пожелаете. Нет другого такого языка, который бы так же
стимулировал к программированию. Создается впечатление, что остальные языки
программирования воздвигают искусственные препятствия для творчества, а Си –
нет. Использование этого языка позволяет сократить затраты времени на создание
работающих программ. Си позволяет программировать быстро, эффективно и
предсказуемо. Еще одно преимущество Си заключается в том, что он позволяет
использовать все возможности вашей ЭВМ. Этот язык создан программистом для
использования другими программистами, чего о других языках программирования
сказать нельзя.
Язык Си имеет свои существенные особенности, давайте перечислим некоторые из
них:
Си обеспечивает полный набор операторов структурного программирования. Си
предлагает необычно большой набор операций. Многие операции Си соответствуют
машинным командам, и поэтому допускают прямую трансляцию в машинный код.
Разнообразие операций позволяет выбирать их различные наборы для минимизации
результирующего кода.
Си поддерживает указатели на переменные и функции. Указатель на объект программы
соответствует машинному адресу этого объекта. Посредством разумного использования
указателей можно создавать эффективно-выполняемые программы, так как указатели
позволяют ссылаться на объекты тем же самым путем, как это делает машина. Си
поддерживает арифметику указателей, и тем самым позволяет осуществлять
непосредственный доступ и манипуляции с адресами памяти.
В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы
перед компиляцией. Среди его наиболее полезных приложений при написании программ
на Си являются: определение программных констант, замена вызовов функций
аналогичными, но более быстрыми макросами, условная компиляция. Препроцессор не
ограничен процессированием только исходных текстовых файлов Си, он может быть
использован для любого текстового файла.
Си-гибкий язык, позволяющий принимать в конкретных ситуациях самые разные
решения. Тем не менее, Си налагает незначительные ограничения в таких, например,
действиях, как преобразование типов. Во многих случаях это является достоинством,
однако программисты должны хорошо знать язык, чтобы понимать, как будут
выполняться их программы.
Недостатки языка Си:
Также, как и особенностей, в языке Си присутствует куча недостатков. Ведь от них
не защищен не один проект, в том числе проект разработки и выполнения программ, на
языке Си:
Язык Си предъявляет достаточно высокие требования к квалификации использующего
его программиста. При изучении Си желательно иметь представление о структуре и
работе компьютера. Большую помощь и более глубокое понимание идей Си, как языка
системного программирования, обеспечат хотя бы минимальное знание языка ассемблер.
Уровень старшинства некоторых операторов не является общепринятым, некоторые
синтаксические конструкции могли бы быть лучше. Тем не менее, как оказалось Си
– чрезвычайно эффективный и выразительный язык, пригодный для широкого
класса задач.
7. Си++
Безусловно, Си++ восходит, главным образом, к Cи. Cи сохранен как
подмножество, поэтому сделанного в Cи акцента на средствах низкого уровня
достаточно, чтобы справляться с самыми насущными задачами системного
программирования. Cи, в свою очередь, многим обязан своему предшественнику
BCPL.
Название Си++ - изобретение лета 1983-его. Более ранние версии языка
использовались начиная с 1980-ого и были известны как "Cи с Классами".
Первоначально язык был придуман потому, что автор хотел написать событийно
управляемые модели для чего был бы идеален Simula67, если не принимать во внимание
эффективность. "Cи с Классами" использовался для крупных проектов
моделирования, в которых строго тестировались возможности написания программ,
требующих (только) минимального пространства памяти и времени на выполнение. В
"Cи с Классами" не хватало перегрузки операций, ссылок, виртуальных
функций и многих деталей. Си++ был впервые введен за пределами исследовательской
группы автора в июле 1983-го. Однако тогда многие особенности Си++ были еще не
придуманы.
Название Си++ выдумал Рик Масситти. Название указывает на эволюционную природу
перехода к нему от Cи. "++" - это операция приращения в Cи. Чуть более
короткое имя Cи+ является синтаксической ошибкой, кроме того, оно уже было
использовано как имя совсем другого языка. Знатоки семантики Cи находят, что Си++
хуже, чем Cи ++. Названия D язык не получил, поскольку он является расширением Cи
и в нем не делается попыток исцелиться от проблем путем выбрасывания различных
особенностей.
Си++ - это универсальный язык программирования, задуманный так, чтобы сделать
программирование более приятным для серьезного программиста. За исключением
второстепенных деталей Си++ является надмножеством языка программирования Cи.
Помимо возможностей, которые дает Cи, Си++ предоставляет гибкие и эффективные
средства определения новых типов. Используя определения новых типов, точно
отвечающих концепциям приложения, программист может разделять разрабатываемую
программу на легко поддающиеся контролю части. Такой метод построения программ
часто называют абстракцией данных. Информация о типах содержится в некоторых
объектах типов, определенных пользователем. Такие объекты просты и надежны в
использовании в тех ситуациях, когда их тип нельзя установить на стадии
компиляции. Программирование с применением таких объектов часто называют
объектно-ориентированным. При правильном использовании этот метод дает более
короткие, проще понимаемые и легче контролируемые программы.
Изначально Си++ был разработан, чтобы автору и его друзьям не приходилось
программировать на ассемблере, Cи или других современных языках высокого уровня.
Основным его предназначением было сделать написание хороших программ более простым
и приятным для отдельного программиста. Плана разработки Си++ на бумаге никогда не
было. Проект, документация и реализация двигались одновременно. Разумеется,
внешний интерфейс Си++ был написан на Си++. Никогда не существовало "Проекта
Си++" и "Комитета по разработке Си++". Поэтому Си++ развивался и
продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с
которыми сталкиваются пользователи, а также в процессе дискуссий автора с его
друзьями и коллегами.
В качестве базового языка для Си++ был выбран Cи, потому что он:
1. многоцелевой, лаконичный и относительно низкого уровня:
2. отвечает большинству задач системного программирования:
3. идет везде и на всем:
4. пригоден в среде программирования UNIX.
В Cи есть свои сложности, но в наспех спроектированном языке тоже были бы свои, а
сложности Cи нам известны. Самое главное, работа с Cи позволила "Cи с
Классами" быть полезным (правда, неудобным) инструментом в ходе первых
месяцев раздумий о добавлении к Cи Simula-подобных классов.
Си++ стал использоваться шире, и по мере того, как возможности,
предоставляемые им помимо возможностей Cи, становились все более существенными,
вновь и вновь поднимался вопрос о том, сохранять ли совместимость с Cи. Ясно, что
отказавшись от определенной части наследия Cи можно было бы избежать ряда проблем.
Это не было сделано, потому что:
1. есть миллионы строк на Cи, которые могли бы принести пользу в Си++ при
условии, что их не нужно было бы полностью переписывать с Cи на Си++;
2. есть сотни тысяч строк библиотечных функций и сервисных программ,
написанных на Cи которые можно было бы использовать из или на Си++ при условии,
что Си++ полностью совместим с Cи по загрузке и синтаксически очень похож на
Cи;
3. есть десятки тысяч программистов, которые знают Cи, и которым, поэтому,
нужно только научиться использовать новые особенности Си++, а не заново изучать
его основы;
4. поскольку Си++ и Cи будут использоваться на одних и тех же системах
одними и теми же людьми, отличия должны быть либо очень большими, либо очень
маленькими, чтобы свести к минимуму ошибки и недоразумения.
Позднее была проведена проверка определения Си++, чтобы удостовериться в том, что
любая конструкция, допустимая и в Cи, и в Си++, действительно означает в обоих
языках одно и то же.
Си++ был развит из языка программирования Cи и за очень немногими
исключениями сохраняет Cи как подмножество. Базовый язык, Cи подмножество Си++,
спроектирован так, что имеется очень близкое соответствие между его типами,
операциями и операторами и компьютерными объектами, с которыми непосредственно
приходится иметь дело: числами, символами и адресами. За исключением операций
свободной памяти new и delete, отдельные выражения и операторы Си++ обычно не
нуждаются в скрытой поддержке во время выполнения или подпрограммах.
Одним из первоначальных предназначений Cи было применение его вместо
программирования на ассемблере в самых насущных задачах системного
программирования. Когда проектировался Си++, были приняты меры, чтобы не ставить
под угрозу успехи в этой области. Различие между Cи и Си++ состоит в первую
очередь в степени внимания, уделяемого типам и структурам. Cи выразителен и
снисходителен. Си++ еще более выразителен, но чтобы достичь этой выразительности,
программист должен уделить больше внимания типам объектов. Когда известны типы
объектов, компилятор может правильно обрабатывать выражения, тогда как в противном
случае программисту пришлось бы задавать действия с мучительными подробностями.
Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в
противном случае остались бы до тестирования. Заметьте, что использование системы
типов для того, чтобы получить проверку параметров функций, защитить данные от
случайного искажения, задать новые операции и т.д., само по себе не увеличивает
расходов по времени выполнения и памяти.
Особое внимание, уделенное при разработке Си++ структуре, отразилось на
возрастании масштаба программ, написанных со времени разработки Cи. Маленькую
программу (меньше 1000 строк) вы можете заставить работать с помощью грубой силы,
даже нарушая все правила хорошего стиля. Для программ больших размеров это не
совсем так. Если программа в 10 000 строк имеет плохую структуру, то вы
обнаружите, что новые ошибки появляются так же быстро, как удаляются старые. Си++
был разработан так, чтобы дать возможность разумным образом структурировать
большие программы таким образом, чтобы для одного человека не было непомерным
справляться с программами в 25 000 строк. Существуют программы гораздо больших
размеров, однако те, которые работают, в целом, как оказывается, состоят из
большого числа почти независимых частей, размер каждой из которых намного ниже
указанных пределов.
Естественно, сложность написания и поддержки программы зависит от сложности
разработки, а не просто от числа строк текста программы, так что точные цифры, с
помощью которых были выражены предыдущие соображения, не следует воспринимать
слишком серьезно.
Заключение
Изобретение языка программирования высшего уровня позволило нам общаться с
машиной, понимать её (если конечно Вам знаком используемый язык), как понимает
американец немного знакомый с русским языком древнюю азбуку Кириллицы. Проще
говоря, мы в нашем развитии науки программирования пока что с ЭВМ на ВЫ. Если мы
обратим внимание на темпы роста и развития новейших технологий в области
программирования, то можно предположить, что в ближайшем будущем, человеческие
познания в этой сфере, помогут произвести на свет языки, умеющие принимать,
обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Так и
хочется назвать это детище компьютеризированного будущего: «языки
программирования "высочайшего" уровня». Возможно, концепция
решения этого вопроса проста, а ближайшее будущее этого проекта уже не за
горами.
Размышляя над этим, хочется верить в прогресс науки и техники, в высоко -
компьютеризированное будущее человечества, как единственного существа на планете,
пусть и не использующего один, определенный разговорный язык, но способного так
быстро прогрессировать и развивать свой интеллект, что и перехода от многоязыковой
системы к всеобщему пониманию долго ждать не придется.
Таким образом, высокоуровневый язык программирования — язык
программирования, разработанный для быстроты и удобства использования
программистом. Основная черта высокоуровневых языков — это абстракция, то
есть введение смысловых конструкций, кратко описывающих такие структуры данных и
операции над ними, которые потребовали бы существенно дольшего описания на
машинном коде.
Высокоуровневые языки стремятся не только облегчить решение сложных программных
задач, но и упростить портирование программного обеспечения. Использование
разнообразных трансляторов и интерпретаторов обеспечивает связь программ,
написанных при помощи языков высокого уровня, с различными операционными системами
и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.
Такого рода оторванность высокоуровневых языков от аппаратной реализации
компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет
создавать простые и точные инструкции к используемому оборудованию. Программы,
написанные на языках высокого уровня, проще для понимания программистом, но менее
эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из
следствий этого стало добавление поддержки того или иного языка низкого уровня
(язык ассемблера) в большинство современных профессиональных высокоуровневых
языков программирования.
Наиболее распространёнными языками подобного типа являются C++, Visual Basic,
Java, Python, Ruby, Perl, Delphi, PHP. Языкам высокого уровня