Would you say it would be a great first language?
I'm not considering the learning curve, but the way the lang is designed to learn programming basics. Most say C is super solid. Although, I've heard C++ is good, too.
My first language was BASIC, which I think was a good place to start. It's more important to have fast feedback when you're first starting out (IMO) to get you hooked. So I would recommend an interpreted language over a compiled one, just because you can get the immediacy in a read-evaluate-print loop (REPL) where you type something and it causes something to happen.
Also, the "batteries included" nature of most popular interpreted languages means that you're going to find it easier to do things off the bat, not trying to figure out how and what to include.
I can't say I'm a C++ dev, because it's been well over a decade since I last wrote any, so maybe the STL and whatever exists now has a batteries included approach, so perhaps that's not a concern.
But for the basic concepts I'd start with a language that outputs comprehensible errors and doesn't make you wait to find out when you make a mistake.
but the way the lang is designed to learn programming basics.
"Programming Languages" are designed to represent programs that can get "stuff done" - not to teach programming basics - unless of course the language is expressly designed to "teach programming basics".
In general, we believe that the HTDP project has validated the usefulness of functional programming and functional programming languages in the first programming course. We have found that teaching Scheme for Schemeβs sake (or Haskell for Haskellβs sake) wonβt work. Combining SICP with a GUI-based development environment for Scheme wonβt work better than plain SICP. The two keys to our success were to tame Scheme into teaching languages that beginners can handle and to distill well-known functional principles of programming into generally applicable design recipes. Then we could show our colleagues that a combination of functional programming as a preparation for a course on object-oriented programming is an effective and indeed superior alternative to a year on just C++, Java, or a combination.
We are hoping that other functional communities can replicate our success in different contexts. We suggest, however, that using plain Erlang, Haskell, or ML and that teaching programming in these languages implicitly will not do. We all need to understand the role of functional programming in our curricula and the needs of our students. (p.13)
The advantage of Python is that it's quite a "broad church" language, supporting many different approaches to solving a problem - but it's also very consistent.
There are some things it won't teach you, most notably generics/templates (which are different, but similar, capabilities), but generally most concepts in other imperative languages exist in Python (and there are a few functional techniques about as well).
The lack of special-casing and "gotchas" makes it very simple to work with and explore, though, and things like Jupyter (a sort of web-based super-REPL) help things further.
Moving on from there, C++ is a great language to understand because it has both very low level elements to it and high level constructs built on top - allowing you do dig very deeply into how things like coroutines or containers actually work if you need to.
I have no experience in using it, but as far as I've seen some code, I've liked the syntax of it π Very intuitive and easy to read for those starting out π
There used to be quite a number of languages designed for teaching - BASIC was one (designed by, amongst others, a nun), and Pascal was another. Universities and schools seem to have universally ditched them all in favour of Python.
Took vows in 1940, and while doing a PhD - the first woman to get one in Comp Sci - ended up in Dartmouth College, implementing the first version of BASIC.
Would you say it would be a great first language?
I'm not considering the learning curve, but the way the lang is designed to learn programming basics. Most say C is super solid. Although, I've heard C++ is good, too.
My first language was BASIC, which I think was a good place to start. It's more important to have fast feedback when you're first starting out (IMO) to get you hooked. So I would recommend an interpreted language over a compiled one, just because you can get the immediacy in a read-evaluate-print loop (REPL) where you type something and it causes something to happen.
Also, the "batteries included" nature of most popular interpreted languages means that you're going to find it easier to do things off the bat, not trying to figure out how and what to include.
I can't say I'm a C++ dev, because it's been well over a decade since I last wrote any, so maybe the STL and whatever exists now has a batteries included approach, so perhaps that's not a concern.
But for the basic concepts I'd start with a language that outputs comprehensible errors and doesn't make you wait to find out when you make a mistake.
C and C++ are good second languages.
Fair enough π
Some solid points there π
"Programming Languages" are designed to represent programs that can get "stuff done" - not to teach programming basics - unless of course the language is expressly designed to "teach programming basics".
How to Design Programs, Second Edition
HtDP teaching languages
Pyret
PAPL - Programming and Programming Languages
The Structure and Interpretation of the Computer Science Curriculum (2004):
quote
Python.
The advantage of Python is that it's quite a "broad church" language, supporting many different approaches to solving a problem - but it's also very consistent.
There are some things it won't teach you, most notably generics/templates (which are different, but similar, capabilities), but generally most concepts in other imperative languages exist in Python (and there are a few functional techniques about as well).
The lack of special-casing and "gotchas" makes it very simple to work with and explore, though, and things like Jupyter (a sort of web-based super-REPL) help things further.
Moving on from there, C++ is a great language to understand because it has both very low level elements to it and high level constructs built on top - allowing you do dig very deeply into how things like coroutines or containers actually work if you need to.
I have no experience in using it, but as far as I've seen some code, I've liked the syntax of it π Very intuitive and easy to read for those starting out π
There used to be quite a number of languages designed for teaching - BASIC was one (designed by, amongst others, a nun), and Pascal was another. Universities and schools seem to have universally ditched them all in favour of Python.
Sauce for the nun thing?
Sister Mary Kenneth Keller
Took vows in 1940, and while doing a PhD - the first woman to get one in Comp Sci - ended up in Dartmouth College, implementing the first version of BASIC.
Wow, I didn't expect to find a Sr. Keller reference on DEV!
I went to Clarke, where she founded the Computer Science department (and there's a building named after here there now).
Lol a nerdy nun, thanks for thr fact!