I've had a lot of people recommend Python to me as a language I should learn. I have just tripped across this comment on HN:
Not to be a total smartass, but if your Python codebase is not that big yet, then the correct answer is none of the above- rewrite in a compiled language if you find the lack of static checks disturbing.
I have been using "type checked" python for a year and let me tell you, it is not even 10% as good as having a real compiler. Python type checkers are not even close to 100% accuracy.
Now I'm wondering if Python is really a good first language to learn or not.
Not to be a total smartass, but if your Python codebase is not that big yet, then the correct answer is none of the above- rewrite in a compiled language if you find the lack of static checks disturbing.
I have been using "type checked" python for a year and let me tell you, it is not even 10% as good as having a real compiler. Python type checkers are not even close to 100% accuracy.
Now I'm wondering if Python is really a good first language to learn or not.
It’s good that you’re thinking through problems this deeply. To me, it means that once you arm yourself with some experience, you’ll be ready to think your way through bigger problems. That’s really exciting.
ReplyDeleteHowever, your first language doesn’t matter this much. You seem to be a good writer so I’ll explain it with an imperfect analogy from writing. If I was just learning to speak English, On Writing by Stephen King would be a pretty bad resource. Not because it is bad, but because a newcomer to the language has bigger problems to solve.
What matters is that you start doing something. Pick an “easy to read” language with good learning resources and start.
Every different language introduces or solves a different set of problems. And usually, when a language solves one problem, it introduces another.
The thing is, when you first get started, you likely won’t get stumped by the classes of problems that languages solve or introduce. Instead, you’ll get stumped by the thought processes that go into solving problems. Computers are powerful boxes, yet shitty communicators and learning to express your thoughts in a way they’ll understand will consume most of your early effort.
I suggested a Rails tutorial on another site. You might love Rails or you might hate it. A lot of people think it is obsolete. A lot of people think it has been a net negative to the field of web dev. But, as a learning resource, that tutorial is excellent. It is free (or you can pay for it). Michael Hartl is an excellent writer and a profoundly good teacher. And, through the tutorial, you will build something that will empower you to recreate a lot of the web/mobile apps you see.
Good luck.
Thanks!
ReplyDeleteBecause I applied to their summer school program, I have access to the pre-course for Lambda School. I was not accepted, but I can still finish that.
I also had a Python course recommended to me, plus the Rails tutorial you recommended.
I did sleep better this morning. I expect to start working on one or more of these courses soon.