2023-01-16

spwnn - go!

My 1980-ish version of spwnn was written in Lisp, cause that's what I was doing a lot of at the time.  And the neurons are ... lists.

Then the version of spwnn in 2000-ish was written in C/C++ (mostly C I imagine), because that's what I was doing at the time.

When it came time to start on the "final" version I chose a language I wanted to learn - Go.

I chose Go because it was designed by the same minds behind C and I really liked the idea of goroutines.



From some notes, I see I did a serial version of spwnn in 2016, and it wasn't until my programming retreat in 2018 that I upgraded it to the parallel version.

Aside from a few tiny programs for testing features and APIs, this is my only Go program (okay, more like a family of programs).

My only complaint about Go so far is modules.  I understand the problems the system is meant to solve but it reminds me of a story in The Mythical Man-Month about the job control language (JCL) for the 360 series of computers.  Nobody liked that job control on previous products was several languages and confusing, so they decided they would have one language.  Unfortunately, the result was all of those languages got merged into one gigantic language where the only difference from before was that you prefixed everything with "JCL".

I also don't like that when I upgraded from Go 1.9 to 1.18 my code wouldn't compile. In fact, in Go 1.9 some external libraries stopped working after a couple of years because they depended on modules and versions and shit I didn't understand.

If my use of modules is all wrong, it's because I didn't want to learn another language.


No comments:

Post a Comment