4 ms·
I agree entirely with this. I am not intending to start a flame war here, but this is how I see it: My rationale is that C/C++-based software powers nearly of
by smithjchris 17y ago
I agree entirely with this. I am not intending to start a flame war here, but this is how I see it:
My rationale is that C/C++-based software powers nearly of all computer CPU cycles these days either directly or indirectly.
From mobile phones to massive distributed systems like Google, it's there. It's probably even there in your fridge or smoke alarm these days albeit somewhat feature constrained.
For the Ruby, PHP and Python users, most of your language is written in C!
The .Net framework is mostly C/C++ underneath (Google for shared source CLI). Even the C# compiler is written in C++.
Java is mostly written in C as well.
The iPod software is written in C (not it's not objective-C - check out the About/Legal section for the libraries it uses).
Objective-C even started as a load of C preprocessor macros.
Ultimately, C/C++ is the foundation of the most software in frequent use, the Internet and our society. That's why they should teach it over Lisp/Scheme/Smalltalk/etc etc.
Oh and possibly just as importantly, it works.
- pyre 17y ago> Objective-C even started as a load of C preprocessor macros. So did C++, IIRC. {edit} To add a bit more than a one-line comment, it seems to me that the gist of the article was that young programmers should be exposed to a wide variety of different programming paradigms. (i.e. functional languages, procedural languages, etc) Teaching only C and C-like languages is encouraging a monoculture. It doesn't matter whether or not they will use Lisp or SmallTalk in the real world. The idea is for them to come away with ideas and concepts they would not have been exposed to otherwise. I mean this is a university and not a vocational school. I would expect university students to be exposed to more ideas (even if they are ideas that never get commonly applied in the real world) than someone coming out of a vocational school. {/edit}
- smithjchris 17y agoThe problem with a university education is that it is becoming less relevant. A formal education doesn't necessarily teach people to deliver software, which is critical for the captialist society we live in to operate. A monoculture is seen to be negative due to this insane emphasis on diversity recently. Diversity generally hinders resource pooling which is what allows monumental things to be created. For the record, I am a pure autodidact with no formal qualifications.
- pyre 17y agoI'm not necessarily saying that people need to have a university education to be a productive member of the tech/developer community. But I believe that without a diversity of ideas, the tech community will languish. Requiring a university education for everyone isn't necessarily the answer, but neither is diluting a university education by turning it into a vocational curriculum.
- jimbokun 17y ago"For the Ruby, PHP and Python users, most of your language is written in C!" Are you seriously trying to suggest that understanding the concepts behind C teach you the concepts behind how Ruby works, just because Ruby has a runtime written in C? If not, what are you getting at? "That's why they should teach it over Lisp/Scheme/Smalltalk/etc etc." Are you seriously trying to suggest that Computer Science students should learn only one language, or only closely related languages? That is the part that bugs me. That GT is deciding that their Computer Science students are too dumb to learn more than one kind of language. I wish someone at that school had read Joel's rant about "Java schools."
- erlanger 17y ago> Are you seriously trying to suggest that understanding the concepts behind C teach you the concepts behind how Ruby works, just because Ruby has a runtime written in C? That sounds reasonable to me...certainly not ripe for a "seriously?" label. Of course knowing C would help one to understand how Ruby, Python, etc. work, just like knowing assembler helps one to understand what C is doing. Rich languages like these don't just happen out of the blue.
- smithjchris 17y agoYou need to understand C to understand how Ruby works via observation. Observation and reverse-engineering visually is more important than you think. Understanding programs and being at one with them is the true path to enlightenment, not poking several different languages down your throat. They should however understand theory and implementation separately. Implementation should be the most common form. People forget that you need a job when you leave university.
- applicative 17y ago> C/C++ is the foundation of the most software in frequent use, the Internet and our society. That's why they should teach it over Lisp/Scheme/Smalltalk/etc But maybe this is like saying that the oppression of women is the foundation of our households, economy and our society. That's why they should teach it over justice/equality/common sense. But maybe in school they should at least give one a glimpse of other possible utopias....
- cema 17y agoI fail to see how this analogy is valid.
- smithjchris 17y agoMe neither. Sounds like words for the sake of words.