Софтпанорама 1993,No.4(38) *** FOREWORD *** Составитель Н.Н.Безруков ************************************************************************ ---------------------------------------- ! К О Л О Н К А Р Е Д А К Т О Р А ! ---------------------------------------- BABBAGE - ЯЗЫК ПРОГРАММИРОВАНИЯ БУДУЩЕГО ========================================== Сейчас уже никто из программистов не сомневается, что язык Турбо Пас- каль безнадежно устарел и не дотягивает даже до языка АДА, a язык С++ не оправдал возлагавшиеся на него надежды. Таким образом тысячи программис- тов сейчас находятся на распутье и готовы поддержать новый язык про- граммирования, если, конечно, он будет достаточно близок к языкам Турбо Паскаль и C++. В области разработки новых языков программирования много спорных мо- ментов, примером которых может служить OOP - объектно-ориентированное программирование, которые многие воспринимают как новую религию или быст- ро набирающий популярность язык ADA - мощный многоцелевой язык разрабо- танный Министерством обороны США и отличающейся чрезвычайно большими возможностями. Хотя язык программирования ADA, как известно, был разра- ботан с целью замены устаревших и все менее используемых языков, таких как COBOL и FORTRAN, он сейчас успешно вытесняет такие языки Турбо Паскаль, C и С++. Трудности заключаются в том, что цикл замены одного языка программи- рования другим охватывает период времени от 20 до 30 лет и не начинается до тех пор, пока мы не убедимся на деле, что ныне существующие языки больше не отвечают нашим требованиям. Мы можем ускорить этот процесс, начав немедленную замену устаревших языков языком ADA. При этом, когда мы придем к выводу, что ADA уже устарел, основная масса программистов будет его активно использовать и переход на новый, более совершенный язык потребует мощных усилий и продолжительного времени. Поэтому уже сейчас встает вопрос о преемнике языка АДА и этот вопрос похоже успешно решается. У нового поколения разработчиков языков программирования появилась тенденция называть разработанные ими языки именами реальных людей, а не прибегать к обычным акронимам. Так язык PASCAL получил свое имя в честь первого создателя счетных машин, а язык ADA назван в честь первого прог- раммиста(точнее программистки). Решив назвать свой новый язык в честь какого-либо человека, мы выбрали Чарльза Бэббиджа, который умер в бед- ности, пытаясь закончить создание первой ЭВМ. Новый язык, таким образом, назван в честь первого разработчика систем, и его разработка проводится, подобно разработкам самого Бэббиджа, без определенной финансовой под- держки, что, естественно, несколько тормозит работу. Вместе с тем именем Бэббиджа мы надеемся простимулировать программистов, которые не будут получать зарплату ни в процессе разработки самого языка, ни в процессе создания его компилятором. Язык BABBAGE основан на элементах языков, которые были открыты после того, как было завершено создание языка ADA. Тони Хоор в своей лекции,за которую Ассоциация по вычислительной технике в 1980 году присудила ему премию Тьюринга, говорил о двух путях разработки программного обеспече- ния. Один путь заключается в том, чтобы сделать программу настолько про- стой, что становится полностью очевидно отсутствие каких-либо недостат- ков. А другой путь состоит в том, чтобы сделать программу настолько сло- жной, что это исключало бы всякую возможность каких-либо погрешностей. Разработчики языка BABBAGE выбрали третий путь, т.е. создать язык, кото- рый содержит только явные недостатки. Программы на BABBAGE отличаются такой низкой надежностью, что модификацию программы можно начинать до того, как интеграция всей системы будет завершена. Более того успешная модификация программ на этом языке не требует наличия или понимания всей системы в целом. Это служит гарантией постоянного роста спроса на услуги системных программистов, что очень важно в условиях рыночной экономики. Как и в языке PASCAL в языке ADA используется принцип "строгой типи- зации данных" с целью избежать появления ошибок, которые могут быть ре- зультатом смешения различных типов данных в тривиальных операциях типа сложения и вычитания. Разработчики языка BABBAGE выступили в защиту принципа "строгой типизации" однако развили его таким образом, чтобы пе- ременным можно было присваивать тип строго в соответствии с выполняемой над ними операцией. При этом область действия строгой типизации для кон- кретной переменной ограничена одним оператором, что резко повышает гиб- кость языка. В последующих версиях языка BABBAGE станет возможным приме- нение "типизации вслепую" когда тип переменной определяется исходя из произвольной буквы в имени переменной или по аналогии с переменными ис- пользуемыми в других написанных автором программах, что позволит удовле- творить давно назревшие требования наиболее квалифицированной части сис- темных программистов. Спорным вопросом, правильность решения которого обсуждается многими разработчиками языков программирования, является метод передачи парамет- ров. Некоторые разработчики выступают в защиту "вызова по имени", другие предпочитают "вызов по значению". В языке BABBAGE используется новый ме- тод - "вызов по телефону". Этот метод оказался особенно эффективным при передачи параметров при программировании систем теледоступа к данным. Концепция передачи параметров по телефону намного упрощает взаимодейст- вие подпрограмм, авторы которых терпеть не могут общаться лично, что ча- сто встречается при разработке сложных проектов. В основу языка ADA положена идея портативности. В процессе разработки языка BABBAGE разработчиками учитывается прежде всего портативность ап- паратуры. Все конструкции языка ориентированы на лаптопы и ноутбуки под- держивающие видеорежимы 128 * 64, 256 * 128 и аналогичные, что впрочем не исключает возможности использования десктопов в режиме 80 * 24. При этом для удобства программистов длинные строки обрезаются как при выдаче на экран так и при записи в файл и параллельно создается файл "хвостов" который можно просмотреть на дополнительном мониторе и отпечатать на до- полнительном принтере. В конце концов, какая польза от совершенного программного обеспечения, если программисту приходится работать на уста- ревших компьютерах с одним монитором и принтером. Известно, что разработка языка программирования проходит успешно, ес- ли она находит финансовую поддержку со стороны правительства. Разработка языка COBOL, например, финансировалась правительством, а языка ADA - Ми- нистерством обороны. Есть определенные основания считать, что данная разработка будет поддержана Министерством Здравоохранения. В языке ADA долго не допускалось использования диалектов. В основу языка BABBAGE, для увеличения его гибкости положена возможность расшире- ния языка. Каждый пользователь может и должен сам определить свой диалект языка в процессе инсталляции компилятора. Спорный вопрос о стандарте BABBAGE отпадает, так как каждый пользователь сам определяет синтаксис и семантику операторов языка в соответствии со своими требованиям, опытом, представлениями или настроением в момент инсталляции компилятора. BABBAGE, таким образом, является первым алгоритмическим языком высокого уровня допускающим генерацию диалекта и соответствующей версии компилято- ра для каждого отдельного пользователя. Ниже приведены примеры, которые могут дать некоторое представление о языке BABBAGE. В структурных языках программирования рекомендовалась замена операто- ров передачи управления GOTO на структуру IF-THEN-ELSE. В языке BABBAGE имеется несколько новых операторов ветвления, которые существенно расши- ряют возможности традиционных (устаревших) языков программирования. Сре- ди них особо следует отметить: WHAT IF (что если) Переход выполняется перед проверкой контролируемого условия; OR ELSE (иначе) альтернативное выполнение группы операторов в зависимости от четности значения таймера. WHY NOT? (почему бы не?) выполняет операторы в некотором случайном порядке; WHAT ELSE? (что бы еще?) Что бы выполнить еще (используется для выполнения произвольного оператора из группы или ввода нового оператора в программу. Послед- нее особенно удобно если после сдачи программы обнаружено, что про- пущены некоторых существенные ветви алгоритма) ELSE WHERE (где-то в другом месте) используется для того, чтобы указать, что исполняемые операторы находятся где-то в другом месте, и возможно еще не написаны тогда как заказчик и начальство наивно предполагает, что они давно отлажены; GONE (ушел) используется для записи неструктурных программ; выполняет произ- вольный переход к другой части программы пользователя. Важным до- стоинством оператора является то, что в отличие от неструктурного GOTO (справедливо критикуемого сторонниками структурного программи- рования) метка на которую выполняется переход совершенно не требу- ется. Последнее не только сокращает текст программы, но и сущест- венно облегчает написание логически сложных алгоритмов. В течении многих лет в языках использовались операторы FOR (в тече- нии), DO UNTIL (выполнять до тех пор, пока), DO WHILE (выполнять в то время, как) и др. для обозначения цикла (LOOP). Исследуя это направле- ние, разработчики языка BABBAGE предлагают новые более совершенные опе- раторы, позволяющие упростить программирование таких важных конструкций как циклы: DON'T DO WHILE DON'T DO UNTIL NEVER DO MAY BE DO MAY BE NOT () TO DO OR NOT TO DO DO IN REVERCE ORDER В каждом современном алгоритмическом языке имеется оператор CASE для реализации многоходового ветвления. Так в языке ALGOL имеется оператор CASE с индексацией, а в языке PASCAL оператор с идентификацией. Т.е. в этих языках выбор не очень велик. В языке BABBAGE, напротив, имеется це- лый ряд операторов этого класса: JUST IN CASE JUST IN TIME BRIEF CASE MULTI CASE OPEN AND SHUT YOUR CASE IN ANY CASE HOPELESS CASE FATAL CASE Сотрудники, входящие в группу разработки языка BABBAGE, постоянно ра- ботают над новыми особенностями языка, что будет способствовать беспре- рывному росту уровня эффективности данного языка при его использования заказчиками. Например, разработчики языка BABBAGE в настоящее время за- няты работой над операторами типа FUZZY CALL и FUZZY RETURN. В работе над этими новым конструкциями уже удалось преодолеть значительные труд- ности. В частности теперь уже необязательно указывать имя вызываемой программы, если оно ясно из контекста или прошлого опыта. Кроме того оператор FUZZY CALL позволяет выполнять модули которые еще не написаны; в этом случае результат выполнения подставляется оптимизирующим блоком компилятора. Это несомненно является вкладом в концепцию модульного программирования. В этой связи следует отметить что данный язык является первым языком в котором оптимизированные и неоптимизированные программы всегда дают разные результаты - черта наблюдавшаяся только в самых со- вершенных компиляторах с языков Паскаль и С++. Ни один язык, неважно каким он является, не может быть использован сам по себе. И для языка BABBAGE совершенно необходима мощная специали- зированная операционная система. После нескольких попыток использовать существующие системы сотрудники группы решили написать собственную "вир- туальную" операционную систему. Любому известна понятие виртуальной па- мяти. Но сотрудники группы по разработке языка BABBAGE сделали попытку найти несколько иное решение, зайдя несколько подальше. Новая операцион- ная система носит название операционной системы виртуального времени (VTOS). В то время как системы виртуальной памяти обеспечивают виртуаль- ные свойства памяти ЭВМ, VTOS выполняет ту же функцию по отношению ко астрономическому времени и времени процессора. В результате ЭВМ может одновременно работать с неограниченным количе- ством пользователей и заданий. Подобно системе виртуальной памяти, кото- рая физически хранит часть данных в ЗУ на дисках, VTOS должна также при- менять некоторые ухищрения для достижения своей цели. Хотя пользователь уверен, что все его задания выполняются в текущий момент времени, неко- торые из этих заданий в действительности будут выполняться через час или даже на следующей неделе. Как можно видеть, язык BABBAGE все еще находится в стадии разработки. Группа сотрудников по разработке языка BABBAGE нуждается в предложениях специалистов по новым средствам для этого нового мощного языка програм- мирования. Автор статьи, являясь одним из сотрудников группы разработки, обращается ко всем, кто работает в области системного программирования с просьбой оказать поддержку группе в разработке нового языка программи- рования (будут приняты все предложения от всех лиц, желающих принять участие в работе группы). 08.04.94 С уважением, Н.Безруков По материалам: DATAMATION Oct.81 pp.242,245,247