I started with Applesoft Basic, which is what you got with an Apple //e.
If I could go back and choose a different language for myself that was widely available in the early 80's, along with a good book to go with it, I'd choose Pascal.
If I was starting today, and I'm not being pushed in a particular direction by some specific end goal (like native development for some particular platform).... I'm going with Groovy.
Why Groovy? Well...
As much as I'd like to think the right answer is Scheme, which I would then use to work my way through SICP, I think the truth is that I wouldn't stick with it.
I'd like to start with a strongly typed language, or something that can act like one. Groovy, if I pretend the keyword def doesn't exist, is close enough. I want to have to explicitly spell out what I'm doing, and have the compiler double-check me on it. I want the IDE support that strong typing helps enable. Speaking of which...
I want a reasonable IDE to work with. I'd be fine with Eclipse.
I want the various libraries that I'm likely to want to be built-in. If it's my first language, I don't want to mess around with package management.
I want well-organized API documentation. On that front, I like the online javadoc/groovydoc for whatever JDK version I'm using.
I would like reasonable built-in syntax for basic collection types. Lists and maps, for instance.
I would like to get started without needing to understand what's going on with lots of boilerplate. And without needing to understand and spell out packages for something as simple as a print statement. Looking at you Java...
I shouldn't have to know about backwards compatibility issues. And, cutting and pasting code should never lead to something bring broken because of issues with significant whitespace. Hi Python!
A REPL isn't a hard requirement, but it earns some bonus points.
The other option that I'd like to consider is Go, which I'm just getting to know. It seems like it has a lot going for it, but for now I don't know it well enough to feel comfortable choosing it over groovy.
You make a good argument! My experience with Groovy hasn't been great (mostly deciphering wild Gradle scripts) but I am always willing to give a JVM family member a chance :D
I started with Applesoft Basic, which is what you got with an Apple //e.
If I could go back and choose a different language for myself that was widely available in the early 80's, along with a good book to go with it, I'd choose Pascal.
If I was starting today, and I'm not being pushed in a particular direction by some specific end goal (like native development for some particular platform).... I'm going with Groovy.
Why Groovy? Well...
As much as I'd like to think the right answer is Scheme, which I would then use to work my way through SICP, I think the truth is that I wouldn't stick with it.
I'd like to start with a strongly typed language, or something that can act like one. Groovy, if I pretend the keyword def doesn't exist, is close enough. I want to have to explicitly spell out what I'm doing, and have the compiler double-check me on it. I want the IDE support that strong typing helps enable. Speaking of which...
I want a reasonable IDE to work with. I'd be fine with Eclipse.
I want the various libraries that I'm likely to want to be built-in. If it's my first language, I don't want to mess around with package management.
I want well-organized API documentation. On that front, I like the online javadoc/groovydoc for whatever JDK version I'm using.
I would like reasonable built-in syntax for basic collection types. Lists and maps, for instance.
I would like to get started without needing to understand what's going on with lots of boilerplate. And without needing to understand and spell out packages for something as simple as a print statement. Looking at you Java...
I shouldn't have to know about backwards compatibility issues. And, cutting and pasting code should never lead to something bring broken because of issues with significant whitespace. Hi Python!
A REPL isn't a hard requirement, but it earns some bonus points.
The other option that I'd like to consider is Go, which I'm just getting to know. It seems like it has a lot going for it, but for now I don't know it well enough to feel comfortable choosing it over groovy.
You make a good argument! My experience with Groovy hasn't been great (mostly deciphering wild Gradle scripts) but I am always willing to give a JVM family member a chance :D
Thanks! I do think that REPLs are great to learn syntax and single-statement and sequencing before building whole programs.