When I took an introduction to Computer Science in college, it was taught in Racket. Over winter break, I then learned Python, and I was baffled -- why would any curriculum not start with Python? Python was easy, expressive, and allowed the user to get lots done with little effort. It was great at motivating programming by showing its use and power. It seemed like an ideal introductory language. Over the last few yea…
Retiring Python as a Teaching Language
91–100 of 238 posts
Re: Retiring Python as a Teaching Language
#92Earlier quoted context omitted.
Is rigor even that important? Is a flawed and quirky language really a problem when you are learning? I'd expect that keeping the learner's momentum going is more important – if they keep producing they will be able to engage with the crap, or make their own new kinds of crap. Quantity over quality, you know? With that in mind, stuff like developer tools is more important... and maybe community (which is eclectic for…
We can have good, rigorous semantics and simple syntax in the same language. Python is, indeed, a good example. Ruby as well. I would even start to say Scheme is a very rigorous language that is quite easy to learn--if you first haven't been tainted by curly-bracket languages and second lived in a world in which there were a Scheme implementation with as many and as complete of a selection of libraries as Python. A f…
It's not quite the same size, but the Racket standard library is fairly close in size to pythons. It also has better GUI support, IIRC. It's selection of other libraries isn't quite as broad either, but it's decently sized, and you can use some things written for other implementations (well, mainly ones written in pure scheme).
Re: Retiring Python as a Teaching Language
#93I still recommend Ruby as the first language because it has all of the features you want to know about as a newbie and at the same time there are very few quirks. The things you sacrifice are performance and memory efficiency. I have seen junior programmers picking up Ruby as be able to write production ready code in couple of weeks. I guess the learning curve is not as steep.
For now, if they want to learn something as a start, even though it still has its quirks, write them in Swift. You get a bit of everything plus you can code some UI without the deep diving into ObjC.
Re: Retiring Python as a Teaching Language
#94When I took an introduction to Computer Science in college, it was taught in Racket. Over winter break, I then learned Python, and I was baffled -- why would any curriculum not start with Python? Python was easy, expressive, and allowed the user to get lots done with little effort. It was great at motivating programming by showing its use and power. It seemed like an ideal introductory language. Over the last few yea…
I certainly support including C as a core part of any university's Computer Science curriculum. But such a curriculum should include as many languages as possible, each deliberately picked for what it can emphasize and convey. For a Computer Science curriculum, any discussion about language choice that doesn't end in at least three picks is, to me, a failure.
But there is a lot of learning to program that happens outside of university settings. Students who have no explicit professor or TA to talk with need wider community support. They need more basic guidance. In these cases, a language like C would do poorly: there are too many systems-level concepts that need to be understood before it stops feeling like magic. For this, Python is far superior to C, because it makes understanding what you're doing far more accessible far sooner.
Whether or not Javascript is a better choice for this than Python is something I'm undecided on. I can see the merits offered in the OP, but I'm not convinced they outweigh the faults in JS. The newbies I give recommendations to generally have an interest in going into data analysis. I think Python is the better choice for that, as a language that can form a bridge between "whoa, hello world" to, say, playing with scikit, and if they end up going in a different direction, they're unlikely to have picked up any particularly bad habits. Javascript? I am not convinced.
(This sort of stopped being a response to you in particular and turned into a response to the OP, but it'd be confusing to move it now. So... whatever.)
Re: Retiring Python as a Teaching Language
#95Earlier quoted context omitted.
I don't think it's a performance and memory issue that the author is raising. Ruby, much like Python, mostly wraps some lower level libraries for game dev. In both cases, you either make sure your users have dependencies installed, or you use one of the clumsy "compiler" solutions that don't always work well. Consequently, Ruby isn't any better for the author's usage case (kids wanting to learn to write games that ar…
> for the author's usage case (kids wanting to learn to write games that are super easily portable) This is an artificial use case. Kids wanting to learn to write games should be concerned with whatever works on the hardware they have available. Portability is premature optimization at this point.
Mobile might be an artificial use case or a premature optimization, but it is solved with his choice of JS.
Re: Retiring Python as a Teaching Language
#96As much as i can't disagree with the choice (the realpolitik of programming has made it the most correct choice), i am saddened that the language on which the choice falls is one not chosen based on any merit, but merely due the historical accident of being the first to be implemented in a browser and having had no appreciable opposition due to browsers at the time being in hands of corporations. In "A Deepness on th…
>...i am saddened that the language on which the choice falls is one not chosen based on any merit, but merely due the historical accident of being the first... Couldn't agree more. Javascript is one of those things that I wish would just go the hell away and be replaced by something that isn't awful.
Re: Retiring Python as a Teaching Language
#97Earlier quoted context omitted.
> This makes the false assumption that resources put into Python 3 somehow prevented "native browser support," Agreed, browser support was probably unrealistic. However other points still stand. Python 3 was a mistake. It at the wrong time (too late), and didn't bring enough. The talks, and the time, and drama around it weren't worth to get dict comprehension and unicode support. A 10x speed improvement (heck, just a…
There were, there were. I think Node.js is the way of the future with their evented IO platform.
But can I use it to build microservices?
Re: Retiring Python as a Teaching Language
#98As a proponent of python and a full time python developer I fully endorse this decision. There is a compelling need to be able to distribute graphical python applications that isn't met (and that https://www.python.org/dev/peps/pep-0441/ isn't even a step in the right direction is an indication of how far away a solution is). Don't get me wrong, python is a great language, but its not the right solution for teaching…
I'm sorry, your comment isn't making clear what teaching programming has to do with distributing graphical applications. Could you clarify what 'these reasons' are?
Re: Retiring Python as a Teaching Language
#99When I took an introduction to Computer Science in college, it was taught in Racket. Over winter break, I then learned Python, and I was baffled -- why would any curriculum not start with Python? Python was easy, expressive, and allowed the user to get lots done with little effort. It was great at motivating programming by showing its use and power. It seemed like an ideal introductory language. Over the last few yea…
Re: Retiring Python as a Teaching Language
#100Earlier quoted context omitted.
>...i am saddened that the language on which the choice falls is one not chosen based on any merit, but merely due the historical accident of being the first... Couldn't agree more. Javascript is one of those things that I wish would just go the hell away and be replaced by something that isn't awful.
What we need is some kind of jvm-like VM binary standard that several languages can compile to. Right now that's simply JavaScript, though, but it's not very good for this purpose.