|
As someone who has actually taught people to code...
First, everyone is different.
Second, what is usually lacking is are students that understand how to solve a problem!
The answer is always, it depends. I had some kids who developed Lego NXT apps
as their first programming with a GUI.
I had college kids learning Java. (They just wanted to pass the class, mostly).
What is important, to me. Is an expressive set of problems the student is interested in solving.
Teaching them to read/interpret code first, then to write code.
I found that giving students a working solution, and having them make small changes was the fastest way to wet their whistles. The naturals would excel on their own pretty quickly. The others started to pick up the "Oh, if I change this, this changes".
Then from there it gets easier, because they have a basis of the language and how to make it run.
|
|
|
|
|
First languages I ever learned were the Motorola M6800 and DEC PDP-8 & 12 assembly languages in the late 1970's.
The first language I ever did anything actually useful to anyone else in was REXX in 1980. It's a duct-typed script language. I created a questionnaire application used in rating courses and instructors at the IBM Ed center.
I loved REXX. The datatype of a variable was context-of-use-dependent. If x contained "100" then x would (automagically) be a string in string situations, or an integer or float in those situations.
I still think it's a pity it never became mainstream.
If someone is learning programming... hmmmm
My bottom line criterion would be: least distraction from the learning experience
My REXX experience (and perhaps that of millions of MS-DOS BASIC users) indicates to me that the advantages of duct-typed script languages for neophytes are:
- all you need is a text editor (IDE's can be learned later!)
- the runtime environment can be simplified (the person isn't also, say, learning windowing concepts)
- produces feedback for their efforts quickly (the experience of delight is important I think)
- strong typing can be learned later
- they are imperative and that form of programming is (IMO) more intuitive and therefore easier to grasp.
Cheers,
Mike Fidler
"I intend to live forever - so far, so good." Steven Wright
"I almost had a psychic girlfriend but she left me before we met." Also Steven Wright
"I'm addicted to placebos. I could quit, but it wouldn't matter." Steven Wright yet again.
|
|
|
|
|
I have a slightly different perspective on this. I think the language matters less and the environment matters more. In other words, to an absolute beginner, the important thing is understanding what the cryptic words and squiggly characters are going to do within that little world the language resides in and how the language's actions are useful to them.
The problem with most contrived tutorials like "make an array of addresses" or "make the kitty move across the screen until it hits the side wall" is that it's not something they want or need to do and their interest wanes quickly. That 2nd reference isn't a dig at Scratch at all, because I think Scratch is awesome, and the best way I've seen to help young kids understand loops and if/then logic gates. However, if Scratch doesn't ignite more curiosity like, "how can I make the kitty navigate through a maze?", then they're not going to experiment more.
If it's a kid and they're into Minecraft, then learning how to write a Minecraft mod is a perfect task that will keep their experimental fires burning because they want to see that mod work.
Another possibility is writing a basic iPhone app, because it's exciting being able to show your friends, "look at that app in the App Store, I wrote that!", even if the app is just a button you push and it shows a smiley face.
Here's something that sparked my son's curiosity: He was trying to figure out why a Javascript game on a website wasn't working right, so I said, "let's check out the code and see if we can figure out what's going on," and he was blown away that you could click View Source and start poking around with the HTML and Javascript. It really piqued his curiosity about how you can make web pages do things.
If it's an adult and they want to automate some tasks in Word or Excel, then showing them how to write some VBA code is a good intro to programming.
Regarding a specific language, I think Ruby is a pretty nice language, and for a beginner it's nice that it doesn't require semicolons. I don't know Python well but it's nice that it also doesn't require semicolons. Python does require indents/whitespace--not sure if that is confusing or helpful to a beginner? I learned Perl and VB6 at the same time and I remember the case-sensitivity of Perl confused me and it was nice that VB didn't have that, but I also remember that VB's linebreak requirements (like you have to say "If a=b Then" and not "If a=b --linebreak-- Then") confused me and I liked that Perl was fine with splitting things onto a new line.
One neat thing about Python is that it's used in a number of programs for scripting, like the free image-editing program GIMP. Being able to write a Python script to resize or rotate a batch of photos for example would be a cool and useful thing to teach. The Raspberry Pi board also uses Python scripting, which is another possible platform to teach it.
You could definitely just do Python scripting in a terminal window to manipulate a text file, but that's where I think it could get boring to a beginner unless they could see real-world possibilities.
|
|
|
|
|
First, understand that dynamic vs static typing and script vs compiled are NOT tied together.
Second, I recommend losing the pejorative terms such as "duck-typed" as well.
Beyond that, it would depend more on the student's goals and objectives. If they are hoping to become professional developers, then it would help to look at what the local market (or market they want to work in) is looking for. If they are simply looking to play around, then you need to ask what platform they most like, and more.
|
|
|
|
|
Having actually done some teaching of programming to high school kids, I can attest that Python is a nice language to start with. In particular, Python notebooks are a great way to get your feet wet in programming, and teachers can put together nice "cheat sheets" that are actually executable using the notebooks.
I would stay far away from any compile-link-run environment. Goodness, why inflict that on any beginner when there are such nicer options around.
|
|
|
|
|
SirMungus wrote: Goodness, why inflict that on any beginner when there are such nicer options around.
Well, in C# it's pretty transparent, but you make a good point.
Marc
|
|
|
|
|
start with algebra, then work from there, and aim to teach a language, but have learned the concepts, to which can be applied to multiple languages.
|
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
|
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.
|
|
|
|
|
I would recommend the one i'm most comfortable with. Since this person probably will ask me a lot of question when he/she/*he start learning.
Sorry, my english is bad beta!
|
|
|
|
|
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.
|
|
|
|
|
In all likelihood, the revolutions in video and digital will merge into one: with a new generation of media companies producing content we watch at home, listen to in our car and read wherever on the go. And thanks to technology, all your devices will know what you want, where you are and how to serve up content the way you want to consume it at that very moment.
Just like the Web destroyed the newspaper world; mobile will destroy the desktop world and on-demand video will destroy the TV and cable world. But from the rubble will emerge a much better, more eclectic, more efficient way for all of us to watch, read and listen. It will be brimming with content we can be proud of—and happily pay for. Politico co-founder, Jim VandeHei, now fled the honeypot to do some in$anely great new thing, waxes lyrical about a future that I view as a recipe for an Orwellian nightmare: [^].
I will not give thanks to technology that creates devices that know more about me than I do about them, that select content based on algorithms driven by $ale$-and-marketing lust to determine my "$lot" in some giant factor-analysis matrix.
imho, still, an interesting read, but, I find lacking mention of the sites that I think are currently setting a new high-bar for quality on-line content: that would include sites like the BBC, science coverage in the L.A. Times, and Washington Post, New Scientist and Discover magazines, and the very remarkable sites Aeon.com, and QuantaMagazine.org, my current favorites.
While I'd like to believe VandeHei's thesis that crapware spawned by click-bait is diminishing, my cynical "gut" says that will never happen. But, since I limit my use of the internet in a fairly disciplined way (except on CP) ... how would I know ? People, like me, who are old, print-oriented, and "in the way," are not the fresh meat turning the chum-filled bloody waters of the web feeding frenzy into an insoluble puzzle of who's-eating-whom where no one call tell if they are prey, or predator.
If I regard the "redacted" of people as reflected by what they do, how they behave, rather than what they say about existence, values, purpose of life, etc., then I'd have to say my country-of-birth's redacted is shopping. Perhaps that will become explicit, and, in another digital future, people like me will be branded "anti-cons," and prosecuted for our penny-pinching parsimony, forced to walk the streets wearing signs (digital, of course) that alternate displaying advertisements with displaying in huge red-letters: "No Sale." Or, used as "expendables" in some future "Hunger Games" sideshow used to keep the masses distracted with bloodlust from awareness of political tyranny.
It is a small joy to know I will be dead before any of this happens
cheers, Bill
«The truth is a snare: you cannot have it, without being caught. You cannot have the truth in such a way that you catch it, but only in such a way that it catches you.» Soren Kierkegaard
modified 20-Apr-16 7:07am.
|
|
|
|
|
Jim wrote: with content we can be proud of—and happily pay for. It may prove a bit harder in difficult economic times to convince people to spend money on entertainment
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I pay for Netflix and The Economist on-line so I wouldn't say paid content is entirely a lost cause.
|
|
|
|
|
Duncan Edwards Jones wrote: I pay for Netflix and The Economist on-line so I wouldn't say paid content is entirely a lost cause. I'm gonna read a free newspaper in a bit. The old paper thingy, so paper might not be entirely lost either.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
There is, of course, the example of broadcast TV (Free) being overwhelmed by cable.
I'd also go for people buying drinking water as an example of there's no limit to convincing people to pay for what they already get 'free'.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Your tap water isn't laced with estrogen precursors though. It's not quite the same as what you get in cheap plastic bottle. (And it's not just Bis-Phenol A; although as the one most widely used it's far more studied than the others what research has been done on other chemicals similar enough to serve the same use in plastic suggests that they also have the same effect on the human body. Shocking! I know! /sarc)
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
While I'm enthusiastic about how technology progresses I agree that it's also a bit Orwellian. I don't want suggestions pushed down my throat based on what I might want to see. When I search for something new then sure some suggestions can be appreciated but I want it on my terms. Mostly I prefer tag search because it helps you quickly whittle away from the vast amount of content available to find something specific.
I'm only 25 but still feel that a lot of changes happen too quickly for my taste and that a lot of change isn't done to improve something but more for the sake of change.
Your last statement reminds me of a Swedish book written in the 70s or 80s that's really good. Sadly it isn't available in English from what I know but I feel that parts of that book is coming true.
Translated title of the book would be Breaking away from earth. Earth is heavily polluted and divided in a few super powers. Uranium is transported from the outer reaches of our solar system to help further our consumerism. People live in cramped apartments and are basically force fed commercials from their TV which interacts with the recipient to push them to buy buy and buy and if it detects that someone is slowing down in buying they are coerced to do so instead.
I think that one thing that grow in the coming years is VR tech, the basic uses of gaming, movies and porn is a given but this tech will most likely also go through many iterations and changes and provide new services that we didn't know we needed, wanted or asked for. Won't be too long before the first reports of drooling wrecks of what once was humans will come in with people who doesn't want anything to do with real life.
But hopefully in a few years or a decade or so we can expect full field of view augmented reality and I can't wait to load it with the latest psychedelic shaders!
|
|
|
|
|
Member 11683251 wrote: I think that one thing that grow in the coming years is VR tech, Arguably, this could be the final step.
Once in the VR world, your knowledge and perception of everything is totally controlled - you could even be led to believe you're rebelling against the system . . . by that system. Since those in your age-group (and younger) already willingly plug their ears with controlled input at almost all times and places, already, it not only isn't a large leap. No - it's an eagerly anticipated closure for those who don't want to risk interaction with other real humans*
* at least not without their safety device at hand to end whatever they don't like from invading their reality.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
A few things come to mind.
With the 'anti-cons' idea - did you ever watch the Max Headroom TV show ("Max Headroom - 20 minutes into the Future"). There, they had a world run by a few media giants and it was illegal to turn off the ubiquitously placed TV's.
I keep a low profile on the internet, don't answer phone surveys (from cold-calling strangers, no less), or tell anyone anything they cannot show a need to know*. One difference I do, in maintaining my non-bloody-chum status is hiding my trees in a forest. My age, gender, family makeup, and everything else vary from site to site where I am forced to enter it to get what I want. My tree is hidden in the forest.
Even for election polling, basically I give an angry lecture on the fact that we have a secret ballot in this country and it's none of anyone's business who I plan to vote for.
You and I sharing commonalities. Who'da guessed? Or was it, from our often sharp interactions, obvious?
* Perhaps this reply violates that principal?
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
W∴ Balboos wrote: I keep a low profile on the internet, ... tell anyone anything they cannot show a need to know
Um...Member questions & answers - CodeProject[^]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff wrote:
Um...Member questions & answers - CodeProject[^]
??? - Except that someone might be able to identify me from that work? Or that you answer more in a month than I have in, well, a long time.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
"hiding my trees in a forest" ... I really like that analogy ! Yes, I was a "fan" of the Max Headroom series back then ... in the late 1980's ... while my little career as a PostScript "guru" took off, finally getting me to nirvana at Adobe Systems where they were confused enough to deign me a "computer scientist"
"You and I sharing commonalities. Who'da guessed? Or was it, from our often sharp interactions, obvious?"
Well, I have always depended on strange kindness (Blanche DuBois did not say on her way to the mental hospital), and it wouldn't surprise me if we were bound by some strange attractor that amuses itself with our peccadilloes as it dances us in contextual polarity
cheers, Bill
«The truth is a snare: you cannot have it, without being caught. You cannot have the truth in such a way that you catch it, but only in such a way that it catches you.» Soren Kierkegaard
|
|
|
|
|