|
BASIC is not seen much and is pretty old. But I did a lot with BASIC for utility things.
I am using Arduino and it's nice if you have an Uno. Get a new board, power it up and it should start to blink the On-Board LED.
Check on Amazon if you don't have a local store.
There's lots of interest and if you write something you can get it to work again by just powering it up.
Write something and if you left out part of something in your attempt the IDE will point to the place where you messed up, like forgetting <big>;</big>
I have lots of Uno's and Nano's. Open source clones are not expensive.
Mike Flood
|
|
|
|
|
To me, it sort of depends on what the student's interests are. Would they enjoy making a website? Then I might recommend javascript. Are they itching to see whether game development is for them? Then I might suggest GDScript (using the Godot engine which is very accessible), or again possibly javascript (there are some decent web game frameworks out there). If they're mathematically-minded and are intrigued by the scientific applications of programming (or AI or something like that), I might suggest python or maybe R. If they don't have a specific goal or direction in mind but just want to be exposed to coding in general, then I'd recommend C# just because that's my (unabashedly biased) language of choice and I would stand the best chance of being a mentor/resource for them. Any of these (among several others) can probably teach the fundamentals of modern programming equally well, but I'd want to meet the student where they are, and use their interests to guide the language choice. If they find early success at making something that they genuinely enjoy or can appreciate, they might be more likely to continue the learning journey!
This is all theoretical, though: I've never actually been asked to recommend a language to a student (at least, not until this survey ).
ETA - I agree to some extent with those who say that the language is not super important. Where I disagree is that I think whatever language you start with should probably be very accessible, meaning that it is easy to obtain and install the tooling, and easy to use the tooling (no byzantine build invocations or toolchains that force all of their complexity on the user).
|
|
|
|
|
|
Languages that use UTF-16 to represent strings should never be teached. Handling text in such languages is hellish. I read that Go uses UTF-8.
|
|
|
|
|
Yeah - was wondering if this was going to be suggested.
cheers
Chris Maunder
|
|
|
|
|
I think it depends on the person.
Some people are going to excel at C++ a month after they pick it up.
Others need to muddle about in something like Visual Basic.
But in terms of a language that is easy to use, while not hamstringing you with bad habits, and a language whose syntax and general operating style is transferable to other C family languages I think C# can't be beat - i port from C# to C++ all the time, and shockingly easily.
So if I had to pick a one size fits all answer for all of this, it would be C#
Real programmers use butterflies
|
|
|
|
|
Visual BASIC — I know that some of you are doing a face-palm, but hear me out:
- It has evolved into a modern block structured language.
- Beginners can quickly see the results of their work in a window.
- The language itself is quite intuitive. I worked in a shop where Visual BASIC was used because "the auditors could understand it." Code written in C# or other languages often required explanation.
- It integrates well with the other Microsoft Visual languages, sharing a common P code and libraries.
- Microsoft has made their compiler packages as community editions available for free and educational editions which are reasonably priced.
- Most databases can be accessed via LINQ without having to learn SQL or some other database query language. (I know LINQ can be used for lots of other things, but these are above the beginner level )
One of the disadvantages of most modern languages is the use of the equals sign (=) for assignment. This runs counter to the way this symbol is used in their prior education, beginning in Kindergarten, if not before. Compounding the confusion is the use of = for testing equivalence, yielding a binary result. (The use of == for testing equivalence in C and its derivatives is an improvement.) It would be better if language designers had used some other glyph, such as ← or the two letter combination <– for the assignment operator (I know, the <– sequence is currently used to delineate comments )
__________________
Lord, grant me the serenity to accept that there are some things I just can’t keep up with, the determination to keep up with the things I must keep up with, and the wisdom to find a good RSS feed from someone who keeps up with what I’d like to, but just don’t have the damn bandwidth to handle right now.
© 2009, Rex Hammock
|
|
|
|
|
C++ has something for everyone. It allows the beginner to use it as no more than "C with classes", and provides advanced facilities for the - from the beginner to the expert. It allows decent code to be written at every level.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
If you can learn that, you can code in any language. Tests your patience.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
*runs screaming*
Real programmers use butterflies
|
|
|
|
|
That was my coup de cœur, twenty-something years ago.
Still love it
|
|
|
|
|
Delphi with DBase was a great place to start for me as well. Best environment. Most fun. Those were the days. But that's really for desktop apps.
I think the best opportunities are now in C# web development. If you learn C# you will have work for the next 20 years.
Learn SQL Server, some JS for client-side and go full stack. Using the free Visual Studio and SQL Server downloads you can create your first data-driven web app the same day if you follow some tutorials.
|
|
|
|
|
I beg to disagree. If my kid would want to start on this road I'd send the young gun on the PHP street corner with MySQL and Postgre
|
|
|
|
|
Pascal, hell yeah.
But Delphi is an overpriced corporate tool these days.
Much better to use FreePascal/Lazarus these days...
|
|
|
|
|
24 years after, somewhere on the edge of the oblivion, with almost 0 sales they realized that times have changed and they issued the free RAD Studio Community Edition, containing Delphi and the good ole C++ Builder hoping that generations of frustrated developers will forgive them
I did, but it's up to the community.
|
|
|
|
|
...until after they learn how to think like a programmer.
After that, "language" is nothing more than syntax constraints on the concepts.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
To learn to think like a programmer requires practice, which means choosing a language. Some languages are more appropriate than others.
|
|
|
|
|
That used to be the case, but language is more dependent on the chosen platform/framework, and the chosen framework pretty much dictates what you learn about the language. For instance learning C++ unmanaged is pretty different than C++ in .Net. Also, you're not going to be doing a lot of C++ when you're writing code for the web, so starting with C++ would not be the best choice.
The actual best answer anyone could expect is, "it depends".
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Are you saying that the question isn't which language to start the student on, but which platform/framework?
|
|
|
|
|
Since you were interested in the template comment I made in the lounge the other day I thought you might like this. It was a bear to write - it took me days - but it compiles a lot of information that's potentially useful but difficult to pull off until you've seen it done once or twice.
Frankly, C++ was oriented for template based programming, not object oriented programming, though it's capable of both, and even (badly) combining the two - if you don't know what I mean by badly, try using multiple inheritance and templates together.
My point is, it pays to learn as much about them as you can. They can only improve your understanding and improve your code.
Metaprogramming in C++: A Gentle Introduction[^]
Real programmers use butterflies
|
|
|
|
|
Thanks for the heads-up. It's on my list of things to read soon. I haven't done anything that fancy with templates, so I look forward to learning some new things.
|
|
|
|
|
While I would agree with modern C++, templates weren't even present in the original version of C++ or its predecessor "C with classes".
I did like the original goals of C++, but must admit I've moved over to Rust now (I do this kind of dev on my own time), as I've lost track of C++ and cannot be bothered to refresh anymore - the language is daunting to keep up to date on, let alone for new programmers.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
That's true but if you agree that the STL is part of C++ then you probably understand why I say it's template oriented. Basically your runtimes are all oriented around generic programming, not OOP
Real programmers use butterflies
|
|
|
|
|
No doubt, in modern C++ templates are far more important than traditional OOP. Classes are still a bedrock of programming though, but inheritance and dynamic polymorphism much less so. Of course, templates give static polymorphism which is much more useful in a systems language.
What I like about Rust is that it makes this the default approach - so generic programming is more natural, and traits play the role of concepts, but again with much more natural syntax. Further, the libraries allow programming at a fairly high-level, but without sacrificing efficiency or safety.
Finally, the error messages are clear and readable, which after years of torture with C++ error messages is a breath of fresh air.
Even with all that, I still wouldn't recommend either as a first language.
"If you don't fail at least 90 percent of the time, you're not aiming high enough."
Alan Kay.
|
|
|
|
|
I really want to pick up rust, but there's not the toolchain i want for it yet. I want something that can backend with LLVM, and cross compile to things like an Arm Cortex-M or an ESP32. Then I will happily use rust all day long..
but for now, C++ is what's for dinner.
Real programmers use butterflies
|
|
|
|