tarticle-tgtimes-embedded-forth.mw - tgtimes - The Gopher Times HTML git clone git://bitreich.org/tgtimes git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/tgtimes DIR Log DIR Files DIR Refs DIR Tags --- tarticle-tgtimes-embedded-forth.mw (5888B) --- 1 .SH tgtimes 2 Embedded Forth Programming 3 . 4 .PP 5 Big computers can run large and complex programming languages, 6 so what can small computer run? 7 . 8 .PP 9 Compiled languages, in particular those with a small runtime are often chosen. 10 But the interpreted languages also have an audience willing to code with their favorite programming environment for them. 11 Programming languages as big as Python have their embedded counterpart (MicroPython) thanks to significant efforts. 12 They serve their purpose to embedded enthusiasts as educational and scripting languages to many. 13 . 14 .PP 15 But small "language in a nutshell" are fitting right the small resources of microcontrollers. 16 This is the case of Forth and its stack-machine approach. 17 . 18 .IP Mecrisp Forth - http://mecrisp.sourceforge.net/ 19 This implementation immediately targets microcontrollers. 20 See for instance the work of librehacker.com author Christopher Howard. 21 .FS 22 gemini://gem.librehacker.com/gemlog/tech/20220331-0.gmi 23 gemini://gem.librehacker.com/gemlog/tech/20220305-0.gmi 24 .FE 25 . 26 .IP chipFORTH 27 Another implementation of Forth, which were used by NASA 28 .FS 29 https://www.forth.com/space-shuttle-instrumentation-interface/ 30 .FE 31 for improving reliability of its flight control system, 32 among the mosts critical pieces of software of a shuttle. 33 . 34 .IP https://github.com/corecode/forth 35 Among notable Forth projects is Simon "corecode" Schubert's nimble forth implementation 36 .FS 37 .FE 38 as well as hardware code describing the working of a CPU that executes Forth natively 39 .FS 40 https://github.com/corecode/forth-cpu 41 .FE 42 . 43 .IP https://forth.chat/ 44 If feeling like having a taste of Forth and Forth community, there are several channels 45 featuring forth that you could enjoy, 46 some of which are oriented toward hardware projects directly 47 .FS 48 ircs://irc.hackint.org/#forth-hardware-projects 49 .FE. 50 . 51 .IP https://github.com/chmykh/apl-life 52 This is Conway Game of Life in APL in Forth 53 What a long chain! It is APL programming language implemented in Forth, 54 and Conway game of life implemented in APL 55 . 56 .IP https://github.com/remko/waforth 57 Feeling like pushing the irony of "Web" assembly even further? 58 Why not blasting a Forth implementation at it? 59 .FS 60 https://el-tramo.be/waforth/ 61 https://el-tramo.be/thurtle/ 62 .FE 63 This proves Forth as the new programming language \fIen vogue\fR 64 . 65 .IP http://collapseos.org/ 66 What else does a programming language need to prove itself useful? 67 A kernel? Check! 68 Collapse OS 69 is an operating system targetted at resilience over nine thousands, 70 as it is designed to resist everything around it tearing apart, including the whole civilisation. 71 When nothing remains but wastelands, CollapseOS will be there to reborn from scavenged parts and 72 from old computers. 73 . 74 .QP 75 Forth is, to my knowledge, the most compact language allowing high level constructs. -- Collapse OS author. 76 . 77 .IP "gopher://retroforth.org/ https://retroforth.org/" 78 A forth implemented in C, Python, C#, Nim, JavaScript and Pascal! 79 .FS 80 .FE 81 The C version permits to embed the script into a binary along with the interpreter, 82 for a single-binary deployment process. 83 The more classic way to use it is to use shebangs scripts to have executable scripts. 84 . 85 .PP 86 Many smaller utilities can already provide something you needed: 87 . 88 .IP http://retroforth.org/examples/Casket-HTTP.retro.html 89 An HTTP server 90 . 91 .IP http://retroforth.org/examples/Atua-WWW.retro.html 92 A Gopher to HTTP+HTML Proxy on top of Atua. 93 . 94 .IP http://retroforth.org/examples/Atua.retro.html Gopher server 95 A gopher server, already listed on the Gopher index of links, the Gopher Lawn 96 .FS 97 bitreich.org/1/lawn/c/gopher.gph 98 .FE 99 . 100 .IP http://retroforth.org/examples/7080.retro.html 101 A s 102 . 103 .IP https://gitlab.com/goblinrieur/spreedsheet/ 104 A spreadsheet application in the terminal. 105 . 106 .IP gopher://forth.works:100 http://forthworks.com/ 107 This is a collection of code blocks written in the Retro Forth's author (crc) newest Forth implementation. 108 It is itself served by a gopher server (blocks 203-205 on the list above) in Forth. 109 . 110 .IP https://github.com/oriontransfer/pl0-language-tools 111 A PL/0 implementation in Python that can emmit Retro Forth code as ouput. 112 It looks like Forth simplicity, portability, stability and speed of execution made it a good candidate as a target language. 113 The PL/0 language is known for the book \fIAlgorithms + Data Structures = Programs\fR 114 from Niklaus Wirth, himself famous for the Wirth Law: 115 . 116 .QP 117 The hope is that the progress in hardware will cure all software ills. 118 However, a critical observer may observe that software manages to outgrow hardware in size and sluggishness. 119 -- https://en.wikipedia.org/wiki/Wirth's_law 120 . 121 .IP https://ribccs.com/candy/ 122 If you were doubting about Forth being fit for the industry, bear in mind that the above is 123 a very-large scale VFX Forth project with over a million lines of code! 124 . 125 .IP http://sam-falvo.github.io/kestrel/2016/03/29/vibe-2.2 126 Why not spin a vi-like text editor itself in forth? 127 See how few code it takes to implement one. 128 . 129 .IP https://git.sr.ht/~vertigo/shoehorn 130 An answer to the bootstrapping problem: how to get from no software to a complete system? 131 Which compiler compiles the first compiler? 132 Forth's simplicity is a good candidate for solving this problem. 133 . 134 .IP https://git.sr.ht/~vertigo/forthbox 135 Software environment for computers to base upon right after booting: 136 a system shell in forth with real hardware projects dedicated to it. 137 Think of a LISP machine, but instead being a Forth machine. 138 . 139 .IP http://deathroadtocanada.com/ 140 This video-game uses Forth as a scripting language. 141 When a whole scripting language fits on a thumb, putting it everywhere costs nothing! 142 . 143 .PP 144 Such a large tool chest for such a small language. 145 With the Covid, Wars under disguise, and other supply chain troubles, 146 the era of "more features" is coming to an end, 147 and the era of reliability rises. 148 In these trying times, anyone is welcome to go Forth.