Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[0]

Язык и операционная система

Необходимо написание новой книги по языку: существующие книги давно устарели, необходимо очень подробно, понятно и в то же время легко читаемо и без традиционной для российских книг зауми (самый rulez в этом плане Броуди) описать сложные технологии форт-программирования: написание ассемблеров, целевых компиляторов, форт-систем для специфических систем типа самодельных компьютеров и промышленных контроллеров, парсеров и синтаксических анализаторов, сложных расширений языка (например ООП), написание легко переносимых программ и т.п. Также думаю стоит большое внимание уделить современным технологиям в железе, особенно flex-технологии "гибкой логики" с использованием ПЛИС (CPLD, FPGA) и систем на кристалле (System on Chip, SoC).

Кто готов участвовать в проекте ? Не обязательно автором - нужны также самые начинающие для обкатки разделов начального обучения, рассказы о практическом применении форт-технологий.

Группа SynergyOS давно предлагала создать CD с коллекцией материалов по Форту - думаю он будет приложением к книге, там будет коллекция форт-систем для нескольких ОС, снимок этого сайта на момент выпуска диска, может быть фирмы, использующие Форт, тоже захотят включить туда свои материалы (копии сайтов, оценочные версии ПО, прайсы и рекламные материалы).

Делатся это все будет по той же лицензии, что и документация на Linux (вариант GNU GPL для документации). Проект уже лежит в CVS, желающих участвовать в редактировании книги welcome регистрироваться.


1 Введение

1.1 версия 1 © <forth@km.ru>

Язык программирования Форт1 широко известен многим современным хакерам, но не нашел широкого применения на обычных компьютерах. Объясняется это достаточно просто: язык первоначально был разработан как замена ассемблеру примерно в те же времена, что и язык C++2. Особенность Форта - система строилась как языковая среда, включающая компилятор, редактор, ассемблер, отладчик и средства операционной системы. Фактически классическая форт-система является полнофункциональной операционной системой3 со встроенным компилятором и командной оболочкой.

Несмотря на то, что форт-система требовала очень мало аппаратных ресурсов (всего несколько десятков Кб памяти), и язык достаточно полноценен, на обычных персоналках он большого применения не нашел. Для начинающих программистов к сожалению выбрали BASIC, хотя Форт еще проще и в то же время работает намного быстрее. Профессионалы предпочли использовать C++, так как они изучали его при своем обучении, и решили что синтаксис Форта плохо читаем. Основная сложность - язык Форт обладает уникальным свойством саморасширяемости, поэтому для понимания исходных кодов чужих программ нужно понять, как автор программы расширил язык.

Тем не менее во встраиваемых системах (системы управления различным оборудованием, робототехника, бортовое и наземное оборудование в космических исследованиях NASA) Форт до сих пор имеет достаточно широкое применение.

Если вы занимаетесь такими вещами как разработка различных цифровых систем и программного обеспечения для них, вы можете столкнуться с ситуацией, когда вас не будет устраивать по каким-либо причинам обычно используемый в таких случаях инструментарий. Этими причинами может оказаться его дороговизна, неудобство, отсутствие каких-либо утилит, или для вашего железа не оказалось готовой ОС, компилятора и библиотек.

В этом случае хорошим решением может быть использование языка Форт в качестве мощного макроассемблера или операционной системы.

К сожалению, последняя книга на русском языке вышла в 1993 году, существующей литературы очень мало и она явно устарела. С другой стороны, в ней совсем нет примеров практического использования Форта и сложных техник форт-программирования (целевой компиляции, ООП расширений, написания ассемблеров, откомментированных исходников форт-систем для различных платформ).

Очень часто возникают возражения типа "Форт слишком сложен в использовании", но он проще чем ассемблер, который до сих пор используют очень часто.

Цель написания этой книги - собрать разрозненную информацию по языку Форт и показать как можно использовать этот язык в качестве мощного средства для создания программного обеспечения встраиваемых систем. Эта задача достаточно сложна, учитывая то что я не форт-гуру, но к сожалению гуру не хватает времени (а чаще желания) писать качественную документацию. Надеюсь что они все же примут активное участие в написании этого руководства.

Буду очень рад, если кто-то захочет присоединится к работе над книгой: она изначально создавалась в on-line версии, для ее редактирования используется система управления контентом в виде CVS4-cepBepa и простейшего скрипта, генерирующего сайт [akps]. Все

1ФОРТ, Форт, Forth или FORTH

2Си или С++

3ОС или OS

4http: www.cvs.ru

версия 26 октября 2005 г.ФОРТ


мои работы по языку также рассылаются через список рассылки сотр.soft.prog.forth5. Для работы над книгой необходимо участие начаинающих осваивать язык для обкатки учебных разделов, людей использующих или наоборот не использующих Форт по каким-то причинам для написания разделов по практическому применению форт-технологий, и вообще присылайте любые ваши вопросы, комментарии и замечания - мне необходима обратная связь.

1.2версия 2 © <forth@km.ru>

Эта книга - попытка объединить несколько основных книг по языку Форт, выпущенных на русском языке. После 1995 года не было выпущено не одной книги об этом языке, но даже с учетом того что язык мало распространен6 и развивается очень медленно, эти книги все равно устарели.

Использовать Форт имеет смысл в достаточно узкой области, где используются маломощные компьютеры с очень небольшими объемами памяти (8- 16 -битные процессоры, десятки и сотни Кб ОЗУ). Язык очень низкоуровневый, поэтому если вам доступен полноценный компилятор C++, лучше использовать его, а не Форт.

Применять Форт можно в том случае, если не доступен готовый компилятор C++ - Форт отличается крайней простотой внутреннего устройства и синтаксиса, поэтому написать компилятор Форта можно буквально за полчаса (см. [akps]).

Еще один вариант использования Форта - в качестве операционной системы, написав интерактивную форт-систему. При этом вы получаете командный интерфейс, встроенный компилятор и набор runtime библиотек, объединенные в очень компактную операционную систему.

1.3Из [orange]

Материал книги построен для использования ее в качестве справочника так, чтобы охватить весь набор средств и приемов и полный перечень слов и функций языка. Кроме того, приведены примеры расширения языка и использования Форта в качестве средства разработки программ и как операционной системы.

И все же многие утверждают, что Форт труден для изучения. Для этого имеется несколько причин. Опытным программистам Форт зачастую дается труднее, чем новичкам, потому что он отличается от других языков программирования по самой своей природе. Хотя в языке Форт нет каких-либо присущих только ему сложностей, программисты с трудом отвыкают от переменных, подпрограмм, многословного текста на исходном языке, алгебраических обозначений и прочих атрибутов привычных им языков. Если вы знаете другие языки программирования, попробуйте к языку Форт подойти с полной отдачей. Освойте понятия стека и определения слов, прежде чем переходить к более сложным вопросам. Забудьте всякие предубеждения, которые у вас могут возникнуть, вроде того, что для хорошего языка программирования обязательно нужна операционная система и файловая поддержка. И не беспокойтесь о блок-схеме, начните с небольших задач, ваш опыт будет накапливаться постепенно. Форт может показаться трудным, так как это достаточно мощное средство программирования.

Действительно, все возможности языка изучить трудно, но все они и не потребуются, чтобы писать очень полезные программы. На Форте можно научиться писать программы на уровне хорошего программиста, пользующегося языками BASIC и FORTRAN, быстрее, чем на любом другом языке. Так же несложно программирование на форт-ассемблере

5http: www.subscribe.ru/lists/comp.soft.prog.forth

6хотя и широко известен



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]