Voort: 'n vreemde programmeringstaal. Hier is die rede waarom jy dit miskien liefhet.
Forth is ‘n ongewone taal. Dit is hoofsaaklik ‘n tolk en het ‘n opdraglyn-koppelvlak sodat dit in reële tyd gebruik kan word. Maar dit het ook die vermoë om stelle kode te neem en op te stel. Dit is dus iets van ‘n baster.
As gevolg hiervan word Forth gereeld gebruik op hardeware wat nie ‘n tradisionele bedryfstelsel het nie. Dit word ook algemeen gebruik om masjinerie te beheer, en word ook in ruimtelike verkenning gebruik – selfs op Philae, die sonde wat op komeet 67P / Churyumov – Gerasimenko beland het.
2 Oorsig van Forth
2.1 Voorste funksies
2.2 Omgekeerde Poolse notasie
3 Leer verder
3.1 Die eerste tutoriale
3.2 Voorste boeke
3.3 Ander bronne
4.1.1 Grafiese koppelvlak
4.1.2 bigFORTH Hulpbronne
4.2.1 Gforth Resources
4.3.1 pbForth Resources
4.4 Ander implementerings
Forth is ontwikkel deur Charles Moore in 1968, terwyl hy grafiese programmering by Mohasco Industries gedoen het. Maar die eerste volledige implementering van die eerste kom eers in 1971, toe Moore ‘n selfstandige stelsel vir die beheer van die 11-meter-teleskoop by die US National Radio Astronomy Observatory (NRAO) skep.
Vroeër weergawes van Forth het die programmeergemeenskap se aandag getrek. Maar op hierdie punt het dit baie gewild geword in die sterrekunde-gemeenskap. Moore het dus in 1973 FORTH, Inc saam met sy NRAO-kollegas Elizabeth Rather en Edward Conklin gestig.
Die maatskappy het die program na baie verskillende stelsels oorgedra. En FORTH, Inc bly ‘n belangrike onderneming wat produkte met betrekking tot die handel in die handel, akademie en die regering aanbied.
Oorsig van Forth
Daar is ‘n aantal unieke aspekte van die Voorste programmeringstaal. Ons sal die belangrikste hier bespreek.
Forth bied baie unieke eienskappe:
Skep van saamgestelde uitbreidings van die taal genaamd “woorde”
Stapels en omgekeerde Poolse notasie
Direkte verbinding tussen gebruiker en hardeware.
Omgekeerde Poolse notasie
Daarna volg wiskundige berekeninge met behulp van Reverse Polish Notation. Dit hang af van die stoor van getalle in ‘n stapel.
Oorweeg die berekening: 2 + 3. In die eerste plek sou dit gedoen word deur die 2 op die stapel te plaas, dan 3 op die stapel te plaas en dan by te voeg. Dit sou so lyk: 2 3 +.
Dit lyk effens vreemd, maar dit is makliker vir die rekenaar om te ontleed, want dit is soos rekenaars eintlik berekenings doen. En sodra u daaraan gewoond is om ‘n kodeerder te wees, word dit heeltemal natuurlik.
Daarbenewens is daar geen behoefte aan hakies nie. Beskou die volgende twee voorbeelde. (Let wel: die terugslaan-karakter begin met kommentaar.)
2 3 + 5 * Dit is dieselfde as (2 + 3) * 5
2 3 5 * + Dit is dieselfde as 2 + 3 * 5
In die eerste voorbeeld word 2 op die stapel gedruk, gevolg deur 3. Dus is 2 tweede in die stapel en 3 eerste. Die “+” -operateur word op die eerste twee elemente van die stapel toegepas. Dit verwyder hierdie twee items uit die stapel en laat 5 (2 + 3) bo-op die stapel.
Dan druk ons ​​5 op die stapel. Dit plaas ‘n 5 in die eerste en tweede posisie van die stapel. Laastens gebruik ons ​​die “*” -operateur, wat beteken dat 25 (5 * 5) bo-op die stapel geplaas word.
In die tweede voorbeeld plaas ons 2, 3 en 5 op die stapel, sodat 5 in die eerste posisie is, 3 in die tweede, en 2 in die derde. Dan pas ons die “*” -operateur aan op die boonste twee elemente van die stapel (5 * 3), wat tot gevolg het dat 15 bo-op die stapel geplaas word.
Op hierdie punt is 15 in die eerste posisie en 2 in die tweede posisie. As die + -operateur toegepas word, laat dit 17 (15 + 2) bo-op die stapel.
Die volgende program is baie eenvoudig, maar dit demonstreer baie wat in die taal aangaan.
: OUTMATH Gee ‘n wiskundige berekening
." Ons sal nou bereken: (2 + 3) * 5" CR
." Dit is gelyk aan: " . CR;
Die eerste ding wat hierdie program doen, is om ‘n funksie met die naam OUTMATH te definieer. Die lyne wat daarop volg is deel van die funksie deur die lyn wat eindig met ‘n semikolon. Die eerste reël druk die teks uit: ‘Ons bereken nou: (2 + 3) * 5’ en volg dit met ‘n koets terug.
Die volgende reël voer die berekening uit wat ons hierbo bespreek het, en lei daartoe dat 25 bo-op die stapel geplaas word. Die laaste reël van die funksie word uitgereik, “Dit is gelyk aan:” gevolg deur die waarde bo-op die stapel (voorgestel deur “.”) En ‘n koets terug.
Dan voer ons die funksie eenvoudig uit. As die program dus loop, lewer dit die volgende uit:
Ons sal nou bereken: (2 + 3) * 5
Dit is gelyk aan 25
Vir die meeste programmeerders is dit ‘n nuwe manier van dink. Maar dit is verbasend hoe natuurlik dit lyk sodra u daarmee begin werk. Hier is ‘n paar tutoriale en boeke waarmee u met die taal kan werk.
Die eerste tutoriale
Daar is baie aanlyn-tutoriale. Omdat Forth vreemd is vir nie-Forth-programmeerders op dieselfde tyd dat dit vanselfsprekend is vir huidige gebruikers, is daar baie van die tutoriale oor dinge wat vir beginners verwarrend kan wees. Hierdie tutoriale het nie hierdie probleem nie.
Easy Forth: hierdie kort Ebook is ‘n uitstekende inleiding. Die enigste nadeel is dat dit nie baie voorbeelde is nie. Kyk dus na ‘n paar voorbeelde hieronder.
‘N Beginnersgids vir voorligting: dit is nog ‘n goeie inleiding. Dit is ‘n bietjie meer tegnies, maar het meer voorbeelde.
En So Forth …: dit is ‘n baie deeglike inleiding tot Forth – byna net so goed soos ‘n boek.
Dit is dikwels makliker om ‘n nuwe taal aan te leer deur ‘n boek te kry wat u stap vir stap deur die proses kan neem. Daar is ‘n hele paar goeie boeke oor Forth – veral wat dateer uit die 1980’s toe Forth regtig opgevaar het. Hier is ‘n versameling van die beste en belangrikste.
Ontdek Forth: Learning and Programming the Forth Language (1982) deur Thom Hogan: dit is ‘n goeie en bondige inleiding tot die Forth-taal.
Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals (1982) deur Leo Brodie: dit is ‘n klassieke en ‘n uitstekende manier om Forth te leer. Dit is uitgedruk, maar gebruikte eksemplare is nie moeilik om vir min geld te vind nie. Dit is ook gratis aanlyn. Advanced Forth-programmeerders wil dalk kyk na die meer onlangse, Thinking Forth, van Brodie.
Forth Lite Tutorial (2014) deur Juergen Pintaske: dit is ‘n Kindle-gebaseerde tutoriaal wat op voorbeelde fokus..
Programmering van ‘n probleemgerigte taal: Forth – How the Internals Work (2014) deur Charles Moore: dit is ‘n Kindle-weergawe van die boek wat Forth al lank gelede geskryf het. Dit bied steeds innige insigte in die taal, maar is nie die beste keuse om mee te begin nie.
Handboek van die Forth Programmer (2007) van Elizabeth Rather en Edward Conklin: dit is ‘n meer gevorderde boek oor die Forth deur die ander twee Forth-pioniers. Kyk ook na Rather se boek, Forth Application Techniques (2006).
Forth Interest Group: hierdie webwerf bevat allerhande interessante inligting, insluitend ou historiese dokumente. Ongelukkig het dit ook ‘n baie gebroke skakels. Maar dit is tog die moeite werd om na te gaan.
Skakels na programme: dit is ‘n wonderlike versameling regte voorbeelde soos ‘n sigblad en ‘n Sudoku-puzzeloplosser.
Forth Google Group: dit is ‘n baie aktiewe groep Forth-gebruikers wat vrae vra en beantwoord.
Forth Subreddit: dit is nie ‘n vreeslik aktiewe forum nie, maar daar is nog kundige mense daarop.
Daar is oor die jare heen heelwat implementerings van Forth gedoen. Die Forth Interest Group het ‘n lang Forth Compilers Page. As u toevallig ‘n PDP-11-omgewing in u motorhuis het, kan u ‘n Forth-samesteller daarvoor kry! Maar vir meer moderne stelsels is hier die meer algemene opsies.
In die middel 1980’s ontwikkel Dietrich Weineck, Georg Rehfeld en Klaus Schleisiek volksFORTH vir 16-bis-masjiene soos die 8086 IBM PC en die 6502 Apple-, Commodore- en Atari-masjiene.
Uiteindelik het hulle ‘n 32-bis-weergawe geskep vir die (16-bis-bus) 68000-gebaseerde Atari ST. Alhoewel volksFORTH vordering gemaak het, het die projek redelik baie gesterf (hoewel dit later weer begin is).
Bernd Paysan was voldoende geïnteresseerd in hierdie weergawe van volksFORTH (destyds turboFORTH genoem), maar dat hy dit die basis van bigFORTH gemaak het.
Die eerste weergawe daarvan is in 1990 vir die Atari ST vrygestel. Teen 1995 is bigFORTH na die 386 gestuur, en teen die volgende jaar was dit beskikbaar op Windows NT, OS / 2 en Linux..
Op daardie stadium het Paysan aan MINOS begin werk. (Tegnies is dit “MINOS”, maar dit word gewoonlik bloot “MINOS” genoem).
Dit is ‘n grafiese koppelvlak vir bigFORTH. Dit is miskien die maklikste om dit soos Visual Basic, soos Visual Basic, te beskou, want dit is min of meer wat dit is. Dit is die eerste keer geskep vir die X-Windows-stelsel. Maar dit was binnekort ook vir Windows beskikbaar.
Dit lyk asof die ontwikkeling van bigFORTH en MINOS rondom 2010 gestaak het. Dit is egter maklik beskikbaar en baie nuttig (bigFORTH voldoen aan ANSI). Trouens, MINOS is baie lekker om mee te speel.
As u bigFORTH wil gebruik of selfs daarvoor wil ontwikkel, sal u al die gereedskap hê wat u benodig:
Bronkode: dit is die kode van die laaste amptelike weergawe op 22 Maart 2010, weergawe 2.4.
Debian-pakket: ‘n maklik geïnstalleerde pakket vir enige Debian-gebaseerde Linux-verspreiding (bv. Ubuntu, Mint). Dit installeer in / usr / local / bin en bevat MINOS, hoewel dit xbigforth genoem word.
Self-installering van Windows uitvoerbaar: dieselfde as die Debian-pakket, maar vir Windows. MINOS word selfs xbigforth.exe genoem.
Dokumentasie (PDF): hierdie bykans 300 bladsy boek dien as tutoriaal en verwysing, geskryf deur JL Bezemer. Baie daarvan is op generiese Forth en is wat “And So Forth…” vandaan is.
Bernd Paysan se tuisblad: hierdie bladsy bevat baie interessante inligting en voorbeelde uit die voorgrond. Die belangrikste is dat Paysan se vierde-gebaseerde opmaaktaal is.
bigFORTH-bewaarplek: die uiteindelike bestemming vir al u bigFORTH-behoeftes.
Gforth is die GNU-implementering van Forth. Dit het ‘n uitstekende stamboom.
Die Gforth-projek is in 1992 begin deur die grootFORTH-skepper Bernd Paysan en Anton Ertl, met aansienlike bydraes deur Jens Wilke.
Dit was ‘n kombinasie van bigFORTH en die veel ouer vy-FORTH (sien hieronder). Maar die geskiedenis daarvan is verdraai, aangesien bigFORTH afkomstig is van volksFORTH, wat gebaseer was op fig-FORTH.
Aangesien dit ‘n GNU-projek is, word daar baie gewerk aan die werk sedert die aanvang daarvan. Dit voldoen nou aan ANSI en het al sy oorspronklike doelwitte bereik. Die nuutste weergawe is 0.7.3, met die laaste inskrywing (deur Paysan) op 25 Februarie 2013.
Wat die gratis implemente betref, is Gforth die algemeenste. ‘N Deel daarvan is net omdat dit deel is van die GNU-projek en die beskikbaarheid daarvan. Maar dit is ook omdat dit kragtig en vinnig is.
Gforth het al die hulpbronne wat u benodig om dit te benut wat u nodig het:
Bronkode: hierdie bladsy bevat die Gforth-bronkode van weergawe 0.2.1 tot die huidige 0.7.3.
Debian-pakkette: daar is verskillende pakkette beskikbaar vir die Debian Linux-verspreiding. Let daarop dat, afhangend van die pakket wat u kies, u moontlik een of meer ander pakkette moet installeer.
Self-installering van Windows uitvoerbaar: dit is ‘n vroeëre (0.7.0) weergawe van Gforth, maar ‘n vinnige manier om te begin.
Dokumentasie (PDF): hierdie boek van 250 bladsye is van toepassing op weergawe 0.7.0 van Gforth. Dit is ook beskikbaar in HTML-formaat.
Gforth-bewaarplek: omtrent alles wat met Gforth verband hou, kan hier gevind word.
Dit wil voorkom asof pbForth nie meer ondersteun word nie, maar dit is so ‘n interessante implementering van Forth dat dit die moeite werd is om na te gaan.
Soos ons bespreek het, is Forth nog altyd geassosieer met hardewarebeheer. Dit was dus glad nie verbasend dat ‘n Forth-implementering gemaak is vir die LEGO MINDSTORMS-robotkit nie – spesifiek die 16-bis RCX wat in 1998 uitgekom het.
Dit blyk dat dit nooit opgedateer is om saam met die tweede generasie NXT-reeks, wat in 2006 uitgekom het, te werk nie, en ook nie met die huidige MV3, wat in 2013 uitgekom het nie.
Alhoewel daar geen amptelike webwerf vir pbForth is nie, is dit steeds moontlik om daaroor te leer en dit selfs te gebruik. Daar kan egter ‘n steil leerkurwe wees, want daar is nie soveel inligting nie. En dit is duidelik dat u ‘n LEGO MINDSTORMS RCX nodig het (dit is nie so moeilik om te gebruik nie).
Die NXT gebruik ‘n heeltemal ander (en 32-bis) verwerker, so pbForth sou beslis nie daarmee werk nie. Dit kan tog lekker wees. En as u dit regkry, kan u dit moontlik na die tweede en derde generasie kits oordra.
Watter inligting op die normale internet beskikbaar is, is oor die algemeen kort en skakel altyd na die pbForth-tuisblad, wat sedert minstens 2010 nie in werking is nie. Dit is net te danke aan die internetargief dat baie hiervan beskikbaar is..
Geskiedenis van LEGO Robotics: hoewel dit nie oor pbForth gaan nie, bied dit ‘n vinnige oorsig van LEGO MINDSTORMS-produkte.
Inleiding tot pbForth
(PDF): hierdie tutoriaal van 30 bladsye begin met die taal.
phForth Source Code
: let op dat pbForth in samestellingstaal en Tcl geskryf is, dus u moet die instrumente beskikbaar hê.
: hierdie lêer werk, hoewel dit ingewikkelder kan wees om dit alles te doen. As u pbForth vir Linux of Mac wil hê, moet u die bronkode gebruik.
phForth Tuisblad Circa 2009
: hierdie bladsy bevat skakels na ‘n hele paar interessante inligting oor pbForth, veral ‘n half dosyn voorbeeldskrifte.
fig-FORTH: dit was een van die vroegste Forth-implementerings, geskep deur die Forth Interest Group. Dit is ‘n 16-bis implementering. Dit is beskikbaar vir ‘n paar wonderlike ou rekenaars soos die Data General Eclipse en die Alpha Micro, sowel as 8086- en 6502-gebaseerde rekenaars. Die probleem is dat daar geen uitvoerbare lêers is nie – net die samestelling van die taalkode. En in die meeste gevalle is daar slegs bitmap-PDF-lêers van die kode. Die werklike kode blyk slegs beskikbaar te wees vir 8088/8086, PDP-11 en 6800. (Die 6800 is ‘n 8-bis-verwerker; daar was blykbaar ‘n 8-bis-weergawe van fig-FORTH.)
SP-Forth: dit is ‘n gratis implementering vir Windows en Linux.
4tH: dit is ‘n maklike gebruikbare Forth-implementering wat beskikbaar is vir ‘n groot verskeidenheid hardeware (insluitend die Raspberry Pi), en bevat goeie dokumentasie.
SwiftForth ™: dit is die Forth-samesteller van die oorspronklike onderneming wat Forth na die wêreld gebring het. Dit is ‘n kommersiële produk, maar dit is redelik geprys.
Forth is ‘n fassinerende en ongelooflike nuttige programmeringstaal. Dit is veral waar as u hardeware wil beheer. As u die hulpbronne hier gebruik, moet u op pad wees.