
Bootstrapping a Type System (2010) - lemming
http://journal.stuffwithstuff.com/2010/10/29/bootstrapping-a-type-system/
======
sargun
For those of you don't know, Bob Nystrom is the developer of Wren (wren.io),
and previous to it he developed Magpie (the language he's discussing), and
Finch ([http://finch.stuffwithstuff.com/](http://finch.stuffwithstuff.com/)).
He's pretty impressive as far as language development goes.

~~~
munificent
I don't know about _impressive_ , but I'm definitely profuse. :)

------
osd
I've read a few of this guys blog posts and they are generally fairly
interesting. This one a little less so, but I had a good chuckle from the line
about why he implemented generics in magpie. "Magpie has generics because I’m
firmly of the opinion that a type system without generics is about as useful
as a language with functions but no parameters." Let the go programmers pour
hate upon this blog post

~~~
mrkgnao
You can obviously write a code generator for all the functions you need once
you write an AI good enough: by eliminating extraneous features like generics,
Go leaves you free to actually solve problems that _matter_.

(/s)

Edit: I won't speak about the obvious, but anyone going back in my post
history and concluding "Haskell Evangelism Strikeforce with an axe to grind"
with a smirk is probably mistaken. There are well-designed languages whose
goals may not perfectly align with mine (hello C/Elm/Clojure) and then there
are some whose confusing inconsistency of design is, well ... confusing.

~~~
killin_dan
Funny enough, I think you've actually hit the nail on hm the head about what
makes go programmers so irritating, that they think the go spec has somehow
taken into account "the right way" for every possible problem. It's so
obnoxious.

Problems that actually matter is such a good indicator that someone has no
idea what they're talking about.

Formalization and proofing is what MATTERS. If you ain't got that, you're
basically just guessing

~~~
shakna
> Formalization and proofing is what MATTERS. If you ain't got that, you're
> basically just guessing

And that's what makes Haskell evangelists intolerable. (Even if Haskell isn't
your favourite language).

Go has it's place.

C has it too, especially on devices with > 32kb memory.

I adore Scheme and it's spec, it's expressiveness, and flexibility. Doesn't
mean I think it's the best language for running a game engine, though it has
been done.

We all have reasons we like our languages, and what they can be, and what
they're good for.

But no language is the be-all, and end-all, of languages. There are always
trade-offs. It just can't be helped.

Awk is amazing at dealing with small bits of information, quickly. It's a full
language, that has been used to write some large programs... But it isn't as
well suited to that. As a scripting language however, it's great.

Python is my go-to for prototyping. It can be a tad inconsistent, and more
verbose than my tastes, and weaker typing than I'd like, but it works well
enough.

Can't we all just get along?

~~~
Insanity
> C has it too, especially on devices with > 32kb memory.

Can I assume you mean, devices with < 32kb memory? Or is there another
language you would use on devices with such as small amount of memory instead
of C?

~~~
adrianratnapala
The local assembler? Fortran? Forth?

Personally I would prefer C. But I can see arguments for each of the above.

------
yuchi
I followed this blog for a long time. The whole journey of creating the Magpie
language is fantastic. Most of what I know as a senior dev comes from trying
to really understand his posts.

