Введение в специальность
.pdfFortran |
Fortran-IV |
|
Fortran-77 |
|
|
|
|
Basic |
Altair-Basic |
|
Visual Basic |
||
|
|
IMS |
|
dBASE |
FoxPro |
Visual |
|
|
|
FoxPro |
|||
|
|
|
|
|
|
|
Cobol |
|
|
|
Cobol-85 |
|
|
|
|
|
|
|
||
|
|
|
SQL |
|
|
|
|
Algol-68 |
|
Modula |
|
Delphi |
|
Algol-60 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Pascal |
|
Turbo Pascal |
Object Pascal |
|
|
PL/1 |
|
|
Ada |
|
|
|
|
Smalltalk |
|
|
|
|
|
Simula Simula-67 |
|
|
|
|
|
|
|
B |
C |
|
C++ |
Java |
|
|
|
Visual C++ |
|||
|
|
|
|
|
|
|
Lisp |
|
|
|
|
|
|
|
|
Prolog |
|
|
|
|
|
|
Logo |
|
|
|
|
1960 |
|
1970 |
|
1980 |
1990 |
2000 |
172
Fortran
Visual Basic
Visual FoxPro
Cobol
SQL
Delphi
Pascal
Ada
Smalltalk
Simula
Java
Visual C++
Lisp
Prolog
Logo
Генеалогическое дерево языков программирования высокого уровня
173
в научных кругах, занятых математическими расчетами. Впоследствииязык постоянно совершенствовался идополнялся. Втечение двух последующих лет появились версии Fortran-II и III, в 1962 г.
— популярная версия Fortran-IV, в 1977 г. — не менее известная
Fortran-77 и т. д.
Вот фрагмент простейшей программы на Фортране, дающий представление о его синтаксисе:
C MAIN PROGRAM
101FORMAT(208)
102FORMAT(//’N=’,15, 5X, ’R=’, 15
1//6X, ’M’, 5X, PROB) 103 FORMAT(18, F14.10)
201READ(1,101) N, IR WRITE(3,102) N, IR IF(N) 202, 202, 203
202STOP
203IF(IR) 202, 202, 204
204M=O P=COMBF(N,M)*COMBF(IR-1,N-M-1) 1/COMBF(N+IR-1,IR) ...
Бросаются в глаза фиксированный формат записи программы, отсутствиеописанийпеременных. цифровыеметкиоператоров, зато ссамогоначала вязык заложенысредства форматного ввода/вывода, затем появились комплексные числа и т. п. Эти качества помогли впоследствии Фортрану выстоять в схватке с Алголом. Компи- ляторысФортранаимеютсянавсехаппаратно-программныхплат- формах, это— любимыйязыкфизиковиинженеров. Задолгиегоды наязыкенакопленыбогатейшиебиблиотекинаучныхподпрограмм, которыепростоневозможнобыстропереписатьнаболеесовременные языки. Поэтому, несмотря на критику по поводу своей старомодности, Fortran благополучно входит в XXI век и слухи о его близкой кончине, похоже, весьма преувеличены.
Название этого всем известного языка истолковывается двояко. С одной стороны, оно является сокращением целой фра-
зы «Beginners All-purpuse Symbolic Instruction Code» — символи-
174
ческиймногоцелевойкоддляначинающих, сдругой— намекаетна некоторуюпростотуиначальность. Basic — прямойпотомокФортрана и тоже долгожитель в семье языков программирования.
Первый вариант языка был создан в 1964 году в Дармутском колледже (г. Ганновер, штатНью-Хэмпшир, США). Этонебольшое гуманитарноеучебноезаведениепрославилосьнавесьмиркакродина Бэйсика благодаря двум молодым талантливым преподавателямматематики: ДжонуКемени(Kemeny, John), венгерскомуэмигранту, который в свое время стажировался у фон Неймана в ЛосАламосе во время 0работы над атомной бомбой, и Томасу Курцу (Kurtz, Thomas), работавшему после войны ассистентом у Эйнштейна.
КеменииКурцпредложиливвестивпрограммувсехспециальностей курс программирования, но так как своего вычислительногоцентравколледженебыло, тоимприходилосьвестипрактическиезанятиявоченьнеудобномрежиме. Учащиесяписалисвоипрограммы на Фортране, на бумажках, преподаватели отвозили их на вычислительный центр (ближайший ВЦ располагался в 215 км в БостоневМассачусетскомтехнологическоминституте(МТИ), там ждалидень-два, покапрограммыотперфорируютнакартыипрогонят через машину IBM 704, а затем везли распечатки результатов назад.
Поездив туда-сюда, Кемени и Курц с огромной энергией стали добиваться организации собственного ВЦ. Им удалось уговорить Национальный научный фонд предоставить субсидию, а фирму General Electric — большую скидку наЭВМGE-225. Получив компьютеры, они приступили к реализации давно задуманной двухходовойидеи:
1)разработать простой язык — подмножество Фортрана, доступноеначинающимпрограммистам;
2)создать систему программирования на этом языке, которая позволилабы работатьнамашинеодновременнонесколькимпользователям в режиме диалога. Эту идею Кемени и Курц принесли из МТИ, где в это время проводились первые эксперименты по системамразделениявремени.
175
Программа на Бэйсике сохранила общий фортрановский вид с его цифровыми метками и записью каждого оператора на новой строке, однако Фортран пришлось основательно подправить для того, чтобыпрограммымогливыполнятьсяпошагововрежимеинтерпретации. В частности, был введен революционный оператор бесформатного ввода INPUT. Вот как выглядит на Бэйсике та же программа ввода, сортировки и печати пяти чисел:
10 dim A(5)
20 for i=1 to 5
30 input A(i)
40 next i
50 if i=5 then goto 140
60 if A(i)<=A(i+1) then goto 90
70 i=i+1
80 goto 130
90 z=A(i)
100 A(i)=A(i+1)
110 A(i+1)=z
120 i=1
130 goto 50
140 for i=1 to 5
150 print A(i)
160 next i
Работанадинтерпретаторомиуправляюшейпрограммойразделения времени началась с участием студентов летом 1963 года, а 1 мая 1964 года система заработала. В качестве терминалов к ней были подключены три телетайпа. к осени их число возросло до 20.
Простой и удобный Бэйсик во второй половине 60-х годов был реализованнанесколькихмоделяхмэйнфреймовимини-ЭВМ, благодаряэтомуязыкумногиетысячимолодыхлюдейбылиприобщены к программированию. Среди них оказались и два школьника из городаСиэтлнасеверо-западеСША, будущиемиллиардерыиотцы-
основателифирмыMicrosoft БиллГейтс(Gates, William (Bill); р. 1955)
и Пол Аллен (Allen, Paul; р. 1954). Увлекшись компьютерами, друзьяпожертвовали радинихкарьерой(ГейтсбылотчисленсюридическогофакультетаГарвардскогоуниверситета, кудапоступилучить-
176
|
ся по настоянию отца-юри- |
|
ста, а Аллен был исключен |
|
из Университета штата Ва- |
|
шингтон) и решили посвя- |
|
титьсебяпрофессионально- |
|
му программированию. |
|
Прочитаввначале1975 года |
|
статью о компьютере |
|
«Altair», они тут же позво- |
|
нилиЭдвардуРобертсувго- |
Пол Аллен и Билл Гейтс за теле- |
родАльбукеркеипредложи- |
тайпом в компьютерном классе |
ли свои услуги по написа- |
школы в Сиэтле (1968 г.) |
ниютрансляторасБэйсика. |
|
Поскольку своего компью- |
|
тераунихнебыло, тоотла- |
живатьпрограммуимпришлосьврежимеэмуляциикоманд «Altair» на мэйнфрейме. К маю транслятор был готов и, к удивлению авторов, сразу же заработал на «родной» машине.
Знания юриспреденции все-таки пригодились Гейтсу. СоставленныйимконтрактнаиспользованиеБэйсикавкомпьютерахAltair вошел впоследствии во все учебники по компьютерному праву. Он предусматривалотчисление500 долларовзакаждыйэкземплярпроданнойпрограммы. ТакродиласьфирмаMicrosoft. Первоевремяее штаб-квартирарасполагаласьвАльбукерке, рядомсфирмойMITS, а уж потом переехала в родной для Гейтса и Аллена город Сиэтл.
Предельная простота Бэйсика позволила встраивать его в постояннуюпамятьсамыхдешевыхмикрокомпьютеров, благодаряэто- мувсередине80-хгодовнанемработалимиллионыпользователей по всему миру. Оставаясь неизменно популярным, Бэйсик рос и развивался вместе с персональными компьютерами. В 1984 году, к 20-летиюрождения, КурциКеменивсодружествесАмериканским институтомстандартов(ANSI) разработалиновуюстандартнуюверсиюязыка(True Basic), апотомзаегоразвитие совсейосновательностью взялась разбогатевшая Microsoft, для которой он стал фирменнымязыкомисимволом успеха.
177
Современный Бэйсик мало чем напоминает своего прародителя. Его иногда сравнивают с удавом, который проглатывает и переваривает все новые идеи в программировании. От Алгола и ПаскаляонперенялсовременныйгибкийсинтаксисотSmalltalk — объекты. Болеетого, восприняввизуальнуюCASE-оболочку, Бэйсиксам стал источником идей для визуальных систем программирования.
Вслед за Visual Basic появились Delphi, Visual FoxPro, Visual C++ и
др.
Долгое время технологические системы программирования на Бэйсике развивались только как интерпретаторы, и это ограничивалоегоприменениедлясерьезныхразработок, однаковпоследнее времяпоявилисьоптимизирующиекомпиляторы, предоставляющие полноценную среду программирования, практически не уступаю-
щуюDelphi илиVisual C.
Через два года после появления Фортрана, когда слегка утихли восторги по поводу трансляции формул, выяснилось, что этот язык, идеально подходящий для физиков,
малопригодендляэкономически, коммерческих, бухгалтерскихрасчетов. Тамнетдлинныхформул, затоестьсложныеструктурыданных, которыеязыкневоспринимает. Попыткикак-томодифициро- ватьФортранбылинеочень удачными, ктомужеонбылсобственностьюIBM, адругие фирмы опасались засилия «голоубогогиганта».
В 1959 году группа производителей и потребителей ЭВМ по инициативе неугомоннойГрейсХопперсталаискатьнезависимого спонсора, которыйбымогпрофинансироватьсосданиеновогостандартного языка, специально рассчитанного на задачи обработки экономическихданных. ОнанашлаподдержкувМинистерствеобороныСША, гдектомувремени ужеэксплуатировалось1046 ЭВМ, требующихобширногопрограммногообеспечения. Былаобразова-
на рабочая группа CODASYL — Conference on Data Systems Languages, котораяпоследолгихспоров ипроволочекпредложила проект языка Cobol — COmmon Business Oriented Language — Об-
щий язык, ориентированный на бизнес.
178
Вотличиеотвычислительныхзадач, вкоторыхглавное— алгоритм, апростейшиенеструктурированныеданныепростовводятся и выводятся, в экономических задачах данные имеют приоритет. Они могут иметь очень сложную структуру и хранятся в виде файловнавнешнихустройствахсамипосебе, независимоотпрограмм обработки. Поэтому в Коболе появился способ описания иерархических структур данных, который затем перекочевал во все последующиеуниверсальныеязыкипрограммирования. Крометого, программанаисходномязыкеможетбытьнастроенаналюбоеоборудование и на любую структуру внешних данных, для чего а тексте имеются специальные разделы. Сам алгоритм обработки, располагающийся в разделе процедур (procedure division), бывает, как правило, оченьпростым. АвторыКоболапосчитали, чтопрограммына нем будут писать рядовые бухгалтеры, для которых сокращения и формулы могут показаться слишком сложными, поэтому сделали язык максимально приближенным к обычному английскому, даже знаки операций заменили на слова: вместо «+» пишут оператор ADD, а вместо знака присваивания «=» оператор GIVING (получая). Врезультатеязыксталхотяипонятныманглоязычномупользователю, но слишком многословным.
ВоткаквыглядитфрагментпрограммынаКоболе:
1010 |
IDENTIFICATION DIVISION. |
||
1020 |
PROGRAM-ID “EXAMPLE”. |
||
1030 |
ENVIROMENT DIVISION. |
||
1040 |
INPUT-OUTPUT SECTION. |
||
1050 |
FILE-CONTROL. |
||
1060 |
SELECT CD ASSIGN TO “SYS010” UNIT-RECORD 2540R. |
||
1070 |
SELECT TT ASSIGN TO “SYS009” UTILITY 2400. |
||
1080 |
DATA DIVISION. |
||
1090 |
FILE SECTION. |
||
1100 |
FD |
CD |
DATA RECORD IS C |
1110 |
01 |
LABEL RECORDS ARE OMITTED. |
|
1120 |
C. |
PICTURE 9(4). |
|
1130 |
02 |
C1 |
|
1140 |
02 |
C2 |
PICTURE 9. |
1150 |
02 |
C3 |
PICTURE X(70). |
... |
PROCEDURE DIVISION. |
||
1290 |
179
1300 |
P1. |
OPEN INPUT CD, OUTPUT TT. |
|
1310 |
P2. |
READ CD, AT END GO TO P3. |
|
1320 |
|
MOVE C1 |
TO D1. |
1330 |
|
MONE C2 |
TO D2. |
1340 |
|
MOVE C3 |
TO D3. |
1350 |
|
ADD C1, |
C2, GIVING D4. |
1360 |
|
WRITE T |
FROM D. |
1370 |
P3. |
GO TO P2. |
|
1380 |
CLOSE SD, TT. |
||
1390 |
|
STOP RUN. |
Наэтомпримерехорошовидныотмеченныевышеособенности языка: привязка к оборудованию в строках 1030 - 1070, описание двухуровневой структуры внешних записей в строках 1100 - 1150, многословныйразделпроцедур.
Кобол получил очень широкое распространение в США. Наряду с Фортраном он стал одним из «великих» языков, просуществовавшимуже40 летинедумающимсдаватьпозиции. Понекоторым оценкам, на нем до сих пор пишется не менее 50% коммерческих программ.
ВСоветскийСоюзКоболпопалвначале70-хгодов, вэпохуЕС ЭВМ ивсеобщей увлеченностиАСУ, однако большой популярности он не приобрел, повествовательные англоязычные тексты раздражалиотечественныхпрогрммистов. РусифицированныйКобол, разработанныйдляЭВММинск-32, такженепользовалсяуспехом, так как тексты из-за меньшей лаконичности русского языка получались совсем уж громоздкими. Программисты предпочитали работать на более компактном и универсальном PL/1, о котором мы будемговоритьниже.
Концепция СУБД, появившаяся к началу 70-х годов, не могла не повлиять на языки, предназначенные для экономических задач. Например, группа CODASYL продолжившая свою работу, в 1968 году опубликовала расширение Кобола для работы с базами данных. ФирмыпроизводителиСУБДтакжепредлагалиразличныеязыки манипулирования данными. Эти языки плохо стыковались друг с другом, потому что сами системы основывались на разных моделях данных. Однако, когда в конце 70-х годов стал преобладать ре-
180
ляционныйподход(чтоэтотакое, мыскажемпозже, когдаречьдойдет до истории СУБД), появилась возможность создать унифицированный язык реляционных баз данных. Таким языком стал SQL (Structured Query Language — структурированный язык запросов), разработанныйв1974 годувисследовательскомцентреIBM вСанХосе. В настоящее время SQL является общепризнанным стандартомязыкабазданных, онреализованвовсехпромышленныхСУБД различныхпроизводителей.
Algol |
ЯзыкAlgol (ALGOritmic Language) родился |
|
одновременно с Коболом, и причина его |
||
и его влияние |
||
появления та же — недовольство ученых |
||
наязыки |
||
ФортраномидиктатомIBM. Но, вотличие |
||
программировния |
||
от Фортрана и Кобола, родина Алгола — |
Европа. В1958 годувЦюрихе(Швецария) открыласьмеждународная конференция с 8 участниками (в том числе присутствовал и автор Фортрана Джон Бэкус), на которой был предложен проект нового универсального международного языка программирования Первая версия называлась Algol-58, в течение двух последующих лет язык дорабатывался, в 1960 годубылаопубликован окончательная версия под
названиемAlgol-60. ПоявлениеАлголапроизвелореволюциювязыкахпрогрммирования. ВотличиеотФортрана и Кобола, создававшихся практиками, он разрабатывалсяученымииос-
новывалсянанадежномте- |
Участники конференции по Алголу |
оретическом фундаменте. |
голосуют за принятие языка (1960 г.) |
Основныеособенностиязы- |
|
касводятсякследующему. |
|
• Впервыеязыкбылстрогоформализован. Дляописаниясинтаксиса Джоном Бэкусом совместно с датским астрономом Питером Науромбылапредложенаформазаданиясинтаксическихправил
181
(БНФ— Бэкуса-НаураФорма), ставшаявпоследствииобщепризнаннымстандартомдлявсехязыковпрограммирования.
•Был наведен порядок с типами данных и блочной структурой программ, появилисьобязательныеописанияданныхипроцедур вначалеблоков, разделителиоператоровввидеточкисзапятой. В целом текст программы пробрел современный вид.
•В язык введена возможность рекурсии, что придало ему теоретическуюизящность.
В качестве примера приведем простейшую программу, вычисляющуюсреднееарифметическоемассивачисел:
begin
integer i, n; real s;
real array x[1:n]; s:=0;
for i:=1 step 1 to n do s:=s+x[i];
s:=s/n
end
Похоженасовременныеязыкипрограммирования, правда?
Америкаотнесласькновомуязыкупрохладно, тамцарствовала IBM сосвоимФортраном. ЗатовЕвропе, втомчислеСССР, Алгол был встречен с восторгом, появилось множество компиляторов, обобщенийирасширенийязыка. ВСоветскомСоюзесразу жепосле первых публикаций поАлголу-60 начались работыпосозданию компиляторов для наиболее распространенной и самой мощной в то время ЭВМ М-20. Поскольку эти работы имели очень большое значение для становления отечественных школ системного программирования, онихследуетрассказхатьподробнее.
К началу 60-х годов в стране имелось три коллектива программистов, способных решить непростую задачу написания компиляторасязыкавысокогоуровня. Первыйрасполагался народинемашины М-20 — в ИТМ и ВТАкадемии Наук и возглавлялся СвятославомСергеевичемЛавровым. Учитываяограниченныевозможно-