|
Python would, reluctantly[1], probably be my goto for a generic programming language. It has a reputation of being easy to learn, and is widely used outside of core software engineering as a utility/glue language making it more likely the person could use it in the future even if their career is in something else.
But most people don't just come to it saying "I want to program", they have something more specific in mind. So for web, I'd start them with javascript. It's effectively unavoidable on the client side[2], and using node for the server means only needing to learn one programming language at first. If their interest was more hardware/EE related, probably Arduino's simplified new user language with the expectation that I'd probably end up having to handhold their way through C in the near/mid term future.
Any of those would effectively require me to learn whatever I'm mentoring the kid in; but having been doing this at various levels for about 25 years learning Python/Node/Modern C should be something I can do fast enough to keep up with a kid who's able to put 5-10x as much time into it. At least until they're far enough along that they don't need a lot of hand holding anyway.
[1] I strongly dislike some of elements of its language design, but that's a rant for another time and place.
[2] I'm not going to mess with more complex toolchains for anything else with a beginner; especially when 99% of examples are in JS.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing 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
modified 22-Mar-21 13:39pm.
|
|
|
|
|
Need to get the basics first
ok, Im old school..
|
|
|
|
|
The first semester will be nothing but 0's and 1's, need to get those basics right
|
|
|
|
|
And enter it through a front panel, like on a PDP-8.
|
|
|
|
|
Most people seem to be voting for the language they are familiar with, so C# leads. But, think about it - you would recommend that to someone who has never coded before? With mandatory classes, static type system, compilation?
C++ is yet another level of insanity: even most professionals can't use it properly - giving it to high schoolers should be forbidden by law.
|
|
|
|
|
It isn't just a question about which is easiest.
C# has the added benefit of actual being popular out in the real world too. It's a useful language to have experience with, so why not start with it? I mean, the reason so many of us are so familiar with it is exactly because it's a good language in many aspects.
Although Java is very similar to C#, for me it is a pain to work with in regards to runtimes. So it's another level of understanding that a newbie would be better off not having to worry about.
You already said why C/C++ is not a good fit.
JavaScript would have been my second choice because it is very accessible. However, it has a lot of gotchas, and it can be difficult for newbies to identify where JS code is going wrong.
So, what did you vote for and why?
|
|
|
|
|
Python and Javascript are even more popular than C# and both are more appropriate for a beginner.
C# is popular in the world of Microsoft based enterprise applications, but that's not something high schoolers care for.
|
|
|
|
|
The only thing C# really has going for it is that it'd take no extra effort on my part to help the kid out. My answer makes it clear what I think of shifting the difficulty that way.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing 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
|
|
|
|
|
I kind of expected C# to rank high since it's popular with CP. Agree that C++ as a first language for schools beggars belief.
So what did you select? If I had to guess, Python?
Cheers,
Vikram.
|
|
|
|
|
Correct, Python. Although, Basic could work as well. Or even Javascript.
|
|
|
|
|
It would not have been my first choice either.
I tried C# along with a handful of other languages when I was just starting out. C# seemed like a completely baffling mass of mysterious nouns that I didn't know how to tie together.
It was great once I knew how to interact with the framework, but until it clicked there was a lot of "I have a <thingy> now... cool, what is that and how does that relate to what I want to do?".
|
|
|
|
|
The idea is to give them some degree of gratification as the challenge grows. This is important, if for no other reason, than to keep them from posting on Q&A.
I may start by giving them the link to W3Schools. In particular because it allows "try it" and, in many cases, the ability to try it, modify it, and see what happens.
I recommend a progression: HTML -> CSS -> JavaScript -> PHP
Now I do worry, just a bit, that they'll enter a cul-de-sac with these untyped languages but I started with FORTRAN - no declarations of type required and implicit typing for INT vs. FLOAT - no case sensitivity, etc. If they really get fired up they'll probably want to move from WebDev to local applications (and all the power that opens up). If not - nothing lost.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
The Phix Programming Language[^] - then again I am somewhat biased...
FASM for easy install and a better understanding of how things actually work,
JavaScript for no install, dealing with silent failure, and avoiding the bad parts.
Fundamentally any three (at least three) that are wildly different will do - one low level, one C-based, and one not C-based.
Pete Lomax
|
|
|
|
|
C in the early days of my career, then C++ in the mid years then C# later that really allowed me to do the things I wanted to do.
|
|
|
|
|
Not because it's a great language, or it has everything you need to become a programmer, because it's a sh*t language.
But because you can open up Notepad, show some basics and get it up and running without having to download or install anything.
Lesson #2 would probably use C#, or any other decent language, that requires some more effort to get running.
|
|
|
|
|
I seem to be one of the very few who actually likes JS. I just really enjoy the flexibility of it. Sure, there are a lot of traps to fall into, and I have many times in the past, but once you learn them then it's all good.
It would be my second choice after C#. For me, the strongly typed nature of C# wins over the accessibility factor of JS. It's much easier to learn when you constantly have the IDE screaming at you that you did something wrong
|
|
|
|
|
musefan wrote: I just really enjoy the flexibility of it. Me too!
But I hate everything else about it, so all in all it gets a 2 out of 10
|
|
|
|
|
My problem with javascript isn't the language itself, but rather the ecosystem. You need so many dependencies (and so many of them mysterious and indirect, and constantly changing) in order to accomplish anything nontrivial. And you can rarely find useful answers to the questions that come up when something doesn't work the way you expect, instead you just get endless opinions about how you should be using X framework instead of Y library (or vice versa if you're already using X framework). I know it happens outside of javascript too, it just seems to me that it's much more common in that ecosystem.
|
|
|
|
|
of the Visual kind. It hides enough low level stuff and provides anough controls on its own that the student can, in the beginning, use only their own logic to solve problems. It also enables the use of objects, acclimating the student to Object.Method and Object.Property syntax.
After a year or two (consider that I started coding at school at 16, as I chose a technical high school) switching to C becomes easier, especially if used in conjunction with hardware platforms like Arduino or similar. C is still important because, on the other hand, hides NOTHING and is a good complementary to Computer Architecture and OS lectures.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
I would everyone suggest BASIC to start with.
The reason is because most programm-parts are more or less like a spoken sentence and that makes (my opinion) it much easier. If you once understand the Framework it is easy to switch to C# (for example).
|
|
|
|
|
I would click on several.
I agree with the comment below about teaching first how to "think computer wise".
I partially agree with Java, but I would not specially say basic. Maybe C#?
But once the people get practice with the algorithm and the "how computer thinks", I would send them to program PLCs for a while, so they really have to learn how to come with creative solutions out of limited resources.
My senior always tells me how refreshing is to brainstorm with me, because I see things so differently (I was almost 10 years in industry automation with PLC and Robot-arms) and come with ideas that he would have never thought about and are actually way simpler than what he would have done.
I don't say people would have to get the same path than me, but I do think that just a year of professional automation can really improve the way one approaches the software development.
After that... programming at will.
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Quote: I don't say people would have to get the same path than me, but I do think that just a year of professional automation can really improve the way one approaches the software development.
Hi Nelek,
or the other way round ...
My Profession is also Industrial Automation and I must say that the Knowledge about PC-Programming improved my PLC-Programms very much.
|
|
|
|
|
Pay attention to the whole text... I said to start with PC, then PLC (and then back to PC implied)
I started with C and a bit of assembly, then Borland C++ Builder, PICs and PALs, contact plans and Petri nets back then during college.
Then I was a while using Visual C++ 6.
After that the PLC / Robotic years
Then a couple of years in a weird mix of several things related to tech but not really developing.
Now back to C++ and started C# as junior developer to help with a software that interacts with PLCs (where I am the senior).
I enjoy our brainstorming sessions too, because my colleague is really open to new things and analyzes all my ideas. He has even discarded a couple of his to adopt my approaches. Our talks are really productive, interesting and funny at the same time.
Pity is... I have been assigned to another things for immediate / middle future
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
title says
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|