FLOW (язык программирования) - FLOW (programming language)
Парадигма | Неструктурированный, императив |
---|---|
Разработано | Джеф Раскин |
Впервые появился | 1970 |
Под влиянием | |
БАЗОВЫЙ |
ПОТОК является образовательный язык программирования разработано Джеф Раскин и Джонатан (Джон) Коллинз, студент факультета искусств UCSD, в 1970 г. миникомпьютеры в начале 1970-х гг. Цель языка - облегчить изучение алгоритмы через интерактивную среду. Общий язык очень похож по синтаксису и структуре на BASIC язык программирования, но в него внесен ряд изменений для упрощения набора кода. Наиболее заметной среди них была концепция «расширения набора текста», в которой короткие строки, часто состоящие из одного символа, расширялись языком в полный «неусиленный» исходный код. Современное интегрированные среды разработки и ориентированный на код текстовые редакторы часто включают аналогичную функцию, теперь обычно называемую автозаполнение. Начинающий программист сначала создаст блок-схему для решения проблемы. Поскольку все проблемы касались слов (а не математических задач), решение было интуитивно понятным. Блок-схема будет переведена на язык программирования потоков с использованием нисходящего механического метода.
История
В 1970 году отделение английского языка Канзасский университет прошла встреча по использованию компьютеров в гуманитарных науках. За конференцией последовало обучение, которое проходило с 13 июня по 18 августа, на котором Джеф Раскин был одним из нескольких учителей, участвовавших в обучении других учителей базовым навыкам работы с компьютером. В этот период Раскин разработал концепцию языка FLOW.[1]
Ключевым элементом дизайна FLOW была попытка избежать синтаксических ошибок за счет максимально возможной автоматизации ввода языка. Например, если кто-то хочет ввести оператор ПЕЧАТЬ "10"
, пользователю просто нужно было ввести P10
а интерактивный редактор будет расширять его по мере набора текста. Если пользователь ввел недопустимую команду, она мигала на терминале, а затем автоматически стиралась, так что пользователю «ничуть не хуже, если он нажал неправильную клавишу». Они назвали эту концепцию «усилением набора текста» и отметили, что у нее есть дополнительное преимущество, заключающееся в устранении препятствий для медленных печатников или тех, у кого есть физические проблемы с использованием терминала.[2]
Льюис и Норман позже назвали эту концепцию «затычкой», поскольку она подавляла ввод пользователя до тех пор, пока он не набрал что-нибудь полезное. Они проиллюстрировали это, рассказав об одной из любимых демонстраций Раскина FLOW, где он закрывал глаза и нажимал случайные клавиши на терминале, создавая синтаксически правильную, хотя и бессмысленную программу.[3]
Еще одним аспектом подхода системы FLOW к взаимодействию с пользователем была отладчик. Это включало команду ХОДИТЬ
, аналог BASIC's ПРОБЕГ
которая задерживается после выполнения каждого оператора аналогично современным одношаговым системам.[4][3]
По возвращении в Калифорнийский университет в Сан-Диего (UCSD), Раскин смог организовать финансирование от UCSD и соответствующие фонды из Национальный фонд науки на закупку оборудования для разработки системы FLOW на общую сумму 76 000 долларов США (эквивалент 500 350 долларов США в 2019 году).[5] Первоначальная система состояла из трех Данные General Nova миникомпьютеры с памятью 12к слов, несколько терминалов VST 1200, Tektronix 4002 графический терминал и плоттер HP 7200. В сентябре 1973 года процессоры были обновлены до 32k слов памяти.[6]
Первая версия FLOW была реализована двумя аспирантов в UCSD. Первоначальная версия была реализована в FORTRAN но позже портировал на Нову язык ассемблера. Более поздние порты включали ассемблер MICRO800, BASIC и Алгол.[6]
Описание
Общая организация
Как и BASIC, FLOW использует номера строк как для помощи при редактировании, так и в качестве меток операторов. В отличие от большинства BASIC, FLOW автоматически нумерует программы, начиная со строки 10 и увеличиваясь на 10 при вводе новых строк. Номера строк отформатированы как трехзначные, поэтому строка 10 отображается как 010. Пользователи также могут вводить номера строк вручную и перенумеровать всю программу с помощью НОМЕР
команда.[5]
В отличие от BASIC, ПРОБЕГ
команда может быть остановлена, как только заданная строка будет достигнута, например, БЕЖАТЬ С ПЕРВОЙ СТРОКИ НА 200
. Чтобы ввести эту команду, пользователь просто набирает RF200
, а остальное «усиливается» в командной строке.[5]
Синтаксис и возможности
Наиболее очевидное различие между FLOW и BASIC заключалось в том, что FLOW имеет только одну переменную (IT) и не имеет математических операторов. В языке всего семь операторов, и все они применяют базовую логику или операции со строками. Нет эквивалента для цикла либо цикл полностью обрабатывается через ЕСЛИ
тесты и ПЕРЕЙТИ К
заявления.[7]
В языке нет прямого взаимодействия с пользователем, как в BASIC ВХОД
, данные вместо этого определены в аналоге FLOW для BASIC ДАННЫЕ
утверждение, ТЕКСТ
. ТЕКСТ
определяет строку, разделенную кавычками, например ТЕКСТ «ПРИВЕТ, МИР»
, который затем читается посимвольно с помощью ВОЗЬМИ
. ЭТО
- это метапеременная, которая содержит последний прочитанный символ и может затем использоваться в других операторах, например ПЕЧАТЬ
. ЭТО
становится пробелом - не пустой строкой, а единственным пробелом - когда ТЕКСТ
полностью прочитан.[5]
Программы могут содержать несколько ТЕКСТ
заявления, но в отличие от BASIC ДАННЫЕ
где все строки считаются одним непрерывным блоком данных, только один ТЕКСТ
оператор активен в то время, когда они встречаются интерпретатору. Другими словами, если есть два ТЕКСТ
операторы в программе, они не рассматриваются как один более длинный оператор, как в случае с ДАННЫЕ
, ЭТО
вернет пробел, когда закончится конец активного ТЕКСТ
оператор и не вернет больше данных до следующего ТЕКСТ
оператор встречается в коде.[5]
Заявления
Из:[8]
Операторы программы
КОММЕНТАРИЙ
- эквивалент BASIC'sREM
РАСПЕЧАТАТЬ
- как в BASIC, принимает буквальные строки между двойными кавычками,ЭТО
переменная, илиНА НОВОЙ ЛИНИИ
для печати возврата каретки.ТЕКСТ
- похожий наДАННЫЕ
в BASIC, но используется только для строкВОЗЬМИ
- читает следующий символ из текущего оператора TEXTПЕРЕЙТИ К
- эквивалентноИДТИ К
, всегда расширяет целевые строки до трех цифрЕСЛИ ЭТО ... ПЕРЕЙТИ К
- эквивалентноЕСЛИ ... ТО
но может выполнять только тесты на равенствоЭТО
ОСТАНОВКА
- используется для завершения программы, но не требуется
Интерактивные команды
ПРОБЕГ
- как в BASIC, но может определять как начальную, так и конечную строки и использовать метастрокиПЕРВАЯ ЛИНИЯ
иКОНЕЦ
ХОДИТЬ
- медленно выполняет программуОТОБРАЖАТЬ
- эквивалентноСПИСОК
. Чтобы перечислить всю программу, используетсяДИСПЛЕЙ ОТ ПЕРВОЙ СТРОКИ ДО КОНЦА
СТЕРЕТЬ
- удалить строки из программы,УДАЛИТЬ ОТ 038 ДО 140
НОМЕР
- перенумеровать строки в программе
Пример
010 КОММЕНТАРИЙ НАЙТИ ЕСЛИ СЛОВО ИЛИ "F" ИЛИ "G" В IT020 КОММЕНТАРИЙ LYRA FORET 19 ОКТЯБРЯ 1971030 КОММЕНТАРИЙ 040 КОММЕНТАРИЙ НЕКОТОРЫЕ ТЕСТОВЫЕ СЛУЧАИ: FOX, GOPHER, RAT, DOG, CAT050 КОММЕНТАРИЙ ОТВЕТИТЕЛЬНЫЙ ОТВЕТ ДОЛЖЕН БЫТЬ ДА , НЕТ, ДА, № 060 КОММЕНТАРИЙ 070 ТЕКСТ «СОБАКА» 080 КОММЕНТАРИЙ ПОЛУЧИТЕ ПИСЬМО С ТЕКСТОМ 090 ПОЛУЧИТЬ IT100 ПРОВЕРЬТЕ КОММЕНТАРИЙ НА ПУСТОЙ СЛОВА, УКАЗЫВАЮЩИЙ КОНЕЦ СЛОВА 110, ЕСЛИ ЭТО "" ПЕРЕЙТИ НА 500120 КОММЕНТАРИЙ ПРОВЕРИТЬ НА F ИЛИ G130 ЕСЛИ ЭТО "F" ПЕРЕЙТИ К 200140 ЕСЛИ ЭТО "G" ПЕРЕЙТИ К 200150 КОММЕНТАРИЙ, ЭТО БЫЛО ДРУГОЕ ПИСЬМО, ПЕРЕЙДИТЕ К СЛЕДУЮЩЕМУ СИМВОЛУ. В ТЕКСТЕ 160 ПЕРЕЙТИ НА 080200 ПЕЧАТЬ "СЛОВО БЫЛО В ЭТОМ 'F' ИЛИ 'G'." 210 КОММЕНТАРИЙ МЫ СДЕЛАНЫ 220 STOP500 PRINT "СЛОВО НЕ ИМЕЛО" F 'ИЛИ' G 'В ЭТОМ. "
Рекомендации
Цитаты
- ^ Раскин 1974, п. 231.
- ^ Раскин 1974, п. 232.
- ^ а б Льюис и Норман 2014, п. 691.
- ^ Раскин 1974, п. 233.
- ^ а б c d е Раскин 1974, п. 234.
- ^ а б Раскин 1974, п. 237.
- ^ Раскин 1974, п. 235.
- ^ Раскин 1974.
Библиография
- Раскин, Джеф (июль 1974). «ПОТОК: язык обучения компьютерному программированию в гуманитарных науках». Компьютеры и гуманитарные науки. 8 (4): 231–237. Дои:10.1007 / BF02402344. S2CID 62648997.CS1 maint: ref = harv (связь)
- Льюис, Клейтон; Норман, Дональд (2014). «Проектирование с учетом ошибки». В Беккере, Рональд (ред.). Чтения по взаимодействию человека и компьютера: к 2000 году. Эльзевир. С. 686–697. ISBN 9780080515748.CS1 maint: ref = harv (связь)
дальнейшее чтение
- Гентер, Дональд; Норман, Дональд (май 1977 г.). The FLOW Tutor: схемы для обучения (PDF). Ла-Хойя, Калифорния: Центр обработки человеческой информации, Калифорнийский университет, Сан-Диего. OCLC 961830303. Отчет № 7702.
внешняя ссылка
- Поток, современная реализация FLOW в LISP