Forth: Et underligt programmeringssprog. Her er hvorfor du muligvis elsker det.

Afsløring: Din support hjælper med at holde webstedet kørt! Vi tjener et henvisningsgebyr for nogle af de tjenester, vi anbefaler på denne side.


Forth er et usædvanligt sprog. Det er primært en tolk og har en kommandolinjegrænseflade, så den kan bruges i realtid. Men det har også evnen til at tage sæt sæt og kompilere den. Så det er noget af en hybrid.

På grund af dette bruges Forth ofte på hardware, der ikke har et traditionelt operativsystem. Det er også meget brugt til at kontrollere maskiner og er blevet brugt til rumforskning – også på Philae, sonden, der landede på kometen 67P / Churyumov – Gerasimenko.

Historie

Forth blev udviklet af Charles Moore startende i 1968, mens han udførte grafikprogrammering hos Mohasco Industries. Men den første komplette Forth-implementering kom først i 1971, da Moore oprettede et selvstændigt system til styring af 11-meter-teleskopet i US National Radio Astronomy Observatory (NRAO).

Tidligere versioner af Forth havde fanget programmeringssamfundets opmærksomhed. Men på dette tidspunkt blev det meget populært i astronomisamfundet. I 1973 grundlagde Moore derfor FORTH, Inc sammen med sine NRAO-kolleger Elizabeth Rather og Edward Conklin.

Virksomheden har portet programmet til mange forskellige systemer. Og FORTH fortsætter Inc med at være en vigtig virksomhed, der leverer Forth-relaterede produkter til folk i erhvervslivet, akademia og regeringen.

Oversigt over Forth

Der er en række unikke aspekter ved det forste programmeringssprog. Vi diskuterer de vigtigste her.

Forth funktioner

Forth tilbyder mange unikke funktioner:

  • Interaktiv programmering

  • Oprettelse af kompilerede udvidelser af det sprog, der kaldes “ord”

  • Stakke og omvendt polsk notation

  • Direkte forbindelse mellem bruger og hardware.

Omvendt polsk notation

Fremover foretager matematiske beregninger ved hjælp af omvendt polsk notation. Dette afhænger af, hvor man lagrer numre i en stak.

Overvej beregningen: 2 + 3. I Forth vil dette blive gjort ved at placere de 2 på stakken, derefter placere 3 på stakken og derefter tilføje dem. Dette ser sådan ud: 2 3 +.

Det virker lidt underligt, men det er lettere for computeren at analysere, fordi det er sådan computere rent faktisk foretager beregninger. Og når du først er vant til det som en koder, bliver det ganske naturligt.

Derudover er der ikke behov for parenteser. Overvej følgende to eksempler. (Bemærk: backslash-tegnet starter en kommentar.)

2 3 + 5 * Dette er det samme som (2 + 3) * 5
2 3 5 * + Dette er det samme som 2 + 3 * 5

I det første eksempel skubbes 2 på stakken efterfulgt af 3. Så 2 er nummer to i stakken og 3 er først. Operatøren “+” anvendes til de første to elementer i stakken. Dette fjerner disse to genstande fra stakken og efterlader 5 (2 + 3) oven på stakken.

Så skubber vi 5 ind på stakken. Det sætter en 5 i stakens første og anden position. Endelig anvender vi operatøren “*”, hvilket resulterer i, at 25 (5 * 5) placeres på toppen af ​​stakken.

I det andet eksempel placerer vi 2, 3 og 5 på stakken, så 5 er i den første position, 3 i den anden og 2 i den tredje. Derefter anvender vi operatøren “*” på de to øverste elementer i stakken (5 * 3), hvilket resulterer i, at 15 placeres på toppen af ​​stakken.

På dette tidspunkt er 15 i den første position og 2 i den anden position. Når + -operatøren anvendes, forlader den 17 (15 + 2) på toppen af ​​stakken.

Eksempel Program

Det følgende program er meget enkelt, men det demonstrerer meget af, hvad der foregår på sproget.

: OUTMATH Output en matematisk beregning
." Vi beregner nu: (2 + 3) * 5" CR
2 3 + 5 *
." Dette er lig med: " . CR;

OUTMATH

Den første ting dette program gør er at definere en funktion kaldet OUTMATH. Linjerne, der følger den, er en del af funktionen op gennem linjen, der ender med en semikolon. Den første linje udskriver teksten, “Vi beregner nu: (2 + 3) * 5” og følger den med en vognretur.

Den næste linje udfører beregningen, vi diskuterede ovenfor, hvilket resulterer i, at 25 placeres på toppen af ​​stakken. Den sidste linje i funktionen udsendes, “Dette er lig med:” efterfulgt af værdien øverst på stakken (repræsenteret med “.”) Og en vognretur.

Så kører vi simpelthen funktionen. Så når programmet kører, udsendes det:

Vi beregner nu: (2 + 3) * 5
Dette er lig med: 25

At lære forth

For de fleste programmører er dette en ny måde at tænke på. Men det er overraskende, hvor naturligt det ser ud, når du først begynder at arbejde med det. Her er nogle tutorials og bøger, der får dig til at arbejde med sproget.

Første tutorials

Der er masser af online-tutorials. Fordi Forth er mærkelig for ikke-Forth-programmerere på samme tid, at det er selvindlysende for de nuværende brugere, glanser mange af tutorials over ting, der kan være forvirrende for begyndere. Disse tutorials har ikke dette problem.

  • Easy Forth: denne korte eBog er en fremragende introduktion. Det er den eneste ulempe, at det ikke er stort med eksempler. Så tjek nogle af eksemplerne nedenfor.

  • En begynders vejledning til forth: dette er en anden god introduktion. Det er lidt mere teknisk, men har flere eksempler.

  • Og så videre …: dette er en meget grundig introduktion til Forth – næsten lige så god som en bog.

Forth Books

Det er ofte lettere at lære et nyt sprog ved at få en bog, der kan tage dig trin for trin gennem processen. Der er mange gode bøger om Forth – især tilbage til 1980’erne, da Forth virkelig startede. Her er en samling af de bedste og vigtigste.

  • Find Forth: Learning and Programming the Forth Language (1982) af Thom Hogan: dette er en god og kortfattet introduktion til Forth-sproget.

  • Starter Forth: En introduktion til det forste sprog og operativsystem for begyndere og professionelle (1982) af Leo Brodie: dette er en klassiker og en fantastisk måde at lære Forth på. Det er udsolgt, men brugte kopier er ikke svært at finde for lidt penge. Det er også gratis online. Avancerede forth-programmører vil måske tjekke Brodies nyere, Thinking Forth.

  • Forth Lite Tutorial (2014) af Juergen Pintaske: dette er en Kindle-baseret tutorial, der fokuserer på eksempler.

  • Programmering af et problemorienteret sprog: Forth – How the Internals Work (2014) af Charles Moore: dette er en Kindle-version af bogen, som Forths skaber skrev for længe siden. Det giver stadig stor indsigt i sproget, men er ikke det bedste valg til at starte med.

  • Forth Programmer’s Handbook (2007) af Elizabeth Rather og Edward Conklin: dette er en mere avanceret bog om Forth af de to andre Forth-pionerer. Se også Rather’s bog, Forth Application Techniques (2006).

Andre ressourcer

  • Forth Interest Group: dette websted har alle mulige interessante oplysninger, inklusive gamle historiske dokumenter. Desværre har det også en masse ødelagte links. Men det er stadig værd at tjekke ud.

  • Links til Forth-programmer: dette er en fantastisk samling af rigtige eksempelprogrammer som et regneark og en Sudoku-puslespil..

  • Forth Google Group: dette er en meget aktiv gruppe af Forth-brugere, der stiller og besvarer spørgsmål.

  • Forth Subreddit: dette er ikke et meget aktivt forum, men der er stadig kyndige mennesker på det.

Første implementeringer

Der har været en masse implementeringer af Forth gennem årene. Forth Interest Group har en lang Forth Compilers-side. Så hvis du tilfældigvis har en PDP-11-indstilling i din garage, kan du få en Forth-kompilator til det! Men for mere moderne systemer er her de mere almindelige muligheder.

bigFORTH

I midten af ​​1980’erne udviklede Dietrich Weineck, Georg Rehfeld og Klaus Schleisiek volksFORTH til 16-bit maskiner som 8086 IBM PC og 6502 Apple, Commodore og Atari maskiner.

Til sidst oprettede de en 32-bit version til den (16-bit bus) 68000-baserede Atari ST. Selvom volksFORTH gjorde fremskridt, døde projektet stort set (selvom det senere blev genstartet).

Bernd Paysan var tilstrækkeligt interesseret i denne version af volksFORTH (kaldet turboFORTH på det tidspunkt), dog at han gjorde det til grundlaget for bigFORTH.

Dens første version blev udgivet til Atari ST i 1990. I 1995 var bigFORTH blevet portet til 386, og i det følgende år var tilgængelig på Windows NT, OS / 2 og Linux.

Grafisk interface

På det tidspunkt begyndte Paysan at arbejde på MINOS. (Teknisk set er det “MINOS”, men det kaldes normalt blot “MINOS.”)

Det er en grafisk grænseflade til bigFORTH. Det er måske nemmest at tænke på det som “Visual bigFORTH” som Visual Basic, fordi det er mere eller mindre, hvad det er. Det blev først oprettet til X-Windows-systemet. Men det var snart også tilgængeligt for Windows.

Udviklingen på både bigFORTH og MINOS ser ud til at være stoppet omkring 2010. Imidlertid er de begge let tilgængelige og ganske nyttige (bigFORTH er ANSI-kompatibel). Faktisk er MINOS meget sjov at lege med.

bigFORTH ressourcer

Hvis du vil bruge bigFORTH eller endda udvikle det, har du alle de værktøjer, du har brug for:

  • Kildekode: dette er koden fra den sidste officielle udgivelse den 22. marts 2010, version 2.4.

  • Debian-pakke: en let installeret pakke til enhver Debian-baseret Linux-distribution (f.eks. Ubuntu, Mint). Det installeres i / usr / local / bin og inkluderer MINOS, selvom det kaldes xbigforth.

  • Windows-selvinstallerende eksekverbar: det samme som Debian-pakken, men for Windows. MINOS kaldes endda xbigforth.exe.

  • Dokumentation (PDF): denne næsten 300 sider bog fungerer som en tutorial og reference, skrevet af JL Bezemer. Meget af det er på generisk Forth og er hvad “Og så fremad …” er hentet fra.

  • Bernd Paysans hjemmeside: denne side har en masse interessante Forth-relaterede oplysninger og eksempler. Af særlig bemærkning er Paysans Forth-baserede markup-sprog.

  • bigFORTH-arkiv: den ultimative destination til alle dine bigFORTH-behov.

Gforth

Gforth er GNU-implementeringen af ​​Forth. Det har en markant stamtavle.

Gforth-projektet blev startet i 1992 af bigFORTH-skaberen Bernd Paysan og Anton Ertl med betydelige bidrag fra Jens Wilke.

Det var en kombination af bigFORTH og den meget ældre fig-FORTH (se nedenfor). Men historien om det er snoet, da bigFORTH kom fra volksFORTH, som var baseret på fig-FORTH.

Som et GNU-projekt er der blevet arbejdet meget med det, siden det startede. Det er nu helt ANSI-kompatibelt og har nået alle sine oprindelige mål. Den seneste version er 0.7.3 med den sidste post (af Paysan) den 25. februar 2013.

Med hensyn til gratis Forth-implementeringer er Gforth den mest anvendte. En del af det er bare fordi det er en del af GNU-projektet og dets tilgængelighed. Men det skyldes også, at det er kraftfuldt og hurtigt.

Gforth Ressourcer

Gforth har alle de ressourcer, du har brug for, til at bruge det til hvilken brug du har brug for:

  • Kildekode: denne side indeholder Gforth-kildekoden fra version 0.2.1 op til den aktuelle 0.7.3.

  • Debian-pakker: der er forskellige pakker til rådighed for Debian Linux-distributionen. Bemærk, at afhængigt af den valgte pakke, skal du muligvis installere en eller flere andre pakker først.

  • Windows selvinstallerende eksekverbar: dette er en tidligere (0.7.0) version af Gforth, men en hurtig måde at komme i gang.

  • Dokumentation (PDF): denne 250 siders bog gælder for version 0.7.0 af Gforth. Det er også tilgængeligt i HTML-format.

  • Gforth Repository: stort set alt hvad der er forbundet med Gforth kan findes her.

pbForth

pbForth ser ikke ud til at blive understøttet længere, men det er en så interessant implementering af Forth, at det er værd at tjekke.

Som vi har diskuteret, har Forth altid været forbundet med hardwarekontrol. Så det var slet ikke overraskende, at der blev oprettet en Forth-implementering til LEGO MINDSTORMS-robotik-sæt – specifikt den 16-bit RCX, der kom ud i 1998.

Det ser ud til aldrig at være blevet opdateret til at arbejde med den anden generation, NXT-serien, der kom ud i 2006, og heller ikke den nuværende MV3, der kom ud i 2013.

Selvom der ikke er noget officielt sted til pbForth, er det stadig muligt at lære om det og endda bruge det. Der kan dog være en stejl indlæringskurve, fordi der ikke er så meget information. Og klart, du har brug for en LEGO MINDSTORMS RCX (de er ikke så svære at finde brugt).

NXT bruger en helt anden (og 32-bit) processor, så pbForth ville bestemt ikke arbejde med den. Alligevel kan det være sjovt. Og hvis du har det, kan du tænke det til anden og tredje generations sæt.

pbForretlige ressourcer

Hvilke oplysninger der er tilgængelige på det normale internet er generelt stramme og linker altid til pbForth startsiden, som ikke har været i drift siden mindst 2010. Det er kun takket være Internetarkivet, at meget af dette er tilgængeligt.

  • LEGO Robotics historie: skønt ikke om pbForth, giver den en hurtig oversigt over LEGO MINDSTORMS produkter.

  • Introduktion til pbForth
    (PDF): denne 30-siders tutorial vil komme i gang med sproget.

  • phForth kildekode
    : Bemærk, at pbForth er skrevet på samlingssprog og Tcl, så du bliver nødt til at have disse værktøjer tilgængelige.

  • Windows GUI
    : Denne fil kører, selvom det kan være mere kompliceret at få den til at gøre noget. Hvis du vil have pbForth til Linux eller Mac, skal du bruge kildekoden.

  • phForth Startside Circa 2009
    : denne side indeholder links til en hel del interessant information om pbForth, især et halvt dusin prøveskript.

Andre implementeringer

  • fig-FORTH: dette var en af ​​de tidligste Forth-implementeringer, skabt af Forth Interest Group. Det er en 16-bit implementering. Det er tilgængeligt for nogle vidunderlige gamle computere som Data General Eclipse og Alpha Micro samt 8086- og 6502-baserede computere. Problemet er, at der ikke er nogen eksekverbare filer – bare samling sprogkode. Og i de fleste tilfælde er det kun bitmap-PDF-filer af koden. Den faktiske kode synes kun tilgængelig for 8088/8086, PDP-11 og 6800. (6800 er en 8-bit processor, så tilsyneladende var der en 8-bit version af fig-FORTH.)

  • SP-Forth: dette er en gratis Forth-implementering til Windows og Linux.

  • 4tH: dette er en let at bruge Forth-implementering, der er tilgængelig for en lang række hardware (inklusive Raspberry Pi), og inkluderer god dokumentation.

  • SwiftForth ™: dette er Forth-kompilatoren fra det originale firma, der bragte Forth til verden. Det er et kommercielt produkt, men det er rimeligt prissat.

Resumé

Forth er et fascinerende og utroligt nyttigt programmeringssprog. Det er især tilfældet, hvis du vil kontrollere hardware. Brug af ressourcerne her, skal du være på vej.

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