I'm interested in programming languages. When I was a kid, I'd get books on different languages out of the library, and sit and learn a language. I didn't get to write code in many of them, since this was before I owned a modem; all I had at home where BASIC, Z80 assembly language, Pascal, x86 assembler, then C and C++. But I devoured new languages whenever I could. When I came across FORTH I wrote my own implementation (although at the time I didn't get the metaprogramming stuff), since FORTH is easy to implement (it's a great bootstrapping language), and later on, I implemented a kind of Lisp as a scripting language for a game engine (except I used a Prolog-esque syntax, foo(bar,baz)
rather than (foo bar baz)
). I really wanted to play with the rich feature set of Ada, and the parallelism of occam. I studied COBOL and FORTRAN and found they didn't look much fun. I studied Smalltalk and found that it looked like great fun. Prolog was interesting, a radical departure, but I saw it as foolish to write whole programs in it - I felt it should be used as a database query language like SQL. It's Turing complete, but a large class of programs are ugly to write in it.
Read more »
Back in the day, Ken Thompson described a rather scary problem with the way programming languages are compiled.
In summary, one could modify the C compiler so that, when it compiled some security-critical application like sshd
, it inserted a security hole. The pristine sshd sources, when compiled, would produce a vulnerable executable. But then to protect the modification to the C compiler from being found, one can use the same trick on the compiler - make it insert the bugs into sshd and into itself when compiled from pristine sources. Compile this compiler up, then test it on its original sources, and when it's all working OK, install it on a system (and the bad sshd) and remove the dodgy sources. Clear your .bash_history
and you're done 😉
Read more »
S-expression based languages (eg, Lisps, and by a broader definition of s-expression, things like Prolog) use a single regular syntax to represent the parse tree of code, rather than having parsing rules for each syntactic construct in the language.
Read more »
I like this guy's thinking on programming language design. It aligns pretty closely with my own ideas, and has some good ideas on syntax that I might borrow for CHROME...
And the way he implemented Viaweb is pretty similar to how I might have.
I think I'm more a fan of object orientation than he is, but this might just be a matter of terminology. I'm more of a fan of generic functions and Haskell-style classes than Java's OO.
One technology I'd really quite like to play with is Multiprotocol Label Switching.
It's a network protocol, but one that doesn't entirely fit right in with the standard ISO model stack; it's a low-level packet switching protocol like IP, but it doesn't have a transport layer (TCP, etc) on top of it. It's just used to tunnel other protocols like IP and Ethernet over.
Read more »