Duck-typed script languages, or statically typed "compiled" languages?
-
Examples of duck-typed, script languages: Javascript X| (what, me biased?) Ruby Python Examples of statically typed compiled languages: C C++ C# Go This isn't a question of which you think is better (I know, the answer is "it depends") but feel free to answer that question, and why (particularly what it depends on). My question is, if you were asked "how should I start learning programming?" would you a recommend duck-typed script languages or statically typed compiled language? Does it depend on what age the person is (for example, your kid, vs. a coworker interested in programming)? Which would you prefer to teach to someone new to programming? Why am I asking this? Because several sources of Python that I've encountered consider it a good learning language, and I'm curious what the experts here think! Bonus (virtual) points for whether you'd pick an imperative programming language or a functional programming language! Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project!
I vote for the non-existing language that combines:
- Has optional types like PHP5
- Object oriented programming and meta programming like C++
- Dynamic like Javascript
- Have syntax similar to C
- Natively provided libraries are documented like Java
I know I have big and unrealistic dreams, but every language I learned goes like 30%-60% on the right track, the rest creates a lot of "why?" questions in my head.
-
Do I have to pick one of those? I'd start with assembly. It's structurally simple and easy to learn incrementally. "Literally a list of instructions" is the simplest model to get used to.
Dude, I can't tell if you're serious. Because if you are, I'd say, "YIKES!" (and more below). If you're not, then I'd be happy to pile on with more helpful suggestions, like "Forget Assembly. If you really want to dip your toes in the water you should start out with machine language -- go straight to the binary, so you can really understand the way the computer thinks!" ...And if I really have to explain my "YIKES" comment... Assembly is a *marginally* useful language to explore for advanced coders. It is absolutely NOT what beginners should be introduced to. That's like giving entry-level math students a calculus book. Seriously. Yikes. Please never teach an intro course.
-
i'd go with the simplest dynamically-typed scripting language i could find. introducing the language plus a compiler & linker is just too much at once.
-
Dude, I can't tell if you're serious. Because if you are, I'd say, "YIKES!" (and more below). If you're not, then I'd be happy to pile on with more helpful suggestions, like "Forget Assembly. If you really want to dip your toes in the water you should start out with machine language -- go straight to the binary, so you can really understand the way the computer thinks!" ...And if I really have to explain my "YIKES" comment... Assembly is a *marginally* useful language to explore for advanced coders. It is absolutely NOT what beginners should be introduced to. That's like giving entry-level math students a calculus book. Seriously. Yikes. Please never teach an intro course.
I actually am serious. I don't disagree about the low relative usefulness. Of course assembly is not a convenient or easy-to-use language. But none of that matters. At its core, assembly is simple. Literally a list of instructions, that is something everyone immediately understands. The syntax is trivial too. What people have trouble with is decomposing problems into the right parts, which is a bit harder in assembly. But you can jump right in. Other languages suffer the problem that in order to do anything (or even *read* anything), a lot of pointless syntax and other magic incantations have to be learned.
kdmote wrote:
Seriously. Yikes. Please never teach an intro course.
Too late. I'm a teaching assistant for a computer architecture course. First year course, straight to assembly (architecture too, of course). They also learn Java in parallel, where they get confused about declarations and types, many stay confused until they take a course in compiler construction. Almost no one is fundamentally confused about assembly, they just find it hard to use.
-
Examples of duck-typed, script languages: Javascript X| (what, me biased?) Ruby Python Examples of statically typed compiled languages: C C++ C# Go This isn't a question of which you think is better (I know, the answer is "it depends") but feel free to answer that question, and why (particularly what it depends on). My question is, if you were asked "how should I start learning programming?" would you a recommend duck-typed script languages or statically typed compiled language? Does it depend on what age the person is (for example, your kid, vs. a coworker interested in programming)? Which would you prefer to teach to someone new to programming? Why am I asking this? Because several sources of Python that I've encountered consider it a good learning language, and I'm curious what the experts here think! Bonus (virtual) points for whether you'd pick an imperative programming language or a functional programming language! Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project!
I would pick statically-typed language to teach someone new to programming. Duck-typed languages, even though they are omitted from syntax, the binary code still deal with typed data. Better fill their heads with what really are under the syntax to begin with. That way they are better equipped to understand when/if they switch to duct-type languages. Teaching new programmer with duct-type languages is equivalent to speaking a foreign language with your interpreter standing by your side.
-
Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you.
DangerBunny wrote:
Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you.
:laugh: :laugh: :laugh: OK, that one is going on my blog, my sig, my wall (the physical one), twitter, where ever I can post it. Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
-
Dude, I can't tell if you're serious. Because if you are, I'd say, "YIKES!" (and more below). If you're not, then I'd be happy to pile on with more helpful suggestions, like "Forget Assembly. If you really want to dip your toes in the water you should start out with machine language -- go straight to the binary, so you can really understand the way the computer thinks!" ...And if I really have to explain my "YIKES" comment... Assembly is a *marginally* useful language to explore for advanced coders. It is absolutely NOT what beginners should be introduced to. That's like giving entry-level math students a calculus book. Seriously. Yikes. Please never teach an intro course.
-
Do I have to pick one of those? I'd start with assembly. It's structurally simple and easy to learn incrementally. "Literally a list of instructions" is the simplest model to get used to.
-
Don't agree... There is a reason people don't use GOTO in c anymore... Assembly is a whole bunch on GOTOs with some non-portable code.
"Program testing can be used to show the presence of bugs, but never to show their absence." << please vote!! >>
Yes, but that reason was that it doesn't scale to large programs and is in general hard to use, not that it's hard to learn or to at least understand the fundamentals. The point of a first language is not writing large programs in it so that aspect doesn't matter.
-
Examples of duck-typed, script languages: Javascript X| (what, me biased?) Ruby Python Examples of statically typed compiled languages: C C++ C# Go This isn't a question of which you think is better (I know, the answer is "it depends") but feel free to answer that question, and why (particularly what it depends on). My question is, if you were asked "how should I start learning programming?" would you a recommend duck-typed script languages or statically typed compiled language? Does it depend on what age the person is (for example, your kid, vs. a coworker interested in programming)? Which would you prefer to teach to someone new to programming? Why am I asking this? Because several sources of Python that I've encountered consider it a good learning language, and I'm curious what the experts here think! Bonus (virtual) points for whether you'd pick an imperative programming language or a functional programming language! Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project!
-
Examples of duck-typed, script languages: Javascript X| (what, me biased?) Ruby Python Examples of statically typed compiled languages: C C++ C# Go This isn't a question of which you think is better (I know, the answer is "it depends") but feel free to answer that question, and why (particularly what it depends on). My question is, if you were asked "how should I start learning programming?" would you a recommend duck-typed script languages or statically typed compiled language? Does it depend on what age the person is (for example, your kid, vs. a coworker interested in programming)? Which would you prefer to teach to someone new to programming? Why am I asking this? Because several sources of Python that I've encountered consider it a good learning language, and I'm curious what the experts here think! Bonus (virtual) points for whether you'd pick an imperative programming language or a functional programming language! Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project!
For a beginner I'd definitely steer clear of functional languages. As far as I know there isn't one scripting language that implements OO cleanly - perhaps Python? - and I think it is important to be able to teach the principles of OOP&D in a language that does i.e. java or C#. But before you get onto OOP you should teach the basics of structured programming. That means you should be starting off with C or Pascal. With languages like C,Pascal,C# or Java in place, the scripting languages will fall in line and the limitations should be more obvious.