There is an entry age for learning C++? Tell me more about it.
/s
> Will you teach surgery to a 14 year old?
Apparently high school biology followed by 5 years of undergrad followed by 2 years of grad is the same as learning C++.
Now don't go on a tangent about how CS schools need math foundation and are 4 years and you need grad school for deeper understanding. CS education isn't under contention - C++ is. C++ doesn't need a big foundation. An average 14 year old will pick up C++ just fine.
I know sub-14 year olds who are fluent in C and a couple flavors of assembly language.
Underestimating kids is a huge societal failure. We do it a lot. It offends me.
I'm not sure you read the article, or noticed the comment I was replying to.
Why would anyone not offer a class in hard stuff to 14 year olds?? 14 is not some tender sensitive age where kids need coddling.
Kids that can program in "several assembly languages" (your words) are just outliers in "opportunities offered"?
Even in college, heck, even in CS majors, there are kids that "get it" and kids that do not. So, no kids that are programming geniuses at 10 are not just outliers in opportunities.
Besides, the kids that could not pinpoint their country on the map were ALSO taught Geography. They weren't lacking in "opportunities", they lacked in skills, attention, etc.
>Why would anyone not offer a class in hard stuff to 14 year olds?? 14 is not some tender sensitive age where kids need coddling.
And why would that hard stuff be C++? It's not like it's something good to teach even for adults...
C++ was hard, but I had already fallen in love with the magic of making the computer do things with some VB. As a result, I was motivated enough to fight my way through a C++ book.
Kids need a special blend of internal motivation, external motivation, love, and support. Given those things, I promise you that kids will surprise you. Every. Single. Time.
I've met some 14 year olds at http://www.studentrnd.com that code circles around most college graduates. It's not because these kids are intellectual outliers. It's because they have a place to gather with other smart kids and challenge each other to build something just a little bigger and just a little better.
We need to start expecting more from kids and providing them the opportunities to prove that they are deserving of those expectations.
Well, divide the number of the kids that did the same thing with the kids of the same age that did not do the same thing.
The numerous zeroes after the decimal point will show that you were indeed an outlier.
Also going from C++ to Java is a lot easier (and others I'd imagine too) because C++ forces you to master pointers. And of course, Java is filled with pointers but the syntax hides it.
Networking enables the Internet in much the same way the internal combustion engine enabled modern transportation. Yet apparently only one of these topics is considered reasonable for a 14-year-old to study?
I find it baffling.
C++ doesn't have web frameworks, and is big and complicated. If you aren't doing web projects, you can safely stick with a subset(with guidance of course). You mention is not being useful - what is that Python can do that C++ can't? C++ is going to be a bit more verbose, yes, but verbosity is not the only variable. Also, use stl(and/or boost) and your code won't be that verbose. This isn't that bad.
#include <set>
#include <string>
#include <iostream>
int main(int argc, char **argv)
{
// Declare and Initialize some variables
std::string word;
std::set<std::string> wordcount;
// Read words and insert in rb-tree
while (std::cin >> word) wordcount.insert(word);
// Print the result
std::cout << "Words: " << wordcount.size() << std::endl;
return 0;
}A set isn't necessarily implemented using a red-black tree, most likely its a binary tree of some kind, but why would anyone put that in a comment. It's a set, which just means there's only copy of any repeated 'words'.
I think the reason why c++ doesn't make a good language to teach youngsters is because stl is still a beast of a template library, still spits out garbage error messages and is painful to work with even by the most experienced of developers (25+ c/c++ here)
On the other hand, collections and data structures in python are simple, efficiently implemented and extremely succinct, if the value of a dictionary element contains 2 or 3 elements, or is another dictionary, or a map etc it's simple to do this in python, where as in stl pair<int, int> is great until you need three of them, then its auto_ptr or whatever and it starts to get unwieldy and the poor student trying to focus on the algorithm is now bogged down in the with the inelegance of a low level language.
Don't get me wrong, I love c and c++, but i'd rather teach some python or ruby because they can get stuff done and working and not struggle with tedious syntax.
len(set(sys.stdin.read().split(' ')))
C++ does have web frameworks too! Witty (wt)
That can be done as a perl one liner. The C++ program is pretty reasonable as in it matches to the algorithm.
1. Read words.
2. Add words to a set. Set only has unique elements.
3. Print set size which will give you the number of unique words.
> It's also not that great an example because it begs the question why one moment a set of strings ('words' as variable name feels weird to me because I think in c of word boundaries, but whatever) is set<string> (please use 'namespace std') and next moment its char argv.
Questions are good. Questions aid understanding. You are overestimating C++'s complexity and underestimating a 14 year old's abilities.
> There's no reason to use c/c++ today unless you're coding drivers or very performance critical things.
Personally, I think all programmers should have a working knowledge of C or C++. C is the best simulation of the machine. Assembly is closer, but writing assembly is a pain.
> A set isn't necessarily implemented using a red-black tree, most likely its a binary tree of some kind, but why would anyone put that in a comment.
Copied code from the web. Wasn't paying attention. That comment shouldn't be there. A set should be viewed as an ADT and the implementation shouldn't matter.
> I think the reason why c++ doesn't make a good language to teach youngsters is because stl is still a beast of a template library, still spits out garbage error messages and is painful to work with even by the most experienced of developers (25+ c/c++ here)
STL is a beast, yes, but you don't have to know the whole of it. Regarding error messages, I find clang's error messages better.
> Don't get me wrong, I love c and c++, but i'd rather teach some python or ruby because they can get stuff done and working and not struggle with tedious syntax.
I would teach Python as well. I was taking exception to the knee jerk reaction to C++.
It just seems weird to make beginners start with a complicated tool when there are easier tools that can get the same results.
NB: I'm taking your comments to apply equally to C as C++, given the prevalence of C in operating systems. If you really would not have said the same thing about C, I retract my comments.
Also I think a lot of tools for example in Linux are written in other languages.
Most likely scenario for using C as a 14 year old might be doing electronics projects, but I think Arduino is most commonly programmed in Java.
int main(void) {
setup();
for (;;)
loop();
}
The actual file does a bit more and can be found in their git repository here: https://github.com/arduino/Arduino/blob/master/hardware/ardu...