Give me deterministic behavior over faster GC any day.
The thing is, there really is no middle ground. You need to use a mark-and-sweep algorithm to avoid leaking cyclic references, which means you have no way of determining if an object should or should not be destroyed if it leaves scope. The good news is that a modern generational garbage collector is optimized toward collecting younger objects, so it's fairly likely that your resource objects will be collected fairly soon after you're done using them..NET provides a modicum of determinism with a bunch of syntactic sugar for a particular interface (IDisposable). It's not RAII, but C++ doesn't have heap compaction which is far more inconvenient than having to type out a finally block every time you open a file.
It's the whole point of closed-source software, so that you *never* know what's going on with the code and (hopefully) never see it.
The industry rule of thumb for a software developer is about 10 lines of code per hour, on average, over the lifetime of the project. According to Microsoft, Windows XP has about 40 million SLOC.
Without business staff, PMs and SDETs, that's 4 million man-hours. That's 1923 full time man-years. Assuming Microsoft pays their SDEs $80,000 on average, those 40 million lines of code cost them $153,840,000.
Why can't the point of closed-source be to put food on the table? If all software is free, what are software developers going to do for a living? Buy an air nailer and become a roofer?
For "Beginner Friendly", I'll agree that the Imperial "Tools" are da bomb. Not being a beginner, however, "Beginner Friendly" is not what I want.
Heh. "Tools."
Every time you deliberately misspell a word with a dollar sign it means your IQ score is 1 point lower. I don't mean it subjectively; I mean, literally, it is an empirical indication of your intelligence approaching the point at which your central nervous system is no longer able to sustain respiration without mechanical intervention.
I know you might find this concept difficult to imagine but it is, in fact, possible to engage your peers in discourse about a Microsoft without making thousands of brazen observations of the fact that Microsoft asks for money in exchange for goods and/or services. I'm sure you sat there in your office chair, drumming your fingers together or stroking your neckbeard, positive that you were being exceptionally witty and creative by replacing the letter 'S' with a similar-looking dollar sign, but you weren't, it's infantile and it hasn't been funny, witty or poignant in about 8 years.
Emacs is a mature, highly polished, extremely flexible/customizable IDE and the product of twenty-five years of user-driven development. It was probably the _first_ IDE.
Emacs began development in 1976 as a set of macros designed to make TECO usable. The Free Software Emacs did not exist until RMS picked it off of his foot and ate it in front of a crowded amphitheater in 1984, which also saw the addition of Lisp as an extension language. All of the features that allow you to call Emacs an IDE without also being a liar are due to Emacs extensions.
The earliest real IDE I could think of off the top of my head was PWB/UNIX, which was released at version 1.0 in 1977. This was one year after Richard Stallman began writing TECO macros and about a year before Emacs was different enough to be considered its own editor. PWB/UNIX is the inspiration for Visual C++.
Wikipedia says the first IDE was Dartmouth BASIC, released in 1964.
Refactoring and auto-completion tools are never really going to get to the same level as those for Java and C# because the C++ grammar is undecidable and context-sensitive. You can write a tool like Refactor! which will work for 90% of cases but fail in the other 90%.
And it's not like Microsoft doesn't have the resources to fix the editor: they have many in-house coders who prefer to use emacs (more than they like to admit, in any case).
I demand a citation from a credible source. If they don't like to admit using emacs I fail to see how you were possibly able to come by this information.
KDevelop is about as close as you're going to get. In my opinion, though, people who prefer to use graphical IDEs for C development are very much second-class citizens in the Linux world and none of the tools go very far beyond basic adequacy.
Auto-indentation in every IDE also seems to be deliberately mangled just for the sake of making it different than Visual Studio.
"hmmm, aren't those fat multi-color pens and multi-color typewriter ribbon evidence of prior art?" Only if you somehow have magical ink that changes color depending on the country it is in.
Canada's laws aren't, I think, generally more enlightened and less restrictive compared to American law. We have some pretty foreboding hate speech laws in Canada and a significant cross-section of the law is still defined in an unwritten common law; but I suppose if your priorities lie in downloading music, marrying other men or smoking pot we must look like quite the utopia.
The scary part about all of this is the comparison to China and Russia. The copyright laws in those countries are pretty far from lenient, they're just almost entirely unenforced. This whole story is another lie from the people who brought you the rather quaint notion that most film piracy comes from Canadians recording movies with camcorders rather than the reality of film pre-release DVDs getting leaked from the MPAA.
I don't think you read my post very thoroughly, because I'm pretty sure I didn't say what you clearly think I said.
My argument is that learning to implement a sorting algorithm will not impart special knowledge beyond the experience that can be attained by completing virtually any other task. Like I said above, I see absolutely zero value in the ability to recite a particular solution from memory.
By restating my argument from memory I have successfully completed a similar task to the one you are challenging your contemporaries with. Literally anybody could read the Wikipedia article about the Bubble Sort and write their own implementation based on it. In a similar vein, I am reiterating my previous point. Both the aforementioned hypothetical programmer and I could have accomplished the same task by copying and pasting earlier efforts.
I'll agree with you for most of what you said, but I disagree that programmers should learn to implement sorting algorithms. Unless they're doing serious research on the subject it's doubtful that Joe Programmer is going to be whipping up a sorting algorithm that's better than the one provided.
What you're suggesting here isn't like a mathematician not understanding calculus. It's more like a mathematician only having pi memorized to the 8th decimal. I see zero value in learning to parrot quicksort, especially since the information is easily obtained and the implementation you use is almost certainly as fast as is possible (assuming you aren't Abrash).
I don't know about you, but when someone asks for a change to one of my apps and I tell them "It's open source, make the change yourself," what I'm really saying is "**** off."
If you're business this is only possible:
- Assuming you have the budget for a development team. - And the time to become familiar with the code base before the feature is needed. - And a repository maintainer who is willing to accept your changes, or an even bigger team and budget to track security and bug fixes from the original developer and incorporate them into your modified code base. - And a silver tongue, so you can convince your investors that it's totally worthwhile to spend their money improving a product that anybody can use for free with absolutely no way to profit directly from the improvements you made to the software.
Or if you're a home user, in which case you probably don't know C, and if you do you're probably too tired from writing C all day to fix someone's code for them.
The ability to make contributions is far from the main benefit of open source software. The main benefit is the fact that someone can't shut it down for selfish reasons. The code is essentially in the public domain. Apache or MySQL will never enter a "vault" like The Lion King or Sleeping Beauty; the Linux kernel will never have its "support period" expire. The real benefit is social, rather than technological.
I'd ask for citations but I'm pretty sure the concept of "burden of proof" is well beyond any anti-fanboy. You don't have to like Microsoft to be cognitively aware that they are capable of designing their own peripherals.
Chinese manufacturers, not Chinese suppliers. There's a difference. Almost no companies run their own manufacturing or fabrication facilities. They're expensive as hell. We're talking in the range of a billion dollars for a facility that can meet international demands. You need to produce an obscene amount of a product just to meet the operating costs of a facility.
Logitech, a company that you can't seriously suggest just "sells some nice stuff", outsources half of their production to third party contractors. What you're basically saying is that Microsoft's hardware division is somehow different because they outsource 100%? How is this right?
Give me deterministic behavior over faster GC any day.
The thing is, there really is no middle ground. You need to use a mark-and-sweep algorithm to avoid leaking cyclic references, which means you have no way of determining if an object should or should not be destroyed if it leaves scope. The good news is that a modern generational garbage collector is optimized toward collecting younger objects, so it's fairly likely that your resource objects will be collected fairly soon after you're done using them. .NET provides a modicum of determinism with a bunch of syntactic sugar for a particular interface (IDisposable). It's not RAII, but C++ doesn't have heap compaction which is far more inconvenient than having to type out a finally block every time you open a file.
It's the whole point of closed-source software, so that you *never* know what's going on with the code and (hopefully) never see it.
The industry rule of thumb for a software developer is about 10 lines of code per hour, on average, over the lifetime of the project. According to Microsoft, Windows XP has about 40 million SLOC.
Without business staff, PMs and SDETs, that's 4 million man-hours. That's 1923 full time man-years. Assuming Microsoft pays their SDEs $80,000 on average, those 40 million lines of code cost them $153,840,000.
Why can't the point of closed-source be to put food on the table? If all software is free, what are software developers going to do for a living? Buy an air nailer and become a roofer?
For "Beginner Friendly", I'll agree that the Imperial "Tools" are da bomb. Not being a beginner, however, "Beginner Friendly" is not what I want.
Heh. "Tools."
Every time you deliberately misspell a word with a dollar sign it means your IQ score is 1 point lower. I don't mean it subjectively; I mean, literally, it is an empirical indication of your intelligence approaching the point at which your central nervous system is no longer able to sustain respiration without mechanical intervention.
I know you might find this concept difficult to imagine but it is, in fact, possible to engage your peers in discourse about a Microsoft without making thousands of brazen observations of the fact that Microsoft asks for money in exchange for goods and/or services. I'm sure you sat there in your office chair, drumming your fingers together or stroking your neckbeard, positive that you were being exceptionally witty and creative by replacing the letter 'S' with a similar-looking dollar sign, but you weren't, it's infantile and it hasn't been funny, witty or poignant in about 8 years.
Emacs is a mature, highly polished, extremely flexible/customizable IDE and the product of twenty-five years of user-driven development. It was probably the _first_ IDE.
Emacs began development in 1976 as a set of macros designed to make TECO usable. The Free Software Emacs did not exist until RMS picked it off of his foot and ate it in front of a crowded amphitheater in 1984, which also saw the addition of Lisp as an extension language. All of the features that allow you to call Emacs an IDE without also being a liar are due to Emacs extensions.
The earliest real IDE I could think of off the top of my head was PWB/UNIX, which was released at version 1.0 in 1977. This was one year after Richard Stallman began writing TECO macros and about a year before Emacs was different enough to be considered its own editor. PWB/UNIX is the inspiration for Visual C++.
Wikipedia says the first IDE was Dartmouth BASIC, released in 1964.
Just to clarify, I'm talking about editor windows not the tool windows.
So again, what isn't supported?/p>
I use 2008 TS. Are you using some sort of extension? Because Visual Studio *definitely* has no ability to pull tabs out of the main window.
Refactoring and auto-completion tools are never really going to get to the same level as those for Java and C# because the C++ grammar is undecidable and context-sensitive. You can write a tool like Refactor! which will work for 90% of cases but fail in the other 90%.
And it's not like Microsoft doesn't have the resources to fix the editor: they have many in-house coders who prefer to use emacs (more than they like to admit, in any case).
I demand a citation from a credible source. If they don't like to admit using emacs I fail to see how you were possibly able to come by this information.
He was joking.
KDevelop is about as close as you're going to get. In my opinion, though, people who prefer to use graphical IDEs for C development are very much second-class citizens in the Linux world and none of the tools go very far beyond basic adequacy.
Auto-indentation in every IDE also seems to be deliberately mangled just for the sake of making it different than Visual Studio.
Yeah, but my monitors aren't all the same size. The ideal solution would be a way to detach tabs so you end up with a view like XCode.
I use Visual Studio exclusively when developing in Windows. My only complaint is the lack of multi-monitor support but that's coming in 2010.
Why would a drunk man try to eat wine with a fork? Shouldn't he be fairly good at drinking wine correctly?
"hmmm, aren't those fat multi-color pens and multi-color typewriter ribbon evidence of prior art?"
Only if you somehow have magical ink that changes color depending on the country it is in.
Canada's laws aren't, I think, generally more enlightened and less restrictive compared to American law. We have some pretty foreboding hate speech laws in Canada and a significant cross-section of the law is still defined in an unwritten common law; but I suppose if your priorities lie in downloading music, marrying other men or smoking pot we must look like quite the utopia.
The scary part about all of this is the comparison to China and Russia. The copyright laws in those countries are pretty far from lenient, they're just almost entirely unenforced. This whole story is another lie from the people who brought you the rather quaint notion that most film piracy comes from Canadians recording movies with camcorders rather than the reality of film pre-release DVDs getting leaked from the MPAA.
I don't think you read my post very thoroughly, because I'm pretty sure I didn't say what you clearly think I said.
My argument is that learning to implement a sorting algorithm will not impart special knowledge beyond the experience that can be attained by completing virtually any other task. Like I said above, I see absolutely zero value in the ability to recite a particular solution from memory.
By restating my argument from memory I have successfully completed a similar task to the one you are challenging your contemporaries with. Literally anybody could read the Wikipedia article about the Bubble Sort and write their own implementation based on it. In a similar vein, I am reiterating my previous point. Both the aforementioned hypothetical programmer and I could have accomplished the same task by copying and pasting earlier efforts.
I'll agree with you for most of what you said, but I disagree that programmers should learn to implement sorting algorithms. Unless they're doing serious research on the subject it's doubtful that Joe Programmer is going to be whipping up a sorting algorithm that's better than the one provided.
What you're suggesting here isn't like a mathematician not understanding calculus. It's more like a mathematician only having pi memorized to the 8th decimal. I see zero value in learning to parrot quicksort, especially since the information is easily obtained and the implementation you use is almost certainly as fast as is possible (assuming you aren't Abrash).
I don't know about you, but when someone asks for a change to one of my apps and I tell them "It's open source, make the change yourself," what I'm really saying is "**** off."
If you're business this is only possible:
- Assuming you have the budget for a development team.
- And the time to become familiar with the code base before the feature is needed.
- And a repository maintainer who is willing to accept your changes, or an even bigger team and budget to track security and bug fixes from the original developer and incorporate them into your modified code base.
- And a silver tongue, so you can convince your investors that it's totally worthwhile to spend their money improving a product that anybody can use for free with absolutely no way to profit directly from the improvements you made to the software.
Or if you're a home user, in which case you probably don't know C, and if you do you're probably too tired from writing C all day to fix someone's code for them.
The ability to make contributions is far from the main benefit of open source software. The main benefit is the fact that someone can't shut it down for selfish reasons. The code is essentially in the public domain. Apache or MySQL will never enter a "vault" like The Lion King or Sleeping Beauty; the Linux kernel will never have its "support period" expire. The real benefit is social, rather than technological.
Poor babby CJ. If you stop putting words in my mouth maybe I'll let you program an HTML for me.
You seriously think this crap?
Okay, I'll toss in two more idiotic terms:
web "developer"
computer janitor
Hmm, yes, companies do tend to employ people to do work possibly because a company is an abstract concept and not capable of independent action.
By god I think you may have just invented a new school of economics.
Talk about fortuitous! Channel9 just posted an interview with the Microsoft hardware industrial design team: http://channel9.msdn.com/posts/PDCNews/Meet-the-Industrial-Design-Team/
I'd ask for citations but I'm pretty sure the concept of "burden of proof" is well beyond any anti-fanboy. You don't have to like Microsoft to be cognitively aware that they are capable of designing their own peripherals.
Haha, what the hell are you talking about? IntelliPoint (Microsoft's mouse driver suite) is one of their major products.
Chinese manufacturers, not Chinese suppliers. There's a difference. Almost no companies run their own manufacturing or fabrication facilities. They're expensive as hell. We're talking in the range of a billion dollars for a facility that can meet international demands. You need to produce an obscene amount of a product just to meet the operating costs of a facility.
Logitech, a company that you can't seriously suggest just "sells some nice stuff", outsources half of their production to third party contractors. What you're basically saying is that Microsoft's hardware division is somehow different because they outsource 100%? How is this right?
Yes, they do make peripherals. No, they aren't re-branded.