
It's time to replace Python as a language for learning
- Transfer
Over the past ten years, my standard answer to the question “what language to start familiar with programming with?” Was simple - Python. Now I am changing my recommendation. Python is still a good language. It allows you to focus on the task and not worry about architectural troubles. About the things that experienced programmers find important, forgetting what it feels like to be an absolute beginner. The language itself dissolves in the background, and instead of explaining the possibilities and philosophies, the lessons are devoted to generating musical scales, calculating the distances in the stadium depending on the treadmill, or writing an automatic poker player or balls .
And then one fine day the student will ask an innocent question: “How to make the poker simulator not on the command line, but in the window, with a button for issuing the following cards?”
It is difficult to describe the complexity of this question. It forces you to consider various GUI tools for Python. It turns out Guido does the same thing every couple of years: wonders if TkInter is the right choice for IDLE, the standard IDE for Python. But for now, it's TkInter.
A week later, a new question: "How to write a simple game, with graphics?"
It's time to explore the options again. Pyglet looks promising, but it has not been updated since July 2012. There are libraries that focus on something specific and do not try to do everything in a row, for example, SplatGL, but it is quite new and it is difficult to find a sufficient number of examples. PyGame seems to be popular, there is even a book, so okay, let's learn how to use PyGame.
A month later, new questions: “How can I share my game with a friend? Although ... is it possible to download this game on the phone to show everyone, and so that they do not need to install anything? "
Um ...
All these questions made me abandon Python as a language for learning. Of course, there will always be those who consider only the old school path correct — files with scripts of algorithms that generate monochrome text output in the terminal — but you need to understand the level of isolation that accompanies this choice. This is often not at all what people want to do. Yes, you can find add-ons for almost everything, but which of them went through sweat and abuse of serious projects? Which are well supported today, but will be forgotten tomorrow?
The growing popularity of non-desktops complicates things, yes. I studied Erlang to get away from C and C ++ and change my level of thinking. I proved that I can use Erlang and a purely functional approach in the area that is most afraid of: games. And then came iPhone and that's it. Erlang no longer has a place.
It is because of these thoughts and experiences that I now recommend JavaScript as a language for learning. I know, I know, it is freaky and sometimes just weird, but overall it is a normal and fairly modern language. Most importantly, it runs on an unprecedentedly ubiquitous cross-platform system for markup, typography, and rendering. Want to show interface elements, images or text? Use HTML directly. Do you want graphics and animation? Use canvas.
I expect many to respond to such a change in thinking: horror and fear. These reactions should not be related to JavaScript flaws. They should be related to the fact that I ignored a bunch of other languages, regardless of their capabilities, typing systems or syntax, simply because they do not have native support in web browsers.
And then one fine day the student will ask an innocent question: “How to make the poker simulator not on the command line, but in the window, with a button for issuing the following cards?”
It is difficult to describe the complexity of this question. It forces you to consider various GUI tools for Python. It turns out Guido does the same thing every couple of years: wonders if TkInter is the right choice for IDLE, the standard IDE for Python. But for now, it's TkInter.
A week later, a new question: "How to write a simple game, with graphics?"
It's time to explore the options again. Pyglet looks promising, but it has not been updated since July 2012. There are libraries that focus on something specific and do not try to do everything in a row, for example, SplatGL, but it is quite new and it is difficult to find a sufficient number of examples. PyGame seems to be popular, there is even a book, so okay, let's learn how to use PyGame.
A month later, new questions: “How can I share my game with a friend? Although ... is it possible to download this game on the phone to show everyone, and so that they do not need to install anything? "
Um ...
All these questions made me abandon Python as a language for learning. Of course, there will always be those who consider only the old school path correct — files with scripts of algorithms that generate monochrome text output in the terminal — but you need to understand the level of isolation that accompanies this choice. This is often not at all what people want to do. Yes, you can find add-ons for almost everything, but which of them went through sweat and abuse of serious projects? Which are well supported today, but will be forgotten tomorrow?
The growing popularity of non-desktops complicates things, yes. I studied Erlang to get away from C and C ++ and change my level of thinking. I proved that I can use Erlang and a purely functional approach in the area that is most afraid of: games. And then came iPhone and that's it. Erlang no longer has a place.
It is because of these thoughts and experiences that I now recommend JavaScript as a language for learning. I know, I know, it is freaky and sometimes just weird, but overall it is a normal and fairly modern language. Most importantly, it runs on an unprecedentedly ubiquitous cross-platform system for markup, typography, and rendering. Want to show interface elements, images or text? Use HTML directly. Do you want graphics and animation? Use canvas.
I expect many to respond to such a change in thinking: horror and fear. These reactions should not be related to JavaScript flaws. They should be related to the fact that I ignored a bunch of other languages, regardless of their capabilities, typing systems or syntax, simply because they do not have native support in web browsers.
Only registered users can participate in the survey. Please come in.
What language do you need to start programming for?
- 33.7% Python 1962
- 14.3% JavaScript 834
- 20% C 1165
- 9.2% Java 539
- 2.8% LISP (or Scheme, Racket dialects) 164
- 3.2% Ruby 188
- 9.7% C # 565
- 6.9% Other (in comments) 403