КОМАЛ
Парадигма | Структурированный |
---|---|
Разработано | Бёрге Р. Кристенсен, Бенедикт Лёфстедт |
Впервые появился | 1975 |
Дисциплина набора текста | Сильный |
Под влиянием | |
БЕЙСИК , Паскаль |
COMAL ( Common Algorithmic Language ) — язык компьютерного программирования, разработанный в Дании Бёрге Р. Кристенсеном и Бенедиктом Лёфстедтом и первоначально выпущенный в 1975 году. Он был основан на BASIC языке программирования , с добавлением многострочных операторов и четко определенных подпрограмм среди других дополнений. .
COMAL изначально был написан для миникомпьютеров , но был достаточно мал, чтобы работать на ранних микрокомпьютерах и . Это один из немногих структурированных языков программирования , которые были доступны и удобны для использования на 8-битных домашних компьютерах .
«Синтаксис и семантика ядра COMAL» содержит формальное определение языка. [1] Дальнейшие расширения являются общими для многих реализаций. [2] [3] [4]
История
[ редактировать ]Миникомпьютерные версии
[ редактировать ]COMAL был первоначально разработан в Дании учителем математики Бёрге Р. Кристенсеном. Школа, в которой он преподавал, получила в 1972 году миникомпьютер Data General Nova 1200 с расчетом на то, что в школе начнут преподавать информатику . Ожидалось, что Кристенсен, который прошел краткий курс по этому предмету в университете, возглавит программу и будет обслуживать компьютерную систему. [5]
NOVA была снабжена Data General Extended BASIC , и Кристенсен быстро разочаровался в том, как неструктурированный язык заставлял студентов писать низкокачественный код, который было трудно читать и, следовательно, маркировать. [5] Жалуясь на эти проблемы ученому-компьютерщику Бенедикту Лёфстедту, Лёфстедт посоветовал Кристенсену прочитать «Системное программирование» , новую на тот момент книгу Никлауса Вирта , создателя Паскаля , о проектировании языков программирования . Кристенсен был впечатлен, но обнаружил, что не может использовать Pascal напрямую, поскольку в нем не было интерактивной оболочки , которая делала BASIC таким простым для разработки студентами. [6]
В течение следующих шести месяцев Кристенсен и Лёфстедт переписывались по почте, чтобы разработать альтернативу BASIC, которая сохранила интерактивные элементы, но добавила структурированные элементы из Паскаля. [6] К 1974 году определение языка было завершено, но Кристенсену не удалось привлечь интерес компаний-разработчиков программного обеспечения к разработке реализации. В течение следующих шести месяцев он работал с двумя своими учениками, которых обучал машинному языку NOVA 1200 , над написанием собственной реализации. Одной из первых добавленных вещей была возможность использовать имена переменных из восьми символов вместо обычных одного или двух символов. [6] Более поздние дополнения к первой версии включали многострочный режим. IF...THEN...ELSE...ENDIF
заявления и PROC...ENDPROC
определения и EXECUTE
заявление о том, чтобы позвонить им. [7]
Первая реализация концепции (выполняющая пятистрочный цикл) была готова 5 августа 1974 года, а первая версия (на бумажной ленте ) была готова в феврале 1975 года. Затраты на разработку составили около 300 долларов США . Только теперь система (которая ранее использовала внутреннее датское имя) получила имя COMAL , что означает Common Algorithmic Language , вдохновленное ALGOL , с которым экспериментировал Кристенсен. [7] Поэтому первый выпуск получил название COMAL 75 . Кристенсен впоследствии написал учебник по языку, который превратился в Beginning COMAL . [8]
Версии микрокомпьютера
[ редактировать ]В 1978 году Кристенсен начал адаптировать COMAL для работы на микрокомпьютерах , которые становились доступными. Он был обеспокоен тем, что без такой реализации ему придется снова преподавать и использовать BASIC, поскольку датские школы приобретут новые машины. К 1980 году версия COMAL, разработанная совместно с группой колледжей, смогла работать на Zilog Z80 , и таким образом COMAL 80 . был выпущен [7]
Примерно в то же время датская фирма представила Comet , очень мощный для того времени микрокомпьютер, который стал первой машиной, на которой будет работать версия того, что будет похоже на более поздние выпуски COMAL. Впоследствии Кристенсен отказался от разработки COMAL примерно в 1980-81 годах, которая была передана группам, включая UniComal, [9] начатый Могенсом Кьером, который написал Кристенсену критику COMAL и впоследствии портировал его на Commodore PET для выпуска 0.14. В то время датские школы настаивали на том, чтобы COMAL был доступен на любом приобретенном ими микрокомпьютере. [8]
В начале 1980-х годов компания Apple Computer выиграла контракт на поставку Apple II компьютеров под управлением CP/M и COMAL в средние школы Ирландии. [10] Он был популярен в сфере образования. [11] и некоторые учебники были написаны на местном уровне. [12] [13]
В 1984 году компания Acornsoft выпустила реализацию COMAL Дэвида Кристенсена, Джима Уорвика и Дэвида Эверса для своих 8-битных компьютеров BBC Micro и Acorn Electron (с руководством Пола Кристенсена и Роя Торнтона). [14] )
В период с 1984 по 1987 год TeleNova , дочерняя компания промышленного подразделения шведской телекоммуникационной системы, производила настольный ПК под названием « Compis » для образовательного сектора. Расширенная версия COMAL поставлялась в качестве стандартного языка программирования для этого ПК. Были созданы версии как для CP/M-86 , так и для MS-DOS . Последняя версия доступна для Windows XP . Справочное руководство (на шведском языке) ISBN 91-24-40022-Х .
В 1990 году Томас Ланди и Рори О'Салливан подготовили полный текст по программированию COMAL. [13] Они сопоставили и сравнили COMAL с BBC Structured Basic .
По состоянию на 2016 год COMAL все еще активно используется в качестве образовательного языка программирования. Некоторые средние школы Соединенного Королевства продолжают использовать его для преподавания информатики. [15]
Описание
[ редактировать ]COMAL был создан как смесь распространенных в то время образовательных языков программирования, BASIC , Pascal и, по крайней мере, в Commodore и Compis , черепашьей графики Logo версиях . Этот язык был предназначен для внедрения элементов структурированного программирования в среду, где обычно используется BASIC.
В ранних версиях основными дополнениями к языку были блочные версии IF...THEN и конструкция PROC. В большинстве предыдущих версий BASIC единственной блочной конструкцией был цикл FOR...NEXT. Например:
10 FOR I=1 TO 10 20 PRINT I 30 J=J+1 40 NEXT I
В этом примере цикл выполняется десять раз и каждый раз в цикле выполняются две инструкции. Напротив, почти каждая вторая инструкция в BASIC или оператор должна выполняться в одной строке. Это может затруднить выполнение многострочных операторов по принципу «все или ничего». Например, если программа желает выполнить три инструкции, если определенное значение больше 10, типичное решение:
10 IF A<=10 THEN 50 20 PRINT "A IS GREATER THAN 10" 30 A=A+10 40 PRINT "A IS NOW ";A 50 PRINT "RETURNING TO OUR REGULARLY SCHEDULED PROGRAMMING"
Такая конструкция скрывает истинное намерение программы, решение основано на логике, противоположной тому, чего на самом деле хочет достичь программист. Кроме того, чтобы понять, что произойдет в этом случае, читателю придется найти строку 50, которая в реальных программах может находиться гораздо дальше в исходном коде . Это одна из основных причин, по которой программы на языке BASIC называются « кодом спагетти », поскольку, следуя логике, вы перемещаетесь по программе, как если бы следовали серии случайных спагетти-лапши.
COMAL решает эту проблему с помощью блоков. Чтобы выполнить ту же самую серию инструкций, в COMAL нужно было бы написать:
10 IF A>10 THEN 20 PRINT "A IS GREATER THAN 10" 30 A=A+10 40 PRINT "A IS NOW ";A 50 ENDIF 60 PRINT "RETURNING TO OUR REGULARLY SCHEDULED PROGRAMMING"
В этом случае автор пишет решение, которое он на самом деле пытается достичь, а читатель может проследить логику, просто ища ENDIF
. Этому способствует использование COMAL начальных пробелов для визуального обозначения блоков.
Примеры
[ редактировать ]- "Привет, мир!"
PRINT "HELLO, WORLD!"
- Условия
IF condition THEN instructions ENDIF
- Петли
FOR number:= 1 TO 1000 DO PRINT number ENDFOR
- Вывод операторов с переменными
INPUT "What's your favourite number? " :nmr# PAGE PRINT "Your favourite number is " ; nmr#
Доступность
[ редактировать ]COMAL был доступен для:
- Би-би-си микро
- Commodore PET ( программное обеспечение, являющееся общественным достоянием )
- Commodore 64 (программное обеспечение, являющееся общественным достоянием)
- Коммодор 128
- Амига
- Компис / Эскандис
- КП/М
- IBM-ПК [9]
- Получите 100
- ZX Спектр
- Гранди НьюБрэйн
- Windows ХР
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Райан, Кевин. «Синтаксис и семантика ядра COMAL» (PDF) . Датская ассоциация истории данных . Проверено 8 ноября 2017 г.
- ^ Бейн, Ричард; Линдси, Лен. «Общее определение и тесты COMAL» . КОМАЛ Сегодня (24): 21–46 . Проверено 20 января 2020 г.
- ^ «Общий COMAL – Совместимые ключевые слова» . КОМАЛ Сегодня (25): 28 . Проверено 20 января 2020 г.
- ^ «Общий COMAL — синтаксис ключевых слов и примеры» . КОМАЛ Сегодня (25): 29–33 . Проверено 20 января 2020 г.
- ^ Jump up to: а б Кристенсен 1985 , стр. 1.
- ^ Jump up to: а б с Кристенсен 1985 , стр. 2.
- ^ Jump up to: а б с Кристенсен 1985 , стр. 4.
- ^ Jump up to: а б Кристенсен, Бёрге (март 1985 г.). «История КОМАЛа» . КОМАЛ Сегодня (25): 1–10 . Проверено 4 сентября 2020 г.
- ^ Jump up to: а б «UniComal 3.11 IBM PC» . Интернет-архив. Январь 1992 года . Проверено 1 апреля 2021 г.
- ^ Мойнихан, Майкл Д. (8 августа 1983 г.). «Покрытие COMAL за пределами Ирландии» . Инфомир . 5 (32): 30 . Проверено 15 ноября 2017 г.
- ^ Брэди, Майкл П. (май 1986 г.). Проектирование первого курса программирования (диссертация). Лафборо, Лестер, Великобритания: Технологический университет Лафборо. hdl : 2134/10392 . Проверено 15 ноября 2017 г.
- ^ Келли, Джон (1984). Основы компьютерных исследований с COMAL (второе изд.). Дублин, Ирландия: Образовательная компания . Проверено 20 января 2020 г.
- ^ Jump up to: а б Ланди, Томас; О'Салливан, Рори (1990). Начинаем структурное программирование на BASIC и COMAL . Дублин, Ирландия: Гилл и Макмиллан. ISBN 978-0717116676 .
- ^ Торнтон, Рой; Кристенсен, Пол (1984). COMAL на BBC Microcomputer и Acorn Electron SBD 19 . Желудь. ISBN 978-0907876908 .
- ^ Лейн, Хизер (12 февраля 2015 г.). «Средняя школа Грейсмаунт» . LiveCode . Архивировано из оригинала 29 марта 2024 года . Проверено 29 марта 2024 г.
Дальнейшее чтение
[ редактировать ]- Томас Ланди и Рори О'Салливан: Начало структурированного программирования на BASIC и COMAL , 1990 г.
- Рой Атертон: Структурное программирование с помощью COMAL. Хорвуд, Чичестер, 1982 г., ISBN 0-85312-416-7 .
- Брамер, Массачусетс (1982). «COMAL 80 — Добавление структуры в BASIC». Компьютеры и образование . 6 (2): 179–192. дои : 10.1016/0360-1315(82)90031-8 . ISSN 0360-1315 .
- Борге Р. Кристенсен: Начало Комала. Хорвуд, Чичестер, 1982 г., ISBN 0-85312-435-3 .
- Борге Р. Кристенсен: Справочное руководство COMAL . Группа пользователей ПЭТ Торонто, Торонто, Онтарио, ISBN 0-920607-00-4 .
- Лейшнер, Буркхард (1987). «Комал в том-то и дело». система . 15 (3): 373–376. дои : 10.1016/0346-251X(87)90011-X . ISSN 0346-251X .
- Лен Линдсей: Справочник COMAL . Reston Publishing, Рестон, Вирджиния, 1983 г., ISBN 0-8359-0878-X .
- Гордон Шигли: Рабочая тетрадь COMAL . Группа пользователей Comal, США, 1985 г. ISBN 0-928411-05-2 .
Внешние ссылки
[ редактировать ]- OpenCOMAL для Unix , MS-DOS и Win32
- Ответвление вышеперечисленного для Unix , совместимого со стандартами , в основном для Linux и Mac OS X.
- UniComal 3.11 упакован для работы под DOSBox
- Описание COMAL, версий и характеристик (1984 г.)