FLOW (язык программирования)
Парадигма | Неструктурированный , императивный |
---|---|
Разработано | Джефф Раскин |
Впервые появился | 1970 год |
Под влиянием | |
БАЗОВЫЙ |
FLOW — образовательный язык программирования, разработанный Джефом Раскином в 1970 году и реализованный на нескольких миникомпьютерах в начале 1970-х годов. Цель языка — облегчить изучение алгоритмов в высокоинтерактивной среде. В целом язык очень похож по синтаксису и структуре на язык программирования BASIC , но в него внесен ряд изменений, упрощающих ввод кода. Наиболее примечательной среди них была концепция «улучшения типизации», при которой короткие строки, часто состоящие из одного символа, расширялись языком до полного «неусиленного» исходного кода. Современные интегрированные среды разработки ориентированные на код, и текстовые редакторы, часто включают в себя аналогичную функцию, которая сейчас обычно называется автозаполнением . Начинающий программист сначала должен создать блок-схему решения проблемы. Поскольку все проблемы включали слова (а не математические задачи), решение было интуитивно понятным. Блок-схема будет переведена на язык потокового программирования с использованием нисходящего механического метода.
История
[ редактировать ]В 1970 году на факультете английского языка Канзасского университета состоялась встреча, посвященная использованию компьютеров в гуманитарных науках. За конференцией последовал тренинг, который проходил с 13 июня по 18 августа, на котором Джеф Раскин был одним из нескольких учителей, участвовавших в обучении других учителей базовым компьютерным навыкам. В этот период Раскин разработал концепцию языка FLOW. [ 1 ]
Ключевым элементом дизайна FLOW была попытка избежать синтаксических ошибок за счет максимально возможной автоматизации ввода языка. Например, если кто-то хочет ввести оператор PRINT "10"
пользователю просто нужно было ввести P10
и интерактивный редактор расширял его по мере ввода. Если пользователь ввел недопустимую команду, она мигала на терминале, а затем автоматически удалялась, так что пользователю «не стало хуже, если он нажал неправильную клавишу». Они назвали эту концепцию «улучшением набора текста» и отметили, что она имеет дополнительное преимущество, заключающееся в устранении препятствий для медленно печатающих людей или людей с физическими проблемами при использовании терминала. [ 2 ]
Льюис и Норман позже назвали эту концепцию «затычкой», поскольку она блокировала ввод пользователя до тех пор, пока он не напечатал что-то полезное. Они проиллюстрировали это, рассказав об одной из любимых демонстраций FLOW, которую Раскин проводил, когда он закрывал глаза и нажимал случайные клавиши на терминале, создавая синтаксически правильную, хотя и бессмысленную программу. [ 3 ]
Еще одним аспектом подхода системы FLOW к взаимодействию с пользователем был ее отладчик . Это включало команду WALK
, аналог BASIC RUN
это задерживается после выполнения каждого оператора аналогично современным одношаговым системам. [ 4 ] [ 3 ]
По возвращении в Калифорнийский университет в Сан-Диего (UCSD) Раскин смог организовать финансирование от UCSD и соответствующие средства Национального научного фонда для приобретения оборудования для разработки системы FLOW на общую сумму 76 000 долларов США (что эквивалентно 596 278 долларам США в 2023 году). . [ 5 ] Первоначальная система состояла из трех Data General Nova миникомпьютеров с памятью по 12 тыс. слов, нескольких терминалов VST 1200, графического терминала Tektronix 4002 и плоттера HP 7200. В сентябре 1973 года процессоры были обновлены до 32 тыс. слов памяти. [ 6 ]
Первая версия FLOW была запрограммирована Джонатаном «Джоном» Коллинзом на ФОРТРАНЕ для использования в летнем институте. Чтобы облегчить быстрое внедрение (1 неделя), Джонатан ограничил ввод первым символом команды, а компьютер предоставил остальные буквы команды. Таким образом, было изобретено усиление типизации. UCSD портировали Flow Позже два аспиранта на язык ассемблера Nova . Более поздние порты включали MICRO. Ассемблер 800, Бейсик и Алгол . [ 6 ]
Описание
[ редактировать ]Общая организация
[ редактировать ]Как и BASIC, FLOW использует номера строк как для облегчения редактирования, так и для меток операторов. В отличие от большинства BASICов, FLOW автоматически нумерует программы, начиная со строки 10 и увеличивая ее на 10 при вводе новых строк. Номера строк имеют трехзначный формат, поэтому строка 10 отображается как 010. Пользователи также могут вводить номера строк вручную и перенумеровывать всю программу с помощью NUMBER
команда. [ 5 ]
В отличие от Бейсика, RUN
команде можно дать указание остановиться после достижения заданной строки, например, RUN FROM FIRST LINE TO 200
. Чтобы ввести эту команду, пользователь просто набирает RF200
, а остальные «усиливаются» в командной строке. [ 5 ]
Синтаксис и возможности
[ редактировать ]Наиболее очевидное различие между FLOW и BASIC заключалось в том, что FLOW имеет только одну переменную: IT
и не имеет математических операторов. В языке всего семь операторов, каждый из которых применяет базовую логику или манипулирование строками. также не существует Эквивалента цикла for , цикл полностью обрабатывается через IF
тесты и JUMP TO
заявления. [ 7 ]
В этом языке нет прямого взаимодействия с пользователем, как в BASIC. INPUT
вместо этого данные определяются в FLOW, аналоге BASIC. DATA
заявление, TEXT
. TEXT IS
определяет строку, разделенную кавычками, например TEXT IS "HELLO,WORLD"
, который затем считывается посимвольно с помощью GET IT
. IT
— это метапеременная, которая содержит последний прочитанный символ и затем может использоваться в других операторах, например PRINT IT
. IT
становится пустым – не пустой строкой, а одним пробелом – когда TEXT
читается полностью. [ 5 ]
Программы могут содержать несколько TEXT
утверждения, но в отличие от BASIC DATA
где все строки считаются одним непрерывным блоком данных, только одна TEXT
Оператор активен в тот момент, когда с ним сталкивается интерпретатор. Другими словами, если есть два TEXT
операторов в программе, они не рассматриваются как один более длинный оператор, как в случае с DATA
, IT
вернет пустое значение, когда оно достигнет конца активного TEXT
оператор и не будет возвращать больше данных до следующего TEXT
оператор встречается в коде. [ 5 ]
Заявления
[ редактировать ]От: [ 8 ]
Программные заявления
[ редактировать ]COMMENT
- эквивалент BASICREM
PRINT
- как и в BASIC, принимает буквальные строки в двойных кавычках,IT
переменная, илиON A NEW LINE
чтобы напечатать возврат каретки.TEXT IS
- похоже наDATA
в BASIC, но используется только для строкGET IT
- читает следующий символ из текущего оператора TEXTJUMP TO
- эквивалентноGOTO
, всегда расширяет целевые строки до трех цифрIF IT IS ... JUMP TO
- эквивалентноIF...THEN
но может выполнять только проверки на равенствоIT
STOP
- используется для завершения программы, но не обязательно
Интерактивные команды
[ редактировать ]RUN
- как в BASIC, но может определять как начальную, так и конечную строки и использовать металинии.FIRST LINE
иEND
WALK
- медленно выполняет программуDISPLAY
- эквивалентноLIST
. Чтобы перечислить всю программу, используетсяDISPLAY FROM FIRST LINE TO END
ERASE
- удалить строки из программы,ERASE FROM 038 TO 140
NUMBER
- перенумеровать строки в программе
Пример
[ редактировать ]010 COMMENT FIND IF A WORD HAS EITHER AN "F" OR A "G" IN IT 020 COMMENT BY LYRA FORET 19 OCTOBER 1971 030 COMMENT 040 COMMENT SOME TEST CASES ARE FOX, GOPHER, RAT, DOG, CAT 050 COMMENT THE RESPECTIVE ANSWERS SHOULD BE YES, YES, NO, YES, NO. 060 COMMENT 070 TEXT IS "DOG" 080 COMMENT OBTAIN A LETTER OF THE TEXT 090 GET IT 100 COMMENT CHECK FOR A BLANK WHICH INDICATES END OF WORD 110 IF IT IS " " JUMP TO 500 120 COMMENT CHECK FOR F'S OR G'S 130 IF IT IS "F" JUMP TO 200 140 IF IT IS "G" JUMP TO 200 150 COMMENT IT WAS SOME OTHER LETTER, SO GO ON TO THE NEXT CHAR. IN THE TEXT 160 JUMP TO 080 200 PRINT "THE WORD HAD AN 'F' OR A 'G' IN IT." 210 COMMENT WE ARE DONE 220 STOP 500 PRINT "THE WORD DID NOT HAVE AN "F' OR A 'G' IN IT."
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Раскин 1974 , стр. 231.
- ^ Раскин 1974 , стр. 232.
- ^ Jump up to: а б Льюис и Норман 2014 , с. 691.
- ^ Раскин 1974 , стр. 233.
- ^ Jump up to: а б с д и Раскин 1974 , с.234.
- ^ Jump up to: а б Раскин 1974 , с.237.
- ^ Раскин 1974 , стр. 235.
- ^ Раскин 1974 .
Библиография
[ редактировать ]- Раскин, Джефф (июль 1974 г.). «FLOW: язык обучения компьютерному программированию в гуманитарных науках». Компьютеры и гуманитарные науки . 8 (4): 231–237. дои : 10.1007/BF02402344 . S2CID 62648997 .
- Льюис, Клейтон; Норман, Дональд (2014). «Проектирование ошибок» . У Беккера, Рональд (ред.). Чтения по взаимодействию человека и компьютера: к 2000 году . Эльзевир. стр. 686–697. ISBN 9780080515748 .
Дальнейшее чтение
[ редактировать ]- Джентер, Дональд; Норман, Дональд (май 1977 г.). Репетитор FLOW: схемы для обучения (PDF) . Ла-Хойя, Калифорния: Центр обработки человеческой информации, Калифорнийский университет, Сан-Диего. OCLC 961830303 . Отчет № 7702. Архивировано (PDF) из оригинала 6 ноября 2019 г.
Внешние ссылки
[ редактировать ]- Flow. Архивировано 5 ноября 2019 г. на Wayback Machine , современной реализации FLOW в LISP.