Изминаха 50 години от създаването на програмния език Pascal

Оригиналът е на Niklaus Wirth

11
1923

В началото на 1960-те години в света доминираха езиците за програмиране Фортран (Джон Бакъс от IBM) за научни цели и Кобол (Жан Самет от IBM и Министерството на отбраната), който се използваше за комерсиални цели. Програмите се пишеха на хартия, след това трябваше да се перфорират перфокарти, а резултатите от изпълнението на тези програми трябваше да се чакат цял ден. По това време програмните езици се считаха за важни помощници и значително ускоряваха самия процес на програмиране.

През 1960 година международният комитет публикува спецификациите на езика за програмиране Алгол 60. Това бе първият програмен език с ясно формулирани конструкции с точен и ясен синтаксис. Две години по-късно стана ясно, че е необходимо да бъдат направени някои промени и усъвършенствания. Всъщност, основната задача бе разширяването на портфолиото от приложения, понеже Алгол 60 е предназначен само за научни изчисления в сферата на изчислителната математика. Тогава бе сформирана работна група, която се зае с този проект – Working Group, WG 2.1, работеща под егидата на Международната федерация по обработка на информацията (IFIP).

 

Групата включваше почти 40 души и на практика толкова бяха мненията относно това, какъв трябва да бъде наследникът на Алгол. Имаше обширни и разгорещени дискусии, като някои дебати завършваха доста печално. В началото на 1964 година аз станах участник в тази група, малко след което ме помолиха да подготвя конкретно предложение. Тогава групата се раздели на две отделни фракции. Едната от тях искаше създаването на програмен език с радикално нови, непроверени концепции и огромна гъвкавост, който по-късно стана известен като Алгол 68. Другата фракция си постави по-скромна задача и се съсредоточи върху по-реалистичното усъвършенстване на известните към този момент концепции. Трябваше да се бърза, понеже съвсем скоро се очакваше да излезе PL/1 на компанията IBM. Само че моето предложение, което бе напълно възможно да бъде реализирано от техническа гледна точка, отстъпи пред мнозинството, което предпочете да разработва Алгол 68.

 

Съвсем не е достатъчно постулатите на един програмен език да бъдат записани на хартия. Необходимо е да бъде създаден надежден компилатор, който е програма с повишена сложност. В това отношение големите промишлени компании имаха значително преимущество пред нашата работна група, която разчиташе преди всичко на ентусиастите от научните институти. Напуснах тази група през 1966 година и с няколко аспиранта от Станфордския университет посветих времето си за реализирането на компилатора за моя проект. В резултат от това ние получихме езика Алгол W2, който след 1967 година започна да се използва на много места, където работеха големите компютри на IBM. Този език за програмиране се оказа доста успешен. Алгол 68 излезе и бързо потъна в небитието заради собствената си тежест, въпреки че някои от заложените в него концепции получиха втори живот в новите програми езици.

Според мен, Алгол W не бе много добър. Заради това, че още от началото се разработва от група от много хора, този език включваше твърде много компромиси. След моето завръщане в Швейцария аз проектирах програмен език според собствените си предпочитания. Именно това бе Pascal. С няколко от моите помощници написахме ръководство за потребителя и започнахме да проектираме компилатора. По време на неговото създаване се решихме на една рискована стъпка: компилаторът да бъде написан на самия Паскал, след това да бъде ръчно транслиран на Фортран и чак след това компилиран. Резултатът от всичко това бе един съкрушителен провал, понеже поради липсата на структурирани данни във Фортран транслацията се получи твърде тромава. След този неудачен и скъпоструващ урок, вторият опит се оказа успешен. Този път вместо Фортран използвахме езика Scallop.

Pascal

Както и своя предшественик Алгол 60, Паскал има съвсем ясно определени ограничен брой логично разбираеми базови елементи. Неговата структура и синтаксис формално бяха определени в разширената форма на Бакус-Наур. Неговите оператори описват присвояване на значение на променливите, условно изпълнение и цикли. Освен това, в този език съществуват процедури и функции, които могат да бъдат рекурсивни. Значително усъвършенстване в сравнение с другите програмни езици станаха типовете и структурите от данни. Pascal в оригиналния си вид е чисто процедурен език и включва традиционната гама от Алгол-подобни структури за контрол с ключови думи като if, then, else, while, for и т.н.

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

 

Операторът for на Алгол бе значително опростен, което избави новия програмен език от сложни за разбиране конструкции. За по-опростени и прозрачни ситуации за оформяне на цикли бяха добавени операторите while и repeat. Реших да оставя спорния оператор goto. Реших, че общността на програмистите още не е готова за отказ от този оператор. Нещо повече, това нямаше да бъде добре за ръста на популярността на Паскал.

Pascal се оказа съвсем лесен за преподаване и можеше да се използва на практика навсякъде, което бе значително преимущество пред Алгол, Фортран и Кобол. Модулът System на Паскал е ефективен, компактен и съвсем лесен за използване. На новия програмен език силно влияние оказа новата парадигма за структурно програмиране, основен ментор на което бе Едсхер Дейкстра, който още тогава предвиди заплахата от възникването на криза в програмното осигуряване. Това стана през 1968 година.

Езикът за програмиране Паскал бе официално публикуван през 1970 година и за първи път бе използван в курсовете по програмиране в швейцарската висша техническа школа в Цюрих. След това създадохме подмножеството Pascal-S и представихме по-компактен компилатор, който икономисваше значително време и дисково пространство на нашия компютър CDC, което бе особено удобно за студентите. Тогава машинното време и паметта бяха изключително дефицитни.

Разпространението и популярността на Pascal

Съвсем скоро езикът за програмиране Паскал бе забелязан от няколко университета и интересът към него бързо нарасна. Получавахме многобройни молби за помощ при създаването на компилатори и за други компютри. Именно тогава измислих идеята за описването на един хипотетичен компютър, който лесно може да бъде реализиран на различните мейнфрейми. Малко по-късно създадохме и съответния компилатор за този хипотетичен компютър. Оказа се, че въпросният виртуален компютър сравнително лесно може да се реализира с помощта на вече готовите софтуерни инструменти, които по това време бяха предимно асемблери. По този начин възникна архитектурата Pascal-P, където Р означава портване. Тази техника се оказа изключително успешна.

Първите наши клиенти бяха от Белфаст, като техните помощници ни донесоха в Цюрих два тежки кашона с перфокарти, на които бе записан компилатора, проектиран за компютъра ICL. Интересно е че на границата те са били най-подробно проверявани, понеже е възникнало съмнение, че тези перфокарти могат да съдържат някакви военни тайни. Всичко това ставаше без каквито и да било международни проектантски организации, без бюрокрация и без  бюджети за изследване. Към днешен ден това е невъзможно.

 

Няколко години по-късно се появиха първите микрокомпютри. Това бяха неголеми машини, процесорът на които е интегриран в един чип, които имаха 8-битови шини на данни, а цената на тези микропроцесори бе по джоба дори и на физическите лица. Оказа се, че благодарение на своя неголям компилатор, който спокойно може да се побере в 64 KB памет, Паскал е много подходящ за тези процесори.

Работна група под ръководството на Кен Боулс от университета на Сан Диего и Филип Кан от Borland Inc. в Санта Крус създадоха за нашия компилатор една опростена и удобна система, включваща текстов редактор и дебъгер за откриване и диагностика на грешките. Този пакет се продаваше за $50, записан бе на дискети и носеше името Turbo Pascal. Именно благодарение на тези дискети Паскал се разпространи мигновено, особено в училищата и висшите учебни заведения, и за много хора стана дългоочакваната входна точка към програмирането и компютърните науки. Нашето ръководство се превърна в изключителен бестселър.

 

Разпространението на новия програмен език не се ограничи само с Америка и Европа. Русия и Китай също с огромен ентусиазъм възприеха Паскал. Разбрах за това доста по-късно по време на моите пътувания до Китай през 1982 година и до СССР през 1990-а, където ми показаха версия на нашето ръководство, написана с неразбираеми за мен символи и букви.

Наследниците на Паскал

Времето не стои на едно място, компютрите започнаха да се развиват все по-бързо и изискванията към приложенията, както и към програмистите, рязко нараснаха. Програмите вече не се пишеха само от един човек, а от големи групи хора. Така се наложи създаването на модули, които са сравнително независими от останалите софтуерни модули. По-късно тези модули се обединяват в една обща програма, като това става автоматично.

Модулите с проверка целостността на типовете бяха основното разширение на първия наследник на Паскал, който през 1979 година получи името Modula-2 (от modular language) и стана еволюционно развитие на Паскал. Появи се и езикът Mesa, разработен от Xerox PARC предимно за системно програмиране.

 В Modula-2 се появиха оператори за програмиране на паралелни процеси, които понякога се наричат квазипаралелни потоци. Паралелното програмиране бе основната тема през 1970-те години. Вследствие от това, Modula-2 постепенно се усложни твърде много и вече не бе подходящ за обучение по програмиране. Усещаше се, че този език има нужда от усъвършенстване и опростяване.

Така възникна езикът Oberon, който първоначално също бе създаден от Xerox PARC. По това време мейнфрейми вече не се използваха и те бяха заменени от мощни работни станции с дисплеи с висока резолюция. За тях в PARC бяха разработени програмния език и операционната система Cedar.

Днес Oberon успешно се използва на много места. Революция, както стана с Паскал, не се случи, но той положи основата на нещо друго. През 1995 година на пазара се появиха FPGA матриците, с помощта на които може да бъде конфигурирана на практика произволна цифрова схема. Именно за тях аз разработих езика Lola (logic language) с подобни на Oberon елементи и подобна структура, която е подходяща за описването на тези цифрови схеми. По този начин осезателно се опрости проектирането на съвременния хардуер и софтуер.

Основен извод

Според мен идеалният програмен език трябва да бъде определен с помощта на различните категории на математическата логика, аксиоми и правила. За неговото разбиране не е необходимо да се познава какъвто и да било конкретен компютър или механизъм. Последователността Pascal-Modula-Oberon показват моя стремеж да постигна това.

Абонирай се
Извести ме за
guest
11 Коментара
стари
нови
Отзиви
Всички коментари