Will Faught

April 2022

Generics For Go

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:

design generics go languages technology types

Will Faught

28 minutes

April 2016

Frighteningly Ambitious Programming Language Ideas

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.

future ideas instruction languages pointer programming

Will Faught

1 minute

September 2010

John Backus

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.

coding john backus languages papers technology

Will Faught

2 minutes

August 2010

Paul Graham

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.

coding essays languages paul graham technology

Will Faught

3 minutes

February 2008

Rasmus Lerdorf Comes To Town

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.

cal poly javascript languages life php programming rasmus lerdorf reflections web yahoo yui

Will Faught

1 minute

October 2007

Expressiveness In Human Languages

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?

expressiveness human ideas languages life predispositions programming

Will Faught

1 minute