Hacker News new | ask | show | jobs
by rightbyte 1608 days ago
I think many programmers forget how it was to learn to program. Imagine the horror trying to make Rusts borrow checker happy without even understanding what an object scope or pointer is.

C is a really good beginner's language, since any oop is explicit with function calls, kinda like Basic. No invisible destructors etc. Modern compilers even warns you on returning pointers to stack locals etc.

I don't think Python is a good beginners language anymore with all its complexity. Maybe Go or Java.

3 comments

> I don't think Python is a good beginners language anymore with all its complexity

It's not like the simpler parts of the language have gone away in recent versions. You can still program in python like it's 2.7.

Just as you can still program in C++ using C paradigms.

Agreed. C is a great starting point. It's a terrible continuing point though. Novice C programmers write seg-faulty code left and right, which is fine. That's not a problem; everything that's wrong is on the surface. In the mean time, they've learned how to implement a binary search tree or something, which is pretty cool when you do it in C. The intermediate two-star C programmer whose programs almost never segfault, that's the truly dangerous one. Precious few C programmers make it past that stage.
Ye, unless you to electrical engineering/close to hardware embedded or something. However even those probably benefits from mastering some memory managed language, before going back to C.
Good points. Though it would be a good debate that Go would be a better beginner language. Java's forcing of class based OOP would cause an avalanche of other kinds of problems that Go and C don't have to deal with.
Other than the 3 lines of boilerplate for the main method, Java ain’t forcing anything. You can write FP with it as well.

Also, it is probably better to get started with the much more common nominal typing over structural.