Serpents: the Python language and Dragon Dynasty

Jul 23, 2006 23:32

To all programmers: What do you personally think of Python, the programming langauge?

1. Is it a good teaching langauge?
2. A good general-purpose language?
3. Is it "better" than C/C++ or Java?

How so, and why or why not?

In other news: ( Dragon Dynasty )

television, scifi, miniseries, programming languages, python, dragon dynasty, programming

Leave a comment

zengeneral July 24 2006, 16:12:14 UTC
A good teaching language requires discipline; Python, Java, C$, and others are powerful languages that reward students too early. Students need to be punished for carelessness; they deserve segmentation fauls/general protection errors when they mess up. With medieval thinking, would you let a youngster drive a hummer first? No, you let them drive a wagon, a ford fiesta, or a geo metro; they will learn that their driving influences whether or not they live or die. They will learn that others (library writers) influence there living potential. They learn because they are in a constant state of alert ( ... )

Reply

mapjunkie July 24 2006, 16:26:48 UTC
I disagree that students should work strictly low to high level. In my opinion, they should learn both a low-level (C or assembler) and a high-level language (scheme or lisp) at approximately the same time, such that they can be mentally flexible enough to use whatever language is appropriate to the task. There are certainly some very powerful ideas that they should master that are poor to communicate in C or assembler.

Reply

(The comment has been removed)

Re: to an extent. mapjunkie July 24 2006, 16:35:14 UTC
The risk is that they don't realize the need for a new language. One is not only cultivating skills, but cultivating taste.

Reply

Re: to an extent. zengeneral July 24 2006, 17:00:29 UTC
it is the responsibility of an instructor to make the student go 'crap', this would be a waste of time to do in this low language and then introduce a new language that solves the problem.

There are definite reasons for using a functional language over C# (or Java). And there are reasons for using C# over C++, etc... etc... Its important for students to understand the role of languages (and hence, language theory) in computer science.

At the end of a 4-year program, I believe that any student should be able to
1) write a basic compiler tool (reg-ex to DFA conversion, grammars)
2) write an compiler for a C'like language
3) write an interpreter for an ML’like language

If a student can’t do 1-3, then they are not a real computer scientist. A programmer has the luxury of having a taste for a programming language; a computer scientist must have the discipline to make a programming language well.

Reply

Re: to an extent. mapjunkie July 24 2006, 17:14:37 UTC
I am not at all interested if a student could do any of these tasks by rote, or had actually done them before. They should upon assignment, be able to complete them with a reasonable quality, and in a reasonable period of time. They should be able to find the resources necessary to solve them. They should also be able to do new tasks with a sensitivity towards what consititues a good solution. It is not enough to see ugliness: they should be able to imagine elegance.

http://www.paulgraham.com/taste.html

Reply

Re: to an extent. zengeneral July 24 2006, 17:38:30 UTC
you should be! once we have basic concepts down by rote, we are able to freely associate and think without needing to find resources. In essence, we become a resource. Once you have a language and some concepts down by rote, you can ask questions as to why the languages are they way they are. Why the concepts are. These are crucial to understanding the evolution of languages. The more facts we can stuff in our head - the better our understanding becomes. This way, we avoid the 'fan-boy'/taste of a language ( ... )

Reply

Re: to an extent. mapjunkie July 24 2006, 17:45:48 UTC
Hmm, I do agree that there is a power that comes from fluency. Certainly, being able to use a tool where having the right action always comes to mind is nice. It is essential to know what is there, why it is there, and what the alternatives are. Such comparisons are the basis for synthesizing new solutions and evaluating them.

At the same time, strict rote learning still seems unnecessary, and also a barrier that would irritate me. So, if I forget the parameter to a library function? So what? I look it up and life goes on. But having it demanded? Screw it, I'll work for people who care about my taste, not what I've memorized.

Reply

Re: to an extent. zengeneral July 25 2006, 00:17:20 UTC
strict rote learning of a library would be unnecessary. Rote learning of practices and structures of how things operate. Everyone should be able to read code in any programming language. Rote learning on a good set of languages (assembly, C/C++, C#/Java, Ocaml) gives people the ability to see the practices used at each level and to be competent at reading a new language (say, Python) without even looking at the language manual.

Reply

Re: to an extent. mapjunkie July 25 2006, 02:01:41 UTC
Ah, I think we are on a common ground, differing only to the degree where we draw a fuzzy line between pure memorization and rigorous grasp of the constructs and their usage.

I am not as committed to standardizing projects, given the requirement that those leaving the program are still able to perform them in nearly the same timeline and quality, particularly if they have additional relevant skills to many of the programming domains in question. For example, if I find a student who can design user-interfaces in any language, do usability studies, rapidly prototype interface, has numerous data visualization projects under their belt, and is otherwise a good all-around developer with solid writing and communicating skills, but has never written an interpreter to a functional language, for the vast, vast majority of projects, I would hire them immediately nonetheless. I respect, although not understand your decision, if you feel otheriwse.

Reply

to an extent. zengeneral July 24 2006, 16:33:39 UTC
when they learn C/assembler, they would work with simple ideas; they should transition to a new language once they realize the need for a new language. For instance, progressing from
assembler -> C -> C++ -> C# -> Ocaml
would be most instructive as it allows the powerful ideas to be expressed easily in Ocaml but obtain the discipline and basics from harder languages.

Reply


Leave a comment

Up