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

Обновлено: 04.07.2024

Расцвет второго поколения языков
программирования пришелся на конец 50-х – начало 60-х годов. Тогда был
разработан символический ассемблер, в котором появилось понятие переменной. Он
стал первым полноценным языком программирования. Благодаря его возникновению
заметно возросли скорость разработки и надежность программ.

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

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

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

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

Прикрепленные файлы: 1 файл

Эволюция языков программирования.doc

Элементы объектно-ориентированного программирования (ООП) появились в начале 70-х годов в языке моделирования Simula, затем получили свое развитие, и в настоящее время ООП принадлежит к числу ведущих технологий программирования [2,13].

1.2.4. Специализированные языки

Специализированные языки (special language) - языки программирования, ориентированные на решение определенного круга задач. Этих задах много, рассмотрим некоторые из них.

Классификация языков программирования по типам задач:

  • Задачи искусственного интеллекта (Lisp, Prolog, Planner, QA4, FRL, KRL, QLisp);
  • Задачи вычислительной математики и физики (Occam, PFOR, Glypnir, Actus, Cobol, Алгол, Фортран);
  • Разработка интерфейса (Forth, C, C++, Ассемблер, Макроассемблер, Simula-67, OAK, Smalltalk, Java);
  • Разработка программ-оболочек, разработка систем (Forth, C, C++, Ассемблер, Макроассемблер, Simula-67, OAK, Smalltalk, Java, РПГ);
  • Задачи вычислительного характера (Algol, Fortran, Cobol, Ada, PL/1, Basic, Pascal);
  • Оформление документов, обработка больших текстовых файлов, организация виртуальных трехмерных интерфейсов в Интернете (HTML, Perl, PHP, Tcl/Tk, VRML, XML, PL/SCL);
  • Языки программирования баз данных. (SQL, dBase II, FoxPro, Clipper);

Кроме того, существуют гибридные (комбинированные) языки (hibrid language) - языки программирования, использующие также и средства других языков [2,13,14].

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

Языки программирования по своим возможностям и времени создания принято делить на несколько поколений (Generation Language, GL). Каждое из последующих поколений по своей функциональной мощности качественно отличается от предыдущего. К сегодняшнему дню насчитывается пять поколений ЯП.

В первое поколение (1GL) входят языки, созданные в 40-50 гг., когда компьютеры только появились на свет. В то время программы писались в машинных кодах, то есть каждая компьютерная команда вместе с ее операндами вводилась в ЭВМ в двоичном виде. Это требовало огромных усилий по набору цифровых текстов и приводило к множеству трудноуловимых ошибок. Ситуация качественно изменилась в середине 50-х годов, когда был написан первый ассемблер. Хотя этот ассемблер был неполноценным в сегодняшнем понимании, но он позволял задавать названия команд в символическом виде и указывать числа не только в двоичном, но и в десятичном или шестнадцатеричном формате, что существенно облегчало работу программистов.

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

Расцвет второго поколения языков программирования (2GL) пришелся на конец 50-х - начало 60-х годов. Был создан символический ассемблер, позволявший писать программы без привязки к конкретным адресам памяти. В него было введено понятие переменной, и он, по сути, стал первым настоящим (хоть и машинно-ориентированным) языком программирования со своим компилятором. Скорость создания и эффективность программ резко возросли. Ассемблеры активно применяются в настоящее время, как правило, для создания программ, максимально использующих возможности аппаратуры - различных драйверов, модулей состыковки с нестандартным оборудованием и т.д. [13].

Третье поколение ЯП (3GL) принято относить к 60-м годам. В это время родились языки, которые называют универсальными языками высокого уровня, с их помощью можно решать задачи из любых областей. Это общеизвестные Fortran, Cobol, Algol и др. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций позволили резко повысить производительность труда программистов. Кроме того, понятная большинству пользователей процедурная идеология этих языков позволила привлечь к написанию небольших программ (как правило, расчетного или учетного характера), большое количество специалистов из некомпьютерных областей.

Подавляющее большинство языков 3GL успешно применяется и сегодня. Современные компиляторы с интегрированными средами разработки предоставляют очень удобные средства поддержки процесса создания программ. Практически все современные коммерческие продукты, рассчитанные на массовый рынок, написаны на языках 3-го поколения [13].

С начала 70-х годов по настоящее время тянется период языков четвертого поколения (4GL). Несмотря на рождение новых технологий (ООП, визуальное программирование, CASE-методологии, системный анализ), процесс создания больших программных комплексов оказался очень трудоемкой задачей, так как для реализации крупных проектов требовался более глобальный подход к решаемым задачам, чем предлагали имевшиеся средства разработки. Языки 4GL частично снимали эту проблему. Целью их создания было в первую очередь стремление к увеличению скорости разработки проектов, снижение числа ошибок и повышение общей надежности работы больших программных комплексов, возможность быстрого и легкого внесения изменений в готовые проекты. А также упрощение самих языков для конечного пользователя, активное внедрение технологий визуальной разработки и т. д. Все средства разработки 4-го поколения имеют мощные интегрированные оболочки и обладают простым и удобным пользовательским интерфейсом. Они чаще всего используются для проектирования баз данных и работы с ними (встроенные языки СУБД), что объясняется возможностью формализации всех понятий, используемых при построении реляционных баз данных. Как правило, в эти языки встраиваются мощные примитивы, позволяющие одним оператором описать такую функциональность, для реализации которой на языках младших поколений потребовалось бы написать тысячи строк кода.

Однако пользователям, использующим языки 4GL для создания законченных приложений, по-прежнему необходимо кодировать программу вручную, используя обычный процесс последовательного ввода команд. При этом сохраняется главный недостаток языков предыдущих поколений. Он заключается в том, что все они в значительной степени ориентированы на чуждую человеческому мышлению чисто компьютерную идеологию (работа с памятью, переменными, базами данных, последовательностями абстрактных операторов и т. п.), что требует от людей хорошего понимания принципов функционирования компьютера и операционных систем [13].

Рождение языков пятого поколения относится к настоящему времени. Довольно неожиданно вокруг самого названия 5GL разгорелись жаркие споры. Возникло несколько программистских "школ", представители, каждой из которых, имеют свое мнение о том, какие средства разработки считать языками 5-го поколения, а какие нет. Например, на страницах лондонского журнала SURPRISE (Surveys and Presentations in Information Systems Engineering), выпускаемого при поддержке английских министерств по электронике и вычислительной технике, рассматривают средства разработки 5-го поколения в более широком аспекте, чем это принято делать в отношении обычных языков программирования. Они считают, что к системам 5GL можно отнести не только новые мощные языки, но и системы создания программ, ориентированные на непрограммиста. Подобные системы отличаются стремлением предоставить конечному пользователю-неспециалисту богатые возможности создания прикладных программ с помощью визуальных средств разработки без знания программирования. Главная идея, которая закладывается в эти системы 5GL - возможность компьютерного интерактивного или полностью автоматического преобразования инструкций, вводимых в систему наиболее удобными человеку методами в максимально наглядном виде, в текст на универсальных языках программирования, описывающий готовую программу.

Однако большая группа специалистов считает, что языки 5-го поколения являются именно языками программирования, требующими от разработчика соответствующей квалификации и умения составлять программы вручную. Сторонники этого мнения под языками 5GL понимают специализированные языки, оперирующие не абстрактными переменными, а понятиями своей предметной области, например, бухгалтерскими счетами или ферзями и пешками. Это, как правило, узкоспециализированные языки, предоставляющие программисту мощные высокоуровневые возможности обработки информации из конкретной области знаний. К языкам 5-го поколения относят также интегрированные с базами знаний и экспертными системами программные комплексы с собственными языками программирования. Типичный пример - созданная в Австралии самообучающаяся нейронная сеть "LISA" с встроенным языком описания фактов, сущностей и взаимосвязей между ними, на торговой марке которой красуется "лейбл" 5GL.

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

Пока сложно сказать, насколько успешной окажется тенденция стремления к полной и недостижимой универсальности. На практике с помощью систем 5GL этого направления пока удавалось создать небольшие и логически простые приложения, которые при реализации на языках 3-го поколения потребовали бы не более 10 000 исходных строк кода. При попытках разработки сложных программ возникает проблема, типичная для более старых языков — необходимость отладки, что требует от пользователя высокой квалификации.

Языки 5GL, ориентированные на конкретные области применения, уже в ближайшее время могут завоевать самую широкую популярность. Наиболее вероятно это для продуктов, позволяющих создавать приложения для работы с базами данных, области информатики, наиболее успешно поддающейся формализации [13].

3. История развития основных языков программирования

3.1 С чего все начиналось

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

3.2. Assembler (Ассемблер)

Может показаться, что это событие не было из ряда вон выходящим: как были машинные коды, так и остались. Однако это не так. Да, программирование в машинных кодах осталось, но она стало символическим кодированием машинных команд. Это был огромный шаг вперед, теперь программисту вовсе не нужно было разбираться в программировании команд на аппаратном уровне. В программировании на Ассемблере стало возможным использование меток, что облегчало в значительной мере отладку программ. Появилась возможность разработки целой серии вычислительных машин с одинаковой или сходной системой команд, что можно назвать первым подобием переносимости кода. Ассемблер нес в себе еще одну революционность для программирования: появилось два представления программ на нем: в машинных кодах и в чистом, откомпилированном виде. Но, по мере развития Ассемблера, его постоянного усложнения, дизассемблирование, т.е. перевод из одного представления программы в другой, становилось все более трудным делом. Надо отметить, что в итоге автоматическое дизассемблирование стало невозможным - для этой цели стали появляться специальные программы-дизассемблеры [15].

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

Рисунок 1. Эволюция языков программирования.

3.3. Lisp (Лисп)

Центральной идеей IPL было понятие списка.

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

Понятие списка интересовало и другого выдающегося члена тесного сообщества исследователей ИИ — Джона Маккарти, блестящего и разностороннего математика. В 1958г., когда при его помощи организовалась лаборатория по ИИ при МТИ, Маккарти начал работу над языком высокого уровня, в котором понятие списка сочеталось с системой обозначений, заимствованной из экзотической области математики — так называемого лямбда-исчисления. Введенное в 1931 г. математиком и логиком Алонзо Черчем, это исчисление оперирует только тремя элементами: символами, представляющими переменные и константы, скобками для группировки символов и обозначениями функций, выражаемыми греческой буквой "Лямбда". Маккарти назвал свой язык LISP от List Processing — обработка списков [1,2].

3.4. FORTRAN (Фортран)

FORTRAN - это первый язык программирования высокого уровня, который получил признание и стал широко применяться. В своем исходном варианте FORTRAN был разработан фирмой IBM в 1957 г. как язык для работы на компьютерах IBM 704. В это время программисты, привыкшие к использованию языка ассемблера, сомневались в возможности использования языков высокого уровня. Наиболее серьезным аргументом была малая эффективность выполнения кода, получающегося в результате трансляции программ, написанных на этих языках. Первые версии FORTRAN были ориентированы главным образом на обеспечение эффективности выполнения. Первое стандартное определение языка появилось в 1966 г., а затем в 70-х были внесены существенные изменения, которые привели к появлению FORTRAN 77, и в 90-х - FORTRAN 90.

Языки программирования также можно разделять на поколения:

– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения;

– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды;

– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль;

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

– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП, Си++, Visual Basic, Delphi.


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

- Язык Фортран создан в начале 50-х годов 20-го века для программирования научно-технических задач;

- Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;

- Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия “блочная структура программы” и “динамическое распределение памяти”;

- BASIC – (середина 60-х годов 20-го века) специализированный язык программирования для начинающих ;

- Все перечисленные выше языки были ориентированы на различные классы задач, но они в той или иной мере были привязаны к конкретной архитектуре ЭВМ.

- PL-1 – (1963-1966гг) многоцелевой универсальный язык. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения.

- АДА (1979 г) – язык назван в честь первой программистки Ады Лавлейс- дочери Байрона. Его отличает модульность конструкций.

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

Большим шагом вперёд в развитии технологий программирования было появление объектно-ориентированного программирования.

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

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

Объект — совокупность свойств, методов, событий.

В объектно-ориентированном программировании понятию объекта соответствует схема:


Свойствамиописываются характеристики объектов (размер, цвет, видимость и т.д.).

Методы– это действия, совершаемые над объектами (ячейку можно почистить – метод Clear, форму показать – метод Show).

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

Объектно-ориентированный подход к программированию:

- программа представляет собой описание объектов, их свойств, совокупностей, отношений между ними, способов их взаимодействия и операций над объектами (методов);

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

Объектно-ориентированное программирование снабжает программные объекты встроенными характеристиками:

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

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

Наследованиепредусматривает создание новых классов на базе существующих и позволяет классу потомку иметь (наследовать) все свойства класса – родителя.

Полиморфизм – множественность форм, которые может принимать правило с одним и тем же именем. Полиморфизм методов – когда метод с одним именем может исполняться по-разному для порождаемого и порождающего классов.

Первый объектно-ориентированный язык программирования Simula был создан в 1960-х годах Нигаардом и Далом.

Современными языками объектно-ориентированного программирования являются С++ и Java. К объектно – ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++. Язык VBA (Visual Basic for Applications) – язык приложений Microsoft Office.

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

Эти языки получили широкое применение в системах автоматизированного проектирования (САПР), в так называемых CAD-пакетах, в моделировании, системах искусственного интеллекта.

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

Первым языком стал язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959г. Этот язык позволяет обрабатывать большие объемы текстовой информации.

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

Самым известным языком логического программирования является Prolog.

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

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

Скрипты (языки сценариев) - целый класс языков программирования, в которых получило развитие событийно управляемая концепция объектно-ориентированного подхода.

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

- Серверный скриптовый язык PHP (1995-1997гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире. Процессор языка работает на сервере, формируя WEB-страницы до отправки по сети.

- Клиентский (браузерный) скриптовый язык Java Script(1990-e годы) обладает средствами формирования WEB-страницы непосредственно в браузере, позволяя осуществлять сборку и манипуляцию данными прямо на компьютере пользователя (клиента).

- Язык Tcl/Tk (конец 80-х годов) состоит из мощных команд, предназначенных для работы с абстрактными нетипизированными объектами и позволяет создавать программы с графическим интерфейсом.

- Язык VRML (1994г) создан для организации виртуальных трехмерных интерфейсов в Интернете.

- Язык XML. С 1996г идет работа над созданием универсального языка структуры документов. Может стать заменой языка HTML.

Структура программных продуктов

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

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

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

Структуризация программных продуктов позволяет:

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

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

- контролировать трудозатраты и стоимость проектных работ и др.

Среди множества модулей различают:

головной модуль, который управляет запуском программного продукта (существует в единственном числе);

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

рабочие модули, выполняющие функции обработки;

сервисные модули и библиотеки, утилиты, осуществляющие обслуживающие функции.

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

Информационная связь модулей обеспечивается за счет использования общей базы данных либо межмодульной передачи данных через переменные обмена.

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

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

ППП – это система программ, предназначенных для решения задач определенного класса.

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

Виды проектирования программных продуктов

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

• структурное проектирование программных продуктов;

• информационное моделирование предметной области и связанных с ней приложений;

• объектно-ориентированное проектирование программных продуктов.

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

Алгоритмы большой сложности обычно представляют с помощью схем двух видов:

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

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

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

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

В этом подходе выделяют следующие составляющие:

- информационный анализ предметных областей (бизнес-областей);

- информационное моделирование – построение комплекса взаимосвязанных моделей данных;

- системное проектирование функций обработки данных;

- детальное конструирование процедур обработки данных.

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

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

Метод объектно-ориентированного проектирования основывается на:

- модели построения системы как совокупности объектов абстрактного типа данных;

- модульной структуре программ;

- нисходящем проектировании, используемом при выделении объектов.

В отличие от традиционного структурного подхода, объектно-ориентированный подход к проектированию программных продуктов основан на:

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

• создании иерархии классов;

• наследовании свойств классов и методов их обработки.

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


Язык программирования служит двум связанным меж ду собой целям :

он дает программисту аппарат для задания действий, которые должны быть

выполнены, и формирует концепции, которыми пользуется программист,

размышляя о том, что делать. Первой цели идеально отвечает язык, который

настолько "близок к машине", что всеми основными машинными аспектами

можно легко и просто оперировать достаточно очевидным для программ иста

образом. Второй цели идеально отвечает язык, который настолько "близок к

решаемой задаче", чтобы концепции ее решения можно было выражать

Связь между яз ыком, на котором мы ду маем, прог раммируем, и

задачами и решениями, которые мы можем представлять в своем

воображении, очень близка. По этой причине ограничивать свойства языка

только целями исключения ошибок программиста в лучшем случае опасно.

Как и в случае с естественными языками, есть огромная польза быть, по

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

концептуальных инструментов, если они не отвечают задаче, то их просто

игнорируют. Например, серьезные ограничения концепции указателя

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

реализовать структуры, указатели и т.п. Хорошее проектирование и

отсутствие ошибок не может гарантироваться чисто за счет яз ыковых

Может показаться удивительным, но конкретный компьютер способен

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

Существует почти столько же разных машинных языков, сколько и

компьютеров, но все они суть разновидности одной идей простые операции

производятся со скоростью молнии на двоичных числах.

Персональные компьютерыF IBMF используют машинный язык

микропроцессоров семейства 8086, т.к. их аппаратная часть основывается

Можно писать программы непосредственно на машинном языке, хотя

это и сложно. На заре компьютеризации (в начале 1950-х г.г.), машинный

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

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

программирования, были созданыFязыки высокого уровняF(т.е. немашинные

языки), которые стали своеобразным связующим мостом между человеком и

машинным языком ком пьютера. Языки высокого уровня работают через

трансляционные программы, которые вводят "исходный код" (гибрид

английских слов и математических выражений, который считывает машина),

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

команды, которые даются на м ашинном языке. Существует два основных

вида трансляторов: интерпретаторы, которые сканируют и проверяют

исходный код в один шаг, и компиляторы, которые сканируют исходный код

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

Язык программирования – ф ормальная знаковая система,

предназначенная для записи ко мпьютерных программ. Язык

программирования определяет набор лексических, синтаксических и

семантических правил, задающих внешний вид программы и действия,

которые выполнит исполнитель (компьютер) под ее управлением.

Со времени созданияFпервых программируемых машин Fчеловечество

придумало уже более восьми с половиной тысяч языков

программирования.FКаждый год их число пополняется новыми. Некоторыми

языками умеет пользоваться только небольшое ч исло их соб ственных

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

Профессиональные программисты иногда применяют в своей работе более

программирования. К наиболее распространённым утверждениям,

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

Функция: язык программирования предназначен для написания

компьютерных программ, которые применяются для передачи

компьютеруFинструкцийFпо выполнению того или иного Fвычислительного

процессаFи организации управления отдельными устройствами.

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

языковFтем, что предназначен для передачи FкомандFи данных от человека

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

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

руководства к действию; тогда как человеческие языки служат также для

Исполнение: язык программирования м ожет использовать

специальные конструкции для определения и манипулирования структурами

Следующий шаг был сделан в 1954 году, когда был создан первый язык

высокого уровня — FФортран (англ. FORTRAN – FORmula TRANslator) .

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

некоторые слова разговорного языка и общепринятые математические

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

писать программы до нескольких тысяч строк длиной. Однако легко

понимаемый в коротких программах, этот язык становился нечитаемым и

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

проблемы пришло после изобретения языков структурного

программирования (англ.structured programming language), таких как FАлгол

Структурное программирование предполагает точно обозначенные

управляющие структуры,Fпрограммные блоки, отсутствие инструкций


безусловного перехода (GOTO), автономные подпрограммы, поддержка

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

Также создавалисьFфункциональныеF(аппликативные) языки (Пример:

Lisp — анг л. LISt Process ing, 1958) и логические Fязыки (пример Prolog F

Хотя структурное программирование, при его использовании, дало

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

когда программа достигала определенной длины. Для того чтобы написать

более слож ную (и длинну ю) программу, нужен был новый подход к

Первые Fпрограммы Fзаключались в установке ключевых

переключателей на передней панели вычислительного устройства. Очевидно,

таким способом можно было составить только небольшие программы.

С развитием компьютерной техники появился Fмашинный язык, с

помощью которого FпрограммистFмог задавать команды, оперируя с ячейками

памяти, полностью используя возможности машины. Однако использование

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

особенно это касается ввода-вывода. Поэтому от его использования

Например, для организации чтения блока данных с гибкого диска

программист может использовать 16 различных команд, каждая из которых

требует 13 параметров, таких как номер блока на диске, номер сектора на

дорожке и т. п. Когда выполнение операции с диском завершается,

контроллер возвращает 23 значения, отражающие наличие и типы ошибок,

которых представляет собой одно элементарное действие для центрального

процессора, такое, например, как считывание информации из ячейки памяти.

Каждая модель процессора имеет свой собственный набор машинных

команд, хотя большинство из них совпадает. Если Процессор F А полностью

понимает языкFПроцессора Б,Fто говорится, чтоFПроцессор АFсовместим с

Процессором Б. Процессор Б будет называться не совместимым с

Процессором АFеслиFАFимеет команды, не распознаваемые FПроцессором Б.

На протяжении 60-х годов запросы на разработку программног о

обеспечения возросли и программы стали очень большими. Люди начали

понимать, что создание программного обеспечения – гораздо более сложная

задача, чем они себе представляли. Это привело к тому, что было

разработаноFструктурное программирование. С Развитием структурного

программирования следующим достижением были FпроцедурыFиFфункции. К

примеру, если есть задача, которая выполняется несколько раз, то ее можно

объявить как функцию или процедуру и в выполнении программы просто


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

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

которым перешли к классам. Структуры – это составные типы данных,

построенные с использованием других типов. Например, структура время. В

нее входит: часы, минуты, секунды. Программист мог создать структуру

время и работать с ней, как с отдельной структурой. FКлассF– это структура,

которая имеет свои переменные и функции, которые работают с этими

переменными. Это было очень большое достижение в области

программирования. Теперь программирование можно было разбить на

классы и тестировать не всю программу, состоящую из 10’ 000 строк кода, а

Читайте также: