JOSS

Jan 18, 2023 01:53

Удивительный язык из 60-х, иногда кажется что кто-то по приколу в наше время придумал спеку и выдал за что-то древнее. Разве что ограничения по названием переменных, отсутствие работы со строками и прочее ограничения заставляют поверить.
Функции - обычные let f(x,y)=x*y, и с синком let f=x*y, когда переменные берутся из контекста.
Намёк на структурное программирование - do part N после завершения выполнения возвращает назад (т.е. есть стек)
Нормальный булевый тип, который отличим от числа.

Собственно, становится понятно, для чего нужны были номера строк - когда работаешь в диалоге, грубо говоря, с печатной машинки в качестве терминала, по-другому и не укажешь, какую часть программы хочешь отредактировать.

Понятно, конечно, что по сути это продвинутый инженерный калькулятор, но гибкость синтаксиса по сравнению с корявыми монстрами тех времён удивляет. Собственно всё что там было так и кочевало из фокала в бейсик до тех пор, пока в том не появились возможность структурно програмировать в quick basic-е. А всё до этого так и повторяло - DEF FN(..) вместо let f(..)=, да и gosub/return вместо do part.

Но вот такие интересные вещи, как:
условное выражение [условие 1: значение 1, условие 2: значение 2, значение для остальных случаев]
<оператор> if условие.
<оператор> for i=1(n)10,20,30.
агрегатные функции такие как sum, prod, а также first, выбирающий первый элемент при выполнение условия.
- выглядят свежо даже по современным мерками.
Конечно тут нет полноценных списков, итераторов, генераторов и т.д., но по сравнению с дубовым синтаксисом того же бейсика - те языки, которые считаются последователями были очень большим шагом назад.

компьютерная археология

Previous post Next post
Up