Slashdot Mirror


Open Source Project Management Lessons

cpfeifer writes "Paul Baranowski takes a moment to reflect on Open Source Project Management in his blog. His reflections are based on the first two years of the Peek-a-booty project." Interesting comments on media coverage, choice of programming language, when to release a project, and more.

296 comments

  1. Article text by frieked · · Score: 2, Informative

    Story was just released to subscribers and already it's loading slow so here's the article text for when the inevitable /. effect comes:

    Peekabooty - Lessons Learned

    By Paul Baranowski (paul@paulbaranowski.org)

    July 1st 2003

    Here is a review of the first two years of the Peekabooty Project. Over that time I have had to re-evaluate many of the things I learned in university and in the working world - many of the engineering lessons that I had been taught turned out not to work so well. The project management of an open source project is very different from old-school engineering project management, so I had to learn a lot about how open source project management works.

    All of these problems have been seen before - by no means do I see these as unique. They are simply more data points on the "How To Do Open Source Development" graph.

    What did I learn from the first version of Peekabooty?

    Open-Source Project Management Lessons

    Don't release before it does something useful.
    This lesson is recounted in Open Sources: Voices from the Open Source Revolution as well as other places. I had even read about this rule before we released, but I had to learn it for myself. If you release too soon, you spend a lot of your time answering emails instead of developing.

    The press is a tool - more like a hammer than a Swiss army knife.
    The press is like a hammer - it can help you or hurt you, depending on how you use it. But like a hammer, it can't do everything, like cut a tree in half. It has limited capabilities and you cannot expect too much from it.

    How the Press has Helped

    The press has helped to bring awareness to key people that have the ability to help the project grow.

    Press will get you more downloads. Whether this is good or bad depends on lesson #1.

    Press will not get you more developers unless #1 is in place. The fastest way to get more developers is to network with other developers.

    How the Press Has Hurt

    The press loves infighting because it's a good story. However, the infighting story is bad for a project that is trying to get funding. This creates an air of instability. People only like to fund things they feel will have a high chance of success, and instability erodes that confidence.

    95-5 Rule
    Usually it's the 80-20 rule, but in open source projects it's more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this. If you want to lead an open-source project, it helps to be independently wealthy. This allows you to forget about things like a job and work on the project you want to work on. In hindsight, wouldn't it have been better to take a really long vacation instead? Doh!

    Engineering Lessons

    C/C++ is no longer a viable development language
    This may seem obvious to some people, and other people may recoil in shock. In college/grad school we were taught to believe that C/C++/Java, etc are the best languages in the world, so it was a very difficult transformation to accept that these languages are not viable development languages for application level work.

    C++ is seen to be great for execution speed, static binding, object orientation, templates, and more. However, it is absolutely lousy for development time. Here's why:

    It requires compilation - as your code grows larger, the wait time to see if your code works increases. This delay directly affects how fast your code is developed.

    It's really, really, really hard for people to learn it, and this directly impacts the number of developers you will have on an open-source project.

    It uses static binding (Isn't that supposed to be a good thing?)

    There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and ot

    --

    I have often regretted my speech, never my silence.
    -Xenocrates
    1. Re:Article text by Anonymous Coward · · Score: 0

      MOD THIS PIECE OF SHIT DOWN!!

      The article is loading just fine.

    2. Re:Article text by Anonymous Coward · · Score: 0

      Yeah, I call this real fine
      Warning: Can't connect to MySQL server on 'localhost.addr.com' (61) in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

      Warning: MySQL Connection Failed: Can't connect to MySQL server on 'localhost.addr.com' (61) in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

      Warning: MySQL: A link to the server could not be established in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

      Warning: Cannot add header information - headers already sent by (output started at /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php:131) in /usr291/home/drunkenm/public_html/pbhtml/mainfile. php on line 45

      Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

      Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

      Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    3. Re:Article text by Anonymous Coward · · Score: 0

      The site was loading like ass before. Did it ever occur to you that the reason it might be fine now is because posts like this keep some of the stress off of the sites server?

    4. Re:Article text by quasi_steller · · Score: 4, Interesting
      There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it).

      Well, there is the STL and the Standard C++ library. These are not really hard to learn; it is just that they are both fairly new. The Standard C++ library and STL didn't become standard until around 1998 when the ISO C++ standard was formed. Because that is only 5 years ago, and C++ is much older than 5 years, there are still a lot of books and courses floating around that don't teach Standard C++. When you learn "Visual C++," or whatever, from an older book (or bad book) then it seems that the STL is hard because you are not use to templates and all that stuff (mostly because many older compilers are broken, ie VC++ 6.0, and don't support the standard).

      If you learned STL and the Standard library when you first learned C++ then maybe they wouldn't seem so difficult. Also, many people who first learn programming in a language such as Pascal, like me! :), have difficulties learning generic programming because they are so used to thinking about what types your variables are. Templates and generic programming are very powerful, if you are willing to spend the time learning how to use them.

      --
      ...interesting if true.
    5. Re:Article text by Anonymous Coward · · Score: 0

      Isn't this what we were afraid of, subscribers getting a karma bonus based off of their subscription rights?

      We might as well automagically give all subscribers excellent karma if this continues.

      Oh, and "frieked (187664)" quit being such a WHORE and post anonymously next time you retard.

    6. Re:Article text by Anonymous Coward · · Score: 0

      Are you that fucking lame that you have to complain about people getting Karma? It's not like it's money or sex we're getting first licks at. It's Karma, an imaginary thing these people made up so we can feel special.

      Oh, and read the fucking plums page, getting to read the story earlier is an intentional advantage of being a subscriber. Not something they "were afraid of"

      If it's that big a deal to you why don't you suck it up and pay the $5 that it costs to get a subscription.

      Ugh, Fucking flamers, get a life
      Ok, I'm done venting now.

    7. Re:Article text by pVoid · · Score: 2, Interesting
      I agree.

      Who among us is soooo old that STL is new??

      I hate these self-prophets roaming around the IT world. They are part of the fucking reason we had the dot-com crash. And they will continue to hamper the industry.

      Fucking let everyone code in whatever they want man... Just stop trying to convince everyone that your own point of view is the best point of view.

      I use C++ most of the time, but I don't cower at using fast throwaway stuff like the odd perl CGI script, or some ASP. Everything has its place. Except for evangelizers like this.

      IM(F)O.

    8. Re:Article text by Eccles · · Score: 1

      C/C++ is no longer a viable development language

      So what is, then? And language has enough people who know it to make for a viable development language for an open source project?

      Not to mention, this means we should throw out Linux, Mozilla, Xfree, et al.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    9. Re:Article text by Jellybob · · Score: 4, Interesting

      He said it's no longer viable for application level programming... Linux and XFree are certainly not application level, and argubly the Mozilla core isn't either (the front end is, but you could wrap the Gecko API for some other language to create that).

    10. Re:Article text by Anonymous Coward · · Score: 0

      So we're going to argue whether one self-fulfilling prophesy is more likely to have occurred than another one?

    11. Re:Article text by Simon · · Score: 1
      Mozilla core isn't either (the front end is, but you could wrap the Gecko API for some other language to create that).

      Interesting that you should pick Moz as an example. Because that is basically how it works inside Moz also. Moz is just a big bunch of C++ modules acting as libraries and an application 'runtime', with the higher level application stuff all being written on top using Javascript, XUL etc.

      --
      Simon

    12. Re:Article text by Eccles · · Score: 1

      He said it's no longer viable for application level programming...

      Well, let's check sourceforge.net. Most active projects include GAIM (C), eMule (C++), WinMerge (C++). Top downloads: at least BitTorrent is C/Python, but CDex is C++, ZSNES is assembly/C, Miranda IM is C/C++, Ethereal is C; it's only the web administration-focused tools that are PHP and Java.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    13. Re:Article text by Jellybob · · Score: 2, Insightful

      That doesn't make it the ideal language to use for those programs.

      The IM programs are certainly good candidates for higher level languages, since most of what they do is text parsing - and I know that at least myself would do some work on GAIM if I could.

    14. Re:Article text by Eccles · · Score: 1

      That doesn't make it the ideal language to use for those programs.

      For technical reasons, no. But, for an open source project where you need contributors who know the language and can work with it, C/C++ evidently are the basis for the most successful projects. Otherwise the Common Lisp-based ones (or what have you) would be "the cream rising to the top."

      I certainly spend enough time compiling C++ code that I can spend a fair bit of time on Slashdot. If I were running a software company developing a new project, I'd take a long look at alternative,m potentially more productive development environments, and then train my employees in what seems to be the best. Open source projects don't have that luxury.

      Note that there are improvements being made for C++, and you can do your own. Visual C++ has edit-and-continue compiling. Apple has the Xcode distributed compilation environment. And you can also break your project into smaller, individually developed and tested modules, rather than one monster app.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    15. Re:Article text by crazyphilman · · Score: 1

      Yeah -- I agree. He seems to be saying that C++ and Java are bad because they're too hard to learn and take too long to write code in. So he's not choosing a language based on which one will produce the best program, but rather on which one will be the easiest to code in (and require the least amount of work). Maybe it's me, but if an open source developer is supposed to be in it for the joy of programming, wouldn't he be more interested in the coolness and quality of his project, rather than on how fast he can wrap it up?

      --
      Farewell! It's been a fine buncha years!
    16. Re:Article text by smittyoneeach · · Score: 1

      Can't say I've used it, but a good path might be using Python to get the thing going, and then boost::python on the parts that would benefit from compilation.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  2. Great, I would love to read all about it by mao+che+minh · · Score: 3, Insightful
    I would love to read the article, but my employer uses a proxy filter program that filters out sites with the term "proxy avoidance" in it's META tags (or otherwise prominently displayed within the header). If you are going to run a site dedicated to the development of software that allows one to avoid detection systems and firewalls, then how about making the distribution source (the website) not so obvious and vocal about it's intentions.

    Just a suggestion.

    1. Re:Great, I would love to read all about it by aridhol · · Score: 2, Insightful

      Then how would people find it? It's a catch-22 situation for these guys - either say what it is, and have it filtered, or don't say what it is, and don't let anybody find it.

      --
      I can't say that I don't give a fuck. I've just run out of fuck to give.
    2. Re:Great, I would love to read all about it by stanmann · · Score: 2, Interesting

      I'm also at work, and since this is the first I've heard of this project, I'm a bit leary of going to a web site called Peek a booty. Uh, Not something that sounds very professional. ANd likely not something I want to be reading about at work.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    3. Re:Great, I would love to read all about it by rvr · · Score: 2, Funny

      well, what about

      pr0xy av01dance

      start something new. ummm, i guess something old.

    4. Re:Great, I would love to read all about it by Capt_Troy · · Score: 1, Informative

      In the past, we have used squid proxy running on a server at home to bypass the filters at our work so we could read Penny-Arcade...

      you might want to check that out...

    5. Re:Great, I would love to read all about it by jorleif · · Score: 0, Flamebait

      Professional? Do you think people who use software to avoid firewalls and proxies care about professional?

    6. Re:Great, I would love to read all about it by crazyphilman · · Score: 1

      Well, all they'd have to do is have two (index.html and metaIndex.html) pages on their site. The main page doesn't trigger a proxy block, because it doesn't have any meta tags. The second page is loaded down with a big fat meta tag, and that one is the one that is submitted to all the search engines. The second page, of course, redirects to the first page.

      QED.

      --
      Farewell! It's been a fine buncha years!
    7. Re:Great, I would love to read all about it by Leffe · · Score: 1

      A solution to your problem: Surf from your computer at home using ssh, that way you can use your favorite (text-based) browser, Links maybe, that's what I use.
      Another possible solution: Write a script that strips meta tags from pages and sends them through, visit all sites through the script(it must be hosted somewhere else I'd guess though).

      I don't really see why people use META tags for keywords and stuff though, most search engines are smart enough not to need them.

  3. I bet... by macshune · · Score: 5, Funny

    The peek-a-booty project is a lot less interesting than I would imagine...

  4. Project management Lessons by stanmann · · Score: 5, Interesting
    Is Open source project management really that much different from any other project management?

    don't release before it does something useful

    This is a rule in "traditional" project management too.

    and the other lessons read just like Project Management 101 too. I would have loved to have seen something insightful or interesting about how open source changes the development environment or the management environment from single location to distributed, but no such luck.
    --
    Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    1. Re:Project management Lessons by mmcshane · · Score: 3, Informative
      . . . and the other lessons read just like Project Management 101 too.
      Good point. Not surprising, I suppose.

      If you're interested in Open Source project management you might find some of these Mozilla lessons learned interesting.
    2. Re:Project management Lessons by jmacgill · · Score: 2

      The reason he brings it up is that it goes against the other Open Source mantra of 'Release early, release often'.

      I guess the combined mantra would become

      "Realease as soon as it does something useful, release again as soon as it does somthing better/more than it did before". But that just dosn't have the same ring to it.

      --
      Spell checker (c) creative spelling inc. (aka my dyslexic brain)
    3. Re:Project management Lessons by marhar · · Score: 1
      Is Open source project management really that much different from any other project management?

      I think the answer is "yes", because you have a much different set of motivations (paycheck vs. fun and fame) and resources available (volunteers vs. "professional" sales/marketing). There are some things which are similar, of course. Maybe there's something to be learned by studying project management at other volunteer organizations.
    4. Re:Project management Lessons by Xerithane · · Score: 1

      and the other lessons read just like Project Management 101 too. I would have loved to have seen something insightful or interesting about how open source changes the development environment or the management environment from single location to distributed, but no such luck.

      I was in the same boat. It was a decent read, but it had the feeling of "Doctor it hurts when I do this" all over it.

      Still makes me wonder how many people will be influenced by it. If so, then great. Maybe Freshmeat will stop getting so many "SuperApp 0.0.1" posts.

      --
      Dacels Jewelers can't be trusted.
  5. Don't care, he got me an "A" by SuperDuG · · Score: 1, Offtopic
    I got an A writing about this in my political science foreign policy class. Basically delt with social uprising against government blanket censorship (so it was mainly talking about Russia and China). And of course the economic impact of the fall of communism and the introduction of western capitalism.

    Anyways, this project has made me think that there's still hope for everyone to be able to have freedom one way or another.

    I think the only thing about peek-a-booty was that people were afraid it would open a pedophilia flood gate. This really pissed me off as obviously the juornalists behind these stories hadn't actually taken the time to investigate the actual software. Instead they just brushed over it and made assumptions, hence the bad press.

    Anyways, great program, I mean it. I think the fact that it's created by one of the worlds largest trojan creators (cDc) is what gives it such a bad wrap.

    --
    Ignore the "p2p is theft" trolls, they're just uninformed
    1. Re:Don't care, he got me an "A" by DNS-and-BIND · · Score: 0, Flamebait

      Surely you didn't mean Russia and China...you meant King George 43, right? And Ashcroft. Russia and China are nothing compared to the oppression that the U.S. is currently experiencing.

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    2. Re:Don't care, he got me an "A" by poptones · · Score: 2, Interesting
      Ya know, I really get pissed off about the stuff going on in the USA, but then I see stuff like this and I get pissed off even more.

      How many political dissidents are in US prisons? I mean besides the people who are there because they ingested drugs or because they don't have the huge sum of money to pay bail even 'tho it's a good chance they are innocent. I mean actual dissidents - like someone who goes online at a widely read journal and calls the president a parasite.

      Russia's only non-government controlled TV network has been dissolved by order of that government. In fact, Putin would like to have the head of the network "putin" jail despite the fact another court (outtside the jurisdiction of the kremlin) found he had commited no actual crime.

      The other states are no longer part of the FSU, of course, but in other now "democratic" countries (like Ukraine) criticizng the government in the press may not even get you due process - instead you may be found hanging like a side of rotting beef. Or maybe even beaten to death in the street.

      It's getting bad... but it's not nearly as bad here as it could get.

    3. Re:Don't care, he got me an "A" by DNS-and-BIND · · Score: 0, Troll

      Plenty of people in jail without trail, just becuse Ashcroft says they are enemies. Compare USA today to Germany in 1934, and you'll see more similiarities than differences.

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    4. Re:Don't care, he got me an "A" by poptones · · Score: 1
      Just a few minutes ago it was Russia and China. Now it's germany? Aren't you getting your rhetoric confused?

      I could have made the same comparisons to germany 8 years ago, under a completely different administration - in fact, many people were. Remember "V-chip" and Clipper? Remember all those PC rants about "those liberals in the whitehouse?"

    5. Re:Don't care, he got me an "A" by DNS-and-BIND · · Score: 1

      PC = liberal. Get your facts straight if you're going to debate.

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    6. Re:Don't care, he got me an "A" by poptones · · Score: 1
      PC = liberal. Get your facts straight if you're going to debate.

      Try actually reading the post before you reply to it and you'll be able to keep up.

    7. Re:Don't care, he got me an "A" by Anonymous Coward · · Score: 0

      Your level of ignorance is staggering.

  6. "C/C++ is no longer a viable development language" by e40 · · Score: 2, Insightful
    OK, fine. But what is? It does no good to make a statement like that unless you back it up with an alternative.

    Personally, I dig Common Lisp.

  7. fascinating by Fux+the+Pengiun · · Score: 4, Interesting
    This is a great entry, with some really good insights.

    I first heard about this project from a BBC Article where they describe it as a "browser free from censorship or outmoded intellectual property laws," which is something I think we can all get behind! However, they made the point that the project could have been better named.

    It seems the author has picked up on that now, too. I think most telling is this passage from the author's blog (weblog):
    Be careful when naming your project. It's difficult for IT managers to convice PHB's that this project is useful for their enterprise class systems with a name like "peakabooty." This sort of nomenclature is detrimental to the future of GPL/Linux

    Hopefully, he'll take these insights to heart!
    --
    Consensual sex is boring.
  8. Re:FP! by BiteMeFanboy · · Score: 0, Offtopic

    I'll take the inevitable off topic karma hit. But after three or four years, when does this get old? Christ, 99% of the time, the lame ass AC's that try this don't even get first post.

  9. I think not by The+Bungi · · Score: 4, Insightful
    While saying that C/C++ are not "viable" languages any more (and making the classic mistake of bunching them into a single blob), he muses that:

    It requires compilation - as your code grows larger, the wait time to see if your code works increases. This delay directly affects how fast your code is developed.
    It's really, really, really hard for people to learn it, and this directly impacts the number of developers you will have on an open-source project.
    It uses static binding (Isn't that supposed to be a good thing?)
    There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it).

    So, basically, it has to be compiled (duh). It's hard to learn (no, it's hard to use correctly) and it has no libraries... eh?

    I'm sorry, but this guy is not a software developer. The usual comments about "X is the One True Language" notwithstanding, I can't follow that because he thinks it's "too hard" and he thinks it's "not viable" and decides that it simply isn't a good fit for his project, then LanguageX must be dead. Perhaps he'd like to share with us which language his OS is written in. Maybe it's Forth or Scheme. Use the right language/runtime/lib/technology for the job and refrain from saying "X sucks because I don't like it".

    Other than the dubious "this is how you do open source" slant I can't see how this article is even worthy of news.

    1. Re:I think not by exhilaration · · Score: 1

      According to his FAQ he's using Microsoft Visual C++ for the Windows port. Perhaps that's the problem. :)

    2. Re:I think not by HowlinMad · · Score: 1

      So, basically, it has to be compiled (duh).

      And on top of this, if your are using most modern compilers, when you make a code change, you only need to recompile the changed parts. Now if you change a header file that everything touches, that could mean a lot more time, but if you are only working on one file, then it will only recompile that file.

      I think this arguement of compilation time is garbage.

    3. Re:I think not by The+Bungi · · Score: 2, Insightful
      The problem is obviously between the chair and the keyboard, not in the compiler he chooses.

      Oh, and har, har.

    4. Re:I think not by los+furtive · · Score: 1

      I agree whole heartedly. And in addition to this, (at least with Java) if you use a modern IDE such as IntelliJ IDEA then you'll know about compile errors without actually having to compile thanks to tools such as on-the-fly code analysis. This saves a great deal of time for the developer and helps break the 'write a few lines, compile, write a few line, compile' cycle.

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    5. Re:I think not by GlassHeart · · Score: 4, Insightful
      A few other points in defense of older languages:
      • An older language has had more lines of code written for it, so its weaknesses are better known, and more likely published.
      • An older language tends to have more developers, which means any random volunteer is more likely to know it already.
      • An older language has already fought "battles" for survival, and has been squeezed out of applications for which it is ill-suited, and continues to exist for a good Darwinian reason.
      • An older language is more likely to be standardized, and more widely ported.
      Let's take C, for example. An experienced C programmer will point you towards two or three books like van der Linden's "Expert C Programming: Deep C Secrets", or Koenig's "C Traps and Pitfalls". C is rarely used for GUI application development, but still widely used in embedded systems where space and speed are important. C is an ISO Standard, which is important for portability.

      One mistake that many people make is to dismiss older languages when a new one appears with all the old features and then some. The old language does not become any less viable the day a new one comes out than the day before. That is, if a project will take you 6 months in C, it'll still take 6 months even after Java (which might cut it down to 5) comes out. The question is whether the unique costs of using Java instead justifies the 1 month saved, not whether C is still "viable".

    6. Re:I think not by agedman · · Score: 1

      I don't think he was saying that he didn't like C/C++ , but rather that his experience was that using C++ caused problems (some of which he listed). To be sure, it would have been nice to see what his recommended alternative(s) is/are (Python? Ruby?) and to see more meat explaining the problems they encountered.

      Keep in mind that they did the development in C++. And they had problems.

      To reject his experience-based advice because you like C++ (and he must've started out like C++ to have selected it) is to risk going down the same rocky road he did.

      For what it's worth, I'm a C++ developer - I recognize that the language has its... quirks..., but it's basically a good one. I would have thought that it would be a reasonable language for the project. But I'd like to learn from the problems he encountered rather that insist that, because I'm comfortable with it, it must be a language for everyone.

    7. Re:I think not by __past__ · · Score: 1

      Just because a language is old doesn't mean that it has to an unfriendly productivity-crunching beast. As someone pointed out above, there's always Common Lisp, whose history goes back to 1959, the current ANSI standard being about 10 years old. It has lots of code, books and high-quality conforming implementations, the only things missing are an edit-compile-link-debug cycle and the ability to introduce exploitable bugs by making errors using advanced functionality like "printf".

    8. Re:I think not by valkadesh · · Score: 1

      So, basically, it has to be compiled (duh)

      His issue is not with compilation per se, but with the traditional edit-compile-debug cycle which has limited scalability (as your code grows larger, the wait time to see if your code works increases). Both C and C++ have this problem.
      Some languages like Smalltalk and Common LISP, due to their incremental compilation system, are not affected by this problem.

    9. Re:I think not by The+Bungi · · Score: 1
      His issue is not with compilation per se, but with the traditional edit-compile-debug cycle which has limited scalability (as your code grows larger, the wait time to see if your code works increases). Both C and C++ have this problem.

      I guess he missed the precompiled header and incremental linking options. Or just used the wrong language if he needs to compile every 5 minutes just to see if the three lines of code he just labored over actually do work. The mark of a true software engineer.

    10. Re:I think not by Anonymous Coward · · Score: 0

      The question is whether the unique costs of using Java instead justifies the 1 month saved, not whether C is still "viable".

      Actually the question is "Why are we paying these C coders $100/hour when we can get Java Monkeys for $35/hr?"

    11. Re:I think not by The+Bungi · · Score: 1
      I don't think he was saying that he didn't like C/C++ , but rather that his experience was that using C++ caused problems (some of which he listed).

      Sorry, I can't buy that. I've written some pretty large applications using C++ and I've never had "problems" - except the first time when I couldn't tell a class from a struct. But experience gives you that, eventually. This guy's rant about how he had problems with C++ and therefore arrives at the conclusion that C++ is not a viable language any more is a tad extreme.

      To reject his experience-based advice because you like C++ (and he must've started out like C++ to have selected it) is to risk going down the same rocky road he did

      That wasn't my intention at all. What I'd argue is that what he should have done is pick the right language for the task at hand and his skills (which at this point I'm guessing are not that hot), instead of starting out with a language he doesn't understand and emerging two years later to claim that C++ must die because "it's hard". FWIW I'd make the exact same point about any other language - I'm not being defensive towards C++ per se. It's just another tool as far as I'm concerned.

      In any case the only reason this thing made it to the Slashbork front page is that it happens to be an open source project (yay). It provides no insight and is of absolutely no value whatsoever ("don't use the word booty when naming your life's work" - gold, pure gold). And that possibly pisses me off more than the fact that it exists =)

    12. Re:I think not by GlassHeart · · Score: 1
      Or just used the wrong language if he needs to compile every 5 minutes just to see if the three lines of code he just labored over actually do work.

      Actually, this is a valid criticism. There are parts in every project's lifecycle, typically between feature freeze and release, where engineers write very few lines of code, but have to compile often to test bug fixes. In the most extreme conditions (slow compiler plus bad Makefiles plus having to download your binaries to the target machine over a serial port), the turnaround time for a bug fix can be adversely affected when time matters most.

      As you said, if you're constantly compiling all throughout the project life cycle, you're probably not as productive as you can be.

    13. Re:I think not by seasunset · · Score: 1

      "An older language has had more lines of code written for it, so its weaknesses are better known, and more likely published."

      And with the case of say C vs Python, you'll end up writing 10x more lines in C than in Python for the same problem. As a conclusion C matures 10x more fast than Python. Great! Better yet, lets do assembler!

    14. Re:I think not by Anomylous+Howard · · Score: 1
      So, basically, it has to be compiled (duh). It's hard to learn (no, it's hard to use correctly) and it has no libraries... eh?

      I'm sorry, but this guy is not a software developer. The usual comments about "X is the One True Language" notwithstanding, I can't follow that because he thinks it's "too hard" and he thinks it's "not viable" and decides that it simply isn't a good fit for his project, then LanguageX must be dead. Perhaps he'd like to share with us which language his OS is written in. Maybe it's Forth or Scheme. Use the right language/runtime/lib/technology for the job and refrain from saying "X sucks because I don't like it".

      He is talking about an open source project to wich he wants to attract contributers.

      He is saying that "hard" languages like C/C++/Java won't attract good contributions from a large number of contributers beacuse they take intellegence and effort to use well.

      Anybody can write/modify a few lines in Python.

    15. Re:I think not by valkadesh · · Score: 1

      Well, if you are into Test Driven Development, you test your code as often as possible. In my current project (based on Smalltalk) I run my tests every couple of minutes: In a C++ project, this could be impossible, due to longer compilation time. And precompiled header and incremental linking do not help in this case.

    16. Re:I think not by keyslammer · · Score: 1

      I've written some pretty large applications using C++ and I've never had "problems"

      Never had problems? That's quite a claim. Never spent a week tracking down an obscure seg-fault? Never spent days getting your working code to compile on a different compiler? Never ran into obscure errors because an executable had not been recompiled against a changed shared library?

      If not, you should publish your insights, cause I'd really like to know how you're avoiding these kinds of things.

      I see nothing in the author's statement as strong as "C++ must die" - he just says "it's lousy for development time" and lists his reasons why. He opens with "C/C++ is no longer a viable development language", but I think you have consider that to be in the context of Open Source Application Development - which is, after all, what he's doing. I don't think he is advocating rewriting the Linux kernel in Python.

    17. Re:I think not by The+Bungi · · Score: 1
      Never had problems? That's quite a claim.

      Problems developing an application and dealing with the OS environment != problems understanding how the language works.

      If not, you should publish your insights

      Ha ha, yeah. Whatever.

  10. Re:"C/C++ is no longer a viable development langua by AndyRooney · · Score: 1, Funny

    I remember him saying something in a bar once about Scheme. Man, I think he's trashing your language. Are you going to take that shit? Them's fightin' words, if you ask me.

  11. Interface is Everything by Snot+Locker · · Score: 4, Insightful

    Often time this principle applies to people on the project, not just the software being developed. I've learned from experience that really sharp people with a broken user interface can destroy a project!! You have to try to minimize interaction points with folks like that and find where they can excel and use their talents without creating problems for the others on the team. A difficult nut to crack at times and a far more critical factor to project success that the programming language, source management tools, etc...

    1. Re:Interface is Everything by Anonymous Coward · · Score: 0

      For some strange reason the name that leaped out at me was Theo de Raadt. Well, I guess that project has survived despite that majorly broken interface.

  12. He wants Visual Basic? by scrotch · · Score: 1

    Most of this seems pretty basic to me. I wonder what he was doing in "university and in the working world" that didn't teach him these things.

    And I really wonder what language he suggests. If not C/C++/Java, then what? VB?

    I wish he had spent a little longer on this. I realize it's just a blog, but it would be nice to see some insight into OSS management vs. the alternatives.

    1. Re:He wants Visual Basic? by stanmann · · Score: 1

      He was a Janitor at the university, Hanging out in the Women's Lavatory trying to peek a booty. Guess he thought there was money in free software.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    2. Re:He wants Visual Basic? by cnkeller · · Score: 1
      And I really wonder what language he suggests. If not C/C++/Java, then what? VB?

      How about Objective-C? It's certainly viable. The syntax is a little funky at first, but it's a hell of a lot simpler than the C++ nightmare unleashed on the world.

      --

      there are no stupid questions, but there are a lot of inquisitive idiots

    3. Re:He wants Visual Basic? by cr0sh · · Score: 2, Interesting
      Yeah - and?

      Think about it - an open-source project of any large size requires more than a handful of developers. There are only a finite number of developers on the planet, and only a subset of those are willing to work on open-source projects. Now, of those, how many do you think have a) free time to devote to an open source project (which also may mean that they aren't contributing to other projects), and b) can work in the language being used, or pick it up quickly?

      I can guarantee you that subset is rather small, perhaps in some cases non-existant, because many programmers with a good skillset like that (that is, they are C++ programmers for a long while and know their shit, or can pick up C++ rapidly) want to be *paid* for their work - thus those who just want to help out are few and far between.

      Now, what if the project was developed in something much easier to pick up - or was more widely known? You would instantly have more developers willing to help out, simply because of the numbers knowing the language. Plus, ordinary users could easily pick up the language and help out, possibly fixing the bugs that bother them (and bugs which bother one user may not bother developers, but they probably bother a ton of other users).

      Unfortunately, C++ is not the language that most people know. Java comes close, but it still is difficult for a lot of people to grasp. What most people *can* grasp (though it may not be best for application development, however, in most projects it won't matter if done right) is a language which has a much more "english-like" syntax, and can be programmed as a "functional language" (as opposed to requiring OOP, like Java). What does that leave most users with? That's right - VB. Is it any wonder that many (understatement - an absolute TON would be better) internal (and more than a few external) applications for businesses (that is, applications developed by businesses for business - whether it is for internal use or external sale) have been written in VB? Is it any wonder that Windows holds the desktop in businesses - wonder why? VB. Whether it is a real VB solution (ie, VB executable, etc) or an "Office" integrated solution (VB for Applications) - in the end, it comes down to VB, and users being able to quickly come up to speed on it.

      Personally, I think this is one of the things holding back development by businesses on Linux (esp on the desktop) - the lack of such a tool. The closest I have seen has been Python with some windowing toolkit (to interface with X) tacked on, plus a gui designer to create the fancy forms - but none of this is as integrated as VB's IDE is, and while Python is a nice looking language (I can't really tell how good it is at things - I have never used it - currently playing and learning about Perl and PHP), it isn't BASIC.

      I have never understood why there is such derision regarding BASIC - because that is the problem, it seems. At one time, BASIC was looked upon as a satisfactory language for a lot of projects - whether hobbiest or business. Even today, in business, you still have people creating large business application (think vertical markets) in what amounts to BASIC. Why is it that Parallax's microcontrollers became so popular so quickly? BASIC!

      I think if inroads are to be made in the business realm on the desktop by Linux (and maybe even *nix distros in general), there needs to be a form of BASIC for users to create custom applications with. I am not saying that we should have it like Microsoft's vision (what with Outlook being able to willy-nilly run VBA scripts and such) - but a BASIC with perhaps sandbox capabilities for security, plus the ability be plugged into a variety of office applications, and a tight, clean IDE/debugger - that would help propel Linux onto the desktop in business.

      Finally, let me say this - I am not saying BASIC (or VB) is the tool for every job - it isn't. But it is a nice general purpose tool which can help solve many problems in business, and it provides rapid turnaround for projects. If such a language or development environment were created for Linux, it would be a boon for both businesses and open source projects/developers.

      --
      Reason is the Path to God - Anon
    4. Re:He wants Visual Basic? by Troll_Kamikaze · · Score: 1

      [Visual Basic] can be programmed as a "functional language"...

      Whatever else Visual Basic may be, it is most certainly not a functional language. The difference between functional and procedural is vast, and worth learning.

      I used to do quite a bit of (commercial) Visual Basic programming, and while I agree that the IDE is almost incomparably easy to use, I came to hate the language with a passion when I tried to write medium-sized programs (10,000 lines and up) in it.

      Personally, I think this is one of the things holding back development by businesses on Linux (esp on the desktop) - the lack of such a tool.

      I think you're right on the money with this statement.

      The closest I have seen has been Python with some windowing toolkit (to interface with X) tacked on, plus a gui designer to create the fancy forms - but none of this is as integrated as VB's IDE is, and while Python is a nice looking language (I can't really tell how good it is at things - I have never used it - currently playing and learning about Perl and PHP), it isn't BASIC.

      Python eventually beat out Visual Basic, C, Java, Perl, Ruby, Erlang, and Lisp (all of which I tried) to become my primary development language. I'm quite satisfied; for me, Python delivers unparalleled productivity. But I'm no zealot. If I find something better, I'll switch, but none of the listed languages was more productive, in my experience. Most weren't even close (only Lisp and Ruby).

      However, I'm doing primarily server-side development of various sorts, rather than GUI programming. When it comes to building GUIs, the Python IDEs I've tried pale in comparison to Visual Basic's IDE. C, Perl, Ruby, and to a lesser extent Java also suffer from poor GUI-building-IDEs, though (and virtually no one tries to write GUIs in Erlang or Lisp).

      I have never understood why there is such derision regarding BASIC - because that is the problem, it seems.

      Try writing some large programs in it and see how it holds up. In my experience, very poorly.

    5. Re:He wants Visual Basic? by cr0sh · · Score: 1
      By "functional" I meant more along the lines of "what came before OOP" - that is, you have essentially a "main()", then functions() called from the main() (whether they reside in the same source file or are included) - maybe this is a "procedural" language? I don't know for sure.

      Essentially, we had languages that were top-down (ie, no way to call a function and return - the closest old BASICs on micros got was GOSUB), then with functions (ie, var = func(), plus call sub() ), now OOP (though VB's OOP is horribly broken).

      Finally, in response to "try writing some large programs in it" - I have. Currently, I maintain a 10,000+ line Visual Basic CRM app for the employer I work at. It isn't the greatest thing, but it helps run the company (my plans are to rewrite it in PHP and Smarty, running on Apache). I have also worked on (with different employers) both a very large insurance claims management software and a warehouse inventory and sales tracking software - each had over 100,000+ lines of code (probably a lot more - never took a true count on either code base), written in PICK BASIC (actually, VMark Software's UniVerse PICK). I know of many other large legacy style PICK BASIC applications as well in a wide range of industries. Chances are, if you see a "green-screen" VT-100 terminal style application, it is either going to be PICK or COBOL (most likely the latter, but the former also holds it share).

      There isn't anything wrong with BASIC as a syntax - easy to read, easy to learn. Keep the basics (no pun intended), add some simple OOP statements - you would probably have a winning language. In general, BASIC's biggest problem (and it affects other languages as well, like C) is the ability to write massive, hard to debug and maintain codebases - throw in bad practices like adding GOTOs liberally (and there is *no reason* to do this anymore in BASIC), and you get a nightmare. Proper defining and use of called functions, along with included code segment files to break the code up helps - but not as much as an object oriented system would...

      --
      Reason is the Path to God - Anon
    6. Re:He wants Visual Basic? by Anomylous+Howard · · Score: 1

      If you'd read the article, you'd know he suggests Python. His point was not that C/C++/Java are to hard for him, but that they are to hard for the hords of would-be contributers.

    7. Re:He wants Visual Basic? by Junks+Jerzey · · Score: 1

      And I really wonder what language he suggests. If not C/C++/Java, then what? VB?

      Wow, what a naive response!

      How about Python, Ruby, Erlang, Smalltalk, Perl, Lisp, ML, Pike, Lua, etc., etc.?

  13. Compilation time bounds productivity? by BreadMan · · Score: 5, Funny

    It requires compilation - as your code grows larger, the wait time to see if your code works increases.

    Everyone knows that once your code compiles, it will work!
    1. Re:Compilation time bounds productivity? by Arandir · · Score: 1

      "Gee, I don't know if this code I just wrote will work or not. But it takes too much time to compile it under C++. So I'll just use this interpreted weakly typed language and hope it can read my mind to find out what I want it to do."

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    2. Re:Compilation time bounds productivity? by jmacgill · · Score: 1

      Excetly, the time to test argument is a strange one. It is possibly valid if you are the only/main developer of an open source project and you are fully aware of the concequences of your edits and modification, at that point the compile time may just become an anoyance.

      In a distributed team effort the more tests and checks you can put in place to make sure everything still works the better. Most weakly typed languages allow far too many 'strange' side effects to creep in and if multiple developers are modifying the same code things could get out of hand quickly.

      Most large Open Source projects (including the one I set up) use unit tests to make sure one developer does not undo or break the work of another. Running these tests as part of the compile takes up even more time but the protection they provide is invaluable.

      --
      Spell checker (c) creative spelling inc. (aka my dyslexic brain)
    3. Re:Compilation time bounds productivity? by __past__ · · Score: 1
      You do realize that C++ is weakly typed, whereas languages like Python or Lisp are not, do you?

      Hint: "Weak" is not the same as "dynamic".

    4. Re:Compilation time bounds productivity? by be-fan · · Score: 2, Insightful

      This C++ is a weakly typed language is bullshit. I get far more type errors in Python (which I love, btw) than in C++. Dynamic typing is both a blessing and a curse, as is static typing. Now the Java-heads like to say that C++ is a weakly typed language because it lets your do unsafe casts. Well of course it lets you do unsafe casts! How else would you write kernels in C++ if it didn't? The point is that you don't have to use unsafe casts in regular programming.

      PS> I have a feeling most of the "wealky typed" arguements come from people who only see the "C" side of C++. For example, I was doing a messaging system the other day. What's the first instinct of a C programmer turned C++ programmer in a situation like that? Have a message contain a void pointer to an untyped buffer, of course. My solution? Use boost::any to encapsulate the message data and use boost::any_cast to do typesafe conversions when the message data needs to be unpacked. Throw in placement new and a sane copy constructor, and you have a perfectly type-safe way to send objects from point A to point B. It's this kind of stuff that you don't see when reading all the legacy C++ code out there, and its largely because of that that C++ gets such a bad rep.

      --
      A deep unwavering belief is a sure sign you're missing something...
    5. Re:Compilation time bounds productivity? by kisielk · · Score: 1

      Sure. If it compiles it probably works. Assuming, of course, that "works" does not necessarily imply it does what you intended it to do :D

    6. Re:Compilation time bounds productivity? by __past__ · · Score: 1
      Well, as you say, C and C++ let you do "unsafe" casts (or any kind of casts, for that matter). That is the very definition of "weakly typed". It doesn't mean that your language has no honor or something, just that you can work around the type system, if you choose to. You cannot do that in strongly typed languages. Like Python or Lisp.

      That said, my experiences are very different from yours. I have used both "traditional" statically typed languages (mostly C++ and Java) and some fancy ones like Ocaml and Haskell. After eventually switching to dynamically typed ones, I figured that most of the errors the type systems catched at compile-time would not have been errors in the first place, were it not for the restrictions of the type system. And that proper unit testing will find type errors just like all others - if your program doesn't work, they'll tell you, and a type error that doesn't make your program run incorrectly is not an error.

      However, sometimes type information is undoubtly useful, and be it only for documentation purposes or optimization. I for one am happy that I can declare my types when I want to, but don't have to if I don't.

      Then again, I don't write kernels too often, but I guess I'm the exception, because every PFY writing his Instant Messaging client in C explains that it's because C is the only language you can write a kernel in. But you were even talking about kernels in C++. For some reason I cannot think of more C++-based OSes than about ones written in type-safe languages. YMMV.

    7. Re:Compilation time bounds productivity? by be-fan · · Score: 1

      You cannot do that in strongly typed languages. Like Python or Lisp.
      >>>>>>>
      I consider that a bug, not a feature. I don't buy into the "bind the hands of the programmer" argument. reinterpret_cast isn't something you write by accident. If you use it, you have a damn good reason to use it. And outside of the runtime support, or in the kernel, you have no reason to use it. Its a matter of moral typesaftey vs theoretical typesaftey. I guess C++ isn't theoretically type safe because it has unsafe casts. However, it is morally typesafe because unless the programmer makes a concious decision to bypass the type system, the system is fully typesafe. Theoretical typesaftey buys you nothing. It eliminates the language from being useful for a significant amount of code (hardware-level programming, kernels, runtime support, etc) while gaining you nothing in terms of actual saftey. If I want to go around purposefully messing up my program, I can easily just write while(1): pass in Python as I can write reinterpret_cast in C++.

      Then again, I don't write kernels too often, but I guess I'm the exception, because every PFY writing his Instant Messaging client in C explains that it's because C is the only language you can write a kernel in.
      >>>>>>>>>>
      GUIs are one of the places a dynamically typed language works really nicely. I certainly wouldn't write a GUI in C++, I'd write it in Python. However, most of my work goes nowhere near that close to the user. My hobby is working on an OS kernel (in C++!) and my job involves embedded programming.

      --
      A deep unwavering belief is a sure sign you're missing something...
  14. C/C++ no longer viable languages? by pfleming · · Score: 0, Redundant

    Interesting that viable languages weren't named, just ones the author decided weren't viable for him.

    In no way do I believe that open source distributed developement should all take place in perl/java/php/whatever. Code should be written in the best language for that particular code. The Linux kernel is coded in C(or is it C++?), maybe someone should tell Linus that C isn't a good language for an OS project.

    1. Re:C/C++ no longer viable languages? by omibus · · Score: 1, Redundant

      Neither does the author. He is talking about application development. Application development is different that OS development.

      And as far as application development goes, C++ is a bad choice.

      Point one: Applications dont care about squeezing every bit of performance out of their code. Niether do you if you use STL, so why not use a language that is actually easy to use overall.

      Most windowing libraries that I've seen for C++ have a 6 month learning curve. I learned VB in 2 weeks, Delphi in 3 weeks, and C# in 1 week (posted in order learned). In both languages I was creating Windows applications in an hour. I've been using C++ for years and still cant create a decent Windows application in under 2 weeks.

      Point two: Applications care about features.

      Point three: Applications care about getting it done. And the faster they better.

      Most applications are written in VB, Delphi, or Java these days, and .NET will quickly overtake them. Welcome to the real world.

      --
      Bad User. No biscuit!
    2. Re:C/C++ no longer viable languages? by be-fan · · Score: 1

      That's because the standard Windows APIs for C++ are utter shit. The only half-decent C++ GUI library to come out of Redmond was WTL, and (surprise) nobody's ever heard of it. Try Qt (or if you can find a copy) BeOS's API. Much easer, much cleaner. Even FLTK is pretty nice (much more C++-ish than the others).

      --
      A deep unwavering belief is a sure sign you're missing something...
    3. Re:C/C++ no longer viable languages? by KewlPC · · Score: 1

      Point one: Applications dont care about squeezing every bit of performance out of their code. Niether do you if you use STL, so why not use a language that is actually easy to use overall.

      Yeah, because nobody actually cares about having a snappy, responsive GUI. Nobody cares about having their programs start up in less than 10 minutes. Trying to make programs that have good performance is SO ten years ago!

      I also love the way you used Visual Basic, Delphi, and C# as your example of how quickly development should go. News flash: no matter what language you use, if it only took an hour to write your app, then your app probably isn't that good.

      Point two: Applications care about features.

      Yes, but adding extraneous features just leads to bloat. Just look at Emacs: 100+ megabytes for a goddamn text editor.

      Point three: Applications care about getting it done. And the faster they better.

      Ok, you say that the faster an application gets its work done the better, but just before that you said application performance isn't important. Is a certain someone contradicting himself? I think so.

      Or did you mean application developers? If that's the case, you need to work on your communication skills.

      Most applications are written in VB, Delphi, or Java these days, and .NET will quickly overtake them. Welcome to the real world.

      What? While I won't deny that a lot of programs are written in those languages, the majority of applications are still written in C or C++. I can count the number of programs installed on my machine that are written in something other than C or C++ on one hand.

      And not everybody is writing Windows apps. Even Windows developers laugh at kiddies who think Visual Basic is the answer to everything.

  15. Repeating the same old misinformation by h_jurvanen · · Score: 4, Insightful

    There are no standard libraries for C++, so there?s a lot of reinventing the wheel. (Yeah, there?s the STL and others, but each one has a huge learning curve associated with it).

    This is a huge error that casts doubt on the author's credibility. What is commonly known as the STL is the C++ standard library, and it has been since C++ became an ISO standard in 1998. Doubters may consult books like the clearly-named "The C++ Standard Library" (Josuttis, 1999) to get themselves up-to-date.

    Maybe that's just another drawback of C++... a lot of people don't know what the hell they are talking about and thus repeat misinformation?

    1. Re:Repeating the same old misinformation by Rinikusu · · Score: 1

      Well, great, go for it and write your own Peek-a-booty in the language of your choice. The author merely stated that STL C++ wasn't for him and in fact was a barrier-of-entry to new people to the project whom he wanted up and running quickly so that they could become active contributers.

      --
      If you were me, you'd be good lookin'. - six string samurai
    2. Re:Repeating the same old misinformation by Capt_Troy · · Score: 1

      Sounds like he hasn't programmed in C++ for quite some time that's for sure. I was away in java land for a few years and then came back, low and behold, all the STL stuff was standard now. Hurray!

      Another doubt casting problem is that he never mentions what a suitable substitution to C and C++ is... He says java is good for the server side, but you can't replace all C++ apps with server side Java. So if "C/C++" isn't viable, what is?

      And he seems to consider C and C++ almost the same language which they most definity are not...

      Oh well.

    3. Re:Repeating the same old misinformation by Rinikusu · · Score: 3, Interesting

      Actually, he just says that C++ is no longer a viable programming language. A quick look at the sourceforge project page reveals that peek-a-booty is indeed written in C++.

      --
      If you were me, you'd be good lookin'. - six string samurai
    4. Re:Repeating the same old misinformation by codefungus · · Score: 1

      I tell ya what casts doubt on the author is the fact that he says "start with the interface". I mean c'mon. That's not the right way to program...that's just backwards. Your application should perform it's function and the interface should be started later. Starting with the interface causes your application to be "glued" to it and you do in fact have to rewrite it several times that way.

      --
      -- A cat is no trade for integrity!
    5. Re:Repeating the same old misinformation by Simon · · Score: 1
      "start with the interface". I mean c'mon. That's not the right way to program...that's just backwards.

      :-) I can't help but feel that the traditional wisdom in the software industry about how to develop software, is just damaging programmers. Much like teaching BASIC...

      The user interface is the first thing that should be designed when developing a program. Even before any code is written, it should be planned out somehow (pencil and paper is good at this stage). Only once you know what you are trying to make should you start working out how it should work internally to achieve that goal.

      The interface is the most important thing. It is what you are building. Everything else flows from that.

      --
      Simon

    6. Re:Repeating the same old misinformation by Zaak · · Score: 1

      I tell ya what casts doubt on the author is the fact that he says "start with the interface". I mean c'mon. That's not the right way to program...that's just backwards. Your application should perform it's function and the interface should be started later. Starting with the interface causes your application to be "glued" to it and you do in fact have to rewrite it several times that way.

      Doing it "backwards" sounds to me like one of the principles of agile methods. Start with user stories. There's nothing like a prototype UI to help you figure them out.

      TTFN

  16. Now, keep in mind I'm a LAMP developer... by Anonymous Coward · · Score: 0

    ... but, regarding 'which language / db to use', maybe his site is an example of why NOT to use MySQL?

    Warning: Can't connect to MySQL server on 'localhost.addr.com' (61) in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

    Warning: MySQL Connection Failed: Can't connect to MySQL server on 'localhost.addr.com' (61) in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

    Warning: MySQL: A link to the server could not be established in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 131

    Warning: Cannot add header information - headers already sent by (output started at /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php:131) in /usr291/home/drunkenm/public_html/pbhtml/mainfile. php on line 45

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Search

    Topics

    July 2, 2003 Create an account

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 447

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 447

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr291/home/drunkenm/public_html/pbhtml/includes/ sql_layer.php on line 543

    >All logos and trademarks in this site are property of their respective owner.
    Comments are property of their posters.
    >You can syndicate our news using the file backend.php or ultramode.txt

    1. Re:Now, keep in mind I'm a LAMP developer... by TheShadow · · Score: 2, Informative

      This really has nothing to do with MySQL. It due to the crappy database access interface in PHP and developer laziness/ignorance.

      --

      --
      "What do you want me to do? Whack a guy? Off a guy? Whack off a guy? Cause I'm married."
    2. Re:Now, keep in mind I'm a LAMP developer... by Havokmon · · Score: 1
      It due to the crappy database access interface in PHP and developer laziness/ignorance.

      Or maybe something as simple as:

      • Discover your max database connections.
      • Throttle down Apache to HTTP connections less than SQL connections.
      Not that I've ever needed/cared to try it, but it's a thought, and in theory compensates for PHP/PERL/CGI SQL issues..

      --
      "I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)
  17. 95-5 rule? by Anonymous Coward · · Score: 0

    No offense Paul, but if your code was easier to follow it'd probably be a lot more favorable ratio. Might have even made C++ a viable choice. I do a lot of open source work in C, and have had no problems at all -- old timers (like myself) know it as the lingua franca of the *n?x world, and younger folk know it as most of C++.

  18. Re:"C/C++ is no longer a viable development langua by Vengeful+weenie · · Score: 2, Informative
    Actually, I'd like to know what other projects are using. I think that some of the fustration with C/C++/Java also springs from the fact that this is a Windows development effort. I used C++ on Windows for a few projects and it -- is -- a -- bear. Doing any of this type of development for Unix/Linux or cross platform support I think changes the rules.

    Not mentioned is the final langauge they used. Is the code in C/C++?

    I do agree with the binary protocols vs. text protocols, but I'm not sure that is a recent revelation. Most of the Internet protocols use text based protocols.

  19. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 1, Informative

    It is hard to back the statement up with an "absolute" truth thanks to the fact that you will always choose your tools according to the task at hand. You can't say that language X is better than language Y when both are generally ment for different things.

    Oh, and C/C++ are still viable options, but don't dominate the market as much as they used to.

  20. Wow, peek a booty by Anonymous Coward · · Score: 0

    This is the kind of project manager who is really qualified to pass on experience to others.

    The same goes for the 90238502934823 sourceforge projects that never got past the FAQ stage of the project. I want to take advice from them!

    Wow, beek-a-booty: that well-known highly important open source project. Who would rather learn from the managers of, say, Apache or Linux or PostgreSQL anyway? Teach me how you managed development of PEEK A BOOTY!

    1. Re:Wow, peek a booty by Anonymous Coward · · Score: 0

      He didn't post it to slashdot. Give him a break.

  21. An excerpt by Call+Me+Black+Cloud · · Score: 5, Funny

    June 14, 2003

    Dear diary,

    I have decided to record my thoughts on managing the project "peek-a-booty". The most important lesson I've learned is not to use booty in a project name!

    Sure, it was funny two years ago after a few beers, but I swear the next person that makes a "booty" joke will die. I'm serious. "Dude, is it for peeking up skirts?" "Hey, if you integrate telephony you can call it 'peek-a-booty-call'"

    In other news, I'm starting a new project to manipulate network traffic, this time using Java. I'm thinking of calling it 'jAck Off'. I like the sound of that. It will be good to get that whole 'booty' thing behind me...

    1. Re:An excerpt by WC+as+Kato · · Score: 1

      July 3, 2003

      Dear Diary,

      I was Slashdotted yesterday. WooHoo! I'm famous! Damn, it took my server down and people thought my 'peek-a-booty' name sucked. Gotta come up with a new name...

      Slash-peek ... Nah
      peek-a-dot ... Nah
      booty-dot ... No. People would think I have a butt tattoo.
      booty-slash ... Kinda flashy.
      Slash-a-booty ... Hmm getting close

      June 1, 2003

      Dear Diary,

      I'm still famous. People are still flaming me about 'peek-a-booty'. May need to change venue and start a porn site. Hmm... 'Peek-at-my-Booty' sounds cool. I can work in some of my booty-dot photos. Yeah, I'm on a roll now.

      --
      --- I'm Green Hornet's sidekick not Inspector Clouseau's!
    2. Re:An excerpt by LetterJ · · Score: 1

      The naming of Open Source projects is in a sorry state. So many projects choose names like this. I recently compiled a list of things to think about when naming a project. People are free to add their own to the list:

      HOWTO: Name Your Project

    3. Re:An excerpt by obsidian+head · · Score: 1

      Funny, made my day! (Well, as they say..)

  22. Depends on What you Want by m_niessner · · Score: 1, Interesting

    C++ is still a very viable language. I have not seen that many Visualization or Gaming Apps written in anything but C++. My only dislike of C++ is it's syntax. I personally think it is one of the ugliest languages ever. However, I do not let that beleif stand in front of the fact that it is still very useful.

    1. Re:Depends on What you Want by dmeranda · · Score: 0, Troll
      ...I personally think it is one of the ugliest languages ever.

      Have you seen Perl? Or for the old-timers, JCL? Now that's ugly! (but to be fair, both are very powerful).

    2. Re:Depends on What you Want by Junks+Jerzey · · Score: 1

      I have not seen that many Visualization or Gaming Apps written in anything but C++.

      Actually, these days most of the popular games from smaller developers are written in Flash (aka ActionScript), but a number of entrants in the Independent Games Festival used Python + PyGame.

    3. Re:Depends on What you Want by m_niessner · · Score: 0

      When I think of popular games, I think of quake, half-life, so on. No 3D-game that needs a decent framerate is going to be written in flash. You are going to use, Direct3D or OpenGL to get things going fast on the graphics card.

  23. a lame FAILURE post by Anonymous Coward · · Score: 0

    Not only did you FAIL to get the first post, you also FAILED to even get modded down in reasonable time!

    What kind of a lame FAILURE are you?

  24. Re:"C/C++ is no longer a viable development langua by Zathrus · · Score: 1

    Well, I rather disagree with him on this point... particularly regarding C++.

    There is, indeed, a standard library for C++, one which is widely supported - STL. Is there a learning curve? Sure. And you're going to tell me that there isn't a learning curve for any other language, library, or whatever? Please.

    I started at my current job a bit over 15 months ago. I knew only the basics of C++, and nothing at all about the STL (or even templates). It took me about a week to be comfortable using the STL, and I could read the code instantly -- there's nothing radical about it.

    Are compile times long? They can be... particularly if you need to compile from scratch or change one of the base libraries used. But on modern hardware it's not a huge issue, and consider how much time you'll end up saving users because it's not an interpreted or pseudo-compiled language. Yeah, I like Perl and Python too, but they're not suitable to really large projects, particularly if you need them to scale very widely.

  25. Re:"C/C++ is no longer a viable development langua by Arandir · · Score: 4, Insightful

    C and C++ are most certainly viable development languages. Let's see now: Linux, BSD, GNOME, KDE, Apache, Mozilla. Even Perl, Python and Ruby are written in C or C++. But maybe the author is saying those projects aren't viable...

    Use the right language for the job. If all you're doing is interfacing to a database, then a scripting language may be the most appropriate. But if you're writing system software, then by all means stick with C and C++ with some shell glue.

    Compiled languages are damned convenient to the user. "Here's an executable, just run it", versus, "here's a script, go download compile and install the interpreter first, making sure it's the correct version, set up your environment variables correctly, then run the script."

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  26. Friends don't let friends... by boy_afraid · · Score: 1, Offtopic

    Friends don't let friends make lame posts.

    This is your brain,
    This is your brain doing lame posts.

    Only you can prevent lame posts.

    Give a lame post a change.

    Where are the WLPs (Weapons of Lame Posts)?

    There are no lames posts here. All the lame posts are being killed as I speak now. Praise Allah that we will roast the bellies of the lame posts.

    1. Re:Friends don't let friends... by NaugaHunter · · Score: 0, Offtopic

      Mmmm... roasted lame post bellies...

      --
      R: That voice. Where have I heard that voice before? B: In about 365 other episodes. But I don't know who it is either.
  27. Re:"C/C++ is no longer a viable development langua by computerme · · Score: 1

    Funny! Oh wait he was serious?

  28. Re:"C/C++ is no longer a viable development langua by Mr.+Frilly · · Score: 1

    What are your thoughts on using straight C?

    He disparages both C++ and Java as open source development languages, and I agree with his comments on those.

    But, besides the compile time issue, straight C seems to me like a good bet. It's such a basic programming language, that it'd be hard to find anyone who programs that doesn't understand the C language. The basic libraries are very standardized. Good debuggers exist. Etc. Etc. Etc.

    Any thoughts?

  29. Duh by apankrat · · Score: 4, Interesting

    C/C++ is no longer a viable development language

    Sure, in the scope of this particular project and in the context of their skillset and development practices.

    Don't Use Binary Protocols for Application Development

    Bah, I'm speachless. Yeah, right. Better yet convert data to PNG images and pass those along - it will allow you to debug networking layer with a web browser ... Ever heard of protocol layering or data marshalling ?

    With all due respect, it looks like Mr.Baranowski either learnt wrong lessons or likes to summarize things beyond reasonable limits.

    --
    3.243F6A8885A308D313
    1. Re:Duh by Anonymous Coward · · Score: 1, Insightful

      With all due respect, you are clueless.

      Once you have a network that you want to maintain, you can't assume that everyone will run the same version of a node. This is a big problem with binary encoding which tends to break compatibility when changed. It's possible to design offset independent binary protocol, but then again, XML is also 0's and 1's. If you gzip your XML, you remove redundancy (thus eliminating most of the network bloat argument) while still maintaining excellent compatibility (new elements are ignored instead of breaking things).

      So, next time you get on your high horse, don't... If you don't respect Mr. Baranowski, that's your personal problem. You should ask yourself why he said that instead of assuming that you know the answer.

    2. Re:Duh by Salamander · · Score: 1

      XML compresses well because it's so mind-numbingly redundant in the first place, and gzipping a bloated format costs more memory and CPU than having a non-bloated format in the first place. Usually it's not enough to worry about because there are other, bigger performance problems to worry about first, but when you've reduced inefficiency elsewhere in the code you're stuck looking at an inherently inefficient format that you can no longer change because to do so would make you inoperable with existing implementations. Bad idea.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    3. Re:Duh by crucini · · Score: 2, Insightful
      It looks to me like you just haven't yet learned the lessons he learned. Which is fine - most of us can only learn through pain. HTTP, SMTP and friends were widely accepted because they're text-based. This has great implications. You can simulate a client with telnet. You can paste part of a session into email or chat when discussing a bug. When interpreting the complexities of HTTP 1.1 you don't have to perform a second level of mental indirection to translate a header to a numeric constant you're looking at in a hexdump.

      I think the creation of a new binary application-level protocol needs to be specifically justified. Either:
      • One end of the link is computationally weak, like a tiny microcontroller.
      • The ratio of messages to available bandwidth is very high. But remember, binary protocols aren't guarranteed to save bandwidth - the simpler they are, the more wasteful of bandwidth. If you take a huge C struct and put it on the wire, and most of the fields are irrelevant in a particular message, you might have saved bandwidth by using a text key=value scheme.

      On the whole, binary protocols are like any other optimization, and should be applied judiciously when a performance gain can be expected. If you properly abstract the generator/parser for textual messages, it shouldn't be too painful to make the optimization.
  30. Re:FP! by Anonymous Coward · · Score: 0

    Duh, if, say, 4 AC's all try and get the First Post, only one of them will succeed. The rest are FAILURES, which means a FAILURE rate of 75%, with only 25% actually getting the First Post. So you are quite correct, most AC's are FAILURES.

    Simple, really when you think about it.

  31. What's this guy doing? by JohnwheeleR · · Score: 3, Informative
    1. He shouldn't speak so generally by saying things like "C/C++ is no longer a viable development language."
    2. He shouldn't speak so authoritatively having only one OS project under his belt.

    It sounds like he busted his ass on a project no one appreciates because it is generally useless.

    1. Re:What's this guy doing? by JakusMinimus · · Score: 1

      It sounds like he busted his ass on a project no one appreciates because it is generally useless.

      Sure, it is useless in general. But specifically useful to those living in China that can think for themselves and have a hard time abiding by their government's censorship.

      --

      You can be an atheist and still not want to succumb to some weird cross-over sheep disease -- AC
  32. Opinions Aren't 100% Correct Otherwise by deadlinegrunt · · Score: 2, Interesting

    they would just call them facts.

    "C/C++ is no longer a viable development language..."

    "not viable development languages for application level work."

    "...It's really, really, really hard for people to learn it."

    "...There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it)."

    So in otherwords it's shocking that the programmer has to know something about the tool, platform, domain, etc. to be able to code? G~A~S~P!!!

    What's the number one complaint of almost all end users to a product? Code bloat and speed . Sorry to tell you this but if your complaining about compile times then you don't have much of an option when it comes to execution speed of the same said program being compiled.

    --
    BSD is designed. Linux is grown. C++ libs
    1. Re:Opinions Aren't 100% Correct Otherwise by Anonymous Coward · · Score: 0
      What's the number one complaint of almost all end users to a product? Code bloat and speed.

      Where the hell did you pull that out of? I support a number of end users, and I never hear them mention "code bloat". The number one complaint of end users, regarding software, is that it's broken. Crashing, failing, throwing up cryptic error messages - those are the top complaints. I can make any software fast by giving it more hardware.

    2. Re:Opinions Aren't 100% Correct Otherwise by BigBadBri · · Score: 1
      I agree.

      1. I am shite at coding.

      2. Given a great deal of effort, I produce neat, fast, robust C/C++ code (including UI stuff) that has no memory leaks, buffer overflows, or other problems.

      3. If I can do it, bearing in mind I'm primarily a networks guy, how is C/C++ 'really, really hard for people to learn'?

      The author seems to think that programming should be intuitive, and compile immediately.

      If I can do it, anyone can.

      --
      oh brave new world, that has such people in it!
  33. Release it by Anonymous Coward · · Score: 1, Funny

    When you want it to die a miserable death.

  34. Mod Parent (+5,Very True) by Anonymous Coward · · Score: 0
  35. C++ is actually wonderful by dmeranda · · Score: 1, Insightful

    Modern C++ is a wonderful language, at least I think so. But it is much different than the "old" C++, almost to the point of being a different language. So if you've had bad experiences with C++ in the past, perhaps you should give it another look. And C++ is not dead, there are a lot of interesting advancements in the language, and more properly how to use it. There are a whole lot of generic programming and template patterns which are comming out which show that C++ has a lot more power than people ever thought.

    Of course C++ does tend to have some problems with Open Source projects, which C usually doesn't have. So I certainly don't frown on C development either. And plain old C is usually very easy to integrate into other languages/environments.

    1. C++ compilers are just now catching up to the standard. gcc 3.3 for instance is pretty darn good now, but lots of compilers have lots of problems.
    2. C++ can be very slow to compile (or more technically to link), especially as you use lots of templates.
    3. The binary ABI is not universal. It's hard to write shared libraries in C++, so it's not as useful for components as it is an entire application.
    4. Dynamic linking in of C++ is next to impossible (dynamic linking often uses the dlopen() system calls, and it how most run-time plugin architectures, such as in Apache or Python work).
    5. Although in theory C++ is very portable, in practice that is still difficult (usually a victim of poor linkers). C++ which works fine under Linux may have serious problems under say AIX or HP-UX, unless you test on those platforms.

    However, C++ is certainly still alive and very viable on a whole. And O'Reilly just published the new C++ in a Nutshell book which covers the ISO standard C++ very well. Also you should look at the Boost Project if you're looking for more advanced C++ libraries (many of the Boost developers actively participate in the C++ standardaization effort, and Boost is often thought of as the testbed for possible language additions for the next round of standardization).

    But I do agree, that you need to pick the language according to the project. There is no one best language. When I look for other open source projects with the intent of being able to take advantage of the openness (i.e., modify the code), I tend to look for projects written in Python. I particularly avoid Perl, becuase it is much harder for me to understand. I also avoid Java because it's a proprietary language with no open source JDE/JDK and I think the language sucks when compared to ISO C++. But again, those are my preferences.

    1. Re:C++ is actually wonderful by be-fan · · Score: 1

      Just like to say I agree with you 100% Love Modern C++, and I think Python is really neat too. The two actually complement each other rather nicely :)

      --
      A deep unwavering belief is a sure sign you're missing something...
  36. peek-a-booty? Open source management? by Anonymous Coward · · Score: 0, Funny

    Talk about irony, isn't peek-a-booty one of those programs that allows everyone on the internet to (ahem) "open source manage" your computer for you? From the same people with the "system administrator tool" Back Orifice?

  37. pedophiles are people too by poptones · · Score: 1
    I think the only thing about peek-a-booty was that people were afraid it would open a pedophilia flood gate. This really pissed me off as obviously the juornalists behind these stories hadn't actually taken the time to investigate the actual software.

    I don't understand why this would "piss you off." Any sort of p2p anonymizing software is bound to be exploited not only by political dissidents but by pedophiles and anyone else with an agenda that is reviled in the mainstream. Is there any specific mention on the site of "anti-pedophile" filtering in the program? Any built-in means of policing the users of one's own node? If so, then it's useless for its intended function because the government could simply operate a bunch of nodes and snoop the traffic (which they will probably do anyway if this ever become popular - which brings up a point about this needing at least two levels of encrypted redirection, but that's not my focus here).

    So if it's secure, it's going to be used by pedophiles and probably lots of other people you wouldn't like - so what? Isn't the entire point of combatting censorship to give voice to everyone no matter if you agree with their agenda or not? I see no need to be defensive about someone pointing this out; if that is their argument then they obviously embrace censorship and are, therefore, among the very people this software is intended to help others overcome.

    1. Re:pedophiles are people too by Abcd1234 · · Score: 1

      Well, I do understand the anger, in that the minute some new technology comes out to defeat government-imposed censorship, people start crying out "Think of the children!" and "What about pedophiles" and so on and so on... it gets a little tiresome after a while. :)

  38. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    what you say is true.
    But having to spend time in Purify or Valgrind is not fun...

  39. C/C++ is dead...? by Anonymous Coward · · Score: 1, Informative
    According to the site, if you want to contribute to the project:

    You should be good with C++ which includes having a knowledge of pthreads, the Standard Template Library (STL), and templates.

    Plus the thing only runs under windoze or under WINE...

  40. Re:"C/C++ is no longer a viable development langua by Chmarr · · Score: 1

    It's not hard to pick up C, or be able to read a C program.

    It IS hard to write a large slab of C code that works, is relatively bug-free, easy to maintain, easy to add features to, and easy to 'understand'.

    This is why starting a large-scale program in something like Python, and just rewriting the bits you need in C (for speed), is a GOOD idea. Thankfully, languages like Python make this easy.

  41. LIAR! by sinserve · · Score: 1

    > It seems the author has picked up on that now, too. I think most telling is
    > this passage from the author's blog (weblog) [peek-a-booty.org]:

    No where in the blog does he say that. Prove me wrong and show me _EXACTLY_ where does
    he say that?

    Karma whores.

  42. Re:"C/C++ is no longer a viable development langua by Cereal+Box · · Score: 4, Interesting

    There is, indeed, a standard library for C++, one which is widely supported - STL.

    I don't think that's what he meant by a "standard library". He's thinking along the lines of Java's standard library -- a standard library that gives you graphics classes, networking classes, XML parser classes, GUI classes, etc. You know, the kind of stuff that would be convenient to have bundled with a language. STL is a standard library full of basic data types like linked lists and hash tables. Big whoop.

  43. Re:"C/C++ is no longer a viable development langua by JakusMinimus · · Score: 0, Flamebait

    forgive me if memory fails, but doesn't python require tabs or whitespacing in certain ways as part of its syntax requirements? i HATE that shit. i have a b.s. in physics, fortran is lingua franca among physicists, i refused to learn it (among other reasons) because of it's lame-assed spacing requirements. i think alot of other people feel the same way.

    not to take away from your point, which is valid, just an aside picking on your particular choice of language for your example. =)

    --

    You can be an atheist and still not want to succumb to some weird cross-over sheep disease -- AC
  44. Re: Documentation! by alexjc · · Score: 3, Insightful

    So, after two years he still hasn't realized the importance of documentation?

    "Document it and they will come."

    A good project is nothing without it...

  45. surprised by EZmagz · · Score: 2, Interesting
    This quote from the article really surprised me: " C/C++ is no longer a viable development language

    I am not a very active coder, nor will I ever be. Coding is just something that does not come naturally to me. However, I thought that for the most part, C/C++/Java were still the big "players" in the application development world (scripting's a different story). So I would like to know what this fellow suggests for a good language to start projects in?

    --

    "Hell hath no fury like a woman scorned for SEGA. ..."

  46. Closer to Design in Open Standards, but similar by nrrrdboy · · Score: 2, Interesting

    http://goatee.net/2003/07#_02we-a

    Design By Committee: "...Yes, you understand me correctly, I'm more worried about the size and character of the community than the actual technical issue."

  47. I fear Peek-A-Booty by Anonymous Coward · · Score: 1, Funny

    It's the perfect caption for the goatse.cx link.

  48. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    As a rule, people who bitch about whitespace in Python are the people who have never coded in Python. Hate it if you like, but you sound the fool when you bash something you admit to never having tried.

  49. Re:"C/C++ is no longer a viable development langua by Fourier · · Score: 1

    Everyone complains about the indenting before they actually see how it works. Just try it once. You may find, as I have, that your indentation does not change at all. The only difference is that you get to drop the braces around your code blocks.

  50. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    One wonders what he would consider an appropriate language. Which language is easy to learn, doesn't use static binding, isn't compiled, doesn't require a separate download, and has a standard library?

  51. Oh, it's worthy all right... by Anonymous Coward · · Score: 0

    ... for me to POOP on!

    - Insult Comic Troll

  52. Re:"C/C++ is no longer a viable development langua by Dominic_Mazzoni · · Score: 2, Insightful

    Compiled languages are damned convenient to the user. "Here's an executable, just run it", versus, "here's a script, go download compile and install the interpreter first, making sure it's the correct version, set up your environment variables correctly, then run the script."

    Amen. When I'm trying to solve a problem, I like using high-level languages like Perl or Python. But when I need to write an application that I want ordinary users to be able to download and _just use_, I don't have a choice - I have to write it in C or C++.

    Luckily, thanks to faster processors (shorter compile times) and tools like valgrind to detect memory errors, programming in C and C++ isn't nearly as bad as it used to be.

  53. Re:"C/C++ is no longer a viable development langua by sean23007 · · Score: 1

    No offense intended, but personally I find proper whitespace to make code much more readable. In many cases I find it to be more essential in code than in written English (I take this to be on account of the fact that English is so redundant already, whereas every single symbol means so much in code).

    When I'm going through another person's code, it is very irritating to me when that person is a member of your (space|tab)-hating philosophy. Indentation does help with readability.

    --

    Lack of eloquence does not denote lack of intelligence, though they often coincide.
  54. Re:"C/C++ is no longer a viable development langua by InodoroPereyra · · Score: 1
    OK, fine. But what is? It does no good to make a statement like that unless you back it up with an alternative.

    Well, not only this, but also he says in the FAQ for the project:

    * I would like to help develop Peekabooty.

    You should be good with C++ which includes having a knowledge of pthreads, the Standard Template Library (STL), and templates. A heathly knowledge of design patterns is also helpful. To download the source code click here.

    Contradictory ? Yes. To make it even funnier, his project is only made by him and two contributors (what a big project), and to tap it all he recommends you being wealthy.

    I would rather read what other people have to say on OSS management (say Linus, RMS, folks from OpenOffice, Mozilla, JBoss, etc.)

  55. Re:"C/C++ is no longer a viable development langua by JakusMinimus · · Score: 1

    As a rule, people who bitch about whitespace in Python are the people who have never coded in Python.

    Uhm, yeah. Isn't that what I said? And "looking the fool" is neither new to me nor anathema.

    Sorry, but I really dislike languages where what you do with your whitespace is part of the syntax. It's a gimp requirement.

    --

    You can be an atheist and still not want to succumb to some weird cross-over sheep disease -- AC
  56. convienient by pyrrho · · Score: 3, Insightful

    no, I don't think bundling that is particularly convienient... indeed, I think that it's more convienient to have a choice and not have things like that tied tightly to the language.

    Right now there are well established libraries in C++ for anything you get from standard libraries that are tightly integrated... just with multiple competing established libraries. A wealth of choices.

    There is no standard GUI library that ships with all compilers. That will come, but not before it's time. Java gives such a library... too bad it sucks.

    --

    -pyrrho

    1. Re:convienient by Cereal+Box · · Score: 1

      Ah the timeless "but there's no choice in a standard!" argument. I'd say Java's standard library is very advantageous. The beauty of it is that you can take Java sources and provided you are working with a compatible SDK/compiler version, it'll "just work". if the library is available for all compliant implementations/platforms. With C++'s "competing libraries" on the other hand, you don't have any guarantees with respect to the abilities of the libraries or that the libraries will be available for the platform in the first place. Plus, it's not a given that you can compile some C++ sources because you have to download all extra libraries (provided they exist for your platform!), compile them (and make sure it actually succeeds) and THEN compile your sources. With Java, if your implementation is complete, you've got the standard libraries right there. No screwing around. And Java's standard library is not "tied tightly" to the language, it's just shipped with it, to give you a guarantee that at least you HAVE that library available to you. And you can always use third party libraries if you want.

    2. Re:convienient by pyrrho · · Score: 1

      >With Java, if your implementation is complete, you've got the standard libraries right there. No screwing around. And Java's standard library is not "tied tightly" to the language, it's just shipped with it, to give you a guarantee that at least you HAVE that library available to you. And you can always use third party libraries if you want.

      So, basically, one, I don't think it's all right there because there is the little thing about setting up the java environment itself, which in my experience is no easier than any other environment. I have not found that Java is some magical "just works" type of system. Sorry but that seems more like wishful thinking. Perhaps good java programmers set their environment up so that it appears to just work. Guess what, all good programmers to that, C++ project "just work" after you have made them "just work".

      And two, you point out you can use alternate libraries if you like. Would you be happy if all C++ compilers started shipping with GTK, so there was a standard library that you could replace if you like?

      Far from feeling like the JVM design means I don't have to worry about the machine... it multiplied my worries, not only do different VMs have different problems, but since different VMs run on the same architecture one has to worry about learning every VM and how it's going to behave, if someone wants to make an informed decision about how to deploy one's work.

      There still isn't a magic bullet, but C++ doesn't try to be. It a tool kit. There is nothing you cannot do with it. What is bad about a tool like that? In fact, professional tools are always like that... the do-it-yourself handimand tools might be made of plastic and be simplified... but class yourself.

      btw: I do believe Java has it's uses, and VM's certainly do. I'm in reactionary mode about C++ and compiled vs. VM languages... I think there is a lot of FUD, basically, about C++.

      --

      -pyrrho

  57. Re:"C/C++ is no longer a viable development langua by 4of12 · · Score: 1

    It does no good to make a statement like that

    Yes, it does some good.

    The first step in finding or creating a better alternative is to clearly define exactly how the current language is bad.

    Having suffered for years under C and C++, I've lately becomed enamored with Python. I believe it solves a lot of the problems he describes.

    --
    "Provided by the management for your protection."
  58. Re:"C/C++ is no longer a viable development langua by hackrobat · · Score: 5, Interesting
    I work at Oracle. C++ is banned here. Apparently, Oracle software runs on more platforms than there are C++ compilers for. Therefore, C++ is a strict no-no. The internal C coding standards doc reads somewhat like this:
    1. Don't write C++.
    2. If you've already written C++, rewrite in C.
    :-)

    So it's either C, or Java (lately). Anything else is considered as scripting (Perl, Shell, SQL).

  59. What language are (most) all OSes written in? by jordan · · Score: 2, Insightful

    As much respect as I have for the project and its developers, his broad, sweeping statement to the effect of C/C++ is no longer a viable language is really telling of his ignorance and lack of perspective. Which is too bad, since there are other points he makes that are useful lessons.

    To claim the fundamental implementations of all modern OSes (Windows, almost every single UNIX, Linux, and the plethora of other OSes) to be "no longer viable" is way beyond reproach: it's just plain idiotic, and does significant damage to the credibility of his other points.

    Unfortunately, my that-was-ridiculously-stupid meter flew off the scale when I read that point, so I stopped reading right there.

    1. Re:What language are (most) all OSes written in? by inerte · · Score: 2, Informative

      my that-was-ridiculously-stupid meter flew off the scale

      What about your attention span? The paragraph below says:

      it was a very difficult transformation to accept that these languages are not viable development languages for application level work.

    2. Re:What language are (most) all OSes written in? by jordan · · Score: 1

      Perhaps you didn't notice I said "OS implementation" and not "kernel". Do a ps aux on a Linux box sometime and see if you can figure out what I meant.

    3. Re:What language are (most) all OSes written in? by inerte · · Score: 1

      So, because something has been done before, it should be done forever?

    4. Re:What language are (most) all OSes written in? by jordan · · Score: 1

      You obviously missed my point.

      The utility of any one language is irrelevant here; the point is that proclaiming the unviability of C and C++ while failing to recognize the obvious -- a colossal amount of software written in C and C++ comprise almost every major portion of all modern OSes today -- is just, quite plainly, asinine and grossly ignorant.

    5. Re:What language are (most) all OSes written in? by inerte · · Score: 1

      I don't see it the way you described... for me the author said that, while C/C++ has been used a lot to do various tasks, there are areas where it's not the best language.

      He didn't failed to recognize the massive amount of software written with C/C++. He just said that it shouldn't have been used :p

      It's like saying that everyone should use and develop for Windows, because "a colossal amount of people" (~91%?) use it, isn't? For me it is...

      As you know, lots of people use C/C++ when better solutions are available, but as with IBM and Oracle, none has been fired because they've used these languages ;)

      Its popularity drive a lot of decisions....

    6. Re:What language are (most) all OSes written in? by crucini · · Score: 1
      Perhaps you didn't notice I said "OS implementation" and not "kernel".

      Actually, you said the fundamental implementations of all modern OSes which seems to mean the kernels.
      Do a ps aux on a Linux box sometime and see if you can figure out what I meant.

      I did, and I figured out that you consider Mozilla the "fundamental implementation" of Linux. Did I guess correctly?
  60. Re:"C/C++ is no longer a viable development langua by AceMarkE · · Score: 1

    *sigh*

    Y'know, this seems to be the one thing that people who have never tried Python latch on to as a reason to dislike it. I'll grant that it takes a bit to get used to, but it really is quite comfortable and makes things look clean. Besides, writing readable code requires decent indentation and most IDEs auto-indent anyway, so it's not like you have to go to all kinds of extra effort.

    Basic explanation: Python doesn't use {} to denote blocks, it uses indentation. 4 spaces is the convention, but as long as all lines under the parent are indented the same, it'll accept it (1 space, 4 spaces, 15 spaces, doesn't matter as long as they're the same). You can even have, say, two for() loops at the same level, one whose block is indented at 4 spaces and the other whose block is indented at 7.

    </rant>

    Mark Erikson

  61. Re:"C/C++ is no longer a viable development langua by pyrrho · · Score: 1

    I don't understand what's so difficult about C++, espc. if you know C.

    C++ is a multiparadigmed language. You don't have to know everything it offers because you also won't want to use everything it offers in any given project, indeed, you will find there are certain paradigms available you will never use. Is that difficult?

    If you know C you should at least like C++ to use to create constructors for structures that clear the structure, or to create functions with more than one form of argument input, etc.

    I frankly don't understand the problem.

    --

    -pyrrho

  62. Repeat after me: The Interface is Everything by 2TecTom · · Score: 5, Insightful

    As an interface designer and technical writer, this has always been my personal mantra. It's finally nice to see that at least one engineer finally actually gets it!

    You probably won't believe how many MMI designers and technical writers are feeling totally vindicated at this point.

    Really, it's not often one sees history in the making. ;~)

    --
    Words to men, as air to birds.
    1. Re:Repeat after me: The Interface is Everything by Yaztromo · · Score: 2, Insightful

      As an interface designer and technical writer, this has always been my personal mantra. It's finally nice to see that at least one engineer finally actually gets it!

      He gets it, but he doesn't get it. To specifically quote what he wrote:

      This is similar to the #1 project management lesson. The program should be fun to work with. There should be buttons and things that blink. The interface should be the first thing you do.

      I agree that the UI is extremely important. It bugs me how many Open Source projects don't bother to employ the skills of someone well versed in HCI (although as an Open Source project administrator myself, I can say that finding such people can be difficult. I've been lucky to have attracted the attention of some people who have some interface design experience).

      However, it shouldn't be the first thing you do. That's the top-down design paradigm, and it doesn't make for particularily maintainable code. You wind up with a pile of code that is so tightly coupled to the GUI that it's difficult to use the useful portions of the code for any other project.

      It's much better to break the design into two parts -- the core "engine" code that actually does the work irrespective of interface, and the UI. Neither should be tightly coupled to the other, but both should be considered equally important.

      The problem with many Open Source (and closed source for that matter...) projects is that the GUI becomes tightly coupled to the "engine" code. I've seen this happen in all sorts of poorly planned projects, wether the source is open or closed, but this sort of design seems to harm Open Source code moreso, because the useful bits become difficult to use in other Open Source projects.

      Whatever you do, don't code the UI first. This makes it too easy to fall into traps that cause your engine code to become tightly coupled with the UI code, and difficult (or impossible) to use without your UI components. But when you do get to the UI, make sure you have your target audience in mind, take the time to design it for maximum usuability, and make sure it has all the bells and whistles your audience expects. It's how the user interfaces with your program, so it's going to be the biggest element in how they judge the usuability and usefulness of your project.

      Yaz.

    2. Re:Repeat after me: The Interface is Everything by Simon · · Score: 1
      I agree that the UI is extremely important...

      ...However, it shouldn't be the first thing you do. That's the top-down design paradigm, and it doesn't make for particularily maintainable code...

      ...Whatever you do, don't code the UI first...

      But when you do get to the UI, make sure you have your target audience in mind, take the time to design it for maximum usuability,

      You've got interface design all confused and mixed up with interface implementation. They are most definately not the same thing. Interface design should definately happen before code is even written. (Sketched out on paper etc) Interface implementation can happen whenever it makes sense for the programmer. (top-down, bottom-up, sideways, whatever.)

      You need to realise that the GUI exists to do what the users wishes, and the core code exists to do what the GUI wishes. It's not a case of the GUI being there to expose the functionality of the 'engine' underneath, and the user having to make do with whatever they are given. The GUI must be designed first. How can you write the engine code without knowing what the GUI/user will need to do?

      If you design the GUI after the core code is written you will end up with a design suited to the core 'engine' and not to the user.

      It's how the user interfaces with your program, so it's going to be the biggest element in how they judge the usuability and usefulness of your project.

      It is not just how the user judges your program, for the user it is the program.

      --
      Simon

  63. 95-5 Rule by jmacgill · · Score: 5, Insightful
    Usually it's the 80-20 rule, but in open source projects it's more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this.

    Actualy, if you are about to set out on a new project, its probably best to tell yourself that you are NOT willing and ready to accept this.

    6 years ago I started a project called GeoTools and it was, for the main part, excactly that - two people doing most of the work. This was fine for a few years but over time the user/developer ratio got out of hand.

    Eventualy it became all but impossible for the two lead developers to support 300+ users and although other developers wanted to contribute it became dificult to 'train' new developers as the knowledge of how things worked existed mainly in the heads of only two individuals who had done 95% of the work.

    Two years ago we took the descision to re-design the toolkit from the ground up with as much input from as many people as possible. Since that time we have strived to make sure that as many people as possible have an input into the design process and we keep that process as open as possible by pubishing the IRC sessions in which discussions take place.

    The project now has 9 very active developers who are members of a Project Management Committe and a number of other active contributers as well. The end result is that quiries to mailing lists get responded to far more quickly.

    Getting other people to work on your project is often - TO START WITH - more effort than just doing the work yourself, but the pay off is HUGE, as you then have someone else who can explain things to others.

    If you ever have a contributor who gets stuck or confused and you find yourself thinking 'oh, it will be quicker/easier for me to do this part myself' STOP. Spend the time, help them work out how to do the modification even if it takes a few hours when you could have done it yourself in minutes becuase after you have invested the time in them, they will be able to add things in minutes too, and they can teach others as well.

    If you work on a tight, well defined, non-evolving project then most of my ramblings are probably irelelevent if not they they may be of use. The only danger is in investing time in helping developers who then wander off - it happens, but I tend to find that the more you invest in them, the less likely they are to loose intrest.

    --
    Spell checker (c) creative spelling inc. (aka my dyslexic brain)
    1. Re:95-5 Rule by JamieF · · Score: 4, Insightful

      Or, you could write some documentation. It's not that hard but for some reason developers avoid it like the plague.

      I keep reading these open source project managers bitching about how hard it is to answer all the emails from users and potential developers. Then you look at their project and see this:
      FAQ: (under construction)
      Documentation: (under construction)
      and if you're really lucky they bothered to archive the developer mailing list, which is just about the least efficient way to document the project. (Yes, let's make every developer read all of our conversations ever, including all of the arguments we had and all of the things we decided to do differently later.)

      It's not that hard; I've done it. You take a day or two and STOP CODING (oh no!) and write some actual words, document APIs, and lo and behold, you realize that you're also white-box testing your code because you were forced to explain what some code does ("hmm, that actually doesn't make any sense" / "oh crap that won't work in this case").

      All of a sudden you can just point people at the docs and add stuff when new questions arise. Sometimes the answers are best expressed as a FAQ, sometimes as part of API docs ("oops, I didn't explain what these constants actually meant"), sometimes as end-user documetnation. But IT'S WORTH IT.

      As for the common self-delusion, "we'll write the documentation after we're done with the code", all I can say is, read any process book there is. You're doing it backwards if you start with implementation and then back into writing down what the system does and how it's designed. Those things come first, THEN you write the code that does it. Otherwise you redesign the product dozens of times as you go, each time slapping yourself on the head and saying "oh crap I forgot it has to do this too" or "argh, I need this value from here but the API doesn't allow that". If you write it all down (which first requires that you *think* about it in detail) then you won't forget your good ideas, you can jump all over the place, you can write test harnesses that make sure the code does what the docs say, and you can point newbies at the docs and say "OK cool you can get started on the email notification part, we haven't touched that yet."

  64. Re:"C/C++ is no longer a viable development langua by dmeranda · · Score: 4, Funny

    Okay , you
    dont't
    have to
    like using whitespace
    so
    others can actually
    read your code, but
    I like the
    way
    Python lets me
    do the
    right
    thing.

  65. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Do you also hate having to end lines with a semi-colon? Or having to use braces as block delimiters? Why is indentation such an onerous syntax requirement when you gladly comply with other languages' rules?

  66. Re:"C/C++ is no longer a viable development langua by JakusMinimus · · Score: 1

    *chuckle*

    point taken

    --

    You can be an atheist and still not want to succumb to some weird cross-over sheep disease -- AC
  67. Is Slashdot trying to lose credibility? by Anonymous Coward · · Score: 0
    Well, simply put: everything that this john doe wrote is extremely simplistic that even the most novice of the developers should already know (I know'em for a decade and I'm still in my 26th).

    I wonder what are the /. editors thinking when they allow this kind of non-sense published on their front page? Ruining their own credibility? I read /. for years everyday, every hour and sometimes they simply loose it. Can't believe.

    EVERY good developer knows that circunstances are EVERYTHING. Methodology XPTO was good for project X because of (a), (b) and (c) factors. BUT, methodology ABC was very nice for another project because of (1), (2) and (3). Same goes for technology. C/C++ is overkill for web applications? Fine, get J2EE. Java is overkill for embedded devices? Fine, get assembler. Clearcase is too expensive? Fine, get CVS. RUP is overkill for 4 people team? Fine, get XP. And the alternatives goes on and on.

    I am literated in almost every mainstream language and technology that is out there. My personal web site is in PHP (because I made it in a weekend as hobby), but my job requires both J2EE and .NET. But some things I do for SAP requires plain old ABAP. I still like to program things in Python and for quick things I don't mind using VB and even good'ol Delphi. When I am logged in my linux instalation I can do plain old Perl as well, and everything works fine, thanks. And unlike the zealots, I do fine with Windows. Even do VBA sometimes. I don't like ideologies: too much time spent discussing for no profit.

    For those that only know hammers, every problem looks like nails. For me, every problem has simple solutions: and I just solve it. Period.

    C'mon /. editors, even you use those gorgeous Apple notebooks (I like them). How can you allow such low level material?

    Cheers.

  68. Re:"C/C++ is no longer a viable development langua by nuntius · · Score: 3, Funny

    You over simplified. As he said, static bindings are both a blessing and a curse.

    For example: Oops, sorry. Mozilla on Linux is now being compiled with gcc3.2 so you'll have to get the source and recompile to run on that older (gcc2) system... Also, your old plugins will need to be recompiled before you can use them with Mozilla on the new system - if you can find the source.

    Compare and contrast:
    Java - install the compatibility VM; use the same binary on all platforms
    C - no VM; compile and distribute different binaries for each platform

    As the number of platforms increases [3+ Windows code bases (9x, NT, newer), 3+ Mac bases (system ...X, with or without Altivec), N *nix bases (Sun, HP, IBM, Linux*M, BSD*3)*(2+ GCC versions) = well over 10 popular platforms], you either have to manage binary chaos or you have to start distributing your code as source.

    But wait! Distributing code as source requires the end user to install the compiler, and this (setting up environment variables, binary compatibility, support libraries, ...) is usually harder than installing Java.

    So, we're back to square 1.
    Lose a turn; don't pass "Go".

  69. irony by pyrrho · · Score: 2, Insightful

    So much of what is said about C++ here on slashdot looks to me to be fear, uncertainty and doubt I find it ironic.

    The complaints about C++ are the kind of complaints users make about linux when comparing it to Windows. "It's much easier to click on a big E than to learn another icon..."

    And clearly he's talking about GUI libraries... instead of multiple good C++ and C based multi-platform GUI libraries, he prefers another model, more like javas, where you get one crappy library and save yourself a lot of thinking!

    If anyone cares about the quality of the software (more than their experience developing), they'll learn to use a good compiled language, period. If you can cut corners on quality, if you buy the idea that CPU cycles are here to waste, then use something lesser (I do in that case). However, I think we are wasting cycles, and there are some amazing things our software is not doing that it could. Moore's Software Law is that every 18 months software gets twice as inefficient doing the same thing.

    --

    -pyrrho

    1. Re:irony by Anonymous Coward · · Score: 0

      Moore's Software Law is that every 18 months software gets twice as inefficient doing the same thing.

      And a big THANK YOU HUG to C++ for helping out.

      Love,
      Bill and Andy
      XXOXOXXOOO

    2. Re:irony by MisterFancypants · · Score: 1
      And clearly he's talking about GUI libraries... instead of multiple good C++ and C based multi-platform GUI libraries, he prefers another model, more like javas, where you get one crappy library and save yourself a lot of thinking!

      He should use wxWindows. It isn't crappy, it is C++ based and it allows you to deploy your app on Win32, Mac, GNOME and QT, all with native look and feel for the specific platform you target. HUZZAH!

    3. Re:irony by pyrrho · · Score: 1

      riiiiight! get with the program... I didn't might that argument with C-lovers... that was legit, and we could decide which C++ features to avoid and in what circumstance. IOW, we could approach it as software engineers, instead of saying, "resource usage... not important!" But now that's the the point, now they are saying C++ is only for "low level" things. Ah yes.

      BTW: C++ is multiparadigmed, there are many paradigms that do not introduce ANY bloat in and of themselves.

      --

      -pyrrho

  70. Re:"C/C++ is no longer a viable development langua by JakusMinimus · · Score: 1

    i was forced to learn pascal in high school, and quickbasic in college. having learned and thouroughly disliked those languages i came upon C and was joyous. semicolons and bracers make sense out of one's code. but hey, it's just my opinion.

    --

    You can be an atheist and still not want to succumb to some weird cross-over sheep disease -- AC
  71. dynamic languages on the rise by Colonel+Panic · · Score: 1

    I very much agree with him: C/C++ are no longer viable for rapid development.

    Personally, I prefer Ruby, but Python is almost as good of a choice. ( ;-)

    It's also quite easy to do mixed-language development with Ruby were you write the bits that need to be fast in C/C++ and you write the rest in Ruby (Swig can also help out here). This way you get the best of both worlds. The nice thing about doing this with Ruby is that classes and modules are always open, so a class originally defined in C++ can be extended (you can add methods to it) on the Ruby-side - in fact you could even do this at runtime if you so desire.

    1. Re:dynamic languages on the rise by tcopeland · · Score: 1
      > Personally, I prefer Ruby

      Ditto. This is all driven by Ruby scripts.

      It's really convenient to be able to loop thru a file with something as readable as:

      File.new "data.txt" {|line|
      puts line
      }

      Great stuff, Ruby.

    2. Re:dynamic languages on the rise by __past__ · · Score: 2, Interesting
      Try Common Lisp some time - it is just as open and flexible (you can define and redefine classes, functions and methods at runtime, change the class of an object etc.), only that it additionally has fast compilers (I personally prefer SBCL), so you don't have to resort to C just for speed (of course you still can interface with C libraries - and the best thing is that you can write this interface itself completly in Lisp, with all the instant testability and redefinability).

      OK, enough language advocacy ;-)

      I couldn't agree more with you. Once you have experienced a dynamic language, there's no looking back. It just feels like you have finally found an environment that tries to actively support you, adapting to your style of working, rather than to impose arbitrary restrictions from the world of punch-card batch processing on you.

      In static languages, you write C or C++ or Ada or Java. In a dynamic language, you write solutions for the problem at hand.

    3. Re:dynamic languages on the rise by hankaholic · · Score: 1
      I tried LISP once. I don't recall what the test proglet I was trying to write did, but I do recall that I was reading words from /usr/share/dict/words into a list, and reading the whole file (2.4 MB, 234937 words) takes FOREVER!

      I've tried every LISP interpreter packaged by Debian, and been disappointed by all. A C or Perl interpretation takes at most a few seconds, but this LISP code takes a minute or more:
      (with-open-file (infile "/usr/share/dict/words")
      (do ((result nil (cons next result))
      (next (read infile nil 'eof) (read infile nil 'eof)))
      ((equal next 'eof) (reverse result)) (print next)))
      Oh ye LISP advocate, can you tell me what I've done wrong? I'd love to give LISP another go, but not with such dismal performance...
      --
      Somebody get that guy an ambulance!
    4. Re:dynamic languages on the rise by Malcontent · · Score: 1

      I think both high level languages like ruby and python and very low level languages like C are wrong for OSS development.

      What is needed is a typesafe language that is compiled, has garbage collection, and kind of straightjackets the programmers so that they don't make foolish mistakes that end up as security holes.

      Java is a good choice, so is eiffel. Too bad neither one is open source.

      I hate to say this but I really wish somebody would make a new language. One with strong design by contract, pre and post conditions, forced error handling (like the throws in java) etc.

      take the best aspects of java, objective-c, eiffel and maybe some smalltalk like elements and roll them up into one language.

      --

      War is necrophilia.

    5. Re:dynamic languages on the rise by Lucas+Membrane · · Score: 1

      Corman Lisp is the fastest Lisp I've tried. It's not as fast as C, but it's fast enough for just about everything -- in the pack with Delphi, MLton, OCaml, etc, and faster than the interpreted languages advocated in the other comments.

    6. Re:dynamic languages on the rise by kkhawi · · Score: 1
      > I tried LISP once. I don't recall what the test proglet I was trying to write did,
      > but I do recall that I was reading words from /usr/share/dict/words into a list,
      > and reading the whole file (2.4 MB, 234937 words) takes FOREVER!
      >
      > I've tried every LISP interpreter packaged by Debian, and been disappointed by all.
      > A C or Perl interpretation takes at most a few seconds, but this LISP code takes
      > a minute or more:
      >
      > (with-open-file (infile "/usr/share/dict/words")
      > (do ((result nil (cons next result))
      > (next (read infile nil 'eof) (read infile nil 'eof)))
      > ((equal next 'eof) (reverse result)) (print next)))

      Ok, as you have described above, you just want to read words from the dictionary, into
      list, and have it reversed. Here is an straight forward implementation from your algorithm:

      (defun reverse-dict ()
      (with-open-file (infile "words" :direction :input)
      (let (result)
      (do ((line (read-line infile nil nil) (read-line infile nil nil)))
      ((null line) 'EOF)
      (push line result))
      (reverse result))))

      This basically a working version of your snippet, and trust me, many things are
      wrong with it:

      Right of the bat, if you were runing this interactively from the Lisp shell (repl)
      you will definetly get the entire dictionary printed on your screen. Because the repl
      prints the value(s) of the last expression. That is why you alway evaulate from emacs
      or whatever your IDE happens to be. You could also stick (values) or NIL at the end of your
      expressions, but that is a bit kludgy. The first optimazation should be eliminating large
      amounts of output. If you know what you are doing, it is best to specialize on PRINT-OBJECT
      as soon as possible, and have it print compact # but I suggest you don't do this,
      if you are still a newbie.

      Secondly, Lisp is not C or perl. When you "read" something from a file, you are
      actually using Lisp's builtin parser. Now, if your data was in a regular format
      (say S-exps or XML) or if you were reading back scripts for an embeded lisp code, or
      even read Lisp code. Or if you were reading back numbers or objects of datastructures
      (hashes, lists, arrays, structures, classes, etc.) you will be getting a full blown
      parser for FREE. Ever wonder why there are so many technologies and programming languages
      _prototyped_ on Lisp? because it is very convenient. READ-SEQUENCE is your friend here,
      define a buffer large enough to hold as many bytes as you want to read, then READ-SEQUENCE
      that many bytes into the buffer. This approach has no concept of carriage-return or new-line,
      you will have to implement this on your own.

      Third, did you compile your function? did you declare the types and ranges of your datatypes?
      For now, I will ignore the simplistic _algorithm_ for reversing a file and just focus on language
      and technicalities. Here is a snippet for just reading-in a file into core, all in one chunk!

      Reading optimization alone:

      (defun slow-read-file (file)
      (with-open-file (infile file :direction :input)
      (let (result)
      (do ((line (read-line infile nil nil) (read-line infile nil nil)))
      ((null line) 'EOF)
      (push line result)))))

      (defun gulp-file (file)
      (with-open-file (in file :direction :input)
      (let ((buffer (make-sequence '(vector base-char) (file-length in))))
      (read-sequence buffer in))))

      Results:
      ========

      * (compile 'slow-read-file)
      ; Compiling LAMBDA (FILE):
      ; Compiling Top-Level Form:

      SLOW-READ-FILE
      NIL
      NIL
      * (compile 'gulp-file)
      ; Compiling LAMBDA (FILE):
      ; Compiling Top-Level Form:

      GULP-FILE
      NIL
      NIL
      * (time (slow-read-file "words"))
      ; Compiling LAMBDA NIL:
      ; Compiling To

    7. Re:dynamic languages on the rise by Colonel+Panic · · Score: 1

      I think both high level languages like ruby and python and very low level languages like C are wrong for OSS development.

      Well, it really depends on what you're developing, doesn't it?

      What is needed is a typesafe language that is compiled, has garbage collection, and kind of straightjackets the programmers so that they don't make foolish mistakes that end up as security holes.

      No, in many cases we need to take off the 'straightjacket' of static typing (not for everything, of course) and breathe the sweet smell of freedom. Keep in mind that dynamically typed language can still be strongly typed - if an object in Ruby or SmallTalk doesn't respond to a particular message (method) then an exception will be thrown (of course you can always use 'method_missing' to redirect these errant messages).

      take the best aspects of java, objective-c, eiffel and maybe some smalltalk like elements and roll them up into one language.

      Not sure that's possible. Both SmallTalk and Objective-C have dynamic typing (of course it's optional in Obj C) and that's one of their best features. Java is statically typed and that leads to all manner of typecasts which defeat the purpose of static typing - the idea that static typing was supposed to save you from all kinds of mistakes.

    8. Re:dynamic languages on the rise by ecki · · Score: 2, Informative
      Java is a good choice, so is eiffel. Too bad neither one is open source


      Eiffel is, or are you concerned about possible IP problems with the language spec per se?

      take the best aspects of java, objective-c, eiffel and maybe some smalltalk like elements and roll them up into one language.


      The D programming language looks somehow interesting...

    9. Re:dynamic languages on the rise by __past__ · · Score: 1
      Oh ye LISP advocate, can you tell me what I've done wrong?
      Sure, I'll happily try.

      First thing is, you talk about Lisp interpreters. That might mean that you are not aware of the fact that all the Lisp systems included in Debian (and, afaik, all others) are compilers, with the caveat that CLISP compiles to bytecode only. So you might win if you compile your code, either one function at a time (using "(compile 'function-name)") or a whole source file at once (using "(compile-file "source-file.lisp")".

      Some systems, like SBCL (which is in debian) will always compile your code anyway, so this is not an issue there. With CMUCL on the other hand, it can make a hell of a difference.

      Additionally you can choose between some "optimization qualities", namely "speed", "safety", "space" and "compilation-speed", all of them on a scale from 0 to 3. If you want raw speed and are sure your algorithm is correct, you could say "(declaim (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0)))" at the top-level, or again per-function using declare instead of declaim as the first form in the function.

      OK, so far for the general stuff. Let's come to your program.

      First of all, to not solve the wrong problem, let's make clear that I get straight what you want to do. You want to build a list containing all entry in the "words" file, and additionally print then to standard output as you read them?

      I mention this because printing will take some time, depending on the speed of your terminal (in an Emacs buffer, it completly blows, in an xterm it still takes most of the time), and it seems funny that you really want both. Simply removing the "(print next)" brings real-time down from 90 to 2.something seconds on my lowly Duron 600 using SBCL. (You can use the TIME macro to see for yourself). You say you want to "read them into a list", so I assume the output is not relevant. If it is, say so and we can look at it again.

      Another minor thing is that you should not use EQUAL to compare symbols. Use EQL or EQ. The performance gain is rather small, however, something like half a second here.

      Which, however, leads to the next question: Why do you intern the words in the first place (i.e. make them symbols rather than strings, which is what READ does)? It will surely make comparisons of the words faster, but it will also upcase them, which might be surprising (unless you rebind *readtable-case* to :preserve).

      If strings are better suitable for you, you can use READ-LINE instead of READ, which avoids some overhead, like checking for reader macrocs and stuff. (2.03 seconds user time instead of 2.87).

      The last thing I see without thinking too much about it is the use of REVERSE. You don't need the original list any more, so you can safely use the destructive version, NREVERSE, which doesn't need to cons up a fresh list.

      So what I came up with so far is:

      (with-open-file (infile pathname)
      (do ((result nil (cons next result))
      (next (read-line infile nil 'eof) (read-line infile nil 'eof)))
      ((eq next 'eof) (nreverse result))))
      (How do you make slashdot preserve indentation again?)

      This may or may not be what you want. Hard to tell. In any case, if you have performance problems with Lisp code, you should learn about the TIME macro, TRACE and the profiler of your implementation. They differ between implementations, but they all have them, as far as I know. MACROEXPAND and DISASSEMBLE can also be a great help, if you grok not-so-pretty Lisp code or assembly, respectively. APROPOS and DOCUMENTATION should help finding and understanding them - and reading the docs, of course :-)

    10. Re:dynamic languages on the rise by hankaholic · · Score: 1

      Beautiful! Thank you for the time you've spent in setting one man straight.

      As far as printing, I was running from a shell (gcl -f snippet.lisp) and dumping to /dev/null, so I didn't realize that printing would have such a negative effect on runtime. It's rather embarassing that I wrestled with this problem for a good while, restating the expression in different ways, but never could find a good (quick!) way to do it.

      I'll have to give Lisp another go (or at least append it to my to-do list). Are there any online references to Common Lisp which you could recommend?

      (Regarding Slashdot's indentation -- I've found that the <tt> tag doesn't preserve indentation. I believe <ecode> is what you're looking for.

      --
      Somebody get that guy an ambulance!
    11. Re:dynamic languages on the rise by fizbin · · Score: 1
      In addition to what everyone else here has said, may I suggest that storing the /usr/dict/words in a list is not at all the same thing as what perl would be doing? I'm not lisper (and I welcome feadback from people who are), but it seems to me that you'd be much better off with:
      (with-open-file (infile "/usr/share/dict/words")
      (do ((result (make-array 100 :fill-pointer 0 :adjustable t) (vector-push-extend next result))
      (next (read-line infile nil 'eof) (read-line infile nil 'eof)))
      ((equal next 'eof) result)
      ))
      This at least lets you compare apples to apples, since a lisp vector corresponds to a perl array.

      I must admit though that I've never cared too much for lisp myself - my mind just has trouble properly parsing sexps without an editor that'll show me all the matches, and on top of that looking at the dizzying array of required functions/macros/etc. for common lisp reminds me of bad times in college trying to memorize page after page of kanji characters.
    12. Re:dynamic languages on the rise by hankaholic · · Score: 1

      First of all, thank you for your response! My description was pretty vague, and you've been quite helpful.

      I was glad to still have the code snippet lying around for later examination, as this was months ago that I wrote it.

      When I ran that code, it was from the command-line (gcl -f snippet.lisp > /dev/null) so output didn't flood the terminal, but I do recall it taking over 60 seconds to run (on the modest system on which I tried it). In retrospect, I suppose I should have ran it without printing it out. On the other hand, I'm used to faster output than that, although I'm not sure whether Lisp generally buffers stdout, so I don't know enough to know what I could have known all along.

      Compiling the function (without the print, that is) reduced real execution time from an acceptable 5.6 seconds to a downright sprightly 1.9 seconds on a 300 MHz Celeron, but it seems that the real hog was the inline print.

      --
      Somebody get that guy an ambulance!
    13. Re:dynamic languages on the rise by __past__ · · Score: 1
      I was suprised about the output slowness myself. I didn't really bother to compare with other languages, but one reason why it might be slow in comparison is that *standard-output*, likely being a "gray stream", is not the pure OS stdout stream, but an object with potentially several layers of generic functions and methods between PRINT and your strings eventually showing up on the terminal. You are likely to be able to get direct access to stdout in some implementation-dependent way, if this is really the problem (which should be confirmed by some more profiling), but I don't know GCL enough to say how to do it there.

      As for online resources, a good place to start is probably the cliki, a CL-related WikiWeb with emphasis on free software.

      There are some free online books, like Successful Lisp, Loving Lisp - the Savy Programmers Secret Weapon, or Paul Grahams On Lisp (which isn't really a beginners book, but very enlightening once you are familiar with the basics). The Common Lisp Cookbook is not as big as it should be, but does contain useful information, and is growing.

      An absolutely invaluable reference is the HyperSpec, a heavily hyperlinked online version of the standard. You definitely need that.

      You might also want to check out the comp.lang.lisp newsgroup, or the #lisp channel at freenode. Depending on your specific interests, the LispWeb or Clump mailing lists may be interesting, the first deals with web programming using Lisp (surprise!), the second with general application developers issues.

      Last but not least, there has been a movement of Lispniks gathering to drink beer and talk about all things Lisp (and everything else) in the last months. Check out this site, maybe there's a user group in your area. The people I've met so far are generally a nice and interesting bunch, and won't bite you even if you don't know the argument lisp of update-instance-for-redefined-class from the top of your head.

      Happy hacking!

    14. Re:dynamic languages on the rise by Malcontent · · Score: 1

      "Well, it really depends on what you're developing, doesn't it?"

      It really should not. The language ought to be useful enough to develop just about anything.

      "No, in many cases we need to take off the 'straightjacket' of static typing (not for everything, of course) and breathe the sweet smell of freedom."

      freedom is great if you are a single developer. For teams I think it's better to enforce a stricter code of conduct, style, and implementation.

      "Not sure that's possible. Both SmallTalk and Objective-C have dynamic typing (of course it's optional in Obj C) and that's one of their best features. Java is statically typed and that leads to all manner of typecasts which defeat the purpose of static typing - the idea that static typing was supposed to save you from all kinds of mistakes."

      Yes I agree. No one language on my list does what I want. I want a language that is highly dynamic and at the same time typesafe. PHP5 believe or not might come closer to that goal then anything else. Of course it still lacks a lot of other features I would like.

      --

      War is necrophilia.

    15. Re:dynamic languages on the rise by Malcontent · · Score: 1

      I hadn'd heard about that project. Thanks.

      --

      War is necrophilia.

    16. Re:dynamic languages on the rise by crazyphilman · · Score: 1

      Check out gcj combined with GNU Classpath. They're creating a completely open source Java-compatible development toolkit which will eventually be fully compatible with Java but is currently only partway there (although, they've got the whole base language, most of the classes, and most of AWT already). Very interesting stuff.

      --
      Farewell! It's been a fine buncha years!
  72. Not Project Management by drmofe · · Score: 4, Insightful

    None of the lessons learned and reported here are directly related to Project Management per se. They are all by and large implementation issues.

    There is also nothing new here. This does not advance the state of the art. History does not advance by people relearning the same lessons again and again. Just because they have been reported here does not make this article special in any way. This article could have been written in any of the decades of 70s, 80s, 90s (substituting en vogue languages for C++/Java) and still make sense.

    In order to truly advance the state of the art, we have to think in far more advanced ways about project management and software development. True Software Practice and Experience requires much more planning and critical thinking than evident here.

    If Open Source is to provide a useful and stable platform on which to build, then we certainly need a better vision of how to build software. Otherwise, we will be doomed to repeat history by implementing old things in different ways and not really gaining any control over complexity.

    In summary, we still have a software crisis; Open Source will not change that; and summaries of software development experience that just say "I made the same mistakes as other people did" are not very helpful.

  73. Re: Documentation! by JamesOfTheDesert · · Score: 3, Insightful
    So, after two years he still hasn't realized the importance of documentation?

    "Document it and they will come."

    A good project is nothing without it...

    Good point; somebody should document this.

    --

    Java is the blue pill
    Choose the red pill
  74. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    I've heard about Oracle's "wonderful" (cough cough) C code. I don't think it's worth bragging about. C++ would be an improvement.

  75. Re:"C/C++ is no longer a viable development langua by youlsa · · Score: 1

    The shit(tab thing) you HATE makes my life as a programmer easier and codes I should read and write more elegant.At first I thought just like as you do, but once you get accustomed to it, there's no way out. ;-)

  76. Too hard to learn? by AuraSeer · · Score: 1

    He says C/C++ is unacceptable because it takes too long to learn? That's news to me. I wrote my first useful programs after a single college-level course. It was less than a full semester, so call it two months.

    Were I recruiting developers, I'd want them to have spent significant time learning how to program well (regardless of language). I also want people who are willing to invest some time, both in the project and in their own skilset. If an applicant only knows some "easy to learn" language like Visual Basic, I don't think I want him working on my project.

    1. Re:Too hard to learn? by Lucas+Membrane · · Score: 1
      Too hard to learn to do right. It's fine for high-powered professional coders who can take it as a specialty, just like a specialized doctor or engineer. But for a small project where you don't have back-room coders, everyone has to be a generalist, understand and talk to users, write readable docs, understand the problem domain and develop algorithms that work, understand the users' tasks and work situation, etc, it's just too much to expect very much success with C and especially C++.

      Take a look at those magazine ads that advertise the lint program and ask month after month "WTH does this do?" And these are in magazines for people who buy magazines about C and C++. A language that supports that kind of puzzlement is not for applications guys. Much of the business world switched to VB and Access and whatnot about 10 years ago, with decent results, comparatively. Too many C/C++ applications go into the trash. Too many big busts. Too many with only one guy who understands them.

    2. Re:Too hard to learn? by Anonymous Coward · · Score: 0

      You just proved his point! It took you two months to write your first useful program!? Holy cow! In other languages like Python and Ruby, newbies are writing substantial, complex programs in a matter of _weeks_. Not toy programs, either. And people already experienced in other languages become productive in a matter of _days_. See http://www.linuxjournal.com/article.php?sid=3882, for example.

  77. Use the appropriate language for the job by Colonel+Panic · · Score: 1

    The Linux kernel is coded in C(or is it C++?), maybe someone should tell Linus that C isn't a good language for an OS project.

    I don't think too many people will dispute that C is probably the best implementation language for an OS kernel that must be fast. However, C/C++ are not appropriate for all projects. And in fact the subset of projects where C/C++ are the best fit is probably fairly small (a lot smaller than current use anyway).

    I recall meeting an older sw engineer who used assembly language for everything - in fact some of his colleagues were telling me that he did some kind of web programming project in assembly (ran very fast, but took a long time to develop and debug. Now I tend to look at the "C/C++ are the best languages for every project" folks as falling into a similar catagory as this assembly- language-everywhere guy.

    The dynamic languages like Ruby, Lisp/Scheme, SmallTalk deserve more of a look when starting a project. They tend to accelerate development (especially when compared to C/C++ or even Java) so much that they deserve a closer look.

    And, in Ruby for example, it's quite easy to do mixed-language development where you develop the parts that need to run fast (typically no more than 20% of your code) in C/C++ and develop the rest in Ruby. Because in Ruby classes and modules are always open, you can extend (add methods to) your C++ classes in Ruby (you could even do this at runtime if you so desire) quite easily. I've done this on some very speed critical projects with very good results (with positive results in both schedule and runtime).

    1. Re:Use the appropriate language for the job by pfleming · · Score: 0

      Now we're back to the right tool for the job argument, which is the point I tried to make in my original post. Unfortunately, while I may know some of the names of the languages, I don't neccessarily know how to use them. The article seemed to indicate that C/C++ was not good for any distributed project. I say that the right tool for the job has to be the deciding factor. Just because a program has to be compiled each time you have a contribution doesn't mean it should be ruled out.

      Of course I'm just an html/php monkey- and not terribly good at that.

  78. NOT just open source by Kefaa · · Score: 4, Interesting

    His point that this is not unique to OSS Projects is a good one. While OSS development has unique constraints most are around people and personality. In an office we all have to get along or get fired, in OSS it can sometimes be worse.

    For example:
    The press loves infighting because it's a good story. However, the infighting story is bad for a project that is trying to get funding. This creates an air of instability. People only like to fund things they feel will have a high chance of success, and instability erodes that confidence.

    It is too bad on so many mailing lists ego/attitude/personality or just plain rudeness show up. Things you would never say to a coworker, make it onto a mailing list for eternity, or at least what looks like one. I hope people take this point to heart before posting.


    95-5 Rule
    Usually it's the 80-20 rule, but in open source projects it's more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this.


    Looking at sourceforge I see this lesson again and again. The idea that if I create it they will come, and build. Forgotten, or unknown, is that nearly all had a real need to be built first. I needed application ZAFDE so I built it. I then released it and people thought they could build on it, and so on.

    I wanted to learn C++ or JAVA or XYZ is the reason we have 2,134,931 notepad applications, not OpenOffice.

    C/C++ is no longer a viable development language
    I knew we would see a flamewar as soon as I read it. My thoughts:
    - Both are still viable. Much like his hammer analogy, they are not good for everything.
    - What makes them "bad" for development, makes them "good" after they are developed.
    Does it matter to the user that it took 81 minutes to compile? Nope, they have the binaries or compile it once and run it for years.
    Every language has a shortage of people who know it. Or specifically a shortage of the people who know it and are willing to work on OSS project PDQ.
    Static binding is good/bad/sometimes both. Yes it is.

    All the negatives he spoke of are positives after it is developed. Which we hope is long compared to the time spent developing it.

    If there is one thing projects should take away, it is probably this:
    Interface is Everything ...The program should be fun to work with. There should be buttons and things that blink. The interface should be the first thing you do. The interface serves as inspiration and motivation and helps you to learn how the final product should look. Yes, it's going to change a lot. Yes, it's going to have to be rewritten multiple times. Yes, it will never be good enough...But when someone downloads your program they will have something to do. No one likes to look at command lines.

    I like command lines. I use them, but I understand they are power tools. Most people do not like/use them and consider them an indicator of a poor product. Even while it may not be technically true, perception is reality in this.

  79. Guess what Open Sores devlopers by Anonymous Coward · · Score: 0

    Ui Matters - It's The Most Important Thing!
    Ui Matters - It's The Most Important Thing!
    Ui Matters - It's The Most Important Thing!
    Ui Matters - It's The Most Important Thing!

    I guess that's why Microsoft OWNS the desktop.

  80. Binary vs text protocols by kingdon · · Score: 2, Insightful

    Well, seems to me that SMTP, NNTP, HTTP, etc are easier to develop for because they are textual.

    HTTP may be just about the ideal balance: use text for things which tend to be small, but capable of sending a large payload (e.g. a PNG image which the protocol just needs to wrap, not do anything with) in binary.

    The thing about protocol layering and/or marshalling is: do you have good debugging tools (at a minimum, log what is going across the wire and be able to interactively enter data and see results)? For binary protocols like TCP and IP, largely yes ("telnet" client in the case of TCP; tcpdump for both TCP and IP). And maybe some RPC packages have these kinds of thing (I haven't used them enough to know). But an app which rolls their own binary format generally doesn't.

  81. Re:"C/C++ is no longer a viable development langua by __past__ · · Score: 1

    I doubt that the company that requires you to install three different JVMs with their product is the best to take advice on how to use different programming languages from.

  82. Re:"C/C++ is no longer a viable development langua by peter_sd · · Score: 2, Informative

    C is a must when performance is of big importance. If the program structure and APIs within the program modules are designed properly and in a clean way, I don't think it is much more difficult to maintain and improve on the code.

    A "mixed" C/C++ approach is probably worthwhile using when the program has extensive GUI requirements and performance is still top requirement. Use C++ for the GUI (qt, wxWindows or whatever gui library you like) but for the performance critical parts and the algorithms that are in the heart of the program just use plain C under simple C++ class wrappers if at all (no abstract classes, overloading, etc.). Personally, I have found this approach quite useful.

  83. Windows and WINE only... by Ashtead · · Score: 3, Interesting
    I didn't have any problems with reading the site at the time of this posting, but I can see where his headaches with C++ might have come from. The MSVC versions of STL hasn't been around in a standard form for very long, although the MFC library has been. This is most likely the grounds for the complaint. And the MFC does not make for easy portability to native Linux/Unix environments.

    However, designing things in C++ and doing it properly is damn tough; many designs may seem easy to begin with, but then run into trouble with things like multiple inheritance from related parents, or simply that encapsulation is difficult because of the need for exposing the inner workings of classes... STL fixes some of this at the expense of code bloat -- it is easy to produce executables tens of megabytes in size.

    Another problem with C++ which has been bothering me, and I would presume, the developers of Peekabooty, is the tendency towards static compilation and inclusion of everything. I looked at the source files here, and the sheer number of include-files compared to source files indicate that this probably does not compile quickly.

    There is a way around this, if the application can be divided into several major and fairly independent components which then are compiled and linked as a number of dynamical libraries (.DLLs on Windows, .so on Linux and Unix). Now, with proper design, recompiling the whole lot is not necessary for smaller changes within one of the parts where no changes in this part has taken place. The trick here is encapsulation: do not let code in any one part know about any of the internal structure of code in any other part.

    --
    SIGBUS @ NO-07.308
    1. Re:Windows and WINE only... by Screaming+Lunatic · · Score: 1
      I didn't have any problems with reading the site at the time of this posting, but I can see where his headaches with C++ might have come from. The MSVC versions of STL hasn't been around in a standard form for very long, although the MFC library has been. This is most likely the grounds for the complaint. And the MFC does not make for easy portability to native Linux/Unix environments.

      Agreed. Even if portability is not a concern, using STLPort is almost a must. And MFC is a fairly ugly piece of goop. But your GUI should be abstracted away in a different component. (As you mention later in your post.)

      Another problem with C++ which has been bothering me, and I would presume, the developers of Peekabooty, is the tendency towards static compilation and inclusion of everything. I looked at the source files here, and the sheer number of include-files compared to source files indicate that this probably does not compile quickly.

      This is a pretty much solved problem. I reccomend Large Scale C++ Software Design by John Lakos. Google for redundant #include guards, pimpl idiom, and handle/body pattern.

      There is a way around this, if the application can be divided into several major and fairly independent components which then are compiled and linked as a number of dynamical libraries (.DLLs on Windows, .so on Linux and Unix). Now, with proper design, recompiling the whole lot is not necessary for smaller changes within one of the parts where no changes in this part has taken place. The trick here is encapsulation: do not let code in any one part know about any of the internal structure of code in any other part.

      You've gotta watch out for longer link times if you're statically linking and longer load times if you're dynamically linking.

  84. Re:"C/C++ is no longer a viable development langua by BlueWonder · · Score: 1
    Apparently, Oracle software runs on more platforms than there are C++ compilers for.

    Out of curiosity, on what platform without a C++ compiler does Oracle software run?

  85. Re:"C/C++ is no longer a viable development langua by batkins · · Score: 1
    I agree that Java isn't viable. The size of the runtime hurts, as does the fact that it's just an ugly language.


    C and C++ are definitely viable development languages, but I prefer Perl for my projects. Perl and CPAN let you develop apps incredibly quickly. Distribution isn't an issue on UNIX machines - pretty much every UNIX box has perl on it nowadays. And if you need your app to run on Win32, you can ship the same script and all you need to add is one 340K DLL.


    Once you use Perl, it's very difficult to go back to other languages.


    [shameless_plug]For an example of a large open-source project visit milkbone.org[/shameless_plug]

  86. The hidden value here by Anonymous Coward · · Score: 0
    This story's appearance on /. is most useful not for what the author says about C/C++ or anything else on his project, but for the simple fact that it showed up here at all.

    The comments here (which I strongly agree with) show very clearly that the author's opinions were not well thought out and/or expressed poorly. Yet it shows up on /., since it had one of the magic ingredients, an OSS connection...

  87. Re:"C/C++ is no longer a viable development langua by Mr.+Frilly · · Score: 1

    The vast majority of OSS projects have one lead developer and a couple of contributors. Linux, Apache, OpenOffice, etc. are the exception, not the rule.

  88. Re:"C/C++ is no longer a viable development langua by emag · · Score: 2, Insightful

    I'll go off on a different track than the other responses I've seen...

    Wouldn't python suffer from roughly the same problem as Java with the JRE? I mean, unless it's compiled (and I'll admit right now, I don't follow python closely enough to know if it has a "compiler" yet), users are going to need to find and download a Python runtime environment of some sort. The latest I've found at python's web site is around 9M. While that's still about 1/3 what a JRE is, it's still either going to be a separate install, or a lot of additional weight to package up with whatever you're distributing.

    It would seem that anything interpretted is going to suffer the "separate download" problem... Ease of learning would also be debatable for probably every language out there. I know folks who are wizards with C/C++/Java/perl/$language1 who could couldn't get a working "Hello, world." out of $language2, while at the same time I know others with the skills in $language2 who couldn't do anything in $language1.

    It's a shame the linked article's author didn't address what WOULD be an ideal language to use, and enumerate why, but it's probably because any language he did pick would end up sharing criteria with his "these make C/C++/Java bad" statements. :-/

    --
    "The urge to save humanity is almost always a false front for the urge to rule." --H.L. Mencken
  89. Re:"C/C++ is no longer a viable dev. language" by Yaztromo · · Score: 2, Informative

    He disparages both C++ and Java as open source development languages, and I agree with his comments on those.

    I don't -- at least not his comments concerning Java.

    At one time (before they were bundled) people had to download a web browser if they wanted to view a website. I don't recall any webmasters who felt that they shouldn't work in HTML because people had to go and download a browser in order to view it.

    Every software project has prerequisites. Some projects require external libraries, others require external runtime environments. If you code an Open Source project is Perl, I'm not going to be able to run it on my OS/2 systems without downloading the Perl runtimes, for example. The only way to avoid this is to statically compile everything you need into a native executable which, once again, isn't going to work for people running on a different platform(s) than what you're building for. Now they have to go through the pain of installing (and possibly paying for...) a compiler, and then modifying the code to make it compile on their platform of choice.

    If your application does something useful that people can't otherwise do, they'll take the one-time hit and download the Java Runtime (or any other project prerequisite).

    I think this is a non-issue. As the administrator of a Java-based Open Source project that targets client-side Java (The jSyncManager Project), I can say that using Java hasn't inhibited the growth of my project significantly, as it provides value that people can't get elsewhere (namely, a single application and plug-in architecture that can run on any Java-enabled system, which allows organizations in heterogeneous environments to run the same application on all their platforms, reducing maintenence costs). As such, people who need this sort of value have no problem taking the one-time hit in installing the proper prerequisites.

    Yaz.

  90. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Or you could add dynamic binding to C++. Wasn't that the idea behind (XP)COM? Anyway, if MS changed the compiler for IE, they wouldn't have this problem.

  91. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Visual Basic.

  92. PERL rules !!! by sir_lichtkind · · Score: 0

    no!!!
    scriptlanguages are comming,
    it is all well known(faster development, cool maintaince if your code is good sorted, less code,
    less problems to import somethings, [to use it :-)])
    pythons set of commands is much cleaner,
    but perl rules !!! for various reasons.
    one is the leck of python like whitspace terror.
    perl is more about freedom than eny other lang.
    larry written enough(postmodern) about.
    perl(6) is always a step ahead(look at php). it seems to learn much faster then other lang, of cource it is older but remind TCL is much older than perl but no step ahead. i believe that
    perl 6 will be great cause i enjoy everytime
    to read about, it will be in many things ahead of anything(read http://dev.perl.org/perl6//). perl has i great community. this provides a lot of exchange(cpan is easy). haskell is cool to but slow(for a use in apps) and not often used, so you have to fight for yourself. and lua too lighweight for apps. ok some people like python more, and tcl is'nt dead, but script languages will become more important for most apps.

  93. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0, Informative

    like using high-level languages like Perl or Python. But when I need to write an application that I want ordinary users to be able to download and _just use_, I don't have a choice - I have to write it in C or C++.

    Uhhh... unless you mean "when I need to produce a single .EXE file", Python can do exactly what you need. You can turn your app into a single directory worth of files (all necessary DLL's and a standalone .EXE - no interpreter installation required) using Py2Exe. Most ordinary users are capable of downloading and decompressing a .ZIP file.

  94. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Yeah, the guy is trolling, but so are most of the C++ fanboys here.

    C is already a nitch language, no question. Device drivers, embedded, and legacy Unix code only. Just because Bill Joy used it 20 years ago doesn't mean it's cool anymore.

    C++ is still viable, but it's basically "Only Use It If You Have To". Such as when performance is a consideration, or you are trying to deliver a shrinkwrap "native" desktop app.

    And even in the desktop department, MS is shifting over from C++ to C#, and most MS devs will follow. In 5 years, C++ is going to be religated to legacy code and a small market of high performance server apps.

  95. Re: Documentation! by Anonymous Coward · · Score: 0

    You obviously are not a Macintosh user.

    Design the interface. Get user feedback to make it better. Keep your application focused on one simple task per window. Design it so it requires very little documentation.

    Only unix geeks like to read man pages. Most users will *never* look at your documentation until they have no other choice.

    The most important documentation you'll ever write is in-line, so you and other developers know what the code is for. Second to that in importance is the design and feature documentation. User documentation should be a subset of the design documentation re-written from a workflow view. If the user documentation is long, your workflow is complicated and your application is a pain to understand and use.

  96. The answer is the BEST SPEED by Anonymous Coward · · Score: 0
    Better C++/ASM (gcc-3.3 + binutils) (not C because it's redundant):

    Many reasons:

    1. C++: it compiles to native code of CPU (not like Java that it compiles to slow JVM)
    2. C++: realtime OOP without slow GC (better freeing manually objects for speed, doesnt require slow VirtualMachine, xDD)
    3. ASM: xDD, see optimizacion guide of AthlonXP, Pentium4, .. for SSE, SSE2, unlooping, ..

    There is no better than C++/ASM, xDDD (Java is worse speed)

    open4free

  97. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Java - install the compatibility VM; use the same binary on all platforms

    MOD UP!
    +5, Funny!

  98. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    I'll grant that it takes a bit to get used to

    I'm not even willing to grant that. It takes less than five minutes to get used to, and with a decent editor, it's not even an issue. Most people who like to look at their code five minutes from now use some form of structure - python just enforces the idea, without even being too rigid.

    if something:
    <tab>do this
    <tab>do this
    then do this

    It's too easy. Only a fool would be confused.

  99. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Google for Py2Exe.

    That takes care of the windows users. Most other platforms are unlikely to have problems with installing a python distribution (I don't know if there's a Py2exe equivalent for Linux binaries).

  100. Re: "C/C++ is no longer a viable development langu by gidds · · Score: 1
    Sounds cool. Does it work with tabs too?

    (One of my personal bugbears. No-one can agree on the right number of spaces to indent by, it's hard to keep exactly the right number, and it looks silly when you code in a proportional font, as I like to. But if you use a single tab for each indent level, then everything Just Works; in many editors you can set how you want the tab to appear, and they're granular enough to be easy to get right.)

    In fact, it sounds as if the indentation thing is to Python what the one-button mouse is to Apple: something that's actually not a bad idea in context, but which people get hung up about so much that they can't see through it to the important stuff? (And which is bound to be mentioned by trolls every time the subject occurs...)

    --

    Ceterum censeo subscriptionem esse delendam.

  101. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    VBRUN100.DLL
    VBRUN200.DLL
    VBRUN300.DLL
    VBRUN400 .DLL...

  102. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    And if you need your app to run on Win32, you can ship the same script and all you need to add is one 340K DLL.

    I'm not buying that. DLLs don't launch themselves, and Win32 doesn't launch your specific DLL when you click on a file with an unrecognized extension. There must be more to add than just one DLL.

    Once you use Perl, it's very difficult to go back to other languages.

    Once you've seen the obfuscated perl competition code, it's very difficult to take it seriously, and incredibly easy to move to a similar-scope language, like python.

  103. Re:"C/C++ is no longer a viable development langua by Newander · · Score: 2, Insightful
    I don't think that's what he meant by a "standard library".

    Actually, he mentions the STL by name.

    --

    Jesus saves and takes half damage.

  104. Re:"C/C++ is no longer a viable development langua by Newander · · Score: 1

    You're forgetting just one thing, he lumps Java with C/C++

    --

    Jesus saves and takes half damage.

  105. Re:"C/C++ is no longer a viable development langua by Arandir · · Score: 3, Interesting

    Java - install the compatibility VM; use the same binary on all platforms

    I'm laughing so hard Dr. Pepper is spewing out my nose! Let me wipe off my screen...

    Trying to get Java applications to work on my Solaris workstation is a nightmare. I can't understand it because the company that makes Java makes Solaris. I try to figure out what the problem is, and hidden way deep in the README is this thing that says I need to install a different version than what Sun provided with Solaris. I fix that and it still doesn't work. Looking deeper into the problem, I see that I need a couple of other components that didn't come with the application. After about two hours of searching for the "myleetclasses.jar" and "ubercoolstuff.jar" files, I put them in a directory, fiddle with the CLASSPATH variable, and finally get the program up and running. And then it crashes five seconds later.

    you either have to manage binary chaos or you have to start distributing your code as source.

    Binary chaos is a pain. A royal pain. So I distribute my code as source instead. Easy. Painless. Users that don't want to compile can grab a prebuilt package from their distro or another repository.

    Of course, I'm writing Open Source, and not cheesy shareware. Perhaps that's the true niche for Java and .NET...

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  106. Re:"C/C++ is no longer a viable development langua by hackrobat · · Score: 3, Interesting
    I'll clarify:
    • Existing C++ code in Oracle products has already raised serious portability issues.
    • Oracle RDBMS is one of the first products to be ported to a new platform, often before the official release of the new platform. At the time of porting, a C compiler will be available, but a C++ compiler may not be.
    • C compilers for 64-bit platforms are far ahead of their C++ counterparts.
    • C++ compilers on some platforms are immature. It's far easier to write incompatible C++ code (than C).
    <disclaimer> My views; not those of Oracle. </disclaimer>

    The Mozilla C++ Portability Guide also restricts use of some key C++ features (rtti, exceptions, templates (which rules out the STL by the way!)).

  107. Re:Huh? by Chris+Sontag · · Score: 1, Funny

    Not so! SCO owns the core patents on Open Source design methods. Its sad to see that criminals like the author of this article continue to infringe on our patents. We plan to file a lawsuit against Mister "Baranowski" (if that is his real name) in the next few days. Try to understand, we're just trying to protect our intellectual property.

    --

    Chris Sontag - Senior Vice President and General Manager, SCOsource
  108. Re: "C/C++ is no longer a viable development langu by BollocksToThis · · Score: 1
    Sounds cool.Does it work with tabs too?

    Absolutely

    One of my personal bugbears. No-one can agree on the right number of spaces to indent by

    And Christ, what a retarded thing that is to have a religious issue over!

    Anyway, python doesn't care. Spaces, tabs, whatever, just so long as you're consistent. If the line is part of a block (something you would put inside braces in C), it should be indented more than the line just before the block (and subsequent lines should match).


    if x:
    if y:
    print "both x and y are true"
    print "these lines would cause an error if"
    print "the indentation was different to"
    print "the 'x and y' line"
    else:
    print "x is true, y is false"
    print "the first half of the if"
    print "doesn't affect the indentation"
    print "requirements for this block"
    print "x is true, y may be"
    print "at this point, who cares about x and y?"


    It's hard to deny the simplicity of code like this. If you've programmed in almost any language at all, this is pretty much intuitive. The only problem I can see is if people are using different editors where one expands tabs to spaces, and the other doesn't, and they're continually updating the same blocks. Using any decent text editor cuts out this problem though.
    --
    This sig is part of your complete breakfast.
  109. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    I agree that whitespace makes code much more readable (I'm anally retentive about indentation).

    I just can't accept whitespace as a required syntax element of the language.

  110. Other compilers compile faster by Anonymous Coward · · Score: 0

    Delphi compiles a lot faster than C++.

  111. I don't agree by cpparm · · Score: 1

    First, STL has so many different implementations on so many platforms. Whoever has wrote a program using STL on Solaris and has to rip the heart out of their code when porting the application to Windows knows what I am talking about.

    Second, C++ sorely misses two important standard libraries:
    1. A GUI library.
    2. A multithread library.

    Third, C++ still doesn't use Unicode throughout. And the heart of this problem is: C++ doesn't have a standard string representation! There is C string and the STL string, and STL string has multibyte string and unicode string...

    Fourth, to a lesser extend, it doesn't have a standard garbage collection library. I don't think all application needs that, but it's invaluable in many occasions.

    Now I know all of these problems have solutions in C++, but the point is they are not standard.

  112. Similar thoughts as I start a project by harikiri · · Score: 2, Informative
    With regards to the C/C++ point and the documentation point in the article...

    I'm working on a project for central user management on a popular network appliance. At present there's only one commercial solution (that I could find/google) available that lets you manage n+1 of these appliances at once.

    I initially looked at the problem and figured, heck I can do it easily with expect and ssh, but then I started thinking about how my employers & co-workers would use it (I contract), and realised a command-line application wouldn't suffice.

    So I started pondering how I could integrate a fairly simple backend (that could be implemented by scripting languages) with a portable interface.

    I could either:

    • a) Put the backend script onto a webserver, and allow administrators to use it via a web browser and CGI.
    • b) Use Python and wxPython to provide a GUI application that runs on windows/unix/mac.
    • c) Use Tcl/Tk to provide a GUI application that runs on windows/unix/mac.

    I eventually chose the tcl/tk option, because of the following reasons:

    • 1. A webserver-based application would require ongoing maintenance of either a new server, or speaking with existing server ops to get our stuff onto their boxes. This didn't fit in with timeframe and would be difficult to maintain and distribute updates.
    • 2. wxPython lacks extensive documentation. I'm not going to force myself to join mailing lists and peruse demo code to figure out how it all works.
    • 3. Tcl/Tk is well-tested, instantly portable, and documented up the wazoo.

    So I ended up choosing a well-documented language for implementation, which has the benefits of being portable, interepeted (no compiling), and easily updateable (email the latest script). Sure it isn't the sexiest solution, but it works and is easy for new developers (the project will be open-sourced when ready) to pick up on where its at.

    --
    Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
    1. Re:Similar thoughts as I start a project by Troll_Kamikaze · · Score: 1

      I eventually chose the tcl/tk option, because of the following reasons:

      * 1. A webserver-based application would require ongoing maintenance of either a new server, or speaking with existing server ops to get our stuff onto their boxes. This didn't fit in with timeframe and would be difficult to maintain and distribute updates.

      But this applies as much to Tcl as to Python, right?

      FWIW, Python has both bare bones and CGI-capable HTTP servers right in the standard library (the BaseHTTPServer, SimpleHTTPServer, and CGIHTTPServer modules). I find these easy to use.

      * 2. wxPython lacks extensive documentation. I'm not going to force myself to join mailing lists and peruse demo code to figure out how it all works.

      wxPython itself lacks extensive documentation, but the documentation for the C++ API is great. The Python API matches the C++ API so closely that I don't have any trouble applying the C++ docs to Python. After all, both C++ and Python are quite suitable for manipulating object-oriented toolkits.

      The included example programs are quite extensive. If you accept my assertion that the documentation for wxPython is not lacking where it counts, the ready availability of demo programs won't hurt anything, eh?

      * 3. Tcl/Tk is well-tested, instantly portable, and documented up the wazoo.

      Python is also well-tested, and the documentation is (IMO) excellent. Python is somewhat less portable than Tcl. While its Windows, Unix, and Mac support is fine, ports to mainframe operating systems and such are not available (or are no longer maintained).

      Except for the portability aspect, I don't find your logic convincing. But hey, use what you like. Viva la open source.

    2. Re:Similar thoughts as I start a project by harikiri · · Score: 2, Informative
      RE: Point 1 comments


      Nah, I agree with you wholeheartedly. I'm also a big python advocate. I gotta say though, I didn't stop to consider the BaseHTTPServer/etc modules to handle a standalone, easily maintainable web "application".


      RE: Point 2 comments


      About wxPython docs and how wxWindows has extensive documentation. I saw that when I last checked it. For me it seemed like a potential waste of time to wade through it all in order to get at what I needed. If the tcl/tk option hadn't worked out for me, I probably would've fallen back to this option.


      RE: Point 3 comments


      The final reason for me choosing tcl/tk over python was knowing that the one constant in the project would be my use of Expect. This being part of the ActiveTcl distribution meant that distribution the interpereter and the scripts would be easier. Also, the pyExpect scripts (when I last checked) seemed to have fallen behind or stopped development.


      My personal preference will almost always be Python for server-side scripting. Primarily because its syntax requirements result in easier-to-maintain code, and also because of its wealth of libraries (sockets, BaseHTTP*, re, ftplib, etc), and portability. But I think I'll be using Tcl/Tk (for portable GUI apps) until wxPython comes of age.

      --
      Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
  113. Im a little confused by cranos · · Score: 1

    So he wants a language that's easy to learn yet has access to a huge library base, doesn't need compiling and yet can give performances equal to a native binary? Oh and it has to be cross-platform.

    Speaking as someone who is muddling along with his own OSS project (I know it's a shameful plug but hey), it is never going to be easy. Not only are you trying to write that perfect app but you are doing it as a hobby essentially, so you can't be working on it 24/7.

    I would like to know exactly what he thinks will replace the troika of C/C++/Java when it comes to writing Apps, either server side or client. C/C++ are both robust well tested languages that have been used to build everything from OS's to Office Suites to the most complex 3D Animation tools while Java has come into it's own as a server side language.

    I'm in two minds about his statement on the Interface. Yes a well designed GUI is essential to the success or failure of an App. either OSS or CSS. However if the backend don't work then the front end is just so much fairy dust. Looks pretty but doesn't do anything.

    Well that's my uninformed ramblings on the subject. If you do look at my code remember this, at the moment its ugly as sin and doesn't do much. But sometime in the future it could be something.

  114. Re:"C/C++ is no longer a viable development langua by cheese_wallet · · Score: 1

    Contradictory ? Yes.

    Yeah, it's called "Lessons LEARNED." In this case, he developed/managed a project in C++. He learned that it was the wrong thing to do.

    Personally, I can't believe it, but hey, I've written a lot of stupid things on the spur of the moment (this message probably counts).

    I like the STL and I like c++, but I'm not a progammer by profession. that probably makes a difference.

  115. Re:Yeah - and by scrotch · · Score: 1
    Yikes!

    Don't get so defensive! I was asking. I was pointing out that he doesn't try to make a recommendation, or to defend it in his blog.

    There are other languages he could be thinking of: Obj C (as another poster pointed out), Perl, Python, Ruby, *Basic, shell scripting, Applescript, Ada, Fortran, Cobol, Smalltalk...

    I asked about Visual Basic because it seems the most likely - for all the reasons you mention. I wouldn't write with it, but I don't use Windows and I like to be able to run my programs :)

    There are going to be disadvantages to anything he might suggest. But ultimately, I'd like the guy to have actually said what his preference would be at this point. Rather than for Slashdot to bicker defensively about our chosen language being insulted.

  116. Re:"C/C++ is no longer a viable development langua by Zathrus · · Score: 1

    I don't think that's what he meant by a "standard library"

    Then why did he explicitly mention the STL?

    that gives you graphics classes, networking classes, XML parser classes, GUI classes, etc

    Oh, you mean all the OS specific stuff that is horrendously outdated rapidly or is so generic as to be devoid of features and richness? Yeah, shower me with that stuff.

    STL is a standard library full of basic data types like linked lists and hash tables. Big whoop.

    Uh... yes, it is a big whoop. If you don't think so, then might I recommend Pascal? You can even build your own string data type and manipulators!

    Oh, btw, the STL does not contain hash tables. GNU's STL has them, but they're an extention to the STL, not part of the actual STL.

    As for why it actually is a big deal - the STL is designed, first and foremost, for efficiency. When you ask for a vector you have guarantees about how it's implemented, how efficient certain operations are, and so forth. This is key to an efficient program, and particularly for embedded programming (which was a consideration for anything in the core C++ language or the STL). The same cannot be said for Java, C#, Perl, Python, etc.

    I'm not recommending that you use C++ for everything... that's just silly. But for large programs that have to consider execution speed as well as development speed, it's one of the best bets out there right now.

  117. Re:"C/C++ is no longer a viable development langua by d2ksla · · Score: 1
    users are going to need to find and download a Python runtime environment of some sort. The latest I've found at python's web site is around 9M.

    For distributing Python apps under Windows, I like to just copy the installed Python runtime environment and include that as a subfolder to the Python app. The app is started using a .BAT file (py\python.exe main.py). This makes it easy to change the installed source. This takes up less than 2.5M. The equivalent py2exe binary takes up about 900K.

    It would seem that anything interpreted is going to suffer the "separate download" problem...

    Both of these methods gives the end-user a completely self-contained Python app, no extra downloads needed. It is also possible to do this under Linux.

    Ease of learning would also be debatable for probably every language out there. I know folks who are wizards with C/C++/Java/perl/$language1 who could couldn't get a working "Hello, world." out of $language2, while at the same time I know others with the skills in $language2 who couldn't do anything in $language1.

    I don't agree, I think it is pretty obvious that different languages have varying levels of abstraction. I have an MSc in Computer Science, and 10 years of professional experience writing hard real-time apps in C + an RTOS. There's no question that C (/C++) will be around for a long time, because for low-level programming you just have to have control over the CPU. But this comes at a pretty high price. Most of the C code I've seen is hard to read and understand because there is so much "plumbing" going on for simple stuff, like managing lists of objects, etc.

    About 18 months ago I decided I wanted to learn Python, and I started the Freevo project. Freevo is almost exclusively written in Python, and it has turned out to be a really good choice. Some examples:

    • Python is very easy to pick up for experienced C programmers. All of the Freevo developers were new to Python before they started working on Freevo.
    • Dynamic typing is easier to program with, and it doesn't lead to more bugs.
    • The indentation has not been a problem. In fact, I find it quicker to edit Python code compared to C in Emacs since it is easier to change indentation levels for whole blocks of code.
    • Python code is generally easier to read since it is higher level than C, and there are no {}; characters cluttering the screen. Spaghetti-coding is still possible of course.
    • Python has a very good Unix system call abstraction layer. Everything is available, but in much less code compared to C. For instance, a TCP/IP client/server example
    • Python is also good for multi-threaded apps. It is easy to start and communicate with new threads, compared to C and pthreads.
    • Execution speed is generally not an issue. And if it turns out to be, it is easier to implement smarter algorithms in Python, or parts of the app can be rewritten in C and called as native functions from Python.

    As I said, C/C++ will be around for a long time. But for many new apps that I write, I find that Python lets me write them in 1/10th of the time compared to C (that I know very well). Python also has an amazing ability to work on the first try. I'm sure others have similar experiences with other higher-level languages such as Java, Perl, Ruby, etc.

  118. Project Marketing Lessons by Speare · · Score: 1

    Don't saddle your wide-appeal product with a narrow-appeal name like "Peek-a-Booty."

    --
    [ .sig file not found ]
  119. Mod Parent Up, Please by SPrintF · · Score: 1

    If end users complained about "code bloat," would anyone buy MS Office?

    --

    Honesty. Loyalty. Kindness. Laughter. Generosity. Magic!

  120. Re:"C/C++ is no longer a viable development langua by Chmarr · · Score: 1

    Python can be embedded into an application very easily. Yes, this generally adds about 1-2MB to your application size. However, if your application uses enough of it, the python itself is exceptionally compact, especially if you pre-compile the python (it precompiles to a byte-code which can be manipulated like other python types, and then executed at will).

    Even though the 'default' behaviour is to have separate python files, I believe it's possible to embed a 'psuedo-directory' of python modules into your application, 'tricking' the python interpretor into thinking it's just another part of the filesystem.

  121. On the naming of projects by Charles+Kerr · · Score: 1
    This is definitely true. I'm the lead on the newsreader Pan, which the original author wrote as "Pimp-Ass Newsreader". There were people, both in Gnome and in two big Linux distros, that wanted to keep Pan at arm's length until we changed Pan's acronym from "Pimp-Ass Newsreader" with "Pan's A Newsreader".

    As a side note, naming rule #2 should be:

    Pick a greppable name.
    When I grep Usenet for mentions of Pan, I have to filter out a lot of false positives because the word "Pan" is so common.
  122. If only the linux router guy by Anonymous Coward · · Score: 0

    Had followed these principles, maybe he wouldn't be so bitter.

  123. Re:"C/C++ is no longer a viable development langua by aminorex · · Score: 1

    Actually, the 1.3.1 US JRE for Windows is 5 MB,
    a fair bit smaller than any python environment.

    --
    -I like my women like I like my tea: green-
  124. Re:"C/C++ is no longer a viable development langua by aminorex · · Score: 1

    But Python code is so ugly it makes me
    pine for Basic.

    I'd rather become a politician than a Python
    programmer.

    --
    -I like my women like I like my tea: green-
  125. Re:"C/C++ is no longer a viable development langua by Lucas+Membrane · · Score: 1
    I did a bunch of straight C at the beginning of the year with good success and got to really enjoy the simplicity of it, but there's a trap: In this modern age, you are going to want to do some OO kinds of things, and when you start messing around with OO C you are stewing in your own tomatoes and it's not pretty. In a while you'll be seeing that you would have been better off doing C++ or at least objectionable C instead of reinventing the square wheel yourself.

    An alternative is to use something like schlep or Bigloo as a C code generator and try to be functional instead of OO. You'll wind up learning more about pointers to functions and C declarations than you ever wanted to know.

    In short, C is good if you can make it work and follow the two main rules of programming:

    1. No ridiculous crap
    2. No exceptions

    Oh, BTW, did I mention that C doesn't really do exceptions that well, either?

    So, take a look at Cyclone from Cornell, which is a lightly improved C. If that was a viable commercial product, it would be really viable.

  126. Re:"C/C++ is no longer a viable development langua by aminorex · · Score: 1

    Which in turn makes it impossible to read the code.
    Exactly.

    --
    -I like my women like I like my tea: green-
  127. Re: "C/C++ is no longer a viable development langu by aminorex · · Score: 1

    At least with a Mac tower (unlike a laptop) it's
    reasonable to just buy a proper mouse, with
    three or four buttons and a wheel. Python, on
    the other hand, is hopeless.

    --
    -I like my women like I like my tea: green-
  128. RUBIX by funkmotor · · Score: 1
    Coming Soon to SourceForge:

    Based on the incredible revelation that C is no longer viable we shall be starting a new project, RUBIX: re-write the Linux kernel in Ruby.

    'Course, we won't release anything on SourceForge 'till it works... rule #1.

  129. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    It doesn't suprise me that you're clueless and you go to UIUC. I knew a lot dumbfucks when I went there. I don't know how it ever got such a good reputation.

  130. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Signed an NDA yet?

  131. Not VB,WB = (Which Basic?) by hughk · · Score: 1
    Visual Basic isn't bad for RAD, particularly on clients and it has a great IDE/Design tool. But it is MS only. In the end, the open source alternatives are better if only because you have a reasonable expection of being platform agnostic. Other RAD languages such as Delphi, really have the same problem.

    Personally, I feel the key point is extendability. In the end you have some real program code doing the 10% of an ap that is performance critical. That is probably in C or C++. It is easy to call out to this in Perl/Python/Ruby or whatever. Also what Perl in particular has, is CPAN. Some algorithms may be suboptimal or non-portable (not everything there runs on Windows), but it is axcellent starting point.

    We don't really need VB on Linux, what we need is for someone to come up with a better IDE for what we have.

    --
    See my journal, I write things there
  132. W00T! by Anonymous Coward · · Score: 0

    FIRSTOS POSTOS!

  133. Communication!!!!!! by hughk · · Score: 3, Informative
    Congratulations on a successful project. However, you mentioned what worked without commenting on it:
    Two years ago we took the descision to re-design the toolkit from the ground up with as much input from as many people as possible. Since that time we have strived to make sure that as many people as possible have an input into the design process and we keep that process as open as possible by pubishing the IRC sessions in which discussions take place.
    The moment you involve other people in a project, you need to document and explain design decisions and any discussions arising. By doing this you have made it very easy for other developers to get involved. I also like the way that you publish IRC discussions.

    You are almost a text book example on how to do things right.

    --
    See my journal, I write things there
  134. Re:Yeah - and by cr0sh · · Score: 1
    I didn't mean to sound defensive at you - I just get a bit agitated when I see what amounts to "BASIC sucks!" - when most people haven't a clue about what constitutes a current BASIC application. True, most BASIC applications only exist as VB apps - which does suck. Microsoft has essentially stolen BASIC from the world, and that is a *bad* thing. But BASIC is just a language syntax. In theory, it is possible to model/convert BASIC over to simplistic C code. With a few extra commands, you could probably do the same to convert it to C++. Like I said, it is just a syntax. I think it has gotten a bum rap from its early past (people get real hung up on the whole GOTO thing, but BASIC hasn't needed GOTO in over a decade).

    I do agree he should have mentioned what he would use on the project now - to find out what his preference was (hey, maybe instead of VB it was Delphi/Kylix?).

    I also think it is funny the bickering on /. over C++ - I don't think it is the tool for every job. It has its place, but large scale apps can take a long time to create and debug in C++, and he has a point on the compilation cycle (which is another thing I like about VB - the ability to just make a change and run the thing. Then, when you are ready, commit to the full compile). Sometimes, the best thing to do is leverage the strengths of each language (as another poster mentioned, a combo like Python and C/C++ for the intense parts)...

    --
    Reason is the Path to God - Anon
  135. Scheme by hughk · · Score: 1

    GnuCash has basic business methods coded in a very C++ish dialect of C. However the main stuff is coded in Scheme making it relatively easy to extend. It can be a little slow to load though. It also has a bit done in Perl.

    --
    See my journal, I write things there
  136. Re: Documentation! by ShineyNewSlashdotAcc · · Score: 1

    I think hes talking about the development documentation. Having some quality doco on the code base can greatly increase the time it takes to understand and start hacking with a code base. Being presented with a huge monolitic, sometimes cryptic codebase doesnt really appeal to a programmer whose just spent 12 hours coding at work.

    There have been several projects I keep meaning to contribute something too... however first I have to sit for a few weeks playing with the codebase before I can make any really significant contribution. Also having coders that dont fully understand the code base cause many arguments in mailing lists("Why the hell did you do it this way ?" "I dunno... didnt implement that and its not documented" "Well Ill change it to suit me better... oh crap its broken... now I see why its done that way... Ill change it back"... all this wastes valuable development time

  137. Re:"C/C++ is no longer a viable development langua by jpop32 · · Score: 1

    I don't think that's what he meant by a "standard library". He's thinking along the lines of Java's standard library -- a standard library that gives you graphics classes, networking classes, XML parser classes, GUI classes, etc.

    I think you're confusing a _platform_ with a _programming_language_. Java is both a platform and a programming language. C++ is just a programming language, and things like graphics, networking and such have to defined on a platform you use the language with.

    Which is the way things should be if you need a general, fast and lightweight language applicable to almost any and all environments you could encounter. The opposite is the way of Java, the 'jack of all trades and master of none' approach.

  138. This guy is full of shit by Anonymous Coward · · Score: 0

    This guy obviously haven't got a clue, move on people.

  139. Free Software Project Management HOWTO by makohill · · Score: 1
    There's an entire HOWTO on this distributed by the Linux Documentation Project. It's the Free Software project management howto and you can pick it up at:

  140. Errrr ... by vrai · · Score: 1

    Apparently, Oracle software runs on more platforms than there are C++ compilers for.
    ... then ...
    So it's either C, or Java (lately)

    Name me a platform for which there exists a JVM, but no C++ compiler. The only one I can think of is Java itself, but unless there's a C -> Java bytecode compiler out there it's not a lot of use to Oracle.

  141. Re:"C/C++ is no longer a viable development langua by SilentStrike · · Score: 1

    " I don't understand what's so difficult about C++, espc. if you know C."

    "The C++ Programming Langauge" by Stroustrop is IIRC, over 1000 pages. The langauge is so damn complex.

    Have you ever programmed in python? Lots of problems become a lot easier, once you approach problems 'pythonically.'

  142. Re:"C/C++ is no longer a viable development langua by Eccles · · Score: 1

    forgive me if memory fails, but doesn't python require tabs or whitespacing in certain ways as part of its syntax requirements?

    Yes, but as a C++ programmer, I've lost count of the number of times where I've made a coding mistake or had trouble fixing nesting because the indenting did not match the bracketing. If you're going to indent anyway, it's reasonable to have that as the sole determinant of nesting.

    --
    Ooh, a sarcasm detector. Oh, that's a real useful invention.
  143. Baranowski's Comments on Languages by WillyLane · · Score: 2, Insightful
    In regards to his statement "C/C++ is no longer a viable development language" and his further explanation here ...

    -I dont agree with his language critique. I think the advantages of static typing far outweigh any time it takes to (as he describes) figure what type to declare a variable. Have you ever tried to debug a large project written in a dynamically typed language? It can be a fucking bitch.

    -He also says it is really, really hard to learn C, C++, and Java. He says this cuts down on your developer base. Any developer who doesn't have the capacity to pick up those three languages, I just do not want on my project.

  144. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    A fair bit smaller than any python development environment.

    I have a 700KB .ZIP file that will work on any win32 PC and is a quick tool written entirely in python.

  145. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    No, it makes it incredibly easy to not only read the code, but to understand it on the first go.

    If you have trouble, I can only assume you had trouble with the piss-easy SAT tests too. IOW, you're an idiot.

  146. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    Gee, I can make unproven assertions too.

    'aminorex rapes goats'

    If you can't back up your statements, you're just trolling python programmers. Grow up, kid.

  147. 1000 pages of reading pleasure... by pyrrho · · Score: 1

    A fine book! However, my point is you don't have to learn all that. It's perfectly reasonable and wise to start out writing C code with classes. Now, in this day and age it's not as obvious, but when I started using C++ in earnest in 1994 compilers didn't even support (or supported really badly) a lot of the features of C++, so it was all the more reasonable to learn C++ features slowly. But it's still reasonable because C++ is multiparadigmed, like a tool box, a bunch of tools, of course every job doesn't use every tool.

    Like a natural language... you aren't expected to memorize a dictionary to speak it! Not even to speak it "well". To be a "guru" or "expert", I suppose you need to at least familiarize yourself with the whole thing, in terms of whats available, so you will know when to learn a specific feature of the language.

    About python... I have started using python recently because I last year started using Zope for quick intranet tools because I didn't have to do anything but install it and it's Products (i.e. because I didn't have to learn dtml or python). Then I looked a bit deeper, dtml is easy. Then deeper, only to find Zope is full of pythony goodness inside!

    Python: I think I'm in love. To my mind python makes use of the Virtual Machine architecture to grant idioms that really require that approach, unlike Java, which takes the hits of a VM with relatively few of the benefits.

    Really, such benefit is clear with Zope, by basing it on Python, you can share namespaces between all the levels of zope and control code-as-data better (loading modules without compile, etc.).

    --

    -pyrrho

  148. Re:"C/C++ is no longer a viable development langua by sean23007 · · Score: 1

    I suppose that makes sense, but I'm sure it results in a very readable language as a whole.

    --

    Lack of eloquence does not denote lack of intelligence, though they often coincide.
  149. Re:I think so by hackrobat · · Score: 1
    An older language has had more lines of code written for it, so its weaknesses are better known, and more likely published.
    And, armed with that knowledge, we create new languages, that *don't* have the _same_ weaknesses.
    An older language tends to have more developers, which means any random volunteer is more likely to know it already.
    Then why do we have more number of Java programmers (than C, or C++, or Fortran, or Smalltalk, or Ada)? How many random volunteers program in Assembler? What about those random Perl/CGI hackers of the 90's? The new generation of Python/Ruby programmers?
    An older language has already fought "battles" for survival, and has been squeezed out of applications for which it is ill-suited, and continues to exist for a good Darwinian reason.
    And the old language (C++) evolves into a new one (Java).
    An older language is more likely to be standardized, and more widely ported.
    With new languages, internationalisation, localisation, multi-threading, abstract data types, networking, IDE-friendliness, adherence to standards, and portability are NOT afterthoughts. Perl, Java, Python.

    Esp. for open source projects, we'd rather see people use these "new languages" instead of C (and, God forbid, C++). That's the only way we can overwhelm the evil monopolies. Build on each other's efforts, instead of re-inventing the wheel.

  150. Re:I think so by GlassHeart · · Score: 1
    And, armed with that knowledge, we create new languages, that *don't* have the _same_ weaknesses.

    Unfortunately, it doesn't work that way. C++ was designed specifically as a better C, yet the first generation of C++ code were written by programmers who did not understand how to write C++ effectively. This resulted in bloated code, or code that was only minimally C++ (and really looked more like C). It takes much longer than advocates are willing to admit for a new language to actually improve productivity across the board.

    Also, inevitably, a new language will have new classes of bugs. C programmers, for example, don't have to deal with the intricacies of exception handling. I don't want to argue which one is easier, because that's not the point. The point is that the new features to save the world also have to be learned and mastered over time.

    Then why do we have more number of Java programmers

    Because that statement is a gross generalization for cases where all other factors are equal, not to be taken literally. The number of programmers who know any given language depends on the popularity of the language, the population, how much demand there is for them, and so on. Note key words "tends to" in my original post.

    we'd rather see people use these "new languages" instead of C

    I'm not arguing that you shouldn't use newer languages. I'm saying that age can have redeeming technical merits that help keep an older language in contention. These technical merits are rarely considered when amateurs simply compare feature lists.

    If my life depended on it, I'd rather use the C program that a 20-year C programmer wrote, than the first Java program that the same programmer ever wrote. Again, this is not a literal statement, but something to illustrate a point.

  151. Yes, it is that much different by Per+Abrahamsen · · Score: 1

    Making software "do something useful" is only a first early step towards having a finished product. It does not really have to have much of an UI in order to "do something useful", and it may only handle the common cases of whatever problem it solves, and only on the common platforms. And it may have bugs with known workarounds.

    If the software despite an awkward UI, bugs and silly limitations allows you to do your work faster than you could without it, it "does something useful", and it is time to invite other developers to play with the code.

    Not so for traditional project management.

  152. Static compilation time by Per+Abrahamsen · · Score: 2, Insightful
    Static compilation time does not grow linearly with project size, unless you either aren't using a dependency tool (like make) or have organized your code to that every module depends on every other module.



    With regard to the first: consider learning thee build tools part of the cost of learning a static compiled language. It is not optional.



    With regard to the second: If you have so many cross-dependicies, you will run into problems in any language as the project grow. A bug solved in one module may cause new bugs to appear in any other module.



    In general, Based on many years experience with C++ and Lisp, I'd recommend compiled and statically typed languages for large projects, because of the discpline they encourage. Interpreted and run-time typed languages are usually superior for small projects.

  153. Don�t Use Binary Protocols for Application Develop by Per+Abrahamsen · · Score: 1

    I'm with him on this one, with the usual caveats. Textual protocols are so much easier to debug. Just being able to telnet to the server can be a life saver.

    The usual caveats is "unless you KNOW you need it.". If your application spend most of its time passing images over a slow network, it may indeed be a good idea to use PNG (binary) instead of XPM (textual).

  154. Treat questions as bug reports to the doc. by Per+Abrahamsen · · Score: 1

    If the answer to the questions cannot be found in the documentations, add it.

    If the answer to the question *can* be found in the documentation, ask the user where he looked for an answer. That place may need a pointer to the place where the question is answered. Then tell the user where he can find the answer, never answer it directly.

    The important thing to remember is that, unless the user pay you for support, they have no right to it. If they don't pay you with money, they must pay you in some other way. For example, by supplying enough information to make their questions useful for improving the product.

  155. Elephant stew by Latent+Heat · · Score: 1
    "But your GUI should be abstracted away in a different component" is like the recipe for elephant stew that reads "First shoot and field dress an elephant . . . "

    One kind of abstraction is to separate your program into the "GUI" and "the business rules" and try and put business rules into other objects instead of into customizations of widget classes. Agreed. But there can be a lot of logic associated with the GUI itself -- enabling and graying out menu items depending on what has been selected elsewhere in the GUI, validating edit box fields, and so on. If your GUI is buttons and text boxes that is one thing, but if your GUI is a lot of custom widgets to present graphs that respond to mouse clicks with various kinds of cursors, there is a lot of logic associated with the GUI itself. Try as you may, 60-80 percent of your program modules may contain #include .

    Abstraction number two: Model-View-Controller. Instead of a custom widget being one class, it is two classes (Document-View) or three (Model-View-Controller). The Model can obviously be non-GUI, the View is probably GUI, but the Controller could be non-GUI (contain the logic of the widget without reference to a GUI API), but GUI may creep in depending on the signalling and event model.

    Abstraction number three: abstract the GUI API into something portable. This is the Java/wxWindows/Eclipse SWT kind of thing. This kind of thing gets into a lot of work because there is a lot to most GUI API's. One approach to try is that you probably don't use the whole GUI API in your application, and you could code your own version of wxWindows/Eclipse SWT that only contains the GUI calls that you actually use. Then you can make your app portable by recoding that layer for different systems. Harder than it looks because you need a good understanding of the abstraction inherent in most GUI API's (I understand the need for the window handle or equivalent in other systems, but I never understood the need for a DC handle (GC handle in SWT, graphics object in .NET) -- why can't you just draw stuff to the window? Also why does Borland call the DC a "canvas" because the DC is not a canvas in the sense of a framebuffer and if you want a framebuffer for your widget you have to go through a whole bunch of rigamarole creating a bitmap object and then getting a DC/GC/Canvas for the bitmap object so you can actually draw to it and then you have to get the DC/GC/Canvas for your windows so you can blit your framebuffer bitmap to it only if you are in a Paint method of your main window you have to use the DC/GC/Canvas given to you.

    Making your program easier to port by separating GUI from non-GUI is a good idea, but it is far from an easy thing to do in many cases. The OO programming principle that an object should not be called procedurally but should have verbs that it knows how to carry out has the effect of tying a lot of logic into GUI object classes.

    Apart from vanilla buttons and edit box GUI's (like a Farenheit to Celsius calculator), there are no simple answers to portability of GUI's.

  156. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0

    I like the way Python lets me do the right thing.

    You mean MAKES you do the right thing. You can do the right thing in languages that don't use whitespace like that just as well.

    It's a common criticism of powerful languages that they let you do the wrong thing, but that's exactly why they are powerful.