FLOW - это образовательный язык программирования, разработанный Джефом Раскином и Джонатаном (Джоном) Коллинзом, студентом факультета искусств Калифорнийского университета в США, в 1970 году и реализованный на нескольких мини-компьютерах в начале 1970-х годов. Цель языка - упростить изучение алгоритмов в высокоинтерактивной среде. В целом язык очень похож по синтаксису и структуре на язык программирования BASIC , но имеет ряд изменений для упрощения набора кода. Наиболее заметной среди них была концепция «усиления набора текста», в которой короткие строки, часто состоящие из одного символа, расширялись языком до полного «неусиленного» исходного кода. Современныйинтегрированные среды разработки и текстовые редакторы, ориентированные на код, часто включают аналогичную функцию, которая теперь обычно называется автозаполнением . Начинающий программист сначала создаст блок-схему для решения проблемы. Поскольку все проблемы касались слов (а не математических задач), решение было интуитивно понятным. Блок-схема будет переведена на язык программирования потоков с использованием нисходящего механического метода.
Парадигма | Бесструктурный , императивный |
---|---|
Разработано | Джеф Раскин |
Впервые появился | 1970 |
Под влиянием | |
БАЗОВЫЙ |
История
В 1970 году на факультете английского языка Канзасского университета состоялась встреча, посвященная использованию компьютеров в гуманитарных науках. За конференцией последовало учебное занятие, которое проходило с 13 июня по 18 августа, на котором Джеф Раскин был одним из нескольких учителей, участвовавших в обучении других учителей базовым навыкам работы с компьютером. В этот период Раскин разработал концепцию языка FLOW. [1]
Ключевым элементом дизайна FLOW была попытка избежать синтаксических ошибок за счет максимально возможной автоматизации ввода языка. Например, если кто-то хотел ввести оператор PRINT "10"
, пользователю просто нужно было ввести его, P10
и интерактивный редактор разворачивал его по мере набора. Если пользователь ввел недопустимую команду, она мигала на терминале, а затем автоматически стиралась, так что пользователю «ничуть не хуже, если он нажал неправильную клавишу». Они назвали эту концепцию «усилением набора текста» и отметили, что у нее есть дополнительное преимущество, заключающееся в устранении препятствий для медленных печатников или тех, у кого есть физические проблемы с использованием терминала. [2]
Льюис и Норман позже назвали эту концепцию «затычкой», поскольку она подавляла ввод пользователя до тех пор, пока он не набрал что-нибудь полезное. Они проиллюстрировали это, рассказав об одной из любимых демонстраций Раскина FLOW, где он закрывал глаза и нажимал случайные клавиши на терминале, создавая синтаксически правильную, хотя и бессмысленную программу. [3]
Еще одним аспектом подхода системы FLOW к взаимодействию с пользователем был отладчик . Это включало команду WALK
, аналог BASIC, RUN
которая задерживается после выполнения каждого оператора аналогично современным одношаговым системам. [4] [3]
По возвращении в Калифорнийский университет в Сан-Диего (UCSD) Раскин смог организовать финансирование от UCSD и соответствующие средства от Национального научного фонда для приобретения оборудования для разработки системы FLOW на общую сумму 76000 долларов (что эквивалентно 506 471 доллару в 2020 году). . [5] Первоначальная система состояла из трех миникомпьютеров Data General Nova с объемом памяти 12 тыс. Слов, нескольких терминалов VST 1200, графического терминала Tektronix 4002 и плоттера HP 7200. В сентябре 1973 года процессоры были обновлены до 32k слов памяти. [6]
Первую версию FLOW внедрили два аспиранта UCSD. Первоначальная версия была реализована на FORTRAN, но позже была перенесена на язык ассемблера Nova . Более поздние порты включали ассемблер MICRO 800, BASIC и Algol . [6]
Описание
Общая организация
Как и BASIC, FLOW использует номера строк как для помощи при редактировании, так и в качестве меток операторов. В отличие от большинства BASIC, FLOW автоматически нумерует программы, начиная со строки 10 и увеличиваясь на 10 по мере ввода новых строк. Номера строк отформатированы как трехзначные, поэтому строка 10 отображается как 010. Пользователи также могут вводить номера строк вручную и изменять нумерацию всей программы с помощью NUMBER
команды. [5]
В отличие от BASIC, RUN
команда может быть остановлена после достижения заданной строки, например RUN FROM FIRST LINE TO 200
. Чтобы ввести эту команду, пользователь просто набирает текст RF200
, а остальное «усиливается» в командной строке. [5]
Синтаксис и возможности
Наиболее очевидное различие между FLOW и BASIC заключалось в том, что FLOW имеет только одну переменную (IT) и не имеет математических операторов. В языке всего семь операторов, все из которых применяют базовую логику или операции со строками. Также нет эквивалента цикла for , цикл полностью обрабатывается с помощью IF
тестов и JUMP TO
операторов. [7]
В языке нет прямого взаимодействия с пользователем, как в BASIC INPUT
, данные вместо этого определяются в аналоге DATA
оператора BASIC в FLOW 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
- эквивалент BASIC'sREM
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 КОММЕНТАРИЙ НАЙТИ, ЕСЛИ В СЛОВЕ ЕСТЬ ИЛИ "F" ИЛИ "G"020 КОММЕНТАРИЙ ЛИРЫ ФОРЕТ, 19 ОКТЯБРЯ 1971 г.030 КОММЕНТАРИЙ040 КОММЕНТАРИЙ НЕКОТОРЫЕ ТЕСТОВЫЕ СЛУЧАИ: ЛИСА, ГОФЕР, КРЫСА, СОБАКА, КОШКА.050 КОММЕНТАРИЙ ОТВЕТЫ ДОЛЖНЫ БЫТЬ ДА, ДА, НЕТ, ДА, НЕТ.060 КОММЕНТАРИЙ070 ТЕКСТ "СОБАКА"080 КОММЕНТАРИЙ ПОЛУЧИТЬ ПИСЬМО С ТЕКСТОМ090 ПОЛУЧИТЬ100 КОММЕНТАРИЙ ПРОВЕРЬТЕ ПУСТОЙ, УКАЗЫВАЮЩИЙ КОНЕЦ СЛОВА110 ЕСЛИ ЭТО "" ПЕРЕЙТИ НА 500120 КОММЕНТАРИЙ ПРОВЕРЬТЕ F ИЛИ G130 ЕСЛИ ЭТО "F" ПЕРЕХОДИТЕ НА 200140 ЕСЛИ ЭТО "G" ПЕРЕХОДИТЕ НА 200150 КОММЕНТАРИЙ ЭТО БЫЛО ДРУГОЕ ПИСЬМО, ПЕРЕЙДИТЕ К СЛЕДУЮЩЕМУ СИМВОЛУ. В ТЕКСТЕ160 ПЕРЕХОД НА 080200 ПЕЧАТЬ «СЛОВО БЫЛО В ЭТОМ 'F' ИЛИ 'G'».210 КОММЕНТАРИЙ МЫ СДЕЛАНО220 СТОП500 ПЕЧАТЬ «В СЛОВЕ НЕ ИМЕЕТСЯ F 'ИЛИ A' G 'В ЭТОМ.
Рекомендации
Цитаты
- Перейти ↑ Raskin 1974 , p. 231.
- Перейти ↑ Raskin 1974 , p. 232.
- ^ a b Льюис и Норман 2014 , стр. 691.
- Перейти ↑ Raskin 1974 , p. 233.
- ^ a b c d e Раскин 1974 , с. 234.
- ^ а б Раскин 1974 , с. 237.
- Перейти ↑ Raskin 1974 , p. 235.
- Перейти ↑ Raskin 1974 .
Библиография
- Раскин, Джеф (июль 1974). «ПОТОК: язык обучения компьютерному программированию в гуманитарных науках». Компьютеры и гуманитарные науки . 8 (4): 231–237. DOI : 10.1007 / BF02402344 . S2CID 62648997 .
- Льюис, Клейтон; Норман, Дональд (2014). «Проектирование на случай ошибки» . В Беккере, Рональд (ред.). Чтения по взаимодействию человека и компьютера: к 2000 году . Эльзевир. С. 686–697. ISBN 9780080515748.
дальнейшее чтение
- Гентер, Дональд; Норман, Дональд (май 1977 г.). The FLOW Tutor: схемы для репетиторства (PDF) . Ла-Хойя, Калифорния: Центр обработки человеческой информации, Калифорнийский университет, Сан-Диего. OCLC 961830303 . Отчет № 7702.
Внешние ссылки
- Flow , современная реализация FLOW в LISP