Slashdot Mirror


Google Engineer Decries Complexity of Java, C++

snydeq writes "Google distinguished engineer Rob Pike ripped the use of Java and C++ during his keynote at OSCON, saying that these 'industrial programming languages' are way too complex and not adequately suited for today's computing environments. 'I think these languages are too hard to use, too subtle, too intricate. They're far too verbose and their subtlety, intricacy and verbosity seem to be increasing over time. They're oversold, and used far too broadly,' Pike said. 'How do we have stuff like this [get to be] the standard way of computing that is taught in schools and is used in industry? [This sort of programming] is very bureaucratic. Every step must be justified to the compiler.' Pike also spoke out against the performance of interpreted languages and dynamic typing."

878 comments

  1. We all know the ideal language has two functions by spun · · Score: 5, Funny

    doWhatIWant()
    and
    doItFaster(doWhatIWant)

    --
    - None can love freedom heartily, but good men; the rest love not freedom, but license. -- John Milton
  2. Oh God... by F0RR · · Score: 0

    So they are complex after all. Who would have thought...

  3. Complex? Difficult? Since when? by Anonymous Coward · · Score: 3, Funny

    Segmentation Fault

  4. Maybe because programmers like to be clear by BitZtream · · Score: 0, Flamebait

    On what they mean for the language to do, and want the compiler to provide as much help as possible while allowing for as much flexibility as possible.

    I'm sure Google will now tell us the javascript is the only way of the future, with embedded python for shits and giggles.

    I'm sorry to say, Google is now officially my new Microsoft. Too big for their own good, to concerned with controlling the computing world for me to trust anything they say or do.

    Shrug, I guess Google will go back to using VB and I'll become irrelevant as a programmer. I'm not going to lose any sleep over my concern for it happening.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    1. Re:Maybe because programmers like to be clear by BitZtream · · Score: 1, Insightful

      Should have RTFA I guess, I now realize Mr Pike just talks in circles and really didn't have anything of value to say other than 'programming is hard'.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      > I'm sure Google will now tell us the javascript is the only way of the future, with embedded python for shits and giggles.

      You could try and read the summary: "Pike also spoke out against the performance of interpreted languages and dynamic typing."

    3. Re:Maybe because programmers like to be clear by metamechanical · · Score: 3, Insightful

      What do you expect? To me it appeared to be little more than stumping for the programming language he wrote - Google Go. Which has yet to impress me. They say that it's flexible like an interpreted language but fast like a compiled one. To me, it seems like it's missing all the cool shit that makes me USE an interpreted language, but doesn't provide the same low-level access that makes me use a compiled one! All languages have their niche, I suppose, and I guess I'm just not the target demographic for Google Go

      --
      If I had a nickel for every time I had a nickel, I'd be richcursive!
    4. Re:Maybe because programmers like to be clear by natehoy · · Score: 1

      embedded python for shits and giggles

      I know what you mean, but out of context it sounds so horribly wrong.

      --
      "This post contains words, known to the State of California to cause thought. Wash brain thoroughly after reading."
    5. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 1, Insightful

      to trust anything they say or do

      Or, maybe, instead of trusting what they say, you could, you know, RTFA and see if the arguments are valid and maybe post some counter arguments.

      I hope you know that JavaScript is one of the most used languages in the world, and that is it not controlled by Google. That in fact Google does not control Python either. And that one of the reasons JavaScript is popular is because it's accessible and easier to learn since you can start without caring about OO or functional programming. A 13 year old can just start document.write-ing his way into a webdeveloper career, print_r-ing his way through Wordpress after Wordpress site for his friends, family and local barbershop.

      Seriously, there's no conspiracy here, and comparing to Microsoft is lame in this context. (Although, Microsoft is also starting to see the value of dynamic languages lately, hmm, maybe they and Google have a point?)

    6. Re:Maybe because programmers like to be clear by lgw · · Score: 5, Insightful

      This same rant has apeared generation after generation, and often from peope smart nough to know better. It's why COBOL was invented, with syntax like.

      SUBTRACT DEBIT FROM BALANCE GIVING NEWBALANCE.

      I kid you not, Adm Hopper actually thought that would make programming easier, and she was no moron.

      Guess what guys? The reason programming is hard is because you must clearly and unambiguously state what you want to have happen. Yes, the languages could surely be better - the syntax and intricacies of C++ are pretty nightmarish, and Java only fixes some of those issues while introducing others. There's surely a better way to do resource management, and multi-threading, that are less error prone without making you give up needed control. But it's still going to be hard to solve hard problems, and you're still going to need to be very precise and detailed in describing how to solve a problem.

      Irreducible complexity is irreducible.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    7. Re:Maybe because programmers like to be clear by bsDaemon · · Score: 1

      A guy who co-authored a couple of books with Brian Kernigan and co-invented UTF-8 with Ken Thompson is entitled to his opinions, although after watching the OSCON speech, I'm inclined to believe he shoulder the lighter part of the burden on those projects.

    8. Re:Maybe because programmers like to be clear by MightyMartian · · Score: 2, Interesting

      Not to mention that, no matter what language you use, certain algorithms are going to be inherently complex, and in these areas the "simple" or "true" languages fall flat on their face. I've been coding in one form or another since the mid-1980s, and what I've seen from the "simple" languages is that they might be useful for teaching, but try to write a complex application or solve complex problems, and that simplicity simply makes the code even larger and more awkward.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    9. Re:Maybe because programmers like to be clear by lgw · · Score: 4, Insightful

      UTF-8 was one moment of genius insight ("make sure the escape sequences cant be confused with notmal characters"), and the rest was trivial. The details weren't even very well thought through beyond that one clever idea: real standards deal mostly with error handling, and UTF-8 totally dropped the ball on that, leaving RFC 3629 to pick up the slack. If anything, co-inventing UTF-8 is an argument that he doesn't know much about real-world programming (Ken has of course proven himself elsewhere). Being the author of RFC 3629 (F. Yergeau) and cleaning up the mess would make one's opinions much more interesting!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    10. Re:Maybe because programmers like to be clear by Zarel · · Score: 5, Informative

      Should have RTFA I guess, I now realize Mr Pike just talks in circles and really didn't have anything of value to say other than 'programming is hard'.

      No, he doesn't. TFA-writer Joab Jackson talks in circles and doesn't have anything of value to say. Mr. Pike, on the other hand, appears to be saying that Google Go fixes a lot of unnecessary complexity in Java and C++.

      His keynote isn't linked from either the Slashdot summary or TFA, but can be seen here: http://www.youtube.com/watch?v=5kj5ApnhPAE

      --
      Want a high quality FOSS RTS game? Try Warzone 2100!
    11. Re:Maybe because programmers like to be clear by Shompol · · Score: 4, Insightful

      I'm sorry to say, Google is now officially my new Microsoft. Too big for their own good,

      Big != evil. While M$ uses their clout to squish the competition, bribe the government(s), and get away with plenty other unlawful stuff, Google grows mostly by providing a superior product. There is a long way before (if) they become the new M$.

    12. Re:Maybe because programmers like to be clear by markov_chain · · Score: 1

      I was just reading over this page the other day and thinking to myself how bloated Java is getting.

      --
      Tsunami -- You can't bring a good wave down!
    13. Re:Maybe because programmers like to be clear by skiflyer · · Score: 1

      Yes, irreducible complexity is irreducible. But C++ has plenty of reducible complexity.

      Adjusting code for multi-threading or moving from 32 to 64bit are two simple examples. It's reasonable to consider a compiler having the smarts to do that. Garbage collection is another obvious example that many languages have dealt with. Memory protection.

      I dunno, that's what comes to mind immediately. C++ let's you handle virtually every registry action and memory copy. That's not a bad thing, but it's probably not necessary for a lot of the programs it's used for. More to the point, it likely costs many of those programs a lot of developer/testing/user time because they're putting a lot of time into resolving the same issues again and again that the compiler is perfectly capable of handling.

      I think the article pretty succinctly draws the ends of the spectrum between assembler and non-typed interpreted languages. The real question is where does the best compromise lie on that spectrum. It's going to be different for every product, but the supposition in the article is that C++ is way too far towards assembler.

      Personally, I can agree with that.

    14. Re:Maybe because programmers like to be clear by dosius · · Score: 1

      LET NEWBALANCE = BALANCE - DEBIT

      perfectly logical to me, and not excessively terse. And most BASIC environments don't require LET.

      -uso.

      --
      What you hear in the ear, preach from the rooftop Matthew 10.27b
    15. Re:Maybe because programmers like to be clear by Grishnakh · · Score: 2, Interesting

      Yep, it's like different natural human languages. Some are much simpler than others, and don't have so many cases and tenses and such. However, to express more complex thoughts (such as "he would have liked to go home"), you have to be extremely wordy, whereas with a more complex language, you just use a different verb tense.

    16. Re:Maybe because programmers like to be clear by EvilBudMan · · Score: 1

      I've lost some sleep already. Google is just not doing things right as before.

    17. Re:Maybe because programmers like to be clear by surmak · · Score: 1

      Should have RTFA I guess, I now realize Mr Pike just talks in circles and really didn't have anything of value to say other than 'programming is hard'.

      You are aware that he literally (co)-wrote the book on UNIX. While you may disagree with his ideas, his credentials are impeccable.

    18. Re:Maybe because programmers like to be clear by Muad'Dave · · Score: 2, Informative

      ... "make sure the escape sequences cant be confused with notmal [sic] characters"...

      That was figured out _long_ before UTF-8. In fact, having been born in 1956, Rob Pike was probably exposed to the concepts of Control Codes and bisync as well as all the other framing methods that use escape characters to indicate in-band signalling.

      Have you ever wondered what all those control characters are doing wasting space down there under decimal 32? Link management, that's what. Start of Header, Start of Text, End of Text, End of Transmission, etc. They were all used to keep systems in sync across the (nasty) comm lines of the day. Even [XYZ]-modem used a similar setup.

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    19. Re:Maybe because programmers like to be clear by stephanruby · · Score: 1

      On what they mean for the language to do, and want the compiler to provide as much help as possible while allowing for as much flexibility as possible. I'm sure Google will now tell us the javascript is the only way of the future, with embedded python for shits and giggles.

      I must have missed something. Since when do the rantings of one lone academic who works at Google mean that this was the rantings of more than one person, or even the official position of the entire company?

    20. Re:Maybe because programmers like to be clear by lgw · · Score: 3, Interesting

      C++ done right with scoped classes doesn't need garbage collection. No, really it doesn't, most people have just never worked with scoped classes, and it's mind-boggling that they don't show up in C++0x (other than the half-useless auto_ptr we've always had). I have a real problem with garbage collection in production code, because it's freaking hard to find and plug resource leaks. If you forget to close a file in a garbage collected language, it will probably get closed eventually when the garbage collector cleans up, but the program likely has some bug anyhow, and the GC has made it a horrible intermittant bug that changes behavior in a lab environment!

      C++ has two key abilities that any good language needs, but few have: scoped resoruces (but only in that it allows you to add them yourself!), and const references. Why are people still making high level languages where references aren't const by default?!? In C# I can't (usually) tell from the function signature whether changing an argument will change the caller's copy, nor can I be sure from an interface that a given function won't alter what I pass to it - what insanity is that? (And Java is only slightly better.)

      --
      Socialism: a lie told by totalitarians and believed by fools.
    21. Re:Maybe because programmers like to be clear by westlake · · Score: 4, Interesting

      It's why COBOL was invented, with syntax like.
        SUBTRACT DEBIT FROM BALANCE GIVING NEWBALANCE.
      I kid you not, Adm Hopper actually thought that would make programming easier, and she was no moron.

      COBOL was designed like this so it could be read and understood by corporate auditors and accountants - and for the recruitment and training of accountants as COBOL programmers.

      It makes perfect sense when you remember that modern bookkeeping rules are the product of hundreds of years of law and practical experience which the neolithic geek did not have.

         

    22. Re:Maybe because programmers like to be clear by lgw · · Score: 2, Informative

      Yes, you can do it the sane way. But my point was that someone actually thought the verbose way was easier to understand!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    23. Re:Maybe because programmers like to be clear by bonch · · Score: 1

      I get the impression that developers sometimes forget that programming languages are engineering tools. People building houses don't complain that the hammers and nails aren't pretty while they build a foundation. Part of your job is dealing with hard, ugly, complex things. You're instructing a machine.

    24. Re:Maybe because programmers like to be clear by lgw · · Score: 2, Interesting

      No, I think you missed the point entirely here: those escape sequences would begin with a control character, but contain normal characters. So if you were grepping for "foo" you might get a false positive because "foo" appeared in an escape sequence. UTF-8 ensures that will never happen. Any existing code that uses reasonable algorithms to search or sort ASCII text still works reliably with UTF-8 text, but didn't with earlier escape sequence schemes.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    25. Re:Maybe because programmers like to be clear by BitZtream · · Score: 1

      Yes, and it doesn't impress me. Writing isn't hard.

      He also promptly called UNIX dead, and pretty much trash talks about everything that isn't his and how his is better, yet no one seems to give a shit and no one that matters uses it.

      Anything he's contributed too that people actually use, they use because of what other people did, not his contributions.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    26. Re:Maybe because programmers like to be clear by bonch · · Score: 2, Funny

      Yeah, it's not like Google is driving past your house to take pictures and index your WiFi network or anything. Sheesh!

    27. Re:Maybe because programmers like to be clear by ciggieposeur · · Score: 5, Interesting

      Nearly everything I was unhappy about in C++ is better in D.

    28. Re:Maybe because programmers like to be clear by SplashMyBandit · · Score: 1

      C++ is a multi-threaded environment with shared resources is vastly harder than Java. That's what makes the garbage collector worthwhile. I agree that using the stack where possible with your scoped classes is good, but sometimes you just gotta use the heap, shared the object around between threads and synchronize your resources. Then you're told you have to make it work on the Mac, Windows and the Linux servers, but don't have time to integrate three sets of libraries. See where Java might be useful now?

    29. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 2, Informative

      Good thing Google doesn't have an illegally close relationship with the government that benefits the company!

    30. Re:Maybe because programmers like to be clear by iluvcapra · · Score: 1

      Guess what guys? The reason programming is hard is because you must clearly and unambiguously state what you want to have happen. Yes, the languages could surely be better - the syntax and intricacies of C++ are pretty nightmarish, and Java only fixes some of those issues while introducing others.

      Java and C++ aren't overly complex because they give you tools to unambiguously describe an algorithm; every language has that. Java and C++ are "complex and bureaucratic" because they supply a huge set of tools not for describing algorithms, but for describing how other programmers are allowed to interface and reuse algorithms. Algorithms that are unambiguous to the interpreting machine can be VERY ambiguous to another programmer that has to call or extend the original, so formalisms of interfaces and types and generics are added so that developers can use the language to tell other developers what to do and set policy.

      --
      Don't blame me, I voted for Baltar.
    31. Re:Maybe because programmers like to be clear by imunfair · · Score: 1

      That example is exactly why I dislike "simple" languages - by trying to be intuitive they make the problem more difficult.

      Applescript is a great example - I knew what I wanted to do, and in a normal language it might have taken me 20 minutes, but it ended up taking half a day figuring out which words made it jump through different hoops. Not to mention that some similar words behaved completely differently, and minor changes in the order of words in a sentence completely changed functionality.

      The point is, when you put things in natural language it becomes difficult to ascertain what will produce the result you want, since there are so many ways to phrase a request. In the end you need to learn the same amount of details about the syntax, it just makes you type more and becomes easier to confuse a programming word with an everyday word accidentally.

    32. Re:Maybe because programmers like to be clear by BitZtream · · Score: 3, Informative

      I'm aware of who he is, what he does now and what he's done in the past. I've now seen his keynote.

      My opinion hasn't changed. He has nothing to say and talks himself in circles, I'm guess you just don't see it due to lack of understanding, of course maybe I'm the one that doesn't understand.

      Who knows, but I'm going to stick with my original assessment that he's just a blow hard spewing about his latest creation and how everyone elses sucks because his creation some how mysteriously fixes the problem that no one else has.

      You go listen to what he has to say, I'll continue getting things done while you go play with a new language because its 'better' until you realize that its exactly the same as all the others.

      When you start telling me that the language is the problem I realize instantly that you aren't that great of a programmer. My one exception to this is Visual Basic (not BASIC, VB specifically). It is a shitty environment because of the shit support library MS made for it.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    33. Re:Maybe because programmers like to be clear by LWATCDR · · Score: 1

      But each complex piece of code should only be written once.
      When I first started everybody had to know how to write sorts, btrees, and hash tables.
      If you where really into it you learned how to create a sparse array.
      So many of those things have been folded into libraries now which is a good thing.
      The real problem then becomes a massive collection of libraries.
      Which adds all sorts of new complexity.

      I do think that c++ and java have gotten more complex than you need but mainly because of the growth of the standard libraries.

      Of course I would really like to go with managed memory solutions but even that has it's limits. I wouldn't be really happy using those in an embedded situation.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    34. Re:Maybe because programmers like to be clear by Timothy+Brownawell · · Score: 1

      and it's mind-boggling that they don't show up in C++0x (other than the half-useless auto_ptr we've always had).

      I thought shared_ptr (from boost) was being added to the standard library?

    35. Re:Maybe because programmers like to be clear by jedidiah · · Score: 1

      ...plus the idea that there are a variety of things to build and thus a variety of appropriate tools depending on the project.

      Skyscraper welders and residential framing carpenters both build buildings but they're worlds apart.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    36. Re:Maybe because programmers like to be clear by hlee · · Score: 1

      Irreducible complexity is irreducible.

      Still, I'd like to stress that picking the right language for your task can greatly reduce problem complexity.

      For instance, algorithms are much more compact and easier to understand using a functional programming language. E.g. compare quicksort in Haskell and C - see http://www.haskell.org/haskellwiki/Introduction.

      Complex concurrent programs remains challenging even with an excellent (IMO) concurrency library like the one in Java 1.5+. But switch to Erlang, and you'd find many concurrency patterns are expressed more naturally.

    37. Re:Maybe because programmers like to be clear by lgw · · Score: 1

      Normally, reference counted pointers (C++'s shared_ptr) work just as easily as GC for resoruces that need to be on the heap. But of course there are exceptions. One of the great disappointments of C++0x is that it lost "opt-in" garbage collection for those exceptions. But, in general, "opt-in" garbage collection would be an excellent idea in a modern language. (C++0x does have threads in the standard library though, and of course there have been open source cross-platform libraries for threads forever.)

      Java solves some very useful problems, but IMO it doesn't solve them the best way: the dependence on bytecode can be avoided simply by providing good (language-standard!) libraries over the system-specific stuff. Don't underestimate the value of being able to debug close to the metal! Sometimes you have a system-specific bug, and if the only layer you have acces to is system-independent stuff that's a huge pain.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    38. Re:Maybe because programmers like to be clear by ciggieposeur · · Score: 3, Interesting

      Even [XYZ]-modem used a similar setup.

      Not quite. Xmodem and Ymodem use SOH and STX to denote start of sectors and ACK/NAK, but after that it's just a raw 8-bit file dump to the checksum/crc bytes with no concern for character set encoding. Zmodem uses DLE and escapes out most of the C0 bytes (XON/XOFF and CAN must be escaped regardless of session flags), but doesn't use the rest of the codes for anything.

      Most of C0/C1 codes mixed right in with the text for formatting/presentation, e.g. embedding backspaces followed by underscores to get underlined text. Some of the others did link-level too. It was a mess, so much so that parsers for ANSI X3.64 / ECMA-48 style escape sequences take a LOT of work to get right (passing 'vttest' is not trivial).

      UTF-8 isn't bad. It specifies that character decoding be done before any other processing including C0/C1 and ANSI escape sequences, which makes it very easy to integrate on the reading side. Harder is dealing with wide chars on the screen and user I/O. Compared to Avatar's repeat character and ANSI fallback features, it's much more bang for the buck. And let's not talk about "ANSI Music" and it's use of SO (Ctrl-N) because it's the "music symbol" in CP437!

      (Disclaimer: I've written a console-based terminal emulator that does a decent VT102/220, UTF-8, X/Y/Zmodem/Kermit, and lots of other things.)

    39. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 1, Interesting

      ...Google Go. Which has yet to impress me.

      There are some impressive parts of it that would make me want to use it over C, but it seems like it's still in its nascent stages and not ready for serious use yet. The biggest thing I can see that it needs is full two-way integration with existing C code...cgo is a terrible hack that only works to call C code from Go. They also need the ability to create shared libraries to allow C code to call into Go programs.

      I've been disappointed to see them ignoring that kind of stuff and instead focusing on all the Go packages. If you solve the integration with C, the standard library stuff becomes less important because everything they'd implement has a C equivalent that could be used until they've had a chance to implement a Go version.

    40. Re:Maybe because programmers like to be clear by lgw · · Score: 2, Interesting

      shared_ptr solves a different problem. An example of a scoped resource is a file handle that you allocate on the heap, that automatically closes the file when you leave scope, whether by returning or by an exception flying past. With scoped resources you can just stop thinking about all the "does my resource get cleaned up if this happens" cases entirely! You should never explicitly clean up a resource, so there's no way to forget to do so in some corner case. Just like a "using" block in C#, except it's the default, so you can't forget to do it (the most malevolent bugs I've fought were people forgetting to use a using block).

      Combine this idea with shared_ptr and it works for heap resources too, not just stack resources.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    41. Re:Maybe because programmers like to be clear by lgw · · Score: 1

      For instance, algorithms are much more compact and easier to understand using a functional programming language.

      Sure, if you spend all day inventing clever algorithms. But that's a dream job, and probably describes less than 1% of professional programming work. The initial learning curve for functional languages is pretty steep, and the time spent it would probably be a net loss for most careers (sadly enough).

      I have a huge problem with most attempts to "hide the complexity" of concurrent progamming: the dreaded common thread pool. If my process has 5 different places where a problem is solved concurrently, and in one of those places everything stalls out due to long timeouts on I/O errors or something, it must not cause the other 4 places to grind to a halt. That's a terrible abstraction layer, because you just created and hidden incredibly important dependencies, which I need not to be there in the first place. Have all the clean expression you want, if you're going to sneak in inappropriate dependencies I don't want it.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    42. Re:Maybe because programmers like to be clear by General+Fault · · Score: 1

      Besides, using "using" works nicely for scoping classes.

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    43. Re:Maybe because programmers like to be clear by Haffner · · Score: 1

      Great Example!

      --
      "Going to war without the French is like going deer hunting without your accordion." ~General Norman Schwarzkopf
    44. Re:Maybe because programmers like to be clear by lgw · · Score: 1

      Sure, but there's no other way to do a large project if you can't enforce promises that code you don't understand won't wreck your code. C++ and Java are complete overkill for any problem that one programmer can solve in a week and that's a lot of modern programming, but that bureaucratic stuff is there for a reason.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    45. Re:Maybe because programmers like to be clear by General+Fault · · Score: 1

      I've never had a problem with C# garbage collection. I close my files when I'm done with them rather than in the descructor for example. I have had many problems with C++ memory allocation and COM reference counts however. I've spent hundreds of hours over the years trying to find out why a given object still has a reference count and is not destructing. I've also spent countless hours tracking weak references and null pointers. Not fun... and never again now that I use C# for most (but not all) of my coding.

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    46. Re:Maybe because programmers like to be clear by h4rr4r · · Score: 1

      What's wrong with that?
      They can have as much of the light bouncing off my house as they want, if I cared I would put up a fence. The Wifi I broadcast is all encrypted but if they want to record what that machine shouts I say go for it.

    47. Re:Maybe because programmers like to be clear by General+Fault · · Score: 1

      Quicksort in C#: array.sort(); There... done. :) And yes, I could code quicksort from scratch, but what is the bloody point? I'm not trying to show off and very few people get to see my code anyway. I argue that picking the "right" language was once a very important thing. These days it is getting to be less so. It is far more important to pick the "right" design pattern. I recomend the following book for any coder. Know it and live it. http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    48. Re:Maybe because programmers like to be clear by ProfessorKaos64 · · Score: 0

      Your sig: dont you mean, I'd be recursive??? O.o

    49. Re:Maybe because programmers like to be clear by ProfessorKaos64 · · Score: 0

      Your target demographic should be those in SCHOOL :)

    50. Re:Maybe because programmers like to be clear by Alcoholist · · Score: 3, Insightful

      As far as I'm concerned COBOL is the perfect programming language. I'm a little biased as I worked as a COBOL programmer for a time, but you have to admit the syntax is very easy to read.

      A well written COBOL program is like reading a little battle plan. It tells you, in plain English, what it intends to do and the ruthlessness of a COBOL compiler forces you to create readable, structured code.

      Every COBOL programmer knows where the period is supposed to be. C programmers still haven't figured out where the braces should be. It says a lot about a language when you have decades-long debates about punctuation in your code. It encourages a lack of programming discipline which I feel is the leading reason why software is so buggy today.

      --
      Bibo Ergo Sum.
    51. Re:Maybe because programmers like to be clear by lgw · · Score: 1

      As I said elsewhere in this topic, the most malevolent bugs I've ever dealt with are where someone forgot to use a "using" block (malevolent because the bug would act differently in the lab and the customer site, becuase it was all dependent on when the garbage collector ran).

      malloc() and free() works nicely for managing memory, you just need to get it right every time. "Using" blocks make it easier to get it right every time, but are still prone to human error. In a good programing language, the "using" block would be implicit by default when you allocated the object, and you would need to declare it "shared" or somehting for those corner cases where you want it to survive leaving scope (and done properly, "shared" would only create a problem where there was an algorithmic error, not a simple oversight).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    52. Re:Maybe because programmers like to be clear by lgw · · Score: 2, Interesting

      Sure, if you can get the "closing them when I'm done with them" right every time, never failing due to human error, you're golden. However, one wonders why you'd need a garbage collector, or for that matter a text editor - can't you just move the bits around on disk with the power of your mind? :)

      But, yeah, any time you see weak pointers a living hell awaits. Garbage collection is much better for those corner cases (and, dammit, for a while C++0x had "opt-in" garbage collection, but lost it. It's the best of both worlds!) I'm not the biggest fan of WCF, but it does have one thing goint for it: it's not COM.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    53. Re:Maybe because programmers like to be clear by Grishnakh · · Score: 1

      So what? If your house is visible from a public street, people are perfectly free to take pictures of it. And if you're too stupid to enable encryption on your WiFi network, that's your problem.

    54. Re:Maybe because programmers like to be clear by lgw · · Score: 2, Funny

      the ruthlessness of a COBOL compiler forces you to create readable, structured code

      You should ALTER your views on this subject.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    55. Re:Maybe because programmers like to be clear by bonch · · Score: 2, Insightful

      How will you fence off a satellite image?

      I know, I know, it's pointless to argue with Slashdotters who looooove Google.

    56. Re:Maybe because programmers like to be clear by bonch · · Score: 2, Insightful

      Most people don't understand WiFi networking and don't realize they're broadcasting anything. I didn't say people weren't free to take pictures of your house. I'm just pointing out that you're supporting a company whose CEO said only criminals worry about privacy. If you're okay with that, then Google loves fans like you!

    57. Re:Maybe because programmers like to be clear by General+Fault · · Score: 1

      Rarely have a problem with closing files. Much more often have a problem with opening them. Opt-in GC is nice, but can cause confusion in large systems because it is easy to confuse objects and forget which is GC'd and which must be manually de-allocated. I also like that GC can run when the CPU is not in use. It's like automatically multi-threading your deallocation for speed optimization (at the expense of memory of course). Agreed on WCF and COM. I think all MS developers are familiar with the term "Dll hell".

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    58. Re:Maybe because programmers like to be clear by General+Fault · · Score: 1

      No need to invent clever algorithms if you know and understand the basic design patterns. These patterns (mostly) transcend languages and help to create understandable and efficient code.

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    59. Re:Maybe because programmers like to be clear by Grishnakh · · Score: 1

      I can disagree with Google's CEO while still appreciating many of their products. Google's CEO is only one man, and many laws at various levels protect my privacy.

      Do you agree with everything that every CEO of every company whose products you like has said? Somehow, I doubt it.

    60. Re:Maybe because programmers like to be clear by cromar · · Score: 1

      Can you name some code that might illustrate this? It sounds interesting or at least amusing. I feel like I have come across really bad code in "simple" languages, code that would be easy to implement elegantly in a "complex" language, but I can't recall anything specific at the moment. I remember seeing a lot of truly bizarre code written in Apple BASIC back in the day (but then, some really cool hacks too).

    61. Re:Maybe because programmers like to be clear by garutnivore · · Score: 1

      Open Office Basic is also a shitty language to work with, and the Open Office API is inconsistent.

    62. Re:Maybe because programmers like to be clear by dosius · · Score: 1

      I think the BASIC syntax is more natural to English than COBOL's syntax.

      -uso.

      --
      What you hear in the ear, preach from the rooftop Matthew 10.27b
    63. Re:Maybe because programmers like to be clear by ceswiedler · · Score: 1

      That doesn't mean a whole lot if nearly everything you're unhappy about in D is better in C++. Frequently that's the case.

    64. Re:Maybe because programmers like to be clear by ckaminski · · Score: 1

      While VB was many things, including obtuse, it's ability to extend itself through IDispatch was arguably it's strongest feature, making it far more extensible an environment than many in production today. The biggest downfall to VB was the myriad of VBA environments in Microsoft products - that were all slightly different, and a simple change from one version of Office to the next could break a truckload of applications - that's what sucked about VB.

    65. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      Nonsense. Programming is easy. Kids can do it. Untrained monkeys in India can do it. And it's only worth $5 a day and you can implement Amazon.com's webapps in full production in a week. Because, like they keep telling me: "All You Have to Do Is..."

    66. Re:Maybe because programmers like to be clear by shutdown+-p+now · · Score: 1

      Well, at least C++ has only one standard library...

    67. Re:Maybe because programmers like to be clear by shutdown+-p+now · · Score: 2, Interesting

      n a good programing language, the "using" block would be implicit by default when you allocated the object, and you would need to declare it "shared" or somehting for those corner cases where you want it to survive leaving scope (and done properly, "shared" would only create a problem where there was an algorithmic error, not a simple oversight).

      You've just described C++. Objects with automatic storage duration ("stack-allocated" for those not versed in standarteze) get cleaned up as their scope is gone, and to mark them "shared" you declare them using std::tr1::shared_ptr and allocate with "new".

    68. Re:Maybe because programmers like to be clear by shutdown+-p+now · · Score: 1

      When you start telling me that the language is the problem I realize instantly that you aren't that great of a programmer. My one exception to this is Visual Basic (not BASIC, VB specifically). It is a shitty environment because of the shit support library MS made for it.

      Oh, c'mon. If you list VB, you've got to also give a honorary mention of PHP.

      Then again, I don't see what's wrong with saying that language is a problem. It certainly can be. Almost never the only one, and rarely the primary one, but languages can be objectively better or worse (for specific tasks and in general, though those are separate measurements), and it's silly not to take that into consideration along with all other factors.

    69. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      Except for that it's supported by just about nothing right now.

    70. Re:Maybe because programmers like to be clear by ukyoCE · · Score: 1

      The problem isn't expressing subtraction. The problem is creating complexity where it isn't needed, usually in the name of some ivory tower abstracted reusability in a place where the code will never ever be reused.

      Instead if only makes the code buggier, harder to understand, and eventually rewritten entirely because there are too many abstracted layers to make changes.

    71. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      nope, rob pike doesn't know much about real world programming. his code it a twisted mess

      http://plan9.bell-labs.com/sources/plan9/sys/src/libthread/

    72. Re:Maybe because programmers like to be clear by spongman · · Score: 1

      refcounts? you know about cycles, right?

    73. Re:Maybe because programmers like to be clear by Psychotria · · Score: 1

      Yes, and it doesn't impress me. Writing isn't hard.

      He also promptly called UNIX dead, and pretty much trash talks about everything that isn't his and how his is better, yet no one seems to give a shit and no one that matters uses it.

      Anything he's contributed too that people actually use, they use because of what other people did, not his contributions

      Maybe writing is harder than you think :)

    74. Re:Maybe because programmers like to be clear by bonch · · Score: 1

      One man? He's the CEO. His views influence the behavior of the company.

    75. Re:Maybe because programmers like to be clear by Peach+Rings · · Score: 1

      That's an interesting point to bring up. In a simple language you're on your own to piece together a coherent sentence out of independent building blocks. In English there are tons of strong subject-verb agreement / idiom / tense rules that tightly bind together the sentence and make it very obvious when the sentence is ambiguous or incorrect.

      TFS:

      [This sort of programming] is very bureaucratic. Every step must be justified to the compiler. Every step must be justified to the compiler.

      Like simple human languages, practically anything you care to write in weakly-typed languages like JavaScript will parse, but that doesn't mean that it will be interpreted the way you want. But if by some miracle you can get your Haskell program to compile then 90% of the time it will work perfectly on the first run.

    76. Re:Maybe because programmers like to be clear by Grishnakh · · Score: 1

      So what? You're free to evaluate their products and choose to use them or not use them. I don't care what statements he's made, I only care about the products I use.

      Again, do you screen every company that makes every product or service you consume, to make sure that company's CEO (or any CEO they've ever had) has never made a statement you disagree with?

    77. Re:Maybe because programmers like to be clear by bonch · · Score: 1

      Yes, I know I'm free to evaluate their products. Thanks for the reminder.

      You can't separate the CEO's thoughts on privacy from the services the company puts out. Yes, I do choose not to use a company's products if the CEO, or anyone else high up in the company, has made a statement that reflects negatively on the way they're going to treat me as a customer. If Steve Ballmer said anyone who uses Windows 7 is an idiot, people would probably be less inclined to upgrade to Windows 7.

      Eric Schmidt's proclamation that anybody who cares about their privacy is hiding something is a sign that he puts the company's desires for data collection and indexing above the customer's. You are no longer an individual; you're a set of data to be sold to advertisers. If you don't care about these things, then you are just the kind of unconcerned consumer that Google wants using their services.

    78. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      Yeah well, there are two types of languages: those that people complain about, and those that nobody uses. D is in the second category.

    79. Re:Maybe because programmers like to be clear by twebb72 · · Score: 0

      Agree and disagree.. The problem with the example you give is that most junior programmers will just as quickly do a LINQ query where something like a switch/case would have been perfectly adequate (and 1000x faster).

      You can find inefficiencies in any language. But most inefficiencies are introduced by the programmer and NOT its compiler.

    80. Re:Maybe because programmers like to be clear by lgw · · Score: 1

      C++ enables the right approach with clever use of templates, but by default you've just moved "make sure the allocations at the top of the funtion match the cleanup at the bottom" to "make sure the allocations in the constructor match the cleanup in the destructor". It's nice that you do it less often, but that's still just as prone to human error - for example, most C++ coders don't seem to realize that if you throw in the constructor, the destructor won't be called at all, and will allocate 2 or more resources in the constructor.

      However, if each resource primitive has it's own (template-based) auto-cleanup, your destructors will usually be empty, and human error is out of the picture. I've helped create large code bases where there was only one line of code in the entire codebase where resource cleanup was done: the scoped template. If you only have to get it right once, you can.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    81. Re:Maybe because programmers like to be clear by Anonymous Coward · · Score: 0

      The point of cobol was that the code could serve as documentation so the two could not get out of sync. When it comes to major processes like logistics and accounting, wrong documentation can be as bad of a bug as wrong code.

      Cobol never succeeded there either: it has some really bizarre constructs in it that fortran never dared to do, and none of them are obvious from reading its verbose code. Generating code from visual diagrams seems to be the current rage for business processes, but otherwise it seems we've resigned to the practical necessity of speaking different languages to different audiences (humans and computers).

  5. If you can't code in C++ you shouldn't code. by Anonymous Coward · · Score: 1, Insightful

    No,

    What this world needs is competent programmers. C++ too hard for you? You shouldn't be programming. It's that simple.

    1. Re:If you can't code in C++ you shouldn't code. by Anonymous Coward · · Score: 1, Insightful

      C++ hard? No programing language is "hard" (to anyone with a three digit IQ), writing good software is hard, and that has hardly anything to do with the language or tools you use.

    2. Re:If you can't code in C++ you shouldn't code. by retchdog · · Score: 3, Insightful

      It's like the old saw about asking a Christian, "Is it okay to smoke while praying?" versus "Is it okay to pray while smoking?"

      Of course competent programmers should handle C and all that. The point is, however, that the new ground to be discovered will be done by having non-programmers be able to quickly, easily, and accurately practice their craft with the aid of numerical analysis and data processing. It's the difference between doing something in an afternoon and needing to incorporate a company; pitch ideas; apply for grants/labs; &c.

      The cynical programmer will say that the easy languages will inevitably allow fuckups. Well, that's true I guess (although isn't it an interesting project to reduce these?), but in any real project there are already several categories of fuckups (often methodological/statistical) which the programmer is, usually, blissfully unaware of, and will screw the data/results on a much grander and more subtle scale.

      Here is a great example of an "empowering" language: http://processing.org/ Yeah, a `true programmer' may call it inefficient, but if it allows someone to do what they previously could not even conceive of, isn't this an infinite gain in efficiency?

      --
      "They were pure niggers." – Noam Chomsky
    3. Re:If you can't code in C++ you shouldn't code. by maestroX · · Score: 1

      What this world needs is competent programmers. C++ too hard for you? You shouldn't be programming. It's that simple.

      I'll bite. Any competent programmer who thinks C++ is peanuts never tried to implement a parser for C++.

      I remember one commenter on this site referring to C++ as the AK47 of languages.

      That said, I only use (a subset of) c++ when exection speed and OO is favored over extensibility, development time and stability.

    4. Re:If you can't code in C++ you shouldn't code. by AnonymousClown · · Score: 2, Interesting

      No,

      What this world needs is competent programmers. C++ too hard for you? You shouldn't be programming. It's that simple.

      Look, C++ is my programming language of choice: I like programming down to metal, having the OS load my program and run it without any intermediary like an interpreter or some sort of runtime (no I don't do CLI), and I like the ability to go down and do old school 'C' when I need to. But these days, it's like Stroustrup is adding features for the sake of adding features - trying to be "modern"? I don't know. It's making the language bulkier, adds even more chances for obfuscation, and it's getting to the point where even C++ fanboys like myself are reevaluating our relationship with the language.

      Good god, when he first added templates (a great feature just see the STL), I had to deal with programmers who made template classes for everything and used it once for one data type. Plah-ease! Just because the feature is there doesn't mean you gotta use it. There's a time and place for everything. C++ is turning into the Word of programming languages: adding esoteric features that less than 1% of users will ever use.

      C++ is turning into a bloated slow fat pig and I'm thinking of getting a divorce.

      --
      RIP America

      July 4, 1776 - September 11, 2001

    5. Re:If you can't code in C++ you shouldn't code. by Anonymous Coward · · Score: 0

      100 is the average value, not the baseline.

      /queue quote from "The Princess Bride"

    6. Re:If you can't code in C++ you shouldn't code. by Nadaka · · Score: 1

      Writing good software within the requirements, support framework, time-line and budget imposed on you by management/clients is hard, often impossible.

    7. Re:If you can't code in C++ you shouldn't code. by General+Wesc · · Score: 1

      What this world needs is competent programmers. C++ too hard for you? You shouldn't be programming. It's that simple.

      How about 'if you think the complex system is either not good enough or absolutely perfect, you shouldn't be programming'. I can write in assembly, but I'd have to be an idiot to reject improvements on the grounds that 'if you can't program in assembly, don't program.' Better tools increase productivity and reduce bug-count. (Anyone who claims to have written a complex, bug-free program, is either a liar or just oblivious, and if they add in that there's no way it could have been done faster/more easily they're either nuts or a knee-jerk Slashdot commenter.)

      Go ahead and write your code in C++ because you can, but don't be surprised when all those idiots using other using tools produce better software faster.

    8. Re:If you can't code in C++ you shouldn't code. by Joce640k · · Score: 1

      The point is, however, that the new ground to be discovered will be done by having non-programmers be able to quickly, easily, and accurately practice their craft with the aid of numerical analysis and data processing.

      We already tried Excel macros, look how well that one worked out...

      --
      No sig today...
    9. Re:If you can't code in C++ you shouldn't code. by Anonymous Coward · · Score: 0

      Rocket science is too hard as well. We should come together and lower the bar on mastering the laws of physics.

    10. Re:If you can't code in C++ you shouldn't code. by Anonymous Coward · · Score: 0

      Cue a queue of jocular Qs about homophones?

    11. Re:If you can't code in C++ you shouldn't code. by SteeldrivingJon · · Score: 1

      "I remember one commenter on this site referring to C++ as the AK47 of languages."

      Nah, the AK47 is a pretty simple machine. C++ is more like one of the newfangled future combat system guns with computerized everything, programmable grenades, etc, etc, etc.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    12. Re:If you can't code in C++ you shouldn't code. by markov_chain · · Score: 1

      You jest, but how well did it really work out? Is there a gain in our society's collective efficiency due to use of such tools?

      --
      Tsunami -- You can't bring a good wave down!
    13. Re:If you can't code in C++ you shouldn't code. by SteeldrivingJon · · Score: 1

      I suspect rocket scientists would prefer to focus on the difficulties of rocket science, without having to *also* deal with the complexities of C++.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    14. Re:If you can't code in C++ you shouldn't code. by nschubach · · Score: 3, Informative

      I think you'd be amazed at how much some of the world's companies rely on Excel macros.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    15. Re:If you can't code in C++ you shouldn't code. by SETIGuy · · Score: 1

      As a rocket scientist, I find the complexities of C++ to be a refreshing change from rocket science.

    16. Re:If you can't code in C++ you shouldn't code. by ciggieposeur · · Score: 2, Informative

      C++ is turning into a bloated slow fat pig and I'm thinking of getting a divorce.

      Check out D sometime, you might really like it.

    17. Re:If you can't code in C++ you shouldn't code. by shutdown+-p+now · · Score: 1

      Which one of them? 1.0 or 2.0? Phobos or Tango?

      Then, of course, C++ is still faster than D (hello, GC!), so I'm not sure where GP even came from with "slow".

    18. Re:If you can't code in C++ you shouldn't code. by IamTheRealMike · · Score: 1

      D2 is a very nice language. The standard library situation is a total mess, but then again a completely insane standard library never stopped C++ from taking over the world (I mean "push_back", seriously guys?).

      D2 should take over the world. There are absolutely no places in which it is a worse language than C++ and about a million places in which it's better. In practice it probably won't for the same reasons I spend my days writing Java and C++, both languages that are practically Sanskrit in computer terms these days but have very mature toolchain support, big libraries, and lots of developers who know them.

    19. Re:If you can't code in C++ you shouldn't code. by shutdown+-p+now · · Score: 1

      D2 should take over the world. There are absolutely no places in which it is a worse language than C++ and about a million places in which it's better.

      Its standard library requires GC. That's a killer for any would-be systems programming language right there.

      (Yes, Go is doomed in that niche for the same reason.)

      Granted, you can use a subset of D that doesn't require GC if you roll out your own lower-level stdlib... and it's probably still better than C++ at it (hey, at least it has sane templates)... but I haven't heard of anyone actually trying.

      Anyway, D hit the same stumbling block as any other mainstream language replacement wannabe - backing. A good language, and even a good standard library, is only part of the deal. Then you need equally good tools, and - if you want it to become widespread in proprietary software development - some corporate backing (not necessarily monetarily, but even just "we're a Fortune 500 company, we use it for our production stuff, and we like it"; some form of commercial support is also a must).

      FOSS community, on the other hand... well, it doesn't help that the reference D implementation is proprietary, and is written by a guy who mostly focuses on Windows. At the same time, D language spec is very informal and brief, ignoring many corner cases, so in practice that reference implementation is what defines the language, putting any alternative implementations at a disadvantage. Hence why something like Vala (which covers a similar niche of "sane replacement of C++ for a system programming language") gets much more popularity in OSS land.

  6. umm... by deviator · · Score: 3, Insightful

    "Efficient" languages are too complex. "Simple" languages are too inefficient.

    Normally I'd write this off as "duh" but this is Rob Pike.

    Oh wait, he's pushing something new that somehow manages to be easy and efficient? OK...

    1. Re:umm... by Bryansix · · Score: 3, Insightful

      Right. Basically what we call "High level programming languages" are not all that high level any longer and the compiler is getting off without doing enough work. The language should be simple and the "hard work" should be done by the compiler figuring out the most effecient way to get done what it is being told to get done.

    2. Re:umm... by jythie · · Score: 1

      I am having flashbacks to that first generation MindStorm language where you 'programmed' with simulated lego blocks....

    3. Re:umm... by Albatrosses · · Score: 1

      Come on, we both know that was awesome.

    4. Re:umm... by owlstead · · Score: 3, Interesting

      I'm not saying that that would be it, but I would not mind a programming environment where the text files have gone the way of the dodo. With Eclipse we use a rather strong "Clean Up" where missing keywords (e.g. final) are added and statements are reformatted (etc.). Wouldn't it be easier to do without that kind of stuff? What about comparing the differences of two branches (or new code with the head) where the actual semantic changes are compared vs lines of text? What about an environment where you can easily hide complexity and meta-information? Or, possibly, add new literals? Where the base of the language is shifted to the Abstract Syntax Tree, not so much the syntax.

    5. Re:umm... by Eudial · · Score: 1

      There are exceptions.

      Perl is both too complex and too inefficient.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    6. Re:umm... by FooAtWFU · · Score: 2, Interesting

      I'm no Robert Pike, but I imagine that computer programming as we move to thousands and millions of cores will consist less of telling the computer how to do something, and more of telling the computer what you want to do and having a really smart compiler figure out the details. The more low-level you go, the less chance the compiler has of figuring out what you're trying to do and making it work effectively (and do crazy optimizations like speculative out-of-order execution, and what-have-you).

      But this means that the programming languages of the future will be less imperative and more functional. How that will ever catch on is beyond me.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    7. Re:umm... by iamhassi · · Score: 1

      He's right. We should all switch to VB and bitch and moan when it's too slow and uses too much ram.

      Could be worse, this is "Hello World!" in brainfuck.
      ++++++++++[>+++++++>++++++++++>+++>+... Filter error: Please use fewer 'junk' characters.

      --
      my karma will be here long after I'm gone
    8. Re:umm... by Anonymous Coward · · Score: 0

      you talk about smalltalk.....

    9. Re:umm... by ultranova · · Score: 4, Insightful

      But this means that the programming languages of the future will be less imperative and more functional.

      No, that means that the programming languages of the future will be subjective: the computer will interpret your commands in the light of whatever other data it has. This, of course, requires artificial intelligence, and slowly but surely phases away the whole job of programming as a separate skill from commanding people.

      In other words, the ultimate programming languages of future will be known as English, Chinese, etc.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    10. Re:umm... by Hotawa+Hawk-eye · · Score: 1

      And each new generation of the compiler is created by telling the previous generation "I want you to create a compiler that's smarter than you"?

    11. Re:umm... by Anonymous Coward · · Score: 0

      If you really think that, you're an idiot. (Although, you're still smarter than any computer program ever will be.)

    12. Re:umm... by StackedCrooked · · Score: 1

      People that want to sell something feel the need to find fault with the existing solutions in order to justify their own.

    13. Re:umm... by Comrade+Ogilvy · · Score: 1
      Exactly.

      Java and C++ have been built towards one end of a logical extreme . Python, Perl, etc. have been built towards to the other end of a logical extreme.

      Specifically, both Java and C++ are both statically typed and compiled. Java and C++ are both very verbose as well, because that happens to be the simplest path towards accomplishing those two goals.

      On the other hand, the scripting languages are both dynamically typed and (usually) interpreted.

      But there are other available approaches that live in between these worlds. It is possible be lighter weight by offloading work to the compiler (and perhaps the IDE), while still gaining all the advantages of a statically typed language.

    14. Re:umm... by owlstead · · Score: 1

      Smalltalk is a very very interesting programming language from a technical point of view. After having tried the language and especially the "living objects" kind of runtime systems, I'm not so sure if the actual implementation of it all is practical.

      Smalltalk certainly takes a lot of getting used to. After having it tried only a few evenings, I still haven't fully made up my mind about it. Coming from BASIC, Pascal, MODULA2, C, C++, Java and derived runtime languages, it's pretty weird. It certainly lacked the kind of IDE experience that I hoped for.

      That said, it does do a lot of things that I would like in a language, including focusing on runtime behavior.

    15. Re:umm... by Skald · · Score: 1

      Smalltalk dispenses with text files; the language and the environment are inseparable. This allows for some of the really interesting features of the language, as it's always runtime, and you're working on live objects. Pharo is a nice version to try.

      --

      "The best we can hope for concerning the people at large is that they be properly armed." - Alexander Hamilton

    16. Re:umm... by Anonymous Coward · · Score: 0

      Nope, it will be known as "Perl".

    17. Re:umm... by dunng808 · · Score: 1

      I too float the Smalltalk balloon. My interest in educational software leads me to Squeak (http://www.squeak.org/) but I have heard good things about Pharo, especially if the goal is to produce something that looks more businesslike. There will always be a need for systems software written in C, but nothing beats Smalltalk for rapid development.

      --

      Gary Dunn
      Open Slate Project

    18. Re:umm... by crono_deus · · Score: 1
      Have you ever programmed in Smalltalk or Squeak? Neither are "text file" based in the sense that C and Java are. Instead, the language runtime is the IDE, and the IDE is the language runtime. It's actually really bloody cool when you play around with it.

      As for comparing actual semantic differences vs. syntactic differences, well, I imagine it's really damn difficult, considering the syntactical construction of an expression determines its semantics. In other words, if you change the syntax, you've likely changed the semantics, at least at a low level.

      I know what you're trying to say, though. I'm reminded of an exercise given to me in my intro to CS class. We have to convert a for loop to a while loop to do-while loop and back again. Syntactically, they're all different, but semantically, at least for that exercise, they all did the same thing. You'd like a language or an IDE or whatever that can tell you that those three loops are all doing the same thing, regardless of how I write them, and frankly, I think such a language/IDE/magic wand would be freakin' fantastic. (I mean, consider for a moment how often you've rewritten something and are certain it does the exact same thing as the previous incarnation and are shocked when you realize it doesn't?) I'm just not certain if you can achieve that with any ease at all. You'd essentially have to have code that understood any other code, which sounds remarkably similar to the halting problem.

      There may be specific cases where this is doable, though... I can see a language like Haskell being able to provide this sort of analysis for loops or a few simple function calls or whatnot. The reason I pick Haskell is because it's, in general, a language free of side effects, which aspect of programming could increase the complexity of any compile-time semantic analysis by orders of magnitude. Runtime analysis is a different story, of course... but, again, that treads awfully close to no-general-purpose-solution worlds here.

      --
      Ne Cede Malis.
    19. Re:umm... by crono_deus · · Score: 1

      In other words, the ultimate programming languages of future will be known as English, Chinese, etc.

      Isn't that the point? Why are we building these machines anyways if not to make our lives simpler and easier, and what is easier than giving instructions to something in one's own tongue?

      I'm actually not certain it'll be a natural human language, though. I mean, perhaps in the really long term it might be, but in the shorter-long-term (uh... say, 1,000 years out?) programming languages -- and I'd be willing to bet there won't be one language, but many, and with just as many dialects, and the machines will understand all of them -- will at least resemble the languages we have now, if only because that's their heritage. In the same way that Spanish and Italian and, to an extent English, all resemble Latin, these future computer languages are going to resemble their parent tongues.

      You're right, though. The distinction between "programmer" and "commander" is going to gradually fade. I'm ok with that, though; all that means is that I get to put "Commander" on my business card instead of "Programmer." Sounds much cooler, don't you think? ;-)

      --
      Ne Cede Malis.
    20. Re:umm... by Facegarden · · Score: 1

      ...the ultimate programming languages of future will be known as Chinese.

      There, fixed that for you.

      --
      Worldwide Military budgets: $2100 billion. Worldwide Space Exploration budgets: $38 billion. Really, world? Really?
    21. Re:umm... by Anonymous Coward · · Score: 0

      Oh wait, he's pushing something new that somehow manages to be easy and efficient? OK...

      You just had to Go there, didn't you!

    22. Re:umm... by yyxx · · Score: 1

      I'm not saying that that would be it, but I would not mind a programming environment where the text files have gone the way of the dodo.

      Smalltalk had that, including version control, real-time code changes, etc. Download a copy of Squeak and see whether you like it.

    23. Re:umm... by Anonymous Coward · · Score: 0

      the ultimate programming languages of future will be known as English, Chinese, etc.

      With all the weirdnesses in those languages - maybe this is how Esperanto can make itself relevant again!

    24. Re:umm... by Tjp($)pjT · · Score: 1

      Right. Basically what we call "High level programming languages" are not all that high level any longer and the compiler is getting off without doing enough work. The language should be simple and the "hard work" should be done by the compiler figuring out the most effecient way to get done what it is being told to get done.

      So you're essentially asking the compiler to distinguish between a P and NP solution to the same problem, as well as the less nasty n versus n^2 etc. variations through analysis of what the programmer wrote and determine an optimal potentially new algorithm for solving the problem. Sort of like not only using a computer program to solve the 4 color map problem, but essentially have it as well write the program that solved it based on a simple description of the problem?

      We live in a world where there are complex problems and multiple ways to solve them not all are optimal, and programs to prove programs correct in the general case are not possible, provably not possible. But we expect our compilers which are already rearranging our work at the lowest levels for branch prediction optimizations as well as overlapped operations of current CPUs to now also optimize our logic on the front end, which arguably can only be done to the most limited extent.

      Any one can be taught the language to write a program in. But it takes skill to write an efficient program. I took what physicists gave me, and then rewrote it for efficiency and handed the new algorithms back to them. When they said the two were identical they asked why I went to the effort. I said their example was not guaranteed to complete in finite time, mine was. That was a concept they could appreciate and understand ...

      Sure there are language features in C++ that are a compromise, but they are far more useful than what went before. Sun did object oriented C with a host of macros before C++ was around. The concepts move forward. So if someone has a concept to make a simplified language for programming, cool, great idea. But unless the people programming understand programming they'll still make novice mistakes and write inefficient programs.

      Frankly I am surprised C++ has survived this long. But as I am mostly working in Objective-C these days I sometimes miss some of the C++ features I am fondest of. Which illustrates the point that even in programming languages we develop idioms just as in natural languages that we prefer and that mark our work through their patterns as our own.

      But the concept of the compiler doing the hard work through a simpler input language overlooks some of the really hard problems in computer science. And unless you can write that compiler in its own language that it processes, you've just hidden the skilled programmers to an even smaller elite group. Because they'll have to be the implementors using the implementation language. Then heaven help you...

      Also, anyone who works for Google, will as a matter of either survival or basic mindset, espouse the view that Google's views are the correct ones. Pedigree of the speaker notwithstanding. It is true in all corporate cultures with only rare exceptions. Often we see jobs for corporate evangelist, seldom if ever for official corporate detractors/devil's advocates.

      --
      - Tjp

      I am in wallow with my inner money grubbing capitalistic pig. ... Oink!

    25. Re:umm... by Anonymous Coward · · Score: 0

      Despite how tempting it may seem, replacing a human decision with a machine decision rarely results in efficiency, or maintainable code. See Hibernate.

    26. Re:umm... by Anonymous Coward · · Score: 0

      On the day that happens, humans will be obsolete.

      No-one will know or understand how the computers and machinery work anymore, until they break and bring about the end of the world.

    27. Re:umm... by Chowderbags · · Score: 1

      So... one day we'll be saying it's the Year of Prolog?

      Funny thing, though. It would scale pretty well to any number of processors... it's just that it's a pain in the ass to write in.

  7. Missing context... by Akido37 · · Score: 5, Insightful

    Pike detailed the shortcomings of such languages as a way of describing the goals that he and other Google engineers have for a new programming language they developed, called Go.

    Oh, so he's pushing a competing product and denigrating his competition? Nothing to see here, I think.

    1. Re:Missing context... by abigor · · Score: 0

      No, there's a lot to see here. Go is an interesting language.

      And he's not pushing a "product" - he's justifying why they invented a new language in the first place.

    2. Re:Missing context... by Altus · · Score: 1

      And everyone who has ever invented a new language has done exactly the same thing.

      Maybe Go is worth a closer look, but the quick look a google search has given me hasn't been very interesting. Not bad mind you, but its not clear what major advantages it provides. Would anyone care to expound on why its good/interesting?

      I did find it interesting that the Wiki article says it is designed for fast compiling. That is not really something I have ever had much concern about even when working on extremely large code bases. Distributed builds work pretty well. It would not have been my design goal but maybe it has some value.

      --

      "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

    3. Re:Missing context... by kimgkimg · · Score: 1

      Okay so he's bashing compiled languages and bashing interpreted languages, so what's left? I guess flipping 1's and 0's with a binary editor I guess...

    4. Re:Missing context... by abigor · · Score: 1

      It's a garbage-collected systems language (ie fast and low-level if you want it to be) that has explicit support for concurrency. It pulls in some nice features from the usual suspects and groups them together in a pretty clean way.

      On the downside, there's no generic programming support yet.

    5. Re:Missing context... by Anonymous Coward · · Score: 0

      No worry, when it gets generic programming support, it will become mindboggingly complex and intricated.

    6. Re:Missing context... by KlomDark · · Score: 1

      So it's like C# with the TPL (Task Parallel Library) for concurrency, yet lacking support for generics?

      Meh, I'll stay with C#.

    7. Re:Missing context... by Altus · · Score: 1

      Concurrency support sounds like a nice feature, That might be worth looking into more closely.

      I have to say though, performance issues or not, I'm more likely to spend my time learning my way through Objective-C than Go, in part because it is more applicable to my career right now but also because of some of the really neat crap you can do with run time typing and messages in Obj-C.

      Though I have to admit, Objective-C does have some pretty brutal syntax.

      --

      "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

    8. Re:Missing context... by Nadaka · · Score: 1

      Real men program with a bank of toggle switches.

    9. Re:Missing context... by Anonymous Coward · · Score: 0

      Wait, you're saying C++ templates are complex?

    10. Re:Missing context... by abigor · · Score: 1

      Yes, if you're on Windows, there's probably not a heck of a lot of difference. I also don't think there's a real Windows version of Go yet.

      I'm also not sure how the TPL compares to goroutines (Go's concurrency scheme), but generally speaking, I think one of the major design decisions behind Go was to get away from the explicit "create thread/task here and tell it to do stuff" model that Java, C#, etc. use.

      For example, goroutines aren't explicitly mapped onto threads in the first place, although they do share the same address space.

    11. Re:Missing context... by abigor · · Score: 1

      Agreed, practical concerns come first. I've looked at Go in my spare time, but it's not like I'll approach my client and propose using it anytime soon.

      Anyway, we all know that doing concurrency right is a big deal, so it's always cool to see new ideas. Languages like Erlang are awesome too, but the whole functional thing makes it unapproachable for most programmers. Go attempts the same sort of scalability, but with a conventional syntax.

    12. Re:Missing context... by gbjbaanb · · Score: 1

      the Wiki article says it is designed for fast compiling. That is not really something I have ever had much concern about even when working on extremely large code bases

      Hey! lets not get rid of slow compile times, ok!!

    13. Re:Missing context... by Bing+Tsher+E · · Score: 1

      No, real men program with a soldering iron, and a little wire cutters to occasionally snip diodes out of the array.

    14. Re:Missing context... by magus_melchior · · Score: 1

      It's not much different (other than perhaps scale) to the announcement of Chrome, IMO. Someone at Google observes a problem to solve, then he gets a team together to solve it. Not everyone will agree with their solution (remember all the "no Adblock, no dice" comments when Chrome went live?), but at least they're putting one out there.

      --
      "We are Microsoft. You shall be assimilated. Competition is futile."
    15. Re:Missing context... by uglyMood · · Score: 1

      REAL real men program with patch cables.

      --
      "No matter where you go, there you probably are." -- Buckaroo Heisenberg
    16. Re:Missing context... by thetoadwarrior · · Score: 1

      You can keep your MS tainted language. Some of us rather program for multiple OSes and guarantee we always will be able to. C# (and Java) both suffer from making things overly long, as a quick example, why use WriteLine() as a method. To any new person reading that they won't know it means write with a new line. They will think it means write a line. Since it doesn't make sense to a newbie upon reading it and experienced people will just know what it does no matter how it spelled so might as well pick something quicker to write than make some overly verbose method name

    17. Re:Missing context... by ultranova · · Score: 1

      No, real men program with a soldering iron, and a little wire cutters to occasionally snip diodes out of the array.

      Real Men program by spitting beer on the board to cause strategic short-circuits.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    18. Re:Missing context... by Anonymous Coward · · Score: 0

      Bingo

    19. Re:Missing context... by Anonymous Coward · · Score: 0

      Incredible that such a stupid comment would get a +5.

    20. Re:Missing context... by CosmeticLobotamy · · Score: 3, Informative

      "WriteLine()" makes perfect sense in the context of the Console class when paired with its newline-less counterpart, Write(), and is spelled wr[down-arrow][enter]. Four keys. Intellisense (or whatever its equivalent in your preferred IDE is). Use it. Quit inflicting functions like "wrtln" on the rest of us.

    21. Re:Missing context... by martin-boundary · · Score: 1

      cout "Or you can just use";

    22. Re:Missing context... by Anonymous Coward · · Score: 0

      C++ is a programming language which is so big that it has its own programming language, the templates language, and this language inside a language is harder than most other languages out there.

      (Chuck Norris's dick is so big, it has its own dick, and Chuck Norris's dick's dick is larger than your dick.)

    23. Re:Missing context... by yyxx · · Score: 1

      Given that Pike was a member of the original UNIX team, saying that he is "denigrating his competition" is silly.

    24. Re:Missing context... by Anonymous Coward · · Score: 0

      I can confirm there's nothing to see here. His accusations were partly vague, partly unfounded, and partly missing the point. It was more of a sales pitch than anything else.

    25. Re:Missing context... by spongman · · Score: 1
      the TPL doesn't require you to do deal with threads. if you're into scheduling work yourself you deal with Tasks:

      Task<string> task = Task.Factory.Start (() => /*.....*/ return "result";);
      /* ... */
      string result = task.Result;

      but usually you'd just use PLINQ it takes care of all the messy parallel partitioning and aggregation for you...

    26. Re:Missing context... by Mad+Merlin · · Score: 1

      ...and is spelled wr[down-arrow][enter].

      If you're going to take your fingers off the home row while coding, you may as well not bother touch typing either.

  8. If C++'s complexity has him vexed by swanzilla · · Score: 4, Funny

    I'd like to hear what he thinks about Perl.

    1. Re:If C++'s complexity has him vexed by Anonymous Coward · · Score: 1, Informative

      ROFL

    2. Re:If C++'s complexity has him vexed by mrogers · · Score: 5, Funny
      I'd like to hear what he thinks about Perl.

      Since his talk had no discernible structure, said the same thing in a dozen different ways and won't make any sense this time next year, I'd assume he's a fan.

    3. Re:If C++'s complexity has him vexed by Anonymous Coward · · Score: 1, Funny

      Whatcha talking about, perl is easy! I just cat /dev/random > mycode.pl

    4. Re:If C++'s complexity has him vexed by arivanov · · Score: 1

      What he thinks or says is irrelevant.

      You can judge that from Google job spec and recruitment policies and they are very clear.

      C++ is solidly in first place. There is usually a honorary mentioning of C, Python and Java.

      Perl is _NEVER_ present in a Google spec.

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
    5. Re:If C++'s complexity has him vexed by mcgrew · · Score: 1

      I think Perl liked Perl.

      Yeah, so they're spelled wrong. Talk to the sig.

    6. Re:If C++'s complexity has him vexed by jd · · Score: 1

      What about the Pike scripting language?

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    7. Re:If C++'s complexity has him vexed by Anonymous Coward · · Score: 0

      What about it then?

    8. Re:If C++'s complexity has him vexed by shutdown+-p+now · · Score: 1

      ROFL

      So, what does this Perl one-liner do? ~

    9. Re:If C++'s complexity has him vexed by Khyber · · Score: 1

      Fuck Perl, I want to hear his opinion on RPG.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
  9. Practice what you preach ... by Anonymous Coward · · Score: 0

    And get your own company to think this way, too.

  10. Not everybody runs servers for a living by TREE · · Score: 1

    Interpreted code is great if you can babysit all the deployments. Generally, when you have to actually ship software, the sooner you find the bugs, the better. It doesn't get any earlier than compile time.

    I have made brief forays into interpreted languages, and always feel immense pain and frustration from the lack of a compiler.

    1. Re:Not everybody runs servers for a living by M2Ys4U · · Score: 1

      Golang isn't an interpreted language, though - it's compiled

    2. Re:Not everybody runs servers for a living by Phleg · · Score: 1

      The kind of bugs you catch with a compiler are the kind of bugs that rarely if ever actually occur in practice in interpreted languages. In all my years of coding in Perl, Ruby, and Javascript, I have never encountered a single bug where somebody inserted a string into an array meant for integers, or one where someone tries to compare a float to an array. Time spent painstakingly documenting shit to the compiler is time you could spend actually writing tests that exercise your code, revealing the bugs that _really_ matter.

      --
      No comment.
    3. Re:Not everybody runs servers for a living by 0123456 · · Score: 2, Interesting

      In all my years of coding in Perl, Ruby, and Javascript, I have never encountered a single bug where somebody inserted a string into an array meant for integers, or one where someone tries to compare a float to an array.

      I've seen plenty of bugs in interpreted languages where someone meant to call procFoo() but actually wrote procFooo() and therefore the two hour script run failed at 1:58 requiring us to run it again from the start. I've seen plenty of bugs caught because the compiler realised that CustomerId is not the same type as WidgetCount, even though both are wrapped ints. I've seen plenty of bugs where someone meant to write 'f = procFoo()' but actually wrote 'g = procFoo()' and the 'smart' language created a new variable g while the program later used the value of f.

      A compiled language like C++ would catch all of those before you actually ran the code. Obviously a strongly typed interpretive language would catch the second, but a 'smart' language would probably convert it for you, leading to a bug that takes a long time to track down.

      I'm not saying that 'smart' languages are a bad idea, but there are an awful lot of things they can screw up for you if they try to be too 'smart'.

    4. Re:Not everybody runs servers for a living by mmkkbb · · Score: 1

      Perl would have caught those errors as well, assuming the programmer was not an idiot and used the "strict" pragma.

      --
      -mkb
    5. Re:Not everybody runs servers for a living by Anonymous Coward · · Score: 0

      In the time it takes you to run your tests, my compiled binary will have executed 1000 tests.

  11. A new phrase for "U.N. Barbie" by Culture20 · · Score: 4, Funny

    English estas too malmola! Paroli en Esperanto!

    1. Re:A new phrase for "U.N. Barbie" by Anonymous Coward · · Score: 0

      Looks like even Esperanto is too hard for Slashdotters. The corrected text:

      La Anglo estas tre malmola! Parolu Esperanton!

    2. Re:A new phrase for "U.N. Barbie" by InfiniteVoid · · Score: 1

      Also too difficult for you.

      Correct: La angla estas tro malfacila. Parolu Esperanton!

    3. Re:A new phrase for "U.N. Barbie" by selven · · Score: 1

      le rirni cu bebna .i. la lojban zmadu la esperantos leka xamgu

    4. Re:A new phrase for "U.N. Barbie" by ChrisMP1 · · Score: 1

      Really? Look again. We really don't need to know if "la Anglo estas tre malmola". That's his business, and his wife's...

      --
      <sig>&nbsp;</sig>
    5. Re:A new phrase for "U.N. Barbie" by WildsideTX · · Score: 1

      Jes, sed neniu parolas lojbanan en la reala mondo. ;)

    6. Re:A new phrase for "U.N. Barbie" by Culture20 · · Score: 1

      Correct: La angla estas tro malfacila. Parolu Esperanton!

      s/malfacila/kompleksa/ fits better with the topic, but I stand by my original statement as what Barbie would say. Let's go shopping!

    7. Re:A new phrase for "U.N. Barbie" by jejones · · Score: 1

      "Tro malmola", ne "tre malmola". Vi ne estas Francoparolanto, u ne?

    8. Re:A new phrase for "U.N. Barbie" by Anonymous Coward · · Score: 0

      (dronogis-la katidon)

    9. Re:A new phrase for "U.N. Barbie" by colinrichardday · · Score: 1
    10. Re:A new phrase for "U.N. Barbie" by Anonymous Coward · · Score: 0

      Evidente, vi ne parolas Esperante.

      "La Angla estas tro malfacila. Parolu en Esperanto!"

      Bottom line: if you're going to use the language, even as a joke, at least know what you're saying.

  12. And...? by arth1 · · Score: 3, Insightful

    And where is the news here?

    Picking the right tool for the job doesn't just cut down half the work time, but can help offset what sloppy workers do to destroy quality.

    C++, Java, perl, C, forth, and sh are all different languages, and well suited to different jobs. But when all you have is a nailgun (i.e. all you are fluent in is a single language), every project starts looking like nailgun job, including your own foot.

    1. Re:And...? by phantomfive · · Score: 1

      OK, it's been a while since I've heard anyone talk about Forth, and I don't think I've ever heard anyone say there is a job it is well suited to. What sort of jobs is Forth particularly good at?

      --
      Qxe4
    2. Re:And...? by arth1 · · Score: 2, Insightful

      Anything that a RPN calculator does well at, forth does even better? :-)

      Due to the nature of forth, I would say that it's well suited for applications where being modular is a plus, stack space is not at a premium, initialization time is not at a premium, but execution speed from when execution actually starts (not including initialization) is important.

      Oh, and where you can take advantage of the extra rope you're given (like with C). That people are able to hang themselves with it is no reason for a hardware store not to sell rope. But the hardware store clerk should also be able to tell you when glue would be a better choice.

    3. Re:And...? by Anonymous Coward · · Score: 0

      ... What sort of jobs is Forth particularly good at?

      Controlling telescopes, IIRC.

    4. Re:And...? by jd · · Score: 2, Informative

      Forth is extremely good for hardware control. It seems to have lost the edge it used to have, but once upon a time Forth was dominant in radio astronomy, self-contained robots, firmware, scientific lab equipment, etc.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:And...? by Larryish · · Score: 1

      You forgot the MS-DOS batch files. .bat FTW!!!

    6. Re:And...? by Anonymous Coward · · Score: 0

      This is something as a Software Engineer I can't understand. Why are people in the industry locking themselves into only knowing 1 language. Sometimes even going as far as to denounce all other languages in favor of the 1 language they know. As an engineer it's my job to find and learn the best tool for getting a task done. I'm not saying "mix languages in a project for each new problem the project runs into" but to look at the project as a whole select the language or languages based on the project needs and then move to the next phase.

      Am I the only one expected to know or learn in a reasonable time a programming language all while making contributions to the main project using that language?

    7. Re:And...? by Anonymous Coward · · Score: 0

      Maybe Rob Pike is too simple for big boy languages like Java and C++.

    8. Re:And...? by fwarren · · Score: 1

      Without being a skilled Forth programmer, it would be hard to tell what it is good for. It is still used by NASA. It is easy to port to new platforms. It is very compact. One advantage is that a skillful Forth programmer may experiment more to find the optimal way to write an app.

      In Forth circiles on of the advantages is the ability to find the "ah" factor. When you have found the right solution to a problem, it is very evident how right the solution feels.

      --
      vi + /etc over regedit any day of the week.
    9. Re:And...? by Anonymous Coward · · Score: 0

      What is C++ well suited for?

    10. Re:And...? by thethibs · · Score: 1

      It was originally designed to control radar arrays. I've used it a half-dozen times to write complex device drivers and other next-to-the-metal software. It's as efficient as C, uses less memory, and it's interactive. Postscript is a forth variant and the original WordPerfect was written in SSI Forth.

      It's also, like assembler, APL and perl, an expert programming language. It does nothing to keep you from shooting yourself in the foot in grand and dramatic ways. There's no novice or intermediate trail on this mountain.

      Somebody once said, and I concur, that you can't competently code forth unless you've, at least once, built a forth interpreter yourself. I did a few times. The neat thing is that the Marc's Forth that I wrote for PCDOS in 1987 still works fine in Windows XP.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    11. Re:And...? by BiggerIsBetter · · Score: 1

      Forth is extremely good for hardware control.

      Can you elaborate on why that's the case? Perhaps compared to C, which is close to the hardware and doesn't have an interpreter coming along for the ride.

      --
      Forget thrust, drag, lift and weight. Airplanes fly because of money.
    12. Re:And...? by nxtw · · Score: 1

      C++ is not well suited to anything.

    13. Re:And...? by jd · · Score: 1

      To be honest, I don't know the exact reason Forth is good for hardware. I would imagine that the nature of a stack is part of it - you can go from the current state to any prior state by reversing the operations performed, guaranteeing that the system is always in a valid state. That leads on to the next benefit - you can do state machines in Forth with relative ease. C is not very good for that kind of work precisely because it's very low-level. When you want to do logic that involves applying one of a fixed number of transforms to transition a system from one state to another state, where the list of transforms is state-dependent, you want very high-level logic.

      Obviously, such transformations can be concatenated. A-to-B-to-C is the same as A-to-B then B-to-C. You don't want to permanently store the intermediate result, as you will never use it again. So being able to pipe the output from one operation into another directly simplifies things a lot.

      Lastly, for things like hardware initialization or controlling a robot's stepper motor, you don't have extensive logic and you usually need high reliability over and above high performance. C gives you speed, but if your average self-steering robot is crawling along at walking pace or slower, you're ending up with a few billion wait states and nothing to show for it. On the other hand, it is extremely easy to make errors in C that can be catastrophic. It's why the C standards body is drawing up documents on how to do C right, but it is also why you almost never see C used in a mission-critical system. It's almost always a language that sacrifices performance for reliability. It is also why, as BIOS developers moved from Forth to C, reliability has dropped.

      The military have never released sample compilers for their highly reliable languages and other languages intended for such purpose have traditionally been horribly expensive. As a result, they are under-evolved, under-utilized and under threat. Nobody wants to bother with them. The delusion that you can use 60s mainframe logic ("all the coders belong to billionaire businesses and those businesses shall kneel before us") in 2010 is beyond belief. Well, almost beyond belief. Did you know that a commercial PL/1 compiler for Linux costs $15,000 per user?

      Anyways, it is this sheer delinquency and money-grubbing that has traditionally pushed hardware engineers in the direction of what is cheap, usable and practical. This has meant using Forth for the control systems and Fortran for the number crunching.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  13. Alternative Summary by bigsexyjoe · · Score: 5, Insightful

    Google Engineer promotes Google language Go and claims it addresses weaknesses of existing languages, including Java and C++.

    1. Re:Alternative Summary by El_Muerte_TDS · · Score: 1

      Tsk... Go is way to verbose, it takes too much effort to do simple things.

      Now, my new language 'G' fixes all those shortcomings.

    2. Re:Alternative Summary by KlomDark · · Score: 1

      Yah, but I took your sucky G language and turned it into a real language called G++, and a managed-memory implementation called G#... ;)

    3. Re:Alternative Summary by jekewa · · Score: 2, Interesting

      I'll start using Go as soon as Google makes a browser-based development environment for it, ala Google Documents meets Bespin, and it makes something I can then deploy to servers other than the one running the development environment...

      --
      End the FUD
    4. Re:Alternative Summary by FrankDrebin · · Score: 1

      Man, Google has a lot of catching up to do. Everybody knows you collect $200 every time you pass Go.

      --
      Anybody want a peanut?
    5. Re:Alternative Summary by slasho81 · · Score: 2, Interesting

      Rich Hickey talked about incidental complexity in his keynote talk at the JVM Languages Summit 2009: http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey
      It's worth watching.
      If Pike thinks the Go language solves anything, he should probably watch this talk too.

    6. Re:Alternative Summary by EvilBudMan · · Score: 1

      It mus have be written by Sun Tzu? Sounds like a Chinese game or something, Wooooo

    7. Re:Alternative Summary by msclrhd · · Score: 1

      I don't like your proprietary G# language, so have invented a similar syntax called Gala that generates native G code using the Cobject type system designed for COMB.

    8. Re:Alternative Summary by Anonymous Coward · · Score: 0

      Also, Google Engineer frustrated that new language's name can't be Googled.

    9. Re:Alternative Summary by Anonymous Coward · · Score: 0

      Google Engineer promotes Google language Go and claims it addresses weaknesses of existing languages, including Java and C++.

      Sun engineer promotes Sun language Java and claims it addresses weaknesses of existing languages, including C and C++.

      Bell Labs engineer promotes Bell Labs language C++ and claims it addresses weaknesses of existing languages, including C and Pascal.

    10. Re:Alternative Summary by thogard · · Score: 1

      Too bad go can't cope with real money. Has anything since Cobol?

  14. 443,000 lines of Javascript?? by Black-Man · · Score: 3, Interesting

    This guy has a lot of nerve telling other folks what programming language to use.

    1. Re:443,000 lines of Javascript?? by Anonymous Coward · · Score: 0

      You're right, a cross platform, cross browser language with low server overhead is exactly what email clients DON'T need these days.

    2. Re:443,000 lines of Javascript?? by Anonymous Coward · · Score: 0

      You're right. Rob Pike shouldn't discuss his research because some guy he doesn't even know wrote something in Javascript.

      You're only at +4 interesting now, but I think you deserve +5. 100% quality post

    3. Re:443,000 lines of Javascript?? by Anonymous Coward · · Score: 0

      So you move the overhead to the user instead of just supporting standard email protocols and using the user email program that came with their computer.

  15. Linus thinks the same by stanlyb · · Score: 0

    And i have the same problem with java/C++, and btw, the inventor of C++ standard says so.....So, why do we continue to produce Java/C++ bloatware???

    1. Re:Linus thinks the same by Anonymous Coward · · Score: 1, Insightful

      Linus has a fetish for C. He'll say anything.

  16. Not a good diplomatic move... by drewhk · · Score: 3, Interesting

    You should bash Java, and C++ devs will agree. You should bash C++, and Java devs will agree.

    Now you bashed both languages that has probably the most devs. Except some dynamic languages, of course (PHP and JS comes to mind).
    Oh, you insulted them, too.

    OMG...

    1. Re:Not a good diplomatic move... by JamesP · · Score: 1

      I prefer C++ to Java but I agree with both bashings

      --
      how long until /. fixes commenting on Chrome?
    2. Re:Not a good diplomatic move... by Anonymous Coward · · Score: 0

      I absolutely hate both Java and C++, but I program in both. Maybe I should be doing something other than software development.

    3. Re:Not a good diplomatic move... by nomadic · · Score: 1

      You should bash Java, and C++ devs will agree. You should bash C++, and Java devs will agree.

      As a non-programmer I like to bash every language, while pretending to know what I'm talking about. Coders are so much fun to aggravate.

    4. Re:Not a good diplomatic move... by arth1 · · Score: 3, Funny

      You should bash Java, and C++ devs will agree.

      Bad advice!

      % bash java /usr/bin/java: /usr/bin/java: cannot execute binary file

    5. Re:Not a good diplomatic move... by Red+Flayer · · Score: 1

      That's even more fun with text editors. One of these days I'm going to register an alt and start a flamewar with myself over Vi vs Emacs, just to see how many other slashdotters I can drag into it.

      --
      "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    6. Re:Not a good diplomatic move... by clone53421 · · Score: 1

      How dare you even suggest that there’s any question as to which of those is clearly superior...

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    7. Re:Not a good diplomatic move... by Anonymous Coward · · Score: 0

      It's case sensitive, you moron!

    8. Re:Not a good diplomatic move... by Vellmont · · Score: 1

      I'm a Java developer, though I have nothing against C++ and think it's a great language. Attacking language X in favor of Go really does zero for me.

      No, what he should be doing if he really wants to promote Go is MAKE IT LIVE.

      You'd think someone who advocates for a language called Go would understand the concept, since that's one of the basic tenants of the game Go. I've often seen parallels in technology with the game of Go which is primarily about creating something and making it survive, in contrast to Chess, a game about destroying your opponent.

      If Go is going to... uh, go anywhere, the developers of it need to make it useful. Useful things survive, useless things die. Going after this language or that doesn't make Go useful in any way. Most people are attracted to things that make their life easier, not to some dumb religious war against one thing or another.

      --
      AccountKiller
    9. Re:Not a good diplomatic move... by shutdown+-p+now · · Score: 1

      Well, at least FORTH developers got a good chuckle out of this ruckus.

      Yes, all two of them.

    10. Re:Not a good diplomatic move... by afabbro · · Score: 1

      I prefer C++ to Java but I agree with both bashings

      I found them rather korny.

      --
      Advice: on VPS providers
  17. "Google Engineer" ... seriously? by John+Whitley · · Score: 4, Insightful

    How about "Rob Pike Decries Complexity of Java, C++" instead?

    |Rob Pike| >> |Google Engineer|

    1. Re:"Google Engineer" ... seriously? by BitZtream · · Score: 0, Troll

      Why? I haven't used anything he's ever done.

      I have used stuff Google has done.

      What he's created is shit no one cares about.

      I've written almost all the same sort of things he has, and guess what, no one has used my stuff either!

      Just because you do something doesn't mean anyone else cares or that its important.

      Plan9 is a shining example of 'no one gives a fuck'

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:"Google Engineer" ... seriously? by SteeldrivingJon · · Score: 1

      But... he's been on Letterman.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    3. Re:"Google Engineer" ... seriously? by scratchdiver · · Score: 1

      |Rob Pike| >> |Google Engineer|

      For sufficiently negative values of Google Engineer, I do not think that expression means what you think it means. In fact, for any non-zero value of Google Engineer, you only make Rob Pike shift right!

    4. Re:"Google Engineer" ... seriously? by vbraga · · Score: 2, Informative

      You probably used UTF-8 in a way or another.

      --
      English is not my first language. Corrections and suggestions are welcome.
    5. Re:"Google Engineer" ... seriously? by Grishnakh · · Score: 1, Informative

      Sorry, but while I definitely know Brian Kernighan, Dennis Ritchie, and Ken Thompson by name (and also Bjarne Stroustup), I'd never heard of Rob Pike before I read this story. Yes, he's done some noteworthy things according to his Wikipedia bio, but he's just a little below these other guys, so he doesn't quite have the same name recognition they do.

    6. Re:"Google Engineer" ... seriously? by bonch · · Score: 1

      It's actually more relevant that he's a Google engineer, because the point of his talk is actually to promote a Google-invented programmed language called Go, which was not mentioned in the summary.

    7. Re:"Google Engineer" ... seriously? by BitZtream · · Score: 1

      I use it, as a programmer, every single day.

      UTF8 was something he contributed too, barely, not invented, and he wasn't the reason its useful, but nice try.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    8. Re:"Google Engineer" ... seriously? by sylvandb · · Score: 1

      Of course, UTF-8 was defined so that anyone using ASCII (like this post) was by definition using UTF-8. They used UTF-8 before UTF-8 existed!

      That's like creating a blend of nitrogen and oxygen, adding a bit of CO2, allowing other gaseous impurities in small (mostly single-digit percentages or less) in proportions the same as the atmosphere of earth, and then calling it NO. Everyone here has used NO in some way or another.

      It counts for nothing.

    9. Re:"Google Engineer" ... seriously? by Anonymous Coward · · Score: 0

      He barely contributed to UTF? Your facts are wrong. Actually they aren't facts at all. He did half the work along with Ken Thompson. I'll assume you know who Ken Thompson is.

      http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt

    10. Re:"Google Engineer" ... seriously? by Anonymous Coward · · Score: 0

      |Rob Pike| == |Hacker|

      We've moved on to hard science.

    11. Re:"Google Engineer" ... seriously? by Anonymous Coward · · Score: 0

      |Rob Pike| >> |Google Engineer|

      Wait, is that the abs of Rob Pike is much greater than the abs of Google Engineers or the magnitude of Rob Pike is left bit-shifted by the magnitude of Google Engineers?

    12. Re:"Google Engineer" ... seriously? by medcalf · · Score: 1

      Perhaps not, but Brian Kernighan, Dennis Ritchie and Ken Thompson all know and esteem Rob Pike. In fact, Kernighan and Pike's "Practice of Programming" is one of those books that every serious programmer should read. And for that matter, didn't Pike write or at least contribute substantially to "The UNIX Programming Environment?" In other words, that you didn't recognize Pike's name immediately says more about you than about him.

      --
      -- Two men say they're Jesus. One of them must be wrong. - Dire Straits
  18. Summary: by IICV · · Score: 4, Interesting

    Google distinguished engineer Rob Pike ripped the use of Java and C++ during his keynote at OSCON, saying that these 'industrial programming languages' are way too complex and not adequately suited for today's computing environments. ... Pike also spoke out against the performance of interpreted languages and dynamic typing. ... "Go is an attempt to combine the safety and performance of statically typed languages with the convenience and fun of dynamically typed interpretative languages," [Pike] said

    Shorter Rob Pike: all those other languages suck, but the one I invented rocks. It's elegant and simple just like Lisp was back in the sixties!

    I'm reminded of this blog post I read, where the author described it as "The Hurricane Lantern Effect". You look at someone else performing a task, and you think "geez, what an idiot! I can do it better in ten different ways!".

    Then they hand the task off to you, and you slowly realize that each of your ten improvements isn't actually any better.

    I bet you that if it's still around in ten years, someone else will decry Go 10.0 as being a "bureaucratic programming language".

    1. Re:Summary: by BitZtream · · Score: 4, Insightful

      Whats better is if you take a look at his history of 'inventions', you find one or two things that eventually, with the help of others, turned into something that other people use.

      His personal list of inventions looks like a list of 'things no one gives a shit about'.

      His list of Wikipedia quotes are golden. I think there was one on the list that didn't make him look like a total douche.

      He's one of those guys that thinks everything sucks except what he's made ... unfortunately, the entire rest of the world feels pretty much the exact opposite.

      Looking at his history, I don't think he'll ever say anything bad about Go, he'll just continue thinking it was perfect and that it failed because everyone else wasn't up to the task of using it.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:Summary: by CraftyJack · · Score: 1

      Thanks for the link - that was really interesting. Even more so when you consider that we may be natural overimitators, i.e. we have an innate preference for the tried-and-true, even if it is inefficient. Leads me to suspect that we actually have to be trained to convince ourselves that our nifty new ideas are preferable.

    3. Re:Summary: by Kjella · · Score: 1

      You look at someone else performing a task, and you think "geez, what an idiot! I can do it better in ten different ways!". Then they hand the task off to you, and you slowly realize that each of your ten improvements isn't actually any better.

      You're describing a very simple process that is pretty much fully understood by one man. In most of the complex systems I've looked into, there is usually plenty room for improvement because nobody really understands the process and so they fix issues in the simplest way possible, like creating a special case hack in the output function. Recently I picked apart a certain job at work and got it down from 1.5 hours to 8 seconds, all because of independently sane decisions using preexisting queries, views and reports but together they belonged on the daily WTF. I've seen people do hundreds of records one by one because they couldn't figure out how to use the batch functionality. I'm never afraid of saying I have an improvement idea, what I'm afraid of are hidden side effects. That is the doom of nearly all cleanup attempts, it's not that I break the process I'm improving it's that I break others that nobody mentioned or have documented or knew depended on what I changed. Often the people who implemented it have left the company (or were consultants to begin with), meaning all you have are whatever scraps of documentation they left behind and since then things have only been bolted on or become redundant. If you work your way through it end-to-end, I'd be very surprised if improvements didn't come by the dozen.

      --
      Live today, because you never know what tomorrow brings
    4. Re:Summary: by Mongoose+Disciple · · Score: 1

      The Hurricane Lantern Effect analogy isn't a bad one, but I think what we tend to see with programming languages/tools is something just a little bit different.

      In the HLE, you're trying to perform the exact same task as the person you're replacing/criticizing. And that does happen in development too -- arrogant developer tries to roll his own replacement for existing standard/language/framework X because of its shortcomings, and his solution does fix the exact thing he's upset about, but breaks ten other things.

      What I think also happens a lot in development (and is sort of a parallel to this) is that a developer tries to 'correct' a percieved shortcoming in a language/framework/whatever, but in fact his 'fix' only makes the result more suitable for what he's specifically doing and neglects other uses for the tool or why it might be preferred. For example, someone who complains that C is too close to the machine -- well, yeah, it is for some tasks, but other times that's exactly what you need.

    5. Re:Summary: by ebuck · · Score: 1

      Go's failure is an obvious conspiracy for everyone attempting to make him Stop.

    6. Re:Summary: by yyxx · · Score: 2, Informative

      I think UTF-8 and his two books were pretty influential. BLIT and Plan 9 were pretty significant research systems. And as a member of the original UNIX group, I think his opinion on UNIX and C carries some weight (and is probably shared by many of the original UNIX developers).

      As a language, Go actually looks pretty nice to me. The trouble with Go is the same trouble nice new languages have always had: lack of critical mass. If Google starts using Go for Appspot, Android, and internal development, it may have a chance.

      Just out of curiosity: what have you accomplished?

    7. Re:Summary: by Vellmont · · Score: 1

      The hurricane lantern effect is an interesting read. The story involves the master trying to teach the student by the student merely imitating the actions of the master. This is where the problem lies. GOOD teachers teach people WHY they do things the way they do them, not simply to just do it that way and get off my lawn. This particular story maybe there's not enough time to actually do that, but that's not really the point here, is it?

      The point being, imitation merely leads to poor understanding and rigidity in thought and action. While I do think the "distinguished engineer" in question here is really quite naive in his approach, progress is usually made by people once considered naive fools. I don't know much about Go, so I can't really tell you if it's the "new hotness" or it's just another Forth.

      --
      AccountKiller
    8. Re:Summary: by Vellmont · · Score: 1

      He sounds like he's a bright guy, with some very deep personality flaws that've held him back.

      Looking though his quotes and the article it's quite obvious that he seems to think the way to build something new and great is to malign yourself against "the enemy technology" (i.e. C++, Java, UNIX, X-Windows, Object oriented, etc). At first I thought he was just a dumb kid, or maybe just an immature adult that might learn some day. At 54 he sounds like he's just a fool who can't see.

      Defining yourself as not something else never works. It's just so incredibly limiting that you wind up painted in a corner with no wiggle room because you're Oh so afraid you might be The Bad Guy (Those big bad C++ writing, Java loving, Unix using, X-windows creating, OO programmers!)

      --
      AccountKiller
    9. Re:Summary: by Vellmont · · Score: 0, Troll


      Just out of curiosity: what have you accomplished?

      So the only people that can be critical of anyone are people that have some big publicly recognized accomplishments? That's a pretty small list.

      Face it, the guy goes out of his was to be a blow-hard. Being a blow-hard might be acceptable to many if you've also done some incredible thing to earn respect. But in reality, he really hasn't. UTF-8? Plan 9? Not really terribly important contributions. More than I've done.. but then I'm not a giant blow-hard trying to malign myself against some of the most successful technologies, in favor of MY personally invented technologies (that later really went nowhere).

      The point the GP was trying to make wasn't "I'm great, this guy sucks". But merely "This guy thinks he's better and smarter than everyone else... but his actual accomplishments in what HE'S developed to replace those technologies in no way measure up the his fanatical criticism of them"

      --
      AccountKiller
    10. Re:Summary: by Anonymous Coward · · Score: 0

      Kind of like, that guy. Whats his name, Dyson?

      Didn't he have a quote, kind of like, "I've spent my life reinventing the vacuum." My first thought was, "I'm sorry."

    11. Re:Summary: by Anonymous Coward · · Score: 0

      You psychoanalyzed someone based on some Wikipedia quotes? You must have a real talent to be able to draw such specific conclusions from such sparse data.

      Looking through the source code and the research he's published it's quite obvious that he seems to think the way to build something new and great is to build it.

      I think you're just a dumb kid, or maybe just an immature adult that might learn someday that some laconic phrases you found on the internet aren't a foundation for sound reasoning on someone's personality and life's work.

    12. Re:Summary: by ignavus · · Score: 1

      I bet you that if it's still around in ten years, someone else will decry Go 10.0 as being a "bureaucratic programming language".

      Every new language starts out small and simple. Over time, it adds features, becomes more powerful, more "mature", more complex. Eventually it becomes gargantuan, so that only the old-timers who grew up with the language understand it.

      So someone invents a new language, that is small and simple...

      Without thinking about it, the industry has worked out that a good way to learn a complex language is to learn a simple language and grow with it.

      --
      I am anarch of all I survey.
    13. Re:Summary: by yyxx · · Score: 2, Interesting

      So the only people that can be critical of anyone are people that have some big publicly recognized accomplishments? That's a pretty small list.

      You went beyond critical and went to ad hominems; that makes the question legitimate.

      But merely "This guy thinks he's better and smarter than everyone else...

      He's smarter than the vast majority of programmers; his publications and resume tell you at least that much.

      but his actual accomplishments in what HE'S developed to replace those technologies in no way measure up the his fanatical criticism of them"

      He was part of the development of the technologies he criticizes. Second, his criticism really is valid: C++ and Java are objectively bad designs, and I say that as someone whose main programming languages over the last 30 years have been C, C++, and Java. Third, technically, what he has developed to replace them does measure up; it is certainly quite a bit better.

      So, if he developed better technologies, why didn't they catch on? Because better technologies frequently don't catch on. Replacing a technology with something better doesn't just require developing something better, it requires convincing the users of the old technologies that switching is worthwhile, a process complicated by the fact that most users of those old technologies know little about software or programming languages.

      And, as you noticed, Pike isn't a particularly good advocate; he comes across as a blow-hard. Pike is never going to create a successful programming language, even though he is a lot more capable than B.S. or Gosling.

    14. Re:Summary: by Vellmont · · Score: 1


      You went beyond critical and went to ad hominems; that makes the question legitimate.

      No, that was someone else. People act as if personality doesn't matter, but the reality is it does. Whether his ideas are great are not is really beside the point. Having great ideas means nothing if you can't convince others they're great ideas. Being a blow-hard makes that a bit tougher. Pointing out how this guy has gone about advocacy for his own product is extremely relevant to the conversation. Something that's really not relevant would be something like how he cheated on his wife, or is a huge Barbara Streisand fan (both of which I just made up). In short, leadership matters.

      Second, his criticism really is valid: C++ and Java are objectively bad designs

      Compared to what? Compared to what's actually produced good solutions, they're great designs. Compared to some ideal of perfection.. well everything is a bad design in that case. All designs are flawed, including this guys designs. Pointing that out isn't terribly interesting. Making it your main driving point is beyond stupid. Knocking a technology based on their flaws misses the point. It's like saying "cement technology sucks rocks because it's so damn heavy and you can't build airplanes out of it!" but ignore the fact that cement works quite well for the past couple thousands years in building construction.


      Third, technically, what he has developed to replace them does measure up; it is certainly quite a bit better.

      Too often people think that their ideas should just stand on their own, in a vacuum where everyone judges them on some idealized matrix that the technology creator came up with. Where the actions of the community at large aren't a major factor in the success or failure of a technology. If you really think Go, or Plan 9, or whatever is so much greater than the alternatives, then you need to convince others of that. If it really solves peoples problems, people will start using it. If you REALLY believe in Go, you should try to shut this guy up, because he does a disservice to the technology. He's nothing but a boat anchor that can actively drive people away from it.

      The point being, why should I pay attention to someone with a poor track record for creating anything interesting? I really know nothing if Go is the end-all-be-all of super coolness in some pure technological way. But you know what? It doesn't matter. Technology is never really about the technology, it's about people. Until now, I've really heard nothing bad about Go except that nobody really uses it. Now that the blow-hard has started a fire-storm, I get a lot of negative opinions about it from people who like Java or C++.

      --
      AccountKiller
    15. Re:Summary: by yyxx · · Score: 1

      Compared to what?

      It's not a question of "comparison", it's a question of basic programming language design. Java and C++ have unsound type systems and numerous avoidable sources of inefficiencies.

      but ignore the fact that cement works quite well for the past couple thousands years in building construction.

      But Java and C++ do not "work quite well". They are unproductive compared to available alternatives. The software people write in them is bug-ridden, unportable, slow, and full of security holes. Software projects in industry are perpetually behind. When tested, most programmers have basic deficiencies in their understanding of those languages.

      The point being, why should I pay attention to someone with a poor track record for creating anything interesting?

      You shouldn't "pay attention" to anybody, Pike or B.S. You should pick technologies based on understanding them and the trade-offs involved. Obviously, you do not.

      Where the actions of the community at large aren't a major factor in the success or failure of a technology.

      The actions of the community clearly are a factor: people with little or no knowledge (e.g., you) pick bad languages and tools for projects, and that's why software is in such a sorry state.

      People act as if personality doesn't matter

      As I was saying: "And, as you noticed, Pike isn't a particularly good advocate; he comes across as a blow-hard. Pike is never going to create a successful programming language, even though he is a lot more capable than B.S. or Gosling." Apparently, you can't even read.

      And, no, I don't think Go is a particularly good language. But Pike's criticism of Java and C++ is valid, and there are plenty of other, good languages around. I'm using them when getting a job done quickly and correctly matters. If you pay me by the hour, I'll even program in COBOL or assembly.

    16. Re:Summary: by Vellmont · · Score: 1


      But Java and C++ do not "work quite well".

      Right, that's why they're the two most popular languages in the world, because they don't work very well and aren't very productive. Why is it people pick these languages if they suck so bad, and there's obviously better choices available?

      The software people write in them is bug-ridden, unportable, slow, and full of security holes. Software projects in industry are perpetually behind. When tested, most programmers have basic deficiencies in their understanding of those languages.

      Very true. This is also the case for every other language in existence. The problems you describe aren't merely problems of technology or language choice, they're problems we've mostly decided to have and put up with. Language choice might make parts of it go away.. but I'll guarantee you some other problem will immediately replace it. Thinking these problems are technological ones is like burying your head in the sand and not looking up the food chain or around the room a little.

      The actions of the community clearly are a factor: people with little or no knowledge (e.g., you)

      Yes.. we're all fools with no knowledge. Just robots programmed to do as the master tells us. More than a little arrogant. Ultimately though, a useless statement and nothing but an attempt at an ego boost.

      You should pick technologies based on understanding them and the trade-offs involved. Obviously, you do not.

      Right.. because I've certainly expressed enough in this little thread for you to come to that conclusion.

      Apparently, you can't even read.

      I realized we're in agreement, The point is to clarify why pointing out the guy is a dickweed is relevant.

      And, no, I don't think Go is a particularly good language. But Pike's criticism of Java and C++ is valid, and there are plenty of other, good languages around.

      Why is it everyone seems to think their POV is the only one that exists? Why are you making all the right choices for your given problems, but people who use Java and C++ are the big idiots? How is it you know so much about other peoples programming problems and problem space that you can make vast generalizations about how they've made the wrong choices? Utterly ridiculous.

      --
      AccountKiller
    17. Re:Summary: by yyxx · · Score: 1

      Right, that's why they're the two most popular languages in the world, because they don't work very well and aren't very productive. Why is it people pick these languages if they suck so bad, and there's obviously better choices available?

      People pick them because it's easy to find programmers, libraries, documentation, training materials, and tools for them. And initially, Java and C++ caught on because a few large companies (Microsoft, IBM, Sun) pushed them.

      Being able to hire low-productivity programmers working in a mediocre programming language still beats having no programmers working in a well designed language.

      Very true. This is also the case for every other language in existence.

      No, they are not "the case for every other language in existence". Few languages other than C++ have even the possibility of a buffer overrun or pointer error, one of the most common sources of security errors in UNIX and Windows software. Few languages other than C++ have such widespread use of undefined effects in their definitions. Few languages other than Java have poorly designed features like covariant arrays, type erasure, or class loaders.

      Yes.. we're all fools with no knowledge. Just robots programmed to do as the master tells us.

      If you do have actual knowledge of programming languages, why don't you come up with a technical analysis comparing, oh, the Java type system to the type system of other languages, or the C++ runtime and performance to the runtime and performance of other languages? In what way do you think it's actually technically better? Do you even know other languages besides Java?

    18. Re:Summary: by Vellmont · · Score: 1


      People pick them because it's easy to find programmers, libraries, documentation, training materials, and tools for them. And initially, Java and C++ caught on because a few large companies (Microsoft, IBM, Sun) pushed them.

      That's one reason. Why is such an invalid reason? You're really trying to tell me that productivity isn't dependent on programmers, libraries, documentation, training materials and tools? The focus you have on the language itself in isolation from everything else is a false comparison. I actually don't really agree with you on your criticisms of the language specifics, but that's really another issue entirely.

      C++ caught on because companies pushed them? I've never heard that before. Companies try to push out products that ultimately fail all the time. The idea that the only reason these language succeeded is because of large companies pushing them (and not anything to do with the language itself) flies in the face of evidence. If products were adopted merely because a large company backs it, there would be no colossal failures. I'm not a language historian, so I can't pull out failed languages that were pushed by a large corporation. Are you suggesting programming languages are different from other products in that the success/failure has nothing to do with the product itself and everything to do with marketing, and Big Business?

      still beats having no programmers working in a well designed language.

      So what are these great well designed languages you speak of, that if only all of us idiots of the world would just start USING them, all our problems would just go away?

      Few languages other than C++ have even the possibility of a buffer overrun or pointer error, one of the most common sources of security errors in UNIX and Windows software. Few languages other than C++ have such widespread use of undefined effects in their definitions. Few languages other than Java have poorly designed features like covariant arrays, type erasure, or class loaders.

      So what? It's pretty easy to pick out the flaws of product Y, and then point out how product X doesn't have those flaws (ignoring the flaws that product X has that product Y doesn't have). I'm also not quite sure why class loaders, covariant arrays or type erasure are such horrible flaws. You might as well start arguing about how steel sucks ass because it's relatively heavy compared to an aluminum allow. If only people built everything out of aluminum, all our construction problems would be solved! All tools have limitations built into them. Why you're so focused on some bizarre campaign against these two particular tools I just can't quite understand.

      No, you're so focused on the language that you're missing the humans. Software is about people, not languages. It's the humans that create the vast majority of the flaws in programs. Languages can make it easier to avoid those flaws, but ultimately they're created by people. Throw a poor programmer at any language and I guarantee you they'll find a way to fuck it up.

      If you do have actual knowledge of programming languages, why don't you come up with a technical analysis comparing, oh, the Java type system to the type system of other languages, or the C++ runtime and performance to the runtime and performance of other languages? In what way do you think it's actually technically better?

      Because I don't feel any need to prove myself to some guy on slashdot? Because I don't think the whole discussion revolves around some isolated technical merits of Language A vs Language B?

        Do you even know other languages besides Java?

      Yes, I know several. You're beginning to sound like a troll, merely trying to attack credibility through trying to provoke some sort of technical dick measuring contest. I'm not interested in that.

      --
      AccountKiller
    19. Re:Summary: by Anonymous Coward · · Score: 0

      That's one reason. Why is such an invalid reason?

      Where did I say it was an "invalid reason" for choosing a language?

      So what are these great well designed languages you speak of, that if only all of us idiots of the world would just start USING them, all our problems would just go away?

      Your problems obviously wouldn't go away, because, as you have realized yourself, poor programmers fuck up in any language. Good programmers, on the other hand, already know what choices they have and use them appropriately.

  19. Because they WORK by Anonymous Coward · · Score: 0

    If I need to write something very complex that no one else has written before, I can be confident that I can get the job done in C or C++. The mainstream compilers available today are mature and have well known behaviour. This simply cannot be said for any of the more recent languages, such as Python and Ruby (for example), that are *already* struggling with compatibility, performance and development issues that also plagued the "old" languages for years after their initial adoption. There is certainly something to be said for new interesting languages that can potentially make things easier, but IMHO there is FAR FAR more to be said for old languages that are much better understood for those who practice software engineering, rather than just "programming".

  20. He's both right and wrong. by onion2k · · Score: 0, Troll

    For an engineer working on the sort of massively complex computing problems that face the likes of Google he is entirely correct that the likes of Java and C++ are over-engineered and unnecessary for what he faces. That's spot on (I imagine, I'm not a Google engineer).

    But most of today's computing problems aren't like that. The software industry has exploded in the past couple of decades, with close to every single business now demanding bespoke development in the form of websites, desktop apps, etc.

    Those tasks are carried out by "code monkey" level people. People who need the over-engineering of a modern language because they're not really capable of writing code anywhere near the processor layer. They're puzzle solvers - people who glue together cookie-cutter libraries with the minimum of thinking. The people who use the languages Pike is decrying aren't the ones who're writing the frameworks and libraries that make it all so complicated, they're the ones who have to use libraries because they can't write code to do what the library does for them. It's hand-holding. It's necessary. Maybe not in the offices of Google, but definitely in the offices of "Joe Random Web Design Inc".

    1. Re:He's both right and wrong. by Anonymous Coward · · Score: 0

      There's a processor layer? Is that anywhere near the data, business or presentation layer? Now... where is my banana....

  21. A man after my own heart by Brett+Buck · · Score: 5, Insightful

    These sorts of languages (and the underlying religious cults they bring with them) are probably appropriate for some uses. But what I see done in my life-critical real-time processor applications borders on criminal. Data hiding? How the f'ing hell do I check what is going on to the bit level is some twit determined to "hide the data". This is particularly apt right now, because we are adding a feature to our code that was almost trivial to add to our FORTRAN simulations, and because of the "cult of classes" C++ programming it's damn near impossible in the final product, and completely impossible to look at and tell what the heck it's doing. Trying to test it like a black box is never going to get to the level we need.

          We started having peer reviews of the code, and my colleagues and I are the designers of the system, so we would hypothetically need to sign off on it. We went for two hours to get 10 lines into it, no one could explain how it was working but that we should just "trust the compiler". That didn't fly with us, so the solution was to *not have us present at the peer reviews* since we were "disruptive"

        What we need is someone that can write straightforward procedural code, but no one seem to be willing or able to do it any more. It has all the features of a cult or a secret society, even when you get someone to understand and agree, they won't deviate from their dogma.

    1. Re:A man after my own heart by Anonymous Coward · · Score: 0, Troll

      You sound inflexible and stuck in an era of programming long since left behind. I've worked with your kind before, but then you got "removed" from the project for causing too many problems and put in the corner glass case of emotion until one day you snapped and beat a keyboard against a desk and the HR department had a "real" (albeit stupid) reason to get rid of you as all the actual reasons they should have got rid of you for just didn't fly legally...

    2. Re:A man after my own heart by Anonymous Coward · · Score: 0

      You sound like a bit of a cunt.

    3. Re:A man after my own heart by Anonymous Coward · · Score: 0

      I'm not sure if it's a cult, it's just programmers are taught these days in higher level languages and they don't fully understand that, yes, there is another layer to programming.

      Honestly I love ASM and wish I got a chance to do more ASM programming... loved doing it on the x86. I like being close to the metal!

      But now I code in ASP... SIGH!!

    4. Re:A man after my own heart by AigariusDebian · · Score: 1

      If the code does not do what is supposed to do and noone can actually explain what it actually does and how, then he has a point. Some teams spend months designing object hierarchies and charting all kinds of UML diagrams to decide which class should subclass what other class. Other teams spend a week writing a simple, procedural, hackish program that does the job (poorly) and passes the tests (mostly) and after that spend a month or two re-factoring it into something proper, understandable, maintainable and documented and adding polish (passing all the tests, tweaking UI colors, adding the functions that user just though of as critical, ...)

    5. Re:A man after my own heart by deKernel · · Score: 1

      Then I would suggest that you fire every single person writing code that cannot describe flow and desired results. It sounds like you have team of people who like to experiment with features as opposed to producing quality. Every language can be abused, and it sounds like you have a group of kids with baseball bats banging on keyboards.

      Based upon your statement "..life-critical real-time processor applications..." tells me C++ is one of the better languages to suite your needs. It is a language that allows for code reuse (assuming people understand just how to write the code to be reused ... which is art onto itself), plus add new functionality with minimal coding. In addition, to suite your "real time" needs, you can optimize the living kajeebies out of it with some though and understanding of inline assembly.

    6. Re:A man after my own heart by HeronBlademaster · · Score: 1

      So what you're saying is that it sucks working on a codebase in a language you don't understand using design paradigms you don't understand?

      Nothing to see here...

    7. Re:A man after my own heart by inKubus · · Score: 1

      Actually, a religion is a religion and a cult is a cult. A cult is basically a religion with no political power. Since every operating system in the world is written in C, C++, or Assembly, I'd say C has some power. Since every large company with an enterprise web application solution uses Java (or PHP or C#), I'd say those languages also have some political power. The "cult" is Go, Ruby, Python. Those are the cult languages.

      --
      Cool! Amazing Toys.
    8. Re:A man after my own heart by Grishnakh · · Score: 1

      Adding a feature to C++ should be trivial, thanks to inheritance. That's one of the big advantages of an OO language like C++.

      It sounds like you have a bunch of people who don't understand the code they're working with. This sounds like the company I'm currently working in, trying to get a big project done in a ridiculously short schedule with software teams dispersed around the globe with little real communication between them (except through technically incompetent managers), plus several different contract teams. In short, it's nearly impossible to find the person who actually knows how a particular part works and what should be done to make changes.

      As for black-boxes and data-hiding, those are useful features in large projects where different people are working on different parts of the code. If competent architects are in control, they're able to divide the project into smaller parts, define interfaces between them, and assign those parts to different programmers to complete. Then, no one really needs to know what's going on in someone else's module, except through the pre-defined interfaces. They don't have to worry about conflicting variable names and the like, or someone tying into their module in an incorrect way. However, this approach obviously requires competent software architects, and competent management, but it's really essential for a large software project.

    9. Re:A man after my own heart by assemblyronin · · Score: 2, Insightful

      We started having peer reviews of the code, and my colleagues and I are the designers of the system, so we would hypothetically need to sign off on it. We went for two hours to get 10 lines into it, no one could explain how it was working but that we should just "trust the compiler".

      Unless you're writing assembly code for non-pipeline microprocessors, you're already implicitly 'trusting the compiler' because most modern compilers will re-order instructions to help prevent pipeline stalls, or improve efficiency.

    10. Re:A man after my own heart by Entrope · · Score: 1

      It sounds like you ran into a problem where someone wrote cargo cult code: Someone told them doing _____ was a good idea, and maybe (within bounds) it works the way they expect, but they do not understand it and so they cannot explain it.

      On the other hand, I had a code review once where someone challenged the choice of C++ and the use of classes, on the basis that the compiler sometimes goes off and does things like garbage collection behind the programmer's back. He only backed off and stopped ranting when I showed him that the generated assembly code looked exactly like I expected it to, but he basically refused to review any other C++ code.

      Some professionals work on high-reliability software -- and what they (we) really need are not people who can write procedural code or who can write object-oriented code, but people who know their own limitations and who design before they code.

    11. Re:A man after my own heart by 16K+Ram+Pack · · Score: 2, Insightful

      The "cult of classes" has really got out of hand. I spent about 4 days just looking through some C# code of a client, to try to work out exactly how it worked. No-one seemed to give a damn about making a pragmatic, easy to understand solution. Instead, it was stacks of classes inheriting from classes. In one instance, there was a "staff" class which inherited from a "person" class. But the "person" class was used in no other way than to be inherited by the staff class.

      Now, theoretically it's quite right, but it's just not pragmatic. It just adds code that makes things confusing. And things like this make maintenance of code a total bitch. I'm not against classes, but they're often overused and entirely unpragmatic.

    12. Re:A man after my own heart by ultranova · · Score: 4, Insightful

      But what I see done in my life-critical real-time processor applications borders on criminal. Data hiding? How the f'ing hell do I check what is going on to the bit level is some twit determined to "hide the data".

      You read the code of the class that the data belongs to. You can be sure that what you read is the only thing going on because no other code can do anything to the data since it's hidden from it.

      This is particularly apt right now, because we are adding a feature to our code that was almost trivial to add to our FORTRAN simulations, and because of the "cult of classes" C++ programming it's damn near impossible in the final product, and completely impossible to look at and tell what the heck it's doing.

      Well, high-level languages generally make it impossible to figure out what's really going on behind the scenes. That's intentional: abstracting away details is the whole idea of a programming language.

      C++ is particularly bad here because it mixes high- and lowe-level abstractions and allows you to redefine basic operations (such assignment, +, etc.). Combine that with manual memory management and lack of bounds checking and you have a rather explosive combination.

      What we need is someone that can write straightforward procedural code, but no one seem to be willing or able to do it any more.

      We went for two hours to get 10 lines into it, no one could explain how it was working but that we should just "trust the compiler".

      If you are using a compiler, you have the choice of either trusting it, or inspecting the machine code it generates by yourself, which is harder than simply writing the damn thing in assembly to begin with, and thus defeats the whole point of using a compiler.

      If you want straightforward procedural code, use C. Using C++ for procedural code is pointless, and simply adds unneeded complications.

      It has all the features of a cult or a secret society, even when you get someone to understand and agree, they won't deviate from their dogma.

      It could simply be that they disagree with you. Your earlier bit about data hiding making it more difficult to figure out what's going on makes it seem that you don't understand the idea of object-oriented programming, so of course it would seem like a "cult" to you.

      It could also be that you're trolling. In that case: bravo sir, you truly have the art down.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    13. Re:A man after my own heart by thaig · · Score: 1

      I know what you mean. In your circumstance you don't like the way C++ does things behind your back and is difficult to evaluate. It is a case of the people who know C++ trying to use it for everything.

      I've seen people writing software that went into sensitive installations with C++, not realising that the STL they were using wasn't thread safe. Their code experienced mysterious problems and they couldn't solve it or change STLs. I found out what the problem was but it wasn't much help because I was brought in after the work was done. So it was a disaster.

      But that happens because people get used to not thinking about the details and imagining that the language will always save them.

      --
      This is all just my personal opinion.
    14. Re:A man after my own heart by garyebickford · · Score: 1

      I have long railed against the use of 'Model T' languages like C (C++ is a Model T with fins) for most applications coding, but I agree with you in your case. Whatever you are doing seems to me to be the kind of area that does honestly demand a language that is 'close to the metal'. Using fancy-shmancy objects in that environment is assuming the compiler is smarter than the programmer, and probably selling 50% or more of the potential performance and utility down the river. The key is to pick the proper tool for the job. Unfortunately for you, your 'associates' have confused dogma ('in school we learned objects are good') with good engineering ('right tool for the job').

      When (as apparently in your work) you need to talk to the hardware and flip bits, either the programmer or the realtime system had better have extremely good knowledge of how the hardware works - and it's highly unlikely that such a realtime compiler exists (although it's getting more possible.) Conversely my friend who spent a year writing a very fast travel web site in pure C spent about 11 months longer than he should have, for no benefit. In fact, the project finally failed because it could not be adapted fast enough to meet the changing market.

      Similarly, someone has to write the microcode that drives the 14-core CPU with 8 GPU cores and 3 MMUs with a vectorizing instruction router, but at some point I suspect that only an AI will be able to make reasonable use of such complex beasties. The AI might have to write the CPU code generator that plugs into the compiler. At that point, for that purpose, there becomes a big advantage to use the highest level language available, which could provide more clues to the compiler about the real scope of the problem. For example, for generalized array processing APL, an interpreted dynamic language, often ran such computations much faster than any compiled language, because the actual processing of the data was all hand-written machine code, adapted especially to this special problem domain. No compiler knew enough about the problem to take advantage of the tricks available to the machine code.

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    15. Re:A man after my own heart by Brett+Buck · · Score: 1

      Not really. I can write in Java and C++ just fine, thank you. If your concept of a "design paradigm" is to write code that even the authors don't understand and are terrified of even slightly changing for fear of making it not work any more, then I will pass. My code had been easily maintainable for about 2 decades now/

    16. Re:A man after my own heart by Brett+Buck · · Score: 1

      I think you encapsulate the problem nicely. I didn't say that it wasn't important or useful for certain applications, but we are indeed working directly on the bit level- or at least should. Lots and Lots of people might die if this thing craps out under stressed conditions. Until recently, no one even understood how the exception handling worked in the OS, (or, really, how OS worked at all beyond the broadest brush for that matter), and *I* was the one to discover that the way the code was written, *exceptions were not detectable*. For the last 10+ years, and nobody noticed. Of course it was never tested because it's hard to create the exception in the first place. That places people's life in danger.

                Any bug I made when I was writing it putting your life in mortal danger *right now* - which is why we insisted on writing clearly understandable code, checking it down the bit level (yes, high level code testing, examine assembly code, dump as hex, compare that bits matched assembly code using a processor handbook) and then single-stepped through it with a debugger checking that the registers did what we expected. Found things like a "MOV" instruction that worked in most of the conditions, but not when some register bit that shouldn't have mattered was set. There's now 4 pages of errata with one-liners listing them for our processor - something like 200 of them. So much for "trusting the tools". We could test it do that degree because we could easily see what it was doing and knew exactly what each bit of data should have looked like - and it was easy. We made HUGE modifications with great ease because it was laid out at a high level in so straightforward way that anybody could just jump in and do it. And still do.

            I understand that this can't be done in large commercial projects and that the cost/benefit ratio is a real factor and how good you want to design/test it VS how much cost and schedule is a perfectly legitimate tradeoff. And this sort of programming may be the ideal solution to this problem. But when it's treated like the One True Way, and the result is that it's completely unmaintainable, mostly untestable, and the authors of the code consider it so fragile that they insist that it never, ever, be touched, in what should be a pretty small life-critical system, that's when I have a big problem with it.

    17. Re:A man after my own heart by TecKnow · · Score: 1

      I'm really curious what it is you're having trouble doing. I have not found there to be significantly more need to "trust the compiler" in C++ than in C.

    18. Re:A man after my own heart by Coryoth · · Score: 1

      The key is to pick the proper tool for the job.

      And interestingly, for the job specified ("life-critical real-time" software), C is not the proper tool for the job. It lacks real safety (the type system is weak and somewhat sloppy), and doesn't exactly have good threading support. A much better tool would be Ada, or even SPARK-Ada, which really shines in safety-critical and real time software (indeed, real time and embedded software is where Ada remains a major player, and SPARK-Ada, with its rigour and proof tools, is the stand out when it comes to safety-critical or high reliability software).

    19. Re:A man after my own heart by garyebickford · · Score: 1

      I'll bet you've read "The Soul of a New Machine" :)

      This reminds me of a system I worked with in the early 1980's (though I myself worked at the system and app level in a Pascal dialect, not the microhacking level). The processor was a 15x15 inch board filled with TTL. It had a sixteen-level stack implemented with four chips. The processor was 'designed to spec' (which means 'run the chips flat out'). Of course, chips vary - some can meet the spec, some don't _quite_ meet it. So in practice the manufacturer had to hand select the chips and install them in descending order of tiny differences in response time. In any other order, the processor would occasionally do random things - amusing but not useful. Several lessons arise from this problem...

      Interestingly, the CPU also was microcoded, with a 64 bit internal memory and instruction path. So the instruction set of the CPU could be programmed - the CPU could look like a P-machine, a LISP machine, or a C-machine, etc. One of the things programmed into the CPU by default was what is now called 'bitblit' or 'RasterOp' - very fast logical operations on memory arrays, which is the core of fast display operations. This particular operation was minutely tuned to the hardware, such that the next memory fetch could be started in the same cycle as the store, allowing the entire fetch-process-store over the array to be done in one CPU cycle per memory location. Try writing that using objects!

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    20. Re:A man after my own heart by garyebickford · · Score: 1

      Interesting point. I think this has to do with the scale at which one is looking at the problem. I think it was Thompson who described C as a 'structure PDP-11 macrossembler'. At narrow scope (one device driver, perhaps) C is so close to the real hardware that it's probably got just the right amount of abstraction to make that easier and safer than assembler or machine code. Can Ada provide that one-to-one matching to the idiosyncracies of a hardware device?

      At a higher level where one needs real-time in complex systems, perhaps Ada is the right tool. Considering that an F-18 has hundreds of VME boards and that its software is more than half of the cost of the airplane, there is a lot of complex software in there that is largely living in some form of a real-time environment. However, I recall the conflict between Hoare and the rest of the design group regarding the 'kitchen sink' design approach that eventually defined Ada, so I have reservations about Ada - with the proviso that I've never had any actual contact with anything to do with Ada.

      --
      It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
    21. Re:A man after my own heart by Anonymous Coward · · Score: 0

      It sounds like you're working on a project appropriate for SPARKS and some defensive programming. There are also some serious type issues in the code if the authors think it is impossible to read and must not be touched. Also the OS reference is bizarre, unless it is a legacy in-house product. The company might want to consider a commercial real-time OS product, since the system is pretty small and the product is not resource constrained, in which case you wouldn't probably have an OS at all.

  22. Re:We all know the ideal language has two function by somaTh · · Score: 4, Funny

    See, I'm already thinking about extentions.

    doWhatIWantEvenThoughImTellingYouToDoSomethingElse()

    --
    Nostalgia isn't what it used to be.
  23. Something for everyone... by Ossifer · · Score: 1

    "Pike also spoke out against the performance of interpreted languages and dynamic typing."

    So, something for everyone to disagree with...

  24. "Complexity" is a weird thing to hear... by Anonymous Coward · · Score: 0

    "Complexity" is a weird thing to hear whined about from a programmer who's apparently shilling for a language where this:

    s := sum([]int{1,2,3})

    is considered the "short way" to pass an array literal to a function...

    1. Re:"Complexity" is a weird thing to hear... by cbart387 · · Score: 1

      I'll bite. What would you do to make it shorter? That seems pretty sane to me. I'm assuming the language's methods are determined by the signature. There's not that much (maybe the []) you could remove and still determine what is being passed in.

      --
      Lack of planning on your part does not constitute an emergency on mine.
    2. Re:"Complexity" is a weird thing to hear... by Anonymous Coward · · Score: 0

      You don't *need* to determine what is being passed, since it's trivial for a compiler to figure out that {1,2,3} is a list of integers. Hell, ML did this 30 years ago, this isn't rocket science.

  25. News Flash by eclectro · · Score: 2, Funny

    Rob Pike likes to program in Forth in his spare time.

    --
    Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
    1. Re:News Flash by ch-chuck · · Score: 1

      What's so funny about that? Every time that I, too, feel that Solaris, java and c++ have gotten too hard, intricate and subtle I just shutdown to the openboot prompt and program in FORTH. I even have a board game (Othello, ported from BASIC) that will run in obp.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    2. Re:News Flash by meburke · · Score: 1

      FORTH has been mentioned a couple of times, and there are some advantages to having a language like FORTH around. It's small and efficient, and it's possible to prove your logic mathematically. This makes it nice for embedded systems and instrumentation. It is a great tool for writing drivers. And one of the early pioneers (Jeff Fox, I believe) claimed that he could write a FORTH app in about 1% of the code necessary for C. (Big claim: No one has ever challenged it AFAIK, and I can't find the link.) I took my old Win98 system and use it exclusively for playing with colorFORTH. Most of my apps run unbelievably fast on this old Pentium4 system.

      On the other hand, not everyone will be able to program in FORTH, especially the school-corrupted students and graduates that Rice was talking about. The philosophy is completely different from C++/JAVA, and it requires some critical thinking to code properly and efficiently. I don't really see it as a time-saver, but I think it might produce a better product in most cases.

      I strongly suggest LISP for teaching some high-power programming technique. It is adaptable, fast, efficient, fully-contained, and downright fun to work with. The best programmers I have ever met had LISP in their backgrounds.

      --
      "The mind works quicker than you think!"
    3. Re:News Flash by Matz0r · · Score: 1

      I thought it was pike.

      "Pike is a dynamic programming language with a syntax similar to Java and C."

  26. Re:We all know the ideal language has two function by cgenman · · Score: 3, Funny

    slowDownAndCrashSoICanSellAnUpgrade();

  27. Re:We all know the ideal language has two function by DragonFodder · · Score: 1

    doWhatISayNotAsIDo()

    --
    Wherever you go... There you are. B.B.
  28. It's unfortunate... by LaRoach · · Score: 1

    ...that they chose Java for their Android dev environment then...

    1. Re:It's unfortunate... by Anonymous Coward · · Score: 0

      They didn't chose anything at all for Android. They bought it lock stock and barrel.

  29. import Wizards by MadUndergrad · · Score: 1

    Do not meddle in the C++ of Googlers, for it is subtle and quick to segfault?

  30. Excessive abstraction has always annoyed me by Anonymous Coward · · Score: 2, Insightful

    Almost everyone programming computers these days seems to be too eager to forget what the computer is actually calculating. When you are writing software that has any need to perform within certain memory or time constraints, or scale to any degree at all, you need to understand your program at that level.

    For example, for high performance searching it is critical to understand pointer arithmetic to build an effective hash table. Without that, either your substitute search algorithm doesn't scale efficiently, or you're depending on a likely-less-than-optimal generic library.

    I knew a database developer who insisted that each record in a database match the block size of the disk in use. The computer then calculated the block that contained the desired record and read/wrote only that block. Developers in high-level languages just wouldn't give a shit.

    I knew a graphics developer who looked for every opportunity to use powers of two so he could use bit-masking and rotating: rotate 1 bit right to divide by two, or XOR with 0x07 to get modulus 8, etc.

    Optimization by understanding what the computer is actually calculating is fading fast, and teaching Java at the university level only accelerates that trend.

    1. Re:Excessive abstraction has always annoyed me by etymxris · · Score: 1

      If people really wanted those types of optimizations, they'd be wiling to pay for them. But they cost too much in time and money.

    2. Re:Excessive abstraction has always annoyed me by Dutch+Gun · · Score: 1

      I knew a graphics developer who looked for every opportunity to use powers of two so he could use bit-masking and rotating: rotate 1 bit right to divide by two, or XOR with 0x07 to get modulus 8, etc.

      This sort of thing is occasionally required in videogame programming. However, it's becoming less and less relevant. Question: is it quicker to flip a bit or set a value on an entire dword at once? If you don't know the answer to that, either measure it or just write the obvious code! Is the code going to be used in an inner loop, called thousands or even millions of times a second? No? Then write code that is obvious, because a clever optimization won't make a damn bit of difference, and will just be harder to debug when it goes wrong or needs to change. Do you know if a branch (potential cache miss) will outweigh a conditional optimization? Measure it. Trying to be clever by using bitshifts instead of divide by two? Check to see if the compiler is doing this for you (hint: it probably is).

      I've seen too much game code that was incredibly "clever", and completely useless. That is, crazy optimizations, inline assembly, all sorts of obfuscation were used in places where they made no real impact on performance, or worse, even negatively impacted it.

      So, I definitely agree with your point. But understanding goes two ways. Unless you really, really know what the hell you're doing, and MEASURE your results, let the compiler do its thing. Frankly, it's probably a better optimizer than you.

      In general, it's far better to understand what's expensive at a fairly high level when working with C++. This will help prevent you from creating bad architectures from which no amount of low-level optimization will save you. String manipulation is expensive. Dynamic allocation is expensive, and can fragment memory. Watch copy constructor expense in your containers. Don't block the main thread - ever, for ANY reason. etc, etc...

      --
      Irony: Agile development has too much intertia to be abandoned now.
    3. Re:Excessive abstraction has always annoyed me by Abcd1234 · · Score: 1

      "When you are writing software that has any need to perform within certain memory or time constraints, or scale to any degree at all, you need to understand your program at that level."

      So, *not* the *vast* majority of software written today, then.

  31. Slashdot Interview by Jodka · · Score: 4, Informative

    Slashdot previously interviewed Rob Pike.

    --
    Ceci n'est pas une signature.
    1. Re:Slashdot Interview by evilviper · · Score: 1

      A GREAT link! Thanks.

      Looking through the comments to the article, I saw nothing but intelligent and insightful discussion, something which hasn't been seen on slashdot (in anything but one-off quantities) in years now. The fall happened over quite some time, so jumping from slashdot today, to slashdot in 2004 was quite a shock... a shock to see how far we have fallen.

      OTOH, a few of the same people are still around. Sadly, the current mediocre moderation system buries them in the static, while mindless rants, dogma, and complete misinformation that happens to sound nice, get the spotlight.

      I want Slashdot back.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  32. Right. by Anonymous Coward · · Score: 0

    That's what I program in Esperanto.

  33. Yes. And Go has the same problems by Cyberax · · Score: 3, Informative

    Go has the same problems. They try to make it 'simpler' but along the way they actually make it more complex.

    For example, try-catch-finally idiom is an easy and standard way to deal with exceptions. But no, they had to invent their own half-assed implementation just to be 'minimal'.

    Also, they insist on using fucking _return_ _codes_ to indicate errors. WTF? It only makes code more complex because of tons of stupid 'if error' statements.

    Personally, I like Rust's ( http://wiki.github.com/graydon/rust/project-faq ) design more. At least, it has some new features.

    1. Re:Yes. And Go has the same problems by owlstead · · Score: 4, Interesting

      Thank you, I do agree. I was about to write to the authors of Go, but I thought better of it: simply because I cannot see Go go anywhere.

      Basically, they do really weird things:
        - no exceptions
        - half assed immutability concepts
        - focus on compile time (compile time? really? yes really!)
        - no modularization system (it's like the micro-kernel vs mono-kernel fight all over)

      It's got some good ideas that make it interesting for small, fast, secure applications, but not so many that it becomes interesting. I could see technically make some headway for small monolithic kernels. But their market placement is lacking to the point that it is non-existent.

    2. Re:Yes. And Go has the same problems by Anonymous Coward · · Score: 0

      My favorite part of Go is their psuedo-inheritance system. Sub-classing a built-in type was an absolute breeze. I only had to try four different ways that all compiled before finding the one that actually didn't crash when run. Go clearly shows how much this guy hates complexity and dynamic typing.......

      Wait, no. It's even worse.

    3. Re:Yes. And Go has the same problems by BitZtream · · Score: 1

      And a bunch of if statements on the return value is much different than a bunch of catch statements for different exceptions?

      Let me guess, you also think using GOTO is never acceptable but don't realize that an IF statement boils down to a goto.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    4. Re:Yes. And Go has the same problems by Cyberax · · Score: 1

      "And a bunch of if statements on the return value is much different than a bunch of catch statements for different exceptions?"

      Yes. You need to have a tree of ifs on EVERY level in the function call hierarchy. But one can have exception handling only on a few nodes.

      "Let me guess, you also think using GOTO is never acceptable but don't realize that an IF statement boils down to a goto."

      And you write ELF binaries directly? Cause everything boils down to it.

      For the record, I think that GOTO is acceptable in:
      1) Generated code.
      2) To break out of nested loops. Though labeled break/continue statements are better for this purpose.

    5. Re:Yes. And Go has the same problems by shutdown+-p+now · · Score: 1

      And a bunch of if statements on the return value is much different than a bunch of catch statements for different exceptions?

      Yes. You can make the compiler propagate exceptions on you, or (with checked exceptions in the language) ensure that you handle them. With error codes, if you do it the "right way", you have to check every single one and propagate those you can't handle right there and then manually, and you get no warning if you miss something.

    6. Re:Yes. And Go has the same problems by noidentity · · Score: 1

      I remember Java when it first came out. It lacked several features it has now, because it didn't need those complex things from C++. Now it has them, only they had to be compatible with the earlier bytecode, so they're kind of hacky. I chuckle.

    7. Re:Yes. And Go has the same problems by cryptoluddite · · Score: 1

      Also, they insist on using fucking _return_ _codes_ to indicate errors. WTF? It only makes code more complex because of tons of stupid 'if error' statements.

      What's worse is that not only are there error returns codes (by convention), but there are multiple return codes. Which means you could return two error codes, or no error codes, or whatever. What a mess.

      Personally, I like Rust's design more. At least, it has some new features.

      Rust actually tries to solve some future/current problems, like garbage collection on hundred-core CPUs for instance. You can't just stop every CPU while you collect garbage, like Go does since it has no concept of separate domains of data.

      And the lack of parenthesis is also annoying. You can't just design a language based on what you theorize is good. Visual grouping helps people to read code. Too many parenthesis are bad (LISP) and too few are bad (Go).

    8. Re:Yes. And Go has the same problems by Cyberax · · Score: 1

      "Rust actually tries to solve some future/current problems, like garbage collection on hundred-core CPUs for instance. You can't just stop every CPU while you collect garbage, like Go does since it has no concept of separate domains of data."

      To be fair, it's possible to do garbage collection without stopping _any_ mutator thread (i.e. threads doing useful work). Though it's really really hard.

      It's so hard that Azul systems had to design their own CPUs to do this - they have a hardware assist for read barriers. They do scale to thousands of CPUs and terabytes of RAM though.

    9. Re:Yes. And Go has the same problems by Ian+Lance+Taylor · · Score: 1

      Go has panic/recover, which can serve the same purpose as exceptions in other language.

      Go has no immutability concept, so it doesn't have half-assed one.

      Yes, focusing on compile time is relevant; I think anybody who writes large C++ programs can see the point of that.

      Go has a modularization system by my definition, I don't know what you mean by it.

  34. I looked at Go. Not that impressed. by Anonymous Coward · · Score: 0

    I looked at Go. Not that impressed. Its easy to talk shit like this guy, but its a whole other thing to present a complete alternative.

  35. If C/C++ is too complex... by MacGyver2210 · · Score: 1, Troll

    ...perhaps he should find another line of work. Quite frankly, I love C++, and Java to a lesser degree. C and its big brother C++ are great languages to learn. They teach you more about how the computer uses the code you're writing than something like CodeBlocks where you just fit them together in the right order. Good luck debugging software at a real-world company if you don't like C.

    As for Java, I think it's a pretty inefficient language, but so is C# and .NET applications in general. Any managed code has overhead.

    If you hate Java so much, why did you base your phone OS around it?

    I could see if he was railing against Assembly or Fortran or something, but then even still many people love Assembly too. My Machine Architecture teacher was a fiend for it, and once I learned how it really worked it wasn't that bad for me either. I, for one, am proud to say that I could manually write machine code (if I really had to) though I have no plans to do so. I think every true computer programmer should BE ABLE to do so, whether or not they ever do. That would, in my eyes, make a programmer worth their salt.

    --
    If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
    1. Re:If C/C++ is too complex... by Anne+Thwacks · · Score: 1
      many people love Assembly too

      C is PDP11 assembler, rewritten by people who had tried using Macro-11 for fun.

      I am still waiting for a Wii application where you write PHP by throwing cowpats at the screen, and fix the bugs by stamping on the Wii balance board!. Thats what I can user friendly.

      Getting the bugs out of Android by shaking the phone upside down would be cool too!

      --
      Sent from my ASR33 using ASCII
    2. Re:If C/C++ is too complex... by Anonymous Coward · · Score: 0

      You do know that most of the ARM processors in handhelds can use Java opcodes natively?

    3. Re:If C/C++ is too complex... by unix1 · · Score: 1

      If you hate Java so much, why did you base your phone OS around it?

      That's a good question, and I think it leads to the real issue. The problem is not how "hard" or "easy" a particular programming language is. Most modern programming languages nowadays are relatively equal in that regard, and on par with features. The issues are what kind of supporting standardized extensible libraries, SDKs, APIs are readily available to programmers to complete 99% of the tasks they'd like to implement, and how "hard" are they?

      When you say Java is too complex - you must have something specific in mind. Because if you look at Android SDK, it's not complex at all.
      When you say C++ is too complex - sure it is, if you are sitting in front of an empty file in vi and you want to implement a complex piece of software with no place to start. But I look at Qt and I can guarantee that most script kiddies can start picking it up in 30 minutes flat (well, maybe I will not guarantee it, but you get the idea).

      So, if you are writing a piece of software and you think it's too "complex" maybe the real issue is that you don't have or you are not using the right tools for the job.

    4. Re:If C/C++ is too complex... by shutdown+-p+now · · Score: 1

      Too bad that Android doesn't have any "Java opcodes" in it, as Dalvik VM is incompatible with JVM on that level.

  36. Bring back Pascal! by Anonymous Coward · · Score: 0

    Bring back Oberon and Modula-2! and teach Pascal in school again!!!

    Not to sound like a dummy amounst you... but when we worked with Pascal I 'got it'. Towards the end, C++ was making headway... that's win I had to change from a major in CS to a major in marketing with a minor in CS!! LOL!!!!!

    1. Re:Bring back Pascal! by mujadaddy · · Score: 1

      Modula-2 and Pascal are what I learned, too. "First one, then the other!"

      --
      Populus vult decipi, ergo decipiatur...
      "Force shits upon Reason's back." - Poor Richard's Almanac
  37. Right! by Kozar_The_Malignant · · Score: 1

    Who needs anything more complex than FORTRAN?

    --
    Some mornings it's hardly worth chewing through the restraints to get out of bed.
  38. Understatement of the year by ThoughtMonster · · Score: 4, Informative

    You could at least mention that Rob Pike had a large part in designing Plan 9, a programming language called Limbo, and oh, UTF-8, and that by "he and other Google engineers", TFA means Ken Thompson, who created B (a predecessor to C) and had a part in creating an operating system called Unix.

    These two people are the closest thing to a "computer scientist" there probably is, and I'd wager they know quite a lot about programming language design. Pike is known about his feelings towards programming languages like C++.

    Rob Pike made a talk about Go and programming language design and makes some interesting points. It's available on youtube.

    1. Re:Understatement of the year by MightyMartian · · Score: 1

      Which hardly makes them immune from criticism. "Programming languages or hard to learn!" has been a complaint since they were invented. Generally, more plain-english style languages like Cobol are fairly specific in application, and even there, once you get into later extensions to the language, they can become complex.

      Most of the "simple" languages I've seen end up being either monsters, like pre-OOP BASIC, or Logo, both which were useful enough for teaching certain concepts (though when I learned Pascal in school, our teacher would get strange nervous ticks if you even mentioned BASIC).

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    2. Re:Understatement of the year by BitZtream · · Score: 0, Troll

      He and I are very much alike.

      I too have written OSes and programming languages that no one gives a flying fuck about :)

      The things he had any involvement with that people do care about, like UTF8 aren't because of anything he did, but the work of others.

      He's just a blow hard. He's one of those 'If I didn't invent the wheel, it sucks' guys.

      He offers nothing of actual value.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    3. Re:Understatement of the year by GooberToo · · Score: 2, Insightful

      Which hardly makes them immune from criticism.

      In my opinion it makes them more likely to suffer criticism. Many computer scientists, the majority I've met, seem to chronically like in a glass house and are completely disconnected from anything but theory. So if I run with the logical conclusion, in theory, made in a clean room, he's completely right. Pragmatically, almost everything he said likely to be completely wrong.

      Oddly enough, seems to more or less cover much of his and the comments and here.

    4. Re:Understatement of the year by Bright+Apollo · · Score: 5, Insightful

      Pike and Thompson are not computer scientists, they are practitioners. The difference between Thompson's contributions and Knuth's contributions, for example, illustrate this exact point.

      --#

    5. Re:Understatement of the year by Anonymous Coward · · Score: 0

      "designing Plan 9, a programming language called Limbo, and"

      Oh, how ironic. plan 9 and limbo... there are not many names that would fit better.

    6. Re:Understatement of the year by pz · · Score: 1

      You could at least mention that Rob Pike had a large part in designing ... UTF-8 ...

      You're saying it like that's something he should be proud of.

      --

      Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
    7. Re:Understatement of the year by msclrhd · · Score: 1

      An interesting test for Go will be: how easy is it to develop and maintain complex programs that solve real-world problems (web browsers, operating systems, stock trade analysis/processing, quantum mechanics analysis, ...)?

      Go is an interesting language, but so far it has been solving simple toy problems.

    8. Re:Understatement of the year by yyxx · · Score: 1

      "Programming languages or hard to learn!" has been a complaint since they were invented.

      Yes, but in the case of C++, it is justified. I think anybody who thinks they have mastered C++ is so ignorant of the language that they don't even know how little they know. And I'm saying that as someone who has been programming in C++ for 25 years.

    9. Re:Understatement of the year by shutdown+-p+now · · Score: 1

      Pike and Thompson are not computer scientists, they are practitioners. The difference between Thompson's contributions and Knuth's contributions, for example, illustrate this exact point.

      Yes, and the difference between, say, Haskell and C++ perfectly illustrates the difference between computer scientists and practitioners.

    10. Re:Understatement of the year by Anonymous Coward · · Score: 0

      Most sensible comment I've seen all day. The motivator will be complex real-world problems which Google has in relation to other languages. Taking a look at the main points on the Go language home page it is easy to guess what those might be:

      http://golang.org/

      Fast: Google is willing to trade some runtime speed for massive gains in compile time speed.

      Why would this be?

      Type safe and memory safe: Eliminate pointer arithmetic gaining more safety for a trade off in runtime speed.

      Concurrent: Some trade off in speed and flexibility for massive concurrency and defined interprocess communication.

      Runtime reflection: See 'Fast' above.

      Open source: No brainer.

    11. Re:Understatement of the year by Anonymous Coward · · Score: 0

      'Had a part in creating ...Unix'
      You're kidding right. Thompson (along with Ritchie) CREATED unix not to mention all the other stuff they did. I guess you've been reading the wikipedia article which is very understated.

    12. Re:Understatement of the year by Anonymous Coward · · Score: 0

      If he is such a marvelous "computer scientist", then why the hell does he not understand the basics of programming language design? In http://golang.org/doc/go_lang_faq.html#semicolons it states that semicolons "are for parsers, not people". However, any student who has taken an intro to compilers course will tell you that semicolons are actually superfluous when it comes to parsing a token stream into an abstract syntax tree. Most programming languages can be massaged into an LR(1) grammar, and if he is CREATING A NEW ONE, then he sure as heck could have managed the feat! (Every student in my first compilers course was required to do just that, full language with no semicolons.) Instead, he failed to understand why semicolons were used but are not necessary, and instead unwittingly grandfathered in decades of legacy crap by inventing a language that requires semicolons for no good reason, yet is written without them and then HAS SOFTWARE PROGRAMMATICALLY INSERT SEMICOLONS INTO YOUR SOURCE CODE BEFORE COMPILING IT!

      What a brilliant computer scientist.

    13. Re:Understatement of the year by 21mhz · · Score: 1

      Yes, and the difference between, say, Haskell and C++ perfectly illustrates the difference between computer scientists and practitioners.

      So, computer scientists can create a language that's compatible with rational thinking?
      C was a language created by practitioners; C++ was created by a committee of language designers which got way out of hand, but they successfully used the "increment over C" marketing trick.

      --
      My exception safety is -fno-exceptions.
    14. Re:Understatement of the year by shutdown+-p+now · · Score: 1

      So, computer scientists can create a language that's compatible with rational thinking?

      Yes, but that language ends up being mostly useless for vast majority of practical tasks.

      C was a language created by practitioners; C++ was created by a committee of language designers which got way out of hand, but they successfully used the "increment over C" marketing trick.

      C++ was originally created by a practitioner as well - Stroustrup has decided that, for the task at hand, he would do better with some Simula 67 constructs, and added them to C; thus, C++ was born. It wasn't "design by committee" in any meaningful way. Heck, for about 7 years, the C++ language was effectively defined by a single implementation, Cfront!

      Yes, it was later developed by the ISO committee, but so was C - the present C standard in wide use is the ANSI/ISO one, and has quite a few differences from the original K&R C.

    15. Re:Understatement of the year by 21mhz · · Score: 1

      C++ was originally created by a practitioner as well - Stroustrup has decided that, for the task at hand, he would do better with some Simula 67 constructs, and added them to C; thus, C++ was born. It wasn't "design by committee" in any meaningful way.

      Incidentally, at that time it was a mostly sane language that nobody has problems using. It started to break down approximately at the time when they decided to add unlimited multiple inheritance and "fixed" the problems by virtual inheritance. Then the "multi-paradigm" crap started getting promoted, exceptions were shoehorned into the language which clearly does not fit them, generic programming promoted in a fashion ignorant to the fact that the world has invented shared libraries for better code reuse, and it went downhill from there. Nobody had the will to say no to the ridiculous overcomplication.

      --
      My exception safety is -fno-exceptions.
    16. Re:Understatement of the year by Anonymous Coward · · Score: 0

      Can you list three to five "practical tasks" from this vast majority for which Haskell is "mostly useless"? Please?

  39. Support and existing libraries. by DeadDecoy · · Score: 1

    Java/C++ are attractive because they have the momentum of a large community behind them. Newer, more friendly languages like ruby or c# may not have the same libraries available as some of the more well-entrenched languages do. Or, they might have similar functionality that does not perform as well due to some overhead of the language itself. Another reason we deal with these languages is legacy code. Once upon a time, coders of old wrote a massive system, spanning millions of lines. At that point, it's cheaper to maintain the system then rewrite it from scratch. It all comes down to how much work your language of choice incurs. At first glance, java and c++ are curmudgeon-y to deal with because you have to write more lines to implement function XYZ, but developers still use them because there are libraries and frameworks that implement functions A-W.

    1. Re:Support and existing libraries. by Anonymous Coward · · Score: 0

      Newer, more friendly languages like ruby or c#

      Um, you do realize that Ruby came out the same year (1995) as Java, right?

  40. These languages are the taught standards.... by Immostlyharmless · · Score: 1

    precisely because of what he seems to be complaining about, because they are feature packed and can do just about anything. Are they more difficult to learn and learn properly? Sure, but guess what? That's why its a job. Just like everyone else!

    Your emergency room doctor knows the steps to bring you back from the half dead, very rarely does he need to use those skills when compared to everything else he does in the day. (broken bones, burns, run of the mill colds),but when he NEEDS that certain skill set to solve a major problem he has it available to him. Most other professions are the same way. You'll only need the hardcore stuff every great now and then; 95% of what you do will be the same old run of the mill, but when you need the hardcore, you need it, that's why they teach these languages as standards.

    1. Re:These languages are the taught standards.... by jejones · · Score: 1

      Yes. As far as we currently know, human beings are complicated. (Look at it this way: you think the x86 is a crufty POS? It's a piker; we're a product of millions of years of backwards compatibility....) Doctors have to know a lot of stuff to fix us.... we're inherently complicated. However, I respectfully question how much of the complexity of C++ is actually needed. Now we look back at all the perverse "access methods" of OS/360 and its descendants and shake our heads in astonishment/disgust/etc., and I'm hoping that before long we can do the same with C++.

      I can't say I agree with Pike about Go, though; I rather like the comparison of Brand X with Go, where Brand X turns out to be Algol 68. http://www.cowlark.com/2009-11-15-go/ for those interested.

  41. 'Go' doesn't go far enough by RafaelAngel · · Score: 1

    I tried my hardest back in college to really like programming. I failed. I was taught VB and Java. I just couldn't get around how foreign it is to me to think and write the way programmers do. I think we need a real natural language programming language that anyone can understand to use. Why not put the brains at Google to create such a programming language. I have been looking at Google's App Creator and it looks really neat. Visually creating programs is also another way to get people into programming.

    1. Re:'Go' doesn't go far enough by godefroi · · Score: 3, Insightful

      Sorry, but if you can't "think like a programmer does", you won't be able to create anything but the most trivial program, ever. The difficulty of programming isn't learning language and syntax, it's "thinking like a programmer does". That's precisely the thing that must be accomplished to write complex software, and that's precisely the thing that is difficult to do for most of the population.

      Sorry to disappoint.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    2. Re:'Go' doesn't go far enough by BitZtream · · Score: 1

      WTF, why are you bringing common sense into this discussion? I see your low UID but you must still be new here ...

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    3. Re:'Go' doesn't go far enough by Anonymous Coward · · Score: 0

      If you "couldn't get around how foreign programmers think", I think I'm glad your software isn't out there, regardless of how you made it. (Next up: "Programming With Fingerpaint")

  42. I LOVE perl! by DG · · Score: 5, Funny

    I actually think that perl is the best programming language every designed.

    (Waits for storms of laughter to subside)

    No, really, I'm completely serious. perl is the English of programming languages. It takes the most useful parts of everything and mixes them all together into a useful conglomerate.

    Much the same way you can use English to write a scientific dissertation, a sonnet (in full Billy S mode), or O RLY? perl can be as descriptive and formal or as loose and unbounded as the programmer chooses and it all JUST WORKS!

    I **lothe** "bondage and discipline" languages that force me to think and write a certain way just because some would-be language guru thinks HIS way is the One True Path to enlightenment. perl gives me an expressive, more-than-one-way-to-do-it language that lets me think and work the way that best fits the problem at hand.

    I have written enterprise-level perl code optimised for long-term maintainability and reliability (an LDAP server replication program that did schema translation). And I have written 5-second hacks that solved an immediate problem quickly and efficiently. perl lets me do this. No other language I've used matches perl's sheer versitility.

    I love perl!

    And I'm not at all ashamed to admit it.

    DG

    --
    Want to learn about race cars? Read my Book
    1. Re:I LOVE perl! by Monkeedude1212 · · Score: 4, Insightful

      I actually think that perl is the best programming language every designed[...] perl is the English of programming languages.

      You went on to describe how Perl is great but just so you know - every one of those reasons you listed is why every multi-lingual person on the planet hates English. It's a pain in the ass to learn because there are too many exceptions to the rules or the rules aren't well defined. Look no further than pluralization. Add an S, in most cases. Oh, but if it ends in an y, make it 'ies', like skies. And for some words, that end in sh or ch or x or something, its 'es', like wrenches. Oh and for Goose, its Geese. But the plural for Moose is not meese, in fact, its just moose, not even mooses.

      We won't bother getting into Contractions or prefixes/suffixes or any of the real gritty stuff. English itself is a pain, let alone how many variants of it are across the Earth, with their own Formal, informal, and Slang terminology.

      So yeah, while the flexibility that makes Perl accessible to more programming styles is good to you, its still a a pain to learn, and one of the reasons why people are put off by it. Without a standardized way of doing things its difficult to understand exactly whats going on. Some of the most obfuscated code I've ever seen has been written in Perl.

    2. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      That first paragraph was poetic.

    3. Re:I LOVE perl! by maxume · · Score: 1

      There is a fairly high chance here that you are selling natural languages other than English awfully short.

      --
      Nerd rage is the funniest rage.
    4. Re:I LOVE perl! by gbjbaanb · · Score: 1

      It's a pain in the ass to learn because there are too many exceptions to the rules or the rules aren't well defined.

      Look, it was that or Latin. Now you understand? good. :-)

      (ok, I *like* latin, the above's a joke)

    5. Re:I LOVE perl! by Grishnakh · · Score: 2, Insightful

      If you know German, Latin, and some French, English should be easy for you. English is basically a big mishmash of several older languages, taking parts of each, but not putting them together into anything coherent.

      The main strength of English is its versatility; it's trivially easy to adopt new words from other languages like Russian or Japanese. However, adopting words from extremely different languages means that they won't fit into those nice rules that you complain are violated too much.

      Of course, we could throw all that out, and not adopt any new words at all, and only create new words for things which can fit the rules, but that would require a special Institute, the way they do with French. That hasn't worked out too well, and people aren't exactly flocking to learn French these days. They're all trying to learn English and Mandarin.

    6. Re:I LOVE perl! by Monkeedude1212 · · Score: 1

      The only reason people flock to learn English and Mandarin are because The jobs that pay the most are in English Speaking Countries and China's power is steadily growing. It has nothing to do with the "ease" of learning the language.

      Don't get me wrong, I like English's versatility, but when you try teaching it to someone who doesn't know English, it's not that simple. It's definately easier for the cousins of English like French and German, because the words themselves get transfered over, but the Syntax of English is what kills people. Because there is hardly an established syntax, so how do you determine what to teach?

    7. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      You don't need to be ashamed of it, mental illness is an unfortunate part of our society but you can seek help.

    8. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      "It takes the most useful parts of everything..."

      Everything except readability, that is.

      And I love perl too.

    9. Re:I LOVE perl! by SleazyRidr · · Score: 1

      No, really, I'm completely serious.

      Mods seem to disagree, Mr. +5 funny.

    10. Re:I LOVE perl! by gquipster · · Score: 1

      I also love Perl. There has never been a task that I haven't been able to complete in Perl - I've written everything from 5 line scripts to 50000 line full featured daemons. Whilst I can also code in C, C++, Java, Visual Basic and PHP, I always end up coming back to Perl. However it's a language that you have to be extremely careful with - I mandate that all of my development team use Perl-Critic to ensure quality code, and Perl-Tidy to ensure a consistent coding style.

    11. Re:I LOVE perl! by Culture20 · · Score: 3, Insightful

      English. It's a pain in the ass to learn because there are too many exceptions to the rules or the rules aren't well defined. Look no further than pluralization. Add an S, in most cases. Oh, but if it ends in an y, make it 'ies', like skies.

      Unless the word is Monkey, then the plural is Monkeys.

      The nice part about the English language is that someone can speak pigeon-English and English speakers understand them very well. All those exceptions teach native-speakers to be accepting of lingual oddities. In some other languages, incorrect verb tense can make the difference between talking about "You" or "She", or incorrect tonality can make a foreigner sound like a stroke victim.

    12. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      Add an S, in most cases. Oh, but if it ends in an y, make it 'ies', like skies.

      Unless its preceded by a vowel: e.g. monkeys. Even more evidence for your point.

    13. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      Did you know Slashdot has a sig field? Everyone else seems to know what it's for.

    14. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      All too true. Perl is currently the most friendly for human interaction. I often hear complaints about writing style, but that's on the programmer. You can write trash in any language, but only in Perl can it feel almost like English.

    15. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      No, really, I'm completely serious. perl is the English of programming languages. It takes the most useful parts of everything and mixes them all together into a useful conglomerate.

      You're wrong. Perl is the Latin of programming languages, the two languages work almost exactly the same. COBOL is the English of programming languages, except COBOL is actually simpler and a bit more efficient and expressive than English.

      As you could guess, English is not my favorite language. It's a horrible, simplisticly complicated, pidgin language that lack most things I like in other languages and offer nothing good that don't exist in ALL other languages, except perhaps ambiguity.

    16. Re:I LOVE perl! by Psicopatico · · Score: 1

      The english language is fucking easy!

      All you have to do to master it is to put an f*word in every fucking sentence.

      --
      Mastering the English language is fucking easy: all you have to do is to put an f* word in every fucking sentence.
    17. Re:I LOVE perl! by Grishnakh · · Score: 4, Interesting

      Actually, English is a very easy language to learn, to a certain degree. It's a lot like learning to play guitar. Any moron can learn to play a few chords on a guitar and make a simple song. However, only really talented people can become true virtuosos of the instrument and play like Joe Satriani or Steve Vai. English is like that: it's easy to learn it to a minimal degree and become somewhat conversant. The words are short and simple, you don't have to worry about silly things like word gender, etc. However, becoming truly fluent in it (so that you can read and write advanced literature, for instance) is difficult and time-consuming because you have to memorize so many things, and learning some Greek and Latin is very useful for understanding many larger words.

    18. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      You think english is 'a pain'? You don't know a lot of languages, do you? English is one of the mildest languages out there.

    19. Re:I LOVE perl! by Sycraft-fu · · Score: 1

      Only because its exceptions and differences are different than their exceptions and differences. Everyone tends to think their language is "right" and the others are "wrong". Sorry, but any natural language has lots of stupidities about it. In German, which is one of the more regular ones out there, there is still plenty of stuff. Like gender, what is the gender of a given word? Hand is masculine, finger is feminine. It makes no sense at all how the gender is assigned to words, and makes even less sense that they have gender to the speaker of a non-gendered language.

      Natural languages are strange, but they evolved, they were not designed. So there's stupidities all over them. If you don't see stupidities in your own native language, it just means that you are so used to it that it seems "right" to you and you are not objectively evaluating it.

    20. Re:I LOVE perl! by A+Friendly+Troll · · Score: 2, Interesting

      You went on to describe how Perl is great but just so you know - every one of those reasons you listed is why every multi-lingual person on the planet hates English.

      I'm multi-lingual.

      English, with the exception of Esperanto, was the easiest language to learn. There are several orders of magnitude more exceptions in some other languages; they also have a lot more cases and conjugations, and actually use genders (to which English is oblivious). Even spelling words in English is incredibly easy.

    21. Re:I LOVE perl! by martin-boundary · · Score: 2, Funny
      And then there's the word police, which doesn't actually have a singular at all, and its plural doesn't end in an s anyway just to mess with criminals' minds.

      "You're surrounded by the police. Come out with your hands up."

      "Fuck, the police are here. We're toast."

      "Don't be silly, they said THE POLICE. It's singular, there can't be more than one guy out there. When you see him, just shoot him."

      ???

      "Damn you, English language!"

    22. Re:I LOVE perl! by Coward+Anonymous · · Score: 1

      "You went on to describe how Perl is great but just so you know - every one of those reasons you listed is why every multi-lingual person on the planet hates English."

      Pretty much all human languages have wrinkles that make them difficult to learn for non-native speakers. English is a favorite target because it's the language more people have to learn as a second language not because it's any worse than other languages.

    23. Re:I LOVE perl! by Dalcius · · Score: 1

      It might be worth clarifying: Perl is great to learn, but terrible when you work on code written by people who don't think like you do.

      Perl code can be simple, straightforward, very easy to pick up and hit the ground running. It's when you start coding with other programmers that it becomes painful.

      The problem resolving this issue in the language design is that people will code they way they think, regardless of your restrictions. What happens when you put a C developer in a Java shop? Instead of writing beautiful, flowing OO code that glows with elegance, they'll write clunky, low-level functional code that steps through their thought process procedurally.

      Ditto if you put a Java developer in the world of C. They'll prefer to write large data structures and significantly abstract their code, which will drive a lot of C developers nuts.

      My point is, I think the result of requiring a programmer to jump through language hoops often means the resulting code is not only written in a different style, it's now obfuscated further because the programmer dodged your language hoops to do it.

      --

      I will say, however, that some Perl programmers happen to really love their esoteric, obfuscated language tricks, things like this. I definitely see what is being accomplished -- implicit but short code is often easier to skim and understand than long and explicit where you lose the meaning -- but I think Perl hackers tend to take this much too far.

      --
      ~Dalcius
      Rome wasn't burnt in a day.
    24. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      I'm multilingual. Around 20 languages, many learned under duress on the job because some manager thought a strict language policy was good.

      I do all my real programming in C and Perl. Most good programmers I know end up in C and something else, for low level and high level. After they've sampled a dozen or so choices. Mediocre programmers like you who end up in management with your trendy, derisive opinions make software projects fail 75% of the time.

    25. Re:I LOVE perl! by Coryoth · · Score: 1

      I actually think that perl is the best programming language ever designed.

      Wait, perl was designed?! I thought it was just semi-randomly accumulated as a wobbly glutinous blob, with a bit of natural selection going on to determine which of the many different ways of doing things are the most commonly used. Designed is far too strong a word.

    26. Re:I LOVE perl! by curunir · · Score: 1

      Oh and for Goose, its Geese. But the plural for Moose is not meese, in fact, its just moose, not even mooses.

      Mooses may not be valid, but mousses is fine.

      Things get even more fun when you want to describe a group of them. Those moose are a herd and those Geese are a gaggle, flock and possibly even a skein or wedge depending on what they're doing at the moment. Owls are a parliament and baboons are a congress, not to be confused with the (large-C) Congress of buffoons. And just wait until you get to bears (sleuth), apes (shrewdness), jellyfish (smack) and crows (murder.) And just to throw a totally obnoxious one in there, you've got a singular of boar...WTF kind of plural is that???

      --
      "Don't blame me, I voted for Kodos!"
    27. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      English is hard to learn? Ask anybody what they would rather learn, English or German!

      Personally, I find English a rather easy language to learn. French on the other hand ... Anyway, a few exceptions (or even a few more) are not a problem. At some point you just get a feel for the language and from that point on, it's all easy. If you don't get that feel though ... then every language is hard to learn.

      We are steering into (or are we there yet?) a dumbed down world, where everything has to be easy and done for us by someone or something, instead of doing it ourselves. At some point, there won't be anyone to write our compilers any more, because the last guy that actually knew how things work on a lower level, died.

      Then again, even over 2000 years ago, writers complained about "today's youth"...

    28. Re:I LOVE perl! by beanluc · · Score: 1

      Do the word police exist outside the English speaking world?

      --
      Say it right: "Nuc-le-ah Powah".
    29. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      That may be true. But a lot of the mess and mishmash in English comes from the fact that it is more than happy to borrow from all the other languages. Instead of doing the things like making new compound words or phrases like German and French do, if there's a word from another language that describes something in an efficient way, English will be more than happy to make it part of the vocabulary. One thing that I do see as stupid and problematic in English though is that historically it has let non-English speakers do the spelling of the Englified versions of their words. So that people who have no clue about the typical phonetic usage of a letter in English have made some things even a bigger mess. Sometimes I think it was done on purpose to make us look stupid. Is that "u" in a Japanese word equal to a silent dash, or do you actually treat it as a vowel? Should the word be spelled with a Z or X, or a S or C... blah blah blah... It goes on and on.

      The thing that I see throwing non-English speakers is that there are a lot of homonyms and homographs that can change in pronunciation because there are normally no accents and context drives the word meaning. I suppose some other people also don't like that English has chucked the inefficient and useless articles with things like gender/tense/posessives out the window since the transition from Thee Olde English just back before Shakespeare's time. (But all that garbage is also a PITA to English speakers learning a language like German. It's hard to understand the reason or need for it when a language does perfectly fine without.)

      Now I could only imagine trying to read code from a programming language that allows for the conventions from all the other programming languages in a way similar to how English does it with the spoken word... Now that would be "fun".

    30. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      I **lothe** "bondage and discipline"

      That's too bad; we could have had some fun.

    31. Re:I LOVE perl! by shutdown+-p+now · · Score: 1

      If you know German, Latin, and some French, English should be easy for you. English is basically a big mishmash of several older languages, taking parts of each, but not putting them together into anything coherent.

      That's precisely GP's point - Perl is the English of programming languages, and it's not any better off from it.

      The main strength of English is its versatility; it's trivially easy to adopt new words from other languages like Russian or Japanese.

      Do you think it's harder to do in other languages? I can't say for Japanese, but I can assure you that there are far more Anglicisms in Russian than there are Russisms in English.

    32. Re:I LOVE perl! by shutdown+-p+now · · Score: 3, Informative

      The words are short and simple, you don't have to worry about silly things like word gender, etc.

      Yeah, you only have to worry about other silly things, such as learning seemingly endless tables of non-standard plural and past tense forms by rote, or understanding just what the hell perfect tense is about.

      English is certainly not the hardest language out there, but it's also not the easiest one, by far.

    33. Re:I LOVE perl! by shutdown+-p+now · · Score: 1

      Do the word police exist outside the English speaking world?

      Yes, a similar word is used in most European languages, actually (excepting some non-Indo-European ones such as Hungarian). That's because it ultimately comes from a Greek word meaning, roughly, "administration".

    34. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      So yeah, while the flexibility that makes Perl accessible to more programming styles is good to you, its still a a pain to learn, and one of the reasons why people are put off by it. Without a standardized way of doing things its difficult to understand exactly whats going on. Some of the most obfuscated code I've ever seen has been written in Perl.

      What the hell are you talking about? If you can code any language, in 15 min you can learn enough to write perl. 10 if you are already familiar with regex's.

    35. Re:I LOVE perl! by Khyber · · Score: 1

      Fucking declensions.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    36. Re:I LOVE perl! by Tassach · · Score: 1

      However it's a language that you have to be extremely careful with - I mandate that all of my development team use Perl-Critic to ensure quality code, and Perl-Tidy to ensure a consistent coding style.

      Exactly. You can write bad, unmaintainable code in any language, but Perl definitely gives you more enough rope to hang yourself in that department. It takes discipline to write maintainable code, but I'd rather that discipline be self-imposed than have somebody else's notion of "maintainable" imposed upon me. Fortunately, there are tools to facilitate that.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    37. Re:I LOVE perl! by Tassach · · Score: 1

      Some of the most obfuscated code I've ever seen has been written in Perl.

      I won't disagree with you. However, some of the clearest, most elegant code I've ever seen has been written in Perl, too.

      Perl is a language for getting the job done. Period. It's not there to look pretty, or to enforce a particular methodology, or to do anything else besides make stuff work. It just shuts up, gets out of your way, and (more-so than any other language) does what you want it to do with a minimal amount of coaxing.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    38. Re:I LOVE perl! by PiSkyHi · · Score: 1

      In perl, the meaning of moose meese and mooses are all made unambiguos by context, just like any incorrect form of spoken english.

      In both cases, meaning is conveyed and understood. Its grammar nazis that feel the need to both understand what you did wrong and pretend you didn't make any sense at the same time. Only in distinctly ambiguous cases that cannot be inferred by context, does asking politely or programs fail to interpret actually apply.

      I'd better stop that paragraph now, since non-perl fans probably failed to parse it.

    39. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      Yay! Long live Perl!

    40. Re:I LOVE perl! by Anonymous Coward · · Score: 1, Informative

      To be fair, pluralization is not that important to get perfectly correct. Most English speakers (myself included) make occasional mistakes with the vast array of special cases. Typically people will still understand you.

    41. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      However, only really talented people can become true virtuosos of the instrument and play like Joe Satriani or Steve Vai.

      We don't ask to be able to write plays like Shakespeare!!!

      Learning to play guitar is easier, because it has simple rules, no exceptions: put your finger here, it plays that note.

      In english, some words/verbs are pronounced differently depending on what they mean, even if they are written the same way: row, wound, ... You call that easier?

    42. Re:I LOVE perl! by dunkelfalke · · Score: 1

      As someone who had to learn both German and English as a foreign language, I cannot really answer that question because both languages suck in their own special ways (both are not as bad as French, though).

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    43. Re:I LOVE perl! by Coryoth · · Score: 1

      Do you think it's harder to do in other languages? I can't say for Japanese, but I can assure you that there are far more Anglicisms in Russian than there are Russisms in English.

      I can speak for Japanese, and I can assure you it is positively filled with borrowed words from English. Sometimes they get collapsed down in the process and are not immediately obviously traceable back to the source, but they are there. How many words in English are borrowed from Japanese?

    44. Re:I LOVE perl! by hankwang · · Score: 1

      every multi-lingual person on the planet hates English. It's a pain in the ass to learn because there are too many exceptions to the rules or the rules aren't well defined.

      You forget to mention the completely irregular pronunciation:

      • 'Though' and 'tough' don't rhyme.
      • The 'o' in 'women' is not pronounced as one.
      • The pronunciation of 'lead' depends on whether it's a verb or a noun.

      These are my favorites. Here is a web page with more of them: http://www.worsleyschool.net/socialarts/strange/strange.html

    45. Re:I LOVE perl! by Whomp-Ass · · Score: 1

      and actually use genders (to which English is oblivious).

      Mostly oblivious. A Chinese co-worker of mine constantly confuses the he/she him/her hers/his thing, for example he will say things like "My mother doesn't like his apartment."
      But yeah, unless you're speaking of something that has a proper gender, and usually only if it has a given name (i.e. dogs, cats, people, etc.) then pronoun gender is used.

      (Also personally-piloted conveyances (cars, planes, trucks, etc.) are usually named in the feminine...Guns too, sometimes. Anything anthropomorphized maybe?)

    46. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      > How many words in English are borrowed from Japanese?

      Hibachi, kimono, sayonara, and hara-kiri. That's it.

      Of course, we don't pretend they're English words. :)

    47. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      Actually, there has been some scientific investigations into how easy it is to learn foreign languages, and it turns out English is a very bad performer. The winner is: Finnish!

      Don't have any references to the study, I heard about in on the radio.

      The main aspect influencing the ease of learning a language is the regularity of it's grammar rules and the correspondence of it's spelling with it's pronunciation. Clearly, English is very bad at both of these.

    48. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      Actually, there has been some scientific investigations into how easy it is to learn foreign languages, and it turns out English is a very bad performer. The winner is: Finnish!

      Interesting. Finnish is agglutinative, like Esperanto.

    49. Re:I LOVE perl! by Cyberax · · Score: 1

      Yeah.

      I like English spelling for example. It's so easy! One just needs to remember how words are spelled. The same for pronunciation, there are no general rules. Just remember how words are pronounced!

      I'm not a native English speaker, but English for me was harder to learn than German (which has word genders and complex morphology).

      Ukrainian was by far the easiest, its writing system is completely phonetic and rules are rather straightforward. Though it's a bit skewed, since Russian is my native language.

      I've also tried Finnish since I know a little of Udmurt language and they are kinda related. But its variety of grammar cases was just too baffling for me.

    50. Re:I LOVE perl! by Grishnakh · · Score: 1

      Learning to play guitar is easier, because it has simple rules, no exceptions: put your finger here, it plays that note.

      You obviously don't play guitar. Ever heard of artificial harmonics? Note bending? Tremelo bars? Then all the ways to get strings to vibrate: hammer-ons, pull-offs, tapping, etc. The worst part is getting the guitar to not make sound that you don't want, which requires palm muting and other techniques.

    51. Re:I LOVE perl! by thethibs · · Score: 1

      Yes, but every multilingual person on the planet does speak English.

      It's a devil of a language to master (I would say endlessly fascinating), but a basic facility is easily and quickly acquired, mainly because it's tolerant of wide variations in use. Missing an exception doesn't get in the way of comprehension.

      Sounds like perl to me.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    52. Re:I LOVE perl! by nacturation · · Score: 1

      Its grammar nazis that feel the need to both understand what you did wrong and pretend you didn't make any sense at the same time.

      You mean "It's grammar nazis that..." Oh, I... never mind.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    53. Re:I LOVE perl! by IamTheRealMike · · Score: 1

      Are you sure you didn't get that backwards? Finnish is legendary for how hard it is for foreigners to learn.

    54. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      you can write it in 10 different ways. So others (and you either, in a couple of months) won't be able to read it - you need to know all of them to do it.
      I will tell you a story: I am a developer, an I said to our sys admins,
      Me: "Well, here is a task for some hundreds lines of code. C++ would be perfectly suited - with some OOP approach this will be very robust"
      Admin: "OK, but please, use perl, so we can handle it - we admin do not know C++ if not very basic"
      Me: "OK, I used it a couple of times"

      so I developed this peace of perl, with some modules in a sort of modular approach. 15 days later.

      Me: "Here it is, it works just fine"
      Admin: "Good, it works fine. Great perl. Let's see the code. What is this?"
      Me: "Perl!"
      Admin: "is it??? no it is not!"

      Turned out that admins know just the first 800 words of perl, what is needed for any foreigner to speak and understand basic english. But for a real code, where you need all the 20000 words, you need to know programming, paradigms, structure... and for that C++ is much better of perl for a "miriad" of motivations. First of all, it has been designed for it. Perl has not been designed, at all.

      Perl: nice to write, impossible to be read.

    55. Re:I LOVE perl! by Anonymous Coward · · Score: 0

      You went on to describe how Perl is great but just so you know - every one of those reasons you listed is why every multi-lingual person on the planet hates English.

      OK, stop there.

      A trivial refutation of your claim would be the following: I'm multilingual (well, bilingual, anyway, and working my towards trilinguality), with English not being my native language, and I absolutely do NOT hate English. In fact, I don't know anyone who does, and I have no idea why anyone would, either.

      English, at its core, isn't any different from other languages: it's not special in any way. All natural languages are the product of centuries (and sometimes millenia) of linguistic evolution, with all that entails: mutation, adaptation to different environments, crossbreeding, and so on.

      In fact, think of individual speakers as the members of a species and the language as the species itself, and you really have a pretty good analogy.

      OK, back to the point, though, English isn't special, and English isn't better or worse than any other languages. And the GP's point, I believe, was not that Perl is the English of programming languages whereas C++, Java etc. are the German, French etc. of programming languages; it was that Perl is as close as you can currently get among programming languages to the flexibility and adaptability of natural languages.

      And this is neither a surprise nor a coincidence, given that Larry Wall (Perl's creator) has a linguistic background and deliberately designed the language to be less rigid than others.

      Also:

      So yeah, while the flexibility that makes Perl accessible to more programming styles is good to you, its still a a pain to learn, and one of the reasons why people are put off by it. Without a standardized way of doing things its difficult to understand exactly whats going on.

      That's not true, just as much as it isn't true that you can only (easily) understand either textbooks written in formal English or conversations held in informal English.

      Some of the most obfuscated code I've ever seen has been written in Perl.

      Have you ever checked out the Obfuscated C Contest? And would you say that its existence is a reason why C is not a good/useful/whatever language, or that it shows why not more people are using C?

      Let's face it, the whole "Perl is obfuscated and hard to read" meme is just an urban myth.

    56. Re:I LOVE perl! by Chowderbags · · Score: 1

      Exactly. We can bitch about how English has a bunch of exceptions, and exceptions to exceptions, and weird constructs, sure, but consider two other languages: French and Japanese.

      French has several different conjugation forms for it's verbs (and a bunch of irregular verbs that just do whatever the fuck they want), inanimate objects with gender (or animals with a linguistic gender, regardless of actual gender), and it's inflexible to new words being created (At least officially they make their own words up with a central body, even long after the public at large already adopted some other word borrowed from a different language).

      Japanese has a honorifics system that requires knowing a whole bunch of background cultural knowledge. It also has different words for use depending on gender (even when talking about yourself). Also, there's a few thousand Kanji to memorize to be able to read the daily newspaper. Good luck picking that up easily.

    57. Re:I LOVE perl! by beanluc · · Score: 1

      oh, you're talking about the word, "police".

      I think we were talking about the "word police".

      --
      Say it right: "Nuc-le-ah Powah".
  43. And everyone at Google now speaks Esperanto by Call+Me+Black+Cloud · · Score: 4, Insightful

    How many words are in english? A lot. (According to the OED folks, "The Second Edition of the 20-volume Oxford English Dictionary contains full entries for 171,476 words in current use, and 47,156 obsolete words. To this may be added around 9,500 derivative words included as subentries.") How many words does the average native english speaker know? According to this random website, 12,000-20,000 words. So English is complex, yet just 10% of the language meets a native speakers needs (less than that as we don't use all the words we know in normal conversation...except my wife when she's mad at me, then I hear every word she knows, many repeatedly)

    So Java is complex. C++ is complex. I program in Java for my daily bread and I certainly don't use the entire language. It's only as complex as I need it to be. The complexity of my code is driven by what I'm trying to do, not by the language itself. And for code maintainability, I try to keep things as simple as possible.

    1. Re:And everyone at Google now speaks Esperanto by Anonymous Coward · · Score: 0

      I agree.

      I think Mr Pike's expression of his dissatisfaction with C++/Java/everything-but-GO actually demonstrates his failing as an engineer. Part of an Engineer's job is to chose the correct tool for the job. His dissatisfaction directly stems from his inability to assess what is needed and apply the correct level of complexity to solve the problem. My mantra has always been: "Make something only as complex as it needs to be and no more".. There's no law that says you must use every feature of a language, in fact showing restraint is a quality of a good engineer. He apparently needs to be constrained by the language itself to be successful. I feel sorry for him.. He will never be happy and may not even enjoy his work. I personally stay away from nuances of a language and try to be as clear as possible about what the code is attempting to do and why.

    2. Re:And everyone at Google now speaks Esperanto by zugedneb · · Score: 1

      Works if you are the architect and construction worker...

      Sadly, you have to understand other peoples code also, and work on others design...

    3. Re:And everyone at Google now speaks Esperanto by msclrhd · · Score: 2, Insightful

      Exactly. You don't need to use template meta-programming to get the job done for most tasks.

      Hell, just use the better C subset and the C++ library if you want to.

      There is also no need for a Singleton of a Factory that creates Factories to create objects that you pass an Observer to that calls a function to do something when a simple parametrised free-standing function will do the same job. The maintainer of the code will thank you for it (even if that maintainer is you at some point down the road).

      Think about the data and what operations you are performing on that data.

      Also, use the right languages and structures. If you have XML that you want to visualise as HTML, XSLT is designed to do that easily and reliably. If you are using JavaScript and/or python, use JSON and the native type system. Use standard library functions over hand-written ones unless you have a clear, measurable need not to.

      Work with the languages and tools you have, not against them.

    4. Re:And everyone at Google now speaks Esperanto by rollingcalf · · Score: 1

      "It's only as complex as I need it to be. The complexity of my code is driven by what I'm trying to do, not by the language itself. And for code maintainability, I try to keep things as simple as possible."

      Are you a one-person programming team, never having to debug or modify other people's code?

      If not, the complexity will often be forced upon you by others who wrote the code you have to maintain. Some of them like to use subtle or arcane nuances of the language just because they can.

      --
      ---------
      There is inferior bacteria on the interior of your posterior.
    5. Re:And everyone at Google now speaks Esperanto by Call+Me+Black+Cloud · · Score: 1

      Exactly. At work I've been pushing the other programmers to return JSON from the server...it drives me crazy hearing, "I have to parse the data..." when they were working in JavaScript...they were writing their own data formats.

      I like getting things for free. Free parsing? Sign me up!

    6. Re:And everyone at Google now speaks Esperanto by rthille · · Score: 1

      How many words does the average native english speaker know?
      Yes, but the "average native english speaker" probably includes lots of Americans. That'll bring down the average quite a bit.
      Try figuring the percent of "average native english speakers" who understand that life came to be as it is due to unguided evolution. Figure that number with and without Americans...

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
  44. C++ and Java make for good foundations by oxide7 · · Score: 2, Insightful

    It's been a long time since I've coded in a professional environment but I feel that having learned C++ you can learn any other language. It is complicated and verbose, but its extremely precise. Imagine having to learn how to manage memory with something like PHP. Actually -- because the new generation DOESNT LEARN C++ its why code is getting so sloppy now. There are easier languages sure, and using them can be fine, but if that's all you know, then you don't really know what your code is doing.

    1. Re:C++ and Java make for good foundations by Bright+Apollo · · Score: 1

      "Actually -- because the new generation DOESNT LEARN C++ its why code is getting so sloppy now"

      You could make the same statement, with more force, about COBOL and FORTRAN, sonny.

      --#

    2. Re:C++ and Java make for good foundations by Anonymous Coward · · Score: 0

      Yeah, because Windows 95 was sooo much more stable than Windows 7
      *sigh*

    3. Re:C++ and Java make for good foundations by Anonymous Coward · · Score: 0

      1) C++ does not help you learn functional languages

      2) C++ does not help you learn memory management. If you want that, use C. C++ just drives you nuts with it.

    4. Re:C++ and Java make for good foundations by Anonymous Coward · · Score: 0

      And why do I care what my code is doing? Why should I?

      Resources are cheap. Gone are the days of having to manage each register to maximize efficiency. I'd bet that 99% of code written today, has for all practical purposes unlimited cpu cycles and unlimited memory to use.

      And yes, those other 1% need to write efficient code, but for the rest of us, efficiency is something for the computer to worry about.

      I can write inefficient code twice as fast as efficient code, and it makes zero ultimate difference to the computer. Guess which one my boss likes?

    5. Re:C++ and Java make for good foundations by oxide7 · · Score: 1

      I dont agree with that. C and C++ set the foundation to modern computing in my opinion. COBOL and FORTRAN had their run, but they don't add anything to today's conversation IMHO

    6. Re:C++ and Java make for good foundations by thoughtsatthemoment · · Score: 1

      You might not have realized it but you are among many who say good things about C++ but when it comes to defending your arguments, it suddenly becomes C and C++.

  45. Partly Agree... by jythie · · Score: 1

    While I disagree with his general tone/point, I can agree that Java/C++ are overused. Both languages have been trying to push themselves as universal solutions (just look at all the crud added to C++ over the years from other languages) to be used in all domains, rather then were they are actually useful.

    I feel this is bad in two directions.. it shoves the language into a domain where it does not fit, thus producing sub-par results... and it also ends up pulling parts of that domain back into the language, resulting in an increasingly bloated standard with redundant ways of accomplishing tasks.

    Esp in C++, one has to keep asking 'so which C++ paradigm was this programmer working in?

  46. Stoopid Bloated Languages! by Anonymous Coward · · Score: 0

    We need to get rid of all the cruft of C++ and Java.. Things like Exceptions just add to Bloat... That's why GO is so superior.

  47. Right on Rob... Go go!! by grepya · · Score: 1

    ... Go would be perfect if it also allowed for *some* manual memory management along with garbage collection. A large part of java's complexity that I see in big server type situations (> 8 G heap size) is that managing the gc parameters is almost a full time job. this is the theory and set of options you need to learn and internalize to get semi-satisfactory behavior from Sun's jdk1.5 gc. The complexity has only increased.... not decreased in later jdk's.

  48. Emperor is Naked by oakwine · · Score: 1

    Yes, both languages are giant log jams of bilge. Glad someone said so. Back to C! Back to Scheme! We need a new OS too. There hasn't been a decent OS since CP/M.

    1. Re:Emperor is Naked by MathiasRav · · Score: 3, Funny

      We need a new OS too. There hasn't been a decent OS since CP/M.

      There's Emacs.

  49. Complexity by Anonymous Coward · · Score: 0

    Obvioulsy, hello world is not in any way a representation of the language as a whole, but it seems to me that Go is more complex that C++ and Python.

    Go:
            05 package main

            07 import fmt “fmt” // Package implementing formatted I/O.

            09 func main() {
            10 fmt.Printf(“Hello, world; or ; or \n”);
            11 }

    C++ (haven't used in a while)

            import #iostream

            int main(){
                cout "Hello World"
            }

    Python

        def printer():
            print "hello world"

    1. Re:Complexity by msclrhd · · Score: 1

      Python/Ruby/others

            print 'hello world'

      Java/C#/others

            public class Hello {
                  public static void Main(String [] args) {
                        System.out.writeline("hello world");
                  }
            }

      When learning languages/programming, it is better to start with an interpreted language like Python or Ruby where you get immediate feedback and start simple.

      Also, learn more than one type of programming language (Python, C, C++, Java, Haskell, Prolog, Lisp, Clojure, Groovy, Go, ...).

  50. Programming is Hard by CSHARP123 · · Score: 2, Interesting

    I RTFA, really all he is saying is programming is Hard. Well Duh, I am sorry to hear that from Google Engineer. May be he will be better off using C# or VB.Net. Welcome to programming.

    1. Re:Programming is Hard by Anonymous Coward · · Score: 0

      I RTFA, really all he is saying is programming is Hard. Well Duh, I am sorry to hear that from Google Engineer. May be he will be better off using C# or VB.Net. Welcome to programming.

      VB.NET and C# are of similar complexity and style to Java. So VB.NET might use "friendly" sounding keywords, but its still a fully OO language just like c# just like java.

    2. Re:Programming is Hard by Anonymous Coward · · Score: 1

      Welcome to programming.

      He's been programming since 1981, mostly doing OS and language development research for Bell Labs. Whatever your meager technical ability and experience is, I'll wager it pales by comparison to his. I don't believe C# or VB.Net have yet been ported to Plan 9, but maybe you should email your smug condecension to him directly and see if he takes you up on your sage advice, you crafty hacker you.

    3. Re:Programming is Hard by filterban · · Score: 1
      Also, the fact that I think everyone is missing is that it's more than just having a "simple" language that drives adoption.

      Java is not going to die when it has such fantastic libraries like Spring and Hibernate. I shudder to think of the implications of writing a real web application in Go. It should maybe be called, Go Reinvent the Fucking Wheel.

      This key difference -- the massive Java "ecosystems" as it were -- is why I put more stock in Groovy/Grails and Scala than I do in languages like Ruby and Go.

      --
      rm -rf /
    4. Re:Programming is Hard by Anonymous Coward · · Score: 1, Funny

      Welcome to programming.

      He's been programming since 1981, mostly doing OS and language development research for Bell Labs.

      He apparently also trolls slashdot.

    5. Re:Programming is Hard by Anonymous Coward · · Score: 0

      Who the hell modded you up? Rob Pike has been programming and inventing programming languages from the time vb.net's authors were in diapers.

      He raises points. The difficulties faced by programmers are completely arbitrary and are only so because of the language's designers lack of foresight. Computers are not human. They don't join the conversation in the middle lacking the background details. There is no need to design programming language in such a fashion.

  51. So... we'll end up back at Atari BASIC? by Mad-Bassist · · Score: 3, Interesting

    I kinda miss those days--easy to learn and embedded 6502 machine code subroutines to make things move faster.

    --
    "The only legitimate use of a computer is to play games." - Eugene Jarvis
  52. He's just pimping Go by istartedi · · Score: 4, Informative

    The summary makes him sound like a winer with no solution. If you read TFA, you see he's pimping Google's new language, Go. That's perfectly understandable since they pay him; but TFA also points out that languages accumulate cruft over time, and Go is a baby.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:He's just pimping Go by Cro+Magnon · · Score: 3, Funny

      but TFA also points out that languages accumulate cruft over time, and Go is a baby

      Yeah, in another 10-20 years, Go will be a clunky piece of cruft, and we'll need a new language, possibly named "Stop".

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    2. Re:He's just pimping Go by evilpenguin · · Score: 1

      May I just point out re: your sig the phrase is "intents and purposes" not "intensive purposes."

      This is nothing to do with Go, Java, C++, or Google. Or how many words are defined in the OED.

    3. Re:He's just pimping Go by imunfair · · Score: 1

      I'm entirely unconcerned about cruft, it can be ignored. What I can't ignore is the lack of libraries on a language that isn't yet mature. I don't want to spend several hours reinventing a wheel when I can use a mature language to do the same thing in fifteen minutes because someone else has already done the uninteresting grunt work. That's the great thing about Java and C++ - if you want to do something even a tiny bit generic there is probably already a library out there for you. In Java many times these libraries are already installed with the SDK - stuff someone else might consider cruft, but I just happen to need for a particular project.

    4. Re:He's just pimping Go by msclrhd · · Score: 1

      I'm just waiting for someone to write a Go library called Ogle so we can have Go/Ogle or Go+Ogle.

    5. Re:He's just pimping Go by TheSync · · Score: 1

      I don't see how "Go" is simpler than Java or C++.

      How about Python? Now there is a language that doesn't need a "package main" statement at top.

      Hello world in Python?

      print "hello world"

      No "package main" or "class helloWorld implements my.butt.squeegee"

    6. Re:He's just pimping Go by shutdown+-p+now · · Score: 2, Funny

      Yeah, in another 10-20 years, Go will be a clunky piece of cruft, and we'll need a new language, possibly named "Stop".

      You forgot to mention that, before that happens, we'll get a bunch of derived languages, such as Objective-Go, Go++, Go--, Go#, GoScript and GoXML.

    7. Re:He's just pimping Go by evilviper · · Score: 1

      . I don't want to spend several hours reinventing a wheel when I can use a mature language to do the same thing in fifteen minutes because someone else has already done the uninteresting grunt work.

      This is the age old decision that has to be made for every program. Go with a low-level language which will be a lot of work to just initially get started, or a high-level language which will allow you to quickly get something that minimally works, but then you might find it not flexible enough to do exactly what you want, and/or with the performance that you want.

      So, why don't you do everything in VB, instead of C++/Java?

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    8. Re:He's just pimping Go by evilviper · · Score: 1

      TFA also points out that languages accumulate cruft over time, and Go is a baby.

      Only with Java did he complain about cruft. C / C++ have other problems listed. If Go is merely competitive with Java, it may yet see some extensive use.

      HOWEVER, Google has a big problem with reinventing the wheel. They often release good bits of code which go nowhere. Google appears to be pet-projects galore. Maybe everything they do is just too specific to their own purposes, or perhaps they're just far too poor at interfacing with the community, and getting other people on-board.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  53. Re:We all know the ideal language has two function by blai · · Score: 1

    dontMakeMeTellYouWhatToDo(); -- turing complete

    --
    In soviet Russia, God creates you!
  54. Those supposed-to-help IDEs are bad too by Anonymous Coward · · Score: 0

    I used to be able to code in Basic, then in Turbo-Pascal, then in Turbo C, then in Turbo Assembler, Javascript, PHP.

    But when I start XCode... I simply freeze because the damn thing is way to complex to even begin to understand what the hell I'm supposed to do with all those windows and menus.

    1. Re:Those supposed-to-help IDEs are bad too by HeronBlademaster · · Score: 1

      Try an IDE that *doesn't* suck. Having used NetBeans, Eclipse, Visual Studio, and Xcode, I have to say that Xcode is orders of magnitude suckier than the rest. Netbeans and Eclipse both work on OSX.

      That said, I think IDEs do tend to be too helpful. I'm tired of having to erase the extraneous parenthesis that Eclipse throws in. (I know there's probably configuration options to change that behavior, but there are so many options I wouldn't know where to begin.)

    2. Re:Those supposed-to-help IDEs are bad too by stanlyb · · Score: 0

      Did you try Delphi? In fact, the first RAD, and also the best.

    3. Re:Those supposed-to-help IDEs are bad too by Kagetsuki · · Score: 1

      NetBeans is awful, Eclipse is obtuse and never works right, Visual Studio often requires you to constantly screw with project and compiler settings to get things working correctly, and Xcode just doesn't offer much at all and fails on so many levels when it comes to dealing with errors and debugging. I agree with you on your IDE's being too helpful; which is why I use (G)Vim with a few plug-ins and extensions. I have everything from intellisense like suggestions to API reference help when I need it. Though I don't like it personally, emacs is also extremely awesome. The learning curve is a little rough, but pick one and stick to it for a week or so - you won't be able to go back to bulky commercial IDEs.

  55. "your language is too complex" by Anonymous Coward · · Score: 0

    That's the standard complaint of language designers about each other's product.

    But which would you prefer: Simple programs in a complex language, or complex programs in a simple language?

    (Not just an academic question. In a IRAD experiment on implementing TCP, the "control programmer" wrote about 300 lines of C for the 'ACK or Timeout' part of the protocol. I wrote 5 lines of Ada95.)

  56. Re:We all know the ideal language has two function by MikeyO · · Score: 5, Funny

    You obviously aren't paid by the hour to write java code, or else you'd have come up with something like:

    ThreadFactory.getInstance().setExecutionTarget(new Runnable(){ public void run (doWhatIWant() }).addExecutionObserver(ExcecutionItemObserverFactory.getInstance()).start()

    Which is much more "enterprise ready" than yours.

  57. It's what you do with it by Anonymous Coward · · Score: 0

    C++ is a metalanguage, in which you can define your own domain-specific language. That's all nice, but I suggest you don't. When you override operators like '=' and '+', you make things more confusing rather then prettier. Use a class when you need one, there's nothing wrong with structs and handles.

    Before writing a program, ask yourself if it's inherently object oriented by nature. Sure you can model everything into a set of classes, but that doesn't mean you should always do so. I'm using dynamic datatypes, private attributes, inheritance, interfaces and then some all in pure C because they've been useful and are easy to implement. I'm not using Java-like exceptions and garbage collectors because I'm better off without them.

    1. Re:It's what you do with it by HeronBlademaster · · Score: 1

      Sure you can model everything into a set of classes, but that doesn't mean you should always do so.

      This is what bothers me about Java. You're forced to model everything into a set of classes.

    2. Re:It's what you do with it by Der+PC · · Score: 1

      No you don't.

      You only need a wrapper class.

      public class Somestuff {
            public static void doStuff() { doMoreStuff(); }
            public static void doMoreStuff() { System.out.println("mo stuff!"); }
            public static void main(String[] args) { doStuff(); }
      }

      Yes, ugly code. Yes, perfect sample. Zero class instantiations.

      Actually, a large part of a system I wrote in Java does just this because I couldn't spare the overhead of object creation.

      --
      This signature is DRM protected. By the DMCA, you are not allowed to counteract or oppose to it.
    3. Re:It's what you do with it by HeronBlademaster · · Score: 1

      Yes, ugly code. Yes, perfect sample. Zero class instantiations.

      But it's still part of a class. It's a stupid, extraneous requirement.

    4. Re:It's what you do with it by Der+PC · · Score: 1

      No, it's not. The class is never instantiated, which means it doesn't exist, and thus the functions can't be part of it.

      If you want a class-restrictive language to yelp about, do smalltalk. It's nice, but it's still all-OOP.

      And what about Ruby?

      Still, if people put the methodology before them like a weapon of mass-disapprovement, they're going to get disappointed. En masse.

      The old icelandic saying "árinni kennir illur ræðari" (a bad rower blames his oar) fits this discussion perfectly - a bad programmer blames the language.

      --
      This signature is DRM protected. By the DMCA, you are not allowed to counteract or oppose to it.
    5. Re:It's what you do with it by HeronBlademaster · · Score: 1

      I'm not talking about what code the runtime sees. I'm talking about what I have to do as a programmer.

  58. Re:We all know the ideal language has two function by cpscotti · · Score: 1

    I'd use upper case only. You know, in some exotic environments... displays that can't display lower case letters.. the whole story all again..
    e.g.:
    DO_WHAT_I_WANT()

  59. Re:We all know the ideal language has two function by PixieDust · · Score: 5, Funny
    I dunno, I kind of like these extensions:

    workItHarder makeItBetter doItFaster makesUsStronger moreThanEverHourAfterHour workIsNeverOver

  60. Did anybody post this yet? by Joce640k · · Score: 5, Insightful

    The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We wouldn't tolerate plumbers or accountants that poorly educated. We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained.

    Obviously, we don't want our tools--including our programming languages--to be more complex than necessary. But one aim should be to make tools that will serve skilled professionals--not to lower the level of expressiveness to serve people who can hardly understand the problems, let alone express solutions.

    We can and do build tools that make simple tasks simple for more people, but let's not let most people loose on the infrastructure of our technical civilization or force the professionals to use only tools designed for amateurs.

    - Bjarne Stroustrup

    --
    No sig today...
    1. Re:Did anybody post this yet? by vbraga · · Score: 2, Informative

      Since I never met this quote before and found it quite insightful here is the link for interview where Stroustrup said it for those like me who didn't know it - it's worth reading.

      --
      English is not my first language. Corrections and suggestions are welcome.
    2. Re:Did anybody post this yet? by Slightly+Askew · · Score: 4, Insightful

      How incredibly arrogant. I would totally hire a semiskilled carpenter to put up a tool shed in the back yard. Not so much a NYC high rise. I would also gladly hire an apprentice electrician to put in a new overhead light fixture, but not to wire up my 440v industrial machinery.

      There's nothing dangerous about semiskilled programming, providing they are doing work that is appropriate for semiskilled programmers. I'm no more going to hire Thomas Knoll to write my company's Human Resources app than I'm going to personally apply for a job writing the next version of whatever the NYSE is using.

      --
      Public use of any portable music system is a virtually guaranteed indicator of sociopathic tendencies. -- Zoso
    3. Re:Did anybody post this yet? by Anonymous Coward · · Score: 0

      too many software developers are undereducated and undertrained.

      Right. And unless you can alter that fact you may as well make it as easy as possible for these people to produce good work.

    4. Re:Did anybody post this yet? by perlchild · · Score: 1

      It's pretty interesting that we're going from "programmer's tools should be easier to use" which in my mind is like "this level should be legible" or "this screwdriver shouldn't slip in your hand". And now we're talking about how the skill of the user should match the job they're trying to do?

      Most Architects and engineers don't say "if the cement machine isn't hard enough to use, the cement person will not be skilled enough to build my foundation right". Granted, there's a lot of thought processes that are associated with any one programming language, and most of them come from the deficiencies, workarounds and quirks of each one. Oddly enough, it's those thought processes that make someone a good or bad software developer, not the language that they use, but how they use it. If you program in C like a smalltalk developer, the results would surprise me too.

      Can we get back on track to the languages themselves, or are we really talking about "the typical programmer of language X"?

    5. Re:Did anybody post this yet? by BitZtream · · Score: 1

      So you have low standards, many of those of us on slashdot have considerable higher standards than the normal person because we've seen good and bad and know that good really isn't that hard if you have a clue and/or natural talent for programming.

      The funny part is, you are far more likely to end up dead because that overhead light burns your house down due to hiring an apprentice than the big machine because that big machine you bought more than likely comes with a real electrician to wire it up according to the manufactures specification.

      Fortunately, we don't know each other so I don't have to worry about being at your house when it burns down because you're a cheapskate hiring the lowest bidder.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    6. Re:Did anybody post this yet? by Anonymous Coward · · Score: 1, Interesting

      Even if its a Stroustrup quote, its tough to swallow him saying "we don't want our tools--including our programming languages--to be more complex than necessary".

      Stroustrup invented the MOST COMPLICATED PROGRAMMING LANGUAGE IN EXISTENCE that actually gets used for anything: C++. Because his fucking language is so complicated (and based on an antiquated edit-compile-link model inherited from C), the tools to work with this langage (compilers, debuggers and IDEs) are also extremely complicated. So you can't do useful things like fast incremental compilation, useful reflection (unless you totally roll your own) or any sane kind of metaprogramming. And everyone knows a different subset of the language, and it takes about 4x as much programmer effort to get anything done than it does in a higher-level language like D.

      I have to use C++ at work and honestly I wish they would let us write the new one in C. Yes, it would be more inconvenient in some ways -- but it would also REALLY help by keeping us from getting into C++ rat-holes like overuse of templates or overloading or multiple inheritance or dynamic_cast with private non-virtual ctors in a protected virtual base class.

    7. Re:Did anybody post this yet? by Anonymous Coward · · Score: 0

      The point is not to make it easier to program but to make it more maintainable.

      This satisfies Stroustrup's "But one aim should be to make tools that will serve skilled professionals".

      Does Go really "lower the level of expressiveness" ? and is the aim of Go "to serve people who can hardly understand the problems, let alone express solutions" ?

      I don't think so, and Pike is certainly not in that category.

    8. Re:Did anybody post this yet? by heson · · Score: 1
      Did you miss the closing section?

      We can and do build tools that make simple tasks simple for more people, but let's not let most people loose on the infrastructure of our technical civilization or force the professionals to use only tools designed for amateurs.

    9. Re:Did anybody post this yet? by Joce640k · · Score: 1

      You need to read The Daily WTF a bit more to see the problem with semiskilled programmers...in the long run they cost far more money than doing the job properly.

      --
      No sig today...
    10. Re:Did anybody post this yet? by Bungie · · Score: 1

      There's no complex process involved in wiring a light fixture that is beyond the capabilities of an apprentice electrician. It's not beyond the capabilities of any guy who can follow directions and connect three wires to screws. There's also little or no risk of your house catching fire even if he wires it completely wrong. You should have a fire proof box, ground wire, and circuit breaker to prevent a fire from at various places where one might start from bad wiring.

      It's overkill to hire a master electrician to wire a single light fixture, and he would probably send his apprentice to do it anyway.

      It would be like hiring a Dell service tech at $200+/hr to install a stick of memory in your computer. Yes you might damage a component, but the process is simple enough that you know you won't.

      --
      The clash of honour calls, to stand when others fall.
    11. Re:Did anybody post this yet? by Slightly+Askew · · Score: 1

      The funny part is, you are far more likely to end up dead because that overhead light burns your house down

      I said "apprentice", I didn't say village idiot.

      --
      Public use of any portable music system is a virtually guaranteed indicator of sociopathic tendencies. -- Zoso
  61. Well said !! it was time someone talked like that by unity100 · · Score: 1

    Some languages are way too complex and cumbersome, and this is being pushed about as something being 'good', or 'pro'.

    whereas, in regard to practicality of applied sciences, engineering, realities of the production environment, this is BEYOND stupid to even propose. production environments need easy to use, simple, fast, fluid languages.

  62. Re:We all know the ideal language has two function by jhoegl · · Score: 1

    Curse you techno!

  63. Oh Really... by jd2112 · · Score: 1

    I think he should try to write a few non-trivial programs in VBScript and see if he changes his tune.

    --
    Any insufficiently advanced magic is indistinguishable from technology.
  64. He's right. Code in C. by Anonymous Coward · · Score: 2, Insightful

    C. It's just the right thing to do.

  65. Programming is a complex task for smart people by Pro923 · · Score: 1

    I never could grasp as to why we need to make programming "for everyone". Let's just realize that it's the complex task that it is and we'll all make more money.

  66. Re:We all know the ideal language has two function by HeronBlademaster · · Score: 4, Insightful

    We have a FoobarFactoryFactory class in the project I'm currently assigned to... yes, it's a factory that creates factories (which in turn create foobars). And the foobars are themselves generic-ish objects which can contain any number of different types of data.

    And they have the nerve to tell me one of the qualities of higher-level devs is that "they tend to make things simpler than entry-level devs".

  67. Re:We all know the ideal language has two function by KlomDark · · Score: 1

    GiveMeMoney(DateTime.Now);

  68. Not so sure of that... by Estanislao+Mart�nez · · Score: 5, Insightful

    Guess what guys? The reason programming is hard is because you must clearly and unambiguously state what you want to have happen.

    Even though for most people that's the first hurdle (and one that they fail), I'm not sure that this is the main reason programming is hard. I know plenty of people who've mastered the basic mechanics of doing that, and yet still don't program too well because they can't make their problem-solving ability scale to larger, more complex problems. You can understand at a fairly low level every single step that will be carried out to execute your program, yet be completely unable to write a large, modular and maintainable software system.

    1. Re:Not so sure of that... by Amouth · · Score: 1

      Your addressing 2 problems here.

      being able to write scalable code is to me as much an art form as knowledge - the other problem which is more commonly the barrier to quality programing is that people don't realize that have to tell the computer "clearly and unambiguously" what to do.

      MOST of the problems I've come across have been people not thinking about error conditions.. they think A = B-C but don't bother to check that B or C is a value that can be used with -. you might see them check one usable value or think that the class with handle it - but they don't honestly think about it. Yes always consider inputs as bad until proven other wise but too many people think that it only applies to user inputs ..

      don't get me wrong i'm not discounting scalability at all - it's hard and there is no silver bullet and more theories and frameworks and design crap than any one person can think about when trying to do it.

      i feel that both apply to all languages and environments.. but they are 2 separate issues to be reviewed and improved.

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
  69. C too complex? Hilarious. by fyngyrz · · Score: 3, Insightful

    One of C's great advantages is not only that it is simple and very fast, it is also very close to the hardware -- when you make local variables, structures, assignments, etc... you have a good idea what the compiler needs to do. Likewise control structures, statements and so on.

    The reason it is used is -- frankly -- because it kicks the ass of every other language out there (except machine and assembly) when it comes to both size and performance. This is because a C fragment turns into something very efficient and "close to the metal" if the compiler is even half-good, and that in turn is because what C does is very close to what the CPU does. Spend a couple weeks writing a C compiler -- just a C to ASM one for any CPU -- you'll see what I mean.

    The only sense in which C is "harder" is that it takes more statements - because they tend to do simple things - than a higher level language to do many things. A little writing, a little building your own library... you'll have a nice resource for lists, memory management, graphics, in whatever area(s) your interest(s) lie(s.) And at that point, it's not harder -- it's easy, and it's fast as hell to write, and it *will* kick the butt of most other languages, as long as the understanding of the problem to be solved by the programmers is reasonably similar.

    Also... I'm a huge fan of Python, use it all the time. Great language, totally wiped Perl out of my life (and for that, I am eternally grateful.) And as an interpreted language, it's not all that slow -- especially on a modern machine. But compared to C... no, I'd *never* use Python as a language for anything that required serious computation. You don't even need to go to C++ for some pretty cool OO - it's not only easy to do, it's educational and you'll actually understand what OO is doing, and why. If you need crazy OO, C++ is right there, and can remain efficient if you're really careful. Me, I rarely go there, but YMMV.

    That whole too complex thing... what, was he hired by Google as a janitor? Or a janitor's helper? Seriously, too complex? For whom? Is he trying to teach a German Shepherd to program? Twit. If you came to my company for a job, and you told me C was "too complex" or "too hard", I'd just show you the door.

    Have our standards really dropped that far?

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:C too complex? Hilarious. by clone53421 · · Score: 5, Insightful

      One of C's great advantages is not only that it is simple and very fast, it is also very close to the hardware -- when you make local variables, structures, assignments, etc... you have a good idea what the compiler needs to do. Likewise control structures, statements and so on.

      That’s exactly the point... it’s too close to the hardware. Yes, it gives you really fine-grained control over what happens, and you can tweak it to make it as fast as possible. With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization. Plus, the compiler should be robust enough to optimize the program nearly as well as you could anyway.

      You don’t want to tell the computer every nitty-gritty detail. The computer is fast enough and powerful enough to do what you want it to do without you needing to exercise that level of control over how it actually does it. You just want to call a function that does what you want without worrying about the underlying hardware or algorithm that does it.

      As programs get more and more complex, more and more abstraction is needed between the programmer and the hardware. This is not surprising. Someday, instead of saying “that’s like coding an entire application in assembly”, we might be saying “that’s like coding an entire application in C++”.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    2. Re:C too complex? Hilarious. by fbjon · · Score: 4, Informative

      You seem confused. He said C++ is complex, not C, and he is entirely right. Also, if you used to do Perl, you might like Ruby. It's no faster than Python, but I find it nicer.

      --
      True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
    3. Re:C too complex? Hilarious. by bonch · · Score: 5, Insightful

      C's closeness to the hardware is probably why it has stayed relevant in the era of mobile computing and battery life. Some developers do need to tell the computer every nitty-gritty detail.

    4. Re:C too complex? Hilarious. by rolfwind · · Score: 5, Insightful

      "Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."

    5. Re:C too complex? Hilarious. by bbn · · Score: 5, Insightful

      This is because a C fragment turns into something very efficient

      No it _can_ turn into something very efficient. But usually it is too much bother or the programmer is not competent enough and the program ends up being no more efficient than something coded in a different language.

      Take a look at the programming language shootout. The C programs usually win the contest, but they do it by doing crazy things like looking up the cache size of the CPU and implementing their own version of malloc to fit a page size. The run of the mill C program is not like that.

      For many or even most tasks stability and security is more important. Other languages provide those properties better than C.

    6. Re:C too complex? Hilarious. by inKubus · · Score: 1

      Personally, I think the content is getting more complex, but the programming is the same. Sure, you have multicore and such but the real complexity is packaging content and doing stuff with it. If CMIS or GData or OData (hopefully all will be merged in CMIS 2.0) works the way it should, everything should be reduced to 1. define content 2. define workflow for content

      Then the actual "programming" is basically writing the things that manipulate the content in the workflow steps. And if all goes well, most things you'd want to do are already done and just need to be extended to your new content type. Content inheritance has been missing from the web 2.0 thing and that is what will really make web 3.0.

      --
      Cool! Amazing Toys.
    7. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 1

      With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization.

      GAAAAAAAAAAAHH!!!

      Stop saying that! Stop saying that! Stop saying that!

      Almost every running computer in the world clocks in under 800MHz and has well under 256MB of RAM. Your desktop is a drop in the bucket compared to the sea of embedded processors surrounding you.

    8. Re:C too complex? Hilarious. by Ex-MislTech · · Score: 3, Insightful

      You got modded flamebait because you dared question the less is more crowd that wants higher level languages that do
      most of the lower level work for them.

      The ppl that coded closer to the metal as you say mostly have grey hair now, and are looked at as legacy coders
      by the new breed that want all that lower level coding done for them by the language.

      As for it being complex, sure it is complex for most ppl, but for a college trained Comp Sci. major it should
      be bread and butter and tools of the trade.

      Ppl have declared we are giving a dumbed down education and I think this is a fair indicator of it.

      --
      google "32 trillion offshore needs IRS attention"
    9. Re:C too complex? Hilarious. by TheMidnight · · Score: 1

      Well, the main exception to your claim is that the amount of data some of these programs must work with is ever increasing, too. Information available to humanity in general and to applications is increasing at an accelerating rate, and the program still needs to be efficient if it is to work with these ever-increasing amounts of data. Even though hardware is getting far faster, and perhaps for desktop applications where the machine has plenty of extra horsepower to absorb inefficiencies in the code or the programming language it was written in, for serious computing, such as scientific, database or other "big iron" applications, the optimization still matters a great deal, just because of the sheer volume of data it has to process.

    10. Re:C too complex? Hilarious. by clone53421 · · Score: 1

      Most of them only run one program, do it well, and will probably never be updated with new software. Somebody programmed them once and was glad to forget about them afterward, sort of like the embedded project I did in Senior Design...

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    11. Re:C too complex? Hilarious. by SuperDre · · Score: 0

      [i]With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization.[/i] I'm sorry but I really hate comments like that... That is exactly the mentality why with every new computer I buy and loading it with the latest versions of all the software I had, the computer runs just as slow as the old computer with the earlier versions. Also it's one of the reasons why everything is getting so bloated, and people actually don't know how stuff really works below the bonnet. I want the best possible performance of my new computer, so why should I take bloated/unoptimized programs for granted, just because my computer is fast enough? hell that's not why I buy a new computer. Personally I think people are just becoming too lazy to really understand the underlying stuff, and a better comprehension of the underlying stuff will only make you write better code..

    12. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 2, Interesting

      With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization.

      the inefficiencies aggregate to the point where you have cd burning software that eats 200MB of ram and 300MB of hd space. binaries were getting bigger and hungrier all through the 90s, but there was a literal explosion after all the sandboxed runtimes became popular with colleges. People don't buy faster computers to run slower code written by lazier programmers. They assume they're going to get a faster experience. ...or at least more capability. what ends up happening more and more often though is that stuff just gets slower, buggier and more expensive.

    13. Re:C too complex? Hilarious. by fractalspace · · Score: 1

      The computer is fast enough and powerful enough to do what you want it to do without you needing to exercise that level of control over how it actually does it.

      No computer is powerful enough to keep up with the crapiness of the software that may run on it. Look at Windows...

    14. Re:C too complex? Hilarious. by General+Fault · · Score: 1

      In my experience (more than most of you less than others), most slow operations are a result of poor algorithm design. I don't care what language you use, a Theta N^N operation on any decent size dataset is going to be slow. C/C++ really only optimizes the way that calls are made and memory allocation and de-allocation. One of the beauties of modern languages and technologies like C# and .Net is that many, perhaps most common operations such as searching or sorting an array, collection or dictionary are already coded in a very efficient way. The developer can spend more time focusing on functionality rather than optimization. Additionally, some of what many consider "extravagant useless features" like garbage collection can enhance performance (at the cost of memory) by waiting for free CPU cycles to do unimportant work. And now with multi-core systems, parallel execution is a must for any high performance application. I've done some multi-threading in C and even assembly, but I don't recommend it... Besides, in a business environment, there is little cost to slow application performance in relation to slow development time. I can write the same application in C# in 1/10th the time it would take to code up in C++ (and never finish in C).

      --
      No man is an island... But I wouldn't mind having a bigger moat.
    15. Re:C too complex? Hilarious. by conspirator57 · · Score: 4, Informative

      That's exactly the point... it's too close to the hardware. Yes, it gives you really fine-grained control over what happens, and you can tweak it to make it as fast as possible. With the speed of today's computers, though, you shouldn't (usually) need that amount of optimization. Plus, the compiler should be robust enough to optimize the program nearly as well as you could anyway.

      umm... did you miss the part where the guy also bitched that interpreted languages are "too slow"?

      so which is it? where on this stone are you going to squeeze the blood from? it's a tradeoff and the menu of available programming language choices is already comprehensive. this guy expresses it better and more comprehensively than i care to in a /. comment:

      http://eatthedots.blogspot.com/2008/07/why-is-c-faster-than-python.html

      and compiler research has only yielded 4% annual improvement in performance per Proebsting's law
      http://research.microsoft.com/en-us/um/people/toddpro/papers/law.htm
      http://www.cs.umd.edu/class/spring2006/cmsc430/lec18.4p.pdf

      and compiler researchers concede that a competent human will outperform a compiler for the foreseeable future. so your statement about compilers is total hand-waving away of facts inconvenient to your argument.

      --
      "If still these truths be held to be
      Self evident."
      -Edna St. Vincent Millay
    16. Re:C too complex? Hilarious. by Like2Byte · · Score: 4, Insightful

      This is exactly the reason I program in C and C++. Because it is hard. The level of knowledge required for entry into my field is higher and I am therefore surrounded by more competent engineers.

      Anyone complaining that C/C++ is too hard needs to stay in GUI application and web development. Have fun, I say.

    17. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Brilliantly written and insightful. Couldn't agree more.

    18. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 1

      With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization.
      And the sad fact is that way too many programmers think that way. Welcome to bloated software that's 10 times bigger and slower than it could have been.

    19. Re:C too complex? Hilarious. by fractalspace · · Score: 1

      That whole too complex thing... what, was he hired by Google as a janitor? Or a janitor's helper? Seriously, too complex? For whom? Is he trying to teach a German Shepherd to program? Twit. If you came to my company for a job, and you told me C was "too complex" or "too hard", I'd just show you the door.

      I think this guy is onto something. Some sort of unique vision on computing that is totally unheard of. Different than anything we are used to. Something so unconventional that it is controversial and is unthinkable without *really* getting out of the box (and leaving the planet where the box lives). I think this vision is about a revolution in the way which we do computing. A step closer to a day when machines will actually work for humans (not the other way around as Today). Anyone would be able tell a machine, in 'human forms and ways', to do stuff for them, without learning the 'machine rules'.
      Too bad you wont hire him, but something is telling me he is not interested in the kind of work you are offering (not to mention salary). There isn't any particular known shortage of good 'regular' coders. Google must have something different for him.

    20. Re:C too complex? Hilarious. by clone53421 · · Score: 1

      umm... did you miss the part where the guy also bitched that interpreted languages are "too slow"?

      Where from my statement did you seem to infer that interpreted languages are any better than compiled ones?

      and compiler researchers concede that a competent human will outperform a compiler for the foreseeable future. so your statement about compilers is total hand-waving away of facts inconvenient to your argument.

      I stated that the efficiency of the compiler, paired with the speed of the computer, is such that any competent programmer should, on most projects, be able to get performance out of the high-level language more than sufficient to meet the demands of that project. Yes, a human optimizing assembly could make it a little bit faster, but at some point it isn’t worth the time and effort and complexity.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    21. Re:C too complex? Hilarious. by 19thNervousBreakdown · · Score: 4, Insightful

      The vast bulk of your argument is dedicated to defending C, which he never mentioned and only an imbecile would call the core language rules complex.

      C++, which you barely mention, on the other hand, is extremely complex at its core, mostly due to its templating language--which, by the way, is one of the very best features of C++, and although it could be (and will be in C++0x (0x more like 2x amirite)) done better, I think the expressiveness is well worth the complexity. Again, only an imbecile would call C++ simple.

      The real question to ask when somebody chooses to bash C++, however, is "what are you selling?" In this case, he's fairly up-front about it--he's selling Go, Google's pet language. To that, I say, "I'll believe it when I see it." Right now Go is a bunch of "but just look at the groundwork we've laid down! This will be great when it's done!" As the article mentioned, that may be true, but its complexity will approach C++ as its capabilities do. It's just hard to do a lot of stuff well, and for all the complaining, C++ does do a lot of stuff, and it does most of it well, or at least ... eh, pretty good.

      Honestly, look over the C++ challengers: every one I've ever seen that's squarely aimed at taking out other languages is little more than an ego project. I have yet to see a language that actually introduces new capabilities without significant downsides compared to what they're trying to replace, so I'll keep doing what's worked for me the last 10 years I've been a C++ fanboy: wait for something that's actually better to come out. Smugly.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    22. Re:C too complex? Hilarious. by multimediavt · · Score: 1

      C's closeness to the hardware is probably why it has stayed relevant in the era of mobile computing and battery life. Some developers do need to tell the computer every nitty-gritty detail.

      I wholeheartedly agree! I haven't RTFA, but is this guy suggesting that as an alternative we develop a ton of application specific languages and compilers? If so, that's the STUPIDEST thing I have ever heard. The whole beauty of C/C++ is that it is a utilitarian language. Now, I will say that it has diverted from its original Bell Labs intent as being the write once, compile everywhere language, but that's more due to the diversity of hardware that exists today than anything else. I like that there are only a few low(er) level and high level languages to work with, that can grow as you grow as a developer, and can be used on *ALL* platforms. It just makes sense. Sure the compiler may bloat (Who really cares?!?!), but the underlying language remains amazingly capable for decades.

      Of course, this guy could just be an attention whore and made these outlandish statements to get himself in the press, and more press for Google, but dumb, dumb, dumb idea! Also sounds a bit like innovation envy of Bell Labs. Google has yet to contribute anything as amazing given how many "smart" people work there. Hell, they're not even on par with PARC, the main Bell Labs competitor from back in the day. And I don't mean last Tuesday!

    23. Re:C too complex? Hilarious. by Kjella · · Score: 1

      The only sense in which C is "harder" is that it takes more statements - because they tend to do simple things - than a higher level language to do many things. A little writing, a little building your own library... you'll have a nice resource for lists, memory management, graphics, in whatever area(s) your interest(s) lie(s.)

      Then you leave for greener pastures and the next guy has to try to figure out your DIY "standard" library, or maybe he'd rather bring his own and then spends the next few years trying to work out all the wierd incompatibilies and missing features on both sides. Or it turns out we want to merge two code bases built like that and now either there's two libraries or half the code base has to be rewritten. Every time you do stuff that pretty much every application of a certain complexity has to do like implement a list, the DIY approach is wrong. That goes for your DIY memory management and graphics libraries too.

      One of my pet peevees about C and C++ (I prefer C++/Qt which fixes most of my complaints about C++) is that you can't have normal math. Overflow? Underflow? Doesn't exist. But if I multiply two big ints in C or C++ I'll get a negative number. To everyone outside the gritty little details of a CPU that's a huge and irrational WTF. Don't get me wrong, sometimes it's very important to know the exact bit layout and two's complement, but most of the time it's not. Unless it's important I'd just like my application to handle an arbritrarily large number morphing into a int8/16/32/64 or array as needed. You can of course do that with a library, but see above.

      It's nice that you have the flexibility to really write to-the-metal routines when you have to, that's why I don't abandon C++ and use some other high level language. But there's a huge difference between choosing to use the complexity and having the complexity forced upon you. It's not that I can't handle it, but even a surgeon doesn't use a scalpel as bread knife. The tools you mostly want are those that make it easy on the developer, not the computer. Then you write only the performance critical sections with the computer in mind. It tends to be less than 5% of the code of any normal application.

      --
      Live today, because you never know what tomorrow brings
    24. Re:C too complex? Hilarious. by http · · Score: 1

      You can't be serious that you don't know who Rob Pike is, when you're intelligently discussing writing comilers.

      Credits before Google include "The Practice of Programming" (with Brian Kernighan), Plan 9 (the OS, not the WM), and Inferno.

      "The Practice of Programming" successfully shows aspiring and experienced programmers to program even better.

      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    25. Re:C too complex? Hilarious. by clone53421 · · Score: 1

      I did not mean to imply that you should not optimize your code.

      High-level code should be optimized at a high level. The compiler will do a little bit of low-level optimization, and that will almost always be perfectly adequate.In the rare instance where you have to optimize at a lower level, you will have to code in a lower-level language.

      What you described is the result of high-level code that wasn’t optimized at all anywhere in the process from the programmer’s initial concept to the high-level code that was supposed to do that.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    26. Re:C too complex? Hilarious. by Bigjeff5 · · Score: 1, Informative

      He's speaking out against C++, which is hella complicated, not C, which is pretty simple to work with (even though what you have to do being so close to hardware can be complicated).

      There is a big difference between the two - mainly C++ is an ultra-extended, tricked to the nines version of C.

      This means you deal with all of the low level stuff that C deals with, but you've got all sorts of other shit to remember on top of it.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    27. Re:C too complex? Hilarious. by xmorg · · Score: 1

      Yea, he said "people were frustrated with C", probably people trying to do stuff with char * without using malloc and wondering why it crashed in some IDE's.

    28. Re:C too complex? Hilarious. by Bigjeff5 · · Score: 1

      You got modded flamebait because you dared question the less is more crowd that wants higher level languages that do
      most of the lower level work for them.

      It's funny then that most of the comments are also pro-C, anti-C++, because C is simple and C++ is not.

      It would seem to put a huge wrinkle in your premise.

      Perhaps the reason they don't like C++ and Java is because they are ridiculously complex, not because they are lower level languages. You can't get lower level than C without hitting Assembly, and C is easy, so...

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    29. Re:C too complex? Hilarious. by Klinky · · Score: 4, Informative

      You know, nothing pisses me off more than people responding to a post saying only "THIS". Please, keep it to yourself if that's all you can contribute. I feel bad for thewasted bandwidth and computing power that was exhausted on that little brain fart of a post.

    30. Re:C too complex? Hilarious. by OeLeWaPpErKe · · Score: 1

      Nevertheless C could do with some relatively trivial extensions. First class functions, lambdas given that C has function pointers, are trivial to implement. Why not do it ? "linkedlist.sort( { a, b -> a.phoneNumber b.phoneNumber } );" would rock.

      And I've always wondered about the preprocessor. Let's face it, #include is such an ugly abomination that the C books should be fitted with an FBI warning, some sort of module system would be a very nice addition.

      And on the subject of #include. It's a great idea to have macros in a language, but C is in reality 2 languages : preprocessor and C. Can't we do it with one language (like lisp does, but surely more complex languages can do the same). I have dreams of structures that get statically constructed (like in assembly) and then added to at runtime by basically the same code. "struct linkedList fib = { 0, 1 };" should result in the buildup of ... a linked list at compile time.

      Or look at it more complex. Say you have some struct declaration. Why not have a full macro language ? Say you could have a struct, like any other, and then generate a function "char * (*structToJson) (t) structToJsonGenerator(type t)". Given how "easily readable" that function pointer declaration is, perhaps some form of type inference (other than void *) would be great.

      I've always wondered why compilers find it such a great idea to make type information available to the program at runtime, and yet no-one has a decent (compiled) language that really makes types available to the program at compile time.

      And the thing everyone loves about C++ would be a great addition to C as well : struct constructors and destructors. Surely that can't be that hard to implement.

      Furthermore C really needs some sort of javadoc function ... Anything, just as long as it gets accepted upstream. Something that could generate anything from manpages to html indices.

      I've had a compiler construction course, and one thing that I wondered about is that type inference and a few other tricks can make nearly all of a language like python available in something that can be compiled down directly to machine code, except perhaps eval(string_I_just_received_from_a_really_nice_chinese_ip_address). Even things like __getattr__ are perfectly translateable to a switch statement, as long as you don't allow runtime expansion of class definitions (but compile time class expansion ... go wild).

      Even python's "yield" is not that hard to implement

    31. Re:C too complex? Hilarious. by sjames · · Score: 4, Insightful

      C is very much a relevant language with a strong niche for modern use. It's very good at what it does. It is a mid-level language and it shines at that sort of use.

      Note that he was complaining specifically about C++, not C. It's not even necessarily the language itself, but the patterns and APIs that are inspired by the language that matter.

      When you need a higher level language than C, C++ is NOT a great answer. It's a series of bolt-ons for C that try to make it something it is not.

      Meanwhile, java started out badly with silly marketing claims that it never quite lived up to, still manages to perform poorly in practice and has been dogpiled with a bunch of alphabet soup such that if there is a lean and mean language in there somewhere, we'll never find it./

      So it's not at all C that is too complex, it's those horrific messes we call programs written in C++ that are too complex.

    32. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0, Flamebait

      fyngyrs shows not even enough respect to RTFA before trashing one of the best programmers alive. He could code circles around you dude. you know K&R? he works with K. he's written books with K. You're no Pike nor Kernigan so STFU already you pretentious twat. Your userID isn't even below 100,000 - noob.

    33. Re:C too complex? Hilarious. by Foofoobar · · Score: 4, Funny

      Also, if you used to do Perl, you might like Ruby...

      Yes and if you like Jesus, you also might like Jim Jones or Charles Manson. Push your cult elesewhere!

      --
      This is my sig. There are many like it but this one is mine.
    34. Re:C too complex? Hilarious. by ducomputergeek · · Score: 3, Funny

      But you can do anything in perl. Problem is you can do anything in perl (doesn't mean you should.)

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
    35. Re:C too complex? Hilarious. by Surt · · Score: 1

      and compiler researchers concede that a competent human will outperform a compiler for the foreseeable future. so your statement about compilers is total hand-waving away of facts inconvenient to your argument.

      Define competent and compiler researchers for that claim. Most compiler researchers I know think the compiler passed the capabilities of basically all human programmers a long time ago. The compiler can evaluate combinatorial options of instruction ordering for efficiency that are comfortably out of reach of the best brains in the business.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    36. Re:C too complex? Hilarious. by keeboo · · Score: 1

      Take a look at the programming language shootout. The C programs usually win the contest, but they do it by doing crazy things like looking up the cache size of the CPU and implementing their own version of malloc to fit a page size. The run of the mill C program is not like that.

      For many or even most tasks stability and security is more important. Other languages provide those properties better than C.

      That's an exaggeration, there's no need to check cache/page sizes in order to implement C code aware of such limitations. The good thing is that you can do that, and pretty much everything, if you need to.

      About "cool features" that C does not have, frankly, many times it's more an issue of modularizing your code than the language saving your ass.
      How many times I see spaghetti code written in a high-level language and the oh-so-cool-features did not help preventing that. Instead we get bad and mammoth-heavy code.
      Even the best language cannot save a bad programmer.

    37. Re:C too complex? Hilarious. by Com2Kid · · Score: 1

      and yet no-one has a decent (compiled) language that really makes types available to the program at compile time.

      C++ has RTTI, but it is frequently (often?) disabled.

      The thing is, once you have a system running around maintaining type data on all your objects in memory, you are halfway to having a virtual machine (and the associated performance hit) anyway, so why not just finish it off and implement a full virtual machine?

      Reflection is such a perf hit either you want it or you don't, and if reflection is REALLY vital to your code, you mine as well run on a fully featured VM, the rest of the VM isn't going to weigh you down too much more.

    38. Re:C too complex? Hilarious. by DerPflanz · · Score: 2, Insightful

      With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization.

      And that is why we have a shitload of very crappy software nowadays. Why does a printer driver needs 110MB of hard disk space? Why does a browser (yes, that's you Firefox) need 20-30 seconds to start up? Because the developers are raised with the notion that they do not need to optimize for speed or size. I, for one, would more than welcome a generation of developers that know what they are doing and think of computer-time instead of developer-time. Especially in often-run applications. And even more especially in web-apps, which are notoriously badly designed and written.

      --
      -- The Internet is a too slow way of doing things, you'd never do without it.
    39. Re:C too complex? Hilarious. by yyxx · · Score: 2, Informative

      And what do you tthink would the difference between "an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp" and an actual CommonLisp implementation be?

    40. Re:C too complex? Hilarious. by enjerth · · Score: 1

      umm... did you miss the part where the guy also bitched that interpreted languages are "too slow"?

      so which is it? where on this stone are you going to squeeze the blood from? it's a tradeoff and the menu of available programming language choices is already comprehensive.

      That's kind of what I was thinking. As the old saying goes, you can pick any two things:

      Fast.
      Accurate.
      Cheap.

    41. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      when did we stop spelling the word people?

    42. Re:C too complex? Hilarious. by rolfeb · · Score: 1

      Of course, this guy could just be an attention whore and made these outlandish statements to get himself in the press, and more press for Google, but dumb, dumb, dumb idea! Also sounds a bit like innovation envy of Bell Labs. [...]

      I'd like to think you really did RTFA, and that is an attempt at a troll...

    43. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Mod Parent UP!

    44. Re:C too complex? Hilarious. by luis_a_espinal · · Score: 1

      You got modded flamebait because you dared question the less is more crowd that wants higher level languages that do most of the lower level work for them.

      The ppl that coded closer to the metal as you say mostly have grey hair now, and are looked at as legacy coders by the new breed that want all that lower level coding done for them by the language.

      As for it being complex, sure it is complex for most ppl, but for a college trained Comp Sci. major it should be bread and butter and tools of the trade.

      Ppl have declared we are giving a dumbed down education and I think this is a fair indicator of it.

      Unfortunately, this is not the case. Those being trained in CS now get pampered with Java, never seeing a pointer until probably when they take their OS class (if they are lucky.) As a Computer Scientist and Software Engineer, I'm saddened to say I trust more a Computer Engineer or Electrical Engineer to know/use C/C++ better than a Computer Scientist nowadays.

    45. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      So... Common Lisp has twice the amount of bugs and is twice as slow. I'll keep that in mind. Thanks for the heads up, bro.

    46. Re:C too complex? Hilarious. by Rockoon · · Score: 1

      One of C's great advantages is not only that it is simple and very fast, it is also very close to the hardware -- when you make local variables, structures, assignments, etc... you have a good idea what the compiler needs to do. Likewise control structures, statements and so on.

      Since when did 'very close to the hardware' mean 'familiar enough with both the architecture and the compiler to predict what the compiler needs to do for a given source code'

      C is only "close to the hardware" in that (A) it has pointers, and (B) its compilers can produce binaries that require no external dependencies other than that execution begins

      Those qualities are not unique to C.

      You've got pointers, so a good command of memory allocation issues on unpaged architectures... thats really it.

      Find some other bragging point. One thats true. Like "C's abstract machine is basic enough to construct an OS that can manage memory for guest programs, as long as treating memory as flat is good enough for the architecture." .. you know, the actual reason C was created.

      C is a high level language folks. Its not low level, or even mid level. You are programming for an abstract machine that has little to do with anything low level.

      --
      "His name was James Damore."
    47. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 1

      We need a close-to-machine language, and C delivers that, but it's not a perfect language otherwise. It's got horrible declarator syntax, the whole mess with #include files, no namespacing, numerous implicit conversions that can lose data (e.g. double -> int) or break things altogether (did you know that -1 * 1u == UINT_MAX?). Modula-2 was a far better fit, and its only flaw compared to C was that it was too late to the party.

      Still, C is "good enough", which is why it's probably here to stay for a looong time.

    48. Re:C too complex? Hilarious. by clone53421 · · Score: 1

      No... people thinking that the speed is the substitute for writing code in an intelligent way is the cause of those things. Optimizing at a high level is absolutely necessary. Dropping down to a low-level language to gain a few more fractions of a percent in efficiency is usually not.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    49. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 2, Informative

      C++ has RTTI, but it is frequently (often?) disabled.

      RTTI is actually not disabled all that often, since doing so typically also kills dynamic_cast, and that can be very useful at time.

      But then C++ "RTTI" is a misnomer. I mean, it only lets you inspect the name of the type, and even then the precise content of that string is implementation-defined, so you're only guaranteed that it's unique among all types! There's no member reflection whatsoever, and you can't create a new instance from a type_info.

      The thing is, once you have a system running around maintaining type data on all your objects in memory, you are halfway to having a virtual machine

      No, not really. You only have a bunch of static arrays filled with data. It is completely orthogonal to the idea of VM.

      By the way, have you noticed how many C++ frameworks roll out their own RTTI using macros or preprocessors?

      Reflection is such a perf hit either you want it or you don't, and if reflection is REALLY vital to your code, you mine as well run on a fully featured VM, the rest of the VM isn't going to weigh you down too much more.

      There are very few cases where reflection is used all the time, even in a VM-based platform such as Java or .NET. More often than not, it's used once to initialize some complex object graph in a generic way (e.g. read window layout from XML), and after that you're back to good old statically typed code.

      Another case is not really run-time - rather, it's the ability of some visual designer (or other tool) to list types in the assembly, their members etc, so that it can show those neat property grids, or generate code, based on that information. COM has that kind of thing - type libraries - which are completely useless at runtime (unless a specific object implements IDispatch for dynamic invokes), but are used a lot at design-time.

    50. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 0

      so which is it? where on this stone are you going to squeeze the blood from? it's a tradeoff and the menu of available programming language choices is already comprehensive.

      The menu of available languages was always overabundant. But the menu of mainstream languages, for which good tools, support, and wide pool of programmers are available, is depressingly short.

      And I think the real problem is that this menu has essentially gotten split into two parts, which keep getting further and further away from each other, with no good middle point. On one side we have the entirely low-level and generally quirky C, complemented by expressive but oh-so-messy C++. On the other side, we have statically typed, GC'd, usually VM-driven languages such as D, Java or C#, and also dynamically typed stuff such as Python or JS. Notice what's missing here?

      Something that compiles to native code and does not require a GC for fundamental stuff (such as strings), but is also somewhat higher-level than C -e.g. exposes strings as a properly supported fundamental type, has richer type system, has some way to generalize functions and types, and so on. Back in 80s-90s and in DOS/Windows land, that was Pascal and Delphi (it didn't have everything I listed, but then the bar was lower back in the day) - it had its share of flaws, such as overly verbose syntax, but that could be forgiven or improved. And now Delphi has pretty much dwindled to irrelevance (yes, I know Delphi 2010 was released not so long ago - I'm sure that all 3 people who still use it were rejoiced), and we don't have any replacement.

    51. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      You do know who Rob Pike is. Right? If you showed him the door, your boss will probably show you the door too :)

    52. Re:C too complex? Hilarious. by I'm+Not+There+(1956) · · Score: 1

      You seem confused. He said C++ is complex, not C, and he is entirely right.

      Yes. Actually, Pike loves C. He has written a C compiler for Plan 9. The language he co-designed was C-like. And I don't remember the source, but I once read that he writes object-oriented in C, using structures and pointers!

      --
      "If fifty million people say a foolish thing, it's still a foolish thing."
    53. Re:C too complex? Hilarious. by sethanon · · Score: 1

      The computer is fast enough and powerful enough to do what you want it to do

      Which computer is fast enough? What do you want it to do?

      We aren't all developing desktop widgets and web apps. Some of us are producing washing machines, anti-lock braking systems or medical implants. We have microcontrollers with a few kb of memory and we really, really care what the hardware is doing.

      The point is that we need different tools for different jobs. Personally I think that learning with these languages gives you a better understanding of what is going on. Teaching them in schools certainly saves us from teaching new hires from scratch and hoping that they can get they get their heads around the concepts.

    54. Re:C too complex? Hilarious. by BitZtream · · Score: 0, Troll

      Your inability to include the O and the Es in people is probably another indication of our lowering levels of education.

      Really? It takes me longer to type and read this kind of short hand than if you just typed it all out.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    55. Re:C too complex? Hilarious. by phliar · · Score: 1

      There I was reading your message and agreeing with everything until

      ... what, was he hired by Google as a janitor?

      This is not some random google engineer, this is Rob Pike . You should pay attention.

      --
      Unlimited growth == Cancer.
    56. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 1

      I find it very ironic that the guy is complaining about the complexity of C++, while his most recently designed, brand new spanking language that's supposed to be different, still has that weird notion that 0123 is not the same number as 123. You'd think it would be one of the things that top any list of "how we can make this better than C".

    57. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      THIS

    58. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      THIS!!!111!

    59. Re:C too complex? Hilarious. by Khyber · · Score: 1

      "With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization"

      With the speed and power of today's computers we should have 1.4MB operating systems that can procedurally generate the drivers they need for the installed hardware, plus be internet-ready.

      But instead, we use more power to introduce more bloat, and the speed gain is 100% unnoticable.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    60. Re:C too complex? Hilarious. by daniel_mcl · · Score: 1

      Umm, you realize this is *Rob Pike* you're talking about, right? One of the original developers of UNIX? I'm guessing that, what with working at Bell Labs while they were *inventing* C, he might know a little more about the language than you do.

      --
      I used to read Caltizzle. I was a lot cooler than you.
    61. Re:C too complex? Hilarious. by Just+Some+Guy · · Score: 1

      One of C's great advantages is not only that it is simple and very fast

      You misspelled slow.

      Yeah, you read that right.

      C is slow, and getting slower by the hardware generation. In C, you have to spell out every trivial detail and can't just say "do this however it works out the fastest". Contrast with a language like Lisp, or more recently Erlang, where you can write code like "do this operation to every value in this set" and let the compiler (or virtual machine) figure out how to best implement that on the hardware (or cluster of hardware) that the program's running on. If you write a C snippet like:

      for(i = 0; i < 1000000000; i++) { dosomething(i); }

      then a compiler 10 years from now will spit out basically the same code as a compiler today, except that it might do some tricky things to the implementation of dosomething(). It has no way of knowing whether each of those calls has to be in sequence or if they can be executed in parallel and so it has to emit opcodes that are basically machine language equivalents to each line you've written.

      Write the same code against the equivalent of MapReduce, and maybe in 10 years your loop will farm out the billion subprocesses to a cloud so that they run in parallel and finish in the same amount of time it takes for a single call to dosomething() to complete - all without recompiling.

      Yes, C is slow, and that's not likely to go away. You can do multithreaded or multiprocessing code in C, of course! But I'd much rather spend my time getting dosomething() written and letting the language runtime figure out how best to execute it on the resources I have available.

      Oh, and your argument against its complexity is just bizarre. By those standards, assembler is much simpler than C - each opcode only does one tiny, well-defined thing! I won't be writing a web browser in ASM any time soon though, even if I have the experience to do so if I had to.

      --
      Dewey, what part of this looks like authorities should be involved?
    62. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Some developers do need to tell the computer every nitty-gritty detail.

      And 99.9999% of them do not.

    63. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      One is written for you?

    64. Re:C too complex? Hilarious. by hajus · · Score: 1

      Mod parent up. The article is about the guy saying C++ is complicated, not C. There is a world of a difference.

    65. Re:C too complex? Hilarious. by Draek · · Score: 1

      Some. Not all, not most, and most certainly not people who are just starting to learn how to program.

      --
      No problem is insoluble in all conceivable circumstances.
    66. Re:C too complex? Hilarious. by TangoMargarine · · Score: 1

      So what does it even mean? Is it shorthand for "Mod THIS up"? It's not exactly the kind of thing you can plug into a search engine...

      --
      Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
    67. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      return *this

    68. Re:C too complex? Hilarious. by cgenman · · Score: 1

      Sometimes the project manager gives you a week to code something that would take 3 weeks to code properly in C, and 2 weeks to code properly in Java. The Java implementation, while still fundamentally broken, will be significantly less broken in the overall foreshortened schedule. Perl does a heck of a lot for you, and does it kind of slowly. Why? Because Perl is a great language for job-specific write-once-and-be-done-with-it applications. Or situations where the application isn't the bottleneck in getting more data through. Sometimes (mostly, I'm guessing) in the real world the optimization point is for development budget, rather than processor budget.

      Also, I remember back in the day when the grey-in-the-hair people were complaining that comp-sci students were coming out and weren't coding entirely in assembly. They were learning easy languages like C! And Pascal! And... well, that was mostly it. Quite frankly, there were just fewer programming languages out then. Now, to be reasonably grounded, people need to know C, C++, Java, C#, Perl, PHP, and not-quite-languages like Javascript, Actionscript, and CSS. But back in the day, you could even get a degree without any assembly! The shame that these lazy C coders brought to the world. The shame.

      Sorry, but 99% of programming is plumbing. Get a bank's financial projections moved around a network correctly. Extend an intranet to include temp who don't have default access. Most of the time you want to guarantee that things went from point A to point B, got there correctly, and didn't get attacked along the way. If your code is too slow, take it off fileshare / Outlook / intranet server, and give it hardware. Not breaking and being implemented quickly in a lot of ways is more important than running quickly. You can throw another processor at a problem for a few hundred dollars, which would speed up the implementation more than a few hundred dollars (one more day) of a coder's time. And sure you shouldn't rely upon garbage collection. But I've seen co-workers spend months chasing that elusive memory leak. Or that pointer going towards the wrong address. Or the buffer overflow crash when things happened simultaneously. And you know what? That didn't make the code any better. I'm a game developer, and we try to eeek out every last bit of power from code as possible. But in the grand scheme of things, running 30% slower due to a higher-level language would have been a great tradeoff for the ridiculous amount of time lost to things which modern languages do automatically. Again, compared to a good group of coders, hardware is nearly free.

    69. Re:C too complex? Hilarious. by AuMatar · · Score: 1

      In 10 years of professional programming, I don't think I've ever seen RTTI not disabled. Its little to no gain for a high cost. As for the X_cast functions- no point to them. If I want to cast, I'll just use (type). If I'm explicitly casting, I know that I want it cast and I don't want it to throw an exception. Why would I cast something that isn't a valid cast?

      --
      I still have more fans than freaks. WTF is wrong with you people?
    70. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 1

      In 10 years of professional programming, I don't think I've ever seen RTTI not disabled. Its little to no gain for a high cost.

      What cost, apart from binary size? And why do you really care about the latter?

      (or are you doing embedded?)

      As for the X_cast functions- no point to them. If I want to cast, I'll just use (type).

      (type) is evil for many ways. It can accidentally strip away const, which leads to undefined behavior if the original value was inherently const, or at least breaks invariants. It lets you upcast to a private or protected base class, without any warnings. Finally, it's interpreted as either static_cast or as reinterpret_cast (which can mean very different things, depending on the circumstances), and the rules for deciding which one it actually corresponds to are convoluted.

      If I'm explicitly casting, I know that I want it cast and I don't want it to throw an exception.

      Even if you know exactly where you want to cast, and you know the cast is going to succeed, you still can't downcast from virtual base to derived using anything but dynamic_cast (not even C-style cast will work; well, it will compile, but it'll actually mean reinterpret_cast, which will obviously break at runtime).

      Nor can you cross-cast (from one derived through base to another derived), though that scenario is very rare in practice.

      Why would I cast something that isn't a valid cast?

      You might be using classes as interfaces - for other classes to "implement" to indicate that they support a specific behavior. Some other code may generally work on all kinds of objects, but may be able to do something in a more optimal way if it can determine that the object supports certain operations. It can use a pointer dynamic_cast to check if the object implements a given "interface", and switch to a more efficient implementation if that is the case.

      Or you might just make a mistake when downcasting. With a C-style cast or static_cast, you get a pointer which is invalid from language perspective, but likely points to valid (though meaningless) data, so dereferencing it won't trigger a segfault. If you don't invoke any virtual members of derived class, it will probably just keep working, providing garbage values for derived class fields, throwing the rest of the code in disarray. Eventually it will crash or otherwise fail, but that can happen a long time after the place where the invalid cast happened. With dynamic_cast, if you make a mistake, the process fails right there and then, with reason crystal clear.

    71. Re:C too complex? Hilarious. by strikethree · · Score: 2, Insightful

      "You don't want to tell the computer every nitty-gritty detail. The computer is fast enough and powerful enough to do what you want it to do without you needing to exercise that level of control over how it actually does it."

      No! No no no! Stop it! It is thinking like that which has caused my dual 2.66ghz processor to provide a less responsive interface than my 7mhz Amiga provided! Really. Seriously. STOP THINKING THAT FASTER HARDWARE RELEASES YOU FROM THE RESPONSIBILITY OF WRITING EFFICIENT CODE. Really. Just stop.

      Sincerely,
      The rest of the world who actually has to use your programs

      --
      "Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
    72. Re:C too complex? Hilarious. by hughbar · · Score: 1

      That's the beauty of it, anyway if you don't want to code, I'm sure there's Do::Anything somewhere on CPAN, to my mind still a 'killer' reason for Perl.

      --
      On y va, qui mal y pense!
    73. Re:C too complex? Hilarious. by freakhill · · Score: 2, Funny

      THIS!

    74. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Speaking of dumbed down education, ppl should learn how to spell... fuuucccckkkk...

    75. Re:C too complex? Hilarious. by ta+bu+shi+da+yu · · Score: 1

      No, he's not. He's advocating yet another programming language to resolve all the possible ills of programmers. Soon enough someone will point out it is too complicated.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    76. Re:C too complex? Hilarious. by vipw · · Score: 1

      But the difference in execution performance between high and low level languages isn't fractions of a percent. It's usually in the range of 500% to 10000% slower. [http://shootout.alioth.debian.org/u64q/code-used-time-used-shapes.php]

    77. Re:C too complex? Hilarious. by h4rm0ny · · Score: 1


      Question (not argument): How would one procedurally generate drivers? Is this humour, hyperbole, or are you actually talking about a valid principle?

      --

      Aide-toi, le Ciel t'aidera - Jeanne D'Arc.
    78. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      GPP didn't say C/C++ was too hard. I read it as "C/C++ makes me waste time".

    79. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      You got modded flamebait because you dared question the less is more crowd that wants higher level languages that do
      most of the lower level work for them.

      The ppl that coded closer to the metal as you say mostly have grey hair now, and are looked at as legacy coders
      by the new breed that want all that lower level coding done for them by the language.

      As for it being complex, sure it is complex for most ppl, but for a college trained Comp Sci. major it should
      be bread and butter and tools of the trade.

      Ppl have declared we are giving a dumbed down education and I think this is a fair indicator of it.

      Why do you think there has not been any significant progress in programming languages in the last 25 years?

    80. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      I assume what you mean by stability is reliability. Far too many young programmers are overly concerned with efficiency. Let me put it another way, a program that generates correct results albeit slowly may still be quite useful while a program that gives incorrect results is useless and may even be dangerous.

    81. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      From Wierd Al:

      "Posting 'me too' like some brain-dead AOL'r, I should do the world a favor and cap you like Old Yeller. You're just about as useless as jpegs to Hellen Keller."

    82. Re:C too complex? Hilarious. by kjhambrick · · Score: 1

      > That whole too complex thing... what, was he hired by Google as a janitor? Or a janitor's helper? Seriously, too complex? For whom? Is he trying to teach a German Shepherd to program? Twit. If you came to my company for a job, and you told me C was "too complex" or "too hard", I'd just show you the door.

      Hmmm fyngyrz ...

      How can an advocate of the C-Programming Language not know who Rob Pike is ?

      http://en.wikipedia.org/wiki/Rob_Pike/

    83. Re:C too complex? Hilarious. by smallfries · · Score: 1

      and compiler researchers concede that a competent human will outperform a compiler for the foreseeable future.

      That's a bold claim without anything to substantiate it.

      Which compiler researchers believe that a competent human will outperform a compiler?

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    84. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      good point, and nicely made.

      enjoy your sense of superiority, it's almost certainly a concomitant of your low self-esteem, which will surely hold you back in your personal and professional growth. have fun!

    85. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      This is because you had the chance not to see a C++ application written by incompetent engineers. Believe me, this is not pretty *at all*. This of something like 25 incompetents with high turnover over the course of 10 years. 250 man years of incompetence compacted in a few millions lines of code...

    86. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Also, if you used to do Perl, you might like Ruby.

      And do her?

    87. Re:C too complex? Hilarious. by fbjon · · Score: 1

      Nothing requires the full complexity of C++.

      --
      True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
    88. Re:C too complex? Hilarious. by Khyber · · Score: 1

      Procedural generation of any sort of information is possible, as long as there is a set of standards.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    89. Re:C too complex? Hilarious. by Phroggy · · Score: 1

      #!/usr/bin/perl
      for $a(1,46){for $b(0..7){$c=0;$_?hex substr(q), "ef7fa1866706ca",
      Just another Perl Hacker, ("eff02289402844"),2*$_+$a,2)&2**(7-$b):
      $_["phroggy"] and $c+=2**(7-$_)for(0..7);$d.=chr $c;}}print"$d\n";

      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
    90. Re:C too complex? Hilarious. by maxwell+demon · · Score: 1

      In 10 years of professional programming, I don't think I've ever seen RTTI not disabled. Its little to no gain for a high cost. As for the X_cast functions- no point to them. If I want to cast, I'll just use (type). If I'm explicitly casting, I know that I want it cast and I don't want it to throw an exception. Why would I cast something that isn't a valid cast?

      Sure, and you never make mistakes. Being less error-prone is the primary reason those *_casts exist.
      And those *_cast functions which are substitutes for C style casts don't throw exceptions. They behave exactly like the corresponding C style casts, except that they don't compile if the type of cast isn't possible (unlike C style casts, which silently switch to the meaning of reinterpret_cast).

      However, dynamic_cast (the only one which depends on RTTI) is different in that it does something you cannot do with C style casts. Now, it's also something you seldom want to do, but in those rare cases where you want it, it's really the best tool for the job. (And BTW, even dynamic_cast doesn't throw exceptions if you use it with pointers; only the reference version throws, as there's nothing meaningful it could do in that case; note that reference dynamic_casts are easily avoided by just using the address-of operator and doing a pointer dynamic_cast).

      But for the high cost: As long as you don't actually use it, the only cost is a few extra static tables, which most likely won't even be loaded into memory unless used. So unless you are programming embedded systems, I don't see any value in disabling RTTI.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    91. Re:C too complex? Hilarious. by Bungie · · Score: 1

      If you wanted the best performance for your new computer you should install MS-DOS. Naturally MS-DOS is somewhat lacking in features as you probably want to use things like multitasking, protected memory, a TCP/IP stack etc on your new computer.

      My point is that computers are expected to do a lot more things and there is more abstraction between the software and the bare metal. MS-DOS was fast but programs had to do everything themselves. For example, to draw a line on the screen you would have to manually query the video adapter and determine how to write to it's memory so it does what you want. On modern systems there's usually a display driver and an API (like GDI) which separate the programmer from the hardware. The program can draw a line without knowing anything about the specific hardware or VESA screen modes.

      --
      The clash of honour calls, to stand when others fall.
    92. Re:C too complex? Hilarious. by clone53421 · · Score: 1

      For certain things. If you’re doing it millions of times in a loop, it might be worth it to drop down to assembly language.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    93. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      If my Pentium 166 with 64MB of RAM could run Windows XP and Visual Studio .NET then the small optimizations between C and C++ are not even relevant on the significantly higher powered 800Mhz/256MB systems you're talking about.

      When you have like a 20Mhz m68K CPU and less than 4MB of RAM on a device, then you may actually have to consider optimizations like that. My cell phone is by no means a powerful device but I doubt LG hand tunes the tip calculator in C and assembler for optimal performance.

    94. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Using C can be hard, because you have to do nearly everything by yourself (unless you use an external library, but that's cheating). But I don't think you can say it is really complex. C has a simple syntax, few keywords, and a not so big standard library.

      Doing a lot of things in Java can be easy, but the complete Java language and libraries are really complex, with a lot of concepts you would not even dream of having in C (closures in C? Are you drunk?). And what Java gives you 'for free' sometimes gives you trouble when doesn't work as expected or is too slow.

      It depends of the way, and what for you use it. Making a good driver in pure Java must be a pain, making a good enterprise database in C must be a pain, too.

    95. Re:C too complex? Hilarious. by Gazzonyx · · Score: 1

      LOGO?

      --

      If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.

    96. Re:C too complex? Hilarious. by ewanm89 · · Score: 1

      I suggest the Linux kernel based and coreutils. It actually includes the basic features one would need and is very fast (I'm not talking ubuntu here ;)).

    97. Re:C too complex? Hilarious. by Bungie · · Score: 1

      That's because Nero and Roxio no longer try to market a streamlined product for burning buffs. Most of the people burning things these days have no clue about how it works and expect the burning software to do more than burn a disc. For example, burning a DIVX movie they downloaded to a disc they can play in their DVD player. They drag the movie onto the project in Nero and expect it to figure out the details, like converting the video/audio, settting up the disc layout and burning an SVCD disc. Roxio takes this a step further by monitoring and popping up the instant you put in a disc and attempting to figure out what you want to do with it.

      Half of the tools that come with the full Nero package are things like a media center, media sharing server, photo manager, sound/video editor and numerous other apps that have nothing to do with burning a disc.

      Tools like MagicISO or PowerISO have become the tools for people who just want to burn discs and work with image files. Nero and Roxio have become some sort of massive media suites that also happen to burn discs.

      --
      The clash of honour calls, to stand when others fall.
    98. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Dropping down to a low level language doesn't automatically make it faster though.

      Your compiler should figure out a way to optimize the loop, and it often will find surprising ways that you don't always think of. Some thing you think is faster may stall the pipeline or may have a less expensive alternative. The people writing the compiler have been tuning it for a long time and are usually aware of those kinds of issues.

    99. Re:C too complex? Hilarious. by Abcd1234 · · Score: 1

      Oh please, talk about bullshit. C++ isn't "hard", it's just needlessly complex. For contrast, Haskell is hard, but that difficulty comes with impressive power. C++ is just ridiculously convoluted due to its designed-by-committee pedigree.

      But, hey, if programming in C++ boosts your little ego, more power to you. Me, I have more interesting things to do...

    100. Re:C too complex? Hilarious. by twebb72 · · Score: 0

      I agree with you wholly, but you seem too harsh on higher level languages. I believe you CAN be efficient as a programmer and also write efficient managed code. However I've also seen a developer write LINQ statements where a simple switch/case would work just fine (with a 100000x speed increase).

      I've had jobs using C, C++, VB.NET, C#. I can tell you that in any language you can be inefficient, its just harder to write inefficient unmanaged code because you don't have as many tools available at your disposal. Often times efficient code in C# or VB means writing more lines (see my example above).

    101. Re:C too complex? Hilarious. by twebb72 · · Score: 0

      Where do you work? 'Cause I find incompetence everywhere.

    102. Re:C too complex? Hilarious. by Pseudonym · · Score: 1

      In 10 years of professional programming, I don't think I've ever seen RTTI not disabled.

      The usual place you'd see this is where memory is tight. OS kernels (e.g. L4/Fiasco) and firmware are the only cases I've seen.

      As for the X_cast functions- no point to them. If I want to cast, I'll just use (type).

      I agree with you about dynamic_cast. If you ever find yourself needing this, chances are you probably need a real meta-object protocol.

      But if you never use static_cast and const_cast, I hope I never have to maintain your code, because you are being discourteous to the next maintainer who is losing valuable information about what you intended by this cast.

      I rarely use C-style casts. The compiler never checks them properly.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    103. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      You know, nothing pisses me off more than people responding to a post saying only "THIS". Please, keep it to yourself if that's all you can contribute. I feel bad for thewasted bandwidth and computing power that was exhausted on that little brain fart of a post.

      THIS

    104. Re:C too complex? Hilarious. by Argon · · Score: 1

      > hmm... did you miss the part where the guy also bitched that interpreted languages are "too slow"?

      You know "the guy", happens to be Rob Pike, _the_ Rob Pike, co-author of the "Unix Programming Environment" classic? Also the "Practice of Programming" book and the co-creator of UTF-8. He also wrote one of the first C style guides: http://www.lysator.liu.se/c/pikestyle.html. I'd say he knows a thing or two about programming languages; especially C.

    105. Re:C too complex? Hilarious. by 21mhz · · Score: 1

      RTTI cannot be implemented properly and fast across shared libraries due to poorly through out instantiation semantics of C++.

      Also, most of the time, the need to use runtime type identification indicates bad software design. Grow some API-specific virtual methods that you really miss, so that you have to replace them with dynamic type checks.

      --
      My exception safety is -fno-exceptions.
    106. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      You rephrased a Morris' corollary.

    107. Re:C too complex? Hilarious. by shutdown+-p+now · · Score: 1

      RTTI cannot [gnu.org] be implemented properly and fast across shared libraries due to poorly through out instantiation semantics of C++.

      The flaw is rather in that type_info is required be the same object (i.e. have the same address) for the same type, by the spec - that is hard to do over shared library boundaries. However, you don't have to rely on this - there's operator== defined on type_info, and you're supposed to use that.

      Now GCC's flaw is that it uses address in its implementation of operator==, in the name of performance. Thanks for pointing out that, in doing so, they actually broke a major part of C++ (not just type_info, but also dynamic_cast). The irony is that now people won't use it at all, because "fast but not working" is less useful than "slow but working".

      MSVC++, on the other hand, handles that just fine, because it bases type equality on string comparison. Yeah, that is slower, but it actually works the way it should - and for those few cases where you actually need it, it's still plenty fast.

      Also, most of the time, the need to use runtime type identification indicates bad software design.

      Go tell that to people writing C# and Java libraries. They don't use it that much, but they do use it, and sometimes it leads to surprisingly concise code.

      Grow some API-specific virtual methods that you really miss, so that you have to replace them with dynamic type checks.

      This is equivalent to saying "roll your own RTTI based on virtual methods". Which can be done, of course, but it's a hack, not a good design practice.

    108. Re:C too complex? Hilarious. by 21mhz · · Score: 1

      I rather meant using methods doing what you really meant to get by using RTTI. Like, "does the object provide functionality X" instead of "is the object an instance of X". But yes, sometimes it's quicker and simpler to check just that.

      --
      My exception safety is -fno-exceptions.
    109. Re:C too complex? Hilarious. by 21mhz · · Score: 1

      Right now Go is a bunch of "but just look at the groundwork we've laid down! This will be great when it's done!" As the article mentioned, that may be true, but its complexity will approach C++ as its capabilities do.

      It shouldn't have to. It needs to provide a robust set of features needed to implement reasonably complex projects, and resist the other cruft that gets in the way. Heck, garbage collection is already a huge win over C++: it means, for example, that exceptions can be implemented without exposing the developers to a whole layer of artificial complexity that C++ people call "exception safety".

      Last, some entertainment for a self-proclaimed C++ fanboy: can you tell how many different functions can the following C++ code call:

      {
              const int v = 0;
              f(1);
              f(v);
      }

      --
      My exception safety is -fno-exceptions.
    110. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      Wow. Seems I hurt a lot of feelings. boo hoo

    111. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      ME TOO!

    112. Re:C too complex? Hilarious. by lsatenstein · · Score: 1

      In a banking environment, at 60-80 transactions a second, C++ would increase response time by 5 milliseconds per. When you add up the delays, a person standing in line at an ATM or a cashier in a branch will experice up to 15 seconds of delay. In an ATM lineup, the 7th person in the queue is assured to wait an extra minute or two. So, to keep customers, banks would have to add more atms, and more horsepower.

      --
      Leslie Satenstein Montreal Quebec Canada
    113. Re:C too complex? Hilarious. by Spewns · · Score: 1

      That’s exactly the point... it’s too close to the hardware. Yes, it gives you really fine-grained control over what happens, and you can tweak it to make it as fast as possible. With the speed of today’s computers, though, you shouldn’t (usually) need that amount of optimization. Plus, the compiler should be robust enough to optimize the program nearly as well as you could anyway.

      The more I learn, the more I realize C/C++ isn't that much faster (if at all) than languages that are orders of magnitude more productive and high level, like Common Lisp or most available Scheme implementations. There's no reason to write so much painful, low-level, boiler-plate-riddled code, especially in common everyday practice.

    114. Re:C too complex? Hilarious. by segin · · Score: 1

      The major problem with your argument is that he is saying that C++, not C, is too complex. Next time, actually read the fucking article and learn to have pedantic levels of distinction. Your hinting of a "C, C++, it's all the same!" attitude is not pedantic enough to be worthy of a Slashdot UID.

    115. Re:C too complex? Hilarious. by Anonymous Coward · · Score: 0

      D
                         

    116. Re:C too complex? Hilarious. by darenw · · Score: 1

      And that's the reason I use only Roman numerals for computational physics. Because it is hard.

  70. objective C by Kristoph · · Score: 1

    Objective C is arguably as complex as Java and C++. It's not hurting Apple any and the general integrity and quality of applications on Mac OS X is quite high. In contrast, Microsoft has much simpler language in Visual Basic and the application written in VB are arguably the lowest quality applications on that platform.

    ]{

    1. Re:objective C by SteeldrivingJon · · Score: 4, Informative

      Objective-C is definitely simpler than C++. A little complexity is creeping in now, especially with Blocks. But overall it adds very little to C.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    2. Re:objective C by am+2k · · Score: 1

      I don't quite see it that way. It has become a bit worse with the extensions ObjC 2.0 brought (proving the central point of the article), but the language is generally much easier to learn and master than C++ or Java. There are a lot fewer constructs, and it is identical to C99 for anything non-OOP. Nothing like that three-languages-in-one that C++ brought or the you-have-to-know-about-everything-when-writing-the-first-line-of-code Java brought.

      Additionally, ObjC is much closer to scripting languages than those two (the whole reflection stuff Java hides away in a corner right there in the open and used excessively), but still keeping compile-time checks (mostly emitted as warnings, though).

    3. Re:objective C by BitZtream · · Score: 2, Insightful

      Objective-C has the absolute most fucking retarded 'memory management' model I have ever seen.

      Its got all the disadvantages of ref counting and non-ref counting allocation, and absolutely none of the advantages of either.

      Anyone who thinks Objective-C is simpler is sorely confused.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    4. Re:objective C by bar-agent · · Score: 1

      Objective-C has the absolute most fucking retarded 'memory management' model I have ever seen. Its got all the disadvantages of ref counting and non-ref counting allocation, and absolutely none of the advantages of either.

      I'd be interested if you elaborated. Prior to the introduction of garbage collection, Objective C did (and still does) have reference counting allocation, so how can it be missing the advantages? And what are the advantages of a non-reference-counting system?

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
  71. Google GO2 by Anonymous Coward · · Score: 0

    This is coming from a guy that didn't think to use google before naming his language GO :-)
    I still think that they should have renamed it to Google GO2.

    1. Re:Google GO2 by jejones · · Score: 1

      But we learned to avoid go2 back in the days when structured programming was new...

    2. Re:Google GO2 by msclrhd · · Score: 1

      Djkstra said that Go2 was evil!

  72. Re:Complex? Difficult? Since when? by thetoadwarrior · · Score: 2, Insightful

    It's not hard to learn Java but yes, it is often a complicated mess of shit when you want to use it on the web. Anything where you *have* to generate great swathes of code to keep your sanity is probably an over engineered shit solution.

  73. I agree by Sloppy · · Score: 1

    Let's all switch to Ada.

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  74. Blue is far too Blue and Pink is not pink enough! by n00btastic · · Score: 1

    [nt]

  75. Re:We all know the ideal language has two function by jsiren · · Score: 3, Funny

    What we have here is feature creep.

    --
    Usage: km/h for speed (kilometers per hour); kph for very slow impulses (kilopond hours).
  76. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    You damn programmers, always forgetting about security. They key extensions are dontGetHacked() and protectAllPersonalData(). And of course once you're exhausted from all the computer hacking, you need to be able to call showMeBoobies()

  77. OK, so now what? by Just+Brew+It! · · Score: 1

    If we're not supposed to code in Java/C++, and interpreted languages are a no-no, what's left? C, FORTRAN, and assembler? (I actually *love* C, but I don't have any illusions that it is the be-all and end-all of programming languages... IMO Python is capable of filling most of the niches that C does not.)

    1. Re:OK, so now what? by Anonymous Coward · · Score: 0

      If we're not supposed to code in Java/C++, and interpreted languages are a no-no, what's left?

      Asking such a question displays a sore lack of knowledge of programming languages. There are tons of other languages left, for example Cython, OCaml or Haskell.

    2. Re:OK, so now what? by russotto · · Score: 1

      If we're not supposed to code in Java/C++, and interpreted languages are a no-no, what's left? C, FORTRAN, and assembler? (I actually *love* C, but I don't have any illusions that it is the be-all and end-all of programming languages... IMO Python is capable of filling most of the niches that C does not.)

      Start with C. Build something better, with the knowledge that C++ has gone off into the weeds.

  78. As I write in C#... by Anonymous Coward · · Score: 0

    There is a middle ground here. Syntactically, there is nothing wrong with existing C-based languages. Simply building a better object framework accomplishes what Pike is trying to do, without changing languages. Thats why I use .NET, because if you learn to use the built-in objects, they do a lot of the work for you. Not to say .NET does this perfectly (far from it), but at least it seems to improve greatly with each new version. Ruby-on-Rails seems to be a step in the right direction as well - I tried it out and its nice, but it seems to make some simple tasks MORE complex with the standards vs. configuration philosophy. In summary: Pike is right, but we don't necessarily need a new language to accomplish what he wants - just better libraries. I think I will at least give Go a try though...

  79. JavaScript was a response to C++ by Anonymous Coward · · Score: 0

    From TFA:

    JavaScript is one of a whole batch of languages -- others include Ruby and Python -- that have been developed over the past 10 years in response to the growing complexity of C++ and Java.

    Hmmm.....yes.....JavaScript was developed to replace C++...

    1. Re:JavaScript was a response to C++ by zill · · Score: 1

      JavaScript is one of a whole batch of languages -- others include Ruby and Python -- that have been developed over the past 10 years in response to the growing complexity of C++ and Java.

      In response to != replace

      President Bush initiated the War of Terrorism in response to the 9-11 attacks.
      President Bush initiated the War of Terrorism to replace the 9-11 attacks.

    2. Re:JavaScript was a response to C++ by SteeldrivingJon · · Score: 1

      "In response to != replace"

      A lot of companies wanted Java for their internal apps, because C++ was just too nasty. For them, it was definitely a matter of replacement, at least for those apps. The banks that used NeXTStep/OpenStep in the 90s wanted to get away from the inherent vendor risk, and they eventually bailed out to Java. They could have bailed out to C++ any time in the 90s if that were seen as acceptable. (Some probably did.)

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    3. Re:JavaScript was a response to C++ by zill · · Score: 1

      I think you're confusing Java with Javascript. They are completely two different things.

    4. Re:JavaScript was a response to C++ by SteeldrivingJon · · Score: 1

      Doh. You're right. Reading fail.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
  80. Re:We all know the ideal language has two function by danieltdp · · Score: 2, Funny

    I just hope, for the sake of your project, that the factory don't create foobars, but something else that you removed from the original

    --
    -- dnl
  81. Colleges should teach more than C++ and Java by Orion+Blastar · · Score: 0, Offtopic

    When I went to college in the late 1980's and early 1990's I learned as many programming langages as I could both in college and on my free time. Computer World thought I was notable enough to quote me as an expert on the subject based on a former Slashdot story.

    Some argue that colleges should teach concepts and theories and choose the easiest language in which case BASIC (Classic Visual BASIC 6.0 and under) and Pascal (Turbo Pascal or Delphi) was used, then later as Java and C++ became popular because they can be cross platform.

    Anyone remember growing up with 8 bit computers and using Pilot or Logo and giving commands to a turtle to draw stuff? It made programming fun.

    But if anyone wants to do Modern Windows programing they'll need Visual BASIC 2008/2010, Visual C# 2008/2010 as that is what MS IT Shops run. You show them on your resume that you are a C++ and Java developer and they'll laugh at you and pass on you and hire someone with Visual Studio experience instead.

    Don't forget Python/Jython, Ruby on Rails, and others.

    I am trying to get off disability and do something as a hobby to help people. I want to write some beginner's eBooks on various programming languages as a cook book or step by step guide to learn how to program in Free Pascal, Free BASIC, ANSI C++, C#, Visual BASIC, Java, Python, and a few others. Make it the basics of the language from hello world to a program that maybe reads and writes records from a text file. Forget about the GUI and Objects and make it text based and cover those later. It will mostly be figuring out math problems and then maybe end up doing an employee payroll program that writes a report on salaries and checks. But will be under an OSS license so others can add to it and make it better later on. I'd also give source code with the PDF and consider putting it in RTF, ODF, and other formats so it can be read by almost anyone.

    But my health and family come first.

    Anyway the OSS versions if the OSS joins in we can turn into better eBooks. If not I will write intermediate and advanced versions of those books for sale for eBook readers and try to start up a small business as eBook readers and eBooks catch on.

    All of this talk that "your language is too complex" is nonsense, look at how Complex the Modern English language is, so why don't we just drop English for Dutch/Flemish or German or French or Spanish? Hey learn the different dialects of Chinese as we owe their government a lot of money. BTW I am learning Thai, "Sawadee krup!" The r is usually silent and that is Thai for hello said by a male if a female says it then krup is replaced with ka. :) Yes I want to learn those languages as well but lack the time and money.

    My resume was getting ridiculous as I had over 37+ programming languages I knew, most of them dead or dying or early being used. Maybe only 5+ are used in the modern world. So now if I rewrite it I will trim the number of languages to those still in use and say "and other programming languages not listed here, but ask for a separate sheet if interested."

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  82. Noun-declension language by Latent+Heat · · Score: 1

    Are you telling me that Esperanto (Estperanton == object form?) is like Latin, Russian, Greek, Farsi, and Sanskrit in using freakin' noun declensions?

    1. Re:Noun-declension language by Anonymous Coward · · Score: 0

      If I recall correctly, though, that is the entire rule for it. Direct objects end in -n, and that's it, no exceptions and no irregular forms. (The -n lets you switch around word ordering without confusing subject/object, so the meaning of the sentence is the same). There's a universal rule for plural, too, and that's about it. So basically it all fits into a short paragraph, as opposed to the whole book it'd take to list all the noun rules for the other languages you mentioned.

    2. Re:Noun-declension language by brianerst · · Score: 1

      As far as I remember, Esperanto just has the nominative (subject) and accusative (object) declensions. Zamenof was ambivalent about word order imparting meaning, so he forced in the subject/object declensions. In theory, an Esperanto speaker from a SOV (subject-object-verb) language background like Japanese would be able to understand the meaning of someone from a SVO (subject-verb-object) language background like English because of the declension clues.

      In practice, I figure it's probably still a bit of a struggle.

      Subjects end in "-o", objects in "-on". Plural is indicated by putting a "j" after the "o". (J is equivalent to the English "y" sound - "oj" = "oy", "ojn" = "oin").

    3. Re:Noun-declension language by WildsideTX · · Score: 1

      Nope, no noun declensions. Nouns are made by adding -o to the end of a root. The only changes that are made to a noun are for number or case, and this is done through agglutination instead of declension. Plurals are formed by adding -j after -o. The accusative (direct object) case is made by adding -n after the -o (or after the -j in case of a plural). (j is pronounced like y in Esperanto).

      All of these sentences say "I like to learn new languages", although the first one is by far the most common form:

      Mi atas lerni novajn lingvojn.
      Novajn lingvojn mi atas lerni.
      Novajn lingvojn atas lerni mi.
      Lerni novajn lingvojn mi atas.
      Lerni novajn lingvojn atas mi.

      For more info on Esperanto: http://www.lernu.net/ .

    4. Re:Noun-declension language by WildsideTX · · Score: 1

      Silly slashdot. atas = sxatas (that should be a circumflex over the s, but UTF-8 support is either lacking from the forum or my browser messed it up.)

    5. Re:Noun-declension language by brianerst · · Score: 1

      Following on my previous reply, apparently Zamenhof later decided that adding the accusative was a bad idea and supported its removal, but had basically lost control of his language by then and went with the majority who were against any substantial changes. I think Ido (reformed Esperanto) dropped it.

  83. Building on a mystery RE:A man after my own heart by Invisible+Now · · Score: 1

    Sarah McGlaughlin has a song lyric: "So you're working, building on a mystery, and choosing so carefully..."

    I think another way to pose this poster's comments is: Are extended, overloaded, polymorphic etc object coding techniques always the optimal engineering solution?

    In my experience, the answer is no.

    Take the eternal mantra, particularly in the corporate domain, of writing reusable code. You can't reuse it if the guy who wrote it is gone and it imports and includes objects sourced from dozens or hundreds of other files, libraries, namespaces... (grab your rotten tomatoes know and get ready to throw!) A well written application, in assembler, C or Visual Basic or a page of ASP or PHP can be read as a self documenting whole and modified reliably and QA'd decisively.

    Now covered in fresh tomato sauce, I freely admit that different tasks require different tools. But as someone who often has to focus on the business purpose of the code and not my personal mindset, simple readablity often trumps all else. And to the loon who attacked the original poster - attitudes like your closed mindedness make you the problem.

    --

    "Knowing everything doesn't help..."

  84. Today's fortune by PsychoticSpoon · · Score: 1

    People admire complexity. - Rob Pike

  85. There's worse out there by TehZzYzX · · Score: 1
  86. python+ objective C by goombah99 · · Score: 1

    Look Java was a great try it just got a bit out of hand but it's close to what is needed.

    To me the ideal language branches in two possible directions: something close to python+static_typing_capability or Objective_C_but_with_a_different_syntactic_form

    I strongly suspect that that language that is as close to my ideal of python+static_typing is groovy. It has an almost seemless path from dynamic to compiled in it's syntax and java libs.

    Objective C, everytime I look at it, I become convinced is what C++ should have been. All decisions seem really smart in hindsight. And it's very very minimimalist compared to C++. At the same time it has all the late binding advantages of Java. The only thing off-putting about it, is the method syntax. And even that, when you look carefully, is actually a really clever way to make things poly morphic.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:python+ objective C by goombah99 · · Score: 3, Interesting

      I suppose it's worth expanding my polymorphism comment slightly. People who think that objecitve C's Messaging concept is just semantic sugar are not understanding it clearly.

      In objective C you don't "call an object method" but rather you pass a message to the object. THe object, if it chooses to reply, does not "return" a value but instead sends back a reply message.

      What's the difference? Well in implementation very often nothing. The message that is sent is a message name and a list of calling args and their names. 99.9% of the time the object chooses to resolve this message by finding a method that corresponds to that prototype. So that looks just like C++. But the thing is, it does not have to do that. It could choose to re-interpret the message. And in particular it might use some other recently method added later than "linking" time to the object. Thus how the method calls are bound does not happen at link time. They often are prebound then for efficiency, but they do not have to be. The same is true of the return values.

      THis makes it more like java in a way.

      But the nice thing is that the overall syntax is just a thin layer on basic C.

      Another reason that Objective C is so nice now is that it had a chance to mature and modernize out of the spotlight. Having lived mainly in the apple ecosystem it has a lot of standard libs now with dictionaries and core data tied to persistent storage, MVCs, and so forth that are all (mostly) self consistent and not the tower of babble on finds in java. THings like get-set commands can be handled by decorators rather than explicit coding. That's cool because by letting the compiler pre-processor define what is in a get set you can inherit all sorts of things like listeners binding to your variables that you did not explicitly encode. Just recomoile your code and poof you inherit all the new features.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    2. Re:python+ objective C by SteeldrivingJon · · Score: 2, Insightful

      Re: method syntax

      I always liked how it was different from function syntax. Obj-C was my first OO language, and I had a conceptualization of objects as being semi-independent entities, so it felt natural to express message passing in a different syntax from 'mere' C functions.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    3. Re:python+ objective C by goombah99 · · Score: 1

      Oh I like how objective C syntax makes the message passing aspect more what you really mean. Variables should have names not just be positional. THat's how python does it with **kwdargs. objective C hits the sweetspot between purely positional and purely key-value calling signatures. it's nice.

      but it annoys the hell out of people coming from either direction. that's what I meant by off-putting

      --
      Some drink at the fountain of knowledge. Others just gargle.
    4. Re:python+ objective C by rthille · · Score: 1

      Your complaint about Objective-C syntax is funny, given that I much prefer it to C++, especially the ability to basically label individual args within a method call.

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    5. Re:python+ objective C by yyxx · · Score: 1

      Objective C, everytime I look at it, I become convinced is what C++ should have been.

      Objective C inherits all of the problems of C (lack of runtime safety, poor pointer semantics, tons of undefined and implementation defined behavior, bad syntax, bad memory management) and creates some of its own (unsound type system, badly designed reflection system, among others).

      The only thing off-putting about it, is the method syntax. And even that, when you look carefully, is actually a really clever way to make things poly morphic.

      The method syntax came, like most of Objective C that didn't come from C, came from Smalltalk.

    6. Re:python+ objective C by shutdown+-p+now · · Score: 1

      What's the difference? Well in implementation very often nothing. The message that is sent is a message name and a list of calling args and their names. 99.9% of the time the object chooses to resolve this message by finding a method that corresponds to that prototype. So that looks just like C++. But the thing is, it does not have to do that. It could choose to re-interpret the message. And in particular it might use some other recently method added later than "linking" time to the object. Thus how the method calls are bound does not happen at link time. They often are prebound then for efficiency, but they do not have to be. The same is true of the return values.

      Please explain how the return values in Obj-C are messages, and how they can be "rebound" etc. Code preferably.

    7. Re:python+ objective C by shutdown+-p+now · · Score: 1

      Objective C, everytime I look at it, I become convinced is what C++ should have been. All decisions seem really smart in hindsight.

      Like having neither exceptions, nor namespaces, nor any form of type genericity?

      . At the same time it has all the late binding advantages of Java.

      This bit is downright offensive to Obj-C. Dynamicity in the latter is transparent, largely similar to how it is for Python or other fully dynamically typed language. In Java, you have to deal with the tangle of Reflection classes.

      And even that, when you look carefully, is actually a really clever way to make things poly morphic.

      Not really, since it throws the whole type checking thing out of the window. There may be arguments for that, but the point is that you either buy into them - and then go all the way (as Python did), or if you leave static typing in, then you'd better do proper support for it, and that means proper parametric polymorphism (generics or similar).

    8. Re:python+ objective C by Anonymous Coward · · Score: 0

      An object is not required to return a message.

    9. Re:python+ objective C by shutdown+-p+now · · Score: 1

      GP wrote:

      In objective C you don't "call an object method" but rather you pass a message to the object. THe object, if it chooses to reply, does not "return" a value but instead sends back a reply message.

      So he seems to think that return value in Obj-C is a message.

    10. Re:python+ objective C by Serious+Callers+Only · · Score: 1

      THings like get-set commands can be handled by decorators rather than explicit coding.

      While I agree that Objective-C is for the most part quite elegant, getters and setters are one area where the foundation of C leads to a less elegant syntax, which is a shame. You have to add two extra bits of syntax for getters and setters in two files.

      @property(retain)id fu;
      and in the implementation
      @synthesize fu;

      I much prefer the ruby (or other scripting languages) approach:

      attr_accessor :fu

      while it doesn't seem like much in isolation, lots of small warts like this do add up to a lot of time babysitting the language and environment when you want to just get on with the code. Iteration is something they've improved recently, so at least now you can use for(id x in y) rather than the cumbersome iterator syntax.

      It is very nice that you can just drop down to C when required though, and have all the c-based libraries available too without glue of any kind.

    11. Re:python+ objective C by mini+me · · Score: 1

      Objective_C_but_with_a_different_syntactic_form

      So basically you are looking for Ruby, which has syntax closer to that of Python, but implementing all of the same Smalltalk concepts as Objective-C?

    12. Re:python+ objective C by mini+me · · Score: 1

      getters and setters are one area where the foundation of C leads to a less elegant syntax, which is a shame.

      Recent versions of Clang do not require @synthesize anymore.

  87. P.S. by bonch · · Score: 1

    As programs get more and more complex, more and more abstraction is needed between the programmer and the hardware.

    I think that, if anything, they've gotten less complex as the reliance on APIs and other pieced-together software components has increased. I certainly don't see a trend toward more complex software when I see all those iPhone fart apps.

    1. Re:P.S. by nschubach · · Score: 1

      Reliance on APIs is just that though... reliance. If you code for one API, it becomes that much more difficult to use your code somewhere else, let alone understand what it's trying to do. Some APIs can be overly cryptic.

      There has to be a point where the language you use already knows how to manage the data you need (on whatever system you run it on) and give you the contents without forcing you to read it line by line (or stream), parse paths, set locks, etc.

      The only way I know of to completely deprecate file processing, memory locking, etc. is to have the OS give applications data space (volatile (RAM) and non-volatile (Datastore)) and they can use key/value pairs to save/read data and you'd have to use another method to let the user pick a dataset (picture, document, etc) from another application that they want to open. (Kind of like HTML5 data stores/Actionscript SharedObjects) This would have to be an integral part of the language and each OS would have to have support for it...

      That's just one example. Personally, I think for languages to evolve, the operating environment must as well.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    2. Re:P.S. by fruitbane · · Score: 1

      Perhaps what we intend our software creations to do isn't necessarily more complex (though in many cases it is), our reliance upon APIs and robust OS hooks sometimes over-complicates the resulting code. In a way, something as simple as displaying text requires a much more complex piece of software on modern OS-driven hardware than it used to. It's good and it's bad. More to the point, it simply is.

    3. Re:P.S. by Anonymous Coward · · Score: 0

      a framework is still an api

    4. Re:P.S. by hierophanta · · Score: 1

      i think you are confusing programs and programming. i think that programs are getting more complex, especially in a sense of data sources, and their slew of obstacles programming on the other hand, agreed, getting much less complex

    5. Re:P.S. by nschubach · · Score: 1

      It doesn't really matter, an integral framework would at least be standard with the language and not an include required addendum.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    6. Re:P.S. by Fizzl · · Score: 1

      Blasphemy! Obviously you have never implemented an iPhone fart application with a sophisticated language like C.
      I could go on and on about the difficulties of implementing my own audio stream interfaces and image libraries to nicely animate that arse and to play that fart! Synching audio and image animations can be a bitch when you are doing asynchronous I/O straight to the BUS of the phone!

    7. Re:P.S. by ewanm89 · · Score: 1

      This is all libraries or lack of you looking for them to be specific. I'll give you a pure jvm and striped down libraries to the equivalent of ANSI standard C libraries and you'll be able to make the same complaints.

  88. Re:We all know the ideal language has two function by bennomatic · · Score: 2, Funny

    My implementation of that is doTheRightThing().

    --
    The CB App. What's your 20?
  89. Re:We all know the ideal language has two function by bonch · · Score: 1

    Eventually, those higher-level devs will create a solution so generalized that it'll be its own programming language, within the programming language.

  90. Don't hate on VB by labnet · · Score: 2, Interesting

    Although I mainly do hardware engineering, I also have done/do lots of 8/16/32 bit embedded prorgamming in C and C++. C is a terrific language for embedded. C++ is like a samurai sword, hard to truly master without killing yourself.
    I truly loved VB6 as a RAD platform. I wrote a scientific application involving realtime data collection/control, database method and paramter control, realtime graphing, simultaneous multiple system control including sampling robots etc, that is still being used in hundreds of industrial labs around the world. It was written in around 4 months, and there is no way I could of done it in C++.
    I think C++ sucks for end user app development for most of the reasons metioned by Rob Pike, but is has its place when you are close to the metal.

    --
    46137
    1. Re:Don't hate on VB by BitZtream · · Score: 2, Interesting

      You like VB for the same reason you like Tylenol.

      It lets you play doctor without actually being one, or in this case, you get to play programmer without actually being one.

      That most certainly has its usefulness as you are well aware, but that doesn't make it a tool that programmers should be using.

      Doctors and programmers use a different set of tools than you use at home.

      I spend most of my time now converting crappy VB apps to real applications, I have a license to hate VB and shitty VB writers who think they are programmers.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:Don't hate on VB by shutdown+-p+now · · Score: 2, Interesting

      I truly loved VB6 as a RAD platform. I wrote a scientific application involving realtime data collection/control, database method and paramter control, realtime graphing, simultaneous multiple system control including sampling robots etc, that is still being used in hundreds of industrial labs around the world. It was written in around 4 months, and there is no way I could of done it in C++.

      Yes, but you could have done it in Delphi just as fast and convenient, and you'd have had code that was much more readable.

      A language in which this line of code:

      x = y

      does not certainly mean "assign value of variable y to variable x" (in VB, it might mean that, or it might not - that depends on type of x; hint: default properties), truly deserves to be fully erased from the memory of mankind.

  91. Biased much? by Comboman · · Score: 3, Insightful

    Stroustrup (inventor of C++) is hardly a source of unbiased opinion on this topic. His elitist argument comes off sounding like "Calculators are bad because anyone can use them, engineers should use slide rules. Would you want someone designing a bridge who was too stupid to use a slide rule?" Professional programmers can be more productive if they are able to spend more time creating and less time fighting with their tools, and denying amateurs access to those tools sounds more like job-protectionism than professionalism.

    --
    Support Right To Repair Legislation.
    1. Re:Biased much? by zach_the_lizard · · Score: 1

      Amateurs have a huge amount of coding tools at their disposal. With a compiler and a text editor, one can go far. With vim and gcc, for example, my only limit is my ability and imagination. That is what I love so much about this field: it is very open.

      --
      SSC
    2. Re:Biased much? by Anonymous Coward · · Score: 0

      He's saying professionals shouldn’t be restricted to amateur tools NOT that armatures should only able to use armature tools. He's also saying that you shouldn’t hire an armature to do a task suited for a professional.

      Human resources idiots are always looking to dumb down tasks so that they have more people they can hire and for cheaper. Its the reason we have stupid apps that require VB and IE from ten years ago. That's the amateurs providing "enterprise solutions." Even if they did use professional tools it would still have been a crap job.

    3. Re:Biased much? by Anonymous Coward · · Score: 0

      FWIW, I'm a programmer and while I don't love C++, I hate it a lot
      less than most other languages I've lived with. I think BS's argument is
      spot on. Since you obviously don't (not that you bothered to actually refute
      his point), let me try and put it in different words.

      What he is trying to say, in very broad terms, is that humanity has a
      choice: whether or not to have as a major societal goal the total
      elimination of anything that leads to certain people having (or using)
      particular, unusual skills.

      Until now, the choice has been "no - it is in everyone's interest to allow
      people to develop and employ different talents". I would guess that you
      don't agree with that though, since looking at your post, you don't even
      appear willing to admit that professionals even exist. You wrote:

      Professional programmers can be more productive if they are able to spend
      more time creating and less time fighting with their tools

      But this is essentially nonsense: I have never met anybody who could
      genuinely claim they are a professional programmer (i.e. not the banal sense
      of "I get paid to write code") and spend anything but the most trivial
      fraction of their time "fighting with their tools", and I'm sure you haven't
      either.

    4. Re:Biased much? by Joce640k · · Score: 1

      re: "Calculators are bad because anyone can use them, engineers should use slide rules."

      That's a stupid argument, engineers should always use the best tools available.

      What Bjarne's saying is that no calculator will make you a mathematician. In the same way no programming language will ever free you from having to express problems both completely and in simple terms, and that's the hard part of programming.

      At higher levels language syntax is irrelevant. What counts is the ability to express your design succinctly. Languages with missing abilities turn out to be a pain (eg. lack of operator overloading in Java makes numerical programs very verbose and hard to read).

      --
      No sig today...
  92. Re:We all know the ideal language has two function by HeronBlademaster · · Score: 1

    I'm not even sure why I used "foobar". The actual class name is "DocumentFactoryFactory". ... not much better.

  93. And this???? by rec9140 · · Score: 0

    And this from the Company of ECMAScript!

    Enough with the ECMAScript already!

    Lets see have the functions you need are not supported by this or that browser and then throw in the crud from w and ie land and your left having to code things 2-3 ways and check browsers.

    NO thanks.

    Java or C/C++ is better.

    --
    1311393600 - Back to Black
  94. Re:We all know the ideal language has two function by danieltdp · · Score: 1

    I was joking.. ;-) But DocumentFactoryFactory is even better!

    --
    -- dnl
  95. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    More realistically:
    Syntax error detected at line 1...

    doWhat??

  96. Perl's OO sucks though by Anonymous Coward · · Score: 0

    Perl has a convoluted Object Oriented system, which is a bad thing these days. It also has lots of screwy legacy complexity. Hopefully Perl 6 will fix all this and remain Perl 5ish.

    1. Re:Perl's OO sucks though by Anonymous Coward · · Score: 0

      Why? Perl has Moose, which works wonderfully.

  97. Re:We all know the ideal language has two function by ultranova · · Score: 2, Funny

    My implementation of that is doTheRightThing().

    Wouldn't that make it unfit for enterprise use?

    --

    Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  98. Re:We all know the ideal language has two function by hibiki_r · · Score: 1

    Does FoobarFactoryFactory keep all of it's possible factory configuration options in a ConfigurationMapMapMap>>?

  99. Esperanto, for real by rdmiller3 · · Score: 1

    That's, "La angla estas tro malfacila! Parolu esperante."

    Come on over to Lernu.net and learn Esperanto for real.

    1. Re:Esperanto, for real by Culture20 · · Score: 1

      Come on over to Lernu.net and learn Esperanto for real.

      You're joking, right? Learning Esperanto in an attempt to communicate is just like learning Logo to write a real program (hence my original joke referencing English [complex] and Esperanto [Simplified language] instead of actual programming languages).

    2. Re:Esperanto, for real by selven · · Score: 1

      Although I personally have some objections (website not mine) to Esperanto in particular, that's a bad analogy. Logo is not used by everyone because it's not powerful enough for professionals. Simplified speaking languages, however, are every bit as powerful as "real" languages. The main reason people use English et al, as the guy who wrote the above linked page put it, "it has an extensive Installed User Base, and can thus afford to ignore criticism in exactly the same manner as Fahrenheit thermometers, QWERTY keyboards, and certain software packages, which can all rely on conformism, short-termism, and sheer laziness for their continued survival."

  100. Lisp by tepples · · Score: 5, Funny

    What about an environment where you can eathily hide complexity and meta-information? Or, possibly, add new literalth? Where the bathe of the language is shifted to the Abthtract Thyntax Tree, not tho much the thyntax.

    Fixed that for you. Programming with abstract syntax trees has been possible since Common Lisp if not earlier.

    1. Re:Lisp by owlstead · · Score: 1

      Very funny. Also funny is the result of the following Google search:

      http://www.google.com/webhp?hl=xx-elmer#hl=xx-elmer&source=hp&q=common+lisp+ide&btnG=Google+Seawch&fp=f3bb6faf627dcb6f

      First result:

      http://stackoverflow.com/questions/232486/best-common-lisp-ide

      I did the search in a lisping language too, to humor you.

  101. Re:We all know the ideal language has two function by HeronBlademaster · · Score: 1

    Worse... we're using Spring :(

  102. Ok I'll bite by medv4380 · · Score: 1

    If it can solve issues with programming with concurrency that Java and C++ have then it might be worth it but if it solves those problems then they will probably be incorporated as some point. I'm just tried of people like my boss saying that you just need to download Intel's compiler updates and then you're code will work with multicore perfectly. I've yet to find a magick bullet addon or compiler that's solved that issue, but if Google thinks they can do it the least I could do is check it out to see if it works.

  103. Don't need to write Java to run on Java by benjto · · Score: 2, Interesting

    You don't have to write in Java to run on Java. Languages like Clojure, Scala, and Groovy have come about an an answer to the complexity and verbosity of Java's syntax and structure - all running on the Java platform.

    Java

    // HelloWorld.java
    class HelloWorld
    {
    public static void main(String args[])
    {
    System.out.println("Hello World!");
    }
    }

    Groovy

    //hello.groovy
    println "hello, world"

    Clojure

    // hello.clj
    (println "Hello World")

    1. Re:Don't need to write Java to run on Java by Beezlebub33 · · Score: 1

      Groovy in particular is nice because it works so well with plain old Java. It seems like Pike is complaining about complexity in the language syntax, rather than fundamental concepts. If that is the case, then going to a completely new language (and thereby throwing away all the infrastructure, libraries, IDEs, etc.) is a really bad idea. Instead, what intelligent people are doing is writing new languages with different syntax that compile to the JVM. Then, you get to keep all the libraries, you get to keep the work thats gone into optimizing the JVM, you get to have an great IDE by slightly modifying an existing IDE (like Groovy on Eclipse). They've thrown the baby out with the bath water by starting from scratch.

      In addition, the base level of knowledge required for a different-syntax but same VM language is lower. As a specific example, I hate most of the the XML parsing techniques in Java, and I've tried lots of them. With Groovy, you can add XML parsing very easily. And if all you want to do with Groovy is use it to parse XML, that's the only part of Groovy you have to add to your program. The rest of it can be completely the same as before. So, best of both worlds. What will happen though is that as you learn more concepts, you'll start adding them to the codebase, and voila, you make a gradual transition from Java to Groovy.

      --
      The more people I meet, the better I like my dog.
  104. Re:We all know the ideal language has two function by SplashMyBandit · · Score: 1

    Brilliant observation! That is a problem with the pure Object Oriented style of code written by the typical Java Enterprise Programmer. Unfortunately all CompSci graduates all seem to produce this style of (crappy) code. I guess that is what the frameworks and textbooks show for pattern illustration, but it is a terrible style. However, this is not a fundamental flaw of the language itself (although it permeates most of the libraries). It is possible to simplify your code somewhat by consciously adopting a different style, that is POJO/Bean oriented and slightly more procedural. Also, if you take the 'simplify your code' mindeset rather than the 'purist O-O jihadi' approach (typical of Computer Scientists) you get a philosophy and code that is quite different. See BeanKeeper as an example of a library that rejects all the unnecessary constructs of man persistence frameworks. While BeanKeeper isn't perfect it is a step in the correct direction for Java.

  105. What's ideal? Brevity maybe? by shoor · · Score: 1

    From the article: "C++ came about because of people's frustration with working with the low-level C language" I think that's a bit oversimplified. Though I won't claim to know better than Rob Pike what caused C++ to come about, I do think there's more to it than can be said in one sentence. Part of the popularity of C++ was the new fashion of 'object-oriented' programming. Marketing types were eager to brag about how advanced they were because they were 'object-oriented' and the proof was that they were using an 'object-oriented' language. One thing I remember reading somewhere a long time ago, probably in some obscure usenet posting in sci.comp.lang or something, was that bugs were based on lines of code, and the language that got the job done with the fewest lines of code was the one that would have the fewest bugs. "Brevity is the soul of wit" according to Shakespeare's Falstaff, and the older I get, the more I tend to agree with that. APL is about the briefest language I ever encountered, but don't take that as a recommendation. (I sometimes think to myself that it gets its brevity by cheating, lots of special characters and operators, but I'm not ready to lodge that as an official quibble about it.) Hiding information, or fobbing it off into libraries, is one way to make things brief, but really, I think ideally, a language should present as much information in a 'page' of code as possible about what it is doing, and maybe APL, for someone really familiar with all the operators, would find APL to be great in that regard. I never had a chance to work with it with a proper keyboard and display myself. But if I were rich enough to be able to fund the development of a language, what I'd be asking my designers to go for would be, put as much information per character as possible about what the code is trying to do on the page in a human readable and human typeable, form.

    --
    In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
  106. Hold on, let me get this straight... by Millennium · · Score: 1

    So he rips on traditional systems-programming languages for being too complex and requiring the compiler to justify everything, but then turns around and rips on dynamic typing, one of the biggest reducers of complexity in modern programming?

    War is peace, complexity is simplicity, and Microsoft has always been at war with Google?

    1. Re:Hold on, let me get this straight... by shutdown+-p+now · · Score: 1

      rips on dynamic typing, one of the biggest reducers of complexity in modern programming?

      For every bit of "complexity" dynamic typing reduces in code, I see a new unit test written to check for things that the compiler would've previously checked due to types being explicit.

    2. Re:Hold on, let me get this straight... by Millennium · · Score: 1

      Nothing that shouldn't be written anyway. Using the compiler as a crutch isn't good programming practice.

    3. Re:Hold on, let me get this straight... by shutdown+-p+now · · Score: 1

      Coming from an apparent TDD adherent, a claim that type system is a "crutch" is extremely ironic. No, actually, it's the other way around - unit tests are a crutch, an ad-hoc way to assert contracts when language itself is too weak for that.

  107. Google "Go"? by owlstead · · Score: 1

    I looked at go and tried 2 months ago to find out if it had progressed. But that's one hard language to find. I mean, for a Google engineer, you might come up with a language that is easy to, well, Google? Or are they doing one of these: if you cannot find it we don't want you opinion kind of things? I mean, the C language is easier to Google!

  108. alternative suggestion by Fujisawa+Sensei · · Score: 1

    Think Java and C++ are too bloated?

    Don't like performance of interpreted languages?

    That's a little language you might have heard of, its called C

    --
    If someone is passing you on the right, you are an asshole for driving in the wrong lane.
    1. Re:alternative suggestion by Anonymous Coward · · Score: 0

      C's type system is a mess, it doesn't have any form of support for generic programming, it doesn't have a module system, it is not memory safe (C# did it right: if you want to write unsafe stuff, say so), functions can't be nested, the declaration syntax is stupid, there's no language support for tagged unions... The language is simply too sucky to be used for anything other than legacy stuff. And that's *not* just because it's a systems programming language, because C sucks even as a systems language. It just sucks even harder as an applications language.

  109. Simpler is better by Anonymous Coward · · Score: 0

    Ya know what I do? I write a few lines of gawk and do the job. I used to have to use netcat too, but now gawk does socket I/O so I ditched netcat.

    If you can't solve a problem without using a language that requires a PhD in computer science, you aren't looking at the problem right.

  110. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    I believe that would be com.sun.java.slowDownAndCrashSoICanSellAnUpgrade();

  111. Just Design Patterns subsumed by the language by Rene+S.+Hollan · · Score: 1

    Look, the ideas of OO inheritance and polymorphism just represent what coders of "abstract" interfaces have been doing for years. A handle? Sure! Every "member function" is called with a pointer to the object as an implied argument. Functions specific to the class? Sure! static member functions. Need to separate interface from (one of) several possible implementations? Sure! No need for a hand coded and initialized dispatch table. The "virtual" keyword is your friend. And so on.

    Now, that doesn't cover ALL the useful design patterns out there, but they really are common enough to have native language support.

    If you've ever compared the kind of macro hackery that goes on to try to have some semblance of type-safety in C with a shared implementation (compare the various "STACK"s of different kinds of objects in openssl 0.9.8 and 1.0.0: lots of casting in the former, and attempts to hide it with macro hackery in the latter), you'd see what a blessing templates are.

    And so on.

    Have a problem with private, protected, and public members? Got something against information hiding? Really though, sometimes I wish I could friend all derived classes of some base class, though IIRC C++ won't let me. Would virtual protected friend be such a bad adornment to have? How about insisting that constructors of derived classes have the same signature (e.g. something like a virtual constructor)? That would save one from having a separate virtual "Init()" function? Why is it necessary? So I can pass the same arguments safely to the particular instance of an object I get from a factory when I ask the factory for an instance based on some run-time parameter WITHOUT needing to separate "construction" and "virtual initialization" when the distinction is artificial.

    The whole point of the increasing subtlety and integration of common design patterns is to grant greater power to the programmer while also ensuring uniformity of implementation of the very most common and useful design patterns (though I can see arguments for overriding the implementation of virtual member dispatch tables to make them dynamic instead of being stuck with static ones in all instances).

    Of course, with greater power comes greater responsibility. It's oft-said that while C lets you shoot yourself in the foot, C++ lets you chose among a dozen different ways of doing so.

    I think what we really need is a mechanism to allow for the secure specification of language features that can not be used in certain circumstances. Smart pointers, and their benefits, are largely useless if any code-dufus can get their hands on a bald pointer to something and cache it away somewhere: '&' should be restricted as a member operator in some cases, to achieve this.

    To put it bluntly: compilers for powerful languages should come with "training wheels" for (a) newbies, and (b) when one intentionally wants to restrict what one can express. In embedded systems, for example, it is usually desirable to preallocate all expected resources (including memory) at one phase of operational initialization, so that one knows one can't run out during later execution. Gimme a way to specify "thow shall not dynamically allocate memory here". Not because I want to shackle some other programmer because I think they are incompetent (though there is that benefit), but rather because I want the compiler to catch me coding something I didn't want to, for design reasons.

    There is precedent for this: many early embedded C++ compilers intentionally did not support multiple inheritance, exceptions, or dynamic casting, arguably for performance reasons.

    --
    In Liberty, Rene
    1. Re:Just Design Patterns subsumed by the language by bucky0 · · Score: 1

      How about insisting that constructors of derived classes have the same signature (e.g. something like a virtual constructor)? That would save one from having a separate virtual "Init()" function? Why is it necessary? So I can pass the same arguments safely to the particular instance of an object I get from a factory when I ask the factory for an instance based on some run-time parameter WITHOUT needing to separate "construction" and "virtual initialization" when the distinction is artificial.

      I'm confused. If you're calling constructors of derived classes, they all have to have the same signature as the base class. (or at least provide the same signature as the base

      --

      -Bucky
    2. Re:Just Design Patterns subsumed by the language by Rene+S.+Hollan · · Score: 1

      No. They don't. They merely have to be able to construct their base components using only the arguments passed to their constructors.

      In particular, B and C, derived from A, can have different constructor signatures and don't need to have any in common.

      --
      In Liberty, Rene
  112. We already solved this by Anonymous Coward · · Score: 0

    It's called C#.

    What's wrong with that, google? Oh, yeah.. NOT INVENTED HERE

    Go, can Go Blow. Hoopty fucking do, you eliminated the surrounding parenthesis in a for construct. *golfclap*

  113. go home site by cpm99352 · · Score: 1

    The project URL is here: http://golang.org/ Looks promising...

  114. Re:We all know the ideal language has two function by warriorpostman · · Score: 1

    That's sign of a great OO programmer! If your code base is not super-metaphorical, you're clearly not using enough design patterns.

  115. Re:We all know the ideal language has two function by mysidia · · Score: 1

    See, that's too complex.

    needs to be: readMyMind();

    err, even that's too complex, we need just one statement

    "."

    Only statement in the programming language should be "." denoting read software owner's mind and do exactly what they need to be done.

    If the user is ever confused, the software must take the exactly correct action to rectify the situation.

    No formatting C: just because the user blithely clicked 'Yes' to a confirmation, when the user has been mixed up the concepts of formatting and defragging.

    On the other hand, if they intend to wipe the drive and re-install the OS and all software, while preserving all user data, then the OS must start and finish all this within 15 seconds, without asking any questions.

  116. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 1, Funny

    But the argument list is horrendous

  117. Re:We all know the ideal language has two function by mysidia · · Score: 1

    They can use one my three implementations instead:

    *(&theRightThing) = theProfitableThing;
    doTheRightThing();

    OR (simpler)

    _((makeItSeemRight *)( doWhatIWant ))();

    OR

    item = new Thing;

    [item makeThisEasy];
    [item makeEveryoneElseThinkThisIsTheRightThing];
    [item doIt];

  118. You can write bad code in any language by Estanislao+Mart�nez · · Score: 1

    That's a really crappy way of writing that code.  Here's a better, more readable one (I've taken the liberty of guessing on the class names):

    ExecutionItem spawnObservableThread(Runnable executionTarget, ExecutionObserver observer) {
        ExecutionItem result = ThreadFactory.getInstance();
        result.setExecutionTarget(executionTarget);
        result.addExecutionObserver(observer);
        return result;
    }

    void runIt() {
        Runnable executionTarget = new Runnable() {
            public void run() {
                doWhatIWant();
            };
        }
        ExecutionItem exec = spawnObservableThread(executionTarget, ExcecutionItemObserverFactory.getInstance());
        exec.start();
    }

    The idea, well, it's just the basic good programming style thing that code should be written in terms of small reusable functions that do only one thing.  So the main flaw of the original code there is that the details of spawning the thread and hooking it up to the Runnable and the observer are a common, reusable task that should go on its own spawnObservableThread() method.

    There's really very little that can be done in terms of language features to make this code less verbose than what it is.  The only things I can think of right away that would help would be lambdas and dependency injection.

  119. Re:We all know the ideal language has two function by krzysz00 · · Score: 1

    Lisp can always give you a function (or macro (or OO method)) that churns out one of the above, which can in turn do anything it wants, including repeat the process.

  120. Re:We all know the ideal language has two function by krzysz00 · · Score: 1

    Did you know, writing mini-languages is a well-known way to solve problems. Sadly, there are only a few languages in which I've known programs to use this technique. (C, Lisp, XML (which is all mini-language), and whatever Knuth wrote TeX in).

  121. Drive to monoculture by SpaghettiPattern · · Score: 1

    The business with deep pockets and large IT departments -that's banks and insurers- sort of drive us to monoculture. In earlier days it was COBOL that was suited to let hoards of application programmers be productive. Nowadays it's Java -with tons of restrictions. The idea is still to be able to follow the manufacturing industry and let programmers write predefined units. I this day and age still a crap idea IMHO bit the fact remains that deep pockets drive Java.

    I'll learn new programming languages as soon as I can make money out of them. So today it's Java for me -and a bit of Perl, Bourne Shell and in extreme cases DOS BAT.

    If I still were a student the situation would be different.

    --

    I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
  122. The language debate rages on ... by Anonymous Coward · · Score: 1, Insightful

    I know that many will disagree with me, but about 10 years ago, when I set out to build up a large base of Linux application library code, I had to choose a language to invest in. I looked at perl, way too friggin slow, I looked at free pascal, which was really buggy at the time. I looked at some forgotten flavor of basic, which was in its infancy on Linux.

    I ended up having to choose between C or C++, if I wanted anything close to optimal performance.

    Happily, I didn't choose C++, and for the last 10 years, I have been derided by many who automatically assume that the ++ in C++ means its better. IMHO ... it doesn't mean that its better, it just means that its more bloated. A thing should be as simple as possible, not simpler. All you obfuscated C code contest fans out there, please, stay away. I prefer your "optimized" source language "tweaks" be as far away from my brain as possible, so that I don't accidentally assimilate your style via osmosis.

    Source code, isn't just instructions for the computer to follow ... it is a form of stored knowledge. As programmers, we learn and research how the computer hardware works, and we store that information, in source code form, so that other people can benefit from our knowledge. Given this fact, I felt that C was a better investment, as not only would it be useable by all the C programmers out there, it could also be easily incorporated into C++ projects. Had I chosen C++, the source code could not have been incorporated into C projects, except via binary linking.

    The process of writing and re-writing code, until you have a near optimal solution to a specific problem, regardless of the language, takes time. No amount of investing in PERL code will ever produce the near optimal results that you can obtain by investing in C code. Furthermore, once you have a near optimal solution in C, you can go balls to the wall optimal and incorporate ASM into it.

    I may get flamed for it, but I'm gonna flat out say it. C is where it's at. You can even re-use your code on an 8-bit Arduino if you want. Or burn it to an FPGA.

    Until someone comes out with a truly better solution, which C++ isn't, then I'm going to continue to invest in writing well documented, well designed, re-useable C code, as the last 40 years has yet to produce something better.

    p.s. I know there are people with managers who need report X post haste, and perl fits that bill. That's not the kind of code I'm talking about. You wanna write throw away code in response to your supervisors emotional state, then it doesn't matter what you code it in, or how well its coded. rm solves everything.

  123. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    call it MetaFactory

  124. Re:We all know the ideal language has two function by ProfessorKaos64 · · Score: 0

    Its "more than ever hour after, OUR work is never over" come on man, every geek should know that song by heart.

  125. Too complex? That's why I only program in Ook! by gestalt_n_pepper · · Score: 1
    --
    Please do not read this sig. Thank you.
  126. C and Python complement each other by mangu · · Score: 5, Informative

    I must say I rarely find a comment on /. that I agree as much as I do with yours.

    C and Python march hand in hand, one is for machine performance, the other is for programmer performance. If someone thinks C is too complex or too hard to learn then he shouldn't be working with programming computers, he's likely to cause great damage sooner or later.

    However, there's one point where C will need a new approach: multiprocessing is coming. Since it seems like Moore's law has hit the ceiling at 3 GHz CPU speeds, all progress in performance for the foreseeable future will come from increasing the number of CPUs and cores working together.

    I have done a lot of programming in multithreads using the pthread library lately and I feel that something better is needed, pthread is not close enough to the metal. I think some new fundamental elements may be needed in the language.

    C is so great for programming because it mirrors the hardware closely. For instance, pointers work so well because they represent memory addresses. Before I learned C I had worked with Fortran, I still have some programs I wrote over 25 years ago. Today I look at those old Fortran programs and I wonder why I did some things the way I did. I see some convoluted loops and wonder why I did that because, with a quarter century hindsight on using pointers, I create almost instinctively the most efficient set of pointers to handle a data structure.

    What programmers often don't realize is that the correct data structure may get orders of magnitude improvement in performance. To give one example, years ago, when I studied artificial neural networks, I read an article in the Doctor Dobb's magazine (January 1989, page 32, "Neural Networks and Noise Filtering" by Casey Klimasaukas). It was a good article, but the source code in C that came with it sucked. There was a struct _pe representing a processing element and each struct _pe had an array of struct _conn representing the connections to that element.

    The problem is that in an artificial neural network what each neuron is doing is, basically, a convolution of two arrays. To do that efficiently in hardware you need to have the array elements contiguous in memory. When you put the connection weight in a structure together with other data you will not have that value contiguous with the weights of the other connections.

    From an "object oriented" point of view that program was perfect. But if you want to use your multi-core CPU with that, the program sucks. That's the benefit you can get from programming in C that you won't get with other languages.

    And don't tell me that raw performance does not matter because you can always get faster hardware. CPU clock speed has stopped at 3 GHz, we must learn to use our multicores if we want to evolve from now on.

    1. Re:C and Python complement each other by Radres · · Score: 1

      Haskell and other functional programming languages give you that multicore processing for free.

    2. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      Hmm. '89 in Dr. Dobbs.

      That means it's probably on a PC.

      Which in '89 probably had neither cache nor virtual memory.

      So, in '89 it probably didn't matter so much if they were contiguous.

    3. Re:C and Python complement each other by cynyr · · Score: 1

      Since it seems like Moore's law has hit the ceiling at 3 GHz CPU speeds, all progress in performance for the foreseeable future will come from increasing the number of CPUs and cores working together.

      POWER7 Would like to have a word with you. min speed in 3ghz. to 4.1ghz. POWER6 will go to 5.0GHz, and in the lab 6 GHz. You are right though, X86/x86-64 seems to not gain much speed when above 3.0ghz. That could also just be a side effect of slow IO as well.

      --
      All of the above was encrypted with a Quad ROT-13 method. Unauthorized decryption is in violation of the DMCA.
    4. Re:C and Python complement each other by daver00 · · Score: 1

      I think some new fundamental elements may be needed in the language

      And I think the community agrees with you: enter CUDA and OpenCL, these are both light extensions to C (well CUDA is) that deliver precisely what you are talking about. Its not mature, its in its infancy really, but I am willing to bet this is where we are heading.

      I've just started looking at PyCUDA, and wow, just wow, they have really done some cool stuff there. They expose the low level elements of CUDA to the Python interpreter through a thing OO layer (pointers, and memory management), while providing high level tools so that you can safely ignore this stuff if you want. The approach they have taken though is not to simply embed CUDA calls into python, they use CUDA as a template metaprogramming language, and have built a just in time compiler so that GPU code can be generated on the fly. It is seriously cool stuff, and exposes lots of bare metal to Python if you want it, as well as the holy grail for Python: massively parallel computing (well, threading anyway).

    5. Re:C and Python complement each other by ausrob · · Score: 1

      >If someone thinks C is too complex or too hard to learn then he shouldn't be working with programming computers, he's likely to cause great damage sooner or later. Amen! I don't understand the downside of people learning to write C/C++. Abstracting away some hardware or platform specific coding is a great time saver, but being completely ignorant to what is underneath (or being unable to grasp key programming tenets) makes for poor programmers IMHO.

    6. Re:C and Python complement each other by jayed_99 · · Score: 1

      You're being architecture-centric. IBM's just released z196 mainframe chip is 5.2Ghz.

      http://www.theregister.co.uk/2010/07/23/ibm_z196_mainframe_processor/

    7. Re:C and Python complement each other by woodsbury · · Score: 5, Informative

      In case anybody doesn't know, the new standard for C that is currently being planned includes multithreading support in the form of a threads.h header.

      http://en.wikipedia.org/wiki/C1x

      I believe the newest GCC includes some support for some of the features of that standard already (which of the features I can't remember).

    8. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      Since it seems like Moore's law has hit the ceiling at 3 GHz CPU speeds

      I am sorry, you may have had a useful point, but I had to stop here. You need to re-read Moore's Law

    9. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      Your FORTRAN loops probably run faster than your C loops because the compiler doesn't have to worry about pointer aliasing.

      Pointers might be "close to the metal," but they're actually a real optimization killer.

      The C programming model basically abstracts away the whole memory hierarchy; you might think you're programming to the machine, but the machine today is actually a really exotic beast that doesn't even necessarily read the same value you just wrote to a memory address.

      At this level of complexity, it's better to have a tightly-engineered language that can let an optimizer do as much work as possible.

    10. Re:C and Python complement each other by S.O.B. · · Score: 1

      Your FORTRAN loops probably run faster than your C loops because the compiler doesn't have to worry about pointer aliasing.

      Then you've got a crappy C compiler.

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    11. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      One of the biggest issues is that although C is great, companies wanting lots of developers cannot get good enough people to understand and program in C well. They have all moved to Java for enterprise work. This allows them to have more Agile things like unit testings, CI, not worry so much about memory leaks and core dumps, running of FindBugs etc.
      C is awesome but few people are really good at using it.

      Development time is another factor. With Java the development time is much lower. With C it is much higher and more error prone. Obviously companies want short development time with fewer bugs.

    12. Re:C and Python complement each other by ralph.corderoy · · Score: 1

      The pthreads model is a pain to program with. Have a look at Russ Cox's summary of CSP-style multiprocessing. Google's Go uses it, as did Bell Labs' Alef, Limbo, etc.

    13. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      Since it seems like Moore's law has hit the ceiling at 3 GHz CPU speeds

      Moore's law has nothing to do with the frequency of the chips. It's all about performance/$ or # of transistors/$.

      And don't tell me that raw performance does not matter because you can always get faster hardware. CPU clock speed has stopped at 3 GHz, we must learn to use our multicores if we want to evolve from now on.

      The clock speed wall is mostly due to TDP and heat management. Remember the days of CPUs that didn't require a heatsink at all? Clock speeds are virtually irrelevant and can NOT be compared between architectures or generations. It is not and never will be a performance metric. If you don't believe that, pick up a cheap 5 year old machine the same clock speed of any i5, i7, or Phenom II and compare them.

      If you're curious, I recently did that comparison using x264.

      Celeron 330 (single core, 2.66GHz, released June 2004) (99%) 9.41fps Trem: 0min 89mb

      Phenom II 940 (quad core, 3.0GHz, released Jan 2009) using 1 thread (99%) 37.31fps Trem: 0min 89mb

      Phenom II 940 using "auto" threads (it scaled to 3 cores well) (99%) 111.37fps Trem: 0min 89mb

      Core i7 920 (quad core, 2.67GHz, released Nov 2008) using 1 thread (99%) 40.64fps Trem: 0min 89mb

      Core i7 920 (quad core, 2.67GHz, released Nov 2008) scaling to 3 cores (99%) 120.65fps Trem: 0min 89mb

    14. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      Regarding multithreaded applications, what you want is called OpenMP and has been available for almost 10 years...
      I've used it for several projects and it lets me do multithreaded applications during the nearly same development time
      as if I was creating a single thread app.

    15. Re:C and Python complement each other by snadrus · · Score: 1

      Has anyone tried Grand Central Dispatch with C (via LLVM)? I'd like to see it investigated before wandering in another direction as we are finding that Apple has done great research in performance for other areas (startup).

      --
      Science & open-source build trust from peer review. Learn systems you can trust.
    16. Re:C and Python complement each other by Anonymous Coward · · Score: 0

      it seems like Moore's law has hit the ceiling at 3 GHz CPU speeds

      *twitch*

    17. Re:C and Python complement each other by Anonymous Coward · · Score: 0
      So you should be better off using Parallel Haskell and Berp (an implementation yf Python 3 in Haskell).

      Berp and Haskell go hand-in-hand. ;)

  127. Re:We all know the ideal language has two function by BarryJacobsen · · Score: 1

    I'm not even sure why I used "foobar". The actual class name is "DocumentFactoryFactory". ... not much better.

    You could do some refactoring...It'd probably be a lot of work, so you could out source it to one of those places that specialize in that, a "refactoring factory". But all of that would require a proposal document...a DocumentFactoryFactory Refactoring Factory Document, if you will.

  128. Do not program "defensively" by Estanislao+Mart�nez · · Score: 1

    MOST of the problems I've come across have been people not thinking about error conditions.. they think A = B-C but don't bother to check that B or C is a value that can be used with -. you might see them check one usable value or think that the class with handle it - but they don't honestly think about it. Yes always consider inputs as bad until proven other wise but too many people think that it only applies to user inputs ..

    This philosophy leads to awful code. Yes, it is perfectly reasonable for a program core function that performs B-C to assume that B and C are valid values. This doesn't mean that programs should not take care about data integrity, but rather that data integrity checks should be segregated from problem-solving code in order to make the program easier to maintain. Otherwise, you end up with your complex computation functions being riddled with data integrity checks right in the middle, making all sorts of insanse assumptions about what should be done with invalid data. This makes the complex computational code not only harder to read, but also provides an incentive to writing that code badly.

    My most hated example is folks who write functions that, upon reaching a demonstrably bad state from which the computation can no longer recover, instead of throwing an exception do something stupid and irresposible like returning 0, null, empty string, empty list or whatever to the caller, who then runs with it and then either gets an error or produces a wrong answer. Writing "defensive" code in the way you advocate basically empowers people to write code like that, since they get to assume that it's the caller's responsibility to verify that the function's output is valid.

    So, the general architecture should be:

    1. Front-end code that validates that the user inputs are within the valid range;
    2. Internal code that assumes that input data is valid at all steps, and fails immediately if it would produce an invalid output.

    See the Erlang Programming Rules and Conventions for some versions of these principles--in particular, aon't make assumptions about what the caller will do with the results of a function and do not program "defensively".

    1. Re:Do not program "defensively" by Amouth · · Score: 1

      oh i understand - but i also know people who don't even bother..

      all i was pointing out (using a bad example) is that that the issue of writing scalable code is a different problem than getting programmers to grasp that any language you use is at it's core (as lqw said)you "must clearly and unambiguously state what you want to have happen"

      far too many programmers think they understand that and end up programing for exactly what they want in ideal conditions and never think about running in a wild world.. and you end up with spaghetti code and the crap you have listed.

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
  129. And video games by Sycraft-fu · · Score: 4, Insightful

    Very hard to find a main stream game that isn't written in C++. What with Ms pushing XNA and some other stuff like that there may start being a few more written in managed languages, but C++ still reigns supreme. Why? Speed. You can write some real efficient (from the processor's point of view) code if needed, but it still has higher level functions like being OO and the boost libraries to make thing easier.

    Even on games made to be extensible, C++ is usually at the core. Civ 4 is mostly XML and Python. Pretty much all data is stored in XML, and the interactions of that stored in Python. However, the game engine is written in C++, as is the AI's DLL. The game core maybe you argue that is because they didn't want people messing with it but the AI they released the source code for. It is C++ because speed is essential.

    Some programmers love to whine about C and C++, but they endure for many reasons. I'd also point out they form the core of most OSes. Linux is written in C. The Windows kernel is written in C, the higher level API/ABI stuff in C++ and only some of the user stuff in .NET. OS-X is again C and C++ at the low level, and Objective-C higher up. All of this is not coincidence.

    1. Re:And video games by Creepy · · Score: 1, Interesting

      Actually, his rant is about the same thing I said about C++ 10 years ago. C++ is a powerful language, but it is also an extremely bloated language, and has a lot of legacy bolted on. After using the much more streamlined objective-C it was hard to go back. To be honest, I'd say the main reason to use C++ is all OS's include libraries for it.

      Sadly, C++ is even less portable than C and included numerous questionable decisions in its design. My personal peeve is wchar_t, which has an undefined length, so localization is a pain in the rear. I also wish there was an easy way to add accessor functions, since I always bolt them on except for low level code (to make it more true OOP). Also there are many convenience classes that have never made it in - like streamlined thread and thread pool classes (therefore, you need to implement them yourself on every platform).

    2. Re:And video games by pthisis · · Score: 1

      Very hard to find a main stream game that isn't written in C++

      There are a whole heck of a lot that are written in C, and I suspect that a huge percentage of the engines that survive for a decade or more are written in C rather than C++.

      It's very easy to find C programs in general that have been maintained successfully for 10, 20, or more years; it's much harder to find C++ programs with that pedigree, and that seems to have held true in about the same margins over the past 15+ years despite the ratio of C to C++ use for new programs changing significantly. Very complex languages aren't as amenable to long-term project maintenance as simpler ones (which is one of Pike's main points).

      --
      rage, rage against the dying of the light
    3. Re:And video games by Sycraft-fu · · Score: 1

      Older games, sure, newer games, no. They are all written in Visual C++. While you could use it to write C, that's not how it goes for a number of reasons (OO is useful for interacting with Windows and DX, Boost libraries, engines). As for the engines, well go have a look. Unreal Engine 3, which has over a hundred titles? C++. Gamebryo (40 or so)? C++. Source (all the Valve games and a few others)? C++. iD Tech 4? C++.

      C++, in particular Visual C++, is just how games are done on the PC. That in turn means they are done the same way on the Xbox 360 since the dev environment is nearly the same.

    4. Re:And video games by Xest · · Score: 1

      "Very hard to find a main stream game that isn't written in C++. What with Ms pushing XNA and some other stuff like that there may start being a few more written in managed languages, but C++ still reigns supreme. Why? Speed."

      Sorry, this simply isn't true. Both Java and .NET have been demonstrated as fast enough to write games, speed most certainly isn't the issue nowadays.

      The first reason C++ is used is that C++ is still the only language that is easily ported between gaming platforms- it's the only common language for which tools exist across all consoles, handhelds, PC, Linux, and Mac.

      Secondly, all the main gaming libraries, middleware, and company's existing codebases are still written in C++, DirectX, OpenGL and so forth. Sure managed languages have their bindings, but in many cases it's a little half arsed. Doing 3D in Java is a pain because you're generally depending on JNI, and when you have to resort to JNI you're losing many of the benefits of using a manged language in the first place. C# has XNA of course nowadays, but XNA is a little limited- even if you write your game in it, writing tools is a nightmare, because XNA doesn't interface well with Windows forms, WPF and that sort of thing- whilst you can get XNA to render and interact in this environments if you're using the content pipeline to load assets for your game it's not really suited to loading things dynamically such as loading building models into a world editor for example, there are ways around it but it's more trouble than it's worth. When it comes to, it's often just easier to build games in C++ because so much existing code is already out there for it.

      Thirdly, there's the issue of skillsets, the fact is many game developers are just well versed in C++, it'll take a while to get people to change their minds, and it certainly wont happen when there's no real benefit as per points 2 and 3.

      There are other points, but these are the main reasons why C++ dominates game development. Again though, it's certainly not a speed issue, there's very few games around nowadays that need to be written in C++ over some other more modern language to perform as they do.

      I absolutely agree C++ is the language for writing games, and with good reason, but it's most certainly not because of speed in by far the majority of cases. Personally I'm of the mindset of the right tool for the job, I wouldn't use C++ to develop a general Windows app nowadays as it offers absolutely no benefit for that, but for games? It's certainly the best choice unless you have some specific reason to use another language because it's the only option- i.e. Java for a mobile platform, or C# with XNA for XBLIG.

      C++ is certainly slowly losing the amount of places where it's the best choice over other languages, but seeing as it dominated pretty much every area of software development for a few decades, it'll be a long time before it's lost it's place as the best language for every particular job, if that ever even happens at all. It's still an important language, and every developer should know how to use it well IMO, even if they don't need to use it often because they mostly just do web development or general application development.

    5. Re:And video games by ewanm89 · · Score: 1

      As computers get faster games have got more and more complicated loading bigger and bigger textures, and terrain maps. This means there is no way in hell one could make crysis or similar even playable in .NET or Java.

      There are other problems, a couple of years ago I did some procedural generation code for gaming purposes. Now this code generated large areas of terrain, which then after some rather clever algorithms would convert to triangles and pass to the GPU. Now in a computer with several gigabytes of RAM and several hundred megabyte dedicated graphics ram, .NET was telling me my arrays over a megabyte were too big to fit in memory (when loading a height map from a file, the c/c++ code behind the scenes can ignore .NETs limitations. Then even on that small area of terrain, the code was slow as hell to run. I'm now redoing it in native C++ (I wish I had done in the first place) and directx, and it's already running a lot faster, and I can actually generate sensibly large areas of terrain.

    6. Re:And video games by ewanm89 · · Score: 1

      Visual C++ doesn't really exist it's just M$ liking to name things differently, the real question is, how many of those are native compiled, and how many managed (e.g. .NET framework). Also, C++ code is only marginally worse than C (but it is worse, one need only look at the compiler's asm output of a basic hello world program to see why).

    7. Re:And video games by Anonymous Coward · · Score: 0

      "What with Ms pushing XNA and some other stuff like that there may start being a few more written in managed languages, but C++ still reigns supreme. Why? Speed."

      No. Tradition.

    8. Re:And video games by Pseudonym · · Score: 1

      Visual C++ doesn't really exist [...]

      I take it you've never had the pleasure of using structured exception handling.

      Also, C++ code is only marginally worse than C (but it is worse, one need only look at the compiler's asm output of a basic hello world program to see why).

      At the risk of stating the obvious: If you're being paid to write Hello World, then C++ is indeed probably the wrong language for the job.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    9. Re:And video games by Xest · · Score: 1

      "As computers get faster games have got more and more complicated loading bigger and bigger textures, and terrain maps. This means there is no way in hell one could make crysis or similar even playable in .NET or Java."

      What makes you think this? There's no reason .NET and Java apps can't perform to the same degree, and the amount of RAM available (and the differences in RAM available) nowadays means you're either paging or not paging, there's no real middle-case where you could just about page if only this app wasn't written in Java or .NET, that's just not the case anymore.

      Most of the rendering related processing is of course offloaded onto the GPU now anyway, so the fact that .NET and Java do garbage collection which is the only place where you see a decrease in performance if you don't manage their performance well is irrelevant because this isn't performed on the GPU.

      "Now in a computer with several gigabytes of RAM and several hundred megabyte dedicated graphics ram, .NET was telling me my arrays over a megabyte were too big to fit in memory (when loading a height map from a file, the c/c++ code behind the scenes can ignore .NETs limitations. Then even on that small area of terrain, the code was slow as hell to run. I'm now redoing it in native C++ (I wish I had done in the first place) and directx, and it's already running a lot faster, and I can actually generate sensibly large areas of terrain."

      Huh? are you really pretending .NET can't handle arrays of over 1mb? If this is what you are claiming then obviously you actually have no real understanding or experience of .NET. It sounds like you wrote some bad code if you were having these sorts of problems. Simply saying the code is slow as hell to run is rather pointless too without understanding why it's slow to run. I could write some C++ code that's slower to run than .NET code, but I'm not sure exactly what that's supposed to demonstrate other than that it's possible to write bad code in any language.

      Crysis didn't perform well in C++ relative to graphics quality either and didn't exactly look great anyway compared to some other games out at the time, so that's a poor example to use, but there's no reason the vast majority of games out nowadays couldn't run .NET or Java and be just as playable, the issue is as I say there's no real benefit to doing so because it's a lot of work to port everything over when half your code base including the core libraries you use are in C++ already.

  130. Re:We all know the ideal language has two function by by+(1706743) · · Score: 1
    So will this do it instantly...or never?

    doItRecursive(doWhatIWant) return doItRecursive(doItFaster(doWhatIWant));

  131. I have to say that.... by Burnhard · · Score: 1

    It's possible to write crap code in any language. C++ just gives you more rope to hang yourself with. For example, I was googling the other day for fast vector classes and I found this gem. I see this kind of "trickery" all over the place. The ability to obfuscate your code like this is positively encouraged in the C++ community, at least among those who do not have to maintain their own code, or other people's.

  132. This is all too familiar by microbee · · Score: 1

    I am pretty sure I heard such a speech 10 years ago, before Java came out.

    1. Re:This is all too familiar by JimR · · Score: 1

      I am pretty sure I heard such a speech 10 years ago, before Java came out.

      The first release of Java was in 1995.

      --
      #exclude <ms/windows.h>
  133. Hire me! by Anonymous Coward · · Score: 0

    Best Regards,
    Condensed matter physicist - fluent in FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95 and even some parts of Fortran 2003.

  134. And in other news... by cybereal · · Score: 0, Flamebait

    So slashdot is posting a slashvertisement for Go. Shocker. There are so many raving google fanbois here.

    That said, the points about Java, C++, and similar "do everything" languages aren't baseless. There's a lot to be said about using DSLs dedicated to specific software tasks. Reducing the domain coverage of a given tool significantly reduces the potential for doing unexpected things and adds dramatically more options for early detection of incorrect behaviors in the context of the task at hand.

    Also, offering a better opportunity for modeling algorithms in a way that best suits that algorithm is a great goal too. However, no single language is the solution that this complaint begs for. So this slashvertisement for what is effectively just another Java is pretty unconvincing.

    --
    I read the script, and I think it would help my character's motivation if he was on fire. -Bender
  135. What's wrong with the main languages by Animats · · Score: 5, Interesting

    The main problems of the major languages are known, but not widely recognized by many programmers.

    • C Started out with only built-in types, to which a type system was retrofitted. (You have to go back to pre-K&R C documents to see this, but originally, there was just "char", "int", "float", and pointers to them. "struct" was just a set of offsets, with no type checking. You couldn't even use the same field name in two different structs.) Bolting a type system onto this took a long time, and resulted in problems ranging from "array=pointer" to cascading recompilation because "include" files contain implementation details of included modules.

      The killer problems with C today mostly involve lying to the language. "int read(int fd, char* buf, size_t bufl);" is a lie; you're telling the compiler that the function accepts the address of a pointer, while in fact it accepts a reference to an array of char of length "bufl". This lie is the root cause of most buffer overflows. The other big problems with C involve the fact that you have to obsess on who owns what, both for allocation and concurrency locking purposes, yet the language provides no help whatsoever in dealing with those issues.
    • C++ Was supposed to fix the major problems with C. A few bad design decisions in the type system made that hopeless. The underlying problems with arrays remained. An attempt was made to paper that over with the "standard template library" collection classes. Collection classes were a big step forward, but they were really just papering over the moldy type system underneath, and the mold kept coming through the wallpaper. The C++ standards committee keeps adding bells and whistles to the template system, but after ten years they still don't have anything good enough to release.
    • Java Was supposed to fix the major problems with C. Java itself isn't a bad language, but somehow it got buried under a huge pile of libraries of mediocre quality. Then a template system was bolted on top, along with ever more elaborate "packaging" systems. Java ended up as the successor to COBOL, something that surprised its creators.
    • Python Python is an elegant language held back by painfully slow implementations. Some of the implementation speed problems come from the most common implementation, which is a naive (non-optimizing) interpreter, but some of them come from bad design decisions about when to bind. Late-binding languages are not inherently slow, but Python has lookup by name built into the language specification in ways which make it almost impossible to speed up the language as defined. (The Unladen Swallow team is discovering this the hard way; they're getting only marginal speed improvements with their JIT compiler.) Python also addresses concurrency badly; everything is potentially shared and one thread can even patch the code of another. The end result is that only one thread can run at a time in most implementations.
    • JavaScript A painful language which, due to massive efforts to speed it up, is starting to take over in non-browser applications. JavaScript is the object model of Self expressed in syntax somewhat like that of C. This is ugly but adequate.

    And that's where we are today.

    1. Re:What's wrong with the main languages by Anonymous Coward · · Score: 1, Insightful

      C++ Was supposed to fix the major problems with C. A few bad design decisions in the type system made that hopeless. The underlying problems with arrays remained. An attempt was made to paper that over with the "standard template library" collection classes. Collection classes were a big step forward, but they were really just papering over the moldy type system underneath, and the mold kept coming through the wallpaper. The C++ standards committee keeps adding bells and whistles to the template system, but after ten years they still don't have anything good enough to release.

      Nonsense. C++ provides excellent abstraction facilities---you're a fool if you work regularly with the low-level C constructs like arrays; unfortunately, there are a lot of fools.

      The mistake is a matter of culture: Too much emphasis has been placed on C++'s C heritage; the C fools muck everything up, and the new C++ programmers don't learn to keep out of the dirt even though C++ provides excellent boots and a well-paved sidewalk.

    2. Re:What's wrong with the main languages by anarkhos · · Score: 1

      It doesn't have to be where we are today. We seem tied to these languages because of platform support, but APIs are becoming increasingly less tied to a specific language. This is plainly evident with Cocoa, which can be coded in any number of languages using the appropriate bridge.

      Concurrency can be added at a lower level as Apple has shown with blocks, after which a higher level Python-esque language could be written to more seamlessly take advantage of it. The problem is making thread-safe APIs, not that we're tied to a specific language (except people who come out of college knowing only Java—those people are hopeless and should become fry cooks).

      --
      >80 column hard wrapped e-mail is not a sign of intelligent
      >life
    3. Re:What's wrong with the main languages by Anonymous Coward · · Score: 0

      The underlying problems with arrays remained.

      Nonsense. C++ provides excellent abstraction facilities---you're a fool if you work regularly with the low-level C constructs like arrays; unfortunately, there are a lot of fools.

      I bet you think you refuted the parent's point, but you really didn't.

    4. Re:What's wrong with the main languages by Anonymous Coward · · Score: 0

      Go Haskell?

  136. At least give Rob Pike credit... by cpghost · · Score: 1

    ... where credit is due. I'm still having his "The UNIX Programming Environment" book from 1984, co-authored by Brian W. Kernighan. Google has undeniably good engineers, but Rob was famous long before Google emerged at all.

    --
    cpghost at Cordula's Web.
  137. lol by Anonymous Coward · · Score: 0

    If C++ and Java are "too hard" for him he should find another line of work. Retard developers... jeez

  138. I call it by Sycraft-fu · · Score: 1

    "Smartest Motherfucker in the Universe Syndrome" and many programmers are afflicted. They think they are so much smarter than everyone else. So any time they hear about a program having bugs or a security hole or a slowdown they say "Man the programmer that wrote that is an idiot! I could do so much better!"

    Of course, they are not nearly as smart as they think they are, and have plenty of bad practices, bugs in their code, etc. they don't notice any of it, of course, because they believe what they did was great because of how smart they are. They can come up with a million tortured justifications for what something is how it is, or they'll just tell you that you are wrong.

    Very, very common with geek types, probably because they tend to have an above average intelligence and thus are smarter than many people they meet and below average social skills.

  139. Speed? What speed? by mangu · · Score: 1

    With the speed of todays computers, though, you shouldnt (usually) need that amount of optimization.

    After about eight years stuck at the same speed, I wonder what do you mean by "today".

    Yes, yes, I know all about the Megahertz Myth. But that's the marketese speech for evading the issue. The fact is that the "Megahertz Myth" is a myth. It's obvious that, all other parameters being equal, doubling the CPU clock will double your performance. It was only when some companies couldn't keep increasing the CPU clock that they invented this lie that megahertz don't matter.

    The problem with increasing performance by other ways than raw CPU clock is that it will not necessarily translate in performance increases for all applications. Apple and AMD had to carefully construct their benchmarks to justify this pseudo-myth.

    It's true that, with the CPUs we have had for a decade now, many tasks can be done easily with interpreted languages that weren't possible before. That may be true for many corporate desktop applications, no one will care too much if it takes one or two seconds to get a list of how many "snibbo" widgets were returned for maintenance last month.

    However, there are still many applications where CPU performance still falls short of the ideal. Improving those applications demands a language like C, because with "higher level" languages it's harder to get increased performance from parallelization. It's not always obvious which operations can be done in parallel and unless interpreters become a lot more efficient at this, there will always be room for compiled languages at the top.

    1. Re:Speed? What speed? by cheesybagel · · Score: 1

      No, the real issue is that to increase clock rate you have to increase the voltage. Power draw (and dissipation) increases to the square of voltage. Eventually you start to need using water cooling, or more exotic refrigeration techniques to cool the processor. This increases costs significantly, increases the size footprint, and reduces the amount of possible market applications. As CPU power consumption increased, clients also got increasingly more interested in performance per watt, rather than raw peak performance numbers. In today's world where people increasingly are replacing their desktops with mobile laptops, this is even more important.

      The fact is the fastest (in clockspeed) processor available today is probably the 4.14 GHz Power 7 CPU from IBM. Not anything from Intel, or AMD. However this is a server processor with an expensive cooling system which is too expensive for the average Joe to own.

    2. Re:Speed? What speed? by clone53421 · · Score: 1

      That graph completely ignores the number of cores in the CPU.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
    3. Re:Speed? What speed? by mangu · · Score: 1

      That graph completely ignores the number of cores in the CPU.

      That was exactly the point. You didn't read the post, did you? I will quote:

      "It's obvious that, all other parameters being equal, doubling the CPU clock will double your performance"

      Changing the number of cores in the CPU changes other parameters. What I said was that doubling your CPU clock will automatically double performance, assuming the rest of the system can keep up with that increased speed. The real problem is keeping the rest of the system up to the increased CPU speed.

      On the other hand, doubling your number of cores will NOT NECESSARILY double your performance. Unless you have an application that has an intrinsic benefit from multiprocessing, AND that application has been designed to use multiprocessing, you will get only a marginal improvement, if you get any improvement at all.

    4. Re:Speed? What speed? by mangu · · Score: 1

      The real issue is that to increase clock rate you have to increase the voltage

      Wrong. At least not in recent decades. Increasing voltage to get higher speed was done in CMOS chips about 30 years ago, but that's long gone.

      The era of 5 volts digital circuits is dead, current CPUs work at 3.3 volts and DDR memories work at 1.5 volts or less.

    5. Re:Speed? What speed? by clone53421 · · Score: 1

      If you are running one application, then yes, it has to be optimized for multi-threaded execution or you won’t get the benefit of your multiple cores. However, most people are not running just one application – at the least there is the OS with all of its background services and tasks running in addition to whatever application you’re running.

      --
      Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
  140. I think it stems from a common problem by Sycraft-fu · · Score: 1

    And that is not understanding how a computer really thinks. What I mean is how a processor actually deals with data, how a program flows at the lowest level. I'm not saying everyone needs to be an assembly head, but there needs to be a good understanding of the fundamental realities of a computer. The reason is that a higher level programming language is just an attempt to make all that easier for humans to deal with. They can use a syntax that is easier for a human to create (rather than the extremely atomic nature of machine code), they can add features that are nice models for things we use (like objects), and they can enforce standards (like variable types) to keep us from screwing up as easy. At the end of the day though, they have to translate that all down to machine code and you have to play in the computer's world.

    What that means is you have to have certain concepts, like exceptions. You can't have something where the language is told "Do this and if it does work, figure out why and make it work." Computers can be told to do something and if it doesn't work, it doesn't work. They have to have instructions as to what to do next or it just fails outright. That is just how it goes at the base level.

    As such, languages are going to be a bit complex by their nature. They have to have all the complexity needed to deal with what the CPU does. Also, they probably have to have additional complexity to try and make things easier for humans.

    It is just a balancing act and there isn't an ultimate perfect right answer. However trying to go all minimalist and cut out necessary shit is NOT useful because you just end up either making it hard to impossible to do things, or making more work for the programmer. Assembly is minimalist, look where that gets you.

    We can't have a truly easy AND powerful language until we have AI. What we'd like is to be able to explain things to a computer in vague, human, terms and have it work with that. We can't do that yet, and who knows if we ever will. So for now, languages have to be a compromise between what humans want and what computers need. That means some complexity, and it means some concepts that humans may not be as familiar with. That's life.

  141. Re:We all know the ideal language has two function by matfud · · Score: 1

    They are called domain specific languages and are often very useful

  142. Crap! by martin-boundary · · Score: 1

    Looks like slashdot isn't C++ friendly.

  143. Re:We all know the ideal language has two function by OeLeWaPpErKe · · Score: 1

    You sound like exactly the kind of programmer we want ! How about an interview ? We'll pay the flight to redmond.

  144. This is an ongoing trend by ab8ten · · Score: 1

    This is just a symptom of the trend for programming languages to be as abstracted as the apailable computing power allows? Computers are now powerful enough for programming to be done entirely without the use of lines of code. Just like the generational changes from assembler to compiled code to interpreted code, the next jump will be to a programming method that requires even less technical skill. Maybe. We'll see soon, i hope!

    --
    I have no .sig
  145. This is something new by freeman-sr · · Score: 1

    I knew it was only the matter of time when somebody with a good pedigree will again hit C++ in favor of C or Java or... Python? (meh)

    But to hit Java and C++ at the same time, that is something new.

    --
    ++
  146. "Product" by weston · · Score: 2, Insightful

    Oh, so he's pushing a competing product and denigrating his competition?

    "Product" is a pretty poor word choice for something that's given away in the way Go is. Pike doesn't really have much more to gain than *you* do from the adoption of Go and reduced use of C++ and Java.

    Nothing to see here, I think.

    Only if the substance of his criticism doesn't hold up. My experience suggests his objections are apt, and I might add that a casual dismissal of work by Rob Pike and Ken Thompson reflects more on you than them.

  147. Re:We all know the ideal language has two function by PixieDust · · Score: 1
    Oh I know the song...

    It just FEELS like "hour after hour work is never over".

  148. We need a new system language by cheesybagel · · Score: 1

    C is full of baggage. The worst of it is the standard C library. From functions which do no bounds checking (vulnerable to security exploits), to a standard string library which was made for single byte ASCII encodings. In today's global world Unicode support is essential.
    There are other things which are not in the basic C language but should: parallel programming support, sockets, a type system which more accurately reflects modern CPU architectures (where are the vector types, POPCNT, or FMA?).

    C++ on the other hand has an overly verbose syntax, mixes data declarations with code (which makes compilation slow and code reviews cumbersome), has brain damaged standard I/O (C++ streams are horrible). C++ does not actually fix any of the actual issues in C, but adds tons of cruft in an attempt to improve the expressiveness of the C language while mostly failing. Oh and get this ISO C committee. I do not need to be able to declare my variables anywhere. Variable length arrays, now that was actually an improvement.

  149. He's Right + MY 2 CENTS by aaaaaaargh! · · Score: 1

    Java and C++ are bloated piles of crap, anyone with more than a decade of programming experience knows that. (I'm currently using C++ as my main development language so don't get me wrong.) He's also right about scripting languages, their performance mostly is shit. ("B..b..but Python with the new JIT compiler..." I hear them say. My reply is: "Oh yeah, well, I'd say it's a SHIT compiler, not a JIT compiler!")

    Anyway, from time to time I enjoy checking out a programming languages I didn't use before. And like many people over the years I've used many and taken a look at even more of them. So I thought I'd share my opinions in a good old Usenet-style fashion, starting an immediate programming language flamewar. For a start, I still haven't found one that I really like, although most of the time the problem is not the language itself but the (lack of) support libraries anyway. Functional programming languages like Haskell or ML are nice and fast, but sometimes you just need mutable data structure for efficiency. They also far too often rely on arcane and overly complicated concepts. (Monads anyone? Why not program directly in category theory instead?) Lisp and Scheme are also nice but too dynamic - even with test suites you miss too many bugs. I haven't tried typed Racket yet, but knowing the traditional Racket (formerly Plt Scheme) quite well I suspect the typed version is just too much of an `addition' on top of the untyped language.

    Now here is the language that I'd like to see but just doesn't seem to exist:

    • modern: all common datatypes (mutable and immutable), call/cc, extensible, cross-platform, higher-order functions, iteration and accumulators over sequences, reasonable exception system, pre- and postconditions, sequences,...
    • strongly typed: I want it as strongly typed as possible, no implicit conversions and I don't care about hancy-fancy stuff like polymorphic types or type inference (although it doesn't necessarily harm)
    • fast: within the dimension of speed of C, Haskell, Ada, Fortran (doesn't need to be the fastest one, but not as slow as for example Python)
    • low and high level: ability for low-level programming in special unsafe
    • batteries included: sure, it takes a while to make all those libraries, but at least the language community should have the right attitude
    • rock-solid module system: a simple module system that just works - with no exceptions or quirks; there is a language core and the rest are modules and I can import everything, rename imported symbols, etc.
    • extremely simple: the language must be as straightforward as possible, no weird syntax, no overintellectualized programming constructs, just plain old imperative programming
    • parallel programming enabled: doesn't need to be the most advanced parallel programming implementation but there should be good support for parallelism within the core language
    • syntax: irrelevant (personally I prefer sexpressions but in the end it really doesn't matter, does it?)

    That's it. I know that a new language is not strictly speaking needed but I'd surely like to see one with the above features. Any volunteers? :*)

    1. Re:He's Right + MY 2 CENTS by shutdown+-p+now · · Score: 1

      You really don't want call/cc, it's a perf killer - it needs a spaghetti stack, and that's not easy to optimize, especially with separate compilation (since you pretty much have to assume for any function that it can end up on the part of the stack covered by call/cc).

    2. Re:He's Right + MY 2 CENTS by Anonymous Coward · · Score: 0

      Uh, in interpreters and in compilers targeting reasonable hardware your Scheme stack is typically a list (top of stack is the CAR), and a good optimizing implementation for unreasonable hardware might substitute a vector and counter where that performs better (which usually is architecture and sometimes foreign language calling convention dependent) and often enough one can use special-purpose hardware stack instructions and registers for that.

      A Scheme->machine-code compiler has a lot of flexibility in how it uses the hardware stack; another popular approach is to use the hardware stack mechanism to implement an allocation pool for short-lived objects in a generational collection system.

      Scheme->C (or other similar intermediate languages) are stuck with the intermediate language's runtime stack, which limits some flexibility. At least a couple of implementations treat the C stack as an arena for new object creation. Usually this is done by the Scheme->C (for example) compiler rewriting (and rererewriting) the Scheme into continuation-passing style (CPS) before mechanical compilation into a style of C that defers "return();" allowing the C stack to grow to some threshold at which point live young objects are copied to the heap and "return();" does all the stack clean up. Spaghetti is handled mechanically and it is straightforward to preserve good memory locality for hot young objects (slide them up the C stack rather than copying them into the heap), and it is also easy to keep the stack memory hot enough that it is well cached.

      Even Scheme->X, where X is an intermediate language which has a very flexible stack system, can benefit from Scheme->Scheme transformations into CPS, since it helps with a number of optimizations, including making it much easier to handle CALL-WITH-CURRENT-CONTINUATION, since the CURRENT-CONTINUATION is *always* a function argument and thus available in scope and probably on the machine stack. Other optimizations are easy with CPS, since every call is transformed into a tail call, and thus can be transformed into a machine language jump instruction, or a goto in an intermediate language.

      Some of this has been discussed by e.g. Baker, Rees, and Kelsey since the 1980s, and arguably back to Steele's work on lexical scoping in CHEAPY and RABBIT in the late 70s. Kelsey's doctoral dissertation details transformation of almost arbitrary code into a Scheme-like CP style language, and uses BASIC and Algol68 as examples. Spaghetti stacks are not really a problem.

  150. Disappointing read. by Kaz+Kylheku · · Score: 1

    Same old tired, outdated stuff! Yawn.

    ``C++ and Java (in past years or decades, Pascal, Ada, or whatever) are too big, complicated and declarative. [Unassailable Axiom]

    Dynamic languages are nice but are interpreted and have no static checking. [Please, believe me, I'm a famous programmer.]

    Enter Wonder Language. Fixes all these problems. [I promise]''

    1. Re:Disappointing read. by Vexorian · · Score: 1

      I'd like to subscribe to your newsletter. Seriously.

      --

      Copyright infringement is "piracy" in the same way DRM is "consumer rape"
  151. Re:We all know the ideal language has two function by 16384 · · Score: 1

    My favourite is still:

    Branch on Bug

  152. here's the video by Anonymous Coward · · Score: 0
  153. Re:We all know the ideal language has two function by ProfessorKaos64 · · Score: 0

    Oh ok haha, sorry then man, carry on :B

  154. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    Don't forget

    addTheLifeSavingFeaturesINeed ButThatBloatTheOtherGuysWantAboutFuggedabodit

  155. Re:We all know the ideal language has two function by sjames · · Score: 1

    OH, you said FOObars!

    Now you just need to derive a Foobar class that includes a FoobarFactoryFactoryFactory method (oh, and emacs). Of course once you add emacs, you can just implement the Foobar within the lisp interpreter within it's own emacs method.

    But yeah, FoobarFactoryFactory is exactly the sort of thing that's wrong with Java.

  156. Re:We all know the ideal language has two function by dkf · · Score: 1

    I'm not even sure why I used "foobar". The actual class name is "DocumentFactoryFactory". ... not much better.

    You could do some refactoring...It'd probably be a lot of work, so you could out source it to one of those places that specialize in that, a "refactoring factory". But all of that would require a proposal document...a DocumentFactoryFactory Refactoring Factory Document, if you will.

    Why stop there? With only a little more abstraction you can have a DocumentFactoryFactoryRefactoringFactoryDocumentStrategyBuilderFactory. Next up, the Systems Hungarian annotation for that marvel of modern software engineering!

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  157. How did we end up teaching and using them? by plopez · · Score: 1

    Here are my thoughts on the matter.

    COBOL and FORTRAN came out and BASIC was created to teach it, it combined features of both. Many students took one intro course and that happened to be BASIC. When they graduated and the time came to do a programming project, BASIC was all they knew and so all that was used. BASIC, and the programming paradigm it was built around went into production. It was never intended for production uses.

    The same thing happened with PASCAL. It was intended to be a teaching language but was put into production by the clueless.

    OOP came along and everything shifted to C++ for many of the same reasons. The JAVA showed up, repeat the cycle. Java is now being used for large apps., when it first appeared it was intended for small scale internet apps. It was pushed into areas it wasn't intended for originally.

    The feedback part of the cycle was that these projects then required people trained in that language and paradigm.

    Another part of the problem is that many of those teaching programming don't know anything about managing projects.

    That is how we got here. And in fact most of the code I've seen, and code I wrote when I had less experience, is nothing more than COBOL "in drag".

    --
    putting the 'B' in LGBTQ+
  158. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    Oh dear, you're not part of the Windows Communication Foundation team are you?

    I have this exact situation. I've spent the last 3 days reading about how bindings create binding elements that create channel listeners and/or channel factories that create one of about 7 different channel classes that may or may not do some sort of processing on the messsage that ultimately gets sent to the transport channel. And thats before taking behaviours and contracts into account. "Enterprise Ready" code sucks when all you want to do is search/replace to change a namespace before the message gets sent to the transport :(

  159. I agree that C++ sucks and I feel really alone... by AthleteMusicianNerd · · Score: 1

    The computer should never be allowed into an erroneous state. If an instruction does do that, it should not be allowed. So for example, if I do

    #include "SomeHeaderFile.h"
    and end up with a compiler error that SomeHeaderFile.h is not found...that means the IDE allowed me to do something stupid. Furthermore, it should know about possible dependencies and lead the programmer to possible dependencies.

    If a function signature is
    void MyFunction( int iParamOne, int iParamTwo );
    and I do something like
    bool bParam = false;
    MyFunction( bParam, 1234 );
    the IDE should stop me.

    char* pLetters = new char[64];
    pLetter[65];
    Even the worst programmers might not do this, but I'm just making a point. Anyway, etc... with these types of ideas.

    Almost every bug on the planet is a result of something stupid that really could be detected by the IDE/Compiler. I've never seen someone find a bug and say "My code was brilliant" These types of things shouldn't even be happening anymore.

    The reason I feel really alone, is that everyone I know thinks these kinds of things are no big deal. Even if you waste 5 seconds as a programmer, that can add up to significant amounts of time and brain cycles.

    One should never perform the same task twice on a computer, else they have missed the point of automation.

  160. Everything should be made as simple as possible by hviniciusg · · Score: 1

    but no simpler, Albert Einstein said that. and i think that the choice of the language and abstraction level should be choose d according to the problem.

  161. "All languages suck" by nurb432 · · Score: 1

    "Except mine. I wrote GO, its the holy grail."

    *yawn*

    --
    ---- Booth was a patriot ----
  162. Java Class Library is insane! by TheSync · · Score: 1

    The Java Class library is huge, overly complicated, and incredibly difficult to learn how to use.

    It could use a goodly amount of flattening.

  163. Perl is more than one language by Crag · · Score: 1

    It is a cryptic (to the uninitiated) but handy quick-n-dirty tool:

        perl -pne '
            s{\\}{/}g unless /^\s*#/;
        ' < pathlist.old > pathlist.new

    And it is a full-featured, easy to read and write modern language:

        perl -e '
            use MooseX::Declare;

            class Replacer {
                has skip => (isa => "RegexpRef", is => "rw", default => sub { qr{^\s*#} });

                has from => (isa => "RegexpRef", is => "rw", default => sub { qr{\\}    });
                has to   => (isa => "Str",       is => "rw", default => sub {   "/"     });

                method filter (FileHandle $in, FileHandle $out) {
                    while (<$in>) {
                        s/$self->from/$self->to/g unless /$self->skip/;
                        print $out $_;
                    }
                }
            }

            my $replacer = new Replacer;

            $replacer->filter(\*STDIN, \*STDOUT);
        ' pathlist.old > pathlist.new

    These two blocks of code do the same thing: replace back slashes with slashes
    on all lines not starting with zero or more whitespace characters followed by
    a hash character.

    No language can be all things to all people, but Perl is currently all things
    to me.

    1. Re:Perl is more than one language by arivanov · · Score: 1

      You just demonstrated the biggest problem with perl from the perspective of an incompetent software development manager.

      Incompetent software development managers expect that the language will define and enforce the coding standard for them.

      No language ever does. You can write unmaintainable gibberish in Java, C++ or any other language for that matter and Perl is no different.The sole reason Perl is in pole position in the hate list is that gibberish can be delivered faster than in any other language so the manager blood pressure does not have the time to drop between wind-up events. What the pseudomanager is missing however is that "proof of concept" quality and even "production quality" code can be developed similarly fast. It takes a man month to develop the network side of a production quality network provisioning framework with perl. It takes tens of man years to do the same in Java and hundred in C++.

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
  164. There are decent languages. by hendrikboom · · Score: 4, Insightful
    In the 70's, I wrote a parser generator. It was about 1000 lines long, and it took 25 tries to get it past the static checking of the compiler. After that, it ran correctly the first time I got to run it.

    The language it was written in was Algol 68. What contributed to my success was an expressive static type system, and garbage collection. Unless you specifically turned run-time checking off, you could not break the run-time system.

    Oh, and did I mention that the compiler generated low-level efficient code as well?

    But there are few Algol 68 compilers around these days.

    Looking to what *is* available nowadays, have a look at Modula 3. It's not my favourite style of syntax, but programs written in it tend to run fast and be easy to debug. Again, most of the bugproofing lies in the static checking and garbage collection. And it's a systems language. It has been used for implementing OS kernels and the like, as well as application programs. It's my language of choice at the moment. Get the CM3 implementation. Follow the link in the Wikipedia article.

    Another attractive language is OCAML. I haven't much experience with it, but it seems to share the behaviour I've grown to love with Algol 68 and Modula 3. If anything, though, OCAML does too much automatic type inference. This leads lazy programmers to forget to mention types at many strategic code locations. making the code unnecessarily obscure.

    1. Re:There are decent languages. by shutdown+-p+now · · Score: 1

      The language it was written in was Algol 68. What contributed to my success was an expressive static type system, and garbage collection.

      I really don't understand all the dice Algol 68 was getting at its time (and later). I never coded in it, being born several decades after its appearance, but I've read the spec and found it to be quite a neatly designed language with many ideas "ahead of its time". The irony is that C borrowed so much from Algol 68, and most of those borrowings are now hailed as part of C's overall success, while most people remember Algol as "that overcomplicated language that Dijkstra criticized".

      Another attractive language is OCAML. I haven't much experience with it, but it seems to share the behaviour I've grown to love with Algol 68 and Modula 3.

      OCaml is great, but not as a low-level language. Its float arithmetic has sucky performance, and it doesn't do true separate compilation for polymorphic functions last I checked.

      That said, its object system is truly a gem. I didn't realize you could have such pervasive type inference and OO at the same time - structural typing is the key.

    2. Re:There are decent languages. by hendrikboom · · Score: 1
      Yes, Algol 68 got a bad press. It was a good language to use, but it had were problems:

      Its defining document, The Report on the Algol 68, was really hard to understand. If you studied it intensesly, you'd get a feel for its defining formalism and the structure of the language in about four months. I strongly suspect the bad press it got (like Dijkstra sadly shaking his head and telling me it was a mistake) was more about its method of definition than the language the editors tried to define. It was, quite simply, too hard for WG2.1 to read the document and seee the language lurking behind it. The Report was too obscure for them to be sure that the language it defined was the language intended.

      Much of these problems were dealt with in the Revised Report, pubblished about 7 years later.

      The second problem was that it was too hard to implement, often because of details that had nothing to do with the intent of the language, And thse problems didn't in any way interfere with its use, once you *had* an implementation.

      For example, square brackets were used to wrap subscripts, array bounds, and thinigs like that. Round parentheses were used for most other bracketing constructions. But, as a concession to those who did not have square brackets on their character sets, round parentheses could be used in place of square brackets. It turned out there were a few situations that were really hard to parse. Is *was*n unambiguous, but in the compiler I wrote, it took ten pages of code to resolve the ambiguity.

      Things like this didn't help make it available to a large user community.

      -- hendrik

  165. That wasn't Pike, JavaScript ain't bad by weston · · Score: 2, Interesting

    It was actually Adam de Boor who discussed JavaScript.

    And while JavaScript has its warts, all in all, it's a pretty nice language. If gmail is 400k+ lines of code in JavaScript, it would have been well over a million (if not four million) in Java.

  166. Abstraction levels. by hendrikboom · · Score: 1

    Which does suggest that a good language should be capable of many different levels of abstraction, as required by the problem. In particular, the language shouldn't be what determines how you chop the problem into modules.

  167. I share his feelings ... by jopet · · Score: 1

    As somebody who had programmed, apart from C, C++ and Java a lot in LISP, Ruby, PROLOG, and OCaML (and a dozen others) I have had those feelings about C++ and Java for years. Larry Augustin is wrong about why these languages are so clumsy, verbose and subtle: it is because they are simply badly designed from start or because they inherit bad design from very old badly designed languages they want to be similar to.

    Personally I think that Scala is a very good candidate for a language to solve most of the problems with C++ and especially Java. It is well designed, modern (supporting closures, currying, actors, pattern mathinc and more), without inconsistencies (like some things being objects and others not) has a lot of very useful language features and since it runs on the JVM it provides an excellent way to stay compatible with your existing Java software and gradually move to Scala.

    I do not know GO nearly enough to comment on it.

  168. verbosity by Anonymous Coward · · Score: 0

    "I think these languages are too hard to use, too subtle, too intricate. They're far too verbose and their subtlety, intricacy and verbosity seem to be increasing over time,"

    I think these verbose languages are too hard to use, too subtle, too intricate, too verbose. They're far too verbose and their verbose subtlety, verbose intricacy and verbose verbosity seem to be increasing over time

    increasing verbosity, you say

  169. Re:We all know the ideal language has two function by Darinbob · · Score: 1

    doIntegrateUnspokenUserRequirements();

  170. woo hoo! by Uzik2 · · Score: 1

    At least there's one more old fogie out there. I have to agree but I don't think it's the language that's the problem.
    It's the keyboard jockeys who insist that everything has to include a pattern of some sort or it's archaic crap.

    --
    -- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
  171. Re:I agree that C++ sucks and I feel really alone. by thoughtsatthemoment · · Score: 1

    Sorry to say this, but you feel alone is because you are too green in programming. Do more, a lot more coding and you'll feel nothing is out of the ordinary.

  172. typical ignorance by yyxx · · Score: 1

    One of C's great advantages is not only that it is simple and very fast,

    What you say was true in the 1980's on the PDP-11. Today, C is a complex language; if you think it's simple, you don't understand it. It's complex because its semantics are so subtle: a lot of things are implementation dependent; they seem to work until you port your code. Furthermore, C is not an "efficient" language. On modern hardware, you need excellent optimization, but C's semantics make good optimization quite difficult.

    It is possible to have a powerful, low-level, simple language; C isn't that language, not even close.

    That whole too complex thing... what, was he hired by Google as a janitor?

    Here's the Wikipedia entry on Rob Pike. Any experienced C/UNIX programmer should know who Pike is. He has been programming in C even longer than I have (I'm going on 30 years of C programming).

  173. C++ too complex? Maybe! by kheldan · · Score: 1

    It's been a long time since I learned programming in C. Note I said "C", not "C++". C++ was new when I was learning. I learned C, then I took a look at the plus-plus extensions since the compiler I was using (Borland C++) supported it. After I got the gist of it and wrote some small programs using it, I said "Gee, that's nice, but it's the long way around unless you're working with really complex data" and never used it again. I still feel that way about it: being able to overload otherwise garden-variety operators to work with complex data is really cool, so are the other features of C++, but for many things they just aren't necessary and shouldn't be used.

    --
    Are YOU using the TOOL, or is the TOOL using YOU? Think about it!
  174. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    See, I'm already thinking about extentions.

    doWhatIWantEvenThoughImTellingYouToDoSomethingElse()

    Too bad my wife already has a patent on that one!

  175. Re:Complex? Difficult? Since when? by luis_a_espinal · · Score: 1

    Segmentation Fault

    Despite their underlying simple syntax (which it is) C++ is complex as a whole. Same with Java. Any hack can program to their heart (read paychecks) content, but not everyone knows how to actually use these languages well and appropriately.

  176. Do you know who Rob Pike is? by Demena · · Score: 4, Insightful

    Do you know who you are dissing? Did you read the article? No, and no. He never said anything against C, he said C++ was too complex not C. So you echo him and slag him off over your misreading at the same time? One of the founders of your profession? Standards dropped? Yep, sure. But whose?

  177. Exactly what I'd expect to hear from an engineer. by Anonymous Coward · · Score: 0

    Next he tells me he wants computer scientists and programmers to solely use LabView and MatLab.

    Gee..

  178. meh by Vexorian · · Score: 1

    I guess goog were hoping a lot more people to jump to the Go bandwagon just because they announced it. Yet it really didn't happen... I don't think bashing other languages is really going to improve on it.

    Both c++ and Java have their strengths and uses. Java is IMHO HORRIBLY ANNOYING TO CODE IN, but that's actually its strength, it just won't let cowboys get away with doing the things they love to do. Sure, it has been lacking in things, but they update it around, the following update will have some very nice syntax for some data structures (it will get more complex).

    The C's also have the advantage of being closer to the hardware, sure you don't need that most of the times, but when you do, they become a great tool in your box, really. It has improved a lot over the years (also known as getting more complex).

    Interpreted languages cover for their downfalls when you don't need performance or want to do fancy things with paralel programming. Which is good. Python goes around also improving and getting more complex.

    And there lies Go. Its main advantage over other langauges is exactly that. As it is basically undeveloped, it is much closer to what its creators originally wanted it to be. The thing is, that once it starts getting used, and users notice that for example it is pretty necessary for a compiled language to have say generics or exception handling... it will forcefully have to end getting modified and improved and thus it WILL become complex. I do not think that advertising it as "simpler" will work out as since it is a langauge that is intended to be used it is basically doomed to become more complex and thus this selling point will necessarily die. They should advertize it for its superior parallel computing and fast compiler speed, but simplicity... is just a bad idea.

    --

    Copyright infringement is "piracy" in the same way DRM is "consumer rape"
    1. Re:meh by Anonymous Coward · · Score: 0

      I agree, with almost all your points.

      With over 2 decades of programming experience I believe the most important things in a langage to facilitate reliable programs are:

      - exception handling
      - garbage collection
      - generics

      All of these can be found in Java en C# and C++ if you use an external GC. I myself prefer C# since its syntax is closer to that of C++ and 'purer.' However, it has its drawbacks as its not cross-platform and much slower than C++.

      I looked at Go as well, but was disappointed by its insistence of being different for the sake of being different. It's certainly not as revolutionary as Java when it was introduced in 1995, more like Yet-Another-Obscure-Language-No- One-Will-Use-In-The-Real-World. As many have inferred Pike is making noises because Go fell out of the top-10 of most popular languages recently. He knows that if its popularity doesn't rise quickly Google will probably kill it.

      If there was one language I could advice people to learn it's PYTHON. It's great for quick prototypes and has the must-haves except Generics.

  179. Umm... by deesine · · Score: 2, Insightful

    pretty well, actually.

    --
    damaged by dogma
  180. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    you mean fork and kill?

  181. Too hard? by DreamArcher · · Score: 1

    Read between the lines. He doesn't think these languages are too hard to use for him, he thinks they're too hard to use for normal people.

  182. Re:We all know the ideal language has two function by shutdown+-p+now · · Score: 1

    On one hand, sometimes you really need such genericity.

    On the other hand, every time you actually write a factory by hand, you need to keep in mind that the reason isn't because that kind of mundane work has to be done by a human, but because your language doesn't do its job due to it being oversimplified, and its features not good enough to express this kind of genericity explicitly, letting the compiler do all the actual work of generating repeating code (and folding it where it's duplicated). Java is a very good example of that, but most mainstream languages are guilty of it to one extent or another.

  183. Re:We all know the ideal language has two function by HeronBlademaster · · Score: 1

    ... Next time I'm looking for a job, remind me not to work for Microsoft.

    This is off-topic, but you made me remember it...

    CString, from MFC (you should all be shuddering right now) had a bug where under the right set of conditions, you could accidentally erase the data in every CString instance in your program. This becomes problematic in million-line programs.

    I still haven't figured out why Microsoft didn't just use std::string.

  184. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    Can I use this extension as a signature? It reflects my corporate overlords' current philosophy exactly... only they call it "Urgency"

  185. The more I learn about C++ ... by Anonymous Coward · · Score: 0

    ... the more I like Object Pascal.

  186. Re:He's right. Code in C. by shutdown+-p+now · · Score: 1

    Indeed. If you want to shoot yourself in the foot - and you know you're going to do that, sooner or later - why not pick the most elegant and traditional tool for that? ~

  187. Re:We all know the ideal language has two function by bigngamer92 · · Score: 5, Funny

    And I was thinking something a little more classy:
    neverGiveThisUp(You);
    neverLetThisDown(You);

  188. I find this comment hilarious by Kagetsuki · · Score: 1

    At this point I have used both OpenCOLLADA and OpenSocial from Google, and both I found overly complex and bizzare - as if their developers didn't understand how to write a clean API. They really feel to me like they were written by a graduate student who's experience with API coding up to that point was limited to a few College courses.

    Now, as an application developer I really appreciate the power C/C++ affords me. Thread handling in C++ has been clumsy without libraries like boost::thread, but it's getting better and for obscenely complex threaded applications you can combine languages like OCaml and C++ with wrappers. I didn't RTFA because from the title I can tell it's another "I used this super high level language and it runs like crap but the code looks really pretty so I like it" article. I have two things to say about that:
    1. If you are a competent low-level coder who just blows off all high level languages - learn Ruby: it's powerful and gorgeous and lets you code magnificently elegant software like you are creating art all without taking away control.
    2. If you can't stand the complexity of C/C++; stick to coding applets and flash because you are not mentally capable or not properly trained at writing heavy system code. If you have never written an embedded C application with inline assembler, have never had to process data at the bit level, or don't fully understand what a "register" is or how to use one then you have no right to badmouth C. If you have never written a complex modular application that requires both high level interfaces and extremely fine control of hardware and memory then you have no right to badmouth C++.

    So I guess my point is "shut up and just use the right tool for the right job".

    1. Re:I find this comment hilarious by Anonymous Coward · · Score: 0

      You are stupid and wrong.

  189. C/C++ brittle Re:C too complex? Hilarious. by WolfWithoutAClause · · Score: 1

    They're harder because their brittle as fuck.

    Show me virtually any large C program and I'll show you one that can crash, hard, due to pointer errors or similar.

    The choices the language designers made, in many cases were baroque and atrocious, and the default behaviours if you make trivial mistakes or omissions will usually destroy something, often subtly, and often cause a crash a long way away from where the error was. This can make debugging 'entertaining' to say the least.

    And C++ is if anything worse.

    Java is a lot more robust, but annoyingly verbose, but even that has its problems.

    Really, there's no good industrial-strength robust languages in common use.

    Still, dealing with this mess keeps SW engineers employed, so it's not all bad.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  190. A coder is a high level language by Anonymous Coward · · Score: 0

    for their boss to program with

  191. Re:We all know the ideal language has two function by noidentity · · Score: 1

    We all know the ideal language has two functions:

    doWhatIWant()
    and
    doItFaster(doWhatIWant)

    Wow, I just came up with a way to halve the size of the language! Instead of the special-case doItFaster(), we can just write doWhatIWant("faster")(doWhatIWant). Bam!

  192. Do you know who Rob Pike is? by anti-NAT · · Score: 1

    http://cm.bell-labs.com/cm/cs/tpop/ - Kernighan is the Kernighan from K & R. I doubt Kernighan would co-author a book with an amateur ...

    Here is his bio - http://herpolhode.com/rob/ . I doubt you'd be hiring a bad programmer.

    --
    The Internet's nature is peer to peer - 20050301_cs_profs.pdf
  193. Limited application by Anonymous Coward · · Score: 1, Insightful

    This only applies to those of limited intellect.

    This shows limited intellect: 'How do we have stuff like this [get to be] the standard way of computing that is taught in schools and is used in industry?'

    School teaching and industry isn't perfect, neither is any programming language, but there is an extent to which in programming one can no longer advance in a language without understanding of the underlying principles.

    Although not fully, for any scripting language there will be a vast swath of underlying operations that are based on the same system characteristics that Java and C++ express, being more of a reflection of the hardware.

    Scripting languages already have poor performance. Out of sight out of mind will only sweep it under the rug for someone to trip on later.

  194. Re:Complex? Difficult? Since when? by TangoMargarine · · Score: 1

    Illegal character in numeric field? Or maybe that's just the COBOL compiler I had to use...one would hope that a better environment would provide more than a single possible error message and a highlighted line the most horrid shade of dull maroon regardless of what you f**ked up. Not quite as fun as assembly, but getting there...

    --
    Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
  195. Re:We all know the ideal language has two function by TFGeditor · · Score: 1

    print "Hello World!"
    end

    REM And even "end" is optional.

    --
    Ignorance is curable, stupid is forever.
  196. Are 3GL's and API's sufficient? by mchnz · · Score: 1

    Are we stuck in a general purpose 3GL+API rut? Rails, Django, HTML and SQL show that stepping beyond a general purpose language can sometimes simplify creating programs. When do we decide to cross over from API's to domain specific languages, and what does that say about the limitations of 3GL's and API's?

  197. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0, Funny

    That's just daft, punk

  198. New wave legacy by randomsearch · · Score: 2, Interesting

    Having spent a few years working with IBM mainframes running 30-year-old COBOL and assembly code, the problems of maintainability are always sitting at the back of my mind when debates like this come up.

    I've worked in Java and C commercially, and recently I've done a few web projects in PHP and JavaScript. I'm currently an academic researcher, and in that job I've spent some time writing Python and C++. I'm also familiar with the way we're teaching languages and programming, having been involved in the labs and lectures.

    I think we are in danger of creating a "new wave" (apologies to French cinema) of legacy software. Whilst scripting, dynamically-typed, languages can be fun and faster as tools to build code in the first place, they do not constrain or discipline the programmer as much as something like Java. Object-orientation with static typing etc. took off because it is a great way to design (some, not all) software in a structured manner to improve communication between engineers and address concerns like maintainability.

    I understand why people are using things like Ruby and Python right now, but I suspect it might be a short-termist view of the world. If you're planning to throw your website away, perhaps that's ok. Invariable though, things last much, much, longer than you expect them to.

    We've already seen how poorly sites like Facebook scale - imagine what they will be like in another 10 years. We may well look back on these years of great web development as building a legacy that a lot of us spend the rest of our lives trying to reverse-engineer, fix and replace.

    RS

    1. Re:New wave legacy by foxylad · · Score: 1

      I agree with you about the importance of legacy support, and ironically this is one of the major reasons I've switched to Python. One of Python's design goals was to be readable and unambiguous (the opposite of Perl!), and it has achieved this well enough that I find I need a fraction of the comments I used in c.

      It's not quite self-documenting, but it's close, and I'm sure documentation would be one of the disciplines you value. Certainly it's far easier to revisit my python code than my old c projects.

      --
      Do as you would be done to.
  199. visual basic? by Anonymous Coward · · Score: 0

    this is why i like visual basic. quite good syntax and everything you need to develop an end user app. plus new vb.net has made it even more awesome. i know quite a few will bash this comment, but its one of the most popular language used and taught for precisely the reason mentioned in the article. though i believe c++ has its right place in OS and low level programming stuff. you cant replace it in that space.

  200. C? C++? D? Use E instead by maroberts · · Score: 1

    Your programming is no better, but you don't give a damn!

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

    1. Re:C? C++? D? Use E instead by nacturation · · Score: 1

      C? C++? D? Use E instead

      F you.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
  201. Re:New wave legacy... old wave legacy? by mchnz · · Score: 1

    Similar background: 30 years of coding - academic, commercial, COBOL, C, C++, Java, Javascript, Python, ...

    I've recently been looking at Java code so full of horribly complex calls to combinations of outdated horrible frameworks, that I was thinking the same thing - "We may well look back on these years of great web development as building a legacy that a lot of us spend the rest of our lives trying to reverse-engineer, fix and replace."

    I was thinking that Rails or Django might at least reduce the amount of stuff to learn to get maintenance done.

  202. lemme get this right... by Anonymous Coward · · Score: 0

    some guy who happens to work for a company that wants the world to run a browser-based ad-delivery and user tracking system (err.. i mean 'operating system') is calling traditional development tools (used by present and future competition) outdated pieces of convoluted garbage. wow, big surprise there.

    1. Re:lemme get this right... by harlows_monkeys · · Score: 1

      Some guy who also happens to be the co-inventor of UTF-8, the author of the first Unix windowing system, co-creator of Plan9 and Inferno, and co-author of a couple of the most respected books on Unix programming and programming in general. To dismiss him as a guy who works for an ad company is ridiculous.

  203. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    But you can do it in C++ as well:

    do{
    workIt(harder);
    makeIt(better);
    doIt(faster);
    makesUs(stronger);
    moreThanEver(hourAfterHour);
    }while(workIs(neverOver));

  204. Next gen coders probably will be stupid & work by Anonymous Coward · · Score: 0

    Ok, lets all switch to High level OOP!
    Oh, wait... But what will happen when the last grey-haired C/Asm coder dies and there won't be anybody to write a really good compiler for your stupid high level OOP?
    If you don't have a good insight, how low level languages function, you shouldn't be tought high level OOP. You build building from ground up, not from middle!
    Because of general stupidity, we're now having 64-bit CPU, so we could address more RAM. We don't need more RAM- we need better, more efficient game devs and we need people like those, who implemented addressing more than 4 gigs of RAM in GNU/Linux kernel god knows how long ago!

  205. C has no advantages over C++. None. Nada. by Joce640k · · Score: 2, Insightful

    C++ OTOH, has many, many, many advantages over C.

    Vou can program it like C but take advantage of a few extra things like automatic memory management (no need to use free()), better strings (no strcpy or buffer overflows), etc. C++ is every bit as good as C for this.

    But ... for larger projects C++ provides proper control of resources (objects have defined lifetimes), exception handling (which combined with stack unwinding makes writing robust code much smaller/neater/easier), much better abstraction abilities (define your interfaces then worry about the details), better namespace control, etc.

    I'm sure that as a C zealot you've argued your case against the assembly language zealots, and rightly so - there's a very good reason why people switched from assembly language to C once the C compilers reached maturity.

    Well ... this is 2010 and that exact same reason is why they later switched from C to C++.

    The reason is that C simply doesn't scale. Big projects are a LOT more work in C than in C++ (just like writing 640k programs in assembler was a lot more work than in C), and for zero gain. Learn to use your tools and the "efficiency" argument vanishes like morning mist.

    --
    No sig today...
    1. Re:C has no advantages over C++. None. Nada. by Misagon · · Score: 1

      Wrong. There is no "automatic" memory management in C++. If you are thinking about the destructor being called at the end of a scope, then the word that you were looking for is "implicit", not "automatic".
      If you were indeed thinking about "automatic", then dude, your code must leak memory like crazy ...

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
    2. Re:C has no advantages over C++. None. Nada. by Pseudonym · · Score: 1

      I think he was thinking about auto_ptr, scoped_ptr, shared_ptr, weak_ptr and the like.

      Incidentally, by the same measure, there is no "automatic" memory management in a non-declarative garbage collected language like Java. It's less manual, for sure, but you still find yourself having to null out references sometimes.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    3. Re:C has no advantages over C++. None. Nada. by Mad+Merlin · · Score: 1

      Psst: RAII.

      If you're a Java addict that's forced to write C++, then you'll do the stupid thing and allocate all your objects with new foo(). Needless to say, this is painfully stupid. If you're smart, you'll normally use RAII and not worry about cleaning up your objects, because they're on the stack.

  206. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    Maybe you want to use the built-in java HashMap and replace your factory factory by the keyword 'new'.
    Framework lovers will strike endlessly, regardless of the environment they are given to play / fool with.

  207. Re:We all know the ideal language has two function by nacturation · · Score: 1

    But when you find your implementation sucks, you can always implement doTheRightThingRight(). Naturally, there will be another bug that changes the way in which it operates, necessitating real_doTheRightThingRight().

    --
    Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
  208. seriously? by Anonymous Coward · · Score: 0

    C / C++ too complex? Seriously?... As Chopper says, HTFU

  209. Delphi by LongearedBat · · Score: 1

    That's exactly the point... it's too close to the hardware.

    did you miss the part where the guy also bitched that interpreted languages are "too slow"?

    Delphi has lost marketshare mainly because of crappy marketing. But damn it's an excellent OO language.
    - The code is native.
    - You have full OO capabilities (unlike VB, for example).
    - You have classes at runtime and proper HTTP. (If I'm not mistaken, and I might be, C++ lacks this.)
    - You can write assembly code inside a method/function, if you want/need that detail.
    - UI designer.

    As far as I can see, Delphi's problems are:
    - No support for different platforms. (It doesn't even have a 64-bit compilation yet.)
    - Marketing that keeps touting 2-tier RAD instead of proper OO, which is the main reason Delphi is so underrated.
    - Too few competent OO developers. C# is running into the same problem, in that it's too easy to drop in and connect a few components to make something simple, whereas a proper, maintainable application really needs to be written with a well thought out business layer in the middle. That ease-of-use makes developers lazy, and attracts lazy developers.

    1. Re:Delphi by Bungie · · Score: 1

      RealBasic, like Delphi is a great product which is often overlooked. RealBasic supports full OO code, has a nice IDE and form designer, better implementations of most of the VB classes and function, and it compiles programs for Windows, Mac (OS X and Carbon), and Linux.

      For some reason Real Software never really markets their product at all, and they seem to be putting less and less effort into it. Although the RB OO system is superior, the RB documentation is not. The level of detail and even up to date information is far below MSDN, and the online community sites are not much better. I think that is a huge blow for people who are trying to migrate to RB, especially VB programmers trying to grasp the OO model.

      It's a shame that people put out excellent developer tools and have such poor marketing. Realbasic is much more powerful than VB, and probably would be a great solution for many people. But only if they hear about it...

      --
      The clash of honour calls, to stand when others fall.
  210. Re:We all know the ideal language has two function by Khalid · · Score: 1

    It's called Domain Specific Language (DSL), and it's a a growing trend, you have for instance many tools on Eclipse to write your own DSL

  211. As for C . . . by Typh00n · · Score: 1

    "While Pike admitted that he was being somewhat facetious, he asserted that such questions still should be asked. C++ came about because of people's frustration with working with the low-level C language, and Java came about as a way to simplify C++. Over time, however, new features were added to both languages, making them more and more complex." Not exactly a ringing endorsement of C. When I first encountered C it thought it was someone's idea of a running joke. C++ is okay as it attempts to fix the numerous inherent limitations of C. In that sense, it has improved over the years. As for simplicity, ease of use, and execution speed, I miss Fortran.

  212. Re:We all know the ideal language has two function by duguk · · Score: 1

    I prefer PHP:

    <?$a="Around the world, ";$b="$a$a<br>";echo str_repeat("<p>$b$b$b$b$a</p>",18);?>

  213. This. by Gazzonyx · · Score: 1

    Oh, my bad :)

    --

    If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.

  214. But Google Go is not the solution... by descubes · · Score: 1

    Rob Pike criticism of Java and C++ is really advocacy for the new Google language, Go. Unfortunately, Go isn't a very good language, in my opinion. It makes things simpler by being less powerful. What we really need to replace C++ or Java is a language that can grow on demand. Otherwise, we'll keep hitting the limits of the language. And I can hit the limits of Go pretty quickly.

    Also, it's time to go beyond imperative, text-oriented languages. Graphics, anyone? It's possible: Hello World in XL simply looks better!

    --
    -- Did you try Tao3D? http://tao3d.sourceforge.net
  215. Nothing wrong with this by Anonymous Coward · · Score: 0

    Programming languages are an evolutionary process.
    I recall coding in ASM which has now been superseded? by 'higher' level languages and still has a bit to go yet. However there will always be people who prefer to drive rather than fly, it takes a bit longer to reach your destination....and might be a bit safer....or not :)

    Engage.

  216. "A crutch"... by warrax_666 · · Score: 1

    Oh, please.

    Type systems eliminate whole classes of errors. What does your unit test do? It eliminates one error. Big fuckin' whoop.

    --
    HAND.
  217. Re:We all know the ideal language has two function by Profane+MuthaFucka · · Score: 1

    Are you daft?

    --
    Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
  218. Ohhh yeah, bla bla bla by kvillaca · · Score: 0

    Java and C++ are the most successful languages for a long time, so it's comprehensive that some ones simple doesn't like. Now talking serious... don't came to tell me that Go is a good language, because after a couple of weeks playing with it I could check that Go is nothing more than C with some .h libs! I like Google though lately they are not being very honest with us, due that even with private browsing enable, Chrome still sending some sort of information, they have used a lot of WiFi without authorization, now releasing several versions of Android, that is very good for mobile platforms, though if the hardware don't follow it, they such probably will be let at side, because no one want to expend money to release one product and very soon that release be considerate old, and the company did not have time do pay off the investment. Now they want dictate the languages... what I see now is that they trying everything, and then looking for the roi in a few investments... and with this a lot people that supported those not so successful investments will be leave for behind. Good luck for those ones that trust blindly on Google.

  219. Re:We all know the ideal language has two function by pionzypher · · Score: 1

    Quiet down, you punk..

    --
    I'll believe in corporations having personhood when Texas executes one... - advocate_one
  220. Rob Pike? Who cares what he thinks? by Anonymous Coward · · Score: 0

    So Rob Pike doesn't like compiled languages, compiled/interpreted languages or interpreted languages. I guess if you're a Google "Distinguished Engineer" you can say anything and it makes it onto slashdot. What a shame. The guy is stuck in a space-time warp heading straight into a black hole.

  221. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    GRRRRR!!!!! This is my #1 complaint with Microsoft and others who think they know better than me. If I copy an EndOfLine character and then paste, it damn well better paste that EOL and not trim it. Conversely, if I _didn't_ copy an EOL then for the love of God please do not add one for me!!!! I want to slap the snot out of programmers every time I try to do exactly what I want and the program decides I must have made a mistake and really wanted to do something else.

  222. I think the title SHOULD Be... by bsercombe72 · · Score: 1

    Google Engineer Decries Inadequacy of Own Brain. This article was obviously brought to us by the good folks at The Onion.

  223. Re:I agree that C++ sucks and I feel really alone. by AthleteMusicianNerd · · Score: 1

    My ass. I've been doing this shit for 25+ years. I just get it and you don't you worthless fucking piece of shit Linux Lover.

  224. OMG! Java is too hard for Google! by Anonymous Coward · · Score: 0

    "too hard to use, too subtle, too intricate"... I give up, it's just too funny!

  225. OMG! Java is too complex for Google? by Anonymous Coward · · Score: 0

    Java is "too hard to use, too subtle, too intricate"...

    What about English? Let's all speak in 4 letter words!
    It'll be easier, less subtle, less intricate, and more expressive on top of that.

  226. Re:I agree that C++ sucks and I feel really alone. by thoughtsatthemoment · · Score: 1

    25+ years? Based on your view on programming and your attitude demonstrated here, you still haven't learned to behave like a grownup.

  227. Re:I agree that C++ sucks and I feel really alone. by thoughtsatthemoment · · Score: 1

    I've been doing this shit for 25+ years. I

    25+ years? Based on your view on programming and your attitude demonstrated here, you still haven't learned to behave like a grownup.

  228. OMG, Java is too hard for Google by Anonymous Coward · · Score: 0

    What about Basic? Or is it "too hard to use" as well?

  229. Re:We all know the ideal language has two function by Anonymous Coward · · Score: 0

    That's what I've seen done, but in addition Foobar is a virtual class which has a single private implementation MyFoobar. Since it's private you have FoobarFactory, which, of course, is also virtual, but also has a single private implementation MyFoobarFactory. So, we have FoobarFactoryFactor which gives you an instance of this single implementation of MyFoobarFactory, which you can use to create instances of the single MyFoobar class, all neatly wrapped in pure virtual classes.

    You really need to be a senior system architect to make this kind of a code. It is obviously superior to simply making a class Foobar and creating instances with Foobar().

  230. C-form languages "linguistically challenged" by gestalt_n_pepper · · Score: 1

    Any programming language is an interface to the computer system. That's all.

    APL, was far superior, in that it leveraged prior knowledge of mathematical notation.
    VB, was far superior, in that it leveraged prior knowledge of English language.

    When you first look at C++, it's gobbledygook. Semantically, braces are mush, meaning multiple things. C++ does not leverage prior information, but forces the user to understand an entirely new symbolic vocabulary, rather than using and extending a controlled vocabulary as other languages do.

    --
    Please do not read this sig. Thank you.
  231. Re:I agree that C++ sucks and I feel really alone. by AthleteMusicianNerd · · Score: 1

    So rather than debating me on an intellectual level, you insult me and then try to act all sophisticated when in fact you failed to comprehend my post. Since I know you're not capable of debating me, go fuck yourself.

  232. Re:I agree that C++ sucks and I feel really alone. by thoughtsatthemoment · · Score: 1

    I just didn't want to point out the obvious and if you hadn't thrown a tantrum, I might have had elaborated a little.

  233. Go or Goo - time will say by valduboisvert · · Score: 1

    Old tactic to promote your new product. However focusing on "negative" aspects of some very strong languages I believe was a mistake. Let the time decide if "Go" is better or just another "Goo" that will end up in our digital world sewers.