Slashdot Mirror


Bjarne Stroustrup On Educating Software Developers

jammag writes "Bjarne Stroustrup, creator of C++ and a professor at Texas A&M, weighs in on the problems in today's CS programs. In particular, Java (there's too much of it), the quality of graduates (companies aren't happy), and the need to balance the theoretical and the practical (long overdue). Not pulling punches, Stroustrup even talks about high schools — 'High schools could teach students to work hard at something (just about anything), to search out information as needed, and learn to express their ideas in writing and orally.' He finishes by giving advice to working developers: 'Serious programming is a team sport, brush up on your social skills. The sloppy fat geek computer genius semi-buried in a pile of pizza boxes and cola cans is a mythical creature, best buried deep, never to be seen again.'" Read on for more choice quotes from the quotable professor.
I have even had questions from strangers in airplanes: "You're a professor? In software? Have you got any students? Here's my card."

The US industry could absorb more good developers than there are currently students enrolled in IT-related programs — but not all of those programs and all of those students would qualify as "good" in this context.

The companies are complaining because they are hurting. They can't produce quality products as cheaply, as reliably, and as quickly as they would like. They correctly see a shortage of good developers as a part of the problem. What they generally don't see is that inserting a good developer into a culture designed to constrain semi-skilled programmers from doing harm is pointless because the rules/culture will constrain the new developer from doing anything significantly new and better.

The contemporary Math, Physics, and Biology books I have seen are far, far more conceptually challenging than what we present to CS and engineering students in the area of programming.

I think the ultimate aim is to make programming more of an engineering discipline, more mathematical or scientific; "craft" and "art" are both needed, but there ought to be a scientifically based core on which people can base their craft and art. Software design and implementation is more than a craft; there is more math, science, and engineering to know and apply than is customary for fields we call "crafts." Incidentally, I find it appalling that you can become a programmer with less training than it takes to become a plumber.

36 of 538 comments (clear)

  1. Back To Reality by MightyMartian · · Score: 5, Interesting

    This is all well and good, and there's no doubt that an engineering/logical approach is very important in programming, but there is something of an art about development as well. I can slog all day coding away, working from diagrams, notes and even flowcharts (though not formalized ones, I'll admit, like days gone by), but sometimes my best and most productive work are those creative flashes I get, when any kind of formal process is tossed out the door. Sure, I have to go back later and comment the code so that even I can understand it, but there will always be that creative aspect to programming, and that ain't necessarily bad.

    --
    The world's burning. Moped Jesus spotted on I50. Details at 11.
    1. Re:Back To Reality by moderatorrater · · Score: 5, Interesting

      I don't think he's arguing against that at all. What he seems to be saying is that programming isn't taught, computer science is, and it's not rooted enough in the practicalities of programming. Style isn't enforced or even talked about all that much. He cites examples of student projects where they sprinkle magic constants throughout because they were never taught otherwise. In my CS courses the labs came every week, dealt with very small, specific problems and then were never looked at again. If Stroustrup had his way, it sounds like there would be style guides for the students (that were actually enforced), bigger projects and maybe some troubleshooting (ie give them 10,000 lines of code and make them find the problem). In other words, there would be things that everyone does on a daily basis as a programmer but were never really taught in school.

    2. Re:Back To Reality by Jeff+DeMaagd · · Score: 3, Interesting

      I can't help but think maybe your impression of engineering is a little off.

      The practice of computer science / development and various fields of engineering are very similar in many ways.

      There is or can be an art or even zen to engineering work too. There is plenty of room for creativity that the stereotype or public impression doesn't even hint at.

    3. Re:Back To Reality by Eskarel · · Score: 3, Interesting

      Where I went to university, at least in some of the earlier classes, proper commenting was half the grade. You could almost pass if your program compiled and was commented using the right formatting even if it didn't actually do any of the things it was supposed to.

      Conversely if your program was perfect and brilliant but contained no comments you could fail.

      That's not quite the same as proper coding style, but it was covered.

      We also did interesting projects like hacking ns to implement a tcp congestion control algorithm from a white paper, and building an, admitedly fully simulated, interrupt system in my OS class.

      One of my friends at a different university had to actually modify the linux kernel as part of his OS course. Not all CS programs are crap, just some of them, same as everything else.

      We did team projects too, and had to plan and work together, build different parts of the system based on a shared interface and put it together.

      I'm mostly a web guy now, and like most people I sometimes get a little sloppy when deadlines are tight, but that doesn't mean I didn't learn it, in Java, C, C++, and MIPS/RISC assembler.

    4. Re:Back To Reality by lgw · · Score: 4, Interesting

      I'd say, more specifically, that there's a real and serious problem today with CompSci grads who (a) don't know what pointers are, and (b) have never seen a Windows development environment.

      So many schools these days do *evrything* in Java, except for some "survey of languages" class. Pointers and recursion are the two fundamental aspects of CompSci that are hard to get your head around the first time. Almost everything else I can teach a bright young intern, but if he doesn't "get" pointers it's not worth trying to teach. Internships are short, and it usually takes *weeks* to become comfortable with pointers.

      Is a 1-semester course in C++ programming too much to ask? Familiarity with the string, vector, and map classes is another hurdle that a student should really jump while in school. Sure, a lot of concepts are language-independent, but there is more than Java in use out here, and if you haven't done C, C++, and Lisp/Scheme, you might be missing some of those basic concepts.

      And it's really a pain to mentor an inter who clearly has never spent much time on a Windows box, and has neve used Visual Studio. Java programming on a Unix system is nice and all, but there are a great many Windows shops out here in the Real World. Even a 1-semester "survey"-style course that forced students to use Windows and Visual Studio would get them over that hurdle.

      I'm not going to refuse to hire a junior programmer just because he hasn't had Windows experience, but when a new hire can't debug, or even build a program using Visual Studio, or in some cases doesn't even know how to copy/paste a file, they've been dreadfully underprepared for the real world.

      --
      Socialism: a lie told by totalitarians and believed by fools.
  2. Dreaming... by Anonymous Coward · · Score: 4, Interesting

    ... the man is dreaming IMHO. If you look at modern computer languages, hardware design, and operating systems, NO ONE is doing good engineering. It took forever (a decade or more at least) to handle crashes in a microsoft OS which had thousands of talented people working on it. The companies that complain about the lack of "good" developers are the ones paying their developers crap and looking to offshore/cut costs. If you want good developers you're going to have to pay them.

    The modern commercial environment for developers is not conducive to fostering great teams, since the all mighty buck reigns and stupid decisions are made.

    From an engineering standpoint: There is no reason for software to break, and yet it does, a lot of the time. To use a familiar example: We see this all the time with video games on the PC, hardware requirements, etc, etc.

  3. Re:Good point by Xylaan · · Score: 2, Interesting

    And if we had been creating software for as long as we've been building buildings, we'd probably be better at software as well.

    I do think we need to get better at educating, but I still think we're in the "Learning how to make practical software WELL" phase of the discipline.

  4. Is coding really a team sport? by tristanreid · · Score: 5, Interesting

    I know about extreme programming, and I've really enjoyed some team programming sessions, but when it comes down to it, I think one reason some people hold a much deeper level of knowledge than their peers is that they spend extreme amounts of time alone.

    Some people:
    --get really good at coding
    --get really good at math
    --get really good at video games
    --read large numbers of books
    and finally some people watch a lot of television

    The people who read a lot of books sometimes gain a better understanding of other people, the people who watch a lot of TV have an increased repertoire of small talk, and in today's world, video games are increasingly a team sport. All of those things facilitate increased human contact.

    People who are fascinated with math and coding tend to have fewer peers who can understand what they are doing. Is this a bad thing? I don't think so. Maybe I grew up as more of an introvert in some regards, but in other ways I'm socially adjusted. I guess the challenge is to guide young people to seek out their peers (those who are fascinated with the same things), and to make friends without making everything into a competition. It's hard for young nerdlings to recognize a peer intellect without wanting to prove themselves better. There is a place for ambition, but that instinct can be a hinderance.

    My two cents,

    -t.

  5. too much Java ... by Sweetshark · · Score: 3, Interesting
    Summary is wrong. There is nothing from BS about "too much Java" in TFA.

    Yet while Stroustrop agrees that Java has been used to dumb down CS programs, ultimately, âoethe problem is one of attitude, more than an issue of programming language.â

    He is not dumb enough to claim C++ superior to Java. After all it is an C++ is so aweful "designed" that if you are not completely sunk in C++-think, you spend more time fighting the language and its warts than actually do useful stuff (like thinking about algorithms and what the machine does like Don Knuth taught us). While Java is very high level it at least got rid of some of the ugliest and worst mistakes that C++ made. Everyone is way better off with C (for systems stuff), Java (for "enterprisy" stuff), Python (for frontends) and sh (for quick and dirty hacks) than with any C++(*).
    http://yosefk.com/c++fqa/
    /End Rant
    (*) And dont tell me its because of the age of C++. Objective-C and Lisp are way older and way better designed than C++ for example.

  6. Re:He sure thinks a lot of himself by binarylarry · · Score: 2, Interesting

    Most of these topics can easily be researched and learned without a university.

    It isn't like say, brain surgery or nuclear engineering.

    --
    Mod me down, my New Earth Global Warmingist friends!
  7. My way of interpreting is null by dilvish_the_damned · · Score: 3, Interesting

    The article starts off by claiming Stroustrup created C++. Fair enough, but then, in the same paragraph, the author claims that C++ is used in "google search" and the iphone. Doesn't the iphone platform stress objective-C ( like all current Apple platforms )? Objective-C != C++. It could be a minor thing since I dont do either, I am just saying something, maybe. Maybe like he does not know his subject matter, or assumes his readers do not.

    The rest of the article was mostly about the Stroustrup history, not what he said in the presentation. Its almost like the author cherry picked a few damning things his subject said in a presentation totaling ~42 words and then gave it a provocative title, and a bunch of interpretation.
    Like I give a shit what the author thinks.

    NOTE: I would apologize for the way my brain works but I am held captive by it. Its not my fault. I think.

    --
    I think you underestimate just how much I just dont care.
    1. Re:My way of interpreting is null by Anonymous Coward · · Score: 3, Interesting

      Stroustrup likes to claim Google as proof that C++ is the greatest, but the truth is considerably more complicated. Here at Google, C++ is used for back-end code where performance (esp. control over memory footprint) is really important. Python is used for scripting. Java is used for almost everything in between. The proportion of Java is growing, mostly at the expense of C++, because (a) engineers are a lot more productive in Java and (b) the fault rate of Java code is considerably lower.

  8. Salaries ARE low by Anonymous Coward · · Score: 2, Interesting

    I was a developer. Highly paid and with lots of stock options. I worked my ass off for years and years making double the average salary. I was on a plane to Japan more than a few times with less than 24 hours notice. "Employee of the year."

    I got tired of it and switched into systems design - technical architecture. My salary went down a little, but my work load became manageable again - 50 hours per week.

    I miss programming. It was enjoyable and gave me a feeling of accomplishment - every day. I'd return, but the salaries are half what I'm worth (IMHO). I'll stay in technical architecture for the higher salary, greater prestige and control and continue my work on outsourcing development where ever it is most efficient (generally, not India).

  9. I also hate bad programmers by CrazyJim1 · · Score: 3, Interesting

    Bad programmers are why companies don't take a chance on good programmers. Many good programmers can't get a job because the HR department thinks you actually need experience in a specific set of software in order to be good at the job. Good programmers know they can pick up most any language and get cracking within a week or so. For me its:"Yeah I've coded since I've been able to type so over 10 years of basic followed by over 10 years of C/C++. A Carnegie Mellon degree in Scientific Computing. No experience, but I have coded several large projects at home." I applied to thousands of jobs on job boards, and I never cracked into the industry.

  10. Hypocrit by CSfreakazoid · · Score: 2, Interesting

    Having taken a class from him, I cannot honestly respect any feelings he has about education. The man is hands down the worst professors I have ever had, He has no concept of teaching, he rather just rambles in class and expects the students to know everything. In a intro level CS class, he expected every student to be proficient in C++, event though in Texas, the high school CS curriculum is entirely JAVA (which isnt a good thing, but it is the way it is). While I agree with what he says, I do not support him even talking about education. If he were not the creator of C++ he would not have a job in Acedamia.

  11. Re:On High Schools doing more... by afidel · · Score: 2, Interesting

    Funding is a necessary but not a sufficient condition for academic success. I attended a school district that spends about half as much per pupil than the big city school district despite having about 3x more special needs kids per 1000. Despite that lower funding level they achieve a 90+% college attendance rate vs about 20% for the large school district. The difference is that in the district I attended (and the similar one my children now attend) the parents expect their children to succeed and put a great deal of effort into making sure that happens.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  12. Re:The companies not happy with grads is pure BS. by Foofoobar · · Score: 2, Interesting

    Well I would even go beyond that to say that schools should teach basic logic and abstraction of concepts; good development requires the developers to be able to abstract well and I see alot of programmers who still think very linearly.

    --
    This is my sig. There are many like it but this one is mine.
  13. Old bloke, out of touch. my 3 quotes by A+Pressbutton · · Score: 2, Interesting


    There is more java about than c++ because it is easier to teach.

    System development and construction are not similar disciplines.

    Programming and Plumbing are similar in that they both start with P.

  14. Re:The companies not happy with grads is pure BS. by mevets · · Score: 2, Interesting

    You seldom know the true reasons people don't take jobs. I am offended at being lowballed, but think it is a good indication you don't want to work there anyways. Smile, nod, and politely turn them down when they make a formal offer. It may be a Canadian thing....

  15. Re:The companies not happy with grads is pure BS. by aafiske · · Score: 2, Interesting

    Do you interview people at all? I'm a programmer, and I do. (We do mostly technical interviews.) There are people coming out of colleges with masters degrees that can't write a stack. In Java. Using anything but java.util.Stack. Who screw up, badly, a simple array-reversal coding question. I know my company pays very well. We are lenient on experience and knowing all the latest whizz-bang technologies if someone can show they can think and solve problems and possess some basic skills. The vast majority fail at this, hard.

  16. Re:Companies Complaining by Billly+Gates · · Score: 2, Interesting

    If colleges did their job and taught students business skills such as economics, accounting, project planning as well as professional programming skills such as object oriented programming, secure coding, MVC, three tier system design and SQL, and not calculus IV obscure algorithms, zxy-tree discrete unified field algorithm garbage we would not have this problem.

    HR is convinced computer science is required for any I.T. job when in fact they do not teach practical skills outside of academia. The .com bust created a large surplus of candidates where they could require it but now its leveling out and they are filtering good applicants out.

    Every other profession out there is trained at a university on how to do their job. HR is trained from a B.A. with a minor in H.R. Chemists are trained with a science degree in chemistry, teachers with a teaching degree, etc. Its logical to assume HR thinks computer science teaches students how to be practical in business.

  17. Programming vs. Software Design by Khopesh · · Score: 2, Interesting

    The big problem with most Computer Science bachelors' programs out there is that they make sure students are well equipped to deal with the hot language of the times (often n-1 due to the slowness of curriculum design). This is currently Java. This ensures graduates can go and get jobs in the industry and make money. However, when that language dies out and is replaced by whatever is next (often C#, Ruby, JavaScript, or even C/C++ with GTK+ or Qt), the graduates don't know how to adapt. Why? They were taught everything they know in just one language, and the lessons were too entrenched in the specifics of that language. They weren't taught to learn, they were taught to code. This separates the good CS degrees from the bad ones.

    Until recently, MIT used a simplified version of scheme to teach its introduction course. The advantage to scheme was that it was mostly academic, and it was simple enough for the students to not get stuck on language-dependent structures (in fact, the course uses its own sub-language to further simplify things), plus it is VERY different from C/Java-style languages (scheme and lisp use prefix notation whereas C and Java use some informal mix of infix and prefix with ambiguous grouping rules). After that, it was on to Java.

    I hear they use python in that course nowadays. Not just python like scripters and web developers use it, but python because it is a simple and easily learned language for the purpose of teaching specific concepts. In fact, the curriculum of that introductory class leans heavily on electrical engineering principles; An article of The Tech from 2006 describes the new entry-level course as "designed to teach freshmen introductory electrical engineering and computer science in an integrated fashion using mobile robots as a case study."

    This pushes the idea of teaching the concepts rather than the language. A well-trained software engineer should be able to pick up a new language in short time, since all the abstract models are known quantities. The hurdles should be in learning or un-learning scrum, agile, and MVC rather than J2EE, Lua, and Qt.

    Proper instruction must be modeled after teaching flexibility and raw logic. Entry-level courses should include basic theory of computation (automata) and should focus heavily on discrete math and logic. Middle-level courses should include statistics, probability, object-oriented design, and should additionally build on the entry-level courses. Advanced level courses should include collaborative design and over-arching design principles like MVC and agile development. At least two different languages should be required by various courses, and the math courses should not use any industry-usable language at all (NFA is a language after all...). Companies tend to vastly prefer CS-Math dual-majors over other degrees because it shows you understand the data structures and algorithms; such a program can't just teach you a programming language and call it a degree.

    --
    Use my userscript to add story images to Slashdot. There's no going back.
  18. Re:Computer science maybe the culprit by deKernel · · Score: 2, Interesting

    Not sure if this helps or hurts, but here is why I mainly only hire developers with degrees: it shows dedication. It might not be the best practice, but being able to "stick it out" shows me that you have the tenacity to stay with a problem and find ways around your shortcomings to succeed because many times, a project throws you in situations where your education will let you down, but you still need to succeed.

    Please note that I said "mainly" because I do realize that there people that do not fit in the normal mold, but they are found very quickly usually through references from friends/family in the field.

  19. Re:On High Schools doing more... by Tatsh · · Score: 2, Interesting

    Agreed. Every student in CS probably knows 'a thing or 2' about computers and will try to multitask. Again and again it has been proven that multitasking actually does not work nearly as well 'single tasking'. The computer multitasks, not the user! So you cannot open up your word processor/text editor, type a paragraph, go on Facebook, (stupid people) check your sports statistics/(smart people) check important news, your downloads on whatever client, and rinse and repeat. For many, this is normal behaviour. And it does not apply to just CS students really. It applies to just about anyone with a PC these days. Older people often do not even know the computer can do more than one thing at once, so they stay focused one thing at a time. Not bad I guess.

    I would love to see a school implement what you are saying. Old computers, no Internet, a foreign but learnable *nix (BSD or Linux with no X until necessary!). And students not allowed to bring their own computers. Then CS can really focus and will learn how to use *nix (not X or any GUI), a good text editor (Vim or Emacs; Nano for quick edits), and everything else necessary without even using a mouse. In fact, take away the mouse completely! Minimalise!

    At my university the normal thing for 1st/2nd year CS students is to go to the "Linux Lab" (old crappy Red Hat with GCC 3.4.x and GNOME), open up an X terminal and ssh (because the server runs x86 and the machines are running x86-64 mode). They could forgo the entire X portion (speed things up too), and use x86 mode.

    I am not sure why every time I go to any lab I find things not set up the way I would like to see. And I do not think I am the only one, nor am I complaining because I am not root. GCC 3.4.x and all the other old versions of software in that RHEL distro is a joke in my opinion. An insult.

  20. Re:The companies not happy with grads is pure BS. by scamper_22 · · Score: 5, Interesting

    I agree with you. However, there are also several issues that I think need to be addressed.

    1. Training. My bother left engineering and went into law. He found it 1000x more professional. For one thing, as he joined, he was assigned a mentor and received proper training. Contrast this to many software companies where managers/other developers actually think 'throw them in the fire' is the best way to train. He's in patent law by the way... making about 3x more than the people doing the inventing :P It's genius actually. In this sense, the suggestion of apprenticeship is a great one.

    2. Quality of People. I don't think the top kids in a high school graduating class are going into computer science/engineering anymore. They have learned it is not a good field to be in. At the end, you're most likely going to end up a regular job that pays above average. With the kind of talent it takes to be a good software developer, you're much better doing something else (Doctor, nurse, CA, lawyer...) So naturally the grads are not going to be 'as good.'

    3. No professional organization. This is a huge one. To the outside world, no one knows what a good software developer does. Just as most of us know nothing of what makes a good lawyer. We treat lawyers like a black box. Here's what I need done... now go. This is how businesses treat software. It is professional organizations that mantain the quality of people. They take care of ensuring people are trained properly and things work as follows. You don't need to know anything about accounting. However, if you're a business and need some complex accounting done, you get a CA not just some guy with a few accounting degrees. It is also why most professional organizations employ themselves. CAs join firms like PWC, KPMG... Lawyers do their own thing. Software developers work for a business. Which yes... makes you just another worker bee.

    But anywhose. I don't the situation improving much in North America at least. Worst of all, all the new investment in new grads is being done in India/China. So it's not like young people in Western Companies are getting the grooming they need. It's a viscious cycle that is only going to make it worse.

  21. Re:On High Schools doing more... by HeronBlademaster · · Score: 2, Interesting

    My high school didn't even remotely prepare me for university-level education. I literally skimmed through high school (that is, minimal effort) and (based on my standardized test scores) I got a scholarship for my first year of university. Then I tried to skim through my first year of university. Needless to say, it didn't work - I had to retake three classes.

    It wasn't a lack of funding in high school that caused the problem. It was because schools in the U.S. aim to teach the slowest student in the class - even in advanced placement classes. (Yes, I realize I'm arrogantly claiming I'm smarter than the rest of my class. Humor me.) The whole "no child left behind" idea is fundamentally flawed - if they teach at the slowest student's rate, then the smartest students are going to be extremely bored, and they're going to turn their attention to unimportant things like video games.

    If high school had required me to actually exert effort to graduate, I would have been far better prepared for a university-level education.

  22. WTF has Bjarne Strouestrup ever done? by Anonymous Coward · · Score: 2, Interesting

    It apppalls me that Strouestrup is appalled that people can work as programmers without having had his University's darn supposedly valuable training. Whatever happened to the time-honoured tradition of a bright kid teaching themself assembler and networking and graphics in their bedroom? How many legendary micro programmers would have made their mark if they were forced to go through that lousy academic education process and pass their lousy applied-math exams (because that's what "computer science" is)? I never did like C++, I always thought the extra baggage just got in the way. I hereby accuse Strouestrup of foisting the whole O-O mess onto the C world. At a stroke thousands of top-notch C programmers were told they were 'out of date' by the HR department who wanted to replace them with the new cheap C++ grads. Then the C++ guys had it done to them when Java came along, then the Java guys with things like Ruby, PHP etc. As soon as I heard C++ acolytes talking breathlessly about "polymorphism" and "abstract base classes" I detected a strong smell of horse-shit. And look what a gargantuan mess they've made of C++ now! This is literally the language you will never stop learning. We are so lucky that C itself has remained largely uncontaminated by this disaster and we must fight to prevent any of that crap being transferred from C++ back into C. And as for industry: they are interested in just one thing; getting it done on the cheap, and paying people as little as possible, wherever they can find them in the world. Fuck 'em. So Bjarne Strouestrup, it's clear to me that you're well and truly serving your new masters at Texas A&M who are doubtless stuffing your fat arse with wonga. If you're so hot, why don't you go write some damn software in that crappy language of yours and show us what you can do? Don Knuth wrote Tex (major respect due); Larry wrote Perl and Patch; the awesome RMS wrote GCC, GDB, EMACS; Chuck Moore is the Forth-meister; hell, Bill Gates wrote MS BASIC (at least in part, in assembler); WTF has Bjarne Strouestrup ever done?

  23. Re:He sure thinks a lot of himself by lgw · · Score: 3, Interesting

    You should be expected to study how to write OS's and rendering programs. You should be able to put graduates in a room with a spec sheet and a computer, expect them to tell you what information is missing or volatile on the spec sheet, tell you how long it will take them, and what language they would be most comfortable using to write the program, and they should be able to write it on the provided computer without downloading any additional programs.

    I disagree with all of this. Estimating completion time comes from industry experience, not training. What does "volatile information on a spec sheet" even mean? Are you talking about figuring out what requirements in a requirements doc are likely to be changed mid-project? That's a valuable skil, for sure, but agian that comes from years of industry experience.

    And as for writing a (non-trivial) program without downloading additional software: half the programmers I know would walk out if asked to use anything but VI to code, and the other half would walk out if forced to use VI. Programmers develop attachments to tools, and I'm not sure what you'r trying to accomplish by asking people to not use the tools they're comfortable with.

    Just in general, the ability to keep going if the "hit a wall" is almost the *definition* of a senior programmer. The more unusual the issue you can work around without help, the more senior you are (Well, for the first few years, anyhow).

    There are many legitimate complaints about CompSci programs today, but it seems like *you* just hate mentoring junior programmers. These aren't problems that a school will fix, these are problems that real-world experience fixes. There's a reason why your second real devlepment job (normally) pays a lot more than your first!

    --
    Socialism: a lie told by totalitarians and believed by fools.
  24. Re:Mythical Creature... by Gorobei · · Score: 3, Interesting

    C++ is C with optional safety-less AK-47s. The top 1% enjoy it, the next 9% live with it, and the other 90% die bemused in a hail of friendly fire.

    Bjarne is now dissing the students. While this is a time-honoured prof activity, he might watch to consider that the students you get is more a reflection on yourself than the pool as a whole. You build shit, and they will come.

  25. Re:Good point by mrchaotica · · Score: 2, Interesting

    If designing buildings was like programming, architects would have to deal with all new materials every few months (can't use the old ones), they'd have customers insisting that walls are best placed leaning 10 degrees out of true...

    Ahem...

    (I agree with your fundamental point, by the way; I just thought that particular choice of analogy was amusing.)

    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  26. Re:Careful by JeremyMorgan · · Score: 2, Interesting

    I agree 100%. All the academic background in the world doesn't prepare you for what the school of hard knocks does. 2-3 years on the job programming taught me more than any school could. We all know the academic solutions, but do we ever use them?

  27. Re:Mythical Creature... by gbjbaanb · · Score: 2, Interesting

    You obviously have only learned half the story on inheritance. MI is a good thing, its just that most modern languages don't implement it because its hard for the compiler writers.

    If interface inheritance was such a obvious and perfect option, why is it that Java (and other Java-a-like languages) provide implementation inheritance?

    MI (and operator overloading) is good, as a java programmer, if you had it you'd be singing its praises.

  28. Re:On High Schools doing more... by devonbowen · · Score: 2, Interesting

    Well, if you want to motivate a child, perhaps you do have to have the latest and greatest, or at least something with some cool factor.

    I'm not so sure. The "cool" part of playing with the old machines is that there was little abstraction back then keeping you away from the bits. If you poked the right memory location with the right number, the pixels on your screen would change. Poke another bit and you'll hear a click on your speaker. That's very cool, in my old timer opinion, and something the kids today almost never get to see. Everything they're learning is so abstract that they don't understand why anything actually works. How boring that would be...

    Devon

  29. Re:Mythical Creature... by Weedlekin · · Score: 2, Interesting

    " MI is a good thing, its just that most modern languages don't implement it because its hard for the compiler writers."

    The problem is that, as the MI mechanism in C++ so excellently demonstrates, coming up with a good way of doing it that doesn't introduce at least as many problems as it solves is what's difficult, not implementing the mechanism itself. An excellent example of this is a common MI ambiguity caused by multiple base classes having member functions with the same names and input parameters. C++ handles this situation via kludges of such epic proportions that calling it "a designed feature" would be stretching the term to a degree where one would also have to call the ability to ruin electronic devices when poured into them a "designed feature" of soft drinks.

    --
    I'm not going to change your sheets again, Mr. Hastings.
  30. Re:The B team is in India... so who cares? by danieltdp · · Score: 2, Interesting

    Wrong. I am not American. Guess from where I am...

    ... from another third world country that suffers some of the same problems as the Indians.

    My point was that you were missing the fact that slashdot is not entirely composed of Americans. So your question "who cares" should raise a couple of "I dos"

    --
    -- dnl
  31. Re:Mythical Creature... by gbjbaanb · · Score: 2, Interesting

    I'm not saying interface inheritance is a bad thing, just that having it as the only option is bad, and that if you're going to allow implementation-inheritance lite (ie single inheritance of a class), you might as well have given everyone full MI.

    Apparently Anders said he didn't put MI into Delphi because it would slow down the speed of the compiler. I heard it was because he said no-one ever uses MI (I think the former is much more likely as loads of people use MI - that's why you see so many posts asking how to emulate MI using interface-inheritance).

    There's only 1 problem with MI - the diamond pattern. God knows there's enough other issues with Java/C#/etc that you have to understand, 1 more surely wouldn't hurt, especially one so well documented on the web already.