Teaching C++ WTF.



  •  TRWTF is that 

    								        <a href="http://forums.thedailywtf.com/members/Indrora.aspx">Indrora</a> has not replied, i demand that a binding rule of TDWTF is that all OP of threads reply to their own thread at least once.</p><p>&nbsp;</p><p><br></p>


  • @Helix said:

     TRWTF is that 

    								        <a href="http://forums.thedailywtf.com/members/Indrora.aspx">Indrora</a> has not replied, i demand that a binding rule of TDWTF is that all OP of threads reply to their own thread at least once.</p><p>&nbsp;</p><p><br></p></blockquote>
    

    He's got like 47lbs of furry porn comics to read. They sell them by the pound, you know.



  • @blakeyrat said:

    @Helix said:

     TRWTF is that 

    								        <a href="http://forums.thedailywtf.com/members/Indrora.aspx">Indrora</a> has not replied, i demand that a binding rule of TDWTF is that all OP of threads reply to their own thread at least once.</p><p>&nbsp;</p><p><br></p><p></blockquote>
    

    He's got like 47lbs of furry porn comics to read. They sell them by the pound, you know.

     

    I thought they came in 50lb bags?  You know, like dog food.



  • Of course text-extern is going to be larger. You introduced an extra variable. That has to be compiled and stored (for initialization) somewhere. And the compiler probably leaves it exposed for the debugger. I'd say that if you add your variable to the other program, and strip both executables of everything, they should be the same size. And using a #define just inserts the value of the macro in the code. If a compiler leaves the definition for debugging around, that's going to add, but (like before) only debug symbols, not executable code.



  • @TGV said:

    Of course text-extern is going to be larger. You introduced an extra variable. That has to be compiled and stored (for initialization) somewhere. And the compiler probably leaves it exposed for the debugger. I'd say that if you add your variable to the other program, and strip both executables of everything, they should be the same size. And using a #define just inserts the value of the macro in the code. If a compiler leaves the definition for debugging around, that's going to add, but (like before) only debug symbols, not executable code.

    Well [i]I[/i] know that -- I was proving that [i]you[/i] were wrong when you said "I'm precisely going to claim that constants don't take up extra space, and external references neither." External references [i]do[/i] take up extra space in the executable. (I had to actually link it to a variable in another file, or the executable wouldn't compile; that's analogous to linking to a shared library containing the referenced variable.)

    More to the point: the final, linked executable is larger if you say "extern int foobar" and link with another object file containing only foobar than if you merely declare "int foobar" local to your translation unit. You claimed that was not the case. Are you trying to change your story now?

    I'll also point out that I was not compiling with debug symbols enabled...



  • @Heron said:

    I'll also point out that I was not compiling with debug symbols enabled...
    GCC will still add some symbols, which GDB will pick up on if it can't find debug ones. strip will remove them.



  • @amischiefr said:

    >

    I thought they came in 50lb bags?  You know, like dog food.

    it takes time to read. 3lbs down y'know.

    I've found the source of the WTF: The instructor never learned C. HIS instructor was of the opinion that 'global variables are evil, always no exceptions' and that 'the Bjarne style book is crap'.

    Explains a lot, huh?</p?



  • @Indrora said:

    it takes time to read. 3lbs down y'know.
     

    Umm, you're not actually supposed to read them, you know. Just look at the pics and make yourself happy.


  • I prefer Enhanced CWEB (compiled using C mode, rather than C++)



  • @zzo38 said:

    I prefer Enhanced CWEB (compiled using C mode, rather than C++)
    In what way is this remotely relevant, or even on topic?



  • @Indrora said:

    @amischiefr said:
    >

    I thought they came in 50lb bags?  You know, like dog food.

    it takes time to read. 3lbs down y'know.

    I've found the source of the WTF: The instructor never learned C. HIS instructor was of the opinion that 'global variables are evil, always no exceptions' and that 'the Bjarne style book is crap'.

    Explains a lot, huh?

    I would just like to re-iterate that asking your friends and family for by-the-pound furry porn in a Christmas list is the most hilarious thing I've ever read.



  • Basing the course on std::cin at such an early stage is a horrible WTF in C++.

    I would mark down your tutor on a few points:

    - main should return int not void. I don't care if he puts (void) in the brackets.

    - Putting all the code in main(). 

    -  Using #define instead of a constant

    - Putting using namespace std rather than just using std::cin, std::cout and std::endl

    - Having the assignment use std::cin in the first place. It should use argc/argv.

    - Not validating his input of std::cin.

    - (many will argue with me): using K&R bracing style instead of Allman (block). Don't teach your students bad habits, please.

     

    With regards to your own code,

    - Yes, printf and scanf are "C" rather than C++ although iostream is not the most wonderful way to read code and actually outputting with printf for formatted code can be better than iostream. If you do ever use scanf then, like your professor with iostream, you need to validate the input. scanf returns the number of items it successfully scanned.

     


  • Discourse touched me in a no-no place

    @Cbuttius said:

    - Having the assignment use std::cin in the first place. It should use argc/argv.
    err, wot??



  • What I mean is I write professional C++ and don't recall ever using std::cin in my code anywhere. 

    For this particular problem which is to take a parameter, perform a function on it, print the output and exit, you should use argv[1] to hold the parameter which you should convert from a string to a float or double.

    For this, check first that argc is at least 1 (or exactly that if you prefer) and put a std::cerr << "Usage " << argc[0] << " [parameter]" << std::endl;

    To convert the parameter to a float or double you could use strtod or you can convert with std::istringstream or you could #include boost/lexical_cast.hpp and convert it to a double that way, although actually if you do that you have to catch their bad_cast exception to print a proper error so actually using istringstream can be better.

     

     



  • @Cbuttius said:

    Basing the course on std::cin at such an early stage is a horrible WTF in C++.

    But that's C++'s way of doing basic text IO.

    @Cbuttius said:

    - Putting all the code in main(). 

    The program's like 5 lines long!

    @Cbuttius said:

    - Having the assignment use std::cin in the first place. It should use argc/argv.

    Wow, you really hate cin. Did it touch you in a bad place as a child?

    @Cbuttius said:

    - (many will argue with me): using K&R bracing style instead of Allman (block). Don't teach your students bad habits, please.

    Why is one a "bad habit" and the other not? Those are simply two different styles. You know, sometimes there's more than one way to do things-- shocking, I know-- but you need to be able to cope. Plus the IDE can convert from one to the other in about 5 milliseconds, so who gives a flying fuck?

    Let's talk about the elephant in the room. The real problem here is that C++ is a shitty language. Over-complex, prone to pointer errors and buffer overruns even for experienced programmers. We're all better off using C for software that requires low-level code, and memory-managed languages for anything-- ANYTHING-- higher level than a device driver. C++ is designed for some kind of alien robot, it's not designed for human beings. (Now, human beings can use it with a couple of caveats: limiting themselves to using a small, relatively-safe, subset of the language's features.)

    This teacher obviously has issues with C++. But you know what? He'd probably be just fine teaching Java, or C#, or Python, or JavaScript, simply because those languages are designed for use by normal human beings with normal human being brains. The languages are simpler, the IDEs better, and the results much easier to obtain.



  • No, C++ is a great language for writing libraries and servers that run in the background, not for front-end user interaction.

    You won't get pointer errors and buffer overruns if you deploy RAII, for example using boost::shared_ptr and std::vector to help you manage your memory, and your other resources. Note that RAII can handle all resources management not just memory.

    I am not sure why you think that C is better.You can even see that in this example the C code produced a more bloated solution than the C++ version.

    Java and C# would both be better if they weren't part of a war between Sun and Microsoft and interacted better with existing code, which C++ does because you can easily integrate it with your C libraries.

    If he wants to give them a more friendly GUI, why not get Qt or WxWidgets installed. Might give his students some experience too of the "real world" where you often have to get your code to integrate with 3rd party libraries. And then they could write GUI apps.

    Alternatively to be even more modern, get them to write a library with a C interface that can be run from a modern scripting language then get that scripting language to use it.

     



  • @Cbuttius said:

    You won't get pointer errors and buffer overruns if you deploy RAII, for example using boost::shared_ptr and std::vector to help you manage your memory, and your other resources. Note that RAII can handle all resources management not just memory.

    Yes, and RAII is also useful for memory-managed languages. But this is exactly what I was talking about before: using C++ "safely" by restricting which features you use. You wouldn't have to do that if C++ was a better-designed language to begin with.

    @Cbuttius said:

    I am not sure why you think that C is better.You can even see that in this example the C code produced a more bloated solution than the C++ version.

    If code bloat is your only measure, go use fucking Perl. I think (hope) most programmers realize that code bloat does not matter-- code readability and maintainability do. C is more readable (more of the language can fit in a human brain) and more maintainable (mostly-- macros can trip you up, but those are in C++ too.) C++ seems specifically designed to have shitty maintainability-- who came up with operator overloading!

    Asterisk: Of course code bloat matters if it's to a ridiculous degree.

    @Cbuttius said:

    Java and C# would both be better if they weren't part of a war between Sun and Microsoft and interacted better with existing code, which C++ does because you can easily integrate it with your C libraries.

    My libraries are in C#, actually. You make many assumptions, sahib.

    BTW, you bring up an interesting point: this is one area that an open source, standardized, dynamic memory-managed C-like language could really excel. Open source programmers already have some good IDEs, and easy royalty-free, politics-free portability would be a huge selling point for application companies. There was some hope that Java would be taken over as a more agile open source project, able to compete with C# on features (finally), but ... then it turned out Sun is a bunch of assholes. I mean, think of what open source did for web browsers and apply that to a modern computer language. It could be amazing.

    Of course they're too fucking busy writing 46 new sound libraries every month to focus on something like that.

    @Cbuttius said:

    Alternatively to be even more modern, get them to write a library with a C interface that can be run from a modern scripting language then get that scripting language to use it.

    I'd be in favor of that if there was a long lecture at the beginning saying, "you should almost never, ever, ever, ever do this."

    A real programming class should teach maintainability, it should teach basic UI design (even only a few hours would do), it should teach working in groups and managing time. Those are things programmers are generally shitty at.

    I'm going to beat the drum again: maintainability is the single most important thing in writing code. Hell, go through the articles on this site, and find out how many of these WTFs would not exist if the original coders had focused on maintainability instead of worrying about things like code bloat.



  • @blakeyrat said:

    Indora please do not fuck the elephant in the room,
     

    Pft. Hot dog down a hallway.



  • @Cbuttius said:

    - (many will argue with me): using K&R bracing style instead of Allman (block). Don't teach your students bad habits, please.

    I personally use K&R because thats what I learned. My father uses K&R and I find it more readable. Its more lines of code but THAT DOESNT MATTER. Plus, MSVC++'s own formatter uses K&R over Allman. It is settable though deep down...



  • @blakeyrat said:

    @Cbuttius said:
    You won't get pointer errors and buffer overruns if you deploy RAII, for example using boost::shared_ptr and std::vector to help you manage your memory, and your other resources. Note that RAII can handle all resources management not just memory.

    Yes, and RAII is also useful for memory-managed languages. But this is exactly what I was talking about before: using C++ "safely" by restricting which features you use. You wouldn't have to do that if C++ was a better-designed language to begin with.

    @Cbuttius said:

    I am not sure why you think that C is better.You can even see that in this example the C code produced a more bloated solution than the C++ version.

    If code bloat is your only measure, go use fucking Perl. I think (hope) most programmers realize that code bloat does not matter-- code readability and maintainability do. C is more readable (more of the language can fit in a human brain) and more maintainable (mostly-- macros can trip you up, but those are in C++ too.) C++ seems specifically designed to have shitty maintainability-- who came up with operator overloading!

    You are still assuming that we are only writing code for machines with large amounts of memory. Sometimes code bloat does matter. And you advocated using C when C++ would also be a good choice of language. C++ is much more maintainable than C.

    Operator overloading is a very good idea, str1 < str2 much better than all that compares and equals nonsense. How many C#/Java bugs exactly do you think are there in the code because people are comparing strings (and possibly other objects) with == instead of .equals? 

    I'd be in favor of that (using a scripting language linking against C++ libraries) if there was a long lecture at the beginning saying, "you should almost never, ever, ever, ever do this."

    Why should you never do it?


    A real programming class should teach maintainability, it should teach basic UI design (even only a few hours would do), it should teach working in groups and managing time. Those are things programmers are generally shitty at.

     

    Not sure that all of these should go into programming courses although a lot of them might go into computing courses.  


    I'm going to beat the drum again: maintainability is the single most important thing in writing code. Hell, go through the articles on this site, and find out how many of these WTFs would not exist if the original coders had focused on maintainability instead of worrying about things like code bloat.

    Maintainability is very important. That is why it is important to ensure that

    - Code is nicely decoupled. C++ supports that to some extent by allowing forward declarations.

    - Code is easy to read. Allman is a lot easier to read than K&R.

    There are WTFs with C++:

    - No standard ABI. So not easy to mix different libraries, another reason to use a C interface.

    - No standard for libraries and export tables (commonly known as the ELF). Much of the bloat on UNIX platforms has come from the "export everything by default" approach. GNU now does support -fvisibility=hidden and individual hiding but it is not straightforward and not standard.

    - Complex make system.

     

     




  • @blakeyrat said:

    BTW, you bring up an interesting point: this is one area that an open source, standardized, dynamic memory-managed C-like language could really excel. Open source programmers already have some good IDEs, and easy royalty-free, politics-free portability would be a huge selling point for application companies. There was some hope that Java would be taken over as a more agile open source project, able to compete with C# on features (finally), but ... then it turned out Sun is a bunch of assholes. I mean, think of what open source did for web browsers and apply that to a modern computer language. It could be amazing.
    Aren't web browsers doing exactly that? Just look at how much has gone into Javascript optimisation lately :)



  • @Cbuttius said:

    You are still assuming that we are only writing code for machines with large amounts of memory. Sometimes code bloat does matter. And you advocated using C when C++ would also be a good choice of language. C++ is much more maintainable than C.

    The vast, vast, majority of software is written for machines with large amounts of memory. So my advice applies to the vast majority of programming that's done. If you're writing software for a Z80 or whatever, fine, ignore my advice. I never said it was gospel, or even that I'm an expert in the matter-- do what you like! I'm just serving up my own opinions and prejudices. (I'd like to add that my Classic Mac had no problem running HyperTalk in 1 MB of memory, and that's basically the most complex interpreted language ever created.)

    @Cbuttius said:

    Operator overloading is a very good idea, str1 < str2 much better than all that compares and equals nonsense.

    Ok, I'm reading your code and I see if( str1<str2 ){blah();}... what does it mean? What exactly does it do? What would you expect it to do?

    As for your second point, that's a Java quirk. It's not universal to memory managed languages, and doesn't exist in any other than Java. (To my knowledge.) That said, you may want to use .Equals in C# because it lets you do things like, say, change culture options or ignore case... but the default == behavior is fine in the vast majority of cases.

    @Cbuttius said:

    I'd be in favor of that (using a scripting language linking against C++ libraries) if there was a long lecture at the beginning saying, "you should almost never, ever, ever, ever do this."

    Why should you never do it?

    Because it's premature optimization. If you don't need the native code for a speed boost, you're much better off writing your entire program in a single language.

    @Cbuttius said:


    A real programming class should teach maintainability, it should teach basic UI design (even only a few hours would do), it should teach working in groups and managing time. Those are things programmers are generally shitty at.

     

    Not sure that all of these should go into programming courses although a lot of them might go into computing courses.  

    The thing with programming courses is that you only need a few of them. Either kids get it, or they don't. This is what drives me nuts about my CS course in college-- you spend 3 years learning stuff you (if you're good with programming) already grasped in the first month, but you never learn jack about how to estimate time, work in a team, design a UI-- hell they didn't even teach source control! All the stuff you need, they didn't teach. All the stuff I got quickly, I had to sit through boring lessons about.

    Despite being a furry, I'm confident that Indora can write C, C++ or whatever just because of the post in this thread, and the fact that he reads this site. That's not what he needs to learn.



  • @ender said:

    @blakeyrat said:
    BTW, you bring up an interesting point: this is one area that an open source, standardized, dynamic memory-managed C-like language could really excel. Open source programmers already have some good IDEs, and easy royalty-free, politics-free portability would be a huge selling point for application companies. There was some hope that Java would be taken over as a more agile open source project, able to compete with C# on features (finally), but ... then it turned out Sun is a bunch of assholes. I mean, think of what open source did for web browsers and apply that to a modern computer language. It could be amazing.
    Aren't web browsers doing exactly that? Just look at how much has gone into Javascript optimisation lately :)

    Whelp, there you go. Grab one of those JavaScript engines, add namespaces, add a nice comprehensive standard library and GUI tools like C#'s, do some branding and marketing, and you're done. Maybe optional strict typing would be a good addition.

    JavaScript's a fine language, it does everything you need, is easy to learn, it could really kick ass at serious application development when decoupled from that shitty DOM.



  • I'd be in favor of that (using a scripting language linking against C++ libraries) if there was a long lecture at the beginning saying, "you should *almost* never, ever, ever, ever do this."

    Why should you never do it?

    Because it's premature optimization. If you don't need the native code for a speed boost, you're much better off writing your entire program in a single language.

    That is only if you consider a program to be monolithic, which unfortunately too many systems are. i.e. one giant system with one giant build. Write one almost irrelevant feature slightly wrong and you've broken the entire build and get to wear some silly hat or whatever they do. Not really your WTF, software should be written component-based in the first place, but it's partly the problem of build-systems rather than the languages themselves that makes this far more problematic.

    Now assuming we have a project with multiple components as units, it should not necessarily be the case that they will be written in the same language.

    In fact one may be a server and the other a client. So we could write a server in C++ and a client in a scripting language.

    If you are teaching a concept however you start with an example that works and is easy to express the concept without forcing the students to learn too much else, not necessarily one that you would write that way in production.


    A real programming class should teach maintainability, it should teach basic UI design (even only a few hours would do), it should teach working in groups and managing time. Those are things programmers are generally shitty at.

    The thing with programming courses is that you only need a few of them. Either kids get it, or they don't. This is what drives me nuts about my CS course in college-- you spend 3 years learning stuff you (if you're good with programming) already grasped in the first month, but you never learn *jack* about how to estimate time, work in a team, design a UI-- hell they didn't even teach source control! All the stuff you *need*, they didn't teach. All the stuff I got quickly, I had to sit through boring lessons about.

     

    We learnt some UI in my Computing Masters Degree. Plus some hardware. Not OO design because that wasn't such a hot topic in 1990-91 although it did exist. Much of my knowledge has been self-taught or learnt from experience. Design is something that is done with the brain though, not a designs-pattern book. Just like owning a toolbox doesn't make you into a builder, even if you know the names of all your tools. My problem has been that I've often known the tools and how to apply them but not known their names and have failed interviews several times in the past because of that.




  • @Cbuttius said:

    Not sure that all of these should go into programming courses
     

    They're about programming. They go in programming courses.

    @Cbuttius said:

    Allman is a lot easier to read than K&R.

    Bull. Any style is easy to read once you get used to it. I once did one style. Now I do another. Readability impact: zero.

    I did see a style once where the opening brace was on the same line as the first statement in the block, like so:

    if (something)
    { doStuff();
    }

    God that was fucked. It actively interfered with coding. None of the other styles do that kind of shit, and I even usually leave the cuddling } else { as it is when I see it, even though I prefer keywords on the start of a line.

     



  • @Cbuttius said:

    My problem has been that I've often known the tools and how to apply them but not known their names
     

    Been there. Have done a few things a certain way for some time, and then later find out it's a design pattern with a name.



  • @Cbuttius said:

    I'd be in favor of that (using a scripting language linking against C++ libraries) if there was a long lecture at the beginning saying, "you should almost never, ever, ever, ever do this."

    Why should you never do it?

    Because it's premature optimization. If you don't need the native code for a speed boost, you're much better off writing your entire program in a single language.

    That is only if you consider a program to be monolithic, which unfortunately too many systems are. i.e. one giant system with one giant build. Write one almost irrelevant feature slightly wrong and you've broken the entire build and get to wear some silly hat or whatever they do. Not really your WTF, software should be written component-based in the first place, but it's partly the problem of build-systems rather than the languages themselves that makes this far more problematic.

    None of that has anything to do with C++ vs. memory managed languages. My project is a single solution with something like 5 libraries in it and 3 applications-- the dependencies are set correctly so that if I tell VS to build one of the applications, and it knows a source file for one of the libraries changed, it'll build the library first. The whole shebang is in C#, but there's no reason the libraries couldn't also be in C++, or C, or VisualBasic, or any other language VS supports.

    Basically, this comes down to "your IDE needs to not be shit." It's not problematic, unless you're still writing code the way people did in 1988.

    @Cbuttius said:

    If you are teaching a concept however you start with an example that works and is easy to express the concept without forcing the students to learn too much else, not necessarily one that you would write that way in production.

    Yes, which is exactly why you shouldn't be teaching C++ to students. You'll teach them nothing but "gotchas."

    @Cbuttius said:

    We learnt some UI in my Computing Masters Degree. Plus some hardware. Not OO design because that wasn't such a hot topic in 1990-91 although it did exist. Much of my knowledge has been self-taught or learnt from experience

    Yes, again, that is my point. People who are good programmers are self-taught. They don't need the programming classes, not more than a year's worth perhaps.

    @Cbuttius said:

    My problem has been that I've often known the tools and how to apply them but not known their names and have failed interviews several times in the past because of that.

    Huh?

    @dhromed said:

    Bull. Any style is easy to read once you get used to it. I once did one style. Now I do another. Readability impact: zero.

    I did see a style once where the opening brace was on the same line as the first statement in the block, like so:

    if (something)
    { doStuff();
    }

    God that was fucked. It actively interfered with coding. None of the other styles do that kind of shit, and I even usually leave the cuddling } else { as it is when I see it, even though I prefer keywords on the start of a line.

    And, of course, your style guide doesn't fucking matter because your IDE can just switch the code back and forth whenever you need. Again, the real WTF here is using development tools from 1988. (Or I guess using modern ones, but not using the features they offer at all.)



  • @blakeyrat said:

    But this is exactly what I was talking about before: using C++ "safely" by restricting which features you use. You wouldn't have to do that if C++ was a better-designed language to begin with.
    I have a grand idea! Let us all use every feature that the language and standard libraries offer in every program we write! That way we don't need any of this thinking about what's best for the program at hand nonsense.



    Seriously though, if you can't understand C++ because it's "too complicated" or "has too many features" maybe you shouldn't be coding?



  • @blakeyrat said:

    But this is exactly what I was talking about before: using C++ "safely" by restricting which features you use. You wouldn't have to do that if C++ was a better-designed language to begin with.

    I don't see how using a smart pointer to manage memory somehow "restricts" which features you use. You're free to go mucking around with raw pointers if you want, smart pointers will give you the raw pointer if you ask for it. Besides, all a smart pointer does is hide all the memory management stuff you'd have to do manually, I don't see how that's a bad thing. (That goes equally for any other resource mangement class.)

    Do you have an example of how using C++ "safely" (as you define "safely") actually prevents you from using a language feature?



  • @Lingerance said:

    @blakeyrat said:
    But this is exactly what I was talking about before: using C++ "safely" by restricting which features you use. You wouldn't have to do that if C++ was a better-designed language to begin with.
    I have a grand idea! Let us all use every feature that the language and standard libraries offer in every program we write! That way we don't need any of this thinking about what's best for the program at hand nonsense.

    The point is missed.

    Whether or not *you* abuse a feature, you probably have a coworker who, sooner or later, will. You want to be using a language that's resistant to people abusing its features to make weird shit you can't fit in your head. The choice of language isn't just for you, it's for *everybody* who touches the project *ever*. Even the guy who loves Perl.

    @Lingerance said:

    Seriously though, if you can't understand C++ because it's "too complicated" or "has too many features" maybe you shouldn't be coding?

    HEY LOOK ELITISM!

    First of all, to defend myself, I never said I couldn't understand C++. I actually spent years of my life converting a large codebase from really poorly-written C to somewhat poorly-written C++. (If I had it to do over, I never would have done that... but, hindsight's 20/20.)

    Second of all, programming should be easy enough so that anybody can do it. I firmly believe this; I'm not an elitist in any way, shape or form... I'd never tell somebody "maybe you shouldn't be programming" because:
    1) If they can't cope with a language, that's the *language's* fault, not theirs. The standard rules of usability apply to programming languages as much as anything other kind of software.
    2) I'm not an asshole. Mostly.

    The general population has suffered enough from computer geek elitism. Every day they have to cope with poor UIs, terrible design decisions, and general unpleasantness due to people like you saying, "well if you can't do A you're just a retard." How about we as a community try to make computers better,?



  • @blakeyrat said:

    Whether or not you abuse a feature, you probably have a coworker who, sooner or later, will. You want to be using a language that's resistant to people abusing its features to make weird shit you can't fit in your head. The choice of language isn't just for you, it's for everybody who touches the project ever. Even the guy who loves Perl.
    Guess what? That happens in every language.

    @blakeyrat said:

    1) If they can't cope with a language, that's the language's fault, not theirs. The standard rules of usability apply to programming languages as much as anything other kind of software.

    User's shouldn't be "programming" in that case. If you want them to have a padded playground to play with a programming language isn't that.

    @blakeyrat said:

    How about we as a community try to make computers better,?

    Not going to happen if we have the frame of mind that people who can't code should be able to. I have no issue with empowering users, or any of that, it's just "better" is highly sibjective. For me it's making a good framework that any language can interact with and enables multiple machines to work together cooperatively (many users have a desktop + laptop, ever tried keeping them in sync? It's hell for a user)



  • @blakeyrat said:

    Whether or not *you* abuse a feature, you probably have a coworker who, sooner or later, will.
     

    Absolutely. Been there, done that, got a closet full of smelly t-shirts.

    @blakeyrat said:

    I'd never tell somebody "maybe you shouldn't be programming" because:
    1) If they can't cope with a language, that's the *language's* fault, not theirs.

    But that's taking it a bit too far though. Some people just can't code like others just can't drive - which is fine, except I don't want you on my team. However, I totally agree that some languages make coding harder than others, just like some cars are easier to drive. At the same time, we have to accept that sometimes, the easy family car just doesn't do the job, and you need a formula 1 racecar - and a bloody good driver, not uncle Harry.

    @blakeyrat said:

    "well if you can't do A you're just a retard."

    Yup, this is what geeks around the world do, whether computer geeks, electronic geeks or car geeks.

     

     



  • @blakeyrat said:

    Second of all, programming should be easy enough so that anybody can do it.

    That sounds absurd applied to tons of other professions. Financial auditing should be easy enough that anyone can do it! (It's not.) Skyscraper architecture should be easy enough that anyone can do it! (Hah!) Cancer research should be easy enough to anyone can do it! (There's a reason we haven't cured cancer yet...)

    Seriously though, programming is [i]not[/i] easy; there's a reason most programmers suck at it, and it has nothing to do with what language they're using. Designing nontrivial software is beyond the mental capacity of a large portion of the population... worse, designing [i]trivial[/i] software is beyond the mental capacity of many.

    As for C++... it's not the right tool for every job; but don't make the mistake of asserting that it's [i]never[/i] the right tool for the job. It has strengths and weaknesses; some people will have a hard time coping with that, and [i]those people should not write C++ professionally.[/i] I am of the opinion that a programmer should use the tools with which he is most capable. For many programmers, even capable ones, that tool will never be C++ -- and for some, it will always be C++.



  • @Lingerance said:

    @blakeyrat said:
    Whether or not you abuse a feature, you probably have a coworker who, sooner or later, will. You want to be using a language that's resistant to people abusing its features to make weird shit you can't fit in your head. The choice of language isn't just for you, it's for everybody who touches the project ever. Even the guy who loves Perl.
    Guess what? That happens in every language.

    Yeah, but you're still better off using a language that can fit in the average person's head.

    @Lingerance said:

    @blakeyrat said:
    1) If they can't cope with a language, that's the language's fault, not theirs. The standard rules of usability apply to programming languages as much as anything other kind of software.

    User's shouldn't be "programming" in that case. If you want them to have a padded playground to play with a programming language isn't that.

    They'll use it whether you want them to or not. Look at VBA if you need an example. Again, don't you read this site?

    Given that:
    1) Most people do not have the interest or drive to *really* learn programming
    2) Most people will write programs anyway
    You're much better off creating programming languages that most people can use.

    @Lingerance said:

    @blakeyrat said:
    How about we as a community try to make computers better,?

    Not going to happen if we have the frame of mind that people who can't code should be able to. I have no issue with empowering users, or any of that, it's just "better" is highly sibjective. For me it's making a good framework that any language can interact with and enables multiple machines to work together cooperatively (many users have a desktop + laptop, ever tried keeping them in sync? It's hell for a user)

    WTF? No, I installed Windows Live Sync. It took like 5 minutes, max, to set up the shared Documents folder. Then I do... nothing from then on.

    Of course, users get bad advice from geeks who love to over complicate things. For every geek that recommends an easy set-it-and-forget-it program like Live Sync, there's probably 30 who say "write a scheduled task to use the NET command to connect to a share and run Robocopy... etc". Those geeks are the kind I'm railing against here.



  • @Heron said:

    @blakeyrat said:
    Second of all, programming should be easy enough so that anybody can do it.

    That sounds absurd applied to tons of other professions. Financial auditing should be easy enough that anyone can do it! (It's not.) Skyscraper architecture should be easy enough that anyone can do it! (Hah!) Cancer research should be easy enough to anyone can do it! (There's a reason we haven't cured cancer yet...)

    I believe all of those things should be easy for the common man to do as well. Why shouldn't they?

    @Heron said:

    Seriously though, programming is not easy; there's a reason most programmers suck at it, and it has nothing to do with what language they're using. Designing nontrivial software is beyond the mental capacity of a large portion of the population... worse, designing trivial software is beyond the mental capacity of many.

    Yes, but that doesn't mean that those people can't program. That means the tools we currently use aren't up to snuff.

    @Heron said:

    As for C++... it's not the right tool for every job; but don't make the mistake of asserting that it's never the right tool for the job. It has strengths and weaknesses; some people will have a hard time coping with that, and those people should not write C++ professionally. I am of the opinion that a programmer should use the tools with which he is most capable. For many programmers, even capable ones, that tool will never be C++ -- and for some, it will always be C++.

    I'm not Jesus or something. I'm just giving my opinion. In my opinion, there's never an occasion to use C++. Either you need to interact with the machine at a very low-level-- in which case use C-- or you need to create reliable, efficient, bug-free software-- in which case use a memory-managed language. You don't have to agree with me!



  • @blakeyrat said:

    You're much better off creating programming languages that most people can use.

    I would argue that you're much better off getting those people to go into another profession. If they don't care enough to *really* learn programming, but still getting programming jobs, then they're lowering wages for those of us who do merely by continuing to compete with us in the job market. Making an easier-to-use language won't fix that... again we'll cite Visual Basic. It's better to get them to switch to something they [i]will[/i] care about, and get them to stop competing for our jobs.

    There's a reason other professions have actual certifications and tests to pass before you can really work in their industries. You don't have to take the bar exam to be a lawyer because they like having an exclusive club, it's because they want to make sure you actually know what you're doing. You don't have to take the CPA exam to get a CPA certification and thus get the good accounting jobs just because CPAs like having an exclusive club, it's because they want to make sure that the people doing audits actually know what they're doing. [b]Programmers need a similar program, because clearly universities aren't weeding out the crappy programmers well enough.[/b]



  • @blakeyrat said:

    They'll use it whether you want them to or not. Look at VBA if you need an example. Again, don't you read this site?

    VBA is fairly close to a padded playground.
    @blakeyrat said:
    WTF? No, I installed Windows Live Sync. It took like 5 minutes, max, to set up the shared Documents folder. Then I do... nothing from then on.

    Two years after I finally gave up trying to use Windows as a desktop OS. Lovely. Eitherway it looks like it only syncs files, not settings, favorites or cookies.



  • @blakeyrat said:

    I believe all of those things should be easy for the common man to do as well. Why shouldn't they?

    Because Joe Sixpack is simply not capable of understanding the concepts involved in these fields! These are people who have a difficult time doing basic math -- in other words, the [i]last[/i] person you should want to be calculating the materials required for the load-bearing supports in your 80-floor office building.

    @blakeyrat said:

    Yes, but that doesn't mean that those people can't program. That means the tools we currently use aren't up to snuff.

    So you're essentially arguing that nobody should have to bother learning the concepts involved in the area they work in, and that the tools they use should just do it all for them? I don't suppose you would apply that to your children as well -- they shouldn't have to learn basic math, because their calculator can do it for them, right? I can apply exactly the same argument to that that you're applying to programming, with exactly the same logic. [i]You're arguing that ignorance is the ideal,[/i] and as a result, you're just making the software industry worse, not better.

    @blakeyrat said:

    I'm not Jesus or something. I'm just giving my opinion. In my opinion, there's never an occasion to use C++. Either you need to interact with the machine at a very low-level-- in which case use C-- or you need to create reliable, efficient, bug-free software-- in which case use a memory-managed language. You don't have to agree with me!

    So you're pretending there's never a time where you need to do both? Much of the video game industry uses C++, and it's not because they're masochistic... it's because it lets them interact with the machine at a low level when they need to, and still lets them create reliable, efficient, relatively bug-free software.

    You seem to think it's not possible to write reliable, efficient, bug-free software in C++. I've got news for you... if you bother actually learning C++, it's no more difficult than writing reliable, efficient, bug-free software in any other language.



  • @blakeyrat said:

    Either you need to interact with the machine at a very low-level-- in which case use C-- or you need to create reliable, efficient, bug-free software-- in which case use a memory-managed language.

    But what if you need both? 8=P



  • @Lingerance said:

    Two years after I finally gave up trying to use Windows as a desktop OS. Lovely. Eitherway it looks like it only syncs files, not settings, favorites or cookies.

    True, it doesn't do registry settings. If you're using IE, it'll sync your Favorites folder if you tell it to. If not, there's XMarks, which did browser syncing (with passwords and cookies) long before Windows Live Sync existed.

    @heron said:

    So you're essentially arguing that nobody should have to bother learning the concepts involved in the area they work in, and that the tools they use should just do it all for them?

    Yup. I believe in an ideal world, people should be allowed to express themselves in any way they please with no limitations (other than physics.)

    @heron said:

    I don't suppose you would apply that to your children as well -- they shouldn't have to learn basic math, because their calculator can do it for them, right?

    Right.

    Well, it's a bit more complex than that, since we're not close enough to the ideal to get away with it yet. I'd probably still want them to learn basic math. But in that ideal world I just described? Sure, let the machines do the thinking and the people do the creating.

    @heron said:

    I can apply exactly the same argument to that that you're applying to programming, with exactly the same logic. You're arguing that ignorance is the ideal, and as a result, you're just making the software industry worse, not better.

    Right now software development is a huge monoculture. All programmers think a certain way, a certain way that could not be more different than the average man-on-the-street thinks. As a result, software is terrible for the average man-on-the-street. This is a bad thing.

    Ask yourself, what happened to spatial file browsers? Spatial memory is by far the strongest type of memory for nearly everybody-- meaning everybody except programming geeks-- and yet, OS X killed-off the last vestiges of that amazing system. Why did Apple let that happen? It's a criminal act.

    @heron said:

    So you're pretending there's never a time where you need to do both? Much of the video game industry uses C++, and it's not because they're masochistic... it's because it lets them interact with the machine at a low level when they need to, and still lets them create reliable, efficient, relatively bug-free software.

    Oh please. Most video games are buggy pieces of shit. The only reason console versions don't crash every 10 minutes is that the console maker won't give them a license if they do. The only reason PC games-- oh wait PC games do crash every 10 minutes.

    Besides, most video games only use C++ for the engine itself, everything else is usually written in a higher-level language. Lua's pretty popular.

    @heron said:

    You seem to think it's not possible to write reliable, efficient, bug-free software in C++. I've got news for you...

    No, I don't seem to think that. Don't put fucking words in my fucking mouth, nothing pisses me off more.



  • @blakeyrat said:

    Yup. I believe in an ideal world, people should be allowed to express themselves in any way they please with no limitations (other than physics.)

    I guess you live in a fantasy world where creativity requires exactly zero understanding of the field in which one attempts to be creative. It would obviously be a waste of time to try to convince you that reality is far different, so I'll leave it at that.

    All programmers think a certain way, a certain way that could not be more different than the average man-on-the-street thinks. As a result, software is terrible for the average man-on-the-street. This is a bad thing.

    You shouldn't be arguing that the average man-on-the-street should be [i]programming[/i], you should be arguing that the average man-on-the-street should be doing [i]UI design[/i]. That's an entirely different argument, and I would actually agree with that assertion.

    To clarify, I fully agree that the vast majority of programmers suck at user interfaces (which is the basis of all your complaints), but that's why companies hire (or [i]should[/i] hire) UI designers in the first place. We have pretty good UI design tools, but the type of person who is good at programming is usually [i]not[/i] good at UI design; you shouldn't conflate the two issues like you are.

    Ask yourself, what happened to spatial file browsers?

    I would, but instead I'll just point out that even Windows 7 has a spatial mode. No, it's not the default. I doubt the decision was made arbitrarily.

    @heron said:
    So you're pretending there's never a time where you need to do both? Much of the video game industry uses C++, and it's not because they're masochistic... it's because it lets them interact with the machine at a low level when they need to, and still lets them create reliable, efficient, relatively bug-free software.

    Oh please. Most video games are buggy pieces of shit. The only reason console versions don't crash every 10 minutes is that the console maker won't give them a license if they do. The only reason PC games-- oh wait PC games do crash every 10 minutes.

    Two things. First, I didn't say "most of the video game industry [i]succeeds[/i] at making reliable, efficient, relatively bug-free software, I merely stated that C++ allows them to do so while also providing them low-level machine interaction when they need it. What language would you suggest as an alternative? Why is it better at low-level interaction than C++? Why is it better at the high-level stuff? ("It manages memory" is not a sufficient reason by itself.)

    Second, my game library is pretty big, but very few of them actually crash (speaking of crashes that are not the fault of my graphics driver) at all, let alone "every 10 minutes". (The nVidia driver, on the other hand...)

    Besides, most video games only use C++ for the engine itself, everything else is usually written in a higher-level language. Lua's pretty popular.

    That doesn't disprove anything I've said... the game engine is the core of the game, which requires both low-level machine interaction and higher-level language features. Whether the ingame cutscenes are scripted in Lua is pretty much irrelevant.

    @heron said:
    You seem to think it's not possible to write reliable, efficient, bug-free software in C++. I've got news for you...

    No, I don't seem to think that. Don't put fucking words in my fucking mouth, nothing pisses me off more.

    I misspoke. You don't [i]seem[/i] to think that, you clearly [i]do[/i] think that -- it's what you've been arguing this entire thread. If you [i]don't[/i] think that, kindly point out a use case for which you would find C++ an acceptable language choice. If you can't think of one, then clearly you [i]do[/i] think it's never the right choice.



  • @Spectre said:

    @blakeyrat said:
    Either you need to interact with the machine at a very low-level-- in which case use C-- or you need to create reliable, efficient, bug-free software-- in which case use a memory-managed language.

    But what if you need both? 8=P

    Then you use Delphi. ;)



  • @Heron said:

    @blakeyrat said:
    Yup. I believe in an ideal world, people should be allowed to express themselves in any way they please with no limitations (other than physics.)

    I guess you live in a fantasy world where creativity requires exactly zero understanding of the field in which one attempts to be creative. It would obviously be a waste of time to try to convince you that reality is far different, so I'll leave it at that.

    Do you know what the word "ideal" means? Fuck. I can't debate with people who are functionally illiterate, sorry. I'm trying to be nice, but Jesus.

    @A fucking dictionary said:

    i·de·al   

    [ahy-dee-uhl, ahy-deel]

    –noun

    1. a conception of something in its perfection.

    2. a standard of perfection or excellence.

    3. a person or thing conceived as embodying such a conception or conforming to such a standard, and taken as a model for imitation: Thomas Jefferson was his ideal.

    4. an ultimate object or aim of endeavor, esp. one of high or noble character: He refuses to compromise any of his ideals.

    5. something that exists only in the imagination: To achieve the ideal is almost hopeless.

    @Heron said:

    Ask yourself, what happened to spatial file browsers?

    I would, but instead I'll just point out that even Windows 7 has a spatial mode.

    It... does? Where? How do you activate it?

    @Heron said:

    If you can't think of one, then clearly you do think it's never the right choice.

    This is true. Let's call this statement A. But here's what you wrote before:

    @Heron said:

    You seem to think it's not possible to write reliable, efficient, bug-free software in C++.

    Let's call this statement B.

    I completely disagree with statement B, but I completely agree with statement A. This is possible because they are two completely different statements. Do you see how statement B is not equivalent at all to statement A?



  • @blakeyrat said:

    Do you know what the word "ideal" means? Fuck. I can't debate with people who are functionally illiterate, sorry. I'm trying to be nice, but Jesus.

    Eh... no, it would not be "ideal" for ignorant people to be creative in areas about which they know nothing. This is why people try to invent perpetual motion machines -- they are ignorant of the laws of physics, so they are "creative" in the most useless, stupid way possible. Even a high-school-level understanding of physics would prevent this sort of idiocy.

    I, for one, do not want a world flooded with every field's equivalent of attempts to create perpetual motion machines.

    Furthermore, I do not consider complete ignorance to be "ideal", regardless of how good the available tools are. Quite the opposite -- I would consider that an extremely sub-optimal situation. Complete knowledge, not complete ignorance, should be our goal.

    @Heron said:
    I would, but instead I'll just point out that even Windows 7 has a spatial mode.

    It... does? Where? How do you activate it?

    The same place it's been in every previous version of Windows. Open the "Folder Options" dialog and switch to the other radio button in the "Browse Folders" group. Presto, instant spatial mode view. (Of course, if your definition of "spatial mode" is different from [url=http://en.wikipedia.org/wiki/File_manager#Spatial_file_manager]Wikipedia's[/url], the situation changes. I had never heard the term before this thread.)

    @Heron said:
    If you can't think of one, then clearly you do think it's never the right choice.

    This is true. Let's call this statement A. But here's what you wrote before:

    @Heron said:

    You seem to think it's not possible to write reliable, efficient, bug-free software in C++.

    Let's call this statement B.

    I completely disagree with statement B, but I completely agree with statement A. This is possible because they are two completely different statements. Do you see how statement B is not equivalent at all to statement A?

    If it [i]is[/i] possible to write reliable, efficient, bug-free software in C++, then there must be some application for which C++ is the best choice. I've already pointed out high-end games, for which C++ is (usually) the best choice for reasons mentioned previously. What would you suggest game writers use?



  • @Heron said:

    Eh... no, it would not be "ideal" for ignorant people to be creative in areas about which they know nothing. This is why people try to invent perpetual motion machines -- they are ignorant of the laws of physics, so they are "creative" in the most useless, stupid way possible. Even a high-school-level understanding of physics would prevent this sort of idiocy.
    I think that's a highly improbable assertion. I think it's pretty plain from a quick google that many perpetual motion cranks have a good understanding of orthodox physics - they just think they've found a mistake. Crazy, perhaps, but not ignorant.

    @Heron said:

    I, for one, do not want a world flooded with every field's equivalent of attempts to create perpetual motion machines.
    But then again, there's a possibility they're not crazy or ignorant, but a visionary genius. Heavier-than-air flying machines were considered 'physically impossible' at one time in just the same way perpetual motion machines are now. I don't think anyone's suddenly about to disprove the laws of thermodynamics, but in ever other field, I think the more people trying something different, the better.

    Blakey's absolutely spot on, in my opinion. In an ideal world, anyone who could tell you what a program should do would be able to write it.



  • @Heron said:

    Furthermore, I do not consider complete ignorance to be "ideal", regardless of how good the available tools are. Quite the opposite -- I would consider that an extremely sub-optimal situation. Complete knowledge, not complete ignorance, should be our goal.

    If you can keep the knowledge in a computer, why shouldn't you? No sense wasting brain cells if you have something better.

    Using a computer to complete a task doesn't equate to being completely ignorant of the task. Similarly, people already use machines they're completely ignorant of every minute of every day including, for most people, their desktop computer. And cellphone. And car. And microwave oven. Do you think the goal should be to prevent people from using an car until they can complete a written test on continuously variable transmissions?

    @Heron said:

    The same place it's been in every previous version of Windows. Open the "Folder Options" dialog and switch to the other radio button in the "Browse Folders" group. Presto, instant spatial mode view. (Of course, if your definition of "spatial mode" is different from Wikipedia's, the situation changes. I had never heard the term before this thread.)

    That doesn't meet any of the 4 requirements at the top of that article. Maybe you should have actually read the article before bringing it up here, huh? At least the handy numbered list right at the top? The easiest part to read?

    @Heron said:

    If it is possible to write reliable, efficient, bug-free software in C++, then there must be some application for which C++ is the best choice.

    You're failing logic 101 here, buddy. It's possible to write reliable, efficient, bug-free software in whitespace too.

    @Heron said:

    I've already pointed out high-end games, for which C++ is (usually) the best choice for reasons mentioned previously. What would you suggest game writers use?

    Christ. If they need low-level performance, than C with a scripting engine on top of it. If not, then a memory-managed language. You're making me sound like a broken record. XNA, for example, is all C# and is perfectly fine for games. There's also a game-oriented Python environment called PyGame.



  • @davedavenotdavemaybedave said:

    Blakey's absolutely spot on, in my opinion. In an ideal world, anyone who could tell you what a program should do would be able to write it.

    You're asking for a computer that understands English, with all its contextual meaning, as a programming language. Sure, that might be ideal, but that's completely unlike "programming" as we know it, so much so that I don't know that I'd call it "programming" at all, at least no more than a CEO is "programming" when he tells his dev team to "give me an action shooter based on Lord of the Rings".

    But then again, there's a possibility they're not crazy or ignorant, but a visionary genius. Heavier-than-air flying machines were considered 'physically impossible' at one time in just the same way perpetual motion machines are now

    They were only considered "physically impossible" because [i]people didn't understand physics[/i]. You're only proving my point. I seriously cannot believe you're arguing that complete ignorance is a better ideal than complete knowledge.



  • @davedavenotdavemaybedave said:

    Blakey's absolutely spot on, in my opinion. In an ideal world, anyone who could tell you what a program should do would be able to write it.

    You're talking about declarative programming, which IMO is just a pipe dream.  It sacrifices far too much control to ever be truly useful.  This should be intuitively obvious to anyone who's ever had to spend hours with a query plan analyzer trying to figure out why a SQL query is giving the right results but taking half an hour instead of two minutes to do so.



  • @Heron said:

    You're asking for a computer that understands English, with all its contextual meaning, as a programming language.
    No, you're just so stuck on the elitist principles of obfuscation and mysticism that you can't imagine any middle-ground between sentient, self-programming computers and the rocks we're banging together at the moment. Hang on, sorry, I seem to be infected with Blakeyrant. Let me try that again: there's no reason why programming can't become graphical and easy to understand, in much the same way that graphical desktop environments replaced the command prompt and enabled mass access to everyday functions of PCs. Syntax and vocabulary are unnecessary obstacles.

    That said, you still seem to be having trouble with the concept of an ideal world. @Heron said:

    @davedavenotdavemaybedave said:
    Heavier-than-air flying machines were considered 'physically impossible' at one time in just the same way perpetual motion machines are now

    They were only considered "physically impossible" because people didn't understand physics. You're only proving my point.

    I'm not following you. How does that prove your point, rather than proving your point wrong in the way I said it was when I said precisely that?

    I seriously cannot believe you're arguing that complete ignorance is a better ideal than complete knowledge.
    No-one's arguing that. You just made that bit up.


  • @blakeyrat said:

    If you can keep the knowledge in a computer, why shouldn't you?

    Because the computer doesn't know how to apply that knowledge, and if you only know how to look things up, then you won't know how to apply the knowledge either. Tons of programmers out there right now are falling victim to precisely that -- rather than understand what they're doing, they just copy and paste whatever Google results they can find. The end result is undesirable. Access to raw knowledge is not, by itself, sufficient to get things done.

    Using a computer to complete a task doesn't equate to being completely ignorant of the task. Similarly, people already use machines they're completely ignorant of every minute of every day including, for most people, their desktop computer. And cellphone. And car. And microwave oven. Do you think the goal should be to prevent people from using an car until they can complete a written test on continuously variable transmissions?

    No, I'm not talking about knowledge in general, I'm talking about field-specific knowledge. You're the one claiming that everything should be simple enough that everyone can do everything. I'm all for creating tools so that people don't have to know everything to get on with their lives; but if someone is going to make a living in a particular field, they had better understand the fundamentals of the field.

    More to the point, if someone shows up to interview for a job designing microprocessors, no sane employer would ever be satisfied with "I can just look up all the information I need" as an answer to "how would you go about designing a processor?" If that's their answer to an obscure technical question, that's fine; but for the basics of the field, "I'll just look it up" is exactly what leads to many of the WTFs we see here on this very site. Do you really believe that wouldn't happen in your "ideal" world?

    @Heron said:

    That doesn't meet any of the 4 requirements at the top of that article. Maybe you should have actually read the article before bringing it up here, huh? At least the handy numbered list right at the top? The easiest part to read?

    You mean the part that disqualifies a file manager as "spatial" merely for possessing the capability of functioning in some other way? Or perhaps the part of the definition which makes it extremely difficult to use with a hierarchical file system? (closed one of your two dozen folder windows by accident? good luck remembering which one it is, or the path to it so you can open it again.) The mode I pointed out is [i]effectively[/i] spatial mode, for most intents and purposes, but works better with hierarchical file systems.

    If you want to argue that hierarchical file systems need to disappear, then argue that, don't argue that people should continue to use and maintain a tool not meant to be used with hierarchical file systems.

    You're failing logic 101 here, buddy. It's possible to write reliable, efficient, bug-free software in whitespace too.

    It seems you're taking me far too literally. When I say "possible" I don't mean "in the technical sense of the term 'possible'", I mean that the language itself is not a barrier to those qualities. As such, it has strengths which other languages do not, and applications which require those strengths [i]are best written in C++[/i].

    Christ. If they need low-level performance, than C with a scripting engine on top of it.

    "A scripting engine" isn't going to replace the core performance-sensitive pieces of the engine, and it's silly to avoid C++ for those core parts of the engine, precisely because (for example) it offers automagic resource management capabilities which you don't get from C. That kind of feature [i]reduces[/i] the occurrence of bugs commonly found in C code, so I'm having a hard time understanding why you're arguing against taking advantage of those features.

    If not, then a memory-managed language. You're making me sound like a broken record. XNA, for example, is all C# and is perfectly fine for games. There's also a game-oriented Python environment called PyGame.

    I'm not arguing that game development [i]can't[/i] be done in other languages. I'm merely saying that C++ is the right choice [i]for some games[/i]. Your stance is essentially that C++'s strengths [i]never[/i] outweigh the personal issues you have with the language, and that's just silly. I hate Java with a passion -- I would never willingly choose it for any project -- but I am not so blinded by distaste that I would claim it's never the right choice.


Log in to reply