|
Indeed, we have the Radio Times to thank for the "Flying Circus" part!
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
And ASP was already taken...
Will Rogers never met me.
|
|
|
|
|
|
I came from a school that required writing a shell for UNIX in C as a 200 level class Our intro was in C++, by the time we graduated, the dept. moved to Java, and never taught it to us. So our high level classes required us to learn a new language at the same time we did the course work
I worked in embedded C, did some C++ with MFC, and then went back to get a M.S. My favorite class in the entire program was one that used Python for the final project and we had to create a game where the models / engine / art were provided for us.
I really liked Python, and would not hesitate to take a job with it.
|
|
|
|
|
Pualee wrote: I really liked Python, and would not hesitate to take a job with it.
The problem is finding a job coding Python, compared to C variants. The teacher is telling them that Python is what they need be hireable.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
modified 2-Jun-14 11:21am.
|
|
|
|
|
Good point, I lost sight of that...
It's not just CS teachers that are out of touch with reality though. Most of them seem to have an agenda to push. I think it come with the territory as they are always the 'expert' and the class never/rarely is. So the professors end up in a situation where they are always right and ever challenged.
Somehow, businesses keep finding people to hire... although it is quite telling now that the value of a 4 year degree is being questioned
|
|
|
|
|
Pualee wrote: It's not just CS teachers that are out of touch with reality though. Most All of them seem to have an agenda to push.
FTFY.
Pualee wrote: I think it come with the territory as they are always the 'expert' and the class never/rarely is. So the professors end up in a situation where they are always right and [n]ever challenged.
People who challenge the professor get a poor grade. It is a matter of survival.
Pualee wrote: it is quite telling now that the value of a 4 year degree is being questioned
Especially for software developers. People coming out of university need to be trained as much as people without formal education. Sometimes the people without formal education are the self starters that need less supervision.
Tell them what you want done and they do it the way you taught them to do it. Tell a CS university graduate what you want done and prepare to discuss pro and con about various coding paradigms.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Well, honestly, it's not so much the language (though I would avoid all VB languages) but rather the things that the language teaches you about programming, such as structure, closures, lambda expressions, classes and object hierarchy, etc. I disagree that Python is what programmers need today, but it probably depends on the niche that the instructor lives in. Python is ubiquitous -- it runs everywhere (but so do a lot of other languages nowadays) and I would definitely consider it a good teaching language.
As for big differences, I would say that there are several major groupings:
interpreted / compiled
duck-typed / strong typed
pure functional / imperative / hybrid
portable / OS-specific
desktop / browser supported
Personally, I'd use something like that to map out and decide what language to use for the task at hand.
Marc
|
|
|
|
|
Marc Clifton wrote: I disagree that Python is what programmers need today, but it probably depends on the niche that the instructor lives in.
Academia.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Why Phyton? Hisotry;
20 years ago the only programming languages at school would be the ones that'd be non-microsoft and free. It was said uni doesn't want a vendor-lock in.
Hence, they schooled people in Turbo Pascal (real world used Delphi, but that ain't free) and Java (in the VB6-days).
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: 20 years ago ... non-microsoft ... doesn't want a vendor-lock in.
Well, it was a little more than twenty years ago, but most of my college classes (at three different colleges) used VAX/VMS. I did have some classes in Turbo Pascal and Turbo C, though.
Microsoft was (and is) merely an annoying upstart.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
I think Python is a good first language - interpreted, simple, readable, "only one way to do it" philosophy, strongly (but dynamically) typed. They use it as a first language at MIT nowadays.
As for C-like languages (by that - I assume you mean curly braces and semicolons ) I just don't know of a single one that I would recommend as a first language. Some are too low-level (C, C++) some are too noisy and force OOP on a learner (Java, C#), and some are too messy (Javascript, PHP). Maybe Lua would be a good choice, but it is much less popular than Python.
modified 2-Jun-14 14:13pm.
|
|
|
|
|
I have never used Python and I have no interest in doing so, but MIT uses it for their online non-CS classes, so that should be a pretty good recommendation as a teaching language.
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2008/index.htm[^]
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/index.htm[^]
Frank Reidar Haugen wrote: his teacher must be correct in saying that Python is what the programmers need today, to be hireable
But did the teacher actually say that?
Someone who wants to drive large trucks or fly jumbo-jets for a living would not start out on them, he would start out on smaller/easier vehicles and work up to the larger/more demanding vehicles as they gain skill.
There is no requirement that a first language be your only language any more than a first girlfriend should become your life partner. A student should be introduced to many languages, so the student can see the similarities and differences -- it makes picking up new languages easier. I was introduced to COBOL, Fortran, LISP, Assembly, and Pascal yet never had to use them professionally. Most of my career I have used C and C# with minor excursions into VAX BASIC and VB.net and a small amount of Perl as well.
A developer who knows only one language (especially if self-taught) is crippled.
You'll never get very far if all you do is follow instructions.
modified 2-Jun-14 20:33pm.
|
|
|
|
|
PIEBALDconsult wrote: A developer who knows only one language (especially if self-taught) is crippled.
Well said!
It's also the case that learning a new language is a lot, lot quicker than learning the mind-set of programming: to a large extent the language is pretty much irrelevant (except for the final implementation)
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
1. Why Python? Because he wants a nice job. That is, until boss will ask him to implement IRibbonCallback and IDispatchEx in Python.
2. The real question: the single big difference is this: there are languages with pointers and languages without. That's it.
|
|
|
|
|
meh.
when i was in school, the primary programming language was Modula2 (basically Pascal). C was only used in some higher-level electives.
but it doesn't really matter. once you learn what programming is all about, switching from one procedural language to another is trivial.
|
|
|
|
|
C family languages are in general a really poor place to start. You need to know a lot before you can get a basic program off the ground in C and not shoot yourself in the foot with an unsafe pointer, or C# and know what the framework calls are doing. Starting with a dynamic language which allows you to pick up the basic skills in writing code, designing modules and functional separation, data structures and data flow analysis without dealing with the rigours of statically typed C languages and syntax is a good idea.
Yes, C#, Java and C++ (depending on the field) are where most of the jobs are. But your first lessons should no more concern themselves with that than first year maths should be teaching techniques from accountancy jobs. C family languages have 30 years of history behind them which means that they are not necessarily the most clear for teaching concepts, the easiest to set up and run or the easiest to understand.
|
|
|
|
|
When I was in South Africa I taught a first year university course called Fundamental Algorithmic Concepts which also included some basic programming skills. It was a school-side decision that Python was considered to be the best first language and so that's what I had to use. (We used C on Unix platforms when I took the course).
I put a lot of thought into that question because it seemed to me a dumbing down of the course content. Don't get me wrong, Python is a powerful language that is not overly platform dependent and it allows feature-rich programs to be developed quickly. The problem that I have with it is that it masks a lot of the internal workings of programming languages and compilers. Syntactically, once a person knows Python, it is fairly easy to convert a Python program to C but end up with inefficient or even dangerous code as a result.
I guess Python allows the instructor to abstract out just the programming aspects of the content without having to pay attention to the architecture/memory aspects of the system(s) that program is going to run on. But I think that ultimately, if your friend wants to transition to a job beyond merely coding to a spec, he would need to get familiar with some C-like language.
|
|
|
|
|
Python is considered a great beginner programming language. People learn basic concepts in Python and then move to other languages for more advanced concepts.
Everyone learns programming in little bits at a time, and Python makes the basic, early bits easy to digest.
|
|
|
|
|
Python is replacing IDL more and more in the scientific world.
I know some Python and although it can be compiled I do see it more as a scripting language.
It´s pretty good, well documented and quite powerful, though some getting used too. It has many libraries and apparently can plugin C++ code pretty well. (never tried it) I´m happy they learn Python instead of VBScript or something similar :p
|
|
|
|
|
Do VbScript even exist anymore? I always saw it as the "slightly more retarded" cousin of JavaScript :P
|
|
|
|
|
Frank Reidar Haugen wrote: Why Python?
Teacher probably likes it.
Frank Reidar Haugen wrote: but he is adamant that his teacher must be correct in saying that Python is what the programmers need today, to be hireable
When I went to university I was taught, at a very basic level, several languages. If this is a university why are they not doing that? If it is some technical school where the intent is solely to get someone working then a fixed focus single language might be better.
Frank Reidar Haugen wrote: The real question is really: are there really any big differences between the top 15 or 20 most popular programming languages?
Definitely.
C is procedural
Java/C#/C++ are OO
SQL itself is different than others and extensions to that are procedural (but attempting on procedural concepts is a big mistake.)
|
|
|
|
|
Frank Reidar Haugen wrote: But am I wrong? It doesn't matter what you think, only that your friend use the tools/technologies offered by the instructor. Even if you are 100% right, that would not get him a passing grade. When he gets out into the real world, then he can use what he wants (per your suggestions).
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Python isn't bad, especially compared to C-like languages like C#/Java. You get (out the box) at least the same libraries as you do for DotNet/JVM, and then some (as Python's own built-in libs are enormous compared to most others).
The thing which Python does "really" well is the ease of using much more complicated data structures (lists, hashtables, etc. are no more complicated to use than arrays in C). Other stuff are things like a REPL (though not as perfect as Lisp/Hasskell's). Really clean code - it's sometimes referred to as an exact 1:1 translation of pseudo code. It provides some functional paradigms, but not a full fledged FP language. No strict OO - i.e. a function need not be part-n-parcel of a class. Much less code to write than C#/Java to get the same thing. OO concepts in it's imports statement, e.g. you can import an entire "package" normally, then refer to it's internals using the OO-dot-notation, or using the * wildcard to import the internals as if loaded locally, or import a single internal without the rest of the package. It has a very large community, thus mentors and examples are not difficult to find.
There are some issues with Python:
Dynamic typing - though this isn't necessarily a problem. But for someone coming from a C-like language you'd probably miss the explicit typing. The biggest possible issue I can see with this is some error checks are impossible which are possible in a explicitly- (C) or inferred (Haskell/F#) typed language. Though there are alternatives - e.g. PyLint.
It's interpreted by default, though some of its implementations do compile. E.g. CPython compiles to pyc files on the fly (these are similar to Java's class files in that they're bytecode to be run through the PVM. Others also add high optimization (e.g. PyPy), compiling to other VM's (e.g Jython for JVM, IronPython for DotNet), and binary compiling comparable to most other languages (e.g. Nuitka).
Non-pure closures, it's version of lexical scoping is a bit weird - and therefore pure FP isn't possible. But this you only notice if you're used to a full FP language (like Scheme / F# / Haskell / etc.) - you'd not notice the difference if you come from a procedural language like C. This has been alleviated a bit in Py 3 with its nonlocal keyword though.
Python (as is) doesn't do multi-threading, not easily at least. But there is the multiprocess interface, easy to use, but means more RAM for processes than threads.
Only single-line lambdas are possible.
It's OO method's a bit "strange" in that the member functions need to explicitly receive a "self" parameter (similar to how CLOS works for Common Lisp), but you call that member function the normal dot-notated way (like in Java/C#/Pascal/etc.) I find this a bit schizophrenic.
Other issues with it's OO, e.g. no means of making hidden fields (there's no private/protected/internal/etc. decorations - only a convention that a underscore prefix means it's intended to only be used inside the class).
So Python has it's troubles, but so has every other language I've even come across. But what I would suggest to your friend: Don't stop at Python. It's good for learning the broader concepts about programming, but at some point you need to look deeper into the details also - thus it might be very good to move onto C after Python, and then onto a more "normal" OO like Java/C#. And then to really get into the FP bracket, Scheme/Haskell.
modified 3-Jun-14 2:47am.
|
|
|
|
|
irneb wrote: but at some point you need to look deeper into the details also - thus it might be very good to move onto C after Python, and then onto a more "normal" OO like Java/C#. And then to really get into the FP bracket, Scheme/Haskell.
That
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
----
Our heads are round so our thoughts can change direction - Francis Picabia
|
|
|
|