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

Обновлено: 05.07.2024

Машинный код процессора. Понятие программы. Уровни языков программирования.

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

Машинный код (платформенно-ориентированный код), машинный язык — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.

Машинный код можно рассматривать как примитивный язык программирования или как самый низкий уровень представления скомпилированных или ассемблированных компьютерных программ. Большинство программ пишется на языках более высокого уровня и транслируется в машинный код компиляторами. Машинный код иногда называют нативным кодом (также собственным или родным кодом — от англ. native code), когда говорят о платформенно-зависимых частях языка или библиотек.

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

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

Язык программирования – это формальная знаковая система, которая предназначена для написания программ, понятных для исполнителя (в нашем рассмотрении – это компьютер).

Уровни языков программирования: Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня (операторы языка близки к машинному коду и ориентированы на конкретные команды процессора (язык ассемблера)). Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру.

Поколение языков программирования. Обзор языков программирования высокого уровня.

Иногда различают пять поколений языков программирования, правда данное разделение является спорным:

IV поколение: Начало 1970-х гг. до сегодняшнего времени. Непроцедурные, объектно-ориентированные, языки запросов, параллельные. Часто относят: SQL, SGML (HTML, XML), Prolog, и многие другие узкоспециализированных декларативных языков. Основная отличительная особенность языка четвертого поколения: приближение к человеческой речи (декларативные языки). Некоторые языки имеют черты одновременно и третьего и четвертого поколений.

V поколение: Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки. Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками.

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

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

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

Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении.

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

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

3. Понятия: алгоритм, семантика, синтаксис, отладка и тестирование программы.

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

Синтаксис –совокупность правил и требований записи команд (операторов).

Семантика –смысл каждой команды и других конструкций языка.

Отладка –процесс устранения ошибок.

Тестирование –процесс поиска ошибок в программе.

Статьи к прочтению:

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


Похожие статьи:

Алго́л (англ. Algol от англ. algorithmic — алгоритмический и англ. language — язык) — название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ. Разработан комитетом по языку высокого уровня IFIP в 1958—1960 гг. (Алгол-58, Алгол-60); усовершенствован в 1964—1968 гг. (Алгол 68). Алгол относится к языкам высокого уровня и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе в СССР, в то время как сравнимый с ним язык Фортран был распространён в США и Канаде. Оказал заметное влияние на все разработанные позднее императивные языки программирования — в частности, на язык Pascal.

Обычно названием Алгол (без уточнения версии языка) именуют Алгол-60, в то время как Алгол 68 рассматривается как самостоятельный язык.

Содержание

История

Алгол был разработан в 1958 году, на недельной конференции в ETH (Цюрих, Швейцария) как универсальный язык программирования для широкого круга применений, а затем доработан комитетом, созданным Международной федерацией по обработке информации (IFIP). В комитет вошёл ряд ведущих европейских и американских учёных и инженеров-разработчиков языков. Среди них были: Джон Бэкус — один из создателей Фортрана, Джозеф Уэгстен — впоследствии возглавлял комитет по разработке языка Кобол, Джон Маккарти — автор языка Лисп разработанного одновременно с Алголом, Петер Наур — впоследствии доработал «нормальную форму Бэкуса», завершив разработку БНФ, Эдсгер Дейкстра — нидерландский учёный, впоследствии получивший широкую известность как один из создателей структурного программирования и сторонник математического подхода к программированию, будущий лауреат Премии Тьюринга.

Сначала работа столкнулась с большими трудностями непринципиального характера. Так, например, один из членов комитета вспоминал «десятичную бурю» — крайне резкую дискуссию между американскими и европейскими участниками по поводу того, какой именно символ использовать в качестве разделителя целой и дробной части числа. Американцы стояли за точку, европейцы требовали применять традиционную в Европе запятую, и из-за такой мелочи работа оказалась под реальной угрозой срыва. Чтобы избежать конфликтов по мелким вопросам, было решено, что описание Алгола будет трёхуровневым, включающим уровень описаний, публикаций и реализации. Мелкие вопросы, типа выбора между точкой и запятой или используемого алфавита, были вынесены на второй-третий уровень, что позволило относительно быстро решить принципиальные вопросы. На уровне публикаций, согласованном позже, допускалось использование национальных ключевых слов и стандартов представления данных (в том числе и десятичной точки), уровень реализации определял язык совершенно строго — согласно ему должны были строиться трансляторы.

После принятия в 1958 году первой версии описания языка Алгол-58 довольно быстро были осознаны проблемы, для решения которых комитет сформировал новый вариант стандарта — Алгол-60; он и стал «классическим» Алголом. В 1959 году Джон Бэкус разработал «нормальную форму Бэкуса» (БНФ) — формальный способ описания алгоритмических языков. Первым языком, спецификация которого была записана в БНФ, стал Алгол-58. Впоследствии, после усовершенствований, которые предложил Питер Наур, возникла форма Бэкуса-Наура (аббревиатура та же — БНФ или BNF), которая использовалась для спецификации языка ALGOL-60 уже на этапе её разработки.

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

SHARE — американская ассоциация пользователей компьютеров IBM, — потребовала от фирмы реализовать Алгол для своих машин, но появившийся в конце концов компилятор Алгола для IBM OS/360 был крайне неудобен в использовании — вполне естественно, что IBM, вложившая в Фортран огромные суммы, не имела стимула для создания нового продукта, который лишь конкурировал бы со старым. В то же время, недостатки Фортрана вынудили IBM искать ему замену и привели к разработке PL/I — языка-наследника Фортрана, в котором влияние Алгола было весьма заметным.

А вот в Европе Алгол приняли с энтузиазмом. Он быстро завоевал популярность в академической среде, повсеместно шла разработка компиляторов, многие из которых, несмотря на сложности реализации, оказались весьма успешными. Алгол распространился от Великобритании до Дальнего востока СССР, став как универсальным языком описания алгоритмов в научных публикациях, так и средством реального программирования.

Язык Алгол был принят фирмой Burroughs Corporation в их моделях, начиная с B5000 — этот язык получил название Elliott ALGOL На компьютерах LGP-30 использовался язык Dartmouth ALGOL 30.

Даже когда язык Алгол почти перестал использоваться для программирования, он ещё долго оставался официальным языком для публикации алгоритмов.

Свойства языка

Особенности языка Алгол стали типичными для большинства императивных языков, созданных позднее него. Именно в Алголе появилось представление о программе не как о свободной последовательности команд, а как о блочной структуре, состоящей из чётко описанных и отделённых друг от друга частей. Основной блок программы на Алголе — это сама главная программа. Она содержит свою исполняемую часть, заключённую в блок, ограниченный парой ключевых слов begin и end , а также описания подпрограмм. Каждая подпрограмма — это программа в миниатюре, имеющая собственные, описанные внутри неё данные, однозначно определённый интерфейс в виде имени и списка формальных параметров, и блок кода. При этом в блоке могут выделяться подблоки.

Были выделены структурные управляющие конструкции: ветвления, циклы, последовательные участки, исполняющие условно или многократно вложенные наборы операторов, также ограниченные теми же ключевыми словами begin и end , что дало возможность описывать логику программы без использования безусловных переходов — печально известного оператора goto, провоцирующего на создание запутанных и плохо структурированных программ.

Современным программистам подобная структура программы кажется чем-то самоочевидной, кое в чём устаревшей и не всегда удобной (так, часто критикуются бесконечные begin — end в программах на Паскале, который унаследовал эту особенность именно от Алгола), но на момент появления Алгола всё это было заметным шагом вперёд. Программы становились регулярными, это давало возможность наращивать их по объёму, сохраняя обозримыми, понятными, доступными анализу и исправлению. Именно на базе Алгола и его языков-потомков были выполнены успешные работы по аналитическому доказательству правильности программ.

Крайне важным свойством Алгола стала возможность организации рекурсивных процедур, до этого у промышленных языков отсутствовавшая (у лидеров рынка — Фортрана и Кобола, — рекурсия прямо запрещена), но широко использовавшаяся в Лиспе. Использование рекурсивных вычислений в ряде случаев способно значительно упростить структуру программы и сделать её более понятной за счёт близости к математическому описанию алгоритма решения задачи.

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

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

Пример кода на языке Алгол-60

Это пример выдачи на печать таблицы в реализации Алгола Elliott 803 ALGOL.

PUNCH(3) посылает текст не на перфоратор, а на удалённый принтер. SAMELINE подавляет возврат каретки. ALIGNED(1,6) указывает формат — 1 знак до и 6 после десятичной точки.

Hello, World

Это пример программы Hello, World для реализации Dartmouth ALGOL 30 см. ссылку.

Это альтернативная реализация для Elliott Algol.

Реализация для IBM OS/360 ALGOL F.

Трюк Йенсена

Рассмотрим следующую программу на Алголе:

В соответствии с определением способа передачи параметров по имени, вызов процедуры p в данном случае должен приводить к обнулению всех элементов массива s. Такое использование передачи параметра по имени было названо «трюком Йенсена» в честь впервые предложившего его программиста. Фактически для передачи по имени сложных выражений компилятор должен был создавать специальную неименованную функцию, вычисляющую это выражение в его собственной среде окружения, так называемый санк. Ближайшим аналогом санка является замыкание в языке Лисп, однако санк возникает только в специфическом контексте передачи параметров. Эта особенность языка Алгол-60, в остальном довольно разумно организованного, примечательна удивительным сочетанием полной практической бесполезности с чрезвычайной сложностью и неэффективностью реализации. Поэтому в дальнейшем развитии языков программирования от передачи параметров по имени отказались. В языке PL/I, в целом очень много унаследовавшем от Алгола-60, на этой волне заодно отказались и от передачи параметров по значению, оставив, как и в раннем Фортране, единственный механизм — по ссылке. [1] В языке Си, напротив, осталась только передача параметров по значению (передача по ссылке там может быть смоделирована путём использования параметров типа «указатель»). А для тех случаев, когда передача параметров по имени имеет смысл (она необходима, например, если требуется создать функцию, для которой значения параметров не вычислялись бы в момент вызова), были созданы специальные синтаксические механизмы.

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

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

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

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

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

– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП, Си++, 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка».

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

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

Языки программирования высокого уровня

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

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

Fortran (Фортран)

Фортран (англ. Fortran ) — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является сокращением от FOR mula TRAN slator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться.

В марте 1966 года были утверждены два стандарта языка FORTRAN, которые определяли два различных языка: FORTRAN (основанный на FORTRAN IV) и Basic FORTRAN. Первый их этих стандартов позднее стал известен как FORTRAN 66 .

После выпуска стандарта FORTRAN 66 разработчики компиляторов дополняли свои реализации языка новыми возможностями. В свою очередь, это привело к пересмотру стандарта в 1977 году, и в апреле 1978 был принят новый стандарт языка, известный как FORTRAN 77 . Он добавил многие существенные возможности и устранил ряд недостатков FORTRAN 66.

В 1992 году появился FORTRAN 90 , следующий за FORTRAN 77. Он является его строгим расширением: любая программа, написанная на FORTRAN 77, может быть скомпилирована и запущена как программа на FORTRAN 90.

Cobol (Кобол)

Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х годов. Он отличается большой «многословностью» — его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня.

Algol (Алгол)

Это название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ. Разработан комитетом по языку высокого уровня в 1958–1960 годах (Алгол 58, Алгол 60). В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.

Обычно названием Алгол (без уточнения версии) именуют Алгол 60, в то время как Алгол 68 рассматривается как самостоятельный язык.

Pascal (Паскаль)

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

В 1978 году в Калифорнийском университете в Сан-Диего была разработана система UCSD p-System, включавшая порт компилятора Вирта с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и прочее.

В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal .

В 1983 году появилась первая версия интегрированной среды разработки Turbo Pascal фирмы Borland, основывавшаяся на одноимённой реализации Паскаля.

Дальнейшее развитие реализации Паскаля от Borland породило вариант Object Pascal .

Basic (Бейсик)

Бейсик был придуман в 1964 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем, и под их руководством был реализован командой студентов колледжа.

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

Было создано несколько новых версий Бейсика для платформы IBM PC. Microsoft продавала Бейсик для MS-DOS/PC DOS, включая IBM Advanced BASIC ( BASICA ), GW-BASIC (модификация BASICA, не требующая «прошивки» от IBM) и Quick BASIC .

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

C (Си)

Язык программирования Си разрабатывался в период с 1969 по 1973 годы в лабораториях Bell Labs, и к 1973 году на него была переписана большая часть ядра UNIX. Название языка стало логическим продолжением старого языка «Би», многие особенности которого были положены в основу.

По мере развития язык сначала стандартизировали как ANSI C, а затем этот стандарт был принят комитетом по международной стандартизации ISO как ISO C, ставший также известным под названием C90. В стандарте С99 язык получил новые возможности, из которых в качестве наиболее значимых можно отметить массивы переменной длины и встраиваемые функции. А в стандарте C11 в язык добавили реализацию потоков и поддержку атомарных типов. Однако с тех пор язык развивается медленно, и в стандарт С18 попали лишь исправления ошибок стандарта C11.

Ада

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

Язык Ada был создан в 1979–1980 годах па заказу Министерства Oбороны США. Целью проекта было уменьшение количества различных языков, используемых в Министерстве для различных целей (на 1983 год — свыше 450) путем разработки единого языка, удовлетворяющего требованиям Министерства.

В 1995 году был принят новый стандарт Ады, известный как Ada95. В язык были введены средства объектного программирования. Кроме того, язык был дополнен более развитыми средствами для взаимодействия с программами, написанными на других языках.

Borland Delphi

Интегрированная среда разработки ПО для Microsoft Windows, Mac OS, iOS и Android на языке Delphi ( ранее носившем название Object Pascal), созданная первоначально фирмой Borland.

Первая версия Borland Delphi (позже известная как Delphi 1) была выпущена в 1995 году и была предназначена для разработки 16-разрядных приложений для Windows 3.1.

Delphi 2 появилась в 1996 году и позволяла разрабатывать 32-битные приложения. Для программирования под Windows 3.1 в комплект поставки включалась Delphi 1.

Microsoft Visual Basic

Язык программирования, а также интегрированная среда разработки программного обеспечения , разрабатываемые корпорацией Microsoft . Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows .

В мае 1991 года вышла Visual Basic 1.0 для Microsoft Windows . За основу языка был взят синтаксис QBasic .

В ноябре 1992 года Visual Basic 2.0. Среда разработки стала проще в использовании и работала быстрее.

В 1993 году вышел в свет Visual Basic 3.0 в версиях Standard и Professional.

Borland C ++

Среда программирования, разработанная фирмой Borland для создания программ на языках программирования C и C++. Первоначально среда программирования использовалась для создания программ под DOS, но с появлением и распространением Windows и Windows NT были предложены средства для разработки приложений для этих операционных систем.

Первая доступная версия Borland C++, имевшая номер 2.0, вышла в 1990 году под DOS

В 1991 году вышла версия 3.0 с поддержкой сборки Windows-приложений.

В 1997 году выходит последний релиз Borland C++, который ещё поддерживал генерацию кода для реального режима и MS-DOS.

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