Someone suggested to me that Rust is a good first programming language for beginners.
As a first programming language, Rust is wholly unsuitable. First of all, it’s a rather large and complex language compared to something like Python or Smalltalk.
The ownership and borrowing feature will be tough for newbies to wrap their heads around.
Second, newbies don’t need to concern themselves with runtime performance. They should focus on basic programming concepts and methodologies.
Third, the most popular programming methodology in the IT industry is, by far, object-oriented programming (or OOP). Without solid OOP knowledge, your professional options will be relatively limited.
The best way to learn OOP is with the Smalltalk programming language. It is the epitome of OOP and no other OOP language can compare with it. Languages such as Python, Java and C++ do a disservice to OOP.
Fourth, the employment opportunities for Rust developers are still fairly limited. At Indeed, for example, there are around 1,500 job postings for Rust, while for Python and Java, there are 90,000 and 60,000 respectively.
You will have much more difficulty finding employment as a Rust programmer. You will be competing with Rust experts for a limited number of positions.
Fifth, concurrency is an oversold feature. The practical reality is that most application classes do not make use of concurrency. In fact, most programmers don’t even know how to do concurrent programming, which is quite tricky.
Sixth, I’ve never seen any literature that says Rust is a good first programming language for newbies. I challenge you to cite such literature.
The Stack Overflow surveys show that Rust is a Most Loved and Most Wanted programming language, not that it’s at all suitable for beginners.
I want to be perfectly clear. I think Rust is a terrific language, especially in certain problem domains, but I would not recommend it to newbies. I always recommend Smalltalk, a wonderful language with a plethora of qualities:
- dead easy to learn — you can learn all of Smalltalk’s syntax within 7 minutes!
- ideal for OOP — Smalltalk is OOP done right. Nearly all OOP languages derived their inspiration from Smalltalk.
- scalability — thanks to its OOP model, Smalltalk programs are nicely scalable to any size. In fact, Alan Kay, the father of Smalltalk, likened Smalltalk to a “software internet” of virtual servers (each object is like a little computer).
- extensibility — Smalltalk is endlessly extensible without the use of macros.
- DSL-like — Alan Lovejoy likened Smalltalk to domain-specific languages (or DSLs).
- extremely flexible and versatile — you have access to all the system source code, including compiler, runtime, editor, debugger, etc. Thus, you can adapt Smalltalk to any problem domain.
- since you have access to all the system source code (in Smalltalk), you can derive a much greater understanding of how computers work.
- super-productivity — according to a 2017 study by Capers Jones, Smalltalk is the most productive programming language among all the major languages.
- the reason for Smalltalk’s supreme productivity is its live programming environment. No other language does live programming like Smalltalk can. Code and data can be altered during runtime, greatly enhancing debugging. And it’s all done graphically!
With Smalltalk as a solid foundation, the rest of the programming world is much more easily accessible. Other OOP languages come into better focus. Have a deeper understanding of computing. Appreciate the value of live programming. Know what real scalability means. Become a better programmer. And have a lot more fun doing it.