On Tuesday, 12 March 2024 at 22:27:11 UTC, Mike Shah wrote:
On Tuesday, 12 March 2024 at 20:40:49 UTC, Meta wrote:
On Tuesday, 12 March 2024 at 16:20:29 UTC, matheus. wrote:
[...]
I think it really depends on the person. My first language was
C++, which was absolute hell to learn as a complete beginner
to programming, but I really wanted to learn a language with
low-level capabilities that could also do gamedev. Learning
C++ as my first language was incredibly difficult, but it also
made the programming parts of my CS degree a breeze -
especially courses like machine level programming. Nobody else
in the class even understood what a pointer was for the first
couple weeks.
I've been at institutions where C++ is the first language and
for most folks who were sure they wanted to do programming it
was a fine enough language (when taught with care) to teach. In
fact, it benefited me (and other instructors) quite a bit when
I saw those students later and taught them computer graphics
(usually taught in C++ to prepare them for job market).
For folks who were not sure if they wanted to study computer
science, unfortunately they were scared away as they thought
this was the only path for programming (i.e. C++, assembly,
etc.). For this reason, a language that is gentler (e.g.
Python, JavaScript, or I also suspect a large subset of D)
would all have been better choices. More universities these
days are offering courses with gentler options (e.g.
Programming for non-majors) which usually take this approach to
more slowly ramp students up -- which I think is a good thing
to have these offerings. And then later on in the program,
these students can learn the good stuff (i.e. systems,
compilers, graphics, etc. :) )
I understand that outside of CS, something like Python is a fine
choice, hiding many low-level details. But within a
CS-curriculum, one needs to come beyond basics-of-programming to
something like efficient algorithm-design-and-data-structures;
isn't a typed language better here? (Like the quote of Knuth
says: if you do not understand the hardware behind, your programs
will look weird. I have observed this a lot with current
data-science students, which use a map/dictionary for everything,
largely ignoring the existence of arrays).