Programming languages are just tools (as are some of the people posting in this thread, it would seem [rolleyes]) - listen to yourselves, it's pathetic. I really don't understand why people get so heated and angry about it, and make such sad attempts to prove themselves right. Different tools have different applications and if you can't appreciate or understand this in a civil manner, then I suggest you quit any programming careers you have and see if Ronald McDonald or Colonel Sanders can save you from the dole queue. You could be a world class programmer if you like, but professionalism is just as important and without the two combined you're just another basement-dwelling Aspergers victim.
I'll just go and have an argument with my neighbour about drill bits and screwdrivers. Did you know that the flat headed one can also act upon cross-headed screws, but not the other way around? I find the cross-headed one to give me more control and be more effective at the job in hand.
Did you know I can also open tins of paint with a screwdriver? I can make holes in the wall with a drill bit, also with a screwdriver although that is more difficult and the drill bit tends to make neater holes and work more efficiently.
As for garbage collection, well, there isn't any - I have to make sure I clean up after myself because DIY can get messy and eventually I'll run out of resources as the floor around me becomes unbearably cluttered and I can't find anything. Maybe I can get a garbage collector, in the form of an assistant to do my clearing up for me but be careful not to throw out something prematurely that I might need later.
I think my point is obvious but I'll get trolled and flamed anyway. Why is it always programmers who have this ridiculous, petty rivalry? I used to see it at two separate workplaces too, always among the developers. Never the sysadmins, ops, HR, accounts, nowhere else.
C++ is as dead as Princess Diana in some areas, as large as life in others. No need to get upset.
How much life is left in C++ ?
Quote: Original post by Katie
<snippity snip>
Now you're just lashing out. Absolutely pathetic, did they teach you this at Warwick or was it some drivel you picked up as you went along?
Obviously programming languages are nothing like tools. They are more like religiously held political beliefs. Which everyone holds. I vote/worship/lean/spin the same as Valderman. Although I do think it works both ways. Right tool for the job And for your mind.
I'm sure if you got a bunch of contractors and told them they had to build a building but could only use 1-2 tools, but they could build other tools with those tools, there would be a lot of debate in their community as well.
A programming language is a tool true, but it's a really important choice that doesn't really equate to a screwdriver when you're still allowed to use a whole chest of other tools.
A programming language is a tool true, but it's a really important choice that doesn't really equate to a screwdriver when you're still allowed to use a whole chest of other tools.
Quote: Original post by ValdermanHow do you propose I do the following with templates? I don't think we mean the same thing when we're talking about pattern matching.find k' (Tree k v l r) | k > k' = find k' r | k < k' = find k' l | otherwise = Just vfind _ Nil = NothingaddOneIfItsThereOtherwiseZero k t = case find k t of Just x -> x + 1 _ -> 0
Ah, no, that particular syntax can't quite be expressed with templates. You can make the template automatically match any type with, say, k, v, l, r members, but you can't catch the base case; giving it a type without any of those members will result in a compile time error.
Quote: Tail calls aren't an optimization but a language feature, and are therefore useless unless the language guarantees that they will compile into loops.
Tail calls are a pure optimization. It makes no difference to the programmer if his final recursive call is converted to a loop or not except efficiency and stack space. A recursion that is optimized to a loop in Scheme will still produce the same output in Common Lisp, only slower.
Quote: So basically, every Turing complete language has every feature because you can implement it yourself?
Not at all. If you have to invoke an additional layer of indirection to produce the feature I'd say it's not supported by the language. The reason I say that is because at that point you could design a new language and build an interpreter for that language in the original language and achieve pretty much whatever features you want.
But that's not the case with garbage collection in C++. C++ offers everything you need to implement garbing directly in your programs, without any additional abstractions. All you need to do, very simply speaking, is specify a heap via placement new and provide an algorithm for when and how things should be freed and allocated on that heap. C++ doesn't come with a finished garber, but it also doesn't come with an A* algorithm; it doesn't mean such things are not supported.
Contrast garbing with something like reflection. Garbing in C++ requires no jumping through hoops; just placement new and specifying a behaviour for allocations and deallocations on your own heap. But I know of no way to get reflection in C++ without building an entire type system on top of what already exists in the language and then using that instead of C++'s native system. This makes me consider C++ a language which does not support reflection.
Quote: That's nice, I didn't know about that. Is said type inference guaranteed to always infer the most general type?
I don't know; I haven't dug deeply into C++0x yet.
Quote: You're completely missing the point though; languages are different, that's just the way it is. If a language had every single feature there is, it'd be a useless hodgepodge where you couldn't even use the entire language if you wanted to write code that anyone could read and understand.
I wasn't actually responding to or making any particular point. I just wanted to correct what I saw as a few misunderstandings of C++.
-------------Please rate this post if it was useful.
Quote: Original post by HnefiI disagree. If tail calls are guaranteed to be optimized you can write your your entire program in a recursive style, something which is not possible otherwise since you'd run out of stack in no time. See Guido van Rossum's rants about why he absolutely does not want tail calls in Python for more information. For better or for worse, having tail calls in a language significantly affects how you write code in it. (Or at least how you can write code in it.)
Ah, no, that particular syntax can't quite be expressed with templates. You can make the template automatically match any type with, say, k, v, l, r members, but you can't catch the base case; giving it a type without any of those members will result in a compile time error.Quote: Tail calls aren't an optimization but a language feature, and are therefore useless unless the language guarantees that they will compile into loops.
Tail calls are a pure optimization. It makes no difference to the programmer if his final recursive call is converted to a loop or not except efficiency and stack space. A recursion that is optimized to a loop in Scheme will still produce the same output in Common Lisp, only slower.
Some parts of C++ are alive and some are just relics from the past. That's why C++0x is on the way..
Quote: Original post by way2lazy2care
I'm sure if you got a bunch of contractors and told them they had to build a building but could only use 1-2 tools, but they could build other tools with those tools, there would be a lot of debate in their community as well.
A programming language is a tool true, but it's a really important choice that doesn't really equate to a screwdriver when you're still allowed to use a whole chest of other tools.
Any respectable langauge has a Foreign Language Interface of some type, probably several.
Java picked up pretty fast after offering a pretty straight forward way to have "package based development".
We have XML, and other bits of alphabet soup all for the purposes of effectively communicating, usually in the same language but just as effective between languages.
Socket development/abstraction does a very good job of allowing any language to communicate with any other without ever knowing such.
Database software is frequently hit by dozens of different languages a day. Any corporate database will end up being hit by everything from Access to COBOL and then all then way to Java.
---------
The only thing keeping people from using any tool they want are organization constraints. After all it's such a pain having your whole team trained in a dozen languages and having to test everything on a dozen platforms.
"You should try out some of these "limiting" languages some time; who knows, it just might make you a better C++ programmer"
You know how I formed my opinion of them, right?
"I find your strong opinion about something which you don't know the first thing about amusing."
Guess you don't. Well, I have actually developed commercial software in C#, Java, C++, C, assembly (goodness help me), Pascal, several Object Pascals, VB, a bunch of domain languages (some of which I created), Perl, Lua, TCL and probably a bunch of others I've already forgotten. Oh yeah, and small amounts of Lisp, although if I'm honest about it, I've never really got the hang of Lisp.
So I already did, basically. But ta for the advice, I know you mean well.
"was it some drivel you picked up as you went along?"
Hey pot, meet kettle.
You know how I formed my opinion of them, right?
"I find your strong opinion about something which you don't know the first thing about amusing."
Guess you don't. Well, I have actually developed commercial software in C#, Java, C++, C, assembly (goodness help me), Pascal, several Object Pascals, VB, a bunch of domain languages (some of which I created), Perl, Lua, TCL and probably a bunch of others I've already forgotten. Oh yeah, and small amounts of Lisp, although if I'm honest about it, I've never really got the hang of Lisp.
So I already did, basically. But ta for the advice, I know you mean well.
"was it some drivel you picked up as you went along?"
Hey pot, meet kettle.
Quote: Original post by ukdeveloper
Why is it always programmers who have this ridiculous, petty rivalry? I used to see it at two separate workplaces too, always among the developers. Never the sysadmins, ops, HR, accounts, nowhere else.
Really? I've never seen this in a professional context.
I mean, yeah developers will have their own favourite languages, but I've never seen programmers that actually program for a living go for this whole holy war thing. The only time I've come across this anywhere other than the internet, was university.
I've also not seen very many game programmers that work with C++ on a day to day basis, and still use it for their home projects. The ones that do, generally do so because it's the only option on the platform they're working on (homebrew console development), or because they have masses and masses of code built up for personal projects, that is written in C++. C# seems to be the language of choice for most, with some using languages like Python.
Personally, I'm a massive fan of C#. My only gripe with it, is the lack of duck typing in generics. I can live with it though.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement