A design that adds generic functions and types.
(Obviously for Go 1.17.) Why you might find this approach interesting: Type variable declarations are implicit Type arguments for functions are implicit Type variable constraints can be omitted for the empty interface Methods can be generic Operations are represented with generics as normal methods It can simplify the Go language specification Check out the More ideas section at the end for things beyond generics. Define comparison operations for all types For the types that don’t yet have them:
Jon Purdy: Furthermore, 1D languages require jumps for flow control, but since any graph can be embedded in three dimensions, languages of three or more dimensions can be written jump-free. An easy way to do this is to allow changing the direction of the instruction pointer rather than its position. Blew my mind.
My favorite computer science paper is Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs by John Backus. It struck me because it reflected my own thoughts on contemporary languages. I started to compile quotations from the paper, but found I was quoting more than not, so instead I’ll just give you a taste by quoting the very beginning. If this piques your interest, I highly recommend reading the paper; it’s very readable, insightful, and prophetic.
There are lots of great quotations from his essays. I’ll update here as I find new ones. From The Other Road Ahead: In the desktop software business, doing a release is a huge trauma, in which the whole company sweats and strains to push out a single, giant piece of code. Obvious comparisons suggest themselves, both to the process and the resulting product. and: When you release only one new version a year, you tend to deal with bugs wholesale.
Rasmus Lerdorf, the inventor of the programming language PHP, came to Cal Poly yesterday to give a two-hour lecture on PHP and related web technologies. I didn’t know anything about him, but I was pleased to find he’s a very intelligent, pragmatic, and humorous person. He spoke at length about the transition of PHP into an open source project, the evolution of the language, and some security and performance topics that I found very interesting.
Programming languages vary across a spectrum of expressiveness. By expressiveness, I mean the ability and ease by which you can express something in a particular language. For example, programming languages having closures are widely considered to be more expressive, and hence more powerful, than languages that lack this feature. I wonder if natural (human) languages also vary in expressive power and if so how this affects your thinking and personality. If you grew up learning the most expressive natural language of all, would that make you smarter than those who didn’t?