Jump to content

CAL (язык программирования)

(Перенаправлено с CAL (семья Джосс) )

CAL , сокращение от разговорного алгебраического языка , был языком программирования и системой , спроектированной и разработанной Батлером Лэмпсоном в Беркли в 1967 году для SDS 940 мейнфрейма . CAL — это версия оригинального языка JOSS с несколькими усовершенствованиями и новыми функциями, позволяющими использовать преимущества платформы SDS.

Berkeley SDS использовалась для разработки Tymshare коммерческой платформы разделения времени , а улучшенная версия CAL была предложена ее клиентам в качестве среды программирования в 1969 году. Хотя CAL «почти не использовалась», она оказала длительное влияние, повлияв на дизайн Tymshare SUPER BASIC , копирующий ряд его особенностей. Некоторые из этих функций, в свою очередь, появились в BASIC-PLUS на PDP-11 , который является прямым предком Microsoft BASIC . [ 1 ]

Описание

[ редактировать ]

Основные понятия

[ редактировать ]

JOSS был разработан для использования непрограммистами в ВВС США и в корпорации Rand , и чтобы помочь в этом, компания Rand разработала специальные компьютерные терминалы , которые было легче настроить и использовать. Эти терминалы, основанные на пишущей машинке IBM Selectric , также включали специальный набор символов , в котором реализованы общие математические символы, такие как и .

В значительной степени CAL была версией JOSS, которая заменила подобные настройки более распространенными решениями, такими как >= и # чтобы они могли работать на общих терминалах. [ 2 ] Другие заметные различия заключались в том, что CAL был в верхнем регистре, в отличие от набора предложений в JOSS, и не требовал точки в конце строки. [ 3 ] В остальном команды были почти идентичны, а общая структура и синтаксис были одинаковыми.

Как и в случае с JOSS, CAL имела интерактивный пользовательский интерфейс , который позволял пользователю вводить операторы в «прямом режиме» или запускать программы в «косвенном режиме». В BASIC первый режим чаще называют «немедленным режимом». , состоящий из двух частей И CAL, и JOSS использовали номер строки , известный как часть и шаг, разделенных точкой, например: 1.100 для части 1 шаг 100. Части обычно использовались для группировки связанных операторов в подпрограммы. В CAL номер детали может находиться в диапазоне от 0 до 999999, а шаг — от 0 до 99999. [ 4 ]

Существовали две основные версии CAL, выпущенные в 1967 и 1969 годах. Следующее описание будет основано в основном на первой версии, если не указано иное.

Переходы и подпрограммы

[ редактировать ]

Как и в JOSS, CAL поддерживает TO команда для перехода к предоставленной части или шагу, как в TO PART 3 или TO STEP 4.5, и DO для вызовов подпрограмм, как в DO PART 9 исполнить всю часть или DO STEP 5.1 чтобы выполнить этот единственный шаг, а затем вернуться. Более поздний синтаксис был полезен, когда было много небольших подпрограмм, поскольку их можно было реализовать в одной строке без соответствующего кода. RETURN или подобная концепция. [ 5 ]

Условное ветвление и присваивание

[ редактировать ]

Одной из наиболее примечательных синтаксических особенностей JOSS была концепция «модификаторов операторов», которые контролировали работу других операторов. JOSS использовал это для условного ветвления.

На большинстве языков можно было бы написать что-то вроде: «Если это выражение истинно, то сделайте это...». В JOSS этот порядок был обратным, и такие утверждения принимали форму «сделай это, если это правда», например: Type "HELLO" if X=5.. CAL добавила немного синтаксического сахара к этой базовой концепции, добавив новый модификатор UNLESS, что, в зависимости от контекста, приводило к более очевидному коду; TYPE "IT IS NOT EQUAL TO FIVE" UNLESS X=5. [ 6 ]

В JOSS, чтобы присвоить значение 5 переменной A, если значение B больше 10, и 0 в противном случае, код будет таким:

Set A=5 if B>10.
Set A=0 if B<=10.

CAL также поддерживает условные выражения : [ 7 ]

A=IF B>10 THEN 5 ELSE 0

Похожая модификация была WHERE оператор, используемый для установки переменных как часть if или for. По своей концепции она была похожа на структуру if/then/else, но могла содержать любое количество элементов. Например, =A*B WHERE A=B UNTIL A>20, WHERE A=1 UNTIL A>100. [ 8 ]

Зацикливание в JOSS также контролировалось модификатором For. При этом использовался несколько неясный синтаксис FORTRAN ; Type i for i=1(2)10. запускает цикл от 1 до 10 с шагом 2, поэтому будет напечатано 1,3,5,7,9. Можно также указать явные значения, Type i for i=1,5,6,7,10., или смешайте их, Type i for i=1,5(1)7,10.

CAL усовершенствовал синтаксис JOSS, введя BY и TO ключевые слова, поэтому эквивалентный код в CAL будет TYPE I FOR I=1 BY 2 TO 10. В JOSS скобка вокруг значения шага была разделителем двух пределов, поэтому ее нельзя было сделать необязательной. Выделив TO границы стали явными, и BY был сделан необязательным, поскольку предполагалось, что он равен 1; TYPE I FOR I=1 TO 10. Как и в случае с JOSS, можно использовать явные значения и диапазоны; TYPE I FOR I=1,5 TO 7,10. CAL дополнительно модифицировал цикл for, добавив условные выходы, используя WHILE и UNTIL. Например, TYPE A FOR A=1 BY 1 WHILE A<=50 или TYPE B FOR B=1 UNTIL A=50. [ 9 ]

Пользовательские функции

[ редактировать ]

JOSS позволял пользователю определять функции, используя Let заявление. Синтаксис позволял называть локальные переменные в сигнатуре функции; Let F(X,Y)=X+Y. Программы могли бы затем вызывать эти функции, как если бы они были встроенными. Set A=F(1,5).

Клиентская лицензия изменена Let к DEFINE, что гораздо более очевидно, и внесло более незначительное изменение: параметры передавались с использованием фигурных скобок вместо круглых скобок, поэтому эквивалентное определение будет выглядеть так: DEFINE F[X,Y]=X+Y и звонил таким же образом, SET A=F[1,5]. [ 10 ]

Более важным изменением в функциях CAL стала возможность вызывать подпрограммы из определений с помощью TO, как в DEFINE F(X,Y) : TO PART 5. [ а ] В результате оставалась проблема присвоения полученного вычисленного значения обратно функции, которая была решена с введением RETURN Z оператор в конце части, где Z — последнее возвращаемое значение. [ 10 ]

Другие изменения

[ редактировать ]

CAL включала математические функции JOSS, но добавляла несколько новых, в том числе ABS, TAN, ATAN, и LOG10. [ 11 ] Также добавлен новый оператор, MOD, который вернул остаток от деления двух своих операндов. [ 12 ]

Прямой режим

[ редактировать ]

В CAL добавлено небольшое количество команд прямого режима и связанных с ними операторов.

PAUSE, когда он встречался в программе, выводил сообщение " ПРИОСТАНОВЛЕНО НА ЭТАПЕ 1.1 ", а затем вернулся в прямой режим. Это было похоже на STOP команда на БЕЙСИКЕ. Это позволило пользователю вводить значения и продолжать выполнение с помощью GO. [ 13 ] В прямом режиме пользователь может STEP по одной строке за раз, чтобы отслеживать выполнение программы. [ 13 ]

Улучшения в CAL 1969

[ редактировать ]

Одним незначительным изменением в версии 1969 года было исключение SET команда присваивания переменных . Это было необязательно в прямом режиме в JOSS, но требовалось в операторах программы, и версия CAL 1967 года следовала этому правилу. [ 14 ] Версия 1969 года сделала это необязательным в обоих случаях.

  1. ^ Учитывая, что DO обычно используется для вызова подпрограмм, неясно, почему в данном случае выбрали TO.
  1. ^ Лэмпсон, «Системы», Research , Microsoft .
  2. ^ Руководство 1969 г. , с. 7.
  3. ^ Руководство 1969 г. , с. 23.
  4. ^ Руководство 1969 г. , с. 11.
  5. ^ Руководство 1969 г. , с. 15, 26.
  6. ^ Руководство 1969 г. , с. 12.
  7. ^ Руководство 1969 г. , с. 14.
  8. ^ Руководство 1969 г. , с. 21.
  9. ^ Руководство 1969 г. , с. 13.
  10. ^ Jump up to: а б Руководство 1967 года , с. 27.
  11. ^ Руководство 1967 г. , с. 9.
  12. ^ Руководство 1967 г. , с. 10.
  13. ^ Jump up to: а б Руководство 1967 года , с. 25.
  14. ^ Руководство 1967 г. , с. 8.

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 61d50e63a37f9c1ac557b7059632ca1b__1691670420
URL1:https://arc.ask3.ru/arc/aa/61/1b/61d50e63a37f9c1ac557b7059632ca1b.html
Заголовок, (Title) документа по адресу, URL1:
CAL (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)