5 ms·
Why shouldn't they learn C++ and low-level networking?
by seabee 14y ago
Why shouldn't they learn C++ and low-level networking?
- Tichy 14y agoBecause it is not as useful as other languages?
- EliRivers 14y agoUseful in what sense? Are you _using_ an operating system? What language was that written in? So how useful is it? 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.
- Tichy 14y agoIf as a 14 year old your plan is to write an operating system, learning C might make some sense. It just seems like a very unlikely scenario to me. 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.
- wollw 14y agoArduino is C/C++. It's mostly a C++ abstraction built on top of the avr-libc library. The Arduino IDE is written in Java though.
- Tichy 14y agoI think you can program the Arduino in C/C++ (like every other Microcontroller), but I was under the impression that it actually has a Java Runtime and the usual way is to code Arduino programs in Java.
- wollw 14y agoThe Arduino is based around Atmel's 8 bit AVR architecture which really doesn't have what it takes to run a JVM. The ATmega328P which the Arduino Uno board uses has 32KB of code space and 2KB of SRAM which isn't really enough for something like Java. The normal way Arduino projects are built is by defining a "setup" function and a "loop" function which, when compiled, are actually just called by a hidden C++ file with a main function that essentially does this: 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/arduino/cores/arduino/main.cpp https://github.com/arduino/Arduino/blob/master/hardware/ardu...
- irahul 14y ago> Because it is not as useful as other languages? 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; }
- Tichy 14y agoI meant "not as useful" as "not as efficient". Of course you could do everything you could do in Python (or whatever) in C++, since Python is basically a subset of C++ (I assume Python is written in C/C++). It just seems weird to make beginners start with a complicated tool when there are easier tools that can get the same results.
- vt220 14y agoIt is verbose compared to python, which would do this in about 3 lines. 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. These are obviously simple things to anyone with c++ knowledge, but teaching this to someone is just likely to put them off. There's no reason to use c/c++ today unless you're coding drivers or very performance critical things. 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)
- shmerl 14y agoTell me that. C++ is a widely used industrial language.
- anuraj 14y agoa 5 year old may be taught neurosurgery - the point is what is the point?
- deleted 14y ago[deleted]
- seabee 14y agoProgrammers ought to have a lot less hubris about their subject. The difference in difficulty between imperative languages is not as large as you think - and changes depending on the problem domain. 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.
- andrewflnr 14y agoWhether two technologies have analogous roles in two essentially unrelated systems has nothing to do with their teachability to 14 year olds. Some things are just harder. Though in this instance, they could both be taught to talented kids well below 14.
- deleted 14y ago[deleted]