Четвърто: Странен език за програмиране. Ето защо все пак може да го обичате

Разкриване на информация Вашата поддръжка помага за поддържането на сайта! Печелим такса за препращане за някои от услугите, които препоръчваме на тази страница.


Forth е необичаен език. Той е предимно интерпретатор и има интерфейс на командния ред, така че да може да се използва в реално време. Но той също има възможност да приема набори от код и да го компилира. Така че това е нещо хибридно.

Поради това Forth обикновено се използва за хардуер, който няма традиционна операционна система. Освен това се използва широко за управление на машини и се използва в космическите проучвания – дори и на Фила, сондата, която е кацнала върху комета 67P / Чурюмов – Герасименко.

история

Forth е разработен от Чарлз Мур, започващ през 1968 г., докато прави графично програмиране в Mohasco Industries. Но първото цялостно внедряване на Forth е чак през 1971 г., когато Мур създава самостоятелна система за управление на 11-метровия телескоп в Националната астрономическа обсерватория на САЩ (NRAO).

По-ранните версии на Forth бяха привлекли вниманието на програмната общност. Но в този момент тя стана много популярна в астрономическата общност. Така през 1973 г. Мур основава FORTH, Inc със своите колеги от NRAO Елизабет Ретър и Едуард Конклин.

Компанията пренася програмата в много различни системи. И FORTH, Inc продължава да е важна компания, предоставяща продукти, свързани с Forth, на хора от бизнеса, академичните среди и правителството.

Преглед на Forth

Съществуват редица уникални аспекти на езика за програмиране Forth. Тук ще обсъдим най-важните.

Четвърти функции

Forth предлага много уникални функции:

  • Интерактивно програмиране

  • Създаване на компилирани разширения на езика, наречен „думи“

  • Стекове и обратни полски нотации

  • Директна връзка между потребител и хардуер.

Обратна полска нотация

Четвърто прави математически изчисления, като използва обратната полска нотация. Това зависи от съхраняването на числа в стека.

Помислете за изчислението: 2 + 3. В Forth това ще стане, като поставите 2 в стека, след това поставите 3 върху стека и след това ги добавите. Това би изглеждало така: 2 3 +.

Изглежда малко странно, но е по-лесно компютърът да анализира, защото това е начинът, по който компютрите всъщност правят изчисления. И след като свикнете с него като кодер, това става съвсем естествено.

Освен това няма нужда от скоби. Разгледайте следните два примера. (Забележка: символът на обратната черта започва с коментар.)

2 3 + 5 * Това е същото като (2 + 3) * 5
2 3 5 * + Това е същото като 2 + 3 * 5

В първия пример 2 се натиска върху стека, последван от 3. Значи 2 е втори в стека и 3 е първи. Операторът „+“ се прилага към първите два елемента на стека. Това премахва тези два елемента от стека и оставя 5 (2 + 3) отгоре на стека.

След това натискаме 5 върху стека. Това поставя 5 на първа и втора позиция на стека. Накрая прилагаме оператора „*”, което води до поставяне на 25 (5 * 5) в горната част на стека.

Във втория пример поставяме 2, 3 и 5 върху стека, така че 5 е на първа позиция, 3 във втората и 2 в третата. След това прилагаме оператора “*” върху горните два елемента на стека (5 * 3), което води до поставяне на 15 в горната част на стека.

В този момент 15 е на първа позиция, а 2 е на второ. Когато се приложи операторът +, той оставя 17 (15 + 2) в горната част на стека.

Примерна програма

Следващата програма е много проста, но демонстрира много от случващото се на езика.

: OUTMATH Изведете математическо изчисление
." Сега ще изчислим: (2 + 3) * 5" CR
2 3 + 5 *
." Това е равно на: " . CR;

OUTMATH

Първото нещо, което прави тази програма, е да определи функция, наречена OUTMATH. Линиите, които го следват, са част от функцията нагоре през линията, която завършва с точка и запетая. Първият ред отпечатва текста, “Сега ще изчислим: (2 + 3) * 5” и го следваме с връщане на превоз.

Следващият ред изпълнява изчислението, за което говорихме по-горе, в резултат на което 25 са поставени в горната част на стека. Последният ред от функцията извежда „Това се равнява:“, последван от стойността в горната част на стека (представена с „.“) И връщане на каретата.

Тогава просто изпълняваме функцията. Така че, когато програмата работи, тя извежда:

Сега ще изчислим: (2 + 3) * 5
Това е равно на: 25

Учене нататък

За повечето програмисти това е нов начин на мислене. Но е изненадващо колко естествено изглежда, след като започнете да работите с него. Ето няколко урока и книги, които ще ви накарат да работите с езика.

Четвърти уроци

Има много онлайн уроци. Тъй като Forth е странно за програмистите, които не са Forth, в същото време, че е очевидно за настоящите потребители, много от ръководствата гласуват неща, които могат да бъдат объркващи за начинаещи. Тези уроци нямат този проблем.

  • Easy Forth: тази кратка електронна книга е отлично въведение. Единственият недостатък е, че не е голям в примери. Затова разгледайте някои от примерите по-долу.

  • Ръководство за начинаещи за Forth: това е още едно добро въведение. Тя е малко по-технична, но има повече примери.

  • И така Forth…: това е много задълбочено въведение към Forth – почти толкова добро, колкото и книга.

Четвърти книги

Често е по-лесно да научите нов език, като получите книга, която може да ви отведе стъпка по стъпка през процеса. Има много добри книги за Форт – особено от 80-те години, когато Форт наистина излита. Ето една колекция от най-добрите и най-важните.

  • Открийте Forth: Учене и програмиране на четвъртия език (1982) от Том Хоган: това е добро и сбито въведение към четвъртия език.

  • Starting Forth: Въведение в четвъртия език и операционна система за начинаещи и професионалисти (1982) от Лео Броуди: това е класически и чудесен начин да научите Forth. Изчерпано е, но използваните копия не е трудно да се намерят за малко пари. Освен това е онлайн безплатно. Разширените програмисти на Forth може би искат да проверят по-новата, Brodie Forth, Thinking Forth.

  • Forth Lite Tutorial (2014) от Юрген Пинташке: това е урок, базиран на Kindle, който се фокусира върху примери.

  • Програмиране на проблемно ориентиран език: Forth – Как работят вътрешните работи (2014) от Чарлз Мур: това е Kindle версия на книгата, която създателят на Forth е написал отдавна. Той все още дава добра представа за езика, но не е най-добрият избор за начало.

  • Наръчник за програмисти на Forth (2007) от Елизабет Ратер и Едуард Конклин: това е по-напреднала книга за Forth от другите двама пионери от Forth. Вижте и книгата на По-скоро, Техники за прилагане на четвърти (2006).

Други ресурси

  • Четвърта група по интереси: този сайт има всякакъв вид интересна информация, включително стари исторически документи. За съжаление, той също има много прекъснати връзки. Но все пак си струва да проверите.

  • Връзки към програми Forth: това е страхотна колекция от реални примерни програми като електронна таблица и решаване на пъзел Sudoku.

  • Четвърта група на Google: Това е много активна група от Forth потребители, които задават и отговарят на въпроси.

  • Forth Subreddit: това не е ужасно активен форум, но все още има хора, които знаят.

Четвърти Изпълнения

През годините имаше много реализации на Forth. Групата по интереси Forth има дълга страница на съставителя на Forth. Така че, ако случайно имате PDP-11 настройка в гаража си, можете да получите компилатор Forth за това! Но за по-модерните системи ето по-често срещаните опции.

bigFORTH

В средата на 80-те години Дитрих Вайнек, Георг Рефелд и Клаус Шлайзиек разработиха VolksFORTH за 16-битови машини като 8086 IBM PC и машините 6502 Apple, Commodore и Atari.

В крайна сметка те създадоха 32-битова версия за (16-битовата шина) 68000-базирана Atari ST. Въпреки че volksFORTH отбелязва напредък, проектът почти умира (въпреки че по-късно е рестартиран).

Бернд Песан беше достатъчно заинтересован от тази версия на volksFORTH (наричана тогава турбоФОРТ), но той я направи основата на bigFORTH.

Първата му версия е издадена за Atari ST през 1990 г. До 1995 г. bigFORTH е пренесен на 386, а през следващата година е наличен в Windows NT, OS / 2 и Linux.

Графичен интерфейс

В този момент Paysan започва работа по MINOS. (Технически това е „MINOS“, но обикновено се нарича просто „MINOS“.)

Това е графичен интерфейс за bigFORTH. Може би е най-лесно да го мислите като „Visual bigFORTH“ като Visual Basic, защото това е повече или по-малко от това. Той е създаден за първи път за системата X-Windows. Но скоро беше достъпен и за Windows.

Развитието както на bigFORTH, така и на MINOS изглежда е спряло около 2010 г. Въпреки това, те са лесно достъпни и доста полезни (bigFORTH е съвместим с ANSI). Всъщност MINOS е много забавно да се играе.

bigFORTH ресурси

Ако искате да използвате bigFORTH или дори да разработите за него, ще имате всички необходими инструменти:

  • Изходен код: това е кодът от последната официална версия на 22 март 2010 г., версия 2.4.

  • Debian Package: лесно инсталиран пакет за всяка базирана на Debian Linux дистрибуция (например Ubuntu, Mint). Той се инсталира в / usr / local / bin и включва MINOS, въпреки че се нарича xbigforth.

  • Windows Self-Installing Executable: същото като пакета Debian, но за Windows. MINOS дори е кръстен xbigforth.exe.

  • Документация (PDF): тази близо 300 страници книга действа като урок и справочник, написан от JL Bezemer. Голяма част от него е на родовия Forth и е взето от „И така Forth…“.

  • Начална страница на Бернд Песан: тази страница съдържа много интересна информация и примери, свързани с Forth. От особено значение е езикът за маркиране на базата на Paysan.

  • bigFORTH Repository: най-добрата дестинация за всичките ви bigFORTH нужди.

Gforth

Gforth е внедряването на GNU на Forth. Има отличено родословие.

Проектът Gforth е стартиран през 1992 г. от създателя на bigFORTH Бернд Песан и Антон Ертл, със съществен принос от Йенс Уилк.

Това беше комбинация от bigFORTH и много по-старата смокиня-FORTH (виж по-долу). Но историята на него е усукана, тъй като bigFORTH идва от volksFORTH, който се основаваше на fig-FORTH.

Като проект за GNU, от неговото начало е свършена голяма работа. Вече е напълно съвместим с ANSI и е постигнал всички първоначални цели. Най-новата версия е 0.7.3, като последният запис (от Paysan) е на 25 февруари 2013 г..

По отношение на безплатните реализации на Forth, Gforth е най-често използваният. Част от това е само защото е част от проекта GNU и неговата наличност. Но е и защото е мощен и бърз.

Gforth ресурси

Gforth разполага с всички ресурси, от които се нуждаете, за да го използвате на каквато и да е употреба:

  • Изходен код: Тази страница предоставя изходния код на Gforth от версия 0.2.1 до текущата, 0.7.3.

  • Пакети на Debian: има различни пакети за дистрибуцията на Debian Linux. Обърнете внимание, че в зависимост от избрания от вас пакет, може да се наложи първо да инсталирате един или повече други пакети.

  • Windows се инсталира самостоятелно: това е по-ранна (0.7.0) версия на Gforth, но бърз начин да започнете.

  • Документация (PDF): тази книга с 250 страници се отнася за версия 0.7.0 на Gforth. Предлага се и в HTML формат.

  • Gforth Repository: почти всичко, свързано с Gforth, можете да намерите тук.

pbForth

pbForth изглежда не се поддържа вече, но това е толкова интересно изпълнение на Forth, че си струва да проверите.

Както вече обсъждахме, Forth винаги е бил свързан с хардуерния контрол. Така че изобщо не беше изненадващо, че е създадена Forth реализация за комплект за роботика LEGO MINDSTORMS – по-точно 16-битовия RCX, който излезе през 1998 г..

Изглежда никога не е била актуализирана, за да работи с второто поколение, серията NXT, която излезе през 2006 г., нито със сегашния MV3, който излезе през 2013 г..

Въпреки че няма официален сайт за pbForth, все още е възможно да научите за него и дори да го използвате. Възможно е обаче да има стръмна крива на учене, защото няма толкова много информация. И ясно, ще ви е необходим LEGO MINDSTORMS RCX (те не са толкова трудни за намиране).

NXT използва напълно различен (и 32-битов) процесор, така че pbForth със сигурност не би работил с него. Все пак може да е забавно. И ако сте зависими от това, бихте могли да го приставите към комплекти от второ и трето поколение.

pbForth ресурси

Каквато информация е налична в нормалния интернет обикновено е кратка и винаги се свързва към началната страница на pbForth, която не работи от поне 2010 г. Голяма част от тази информация е благодарение на Интернет архива..

  • История на LEGO Robotics: въпреки че не се отнася за pbForth, той предоставя бърз преглед на продуктите на LEGO MINDSTORMS.

  • Въведение в pbForth
    (PDF): този 30-страничен урок ще започне с езика.

  • phForth Изходен код
    : обърнете внимание, че pbForth е написан на език за сглобяване и Tcl, така че ще трябва да имате тези инструменти на разположение.

  • Графичен интерфейс на Windows
    : този файл работи, въпреки че да го накарате да направи нещо може да е по-сложно. Ако искате pbForth за Linux или Mac, ще трябва да използвате изходния код.

  • phForth Начална страница Circa 2009
    : тази страница предоставя връзки към доста интересна информация за pbForth, най-вече към половин дузина примерни скриптове.

Други изпълнения

  • fig-FORTH: това беше една от най-ранните реализации на Forth, създадена от Forth Interest Group. Това е 16-битова реализация. Предлага се за някои прекрасни стари компютри като Data General Eclipse и Alpha Micro, както и компютри, базирани на 8086 и 6502. Проблемът е, че няма изпълними файлове – просто код на езика за сглобяване. И в повечето случаи само растерни PDF файлове на кода. Действителният код изглежда е достъпен само за 8088/8086, PDP-11 и 6800. (6800 е 8-битов процесор, така че очевидно имаше 8-битова версия на fig-FORTH.)

  • SP-Forth: това е безплатно внедряване на Forth за Windows и Linux.

  • 4tH: това е лесна за използване Forth реализация, която е достъпна за голям набор от хардуер (включително Raspberry Pi) и включва добра документация.

  • SwiftForth ™: това е компилаторът на Forth от оригиналната компания, който внесе Forth в света. Това е търговски продукт, но е на разумни цени.

резюме

Forth е завладяващ и невероятно полезен език за програмиране. Това е особено вярно, ако искате да контролирате хардуера. Използвайки ресурсите тук, трябва да сте на път.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map