Языки программирования
Большинство алгоритмических языков программирования (Си, Паскаль) созданы на рубеже 1960 и 1970-х гг. (за исключением Java). За прошедший период времени периодически появлялись новые языки программирования, однако на практике они не получили широкого и длительного по времени распространения. Другим направлением в эволюции современных языков программирования были попытки создания универсальных языков программирования (Алгол, PL/1, Ада), объединявших в себе достоинства ранее разработанных языков.
Появление ПК и ОС с графическим интерфейсом (Mac OS, Windows) привело к смещению внимания разработчиков ПО в сферу визуального или объектно-ориентированного программирования, сетевых протоколов, баз данных. В результате в настоящее время в качестве инструментальной среды используется конкретная среда программирования (Delphi, Access и др.) и знания базового языка программирования не требуется. Поэтому можно считать, что круг используемых языков программирования стабилизировался.
Анализ синтаксиса и семантики языков программирования показывает, что их родственные конструкции различаются главным образом «внешним видом» (набором ключевых слов или порядком следования компонентов). Содержимое практически идентично, за исключением небольших различий, не имеющих существенного значения. Таким образом, конструкции современных языков имеют общее содержание (семантику), различный порядок следования компонент (синтаксис) и разные ключевые слова (лексику). Следовательно, различные языки предоставляют пользователю одинаковые возможности при различном внешнем виде программ.
Стандартизацию языков программирования в настоящее время осуществляют комитеты ISO/ANSI, однако их деятельность направлена в основном на неоправданное синтаксическое расширение языков. Для исключения существующих недостатков предложены способы задания семантического и синтаксического стандарта языков программирования.
Семантическое описание любой конструкции языка (оператора, типа данных, процедуры и т.д.) должно содержать не менее трех обязательных частей:
- • список компонент (в Тип Указатель это компоненты Имя Типа и Базовый Тип);
- • описание каждой компоненты;
- • описание конструкции в целом.
Для синтаксического описания обычно используется формальное описание конструкции, например, в виде БНФ (Бэкуса — Наура форма, формальная система описания синтаксиса языка программирования). Синтаксическое описание присутствует в любом языке, начиная с Алгола.
Со времени создания первых программируемых машин человечество придумало более 8500 языков программирования. Каждый год их число пополняется новыми. Ввиду их большого количества классификация затруднена. В общем плане можно выделить две группы: языки высокого уровня и языки низкого уровня.
Языки высокого уровня — максимально приближены к задаче. Наиболее выражено в предметно-ориентированных языках. Приоритет: что?
Языки низкого уровня — в центре внимания не задача, а технология ее реализации, связанная с языком/машиной. Привлекаются дополнительные понятия, не связанные с задачей. Приоритет: как?
Некоторыми языками умеет пользоваться небольшое количество их собственных разработчиков, другие становятся известны миллионам людей.
Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Среди большого количества языков программирования самую заметную роль в развитии программирования сыграли три пары: Алгол-60 и Фортран, Паскаль и СИ, Java и C+ + . Эти языки не случайно объединены в пары, так как в противостоянии заложенных в них идей происходило прогрессивное развитие.
В табл. 5.1 приведены основные сведения о наиболее распространенных языках, а в табл. 5.2 — о языках специального назначения (экспериментальных и промышленных) [39]. Виды (парадигмы) языков по областям применения:
А — процедурное программирование;
В — объектно-ориентированное программирование;
С — структурное программирование;
D — модульное (компонентное программирование);
Е — логическое (реляционное) программирование;
F — функциональное программирование;
G — параллельное программирование;
Н — гибрид (смесь парадигм B+C+D+G);
I — специализированный язык.
Сведения о наиболее распространенных языках
Сведения о языках специального назначения
Параллельный Паскаль (Concurrent Pascal)
MIT — Massachusetts Institute of Technology
PARC — Palo Alto Research Center
ETH — Swiss Federal Institute of Technology
SRC — Systems Research Center
ISE — Interactive Software Engineering
ISO — International Standard Organization
CIT — California Institute of Technology
* — Поддержка системного программирования
Важно различать язык программирования и его реализацию. Сам язык — это система записи, набор правил, определяющих синтаксис и семантику программы. Реализация языка — это программа, которая преобразует запись высокого уровня в последовательность машинных команд. Существует два способа реализации языка: компиляция (рис. 5.1) и интерпретация (рис. 5.2).
Рис. 5.1. Схема компиляции
При компиляции специальная рабочая программа (компилятор) осуществляет перевод рабочей программы в эквивалентную на машинном коде и в дальнейшем ее выполнение совместно с данными. В методе интерпретации специальная программа (интерпретатор) устанавливает соответствие между языком и машинными кодами, применяя команды к данным. В принципе, любой язык программирования может быть как интерпретируемым, так и компилируемым, но в большинстве случаев есть свой предпочтительный способ реализации. К сожалению, в настоящее время не существует «универсального» компилятора, который мог бы работать с любым существующим языком. Это объясняется отсутствием единой семантической базы. Хотя современные языки программирования похожи друг на друга, идентичность их далеко не полная.
Рис. 5.2. Схема интерпретации
На рис. 5.3 представлены области пересечения и объединения языков программирования. Таким образом, существует общая семантическая зона, в которую входят конструкции, принадлежащие всем языкам программирования (или большинству из них), и область объединения, содержащая конструкции специфические для данного языка. Поэтому создание «универсального» компилятора возможно двумя путями:
- 1. Использование общих конструкций (область пересечения), отбрасывая специфические конструкции языков (область объединения). Это приведет к «обеднению» всех языков программирования.
- 2. Использование всех имеющихся конструкций (область объединения + область пересечения). Такой подход приведет к значительному расширению семантической базы использованию дополнительных ресурсов.
Рис. 5.3. Области пересечения и объединения языков программирования
Многие годы идет спор о том, что такое программирование — наука, искусство или производственный процесс. Надо признать, что право на существование имеют все три версии. Однако в связи с появлением информационных технологий на первый план выходит промышленный характер программирования, который соответствует традиционным стадиям жизненного цикла программного продукта, изложенным в параграфе 3.7.
Однако наряду с этим направлением развивается так называемое исследовательское программирование. Например, предложенное
Э. Раймондом самоорганизующееся, анархичное программирование, получившему название «базар». Отличительными чертами его являются отсутствие четкого плана, минимальное управление проектом, большое число сторонних территориально удаленных разработчиков, свободный обмен идеями и кодами.
Программные среды реализуют отдельные задачи и операции информационных технологий. К их числу относятся:
- 1) текстовые процессоры: Microsoft Word, Лексикон, Lotus Word Perfect, Corel Word Pro, Sun Star Office Writer и др.;
- 2) электронные таблицы: Microsoft Excel, Corel Quattro Pro, Lotus 1-2-3, Sun Star Office Calc и др.;
- 3) личные информационные системы: Microsoft Outlook, Lotus Organizer, Lotus Notes, Sun Star Office Schedule и др.;
- 4) программы презентационной графики: Microsoft Power Point, Lotus Freelance Graphics, Corel Presentations, Sun Star Office Impress и др.;
- 5) браузеры: Microsoft Internet Explorer, Netscape Navigator, Opera идр.;
- 6) редакторы веб-страниц: Microsoft Front Page, Netscape Composer, Macromedia Free Hand и др.;
- 7) почтовые клиенты: Microsoft Outlook, Microsoft Outlook Express, Netscape Messenger, The Bat и др.;
- 8) редакторы растровой графики: Adobe Photoshop, Corel Photo-Paint идр.;
- 9) редакторы векторной графики: Corel Draw, Adobe Illustrator и др.
- 10) настольные издательские системы: Adobe Page Maker, Quark Xpress, Corel Ventura, Microsoft Publisher и др.;
- 11) средства разработки: Borland Delphi, Microsoft Visual Basic, Borland C+ + Builder, Microsoft Visual C+ + и др.
Введение
Важнейшая роль в развитии современного общества в конце ХХ в. принадлежит информатизации. Процесс информатизации характеризуется использованием информации в качестве общественного продукта, обеспечивающего интенсификацию всех сфер экономики, ускорение научно-технического прогресса, интеллектуализацию основных видов человеческой деятельности и демократизацию общества. В результате внедрения новых информационных технологий значительно изменяются общественно-экономические структуры, формируется гибкое динамическое общество, способное к активной самооценке и выбору целей развития, быстрой адекватной реакции на изменение внешней и внутренней среды.
Определяя предмет информатики, можно сказать, что она занимается построением информационных объектов, теорий, систематическим анализом, проектированием и реализации алгоритмов, программ и планов, а также процессами трансформации и передачи информации. Основные эти проблемы тесно связаны с программированием и системным моделированием.
Программирование — одна из сторон использования компьютерной технологий с целью ее дальнейшего совершенствования. Поэтому важно знать основные языки программирования и их реализацию в жизнедеятельности человека.
1. Общие понятия языков программирования
1.1. Понятие программы и языка программирования
Чтобы компьютер выполнил решение какой-либо задачи, ему необходимо получить от человека инструкции, как ее решать. Набор таких инструкций для компьютера, направленный на решение конкретной задачи, называется компьютерной программой.
Современные компьютеры не настолько совершенны, чтобы понимать программы, записанные на каком-либо употребляемом человеком языке. Команды, предназначенные для ЭВМ, необходимо записывать в понятной ей форме. С этой целью применяются языки программирования — искусственные языки, алфавит, словарный запас и структура которых удобны человеку и понятны компьютеру.
В самом общем смысле языком программирования называется фиксированная система обозначений и правил для описания алгоритмов и структур данных. Языки программирования имеют как бы два лица. Одно из них обращено к человеку, использующему свой язык для записи своих программ, а другое адресовано ЭВМ, которая должна понимать эти команды.
1.2. Понятие систем программирования
Системы программирования являются инструментами для программистов-профессионалов и позволяют разрабатывать программы на различных языках программирования (Basic, Pascal, С и др.). Однако в настоящее время появились системы виртуального программирования (Visual Basic, Delphi и др.), которые позволяют даже начинающему пользователю компьютера создавать несложные программы.
1.3. Уровень языка программирования
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, как мы знаем, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
- Машинные;
- Машинно-ориентированные (языки ассемблера);
- Машинно-независимые (языки высокого уровня).