Live data from Hacker News

Retiring Python as a Teaching Language

prog21.dadgum.com

111–120 of 238 posts

Re: Retiring Python as a Teaching Language

#111
One important reason for the success of C was the library. One of the reasons for the success of Python is the big library and the plenty of add-on modules.

But on the UI side, Python has its weak point. The other problem today is the trouble with the migration from Py2->Py3. But on the long run, the UI problem can be even more trouble. Python is still a good language on the server side, even when PHP was faster and still has a bigger market share.

Re: Retiring Python as a Teaching Language

#112

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…

It's important to ask "teach what?" There are a lot of foundations that simply aren't going to be relevant to large subsets of students. Teaching C, for instance, is nearly useless if you're trying to convey FP concepts or object-orientation. 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 delibera…

> Teaching C, for instance, is nearly useless if you're trying to convey FP concepts or object-orientation.

C is superb for teaching how to manually implement polymorphic behavior in the absence of object-oriented features. Using it to demonstrate how (class-based) OO languages work should be standard in any course that has CS in its title. (Using it to demonstrate how to implement prototype-based inheritance would be an advanced course).

Re: Retiring Python as a Teaching Language

#113

I think this author has lost his focus. Maybe there's only 1 choice if you want something to sit "on top", but anything can interact with "an unprecedentedly ubiquitous cross-platform toolkit for layout, typography, and rendering". Including Python. For games, an introductory class using Python with Kivy or PyGame doesn't fit the bill because they may not always be around? If a student really wants to go deeper into…

It sounds like the goal is to get people programming. That means a combination of teaching them, and getting them excited. Being able to show the thing you created to your friends is a powerful motivator.

While I disagree with the author that this is the penultimate goal that should be overriding all other concerns. I'll bite for the sake of discussion. If that's the goal then Javascript was obliterated before the OP woke up to write this ill-conceived blog.

What people are building with Python on Kivy (chose the nearest example)-

https://itunes.apple.com/us/app/deflectouch/id505729681?mt=8

Vs.

What people are building on the webstack (also chose the nearest example)-

http://prog21.dadgum.com/203.html

I do give the author credit for not contorting the page into an eye cancer causing abomination like most web developers are doing these days. While he's espousing JS, oddly enough he may share my preference for a web that's as JS-light as possible. :) But our professor does already have something to show his friends! So download your full blown games, accepted into the AppStore (or Google Play) to show your pals what you built. Then pass out your little URL. Let me know how thrilled they are then.

In sum, if you're looking for a great general purpose PL to start with and maybe grow with, with plenty of ways to build cool stuff- Always Bet On Python.

Re: Retiring Python as a Teaching Language

#114

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…

Teaching is made of two components: access to knowledge, and motivation. Today, access to knowledge is almost entirely irrelevant: pretty much all knowledge is freely accessible from anywhere, anytime. You just need the motivation to look it up. Teaching yourself can be easy, if only you have the drive to keep at it.

It wasn't the case in our past. In the middle ages, before the printing press, teaching was 99% passing on knowledge, and motivation was assumed to be a given. Today, in the post-internet age, access to knowledge is a given, and teaching is 99% motivation.

Re: Retiring Python as a Teaching Language

#115
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.

In case anyone hasn't heard of it, Asm.JS is basically trying to turn JavaScript into a similar standard. Combine that with sourcemaps in browser debugger tools and we're really close. I've been using clojurescript recently, and I can even connect a REPL to the browser and make on-the-fly changes just like we've always been able to do with JavaScript.

What I really wish someone would build is this: Create a platform-independent machine language which is designed to be translated into arbitrary other machine languages. Then put the equivalent of FX!32[1] in the browser to translate it to whatever architecture the client is running on. And have a compiler that will compile to both that and to asm.js, with asm.js being used (with consequent lower performance) for legacy browsers.

The point here is that it isn't a VM at all. It's just an intermediary platform-independent binary code. So it doesn't care what kind of language you're compiling from or what kind of hardware it's running on, but it still doesn't need a huge slow insecure runtime environment.

Basically it should do what Java originally tried to do, minus the fatal mistake Java made in tying the bytecode to a specific high level language (and thus all the changes made over the years which have made the JVM big and complicated).

[1] http://en.wikipedia.org/wiki/FX!32

Re: Retiring Python as a Teaching Language

#116
post #56
post #30

Earlier quoted context omitted.

+1 on the interactivity aspect. Not having to go through a bunch of compiler configuration (C/C++ land) to get a basic GUI up and running is a huge plus. And HTML is a lot easier to understand for people with no experience than a bunch of tkInter classes.

i kindof believe all languages should have some ability to run with a browser-based GUI... why bother with all the hair-brained implementations (Swing, Qt, etc.) when we could just have a "desktop mode" (altered security) version of Chrome pop up to provide GUI. it wouldnt even have to follow same rules as browser really (navigation could be via buttons only, no back/refresh), just be based on html & perhaps js to al…

Well Java 8 ships with webkit for JavaFX but almost nobody uses it.

Re: Retiring Python as a Teaching Language

#117
post #105
post #91

Earlier quoted context omitted.

One of the first steps in teaching is motivation.

Beginners that aren't in a formal class setting (and his description more closely describes mentoring someone outside of the classroom (son/daughter)) have not yet made the decision to invest in learning things from first-principles as a university student has already locked into doing. So, for these beginners there must be some kind of reward or immediate application for their efforts if we even expect them to conti…

Many university students aren't locked in either, and so are still in need of motivation.

Re: Retiring Python as a Teaching Language

#118

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…

and does JavaScript: the replacement he is going with, offer all these points you articulated that makes Python not much of the best language to bring student closer to core of CS concepts?

Re: Retiring Python as a Teaching Language

#119
I don't like this concept of "first teaching language".

It does not matter at all which one one learns first! It's not the language, it's the ideas and the way of thinking...

This is like talking about whether it is better for a baby to speak english or chinese, in order to learn how to walk

Re: Retiring Python as a Teaching Language

#120
I'm saddened by the lack of academic rigour displayed in this thread. If you have not taught introductory computer science courses, then you have NO CLUE what makes a good introductory language choice. It appears James Hague isn't working as a teacher either, just giving advice to newbies, so his opinion is just that -- opinion.

What you want is field studies: "This year we used Haskell and 75% of all students gave up on programming stating that it was to hard. Last year we used Visual Basic and only 20% did. Ergo Visual Basic is probably a better first language than Haskell."

Lots of research is being done on the subject, see this survey: https://www.seas.upenn.edu/~eas285/Readings/Pears_SurveyTeac...

Post reply on HN