4 ms·
A Review of Tiny Languages (2016)
- thunderbong 8y agoFirst time I'm hearing of TinyBasicPlus[0]. And this works on Arduino! My first program was in Basic. I'm just wondering - won't this be great to get kids started on? Not too much worrying about concepts or syntax? Just get your hands dirty and get the thrill of seeing hardware change when you write some software? [0] https://github.com/BleuLlama/TinyBasicPlus https://github.com/BleuLlama/TinyBasicPlus
- toolslive 8y agoNot according to the late Dijkstra: > whereas the teaching of BASIC should be rated as a > criminal offence: it mutilates the mind beyond recovery. http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EW...
- Lerc 8y agoThe world is full of excellent programmers who learned BASIC as a first language. I've met a few that believe Dijkstra but consider themselves the rare exception. It's worth noting that this was probably a quip and not a serious statement and Dijkstra probably took less stock in it than those who repeated the news as gospel.
- toolslive 8y agoMy first programming language was BASIC (C64) and I don't feel too damaged, but I exposed my children to Scratch.
- moron4hire 8y agoIt’s important to remember that Dijkstra was basically a forum troll before we really knew what forum trolls were. He was also fond of saying that computers cheapened computer science.
- zokier 8y agoSupporting only explicit line numbers and no labels (or named subroutines) seems bit too retro to my taste. Also peek and poke are unimplemented which is a shame.
- Lerc 8y agoI'm of a similar opinion. Peek and Poke would be the most trivial things to add. Converting from line numbers to labels a bit trickier. I'm not sure if I attempted it I would get annoyed and write my own. I kind of want to make a language from AVR assembly to have the full make it from scratch experience (and to be able to build and run it inside a browser with the emulator and assembler I made http://fingswotidun.com/avr/AvrAsm/Testbed/ http://fingswotidun.com/avr/AvrAsm/Testbed/ )
- moron4hire 8y agoI’ve done it before (converting BASIC from explicit line numbers to labels). It took about an hour.
- foobiekr 8y agoLine numbers have one benefit as basically the program is explicit about the program counter, at least conceptually, in a way.
- stevekemp 8y agoI wrote a simple BASIC interpreter in golang, and added a simple HTTP-server to allow you to write a program that would draw graphs/images: * https://blog.steve.fi/a_visual_basic_server.html https://blog.steve.fi/a_visual_basic_server.html * https://github.com/skx/gobasic/ https://github.com/skx/gobasic/ Pretty fun learning experience, but even with the browser-based input I'm not sure it's hands-on enough. Might be worth buying an old home computer and hooking it up to the TV!
- azhenley 8y agoPart 2: http://sustburbia.blogspot.com/2016/01/a-review-of-tiny-languages-part-2.html?m=1 http://sustburbia.blogspot.com/2016/01/a-review-of-tiny-lang... Part 3: http://sustburbia.blogspot.com/2016/02/a-review-of-tiny-languages-part-3.html?m=1 http://sustburbia.blogspot.com/2016/02/a-review-of-tiny-lang...
- peter303 8y agoI was under the impression that Forth was originally a tiny language on eight bit computers. Its stack-implented reverse polish syntax required few computer resources.
- mjw1007 8y agoForth was for 16-bit computers, and liked to do everything in 16-bit cells. (That's 16-bit in the sense of "PDP-11" or "IBM 1130", not in the sense of "Amiga or Atari ST", which very much didn't have a 16-bit memory space.)
- AnimalMuppet 8y agoWhat's your definition of a 16-bit memory space, that the PDP-11 had but the Amiga didn't?
- fallous 8y agoThe Amiga had 32 bit instructions and 24-bit address width (with a 16-bit bus width). The 1130 was 15-bit address space of 16-bit words.
- kens 8y agoFORTH predates eight bit computers; it was developed in 1968 on the low-end IBM 1130 computer. Carl Claunch (who I restore computers with) recently tracked down the original FORTH and got it running on his vintage 1130. This FORTH interpreter code is interesting because it is starts out by building FORTH primitives from 1130 machine code and ends up with an interactive FORTH console just a few pages later. Link: https://rescue1130.blogspot.com/2018/03/historical-recreationrestoration-of.html https://rescue1130.blogspot.com/2018/03/historical-recreatio... discussed a few months back on HN: https://news.ycombinator.com/item?id=16611505 https://news.ycombinator.com/item?id=16611505
- sephoric 8y agoI'm surprised Lua isn't in this list. It is excessively tiny both in its implementation and its runtime, and I have used it in multiple projects often just by throwing its whole source code right in. It's also very minimalist in spirit, allowing you to turn off every single built-in function, so that you can use it as a sort of turing-complete alternative to JSON as a configuration language. Very cool little language.
- zik 8y agoLua's very small by today's standards but it's huge compared to the languages being discussed here. Computers like the Altair 680 discussed here only had 1KB of ROM which is orders of magnitude away from being able to support Lua. Lua's minimum size is about 63KB. The "tiny" languages being discussed here are really, really tiny, and are also very limited in their capabilities compared to a language like Lua.
- zik 8y agoAnother language of this type was CHIP-8 [1] which was run on RCA 1802 based machines and the DREAM 6800 [2], an early Australian home computer which was built from a kit. CHIP-8 wasn't much of a language - it was really more of a simplified assembly language and virtual machine than anything - but it was certainly tiny. [1] https://en.wikipedia.org/wiki/CHIP-8 https://en.wikipedia.org/wiki/CHIP-8 [2] http://www.mjbauer.biz/DREAM6800.htm http://www.mjbauer.biz/DREAM6800.htm
- moron4hire 8y agoOne of my earliest VR demos was a BASIC interpreter, running on the screen of a 3D model of a Commodore PET. I wrote the interpreter specifical to run a proto-version of Oregon Trail that had been released in a magazine in the early 70s, OCRed in the really 2000s, and largely ignored for much of all that time. The interpreter was pretty easy because I already had a bunch of tokenizing code for rendering syntax highlighted code. This was all in WebVR, back when WebVR the DK2 was the only headset around. I have VR JavaScript code from that time that predates WebVR, running on a smartphone, in a cardboard box with lenses from before Google Cardboard was a thing. I do Unity3D VR now, back into my favorite language, C#. But I do miss a lot about that time. People were just happy anything worked. I didn't have to compete against huge corporations for attention. I didn't have people telling me I was reinventing the wheel, citing projects younger than mine. I didn't have to constantly justify my engineering decisions to someone much less experienced than me. I could just build and have fun. Now it's a job.
- _emacsomancer_ 8y agoIs picolisp ( https://picolisp.com/wiki/?home https://picolisp.com/wiki/?home ) too big to make this list?
- ahazred8ta 8y agoTheir MiniPicoLisp ( https://picolisp.com/wiki/?embedded https://picolisp.com/wiki/?embedded ) is smaller. (48kb dev tarball) Hard to beat http://wiki.c2.com/?ColorForth http://wiki.c2.com/?ColorForth at 2kb, though. O:-)