Смекни!
smekni.com

Курс лекций (стр. 2 из 24)

С середины 50-х годов, когда вычислительная техника прочно укоренилась в университетах и научно-исследовательских лабораториях США Европы, наступило время стремительного прогресса в области программирования. Однако новые разработки не отрицали всего того, что было сделано раньше. Напротив, они опирались на уже построенный фундамент. Компиляторы и интерпретаторы для т.н. языков ассемблера (эти языки требуют от программиста глубокого знания аппаратуры) остались важным средством программирования. Однако хотя эти средства и продолжали использоваться, их роль постепенно снижалась. Посредниками между программистами и машинами становились языки программирования высокого уровня, которые давали возможность больше времени уделять решению конкретной задачи, не отвлекаясь на тонкие вопросы организации самого процесса выполнения задания на машине. Языки программирования - это тщательно составленные последовательности слов, букв, чисел и мнемонических сокращений, используемые для общения с компьютером. Языки программирования, имитирующие естественные языки и способные на основании одного предложения строить несколько команд компьютера, принято считать "языками высокого уровня".

Двумя яркими представителями этого этапа были сотрудники Дартмутского колледжа Томас Курц и Джон Кемени. Долгое время им приходилось работать на ближайшем к ним компьютере марки IBM-700 (объем памяти - 8192 слова, каждое длиной 36 разрядов), который находился в 215 км от их колледжа в Массачусетском технологическом интституте. Программисту требовалось подготовить задание на перфокартах и передать его в вычислительный центр специальному оператору. Этот посредник вводил карты в машину в большом пакете, который часто содержал сотни отдельных программ, принадлежавшим многим пользователям. Чтобы получить ответ, приходилось ждать, пока компьютер обработает весь пакет, но что уходило около суток. Затем исправление, вновь ожидание. Помимо этого первые программы для IBM-700 приходилось писать на языке ассемблера, программирование на котором мало чем отличалось от программирования в двоичном коде.

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

Надо заметить, что к тому времени уже существовали несколько языков высокого уровня. Первым и одним из наиболее распространенным был Фортран (FORTRAN -Formula Translator), который разработала в конце 50-х годов группа инженеров фирмы IBM под руководством Джона Бекуса. Фортран был предназначен для работы с формулами, используемыми в математике и других научно-технических дисциплинах.

Курц и Кемени предполагали, что по синтаксису операторы нового языка будут похожи на операторы Фортрана, однако отличаться большей простотой. Кроме того, предполагалось, что студенты сами будут набирать программы на терминале (а не передавать их в виде колоды перфокарт оператору вычислительного центра), т.е. язык был ориентирован на интерактивное взаимодействие. В результате был создан универсальный символический код для начинающих (BASIC - Beginners All-Purpose Symbolic Code). В последствии Бейсик стал поистине массовым языком программирования. В значительной степени этому способствовало то, что Бейсик практически повсеместно стали использовать как встроенный язык микрокомпьютеров, получивших широкое распространение в конце 70-х годов.

Появление и широкое распространение в 1957 г. Фортрана послужило толчком к разработке еще одного языка АЛГОЛА (ALGOrithmic Language - алгоритмический язык), который создавался как единый язык для научного программирования и в США и в Европе. Он был создан на совещании в Цюрихе в мае 1958 г. с участием создателя Фортрана Джона Бекуса и унаследовал многое от Фортрана. Но в тоже время основные понятия в нем были собраны в более логическую структуру. В дополненном варианте этот язык появился в январе 1960 г. (АЛГОЛ-60). Многие языки, возникшие позднее, базировались (по-крайней мере, частично) на Алголе. Это связано с несколькими его идеями. Одна из наиболее важных - блочная структура, позволяющая делить программу на замкнутые единицы, разрабатываемые независимо. Другая идея - рекурсия, т.е. способность программ повторно обращаться к себе. Третья идея - строго формализованное определение синтаксиса, т.е. способа размещения слов в языке.

Модернизация АЛГОЛА продолжалась и в 60-е годы. В 1968 году появилась версия АЛГОЛ-68. Однако она оказалась слишком громоздкой и неудобной, и не получила широкого признания в Европе. Одним их критиков этой версии был швейцарский специалист по информатике Никлаус Вирт. В этом же 1968 году он начал создавать новый язык Паскаль, который назвал в честь французского философа и математика XVII века. Он подошел к разработке языка, как инженер к проектированию машины. "Искусство инженера состоит в том, чтобы делать сложные задачи простыми". Язык Паскаль требует от программиста определения всех переменных в отдельной секции, расположенной в начале программы. Так как эти определения задаются явным образом, то в Паскаль-программах сравнительно немного ошибок и их проще понять и исправить программисту, не являющемуся автором программы. Это делает Паскаль весьма подходящим для создания больших программ. Датой рождения Паскаля считается 1970 год. В 1973 году он был объявлен официальным языком программирования для учащихся средних школ, которые намерены специализироваться в области вычислительной техники и программирования в университетах США. Паскаль - это один из языков, основанный на принципах структурного программирования.

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

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

Несколько позже Паскаля появился еще один широко распространенный в настоящее время язык высокого уровня - Си. Язык Си разработал в 1972 г. Деннис Ричи, специалист по системному программированию из фирмы "Белл телефон лабораторис". При его создании он ориентировался на программирование с помощью Си новой операционной системы UNIX. Традиционно ради повышения скорости работы операционных систем они писались на языке низкого уровня - ассемблере. В этом плане Си наиболее близок к языкам низкого уровня, поскольку обеспечивает непосредственный доступ к аппаратуре. В конечном итоге на Си было написано более 90% всего кода центральной программы (ядра) системы UNIX. Windows написаны на Си?

В 1960 г. в США было около 5 тыс. компьютеров. В то время фирмы-производители в основном сами создавали программное обеспечение для собственных машин. Однако ситуация начала изменяться. На арену вышел новый вид бизнеса - независимая продажа программного обеспечения. Одна из первых компаний КСК (Computer Science Corporation, CSC) такого рода образовалась в 1959 г. с начальным капиталом 100 долларов (Рой Натт и Флетчер Джоунс). Первоначально основными клиентами были гигантские корпорации и правительственные учреждения наподобие НАСА. Компания совершила головокружительный взлет: в 1964 г КСК заняла первое место среди компаний - производителей программного обеспечения, включенных в список национальной фондовой биржи.

В середине 60-х годов наметился быстрый рост производства компьютеров. Этому способствовало появление нового компьютера PDP-8. Это был первый мини-компьютер, имевший коммерческий успех. При цене приблизительно 18 тыс. долларов он становился доступным для множества технических фирм. Это в свою очередь стимулировало создание большого количества новых разнообразных компонентов программного обеспечения, т.к. требовались программы для использования повсеместно во всех областях производства, проектирования, управления и т.д. К концу 60-х годов в мире уже использовалось около 100 тысяч вычислительных машин.

Новый этап в развитии программирования наступил с появлением персонального компьютера, создание которого стало возможным благодаря изобретению микропроцессора. Отныне простой любитель, заплатив несколько сотен долларов, мог стать обладателем компьютера. Началом этого этапа считается публикация журнала Popular Electronics за 1975 г, в которой описывался первый набор для сборки мини-компьютера "АЛЬТАИР - 8800" (компания производитель - Micro Instrumentation and Telemetry System, MITS, цена - 397 долл., микропроцессор Intel (Integrated Electronics) i8080, n-MOS, 8-разрядный, 2 МГц). В сборке он представлял собой единственную микросхему, расположенную в небольшом ящике, на передней панели которого ряды переключателей и лампочек. Пользователю требовалось самому создавать двоичную программу и затем ввести ее в машину, орудуя переключателями.