6 ms·
Slightly related to the "let's implement Lisp on weird languages/platform" theme, here's awklisp, a project that apparently helped/inspired Dipert to write Gher
by Morgawr 13y ago
Slightly related to the "let's implement Lisp on weird languages/platform" theme, here's awklisp, a project that apparently helped/inspired Dipert to write Gherkin: https://github.com/darius/awklisp https://github.com/darius/awklisp
- brudgers 13y agoIn 1983, the TRS-80 was a mainstream computer. BASIC was also a mainstream language - so was Assembly. Even a decade later, before the explosion of the internet, getting one's hands on a C compiler typically meant paying for a commercial implementation...probably on floppies and delivered over the shoe net.
- VLM 13y agoThis is true, but I think by the standards of the 2010s most of the defining characteristics of early 80s MSbasic would be considered really weird. Line numbers. Control flow exclusively by if/then and for/next. We Love GOTO (noobs probably don't know what a GOTO is or why some considered them harmful). No namespaces, everything was a giant global shared namespace where $T meant the same thing everywhere. No naming conventions for variables (like Hungarian or CamelCase). No one used revision control. No unit tests. No symbolic debuggers (they were coming, soon, and something like them existed for assembly, but this was 1983 and not-assembly). For better or worse, no REGEXes. No object orientation, pure procedural. Everything is in one file because quite a few people had no disk drive and relied on cassette tapes. Line editing was a little crude compared to modern vim/emacs and pretenders to the throne. No IDEs until Turbo Pascal and the like quite a few years later (Or was quickbasic first? Either way it would be a long time...) By modern standards MSBASIC is pretty weird.
- brudgers 13y agoBASIC is perhaps one of the less weird things about computing the early 80's. It was the high point for women studying computing in universities - well over a third of all computer science degrees were awarded to women: three times the ratio found today. [1] But more to your point, by the 1990's the idea that computer languages should be understandable by non-programmers with a reasonable education and a general familiarity with the principles of computing was dead. Think of CoBOL. If its approach hadn't been abandoned for the obfuscations of C++ and Perl, Eric Edwards wouldn't have written a book and gone on the lecture circuits to spread the gospel of ubiquitous language. There's a reason the unschooled learned HTML and PHP in the 1990's - they were accessible to moderately educated people and could do useful work in the same way that CoBOL and BASIC were by design. The TRS-80 ran a version of TinyBasic. The use of line numbers and GOTO allowed BASIC to run closer to the metal - GOTO 15 is an Assembly Language JUMP to the address of where ever the instruction on line 15 mapped by the assembler. Without it, BASIC would not have been such a successful path to a higher level programming language for serious programmers steeped in assembly language. GOTO is handy if you want to translate from Knuth's MIX without a lot of fuss. [1] http://en.wikipedia.org/wiki/Women_in_computing#The_Gender_Gap http://en.wikipedia.org/wiki/Women_in_computing#The_Gender_G...
- mikeash 13y agoMany older BASIC implementations are interpreted, and it looks like Tiny BASIC was as well: http://en.wikipedia.org/wiki/Tiny_BASIC http://en.wikipedia.org/wiki/Tiny_BASIC It's strange to look back and see just how popular virtual machines were at the time. BASIC typically used one, as did many other languages. Smalltalk is famous for using a virtual machine, for example. Microsoft's original Mac apps all ran bytecode in a virtual machine. It seems crazy, because these computers were already tremendously slow, relatively speaking, and adding a virtual machine makes it much worse. However, it was ultimately a useful tradeoff because these machines were even more limited on RAM than they were on CPU power, and using a virtual machine with bytecode that allowed for an efficient instruction encoding could save a lot of space. It doesn't matter how fast your code runs if it doesn't fit in RAM, after all.
- VLM 13y agoThe TRS-80 model III level 2 didn't run tinybasic anyway, it was licensed msbasic. Same as basica on dos. Applesoft basic was msbasic plus some graphics. Level 1 basic was pretty much a model I 1979 thing only. I believe level 1 was technically available for the M3, but... The article was more or less contemporary with the M4 which was 80 columns and used a licensed ldos instead of trsdos and I'm pretty sure was level2 basic only. So by the time of the article L1 basic was about two generations and 4 years out of date. Also I recall Radio Shack sold the L2 upgrade eprom for something ridiculous like $19 so a L1 only machine was probably a 1979 experience (before the release of L2) or somewhat unusual in not having been upgraded.
- brudgers 13y agoSpeed is of course relative. Interpreted BASIC is faster than working things out by hand. For something critical, Assembly Language was always available. On a TRS-80 Model 1, compiling means the compiler, the input and the output have to live in 4k of ram (or 16k in the later versions). Considering that the Level I TinyBasic interpreter lived on a 4kB ROM; Level II lived on a 12kB ROM; and Mass storage for most early machines was audio tape - not only slow but also notoriously prone to not loading files correctly, the compiling code would have been great for masochists, not so good for people who were just trying to get something done. And that's before considering the complexities of tuning a compiler to optimize code.
- ams6110 13y agoIIRC, Borland Turbo C was available by the mid/late 1980s, and was not too expensive.
- FigBug 13y agoLong ago I wrote a Scheme interpreter using Prolog. It's a horrible mess because I had no idea what I was doing. https://github.com/FigBug/scheme https://github.com/FigBug/scheme
- RBerenguel 13y agoYou should see some code I have written to parse a few English grammar subsets... That is messy, your code is extremely clean!