Forth: Ett konstigt programmeringsspråk. Här är varför du kanske älskar det ändå.

Avslöjande: Ditt stöd hjälper till att hålla webbplatsen igång! Vi tjänar en remissavgift för några av de tjänster vi rekommenderar på denna sida.


Forth är ett ovanligt språk. Det är främst en tolk och har ett kommandoradgränssnitt så att det kan användas i realtid. Men det har också förmågan att ta uppsättningar med kod och sammanställa den. Så det är något av en hybrid.

På grund av detta används Forth ofta på hårdvara som inte har ett traditionellt operativsystem. Det används också ofta för att kontrollera maskiner och har använts vid rymdutforskning – även på Philae, sonden som landade på kometen 67P / Churyumov – Gerasimenko.

Historia

Forth utvecklades av Charles Moore från och med 1968 medan han gjorde grafikprogrammering på Mohasco Industries. Men den första fullständiga Forth-implementeringen kom inte förrän 1971, då Moore skapade ett fristående system för kontroll av 11-meters teleskopet vid US National Radio Astronomy Observatory (NRAO).

Tidigare versioner av Forth hade fått uppmärksamheten hos programmeringsgemenskapen. Men vid denna tidpunkt blev det mycket populärt inom astronominsamhället. Så 1973 grundade Moore FORTH, Inc med sina NRAO-kollegor Elizabeth Rather och Edward Conklin.

Företaget skickade programmet till många olika system. Och FORTH fortsätter Inc att vara ett viktigt företag som tillhandahåller Forth-relaterade produkter till människor i näringslivet, akademin och regeringen.

Översikt av Forth

Det finns ett antal unika aspekter på Forth-programmeringsspråket. Vi kommer att diskutera de viktigaste här.

Första funktioner

Forth erbjuder många unika funktioner:

  • Interaktiv programmering

  • Skapande av sammanställda tillägg av det språk som kallas “ord”

  • Buntar och omvänd polsk notation

  • Direkt anslutning mellan användare och hårdvara.

Omvänd polsk notation

Först gör matematiska beräkningar med omvänd polsk notation. Detta beror på att lagra nummer i en bunt.

Tänk på beräkningen: 2 + 3. I Forth skulle detta göras genom att placera de 2 på bunten, sedan placera 3 på bunten och sedan lägga till dem. Det här ser ut så här: 2 3 +.

Det verkar lite konstigt, men det är lättare för datorn att analysera, eftersom det här är hur datorer faktiskt gör beräkningar. Och när du vant det som en kodare blir det ganska naturligt.

Dessutom finns det inget behov av parenteser. Tänk på följande två exempel. (Obs: backslash-karaktären startar en kommentar.)

2 3 + 5 * Detta är samma som (2 + 3) * 5
2 3 5 * + Detta är samma som 2 + 3 * 5

I det första exemplet trycks 2 på bunten följt av 3. Så 2 är tvåa i bunten och 3 är först. Operatören “+” tillämpas på de två första elementen i stacken. Detta tar bort dessa två föremål från bunten och lämnar 5 (2 + 3) ovanpå bunten.

Sedan trycker vi 5 på bunten. Det sätter en 5 i stackens första och andra position. Slutligen tillämpar vi operatören “*”, vilket resulterar i att 25 (5 * 5) placeras på toppen av bunten.

I det andra exemplet placerar vi 2, 3 och 5 på bunten, så att 5 är i det första läget, 3 i det andra och 2 i det tredje. Sedan tillämpar vi operatören “*” på de två översta elementen i bunten (5 * 3) vilket resulterar i att 15 placeras på toppen av bunten.

Vid denna punkt är 15 i det första läget och 2 i det andra läget. När + -operatören appliceras lämnar den 17 (15 + 2) på toppen av bunten.

Exempel Program

Följande program är mycket enkelt, men det visar mycket av det som händer på språket.

: OUTMATH Mata ut en matematisk beräkning
." Vi beräknar nu: (2 + 3) * 5" CR
2 3 + 5 *
." Detta är lika med: " . CR;

OUTMATH

Det första detta program gör är att definiera en funktion som heter OUTMATH. Raderna som följer den är en del av funktionen upp genom linjen som slutar med en semikolon. Den första raden skriver ut texten, “Vi kommer nu att beräkna: (2 + 3) * 5” och följer den med en vagnretur.

Nästa rad utför beräkningen som vi diskuterade ovan, vilket resulterar i att 25 placeras på toppen av bunten. Den sista raden i funktionen matar ut, “Detta är lika med:” följt av värdet på toppen av bunten (representerat av “.”) Och en vagnretur.

Då kör vi helt enkelt funktionen. Så när programmet körs, matar det ut:

Vi beräknar nu: (2 + 3) * 5
Detta är lika med: 25

Lärande framåt

För de flesta programmerare är detta ett nytt sätt att tänka på. Men det är förvånande hur naturligt det verkar när du börjar arbeta med det. Här är några tutorials och böcker som får dig att arbeta med språket.

Första handledning

Det finns många online-tutorials. Eftersom Forth är konstigt för icke-Forth-programmerare samtidigt som det är självklart för nuvarande användare, gloser många av tutorials över saker som kan vara förvirrande för nybörjare. Dessa tutorials har inte det här problemet.

  • Easy Forth: denna korta Ebook är en utmärkt introduktion. Det är bara nackdelen att det inte är stort på exempel. Så kolla in några av exemplen nedan.

  • En nybörjarhandbok för detta: detta är en annan bra introduktion. Det är lite mer tekniskt, men har fler exempel.

  • And So Forth …: detta är en mycket grundlig introduktion till Forth – nästan lika bra som en bok.

Forth Books

Det är ofta lättare att lära sig ett nytt språk genom att få en bok som kan ta dig steg för steg genom processen. Det finns många bra böcker om Forth – särskilt från 1980-talet, då Forth verkligen tog fart. Här är en samling av de bästa och viktigaste.

  • Upptäck Forth: Learning and Programming the Forth Language (1982) av Thom Hogan: detta är en bra och kortfattad introduktion till Forth-språket.

  • Starta Forth: En introduktion till Forth Language and Operating System for Beginners and Professionals (1982) av Leo Brodie: detta är en klassiker och ett bra sätt att lära sig Forth. Det är utskrivet men använda kopior är inte svåra att hitta för lite pengar. Det är också gratis online. Advanced Forth-programmerare kanske vill kolla in Brodys senaste, Thinking Forth.

  • Forth Lite Tutorial (2014) av Juergen Pintaske: detta är en Kindle-baserad självstudie som fokuserar på exempel.

  • Programmera ett problemorienterat språk: Forth – How the Internals Work (2014) av Charles Moore: detta är en Kindle-version av boken som Forths skapare skrev för länge sedan. Det ger fortfarande mycket inblick i språket, men är inte det bästa valet att börja med.

  • Forth Programmer’s Handbook (2007) av Elizabeth Rather och Edward Conklin: detta är en mer avancerad bok om Forth av de andra två Forth-pionjärerna. Se även Rather’s book, Forth Application Techniques (2006).

Andra resurser

  • Forth Interest Group: den här webbplatsen har alla typer av intressant information inklusive gamla historiska dokument. Tyvärr har den också en hel del trasiga länkar. Men det är fortfarande värt att kolla in.

  • Länkar till Forth-program: detta är en fantastisk samling verkliga exempelprogram som ett kalkylblad och en Sudoku-pussellösare.

  • Första Google-gruppen: detta är en mycket aktiv grupp med användare som ställer och svarar på frågor.

  • Forth Subreddit: detta är inte ett oerhört aktivt forum, men det finns fortfarande kunniga människor på det.

Första implementeringar

Det har gjorts många implementeringar av Forth under åren. Forth Interest Group har en lång Forth Compilers-sida. Så om du råkar ha en PDP-11-inställning i ditt garage, kan du få en Forth-kompilator för det! Men för mer moderna system är här de vanligaste alternativen.

bigFORTH

I mitten av 1980-talet utvecklade Dietrich Weineck, Georg Rehfeld och Klaus Schleisiek volksFORTH för 16-bitars maskiner som 8086 IBM PC och 6502 Apple, Commodore och Atari maskiner.

Så småningom skapade de en 32-bitarsversion för den (16-bitars buss) 68000-baserade Atari ST. Trots att volksFORTH gjorde framsteg dog projektet ganska mycket (även om det senare startades om).

Bernd Paysan var tillräckligt intresserad av denna version av volksFORTH (kallad turboFORTH då) men att han gjorde det till grunden för bigFORTH.

Dess första version släpptes för Atari ST 1990. År 1995 hade bigFORTH porterats till 386, och året efter var tillgängligt på Windows NT, OS / 2 och Linux.

Grafiskt gränssnitt

Vid den tidpunkten började Paysan arbeta med MINOS. (Tekniskt sett är det “MINOS”, men det kallas normalt bara “MINOS.”)

Det är ett grafiskt gränssnitt för bigFORTH. Det kan vara lättast att tänka på det som “Visual bigFORTH” som Visual Basic, för det är mer eller mindre vad det är. Det skapades först för X-Windows-systemet. Men det var snart tillgängligt för Windows också.

Utvecklingen på både bigFORTH och MINOS verkar ha slutat runt 2010. Men de är båda lättillgängliga och ganska användbara (bigFORTH är ANSI-kompatibel). Faktum är att MINOS är mycket roligt att spela med.

bigFORTH Resurser

Om du vill använda bigFORTH eller till och med utveckla för det har du alla verktyg du behöver:

  • Källkod: det här är koden från den senaste officiella utgåvan den 22 mars 2010, version 2.4.

  • Debian-paket: ett enkelt installerat paket för alla Debian-baserade Linux-distributioner (t.ex. Ubuntu, Mint). Det installeras i / usr / local / bin och inkluderar MINOS, även om det kallas xbigforth.

  • Windows självinstallerande körbart: samma som Debian-paketet, men för Windows. MINOS heter till och med xbigforth.exe.

  • Dokumentation (PDF): denna nästan 300 sidor bok fungerar som en tutorial och referens, skriven av JL Bezemer. Mycket av det är på generisk Forth och är vad “And So Forth …” är hämtat från.

  • Bernd Paysans hemsida: den här sidan har mycket intressant information och exempel på Forth. Särskilt anmärkning är Paysans Forth-baserade markeringsspråk.

  • bigFORTH-förvaret: den ultimata destinationen för alla dina bigFORTH-behov.

gforth

Gforth är GNU-implementeringen av Forth. Den har en utmärkt stamtavla.

Gforth-projektet startades 1992 av bigFORTH-skaparen Bernd Paysan och Anton Ertl, med betydande bidrag från Jens Wilke.

Det var en kombination av bigFORTH och den mycket äldre fig-FORTH (se nedan). Men historien är tvinnad, eftersom bigFORTH kom från volksFORTH, som var baserat på fig-FORTH.

Som ett GNU-projekt har mycket arbete gjorts sedan det startade. Den är nu helt ANSI-kompatibel och har uppnått alla sina ursprungliga mål. Den senaste versionen är 0.7.3, med den senaste posten (av Paysan) den 25 februari 2013.

När det gäller gratis Forth-implementeringar är Gforth det vanligaste. En del av det är bara för att det är en del av GNU-projektet och dess tillgänglighet. Men det beror också på att det är kraftfullt och snabbt.

Gforth resurser

Gforth har alla resurser du behöver för att använda den till vilken användning du behöver:

  • Källkod: den här sidan innehåller källkoden Gforth från version 0.2.1 upp till den aktuella, 0.7.3.

  • Debian-paket: det finns olika paket tillgängliga för Debian Linux-distributionen. Observera att beroende på vilket paket du väljer kan du behöva installera ett eller flera andra paket först.

  • Windows självinstallerande körbart: detta är en tidigare (0.7.0) version av Gforth, men ett snabbt sätt att komma igång.

  • Dokumentation (PDF): denna 250-sidiga bok gäller version 0.7.0 av Gforth. Det finns också i HTML-format.

  • Gforth Repository: ganska mycket allt relaterat till Gforth kan hittas här.

pbForth

pbForth verkar inte stöds längre, men det är en så intressant implementering av Forth att det är väl värt att kolla in.

Som vi har diskuterat har Forth alltid varit associerat med hårdvarukontroll. Så det var inte alls överraskande att en Forth-implementering skapades för LEGO MINDSTORMS-robotkit – specifikt 16-bitars RCX som kom ut 1998.

Det verkar aldrig ha uppdaterats för att arbeta med den andra generationen, NXT-serien, som kom ut 2006, inte heller med den nuvarande MV3, som kom ut 2013.

Även om det inte finns någon officiell webbplats för pbForth är det fortfarande möjligt att lära sig om det och till och med använda det. Det kan dock finnas en brant inlärningskurva, för det finns inte så mycket information. Och helt klart, du skulle behöva en LEGO MINDSTORMS RCX (de är inte så svåra att hitta).

NXT använder en helt annan (och 32-bitars) processor, så pbForth skulle verkligen inte fungera med den. Ändå kan det vara kul. Och om du håller på med det, kan du tänka port den till andra och tredje generationens satser.

pbForth Resources

Vilken information som finns tillgänglig på det vanliga internet är i allmänhet snäv och länkar alltid till pbForth-hemsidan, som inte har varit i drift sedan minst 2010. Det är bara tack vare Internetarkivet att mycket av detta är tillgängligt.

  • LEGO Robotics historia: även om det inte handlar om pbForth, ger det en snabb översikt över LEGO MINDSTORMS-produkter.

  • Introduktion till pbForth
    (PDF): den här 30-sidiga tutorialen kommer igång med språket.

  • phForth källkod
    : Observera att pbForth är skrivet på monteringsspråk och Tcl, så du måste ha dessa verktyg tillgängliga.

  • Windows GUI
    : den här filen körs, även om det kan vara mer komplicerat att få den att göra vad som helst. Om du vill ha pbForth för Linux eller Mac måste du använda källkoden.

  • phForth Startsida Circa 2009
    : den här sidan innehåller länkar till en hel del intressant information om pbForth, särskilt ett halvt dussin provskript.

Andra implementeringar

  • fig-FORTH: detta var en av de tidigaste Forth-implementeringarna, skapade av Forth Interest Group. Det är en 16-bitars implementering. Det är tillgängligt för några underbara gamla datorer som Data General Eclipse och Alpha Micro samt 8086- och 6502-baserade datorer. Problemet är att det inte finns några körbara filer – bara monteringsspråkkod. Och i de flesta fall är det bara bitmapps-PDF-filer med koden. Faktisk kod verkar endast tillgänglig för 8088/8086, PDP-11 och 6800. (6800 är en 8-bitars processor, så det var tydligen att det fanns en 8-bitarsversion av fig-FORTH.)

  • SP-Forth: detta är en gratis Forth-implementering för Windows och Linux.

  • 4tH: detta är en lättanvänd Forth-implementering som är tillgänglig för ett stort utbud av hårdvara (inklusive Raspberry Pi), och innehåller bra dokumentation.

  • SwiftForth ™: detta är Forth-kompilatorn från det ursprungliga företaget som förde Forth till världen. Det är en kommersiell produkt, men den är rimligt prissatt.

Sammanfattning

Forth är ett fascinerande och otroligt användbart programmeringsspråk. Det gäller särskilt om du vill styra hårdvara. Med resurserna här bör du vara på väg.

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