Программы для первых ЭВМ программисты писали на языках машинных команд. Это очень трудоемкий и длительный процесс. Проходило значительное время между началом составления программы
и началом ее использования. Решить эту проблему можно былолишь путем создания средств автоматизации программирования.
Первыми «инструментами», которые экономили труд программистов, стали подпрограммы. В августе 1944 года для релейной машины «Марк-1» под руководством Грейс Хоппер (женщина-программист, морской офицер ВМФ США) была написана первая под
программа для вычисления sin(x).
Не одну Грейс Хоппер волновала проблема облегчения труда программистов. В 1949 году Джон Моучли (один из создателей ЭВМ
ЕNIАС) разработал систему Short Code, которую можно считать предшественницей языков программирования высокого уровня.
Программист записывал решаемую задачу в виде математических формул, преобразовывал формулы в двухбуквенные коды. В дальнейшем специальная программа переводила эти коды в двоичный машинный код. Таким образом, Дж. Моучли разработал один из
первых примитивных интерпретаторов. А в 1951 году Г. Хоппер создала первый компилятор А-0. Она же впервые ввела этот термин.
В 50-е годы прошлого века группа под руководством Г. Хоппер приступила к разработке нового языка и компилятора В-0. Новый язык
позволил бы программировать на языке, близком к обычному английскому. Разработчики языка выбрали около 30 английских слов,
для распознавания которых Г. Хоппер придумала способ, сохранившийся в операторах будущих языков программирования: каждое
слово содержит неповторимую комбинацию из первой и третьей букв.Благодаря этому компилятор при создании машинного кода програм
мы может игнорировать все остальные буквы в слове.
Необходимость появления такой системы, язык которой приближен к разговорному, Г. Хоппер связывала с тем, что область применения ЭВМ будет расширяться, в связи с чем будет расти и круг пользователей. По словам Г. Хоппер, следует оставить попытки «превратить их всех в математиков».
В 1958 году система В-0 получила название FLOW-MATIC и была
ориентирована на обработку коммерческих данных. В 1959 годубыл
разработан язык COBOL (Common Business Oriented Language, Кобол) — машинно-независимый язык программирования высокого
уровня для решения задач бизнеса. Одна и та же программа, написанная на машинно-независимом языке, может быть выполнена на
ЭВМ разных типов, оснащенных соответствующим транслятором с
этого языка. Консультантом при создании языка COBOL, вновь выступила Г. Хоппер.
В 1954 году публикуется сообщение о создании языка FORTRAN
(FORmula TRANslation, Фортран). Местом рождения языка стала
штаб-квартира фирмы IBM в Нью-Йорке. Одним из главных разработчиков является Джон Бэкус. Он же стал автором НФБ (нормальная форма Бэкуса), которая используется для описания синтаксиса
многих языков программирования.
Одним из основных достоинств первой версии Фортрана являлось то, что язык давал возможность автоматизировать организацию циклов. Этот язык стал незаменимым для разработки научных
и инженерных приложений. Следует отметить долговечность языка Фортран. За полстолетия он сильно изменился. В настоящее время Фортран реализован на персональных компьютерах, суперкомпьютерах и попрежнему широко используется в научных исследо
ваниях.
Втот же период в европейских странах и в СССР популярным становится язык ALGOL(Алгол). Как и FORTRAN, он ориентировался
на математические задачи. В нем была реализована передовая для
того времени технология программирования — структурное программирование.
Большое количество новых языков появилось в 60-70-е годы прошлого столетия, но не все из них выдержали испытание временем.
К языкам-долгожителям следует отнести язык Basic (Бейсик), разработанный в Дартмутском университете в 1964 году под руководством Джона Кемени и Томаса Курца. По замыслу авторов, это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение
Basic получил на микроЭВМ и персональных компьютерах. Однако
первоначально этот язык был неструктурным и с этой точки зрения
плохо подходил для обучения качественному программированию.
В 1985 году была создана версия языка True Basic, которая, по мнению разработчиков, была совершеннее, чем Pascal. В 1991 году появилась первая версия языка Visual Basic.
Для первых языков программирования характерной чертой была предметная ориентация. Это значит, что каждый язык предназначался для решения какого-то определенного класса задач. COBOL
был ориентирован на решение задач бизнеса, FORTRAN — на проведение инженерных и научных расчетов. В эпоху ЭВМ третьего поколения большое распространение получил язык PL/1 (Program Language/1), разработанный фирмой IBM. Это был первый язык,
претендовавший на универсальность, т. е. на возможность решатьлюбые задачи: вычислительные, обработки текстов, накопления и поиска информации. PL/1 оказался слишком сложным языком,
транслятор с него недостаточно оптимальным, содержащим ряд невыявленных ошибок. По этой причине этот язык не получил распространения. Однако линия на универсализацию языков была продолжена. Старые языки были модернизированы в универсальные
варианты. Примером тому стал FORTRAN 77.
Значительным событием в истории языков программирования
стало создание в 1971 году языка Pascal (Паскаль). Его автором является Никлаус Вирт, профессор из Швейцарии. Вирт назвал этот
язык в честь французского математика и физика Блеза Паскаля, который в 1642 году сконструировал вычислительный механизм. Первоначально Pascal создавался как язык для обучения. В нем ярковыражена структурная линия программирования. Широкое практическое применение язык получил с появлением персональных
компьютеров в версии Turbo Pascal.
Язык программирования С (Си) был задуман как инструментальный язык для разработки операционных систем (ОС). Он создавался
одновременно с операционной системой UNIX. Авторами этого языка и ОС UNIX являются американские программисты Деннис Ричи
и Кеннет Томпсон. Первоначально К. Томпсон начал писать ОС UNIX на языке FORTRAN. В дальнейшем был создан язык С, и в
1973 году ядро операционной системы вместе с программами-утилитами было переписано на С. Этот язык является структурным языком высокого уровня. В настоящее время он применяется для разра-
ботки не только операционных систем, но и трансляторов, системных и прикладных программ.
В 90-х годах прошлого столетия планировалось появление компьютеров пятого поколения, называемых машинами «искусственного интеллекта» . В качестве основных языков программирования в
этом, пока неосуществленном, проекте предполагались языки искусственного интеллекта LISP и PROLOG.
Создателем языка LISP (1956-1959 гг.) является Джон Маккарти,
которого называют отцом искусственного интеллекта. Именно он первым ввел термин «искусственный интеллект». Основным в языке LISP
является понятие рекурсивно определенных функций. Доказано, что
любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций. Основные идеи этого языка были позже использованы в языке программирования для детей LOGO, разработанном в
70-е годы ХХ века в Массачусетском технологическом институте под
руководством Сэймура Пейперта. Подмножество языка LOGO, включающее команды для Черепашки, применяется при раннем обучении
программированию.
Язык PROLOG разработан во Франции в 1972 году также для решения проблем искусственного интеллекта. PROLOG позволяет в формальном виде описывать различные утверждения, логику рассуждений, заставляет компьютер давать ответы на заданные вопросы.
В последнее время одним из основных направлений в развитии
программного обеспечения компьютера стал объектно-ориентированный подход. Под словом «объект» понимается структура, объединяющая вединое целое данные и программы их обработки. Стали популярны объектно-ориентированные операционные системы
(например, Windows), прикладные программы, а также системы
объектно-ориентированного программирования (ООП).
Первым языком с элементами ООП был язык Симула-67. В Turbo
Pascal, начиная с версии 5.5, появились средства ООП. Итогом развития Turbo Pascal в этом направлении стало создание фирмой
Borland системы программирования Delphi (Делфи). Использование
этой системы, в частности, дает возможность легко и быстро программировать сложный графический интерфейс. В 1991 году появилась первая версия языка Visual Basic. Начиная с пятой версии
(1997 г.) язык стал полностью объектно-ориентированным. По
данным на конец 90-х годов прошлого столетия, количество
программистов, использующих для своих разработок Visual Basic,
не уступает числу сторонников Visual С++ и Delphi.
В 1985 году лаборатория Bell Labs (США) сообщила о создании
языка программирования С++ (Си++). Этот язык является сегодня
наиболее популярным среди языков объектно-ориентированного
программирования. С его помощью возможно создание программных приложений, ориентированных на любые машины — от персональных до суперкомпьютеров. Создатель языка — Бьорн Страуструп.
Представителем языков объектно-ориентированного программирования является и язык JAVA, созданный в 1995 году под руководством Джеймса Гослинга группой инженеров компании Sun
Microsystems. При его разработке была поставлена цель — создать
простой язык, не требующий специального изучения. Язык JAVA
был разработан так, чтобы быть максимально похожим на С++.
JAVA является идеальным инструментом при создании приложений для Интернета.
За последние несколько десятилетий программирование стало
индустрией. Как и в каждой индустрии, здесь есть производители
продукции и ее потребители. Чаще всего производители — это коллективы программистов, объединенные в фирмы, компании (пример: Microsoft, Adobe, C1, «Кирилл и Мефодий»). Пользователи
приобретают у производителей программные продукты. Программным продуктом (ПП)называется сама программа в совокупности с пользовательской документацией. Поэтому программный
продукт можно эксплуатировать без участия его разработчика.
Жизненным циклом программного продукта называют следующую последовательность этапов.
Анализ — изучение потребностей пользователя (например, функционирование системы, которую нужно автоматизировать) и определение перечня требований к будущей программе. Эту работу выполняет системный аналитик.
Проектирование — определение общей структуры (архитектуры)
ПП. Результат — спецификация ПП. Эту работу выполняет системный программист.
Реализация — написание программного кода отдельных модулей, их тестирование, составление документации.
Сборка, тестирование, испытание — сборка в единый комплекс
всего, что сделано разными программистами, тестирование всего
программного комплекса. Альфа-тестированием называют тестирование ПП людьми из той же организации, не участвовавшими в разработке программ. В результате должна быть получена работоспособная программа.
Внедрение (выпуск) — на этом этапе разработчик работает на одного заказчика (пользователя). Программный продукт доводится до
состояния, которое полностью удовлетворяет потребности пользователя. Происходит обучение пользователя, после чего он может работать с ПП без участия автора.
Выпуск ПП на рынок начинается с этапа бета-тестирования.
Соответствующая версия программы называется бета-версией.
Изготавливается несколько экземпляров ПП, которые передаются
потенциальным пользователям. Цель — еще раз проверить работоспособность ПП. После бета-тестирования происходит выпуск коммерческой версии.
Сопровождение — устранение обнаруживаемых в ходе эксплуатации ошибок. Внесение непринципиальных усовершенствований.
Накопление предложений для разработки следующей версии ПП.
Первые средства автоматизации программирования: Short Code
(1949); компилятор А-0 (1951).
Первыми распространенными полноценными языками высокого
уровня были: FORTRAN (Фортран) (1954), ориентированный на математические вычисления, COBOL, (Кобол), ориентированный на задачи бизнеса.
Языки, распространившиеся в 60-70-х годах ХХ века: ALGOL,
Basic, Pascal, PL/1; С (Си) — первый язык высокого уровня, применяемый в системном программировании; языки искусственного интеллекта: PROLOG, LISP.
В 1980-90-е годы ХХ века были созданы языки объектно-ориентированного программирования: С++, Delphi, Visual Basic; JAVA —
язык Web-программирования.
Программный продукт — сама программа и пользовательская документация к ней.
Жизненный цикл программного продукта включает следующие
этапы: анализ, проектирование, сборку, тестирование, испытание,
внедрение, сопровождение.