Live data from Hacker News

Retiring Python as a Teaching Language

prog21.dadgum.com

201–210 of 238 posts

Re: Retiring Python as a Teaching Language

#201
post #92

Earlier quoted context omitted.

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…

> ... a Scheme implementation with as many and as complete of a selection of libraries as Python. 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 s…

I had used Racket for my personal projects for well into a year. It was a lot of fun, so it definitely filled a good niche for me at the time, but I eventually gave it up as I started to want to be more productive and start finishing projects, rather than just writing any ol' random code.

It is definitely the most complete Scheme available, which I believe is why they gave up the PLT Scheme name, to disassociate from the "bare bones" assumption of Scheme. And yes, it's GUI support is relatively better than Python's. But it's not objectively good. It tends to have mostly bare-minimum implementations of libraries. For example, the work done for connecting to databases is basically nothing more than a DB connection. Web development is basically no more than HTTP request parsing.

There's no Django or Rails or even Express for Racket.

Re: Retiring Python as a Teaching Language

#202

Earlier quoted context omitted.

> Thus, I don't really think that learning Python offers solid programming foundations. I agree. But there is a huge class of people that this argument tends to miss - all the people who learn programming as a tool and not a way of life, like scientists or engineers from other departments. For those, it's ideal to learn one language, and it's OK if they don't completely understand CS. For them it's better to know a l…

This is a really good point. I am not a programmer at all, but did learn a little bit of ASP.NET at university. I never use it anymore, but I ended up teaching myself PHP. I use PHP regularly, not to build anything grand - but it gets me by. I can write little scripts like working out who's unfollowed me on Twitter, small information systems, reminder applications, hack Wordpress plugins, etc. I wish I was taught Pyt…

If you can understand the the core ideas of data structures and how to manipulate them (Arrays, Loops, Conditionals, Objects etc.), and can put that understanding into practice to solve a problem, you really are 90% of the way there.

Learning another language is easy, just try it :) Also a language like Python really is a breath of fresh air if your only experience is PHP.

Re: Retiring Python as a Teaching Language

#203
post #96

Earlier quoted context omitted.

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.

LLVM.

Unfortunately platform-specific stuff leaks into the intermediate representation of LLVM.

Re: Retiring Python as a Teaching Language

#204

It is amazing how much of an IDE a web browser can be. I use typescript these days to prototype stuff and it is going pretty well. Reload and changes are up. Nothing else even comes close.

I think any REPL system does the same thing, though.

To some extent. I think pry comes closest to re-creating a truly interactive development experience but the browser is slightly better especially with source maps.

Re: Retiring Python as a Teaching Language

#205
post #89

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…

If "programming foundations" must include memory management etc, you're certainly correct. However, there's a reason they use Python for intro classes at eg; MIT[0] - the language gets out of the way so you can focus on CS basics. Once you get control flow and the like, you can start to explore complexity et al. [0] http://ocw.mit.edu/courses/electrical-engineering-and-comput...

No, Scheme was that language. MIT now uses Python because when the dot com crash cratered enrollment, which dropped by more than half after being steady and high for decades, the EECS department and I gather some higher ups panicked. They also made the 2 new mandatory introductory courses much more EE and "gadget" heavy.

(Another input might have been the school having committed an insane quarter billion dollars to build a "showpiece" (but not very functional) building for CS research.)

Re: Retiring Python as a Teaching Language

#206

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…

That's the approach Berkeley CS (and a lot of other CS programs, but I can only speak to UCB's coursework). The first CS course teaches fundamentals of computer science, using (mainly) python, but also Scheme and a declarative language to explore the concepts.The subsequent coursework exploring Data structures/Algorithms uses Java, and then system-level architecture uses C and MIPS. Every professor is extremely caref…

Scheme is excellent, but Python only lacks a couple features that can mostly be bolted on or used from a different interpreter (tail calls, Stackless, etc).

Some languages make exploring certain concepts easier, but the lack of that feature isn't a hard barrier.

I think learning efficiency is an exponential function of the latency between hypothesis and result. Python just happens to have great tooling to minimize that.

Re: Retiring Python as a Teaching Language

#207

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…

That is the assumption that lean to divert the focus to something else, like for example, math (A lot of "intros" to programing are really math with computer).

I have a FAR different education. I start with Fox 2.6 (DOS) and Acces. At the end of the semester, We have a FULL done application with: Menus, Forms, Small procedures, database, Reports, with colors and very crude idea of custom controls. From the side of Acces, we get the idea of how a Windows application was done.

This was NOT the university. The university teaching was so useless in comparasion (I was the one to teach the OO classes, because the teacher don't have a clue about it. And that was the 2d semester).

Then the instrucction of algos was terrible. And so on.

---- Rant objective?

Good, focused, NOT DIVERTED, teaching is far better than the core language. I have done some teach, and know dozen languages.. I believe python/pascal are far better to start - and probably pascal, if we want a C-like understanding without the badage of slow tools, weird syntax and crazines of the C family, but well, that my thing- and don't see why it could be problematic to teach any of the fundamental concepts of programing.

The key thing, apart of the quality of the teaching, is the focus. I think if the goal is teach "programming" in the general sense, python/pascal are the better. C, C++, Haskell, Java requiere a lot of divertion of the attention (setup and take care of a project, do make files, wait... wait...wait, "monads"?, etc).

In contrast, if the teach is learn how "a computer works" so C/C++/Pascal/ADA could be great. Again, is the focus.

Re: Retiring Python as a Teaching Language

#208

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…

> A language like Racket is great for teaching because it lends itself to exploring so many core concepts: complexity of algorithms, functional programming techniques, recursion, data structures, etc.

You can explore all of those in Python, even though some may not be idiomatic in Python (many FP approaches), and some may not be suitable for non-trivial use in Python (recursion). And, in fact, there are plenty of introductory CS course that do use Python to explore all of these.

> Thus, I don't really think that learning Python offers solid programming foundations.

Languages don't offer foundations, curricula do that. And for a solid programming foundation, I think a curriculum that does that can be organized around almost any language -- there's a small set of essential features, but very few languages don't have serviceable implementations of what is minimally needed.

Re: Retiring Python as a Teaching Language

#209
post #141
post #23

Earlier quoted context omitted.

I thought Java was the first to be implemented by the browser?

Java was introduced in Netscape Navigator 2 at the same time as JavaScript. But Java was really not integrated with the html at all. It lived in its own isolated box on the page. JavaScript was integrated with html and with the browser environment.

http://en.wikipedia.org/wiki/HotJava ?

Re: Retiring Python as a Teaching Language

#210
post #61

Earlier 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.

> Portability is premature optimization at this point.

It really isn't. If I am a new developer, you're raining on my parade by telling me that I or my friends will have to jump through a bunch of hoops to run my game.

In the context of learning to program as a younger person, this is a pretty big deal. This is anything but an artificial usage case, and is what the author is specifically looking at (education).

Post reply on HN