Yes, even Bjarne mentions this in one of his talks.
Not sure what to think really, should we get angry how younger generations get taught so outdated information, or be happy that at least they learn something that will allow them to jumpstart into something better years later.
Not sure what to think really, should we get angry how younger generations get taught so outdated information
(I'm an Indian that learned C++ in school using Turbo C++ 10 years ago.)
Outdated? The point of learning programming at that age is to understand the basics - functions / if / for / while, structs / classes, and pointers. All of those work the same in Turbo C++ or in the latest MSVC.
Sure learning C++ via Turbo C++ doesn't prepare the student for modern code that uses `<algorithm>` or `std::shared_ptr` (or `std` at all), but those can always be learned later. The basics are more important.
If anything, the fact that Turbo C++ came with graphics.h meant I could make screensavers like starfield and a visual sudoku solver by myself without any hassle. It made programming fun and was certainly part of the reason I'm a programmer today. I'm not even sure how I would do those with MSVC or gcc today, let alone 10 years ago. WinForms + GDI? SDL? Both are much more complicated than what I remember of graphics.h's API.
Edit: graphics.h was the header with the graphics API, not conio.h
I remember the time when I was a teen and started out with TurboPascal 8. It was a really polished experience with the inbuilt library being enough to do anything console (even a GUI framework). Very found memories and it did show me the basics that I use today without overwhelming with details, squabblings and arcanea (it was fairly consistent). Very different to the patchwork you find if you start today and the constraints to work with a limited set of tools was really great for starting out. Throw an NPM ecosystem with a million terms at a kid today who tries to start out and you have lost the spark. Kids only categorize programming as fun or chore once and it sticks. Luckily there is still Python (you can get very far by limiting yourself to the standard library and it leaves space to actually focus on the exploration of programming).
Yes, outdated, I used Turbo C++ when it came out fresh from Borland software factory, so I know what I am talking about regarding C++ support in Turbo C++. While C support was a mix of K&R and ANSI C, depending on the Turbo version.
All Turbo C++ versions for MS-DOS or the later Windows 3.x versions are older than ISO C++ and have semantics that eventually changed across versions.
Then there is the whole point of them being MS-DOS/Windows 3.x products that run in modern computers with various degrees of success.
There are open source clones of graphics.h and conio.h, and any good teacher could prepare the class material so that the students wouldn't have attrition.
And it isn't just talk, I spent one year doing TA activities so I know how much it costs to prepare such student materials.
Any talk of how compliant Turbo C++ is to modern C++ is missing the point of my post. I'll say again, the point of learning CS at that level of schooling is to learn programming, not learn C++ and instantly be hirable as a C++ developer.
I learned C++ at the 11 grade, back when Turbo C++ 1.0 was still quite recent on the market, and was giving classes to fellow classmates about OOP with Turbo Pascal 5.5, as payment for accessing school software packages and manuals, so I do know a couple of things what about matters at that age, and giving a good preparation for the work market.
Sute, basics are basics, but why not just install QtCreator? Modern day C++ with modern day tooling, GUI, that in all likelihood runs on the machines the students have.
I'd agree with you a decade ago, but nowadays Qt is all over the place (I still like it, just not good to start out - two GUI frameworks in the core library, which one do I choose; the docs certainly don't help). Today you fare better with something like Lazarus to start out or Python if you ignore the GUI.
Oh but you dont need to use Qt at all when using QtCreator. Its just the most fully featured free C++ IDE I know.
On top of that, regular old Qt is still one of the most fully featured GUI frameworks, QtQuick is mostly used for mobile and embedded, even though it also works on desktop. Lazarus or Tkinter aren't better choices for starters, I say as someone who used both.
Qt(Widgets) certainly is good if you know how to use it, you just need someone to tell you what parts to ignore when starting out. Here I put on the "teen who interacts first time with the concept of programming" glasses because of the thread, and consistency and constraints benefit that situation. Unguided first contact with programming through the mess that Qt is today is somewhat counterproductive in this respect. Look at the documentation page for Qt, that's certainly no place where an unguided newcomer could find their way around easily.
Granted, documentation isnt that great for Qt (but there's a ton of other resources). But doing anything more than the simplest of GUI is supereasy with Qt, much easier than TKinter, and IMHO even Lazarus.
But, even if you don't like Qt, QtCreator is still a great IDE. No need to keep using a Dosbox with Turbo C++.
Comments
Yes, even Bjarne mentions this in one of his talks.
Not sure what to think really, should we get angry how younger generations get taught so outdated information, or be happy that at least they learn something that will allow them to jumpstart into something better years later.
(I'm an Indian that learned C++ in school using Turbo C++ 10 years ago.)
Outdated? The point of learning programming at that age is to understand the basics - functions / if / for / while, structs / classes, and pointers. All of those work the same in Turbo C++ or in the latest MSVC.
Sure learning C++ via Turbo C++ doesn't prepare the student for modern code that uses `<algorithm>` or `std::shared_ptr` (or `std` at all), but those can always be learned later. The basics are more important.
If anything, the fact that Turbo C++ came with graphics.h meant I could make screensavers like starfield and a visual sudoku solver by myself without any hassle. It made programming fun and was certainly part of the reason I'm a programmer today. I'm not even sure how I would do those with MSVC or gcc today, let alone 10 years ago. WinForms + GDI? SDL? Both are much more complicated than what I remember of graphics.h's API.
Edit: graphics.h was the header with the graphics API, not conio.h
I remember the time when I was a teen and started out with TurboPascal 8. It was a really polished experience with the inbuilt library being enough to do anything console (even a GUI framework). Very found memories and it did show me the basics that I use today without overwhelming with details, squabblings and arcanea (it was fairly consistent). Very different to the patchwork you find if you start today and the constraints to work with a limited set of tools was really great for starting out. Throw an NPM ecosystem with a million terms at a kid today who tries to start out and you have lost the spark. Kids only categorize programming as fun or chore once and it sticks. Luckily there is still Python (you can get very far by limiting yourself to the standard library and it leaves space to actually focus on the exploration of programming).
I guess you mean Turbo Pascal 7. :)
Yes, outdated, I used Turbo C++ when it came out fresh from Borland software factory, so I know what I am talking about regarding C++ support in Turbo C++. While C support was a mix of K&R and ANSI C, depending on the Turbo version.
All Turbo C++ versions for MS-DOS or the later Windows 3.x versions are older than ISO C++ and have semantics that eventually changed across versions.
Then there is the whole point of them being MS-DOS/Windows 3.x products that run in modern computers with various degrees of success.
There are open source clones of graphics.h and conio.h, and any good teacher could prepare the class material so that the students wouldn't have attrition.
And it isn't just talk, I spent one year doing TA activities so I know how much it costs to prepare such student materials.
Any talk of how compliant Turbo C++ is to modern C++ is missing the point of my post. I'll say again, the point of learning CS at that level of schooling is to learn programming, not learn C++ and instantly be hirable as a C++ developer.
I learned C++ at the 11 grade, back when Turbo C++ 1.0 was still quite recent on the market, and was giving classes to fellow classmates about OOP with Turbo Pascal 5.5, as payment for accessing school software packages and manuals, so I do know a couple of things what about matters at that age, and giving a good preparation for the work market.
Sute, basics are basics, but why not just install QtCreator? Modern day C++ with modern day tooling, GUI, that in all likelihood runs on the machines the students have.
I'd agree with you a decade ago, but nowadays Qt is all over the place (I still like it, just not good to start out - two GUI frameworks in the core library, which one do I choose; the docs certainly don't help). Today you fare better with something like Lazarus to start out or Python if you ignore the GUI.
Oh but you dont need to use Qt at all when using QtCreator. Its just the most fully featured free C++ IDE I know.
On top of that, regular old Qt is still one of the most fully featured GUI frameworks, QtQuick is mostly used for mobile and embedded, even though it also works on desktop. Lazarus or Tkinter aren't better choices for starters, I say as someone who used both.
Qt(Widgets) certainly is good if you know how to use it, you just need someone to tell you what parts to ignore when starting out. Here I put on the "teen who interacts first time with the concept of programming" glasses because of the thread, and consistency and constraints benefit that situation. Unguided first contact with programming through the mess that Qt is today is somewhat counterproductive in this respect. Look at the documentation page for Qt, that's certainly no place where an unguided newcomer could find their way around easily.
Granted, documentation isnt that great for Qt (but there's a ton of other resources). But doing anything more than the simplest of GUI is supereasy with Qt, much easier than TKinter, and IMHO even Lazarus.
But, even if you don't like Qt, QtCreator is still a great IDE. No need to keep using a Dosbox with Turbo C++.