Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Виртуальный офис - дома" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Язык программирования (и ОС) ФОРТ (FORTH) 0006: история языка [orange]
Информационный Канал Subscribe.Ru |
[orange] ============================================================================= Mahlon G. Kelly (Келли), Nicholas Spies (Спайс) Язык программирования ФОРТ (перевод Forth A Text and Reference) Москва, "Радио и Связь", 1993 ============================================================================= Что же представляет собой язык Форт ? Основная его часть -- это набор слов, или словарь, из которого слово вызывается по имени для выполнения специфических функций. Слова языка Форт + - * / соответственно складывают, вычитают, умножают и делят два числа. Программа на Форте пишется путем определения новых слов с использованием слов, ранее уже определенных в словаре. Как только новые слова скомпилированы в словарь, они не отличаются по форме от тех слов, которые в нем уже имеются. Программа на Форте -- это не более чем расширение самого языка, это резко отличает его от таких языков программирования, как BASIC, FORTRAN или PASCAL, в которых язык транслирует всю программу в закодированную форму, понятную компьютеру, не меняя самого языка. И вследствие того, что Форт использует словарь, новые слова и программы требуют гораздо меньше памяти и могут выполняться так же быстро, как эквивалентные им программы на других языках. Кроме того, языком Форт очень легко пользоваться. Подобно Бейсику, он сразу же реагирует на любую команду (слово), введенную с клавиатуры. Однако новые слова Форта и программы компилируются в словарь, поэтому они могут выполняться с той же скоростью или быстрее, чем, например, на Фортране, который к тому же при трансляции программ порождает большие объемы машинного кода. Компиляция программы на языке Форт делается значительно быстрее и проще, чем на Фортране, Коболе, Паскале и других языках. Есть у форта и другие своеобразные черты. Почти все языки программирования используют средства операционной системы (например, СР/М /си-пи-эм/, MS-DOS) для обеспечения ввода информации с клавиатуры, вывода ее на экран дисплея, сохранения программы на диске и других функций. В противоположность этому многие версии языка Форт служат сами себе и операционной системой, или, иначе говоря, все функции операционной системы могут быть написаны на языке Форт и включены в качестве части его словаря. И в то время как другие языки для сохранения программы и данных пользуются именованными файлами на дисках, Форт сохраняет такую же информацию в нумерованных блоках емкостью 1024 байта (1 Кб) каждый. Хотя и в языке Форт могут использоваться файлы, а сам он может работать с верхним уровнем операционной системы, Форт выполняет функции операционной системы специфическим и необычным образом. В большинстве языков программирования требуется, чтобы числа хранились в виде переменных. В Форте также есть именованные переменные, но для хранения чисел, так же как и для передачи их из одного слова в другое, в основном используется стек, позволяющий экономить много времени (числа не приходится выбирать из памяти, но при условии что стек реализован аппаратно на кристалле или находится в быстрой кэш-памяти). Применение стека является как раз той новинкой (точнее особенностью), которую нужно прежде всего освоить в языке Форт. Форт -- структурированный язык. Такие языки, как Фортран и Бейсик, допускают написание программы с переходами из одного места в другое, что потенциально может привести к путанице и беспорядку. Некоторые структурные языки, например Паскаль, заставляют разрабатывать программу в логической последовательности, но делается это с помощью очень строгих правил, которые ограничивают программиста более жестко, чем на языке Форт. Разработка программ на Форте и их организация производятся, обычно одновременно на двух уровнях. На верхнем уровне программист разрабатывает план того, что программа должна делать, пользуясь часто логической блок-схемой программы. На нижнем уровне программа пишется с помощью определения слов, необходимых для выполнения задач верхнего уровня. Каждое определяемое слово может быть проверено и отлажено отдельно или в сочетании с другими словами, что приводит к существенному сокращению времени разработки и тестирования программы. Именно возможность писать короткие определения слов и программ и делает язык Форт легким для изучения. Новое определение может быть введено с клавиатуры и немедленно проверено. Поэтому форт можно и нужно изучать на практике методом "проб и ошибок". И хотя Форт заключает в себе некоторые тонкости и абстракции, можно изучить лишь небольшую их часть, чтобы писать полезные программы. Вы сможете писать программы и экспериментировать с ними раньше, чем дойдете до середины первой главы. Для облегчения обучения очень важны немедленная реакция и подтверждение, и только два языка -- Бейсик и Лого приближаются к Форту в этом отношении. На протяжении всей книги мы будем разбирать небольшие примеры и делать упражнения. Вам следует все их попробовать решить, но еще большему вы научитесь, если будете сами ставить и решать свои собственные задачи. И все же многие утверждают, что Форт труден для изучения. Для этого имеется несколько причин. Опытным программистам Форт зачастую дается труднее, чем новичкам, потому что он отличается от других языков программирования по самой своей природе. Хотя в языке Форт нет каких-либо присущих только ему сложностей, программисты с трудом отвыкают от переменных, подпрограмм, многословного текста на исходном языке, алгебраических обозначений и прочих атрибутов привычных им языков. Если вы знаете другие языки программирования, попробуйте к языку Форт подойти с полной отдачей. Освойте понятия стека и определения слов, прежде чем переходить к более сложным вопросам. Забудьте всякие предубеждения, которые у вас могут возникнуть, вроде того, что для хорошего языка программирования обязательно нужна операционная система и файловая поддержка. И не беспокойтесь о блок-схеме, начните с небольших задач, ваш опыт будет накапливаться постепенно. Форт может показаться трудным, так как это достаточно мощное средство программирования. Действительно, все возможности языка изучить трудно, но все они и не потребуются, чтобы писать очень полезные программы. На Форте можно научиться писать программы на уровне хорошего программиста, пользующегося языками Бейсик и Фортран, быстрее, чем на любом другом языке. Так же несложно программирование на Форт-ассемблере (определение слов Форта в машинных кодах). Можно описать слова, которые будут создавать в словаре совершенно новые типы данных, использовать Форт для модификации самого языка, для операций с большими объемами данных в памяти компьютера и даже для того, чтобы реализовать новые языки программирования. Конечно, изучение этих вопросов может быть трудным. И, хотя мы осветим большую их часть, вы сможете хорошо программировать на языке Форт раньше, чем овладеете ими всеми. Форт предоставляет вам мощные средства для управления работой компьютера, присущие другим языкам программирования, включая машинный язык, но вам эти мощные средства скорее всего не потребуются. Существует одна причина, из-за которой Форт иногда оказывается действительно трудным. Дело в том, что в стандартах языка и в поставляемых потребителям реализациях языка отсутствуют некоторые слова для выполнения основных или важных функций, предусмотренных другими языками. В таких случаях программист вынужден сам написать слова, которые должны выполнять эти важные функции. Например, стандартный (ANS'83) Форт не содержит операций над числами с плавающей запятой, в нем нет трансцендентных функций (тригонометрических, логарифмической); не определены стандартами операции с символами и символьными строками (например, извлечение отдельных слов из текста), работа с файлами данных, графические возможности. Нет в стандарте и слова, позволяющего вводить числа в процессе исполнения программы. К счастью, во многих поставляемых реализациях Форта предусмотрены слова, позволяющие преодолеть эти ограничения, а Форт настолько мощный, что позволяет самому написать такие слова, если знать, как это сделать. И мы вас этому научим. Подводя итог, можно сказать, что Форт -- это в то же время мощный и неразвитый язык. Мощный он потому, что программы, написанные на нем, занимают мало места в памяти и исполняются с такой же скоростью или быстрее, чем на других языках, он дает потенциально неограниченные возможности управления компьютером, и писать и отлаживать программы довольно несложно. В то же время стандартный Форт неразвит, ввиду того что не предусматривает выполнения некоторых важных функций, которые являются неотъемлемой частью других языков или операционной системы и доступны для программиста. Введение этих функций предоставлено программисту или предусматривается в некоторых версиях Форта. Почему же стандартный Форт так бедно определен ? Чтобы понять это, надо немного познакомиться с историей его создания. В отличие от других языков программирования Форт не является плодом коллективного труда какого-либо комитета или коллектива ученых, он родился в голове одного человека -- Чарльза X. Мура. В начале 60-х годов Мура стало все больше не удовлетворять время и затраты труда, требовавшиеся для разработки программ на существовавших тогда ЭВМ. В течение нескольких лет он создал основы прототипа языка Форт, пользуясь для этого такими языками, как Алгол, Кобол, PL/I и ассемблер для IBM/360. Мур дал своему языку название FORTH, считая, что это будет язык для ЭВМ четвертого (fourth) поколения, однако ему приходилось работать на ЭВМ, которая допускала только пять букв названия, этим и объясняется такое необычное имя языка Форт. В 1971 г. Мура пригласили на работу в Национальную Радиоастрономическую обсерваторию для разработки программ сбора и обработки данных, получаемых с радиотелескопа. В процессе этой работы и появилась первая современная реализация языка Форт (а вторым в мире программистом на этом языке стала сотрудница Мура Элизабет Ратер), который был принят в качестве основного языка программирования в Американском астрономическом обществе. К 1973 г. потребность в языке стала настолько большой, что Мур и Ратер создали новую фирму Forth Inc., президентом которой стала Э. Ратер. Фирма разработала несколько версий языка Форт для различных марок ЭВМ, мини- и микро-ЭВМ, в том числе наиболее современную версию под названием PolyFORTH. По мнению специалистов фирмы Forth Inc., наиболее важные применения языка Форт в настоящее время связаны с работой программно-управляемого оборудования в реальном масштабе времени, хотя еще в 1974 г. фирма разработала на языке Форт административную систему для управления базой данных объемом 300 млн. бит информации. Сейчас фирма Forth Inc. сосредоточила свои усилия на обработке изображений, робототехнике и управлении сервоприводами. Недавно появились программы для таких применений, как автоматизация проверки накопителей на гибких магнитных дисках, для первого прототипа коммерческого устройства по электрофорезному разделению биологических материалов на космическом корабле многоразового использования, для сервосистем роботов, управляемых голосом, а также для контроля почти всех операций в новом главном аэропорте Саудовской Аравии. Однако популярностью язык Форт обязан не только своим авторам Муру и Ратер и фирме Forth Inc.. Базовый язык Форт общедоступен и бесплатно распространяется заинтересованной группой FORTH Interest Groop (FIG), множество фирм поставляет различные по своим возможностям коммерческие версии языка, но еще важнее то, что организована группа по стандартизации языка Форт для того, чтобы написанные на нем программы могли бы работать на различных компьютерах с минимальными затратами на их адаптацию. Группа FIG была создана в конце 70-х гг. активными программистами и почитателями языка, которые хотели сделать его еще более популярным. Существует множество организаций, в том числе несколько отделений этой группы в США и других странах мира, однако основная деятельность группы направлена на распространение базового диалекта языка, FIGFORTH (которая реализована на многих мини- и микроЭВМ) и издание журнала FORTH Dimensions, выходящего раз в два месяца. Содержание журнала показывает, что редакция проявляет интерес как к модификации и расширению самого языка, так и к решению прикладных задач. Кроме издания журнала и распространения языка каждый год, начиная с 1980-го, группа FIG созывает конференцию под названием FORTH Modification Laboratory (FORML), целью которой является встреча пользователей и системных программистов для обсуждения вопросов дальнейшего развития языка. Кроме этой конференции Институт прикладных исследований фирмы Applied FORTH Research ежегодно организует в Рочестере (США) конференцию по применению Форта (Rochester FORTH Application Conference). Институт публикует труды конференции и, кроме того, профессиональный журнал Journal of FORTH Application and Research, содержащий рефераты, библиографические ссылки на материалы по языку Форт и материалы студенческих исследований. Группа по стандартизации первоначально возникла в рамках Международного объединения астрономов. На встрече в Национальной обсерватории Китта (США) в мае 1977 г. был выработан глоссарий языка Форт под шифром AST.01, а после нескольких встреч в Европе, наконец, в феврале 1978 г. в Утрехте (Голландия) был разработан стандарт 1977 г. (FORTH-77), адресованный прежде всего пользователям микроЭВМ. В октябре 1979 г. встреча на острове Каталина закончилась разработкой стандарта FORTH-79, который распространяется на ЭВМ всех типов. Осенью 1983 г. состоялась встреча по разработке стандарта 1983 г, утвержденного в 1984 г, как FORTH-83. Стандарт Форт-83 отличается от стандарта Форт-79 некоторыми деталями, но не отличается от него по существу. Некоторые специалисты, в том числе и поставщики коммерческих версий языка, считают, что изменения 1983 г. в лучшем случае не привели к совершенствованию языка, в худшем же -- внесли некоторую путаницу, поэтому как Форт-83, так и Форт-79 имеют равное распространение, и мы рассматриваем здесь обе версии. Несмотря на то, что некоторые изменения могут привести к смешению обеих версий, были все же некоторые разумные, хотя и не очень важные причины внесения этих различий. С момента издания книги был выпущен новый стандарт ANS FORTH '94, и теперь ситуация аналогична описанной выше -- существуют множество форт-систем, полностью или частично соответствующих стандарту 83 или 94. В новом стандарте было добавлено множество расширений базового словаря (плавающая точка, файлы, динамическая память и т.д.), но до сих пор есть множество фортеров, которых не устраивают какие-то особенности нового стандарта. Целью стандартизации было создание единого набора слов (глоссария), чтобы можно было легко переносить программы с одного компьютера на другой (особенно если они сильно отличаются по ОС и железу, например ПК на интеловских процессорах и ZX Spectrum). Стандарт определяет минимальный набор обязательных слов и необязательный набор расширяющих слов, например ассемблер и слова из контролируемого списка, выполняющие точно определенные функции. К сожалению, в стандарте нет никаких указаний на такие важные компоненты, как числа, символьные строки, на организацию файлов данных (см. замечание выше). Концепции группы стандартизаторов частично были приведены в статье ее председателя У. Рэгсдейла: "Самой трудной задачей разработки языка является принятие решения о том, что следует отбросить. Стандартизаторы сталкиваются с задачей установления равновесия между практически полезными функциями и простейшими функциями, обеспечивающими пользователю возможность дополнить программные средства, чтобы решать прикладные задачи". В результате получилось так, что во всех поставляемых версиях Форта возникает необходимость в добавлении собственных функционально важных слов, что противоречит идее свободной переносимости программ между различными компьютерами. Почему же все-таки в Форт не включены слова для выполнения функций, безусловно предусмотренных в других языках программирования ? Частично это объясняется традиционными применениями языка, отчасти интересами группы FIG и многочисленных пользователей языка Форт, в особенности любителей, и частично возражениями группы по стандартизации. Во-первых, традиционной областью применения языка было управление установками в реальном масштабе времени, где Форт подходит наилучшим образом. Операции со строковыми данными, ввод и вывод чисел, работа с файлами, связь с операционной системой и другие качества здесь не столь важны, как при решении более практических задач, например при проведении инженерных расчетов или в деловой сфере. Во-вторых, основной задачей группы FIG было распространение простейшей версии языка FIGFORTH и, как отмечается в журнале FORTH Dimensions, большинство членов FIG проявляет интерес скорее к модификациям языка, чем к применению его в повседневной жизни, и поэтому не имеют побудительного толчка к снабжению Форта такими функциями. Наконец, группа стандартизации предоставляет пользователю возможность самому выполнить разработку дополнительных инструментальных средств, сведя к минимуму набор стандартных слов. При этом бремя разработки возлагается на пользователей и поставщиков промышленных версий языка, лишь в последние три года некоторые необходимые функции были введены в поставляемых реализациях Форта. ================ http://akps.ssau.ru forth@km.ru FidoNet SU.FORTH 2:5057/18.29 tel.: +7 8462 28 9910 (work), 15 4313 (home)
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.forth |
Отписаться
Вспомнить пароль |
В избранное | ||