Джосс
Парадигмы | неструктурированный , процедурный , императивный |
---|---|
Семья | Джосс |
Спроектирован | Клифф Шоу |
Разработчик | Ранд Корпорация |
Впервые появился | 1963 |
Объем | Лексический |
Язык реализации | Ассамблея |
Платформа | Johnniac , PDP-6 |
Под влиянием | |
Telcomp , Cal , Focal , пародия |

direct mode
Полем Обратите внимание на разницу между периодом в конце операторов и вмешательством для умножения. Joss (аббревиатура для Shop System Johnniac Open ) [ А ] был одним из первых интерактивных языков программирования . Он впервые зарекомендовал многие функции, которые станут обычными на языках с 1960-х годов до 1980-х годов, включая использование номеров линий в качестве инструкций по редактированию и целей для филиалов , заявления, основанные на логических решениях, и встроенный редактор исходного кода , который может выполнять инструкции В прямом или непосредственном режиме то, что они называли разговорным пользовательским интерфейсом .
Джосс был первоначально реализован на машине Johnniac в Rand Corporation и выпустил онлайн в 1963 году. Он оказался очень популярным, и пользователи быстро увязали машину. К 1964 году была запрошена замена с более высокой производительностью. Джонниак был вышел на пенсию в 1966 году и заменен PDP-6 , который в конечном итоге вырос, чтобы поддержать сотни компьютерных терминалов на основе IBM Selectric . Терминалы использовали зеленые чернила для пользовательского ввода и черного для ответа компьютера. Любая команда , которая не была понята, вызвала ответ Eh?
.
Система была очень влиятельной, порождая различные порты и ответвления. Некоторые остались похожи на оригинал, такие как Telcomp и StringComp , Cal , Citran, ISIS, PIL/I, Jean ( ICT 1900 Series ), алгебраический интерпретирующий диалог (помощь, на PDP-10 ). Другие, такие как фокусы и эпидемический трассу , развивались в отличительных направлениях. Джосс также имеет сильное сходство с основными интерпретаторами, обнаруженными на микрокомпьютерах в 1980 -х годах, в основном различающихся в деталях синтаксиса .
История
[ редактировать ]Первоначальная идея
[ редактировать ]В 1959 году Уиллис Уэйр написал меморандум о Рэнд на тему вычислений, в которой он заявил, что будущие компьютеры будут иметь «множество личных станций ввода-вывода, чтобы многие люди могли взаимодействовать с машиной одновременно». [ 2 ] Меморандум вызвала интерес ВВС США , основных спонсоров Рэнда, а в 1960 году они сформировали проект информационного процессора для изучения этой концепции, что скоро будет известно как разделение времени . Проект был конкретно не о разделении времени, но был направлен на улучшение взаимодействия человека с компьютером в целом. Идея в то время заключалась в том, что постоянное взаимодействие между пользователем и компьютером обратно [ 2 ] режиссер Джосс Кит Ункфер Как позже выразил :
Было два представления, которые, я думаю, провели эксперимент. Одним из них было по крайней мере с 1950 года, когда я присоединился к Рэнд, всегда было сосредоточено в области компьютерных наук в отношении плавного взаимодействия с пользователем. Это было только встроено в нас. Мы узнали это от стрельбы. ... все, о чем мы думали. Другим было то, что математики борются с калькуляторами маршанта, неспособными использовать Johnniac в своей необработанной форме. Это было слишком сложно. Они должны были научиться быть программистами. Это был просто разочаровывающий опыт для них. Мы хотели что -то, что могло бы рассматривать их как естественный образ размышлений о помощи решению их проблем без особого обучения и без какого -либо восприятия становления программистом, потому что это удержило бы их подальше. [ 3 ]
Формальное предложение о разработке того, что стало Джосом на компьютере Johnniac, было принято в марте 1961 года. [ 2 ]
Joss-1
[ редактировать ]Джосс был реализован почти полностью Дж. Клиффордом Шоу , математиком, который работал в растущем компьютерном отделении Рэнда. Он был написан на символическом языке ассамблеи под названием Easyfox (E и F в тогдашнем фонетическом алфавите США), также разработанном Шоу. [ 4 ]
Система Joss была открыта официально впервые в мае 1963 года, поддерживая пять консолей, один в машинной комнате и еще четыре в офисах вокруг здания. [ 5 ] Ранние консоли основывались на пишущей машинке IBM Model 868, поскольку селектрик еще не был представлен на рынок, когда началась разработка. [ 6 ] Первый график был опубликован 17 июня, когда Джосс бежал три часа с 9 утра до 12 каждый день. [ 7 ] В январе 1964 года он был объявлен полностью оперативным на восьми терминалах. [ 1 ] Окончательная версия была развернута в январе 1965 года. [ 8 ]
К этому времени Джонниаку было уже более десяти лет, и его логика на основе труб никогда не была очень надежной. Даже когда она работала хорошо, система стала настолько популярной, что быстро увязала. Пользователи были с энтузиазмом, один из них заявил:
Люди корректируют свою жизнь, чтобы поместиться вокруг Джосса ... бесполезно приходить в Рэнд до 10:00, когда Джосс прибывает, на самом деле полдень или после 5:00 вечера - лучшее время, Джосс менее занят. Когда Джосс начинает печатать ответы, удовольствие ощущается только последовательным страдом, когда Джосс разразится в джиббериш [ sic ] или уходит, оценивая ваш код до забвения. Мы вряд ли можем жить с Джосом, но не можем жить без него. [ 9 ]
Другой сказал более лаконично:
Это лучше, чем пиво - мы подключены. [ 1 ]
Джосс-2 Переключение
[ редактировать ]В мае 1964 года было принято решение искать новую машину для замены Johnniac и полностью посвятить ее запуска расширенной версии Joss. Машина также должна была бы поддерживать новые терминалы, сделанные в соответствии с спецификациями Рэнда, и будет доставлена к 31 октября 1965 года. [ 7 ]
Всего было получено девять ставок для новой машины. Digital Equipment Corporation (DEC) выиграла конкурс со своей новой системой PDP-6 , и для покупки было выпущено финансирование ВВС. DEC также согласился построить тридцать терминалов на основе пишущей машинки IBM Selectric, модифицированной специальным механизмом для продвижения на следующую страницу в питании вентиляторов. Несколько других частей общей системы были доставлены от других компаний. [ 10 ]
PDP-6 прибыл в конце июля 1965 года и первоначально был протестирован с использованием Teletype Model 33 в качестве терминалов. Новая версия кода была разработана Чарльзом Л. Бейкером, Джозефом У. Смитом, Ирвином Д. Гринвальдом и Г. Эдвардом Брайаном. Система была впервые объявлена в оперативности в октябре, хотя это включало шесть часов запланированного технического обслуживания в неделю. [ 11 ] Первый прототип терминал прибыл в ноябре. В декабре терминал в Лас -Вегасе был впервые подключен к машине. [ 10 ] В феврале 1966 года это было отправлено на базу ВВС Макклеллана , за которой последовал один в августе, в Академию ВВС и два в сентябре в Арпа и офис ВВС в Пентагоне . Первое постоянное подключение к телесепам для выключенной модели 35 было установлено на базе ВВС Лэнгли в феврале 1967 года. [ 11 ]
С новой машиной и запущенной, Джонниак был отключен 11 февраля 1966 года и официально вышел на пенсию 18 февраля. Его последняя программа бега была написана в Джосс и отсчитывала секунды, пока она не будет выключена. Машина была отправлена в музей округа Лос -Анджелес , [ 12 ] и в конечном итоге оказался в Музее истории компьютера за пределами Сан -Франциско . [ 13 ] Будучи замененной системой JOSS-2, оригинал был задним числом известен как JOSS-1. [ 14 ]
JOSS-2 ИСПОЛЬЗОВАНИЕ
[ редактировать ]К концу 1966 года новая система JOSS-2 была полностью функциональной и передавалась Joss Use 24/7. Новая машина предлагала примерно в 30 раз превышает скорость вычисления, в пять раз больше места для хранения на одного пользователя, и многие новые функции в самом языке. [ 15 ] [ 1 ] Новая платформа может в конечном итоге поддерживать до 100 терминалов при одновременном использовании. [ 16 ] ВВС остались владельцем системы, и Рэнд и другие работали в качестве консультантов. Время процессора было выставлено выставлено выставлено выставленным выставлением внешним пользователям со скоростью около 1 доллара в минуту, хотя это было только во время фактического исполнения, время, потраченное на набор и печать, были бесплатными. [ 17 ]
К 1970 году по всей стране насчитывалось от 500 до 600 пользователей в RAND и различных местах ВВС. [ 18 ] Многие из них были случайными пользователями, именно то, для чего была предназначена система. Чтобы поддержать их, пользовательские терминалы были оснащены специальными «пробками Joss», чтобы их можно было провести от офиса в офис и подключить в пользовательские розетки. Двухсот заглушек были установлены вокруг Рэнда, а терминальное шасси было разработано, чтобы быть достаточно узким, чтобы поместиться через двери, оставляя место для кофе с одной стороны. [ 19 ] Переключение питания на терминале заставило его подключиться в новом месте. [ 16 ]
Пользовательские терминалы были разработаны для Джосса, поскольку инженеры чувствовали, что «функции телекоммуникаций модели 33» являются загадкой для неподготовленного человека »и будут слишком запутанными, чтобы случайные пользователи могли беспокоить обучение. [ 20 ] На практике механизмы на основе селектрии оказались слишком хрупкими для постоянного использования, которое они видели, и часто ремонтируются в полевых условиях военнослужащими IBM. В 1970 году была полностью восстановлена полная треть терминалов, и вывод компьютера замедлился для повышения надежности. Временные силы к этому времени решили использовать модель 35, так как она была легко доступной и гораздо дешевле. [ 21 ] [ 11 ]
Использование было энтузиазмом, и для их обслуживания Рэнд начал публиковать информационный бюллетень JOSS , под редакцией Ширли Маркс. В конечном итоге 44 выпуска были опубликованы в период с ноября 1967 года по июнь 1971 года. [ 22 ]
Джосс-3
[ редактировать ]В начале 1970-х годов программисты на одном из объектов на западном побережье IBM построили JOSS-3 для IBM 370/158 Running OS/360 . Маленькая информация об этой системе существует, за исключением того, что на этой машине Джосс наконец -то ушел в отставку. [ 23 ] Согласно записке в историческом обзоре, Рэнд не решался позволить IBM использовать имя Джосса, и в результате «версия IBM никогда не использовалась». [ 24 ]
Выполнение
[ редактировать ]
Joss-II на PDP-6 был разделен на две части, соответствующие внутренней компоновке памяти машины. Машина была оснащена двумя банками основной памяти , с 36-битными словами в каждом банке. Сама система JOSS, которая включала операционную систему , код управления пользователем и файлами, обработчик терминала и интерпретатор, использовала большую часть первого из этих банков. Второй банк использовался для пользовательских программ. Хотя это было относительно большое количество памяти для эпохи, система была настолько широко использована, что хранилище пользователя 16K Word было недостаточно, и ее резервировали магнитным барабаном для поддержки пейджинга . [ 16 ] Барабан был обусловлен внешним оборудованием и не требовал внимания от основного процессора. [ 25 ]
Чтобы поддержать несколько пользовательских программ, аппаратное обеспечение PDP-6 было изменено для изучения BIT-20 любого ссылки на адрес. Если этот бит был установлен, адрес был в «Пользовательском пространстве» и был изменен, чтобы адрес Zero указывал на базовый адрес этого пользователя. Таким образом, пользовательские программы могут быть перемещены в памяти, не вызывая проблем для системы, и операционная система может переключаться с пользователя на пользователя, просто изменив один внутренний реестр. [ 16 ]
Постоянное хранение было обеспечено жестким диром хранения с 5,7 миллионами слов хранения. Как и барабан, фактический ввод/вывод к барабану и образовался извне, хотя в этом случае движение было вызвано действиями пользователя для загрузки и хранения своих программ. Споминый IBM ленточный привод использовался для перемещения данных на и обратно по мере необходимости, операция, которая также не зависела от процессора. Два блока декта также были доступны и работали так же, как и IBM Drive. [ 26 ]
Терминалы обрабатывали через пользовательский «концентратор», который состоял из механического переключателя Strowger , который мог бы подключить любой из возможных заглушек терминала от 300 до 400 к любому из 40 выходов. Еще восемь строк были посвящены входу телетип модели 33 , в отличие от селектриков в стиле Джосс. Эти 48 линий были затем подключены к электронному мультиплексору , подключенному к процессору. Мультиплексор был вызван прерыванием , что означает, что терминалы холостого хода не использовали никаких циклов. [ 26 ]
Пользовательские терминалы Joss были построены к декабре. Они состояли из селектрического механизма, встроенного в пользовательское шасси, содержащее систему связи, источник питания и другие компоненты. Пользовательский шрифт был использован для обеспечения основных математических символов, таких как ↓, так не нужно было использовать двуххамерные комбинации, такие как <>. Система связи была основана на 6-битном коде символов в 8-битном пакете с битами Start and Stop. Линии были приведены в 120 бит/с, чтобы соответствовать максимум 15 символам в секунду скорости селектрического механизма. Коды переключения и смены использовались для перемещения ленты с зеленого на черный и обратно. Эти коды были также замечены системой связи и изменили свет на передней панели, чтобы указать, был ли компьютер или пользователь управлять терминалом в этот момент. [ 27 ]
Язык
[ редактировать ]Прямой и косвенный режим
[ редактировать ]Джосс представил идею одного редактора командной строки , который работал как интерактивный язык, так и редактор программы. Команды, которые были напечатаны без номера строки, были выполнены немедленно, в том, что Джосс назвал « прямым режимом ». Если та же самая строка была префиксирована номером строки, вместо этого она была скопирована в область хранения кода программы, которую Джосс назвал «непрямым режимом». Новые линии были добавлены в программу, если номер строки был уникальным, заменили существующие линии с тем же номером или удалены из программы, если экступированный номер строки был введен без кода без кода. [ 28 ]
В отличие от большинства оснований, Джосс сохранил весь пользовательский ввод в файлы, а не только код программы. При загрузке Джосс, по сути, напечатал строки обратно. Это означало, что программные файлы могут содержать как операторы программы, так и инструкции прямого режима. Например, было обычным явлением программ, в которых перечислены строки операторов, а затем заканчивают файл с Go.
Чтобы немедленно запустить программу, как только она завершит загрузку. Были некоторые функции, которые могли быть использованы только в прямом режиме, например Let
и Form
, которые были вводятся без номеров строк, но все еще возвращались, когда программа была загружена. [ 29 ]
Прямые и косвенные инструкции могут быть свободно смешаны в рабочем пространстве. Это позволило вставить комментарии в исходный код путем добавления строк прямого режима, начиная с *
, [ 30 ] Или разместив один в конце строки кода, а затем добавив комментарий после него. Пустые линии также были проигнорированы, что позволило разорвать программу для ясности. [ 31 ]
Программные заявления
[ редактировать ]Каждая строка в программе JOSS должна начинаться с номера строки. Числа строк представляют собой числа с фиксированной точкой, состоящие из двух двухзначных целых чисел, разделенных периодом. Как и в базовом, номера строк используются как в качестве метки для целевой To
и Do
заявления и поддержка редактирования. Ввод в строку кода с новым номером строки вставляет ее в программу, входящая в одну из них с номером существующей строки заменяет предыдущую версию или удаляет ее, если она пуста.
Часть номера строки слева от периода называется страницей или частью , в то время как часть справа называется строкой . Таким образом, номер строки 10.12
Относится к странице 10, строки 12. Ветви могут нацелиться на страницу или строку на странице. Когда используется более поздний формат, комбинированная страница и строка называются шагом .
Страницы используются для определения подпрограмм , которые возвращаются, когда следующая строка находится на другой странице. Например, если подпрограмма для расчета квадратного корня числа находится на странице 3, можно иметь три строки кода 3.1, 3.2 и 3.3, и он будет вызван с использованием Do part 3.
Код вернется к оператору после того, как он достигнет следующей строки на другой странице, например, 4.1. Нет необходимости для эквивалента RETURN
В конце, хотя, если требуется ранний возврат, Done
выполняет это.
Каждая строка должна начинаться с ключевого слова команды, следующего за номером строки. Концепция команды по умолчанию не существует, как в случае с его опциональным LET
заявление. Несколько операторов могут быть размещены на одной линии, разделенных колонами или полуколонами. Каждая строка должна заканчиваться периодом.
Петли и условия
[ редактировать ]Джосс использует нотацию суффикса, чтобы указать условную оценку: «Делай это, если это правда», в отличие от большинства языков, которые помещают условие впереди в префиксе, «если это правда, сделай это». В отличие от Fortran или Focal , любое заявление может быть условно оценивается таким образом. Например, для печати строки только в случае выполнения условия можно объединить, если с Type
:
1.1 Type "Hello, World!" if X=5.
Джосс поддержал шесть сравнений инфикса, =
, ≠
, ≥
, ≤
, >
, <
и логические операторы or
, and
, и not
. [ 32 ]
Петли были обработаны аналогичным образом, используя For
команда и несколько неясного формата для определения границ цикла и значения шага, start(step)end
Полем Например, для шага с 1 до 10 на 2 формат 1(2)10
Полем Нравиться If
, For
может быть применен к любому другому заявлению:
1.2 Type "Hello, Wikipedia!" for i=1(2)10.
Обратите внимание, что для для того, чтобы применить только к одному утверждению; Если кто -то хочет запустить несколько операторов в цикле, они будут разделены на другую часть и вызвали использование DO:
1.3 Do part 5 for i=1(1)100. 5.1 Type "Hello, Wikipedia!". 5.2 Type "This is JOSS.".
Как и в базовом, любой из входов в цикл для цикла может быть константами, переменными или другими выражениями.
Поскольку такие виды диапазонов могут быть применены к любой строке кода, можно было определить ограничения и петли при использовании программы. Например, рассмотрим программу:
1.1 Type X.
Обычно, если кто -то вызывает это модой, аналогичной базовым RUN
:
Do part 1.
Это производит:
0
Тем не менее, можно изменить это поведение, добавив конструкцию петли в вызов:
Do part 1 for X = 1(1)5.
Который будет производить:
1 2 3 4 5
Это позволяет построить формулы в программах без необходимости размещения в петлях. Пользователь может быть предоставлен пользователем, когда он запускает программу.
Выражения и предложения
[ редактировать ]Уникальной особенностью Джосса была его обработка логических выражений. Большинство компьютерных языков предлагают некоторый способ сформировать многочасовое математическое выражение, например, Set x=(1+2)·3.
который устанавливает переменную x на значение 9. Joss расширил эту концепцию, четко определяя концепцию «предложения», выражение, которое возвращает логическое значение, TRUE или FALSE, а не числовое. Их в основном видели в If
Заявления, как в примерах выше, но логическое значение также можно хранить в переменной напрямую, [ 33 ] или можно преобразовать истину в 1 и false в 0, используя tv
(Значение истины) Функция. [ 34 ]
В дополнение к предложениям, у Джосса также была концепция «условных выражений». Они состояли из строк предложений вместе с кодом, который будет работать, если бы это предложение было правдой. Это позволило многоэтапным деревьям решений записаться в одной строке. Они служат цели, аналогичной тройному оператору, найденному на современных языках, таких как C или Java , где они используются для возврата значения из компактной структуры, реализующей If-then-else . Версия Джосса имеет какое-либо количество условных, а не только три, поэтому это скорее компактный оператор переключателя, чем компактный if-then. [ 35 ]
Этот пример воссоздает функцию sgn
Функция: [ 36 ]
Let s(x)=[x=0:0; x>0:1; x<0:-1].
Это определяет функцию «S», которая принимает один параметр, «x», и делает три последовательных теста против нее. Какой бы тест не удастся, сначала возвращает соответствующее значение после толстой кишки. [ 37 ]
Диапазоны
[ редактировать ]Еще одна передовая особенность Джосса заключалась в том, что у него была концепция диапазона как встроенного типа, которой можно было хранить и манипулировать. Диапазоны обычно встречаются в качестве входных данных для петлей , где они являются частью синтаксиса самой петли. Например, в Basic One пишет A для цикла, используя этот базовый синтаксис:
FOR I=1 TO 5 STEP 2
Это выполнит цикл, который назначает I значения 1, 3, 5, а затем выходит.
Джосс использовал несколько неясного формата, чтобы определить пределы петли. Эквивалентный код в Джосс будет:
I=1(2)5
Обратите внимание, что этот код не включает в себя. Это потому, что в Джосс диапазоны являются первоклассными гражданами языка, а не то, что является частью петли, как в основном. Диапазоны могут быть определены и использованы во многих контекстах вне петлей. Например, вот условное выражение, которое оценивает факторию параметра x: [ 35 ]
Let f(x)=[x=0:1 ; fp(x)=0:prod(i=1(1)x:i)].
В этом примере есть два основных положения, разделенных полуколоном. Первый, слева, утверждает, что если параметр x равен 0, условие должно немедленно вернуть 1. Если это предложение не удается, оно перемещается ко второму тесту, справа. Этот проверяет, равна ли дробная часть x нулю (т.е. это целое число), и если да, это вызывает prod
Функция умножает диапазон значений. А prod
Параметр также является предложением, но в этом случае тест заменяется итератором цикла, который работает от 1 до x шага на 1. Если это предложение верно, то есть для всех значений цикла, он возвращает Индекс i. Это приводит к отправке серии значений prod
от 1 до х. [ 35 ]
Комбинация этих функций позволяет записывать сложные функции в нескольких командах. Этот вид функциональности стал распространенным только на гораздо более современных языках, которые обычно используют итераторы или функцию карты, чтобы обеспечить те же результаты. Способность Джосса объединять решения и петли в компактной форме неизвестна на других языках эпохи, включая ответвления, такие как Focal.
Команды
[ редактировать ]Набор
[ редактировать ]А Set
Команда назначает результаты выражения указанной переменной. Эквивалентно базовым LET
.
01.30 Set p=3.14156. 01.60 Set i=l*(r/100)*t.
Set
был необязательным при использовании в прямом режиме, где можно было ввести x=5.
Без команды SET. Это не было разрешено в косвенном режиме, в отличие от базового. [ 38 ]
Позволять
[ редактировать ]Let
был использован для определения определенных пользовательских функций. [ 39 ] Эквивалентно базовым DEF FN
. [ 30 ]
Let t(x)=sin(x)/cos(x). Set j=t(1.1). Type j.
Let
Также можно использовать для установки значения переменной, используя формулу, состоящую из постоянной:
Let x=5.
С этого момента его можно использовать одинаково, созданный с использованием Set
Полем Однако существует тонкая разница, когда этот x ссылается в коде, значение будет рассчитано путем оценки правой стороны. А Set
оценивается только один раз, так что это намного быстрее. [ 40 ]
Система обычно предлагается с использованием Let
Только в прямом режиме, сохранив их для использования в программе, вставив их в верхней или нижней части файла. Это избежало Let
Быть называться несколько раз во время выполнения, так как это будет вызвано только один раз в процессе загрузки. [ 41 ]
Требовать
[ редактировать ]А Demand
Входит список переменных и хранит пользовательский ввод в переменных. Необязательно as
Квалификатор добавил пользовательскую подсказку. Эквивалентно базовым INPUT
.
01.01 Type "What is your age?". 01.02 Demand A. 01.03 Type "You are", A. 01.04 Demand H as "What is your height?". 01.05 Type H,"? That tall?".
Тип
[ редактировать ]А Type
Команда выводит один или несколько элементов, разделенных запятыми. В своей основной форме он эквивалентен базовым PRINT
Полем Однако, Type
Включает в себя ряд дополнительных форм, которые делают его высоко перегруженным, выполняя диапазон не связанных с выходными задачами. [ 42 ]
При использовании для печати значений параметры могут быть переменными, буквальными строками, окруженными двойными цитатами, и специальные _
персонаж, который производит линейную подачу. [ 43 ] Type
Также поддерживает форматированный выход с использованием строк формата. См. Раздел о Form
ниже для деталей. [ 42 ]
Тип также используется в качестве эквивалента базового LIST
заявление, написание программы. Например, Type step 1.1.
распечатает одну строку кода, в то время как Type part 1.
распечатает всю часть, и Type all.
Отпечатает всю программу. [ 42 ]
Кроме того, его также можно использовать для печати списков внутренних значений. Type all values.
создает список всех переменных и их значений, в то время как Type size.
Отпечатает размер программы. Ключевые слова включают size
, time
и users
. [ 42 ]
Страница
[ редактировать ]Page
Выражает страницу на специальных терминалах Joss. [ 33 ] Джосс обычно отправляет подачу страницы, когда терминал достиг строки 54 на бумаге, поэтому, если кто -то захочет убедиться, что блок данных не будет разделен пополам, можно: можно: [ 44 ]
1.10 Page if $>44.
$
является псевдо-подгоревшим, который возвращает текущий номер строки. [ 44 ]
Линия
[ редактировать ]Line
Выражает линию, питающиеся специальными терминалами Joss. [ 33 ]
К
[ редактировать ]А To
Команда перепрыгивает выполнение программы на указанную часть или номер шага, используя To part 1.
или To step 1.1.
соответственно. [ 45 ] Это эквивалент базового GOTO
Полем Контрастировать с Go
, косвенная команда, используемая в командной строке, которая запускает программы, эквивалент базового RUN
.
01.01 Demand A as "TYPE A NUMBER". 01.05 To step 1.01. 01.10 To part 1.
Делать
[ редактировать ]Do
похож на To
, но ветви до подпрограммы. Как с To
, ты можешь Do part
или Do step
Полем Если представлен шаг, эта единственная строка запускается, а затем возвращается к оператору после Do
Полем Если часть предоставлена, выполнение начинается с первой строки блока и продолжается до тех пор, пока не будет достигнут конец блока или Done
Заявление встречается.
01.15 Do step 7.24. 01.16 Do part 8.
Do
У меня была одна специальная короткая форма для того, чтобы рассматривать, что это очень распространена в большинстве программ. Это использовало times
модификатор вместо нормального for
, в случае для простых петлей. Таким образом, следующие строки эквивалентны: [ 42 ]
Do part 1 for i=1(1)5. Do part 1, 5 times.
Джосс поддерживает указатель на в настоящее время выполняющую строку, которая Do
изменится. Тем не менее, он включал в себя специальную «скобку», который можно использовать в прямом режиме для проверки определенных разделов кода без изменения основного указателя. Например, если программа остановилась из -за ошибки, и не было ясно, какой раздел вызвал проблему, можно проверить конкретную подпрограмму с: [ 46 ]
(Do part 2.)
Сделанный
[ редактировать ]А Done
Команда возвращается из подпрограммы. По мере того, как подпрограммы возвращаются автоматически, когда достигнут конец детали, Done
требуется только для возвращения досрочного и часто используется с условным. Эквивалентно базовым RETURN
.
*Routine to ask the user for a positive value and repeat until it gets one 01.10 Demand X as "Enter a positive value greater than zero". 01.20 Done if X>0. 01.30 To step 1.1
Останавливаться
[ редактировать ]А Stop
Команда прекращает выполнение программы и возвращает контроль в среду редактирования. Эквивалентно базовым END
или STOP
, хотя базовые STOP
предназначен для разрешения CONT
Чтобы поднять исполнение в том же месте, функция, которая не имеет прямого эквивалента в рабочей области Джосса.
01.10 Type X. 01.20 Stop.
Идти
[ редактировать ]Доступно только в прямом режиме, Go
эквивалент базовому RUN
и CONT
, в зависимости от того, остановлен ли в настоящее время программа из -за ошибки или Stop
команда встречается. [ 47 ]
Отмена
[ редактировать ]Еще одна команда только прямого режима, Cancel
используется, когда программа остановилась на ошибке, и пользователь хочет сбросить программу, которая выполняет путем очистки счетчика программы . А Go
забрал в последнем месте, но выпустил Cancel
производит Go
Начните снова наверху. [ 48 ] Если текущая точка остановки была из -за скобок (Do.)
, можно издать отмену в скобках, (Cancel.)
, чтобы остановить только это подразделение и позволить Go
продолжать в последней непрерывной линии. [ 46 ]
Математика
[ редактировать ]Джосс сохранил все числа как Radix-10 Плавающая точка. [ 49 ]
Джосс содержал шесть математических операторов: [ 49 ]
+
для дополнения-
для вычитания·
Для умножения ( вмешательство , а не период)/
для подразделения*
для экспонентов|...|
для абсолютного значения, с выражением в середине
Математические выражения могут использовать () и [] взаимозаменяемо в соответствующих парах для установления приоритета. Например:
1.30 Set A=|-10·[5+1]·(1+5)|.
Производит 360. [ 32 ]
Функции
[ редактировать ]Язык содержал следующие встроенные функции:
Математика
[ редактировать ]sin()
- Синус угла, данный в радианахcos()
- косинусarg()
- принимает значения x и y точки и возвращает угол между этой точкой и осью xlog()
- Наперианский журналexp()
- естественная база к силе аргументаsqrt()
- квадратный кореньsgn()
-Знак аргумента, 0 возвращает 0, значения -Ve -1, +ve +1ip()
- целочисленная часть аргумента,ip(22026.4658)
Возврат 22026fp()
- Дробная часть, возвращает .4658dp()
- Digit Part, возврат 2.20264658ep()
- часть экспонента, возвращает 4, расположение десятичного десятичного
Логический
[ редактировать ]tv()
- Значение истины, возвращает 1, если выражение верно, 0 в противном случае
Функции петли
[ редактировать ]Джосс также определил ряд функций, которые выполняли цикл внутри страны, чтобы избежать программиста писать For
Цикл для выполнения простых задач, таких как суммирование серии чисел. Параметры могут быть либо списком простых выражений, разделенных запятыми, либо конструкцией диапазона, командой которой может быть любые операторы или функциональный вызов.
max()
- Максимальное значение предоставленных выраженийmin()
- минимумsum()
- суммаprod()
- Продуктfirst()
- Первый элемент в списке, который соответствует условию, возвращает этот результат
Управление файлами
[ редактировать ]Система Joss использовала жесткий диск для хранения пользовательских программ в выделенном пространстве. В этом пространстве находился ряд файлов, которые были упомянуты с использованием многопартийного имени файла, состоящего из целого числа и пятибуквенного имени в скобках, например,, например,, например, 123 (hello)
Полем Целая часть является эквивалентом каталога, а имя находится внутри него, поддерживается самим Джосом. [ 50 ]
Файлы написаны с File all as item filename.
и загружено Recall item filename.
Полем Можно также прочитать или сохранить только определенные части рабочей области, например, File part 1 as item filename.
Чтобы сохранить одну подпрограмму в файл. [ 51 ] Кроме того, можно было бы установить файл по умолчанию, в который предполагались все ссылки Use item filename.
Файлы могут быть удалены с помощью Discard
. [ 51 ]
Пример программы
[ редактировать ]1.1 Demand p,q. 1.2 Stop if q<0 or r(q,2)=0. 1.3 Set a=1. 1.4 Do part 2 while q>1 and a≠0. 1.5 Type a in form 3. 1.6 Stop. 2.1 Do part 20. 2.1 Do part 11 if p<0. 2.2 Do part 12 if p≥q. 2.3 Do part 13 if p=0. 2.4 Done if a=0. 2.5 Set p=p/4 while r(p,4)=0. 2.6 Do part 14 if r(p,2)=0. 2.7 Do part 20. 2.8 Set a=-a if r(p,4)=r(q,4)=3. 2.9 Set s=p, p=q, q=s. 2.95 Do part 20. 11.1 Set a=-a if r(q,4)=3. 11.2 Set p=|p|. 11.3 Do part 20. 12.1 Set p=r(p,q). 12.2 Do part 20. 13.1 Set a=0, p=1, q=1. 14.1 Set a=-a if r(q,8)=3 or r(q,8)=5. 14.2 Set p=p/2. 20.1 Type p, q in form 1 if a=1. 20.2 Type p, q in form 2 if a=-1. Form 1: " L(%.0f,%.0f) =" Form 2: " -L(%.0f,%.0f) =" Form 3: " %.0f\n"
Обратите внимание, что это не оригинальный образец, а скорее из современного симулятора. Есть некоторые синтаксические отличия от оригинального языка Джосса.
Примечания
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Jump up to: а беременный в дюймовый Брайан 1966 , с. 2
- ^ Jump up to: а беременный в Marks 1971 , p. 1
- ^ Норберг, Артур (10 июля 1989 г.). «Интервью с Кейтом Uncapher» (PDF) (интервью). п. 7
- ^ WARE 2008 , с. 62
- ^ Marks 1971 , p. iii.
- ^ Шоу 1965 , с. 3
- ^ Jump up to: а беременный Marks 1971 , p. 2
- ^ Смит, JW (август 1967 г.). Джосс: Центральная процедура обработки (справочное руководство пользователя). Ранд. RM 5270 Pr . Получено 2012-04-16 .
- ^ Шоу 1965 , с. 14
- ^ Jump up to: а беременный Marks 1971 , p. 3
- ^ Jump up to: а беременный в Marks 1971 , p. 9
- ^ Marks 1971 , p. 4
- ^ «Джонниак» . Музей компьютерной истории .
- ^ WARE 2008 , с. 15, 109.
- ^ Marks 1971 , p. 5
- ^ Jump up to: а беременный в дюймовый Брайан 1966 , с. 3
- ^ Marks 1971 , p. 32
- ^ Marks 1971 , p. 10
- ^ Marks 1971 , p. 15
- ^ Marks 1971 , p. 14
- ^ Брайан 1966 , с. 12
- ^ Marks 1971 , p. 47
- ^ WARE 2008 , с. 65
- ^ WARE 2008 , с. 16
- ^ Брайан 1966 , с. 4
- ^ Jump up to: а беременный Брайан 1966 , с. 5
- ^ Брайан 1966 , с. 6
- ^ Gimble 1967 , p. v.
- ^ Gimble 1967 , p. ты.
- ^ Jump up to: а беременный Гимбл 1967 , с. 65
- ^ Marks 1971 , p. 42
- ^ Jump up to: а беременный Гимбл 1967 , с. 70
- ^ Jump up to: а беременный в Гимбл 1967 , с. 77
- ^ Gimble 1967 , p. 24, 69.
- ^ Jump up to: а беременный в Гимбл 1967 , с. 75
- ^ Marks 1971 , p. 41
- ^ Gimble 1967 , p. 25
- ^ Gimble 1967 , p. 68
- ^ Gimble 1967 , p. 74-75.
- ^ Gimble 1967 , p. 45
- ^ Gimble 1967 , p. 63.
- ^ Jump up to: а беременный в дюймовый и Гимбл 1967 , с. 66
- ^ Gimble 1967 , p. 7
- ^ Jump up to: а беременный Гимбл 1967 , с. 49
- ^ Gimble 1967 , p. 67
- ^ Jump up to: а беременный Гимбл 1967 , с. 58
- ^ Gimble 1967 , p. 57
- ^ Gimble 1967 , p. 53
- ^ Jump up to: а беременный Гимбл 1967 , с. 69
- ^ Gimble 1967 , p. 59
- ^ Jump up to: а беременный Гимбл 1967 , с. 61.
Источники
[ редактировать ]- Гимбл, EP (май 1967 г.). Джосс: Решение проблем для инженеров (PDF) (Технический отчет). Ранд.
- Брайан, GE (4 ноября 1966 г.). Джосс: Введение в реализацию системы . Лоуренс радиационная лаборатория, Беркли Калифорния: Decus. п. 19 Получено 2019-06-19 .
- Маркс, Ширли (декабрь 1971 г.). Годы Джосса: размышления об эксперименте (PDF) (технический отчет). Ранд . Получено 2019-06-19 .
- Саммет, Джин (1969). Языки программирования: история и основы . Прентис-Холл . С. 217–226. ISBN 0-13-729988-5 .
- Шоу, JC (май 1965). Joss: Опыт работы с экспериментальной вычислительной службой для пользователей на консолях удаленной машинки (PDF) (технический отчет). Ранд.
- Ware, Willis, ed. (2008). Рэнд и информационная эволюция (PDF) . Ранд. ISBN 9780833048165 .
Дальнейшее чтение
[ редактировать ]- «Справочное руководство по пользователям Joss», RL Clark, отчет R-1555/9, Rand Corp (январь 1975 г.)
- Устное история истории с Кейтом У. Унстером , Институт Чарльза Бэббиджа , Университет Миннесоты. Обзор проектов в RAND Corporation , когда Кит Ункфер был нанят в 1950 году до начала 1970 -х годов, таких как Джонниак , Джосс, выживаемая национальная сеть, и некоторая работа, связанная с Arpanet .
Внешние ссылки
[ редактировать ]- Джосс: онлайн-вычислительная система (VPRI-0270) , фильм, демонстрирующий Джосса, созданный Рэнд в марте 1964 года, когда он все еще работал на Джонниаке.