Other Learning Basic Programming for Kids?

C / C++ is the most important programming language, to be learned.
Note: This discussion is about what a professional software engineer needs to know. In that context, I partially agree, partially disagree.

You need to learn good software design, object-oriented analysis, good software engineering practices, and how to function as a software developer. Those skills are mostly independent of what programming language you use, and they are easiest to learn using a well-designed programming language for today's problems. That is certainly not C (way too low-level), nor C++ (way too complex, with a quarter-century of layers of cruft accumulating). Python and Java are probably the best choices. If you do not have these skills, then anything else does not matter.

In addition, as you say correctly, since a significant amount of software is still written in C and C++ (although less and less every year), a professional software engineer will eventually need to master those languages too. But they also need to master other skills. For example at least a passing acquaintance with awk, lex and yacc is necessary, as is some understanding of assembly, instruction sets, and machine architecture. In addition, I think a well-trained professional should have done some programming in ancient languages (be it ksh, Fortran, or Rexx), to understand where the field comes from, and why our tools are the way they are.

In the long run, a software engineer will learn a new programming language every 2-5 years anyway. Their first language in college matters little. A very successful colleague of mine just retired at age 65, and when he started system programming, C barely existed, and was not yet in widespread use outside of Bell Labs; he spent many of his first years coding in PL/1, assembly, and so on. I had programmed in Basic, Fortran, Cobol, RPG-II, and Assembly before I ever had to use C, and even after that, much work was done in languages such as Objective-C, Rexx, DCL (the VMS scripting language), Modula-2, Ruby, Java, Perl, Python, and a few I have forgotten.

In the end it's about the thing I keep repeating over and over: You get a job because you are an intelligent person, who can function as a software engineer. The skill of coding in one particular language is only a small part of that job. The question we are discussing is relevant and important to education of young people, and a superficial and minor question for college-level engineering and science education.
 
Interesting that you know what every child wants... the choice is theirs, not mine or yours. If junior one day wants to learn FORTRAN, then so be it. It will not hurt him, it did not hurt me or granny before.

And if he/she wants to know what makes the thing tick, daddy fires up the disassembler and starts explaining. Or, maybe after that, digs out the old SPARC with the cadence installation. And the verilog manuals. And when they want to program in brainfuck, let them! You can give them arguments and let them make their own decisions. You should not make these decisions for them.

And, by the way, please take a closer look at your C code. It has unwanted features. ;)
The fact, children don't know what they really want. It's real. They might choose the wrong way, instead of learning from failure they just abandon it all or become depressed (stupid!). Come on, the children of today not the children of the past, who could stand on their own feet. The children now is much weaker mind, they expect a straightforward way full of roses! (hey, my parents will handle it for me anyways!!!). So don't give them that much freedom, give them discipline and something enough for their strength to grasp.

I think it's a waste of time to teach them ASM. Many great programmers gone this way, inspired by this way. I know. But it's not applicable to everyone, sure. About brainfuck, it's crazy to want to learn this thing, if they want, it is the result of curiosity or ego (want to prove themselves) that will lead nowhere. I will stop them immediately.

About the C code, I copy/pasted from the NET, I don't care much because I hate C, and don't have time to type that much just to get a simple example.
 
There are many things true, you are right.

Still some note about Python... Look, when you learn mathematics, at the very beginning (~5-6 years old), you never start with Cosinus, Sinus, ... derivates, Fourier transformations,....
First, the kids will learn just basics, every kids will get through basics first: addition 1+1, 1+2,... then 1-1, 2-1,... and so on.
The same should be with programming, why learning Python when it is not the time. Think about it... how all our educational world works like this. Fundamental and basics first always.

The same is for learning how to drive a car: (1) Rules (1.Test), (2) seating and understanding how works the car, (3) starting engine, (4) ...

Then, it might even make sense to learn Pascal, or C, or even Assembler, or why not basic (e.g. Basic256,...). Just simple few basics, because this will take several years, leaving sufficient time.
 
giahung1997, as a father to five, i am split between finding your words offensive and laughing my rear off.

He who really hates his children removes all obstacles from their way.

Let them do what they have fun in. Let them learn. You can't teach them, only lead by example.
 
There are many things true, you are right.

Still some note about Python... Look, when you learn mathematics, at the very beginning (~5-6 years old), you never start with Cosinus, Sinus, ... derivates, Fourier transformations,....
First, the kids will learn just basics, every kids will get through basics first: addition 1+1, 1+2,... then 1-1, 2-1,... and so on.
The same should be with programming, why learning Python when it is not the time. Think about it... how all our educational world works like this. Fundamental and basics first always.

The same is for learning how to drive a car: (1) Rules (1.Test), (2) seating and understanding how works the car, (3) starting engine, (4) ...

Then, it might even make sense to learn Pascal, or C, or even Assembler, or why not basic (e.g. Basic256,...). Just simple few basics, because this will take several years, leaving sufficient time.
I love Pascal too. For Pascal I prefer the full Lazarus IDE not the text mode Free Pascal IDE :)
 
FreeDOS' repo has a commendable developement section
I started learning sonething there (purely for fun, that is)
WIth FreeDOS, DJGPP (gcc/g++, gdb) and Vim, it is scary how things can almost feel exactly the same as with a modern system.
You even have quite a capable mprotect (http://www.delorie.com/djgpp/doc/libc/libc_588.html).

The only thing I was missing was a tmux or screen clone. There was Desqview back in the day and it works to an extent but causes the keyboard to go laggy in Qemu. Painful when Vim'ing.

I am tempted next Games Jam (an event where you spend 24-48 hours making a game) to go retro and make one in FreeDOS or DosBox.

But yeah, I reckon this setup (perhaps DosBox is a bit simpler than Qemu because of the shared filesystem) on a memory stick could be quite cool for a kid to take to school to learn to program i.e in their lunch times.
 
why not using a turbo c like editor that is GNU, really gnu ?

turboceditor.png
 
That kinda reminds me of RHIDE (a turbo C IDE clone) for MSDOS.
I personally found Vim a nicer workflow. I found the window management of these IDEs awkward when navigating between buffers.
 
That kinda reminds me of RHIDE (a turbo C IDE clone) for MSDOS.
I personally found Vim a nicer workflow. I found the window management of these IDEs awkward when navigating between buffers.


fp ide is cool, for pascal, and it is genuine. Mouse click works too ;)
rhide was nice.

but vim... really, no one can really start easily with vim, especially beginners.
 
but vim... really, no one can really start easily with vim, especially beginners.
Yes, that is true. It is a shame it is so awkward to learn because it fits in really nicely with the workflow of various other tools such as svn, git.

That said, and whilst we are on the topic of DOS programs. Watcom (OpenWatcom) Vi is actually quite a nice introduction to learning Vi / Vim. For example ':e' opens up an actual file explorer to find the file in a more traditional way:

https://github.com/open-watcom/travis-ci-ow-builds/blob/master/docs/vi.pdf

It looks a bit yucky in a Windows cmd prompt. It looks better in dosbox ;)
https://virtuallyfun.com/wordpress/wp-content/uploads/2018/02/owvi.png

Not too long ago I submitted a GitHub issue that the Vi editor was taking 100% of the CPU (standard DOS lack of cpu scaling issue). The OpenWatcom maintainer fixed it within a couple of days.

If I did ever want to subject a child to the wonders of Vi/Vim. I would very likely start them off here ;)
 
i admint i have not red all, i would like to add this observation which still has not come.

if directed to children, the programming language should be in their native language!

i.mean, instead of -- if then else
it should be, e.g. in italy, -- se allora oppure

this trivial thing would greatly increase interest.

sorry for typos , i am on phone keyboard.
 
Rumors of the difficulty of using vim are greatly exaggerated. How difficult is using h-i-j-k-l and the escape key?
Despite what you said I hate that editor so much, much much that if I'm reinstalling the first thing to do is install nano and set it as EDITOR :mad:
 
Despite what you said I hate that editor so much, much much that if I'm reinstalling the first thing to do is install nano and set it as EDITOR :mad:
That is okay, you may dislike any editor you like. I'm pretty sure vi will understand.
 
That is okay, you may dislike any editor you like. I'm pretty sure vi will understand.
Vi-ers don't care but should they shut up about Vim is superior nonsense and other using none-Vim editors are losers? :rolleyes: I use Gedit for Gtk editor and playing with some C and I think it's OK. I'm amateur, hobbyist, and not loser :beer:
 
Since discussion is moved to editors... here is my little contribution.

I prefer "emacs" respect to "vi". Don't ask me reasons, I chose 20 years ago... maybe because at that time I was deeply fascinated by Lisp.

Since Emacs is really a large complex beast, when on servers i prefer to install "mg", to keep shortcuts compatibility with Emacs.

I consider ineed OpenBSD choice of putting "mg" into base system very wise. I hope FreeBSD will follow, one day.
 
Since discussion is moved to editors... here is my little contribution.

I prefer "emacs" respect to "vi". Don't ask me reasons, I chose 20 years ago... maybe because at that time I was deeply fascinated by Lisp.

Since Emacs is really a large complex beast, when on servers i prefer to install "mg", to keep shortcuts compatibility with Emacs.

I consider ineed OpenBSD choice of putting "mg" into base system very wise. I hope FreeBSD will follow, one day.
I'm not hope this thing to happen, I hope all the BSDs remove their outdated version of vi from system base (with NetBSD I tried two hours ago it's nvi) and use something more human usable like the default FreeBSD ee text editor :beer:
 
I'm not hope this thing to happen, I hope all the BSDs remove their outdated version of vi from system base (with NetBSD I tried two hours ago it's nvi) and use something more human usable like the default FreeBSD ee text editor :beer:

First of all thank you, I never heard about "ee", I tried, it is really simple. It is good for beginners and amateurs. I checked in OpenBSD 6.0 and there is not by default in the base an editor for beginners. In this respect FreeBSD made the right decision IMO.

umm, "human usable" depends a lot on the human;)

An experienced user, editing stuff for hours a day, will, with high probability, consider "ee" not practical. So it makes sense for him to invest on learning a more complex editor as Vi or Emacs or something else.

In the past, when i was a beginner I remember i liked "nano".

If you want to learn something very basic, the grandfather of all editors, that will work in the most horrendous conditions, try "ed" ;)
 
Back
Top