The difficulty of multithreaded programming is not to use threads, it's how to do it efficiently.
This has seemed true in my experience, as well. Further: multithreaded programming inherently introduces an extra set of gotchas, such as race conditions.
Which isn't to say that a programmer can't correctly navigate around the problems of multithread/core programming, or that there aren't cases in which doing so is very rewarding -- but I tend to think that, for the foreseeable future, doing it right for non-trivial problems will remain something of an esoteric skill, like knowing when to write key bits of a program in assembler to achieve higher performance than your compiler will give you. In other words, fantastically useful and powerful in the right case, but not something most programmers will need to or maybe even should apply.
Amdahl's Law also tells us tells us that the amount that parallelization can speed something up is ultimately limited by the parts that can't be done in parallel.
Don't forget that it also used to be self-evident that white people can't marry black people, that a man can have multiple wives, and that a man can and should beat his wife to keep her in line.
Society and its mores have, and continue to, evolve.
Re:Hey, remember when Ender's Game was good?
on
Ender in Exile
·
· Score: 1
"Regardless of law, marriage has only one definition, and any government that attempts to change it is my mortal enemy."
Bleh.
You'd think the Mormons, if anyone, would realize that marriage has been defined more than one way.
Either that or he's saying that the current US government is his mortal enemy for taking polygamy away some years ago.
Re:Hey, remember when Ender's Game was good?
on
Ender in Exile
·
· Score: 5, Insightful
His position is simple: the government does not get to redefine "marriage" any more than it gets to redefine "day" and "night."
And yet, the definition of marriage has certainly changed over the years. Without dogpiling on the Mormons more, feel free to read the Bible/Torah/Koran and count how many wives people have. Next, count how many wives men in America are allowed now.
Or, look back to less than a hundred years ago when white people in America couldn't marry black people.
Every time the issue has been brought to a vote, the overwhelming majority of Americans do not support gay marriage.
Discounting your 'overwhelming majority' for the moment...
Sixty years ago, the 'overwhelming majority' of Americans did not support interracial marriage. The courts, correctly, intervened to prevent the tyranny of the majority.
In fifty years, kids will be taught in school that gay people didn't used to be able to marry, and they're going to wonder how anyone could deny such an obvious human right the same way we wonder how anyone could have ever opposed interracial marriage, women's suffrage, or the end of slavery. The future is always on its way and it's not on your side.
You don't need a web browser to transfer files from the internet, even via http.
You're right, in that you and I don't.
90+% of the people who own computers, though? To them, a computer without a working web browser is as broken and unacceptable as a TV without a remote.
Here's a point I haven't seen raised yet: whatever you decide, document the hell out of the why in your code.
Maybe you do some analysis and figure out that Hibernate doesn't work for what you have in mind. You go your own way. If the why for that isn't very explicit in your code, the developer who has to maintain your code two years later will likely look at it and think, "The person who wrote this was a dumbass. They didn't know enough to use Hibernate for this!" Or they didn't understand Hibernate well enough to know how to do it the 'right' way. (And even if you do your research, it's possible this is true.) If you make clear notes of why you made the decisions they did, the person who has to maintain your code down the line will be considerably less inclined to want to murder you.
This is especially important if that person is a psychopath, or you, or both.
Perhaps a language which changes so drastically and so quickly should be avoided.
Eh, not really. New editions of.NET, for the most part, only add options and functionality; they don't break existing code. If you don't want to use generics, WCF, LINQ, etc. as they're introduced, don't -- they just present what amount to easier/cleaner options to achieve the same goals, in some cases. Instead of iterating through a collection and picking out the objects that match your chosen criteria, maybe you write a LINQ query to do it instead. The latter is less code and probably a lot easier on whoever has to maintain your code down the line (it's easier to read/understand/modify), but the former still works.
I've spent a lot more time dealing with fallout from PHP 4 code that isn't valid PHP 5 code (for example) than I ever have with old-version.NET code -- and I spend a lot more time working with.NET code.
Beyond that... no,.NET is not the right tool for every task. It is not necessarily what you want to write your next OS in. It is a very good choice for most of the business software development I've seen in my career, however.
The D's had two years control of Congress to withdraw from the war, but did not, so I hold both parties equally to blame for our continued presence in a foreign power.
If you consider a majority, but not enough of one to surmount a presidential veto or overcome a filibuster the power to withdraw from the war, that would be true.
It's not all like that. I've been a programmer in the video game industry for 11+ years now. The simple fact of the matter is this: if you've got a proven track record as a developer, you'll command a good salary and be in very high demand.
If the people I know in the industry are any indication, you're both right.
A developer with several solid shipped titles on his resume and good references absolutely can make a high salary and be in very high demand.
However, that's not the experience of an entry level developer, or someone relatively new to the industry, because they are seen (somewhat correctly) as very replaceable.
I have no problem with learning how to use Excel/Word/PowerPoint to its fullest, but to achieve university points for demonstrating how to point and click is absurd.
I hate to break it to you, but Excel/Word/PowerPoint are exceedingly useful skills in a lot of workplaces and for a lot of careers. Much more so than programming for a lot of those careers.
(And I say this as a programmer with a computer science degree.)
I mean, if you want take the angle that universities should be teaching 'higher learning' and not attempting to prepare students for the workplace, I'd agree with that up to a point... but in terms of workplace usefulness, I'd bet you a lot of the people you went to school with and who got taught that Excel/Word/PowerPoint stuff use those skills in their career as much or more than anything else they learned as undergrads.
Research which companies are recruiting at your and other area colleges. Not that you necessarily have to go to a college career fair (although it's not a terrible idea), but it's a good way to get a feel for which companies will hire with no experience.
A couple companies in my area are very much of the "hire people straight out of college and try to keep them forever" mindset; it's no coincidence that these companies also do a ton of college recruiting. A company like this may not be where you want to spend your entire career, depending on your aspirations, but it's not a bad way to get started.
With those tools, we build things like Contact management systems, inventory applications, and websites.
We then turn around and sell them to customers. Customers love the price, but then later realize that they must buy a server to run in on, a copy of Windows, a server to run SQL on, a copy of Microsoft SQL Server, licenses, licenses to allow 'anonymous' internet connections, copies of Microsoft Office 2007 to be able to read the reports it spits out in Word 2007 format, etc......and the price balloons by thousands of dollars.
This seems dubious to me.
For example, in the case of SQL Server, an awful lot of end users can be just fine with the free (as in beer) Express version. You don't need Word 2007 to open Word 2007 documents, either.
Beyond that, I'd argue that either:
A) Your company is sticking Microsoft bits (Word, etc.) where they don't really need to go, thus, the fault is yours, or
B) The end user is gaining legitimate value from that integration that probably outweighs what they're paying. For example, if the end users actually need to manipulate or tinker with the data your reports spit out for them, probably being able to do it in a program that they're very used to (Excel) is worth the price.
I agree that as developers we should strive to write good, self-describing code that doesn't need comments.
Yet I still tend to write a lot of comments.
Well-written code can convey most of the how of what you're doing, but it rarely can convey the why -- and that's important too.
Suppose I look at code someone else (or even myself) wrote two years ago. I see what I think is an error in how the logic applies one of the business rules.
Is it an error?
Or was it right, and the business rule has changed?
Or is it still right, and there's some reason for the way it is that I don't understand?
Did someone in management mandate a change that runs contrary to the last version of the design docs? Was a more obvious solution tried first, but found to fail under testing?
All of these things are useful to know, and as much as I'm in favor of self-describing code, it rarely can communicate them.
The hidden gotcha with the hybrid (although I'm still considering one for my next car) is that their batteries are expensive and typically have to be replaced not long after the manufacturer's warranty gives out.
I'm not saying you can't still come out ahead of a less efficient car in the long run, but having to spring for a several thousand dollar battery at some point is something to consider.
I mean seriously, how is the $400m MEGADRAW going to affect your life compared to $10m? You'd be stupid to be holding out for such a huge amount.
Well, not necessarily:
Typically if you want the cash lump sum instead of an annuity, you'd get about 40% of the 'jackpot' amount. So the 10 million is already 4.
Taxes will take about half. Now it's 2.
2 million is a nice chunk of money, but it's probably not enough to quit your job on. I could spend most of that on a nice house in my neighborhood without even buying anything all that ridiculous.
On the other hand, 400 million -> 80 million after taxes / instant payout, and now that is enough to quit your job and buy pretty much whatever you want.
The difficulty of multithreaded programming is not to use threads, it's how to do it efficiently.
This has seemed true in my experience, as well. Further: multithreaded programming inherently introduces an extra set of gotchas, such as race conditions.
Which isn't to say that a programmer can't correctly navigate around the problems of multithread/core programming, or that there aren't cases in which doing so is very rewarding -- but I tend to think that, for the foreseeable future, doing it right for non-trivial problems will remain something of an esoteric skill, like knowing when to write key bits of a program in assembler to achieve higher performance than your compiler will give you. In other words, fantastically useful and powerful in the right case, but not something most programmers will need to or maybe even should apply.
Question is, how realistic is that?
Amdahl's Law also tells us tells us that the amount that parallelization can speed something up is ultimately limited by the parts that can't be done in parallel.
No, this should simply be self-evident.
Don't forget that it also used to be self-evident that white people can't marry black people, that a man can have multiple wives, and that a man can and should beat his wife to keep her in line.
Society and its mores have, and continue to, evolve.
"Regardless of law, marriage has only one definition, and any government that attempts to change it is my mortal enemy."
Bleh.
You'd think the Mormons, if anyone, would realize that marriage has been defined more than one way.
Either that or he's saying that the current US government is his mortal enemy for taking polygamy away some years ago.
His position is simple: the government does not get to redefine "marriage" any more than it gets to redefine "day" and "night."
And yet, the definition of marriage has certainly changed over the years. Without dogpiling on the Mormons more, feel free to read the Bible/Torah/Koran and count how many wives people have. Next, count how many wives men in America are allowed now.
Or, look back to less than a hundred years ago when white people in America couldn't marry black people.
Every time the issue has been brought to a vote, the overwhelming majority of Americans do not support gay marriage.
Discounting your 'overwhelming majority' for the moment...
Sixty years ago, the 'overwhelming majority' of Americans did not support interracial marriage. The courts, correctly, intervened to prevent the tyranny of the majority.
In fifty years, kids will be taught in school that gay people didn't used to be able to marry, and they're going to wonder how anyone could deny such an obvious human right the same way we wonder how anyone could have ever opposed interracial marriage, women's suffrage, or the end of slavery. The future is always on its way and it's not on your side.
You don't need a web browser to transfer files from the internet, even via http.
You're right, in that you and I don't.
90+% of the people who own computers, though? To them, a computer without a working web browser is as broken and unacceptable as a TV without a remote.
Here's a point I haven't seen raised yet: whatever you decide, document the hell out of the why in your code.
Maybe you do some analysis and figure out that Hibernate doesn't work for what you have in mind. You go your own way. If the why for that isn't very explicit in your code, the developer who has to maintain your code two years later will likely look at it and think, "The person who wrote this was a dumbass. They didn't know enough to use Hibernate for this!" Or they didn't understand Hibernate well enough to know how to do it the 'right' way. (And even if you do your research, it's possible this is true.) If you make clear notes of why you made the decisions they did, the person who has to maintain your code down the line will be considerably less inclined to want to murder you.
This is especially important if that person is a psychopath, or you, or both.
Perhaps a language which changes so drastically and so quickly should be avoided.
Eh, not really. New editions of .NET, for the most part, only add options and functionality; they don't break existing code. If you don't want to use generics, WCF, LINQ, etc. as they're introduced, don't -- they just present what amount to easier/cleaner options to achieve the same goals, in some cases. Instead of iterating through a collection and picking out the objects that match your chosen criteria, maybe you write a LINQ query to do it instead. The latter is less code and probably a lot easier on whoever has to maintain your code down the line (it's easier to read/understand/modify), but the former still works.
I've spent a lot more time dealing with fallout from PHP 4 code that isn't valid PHP 5 code (for example) than I ever have with old-version .NET code -- and I spend a lot more time working with .NET code.
As others have mentioned, they are.
Beyond that... no, .NET is not the right tool for every task. It is not necessarily what you want to write your next OS in. It is a very good choice for most of the business software development I've seen in my career, however.
The D's had two years control of Congress to withdraw from the war, but did not, so I hold both parties equally to blame for our continued presence in a foreign power.
If you consider a majority, but not enough of one to surmount a presidential veto or overcome a filibuster the power to withdraw from the war, that would be true.
It really isn't, though.
How do you add more rows to a table in Office 2003? used to you could right click on the table.
I thought you could do that with the right click menu in Office 03, but I've got '07 on this machine now so I can't check that easily.
(Right clicking on the table -> insert -> insert rows above or insert rows below works there, for what it's worth.)
It's not all like that. I've been a programmer in the video game industry for 11+ years now. The simple fact of the matter is this: if you've got a proven track record as a developer, you'll command a good salary and be in very high demand.
If the people I know in the industry are any indication, you're both right.
A developer with several solid shipped titles on his resume and good references absolutely can make a high salary and be in very high demand.
However, that's not the experience of an entry level developer, or someone relatively new to the industry, because they are seen (somewhat correctly) as very replaceable.
I have no problem with learning how to use Excel/Word/PowerPoint to its fullest, but to achieve university points for demonstrating how to point and click is absurd.
I hate to break it to you, but Excel/Word/PowerPoint are exceedingly useful skills in a lot of workplaces and for a lot of careers. Much more so than programming for a lot of those careers.
(And I say this as a programmer with a computer science degree.)
I mean, if you want take the angle that universities should be teaching 'higher learning' and not attempting to prepare students for the workplace, I'd agree with that up to a point... but in terms of workplace usefulness, I'd bet you a lot of the people you went to school with and who got taught that Excel/Word/PowerPoint stuff use those skills in their career as much or more than anything else they learned as undergrads.
Unless you are a veteran user of the 97-2003 line who used the suite for basic stuff.
I am.
Then OpenOffice.org looks far more attractive.
It doesn't.
Obviously your and other peoples' mileage does vary.
You've never been to a Microsoft seminar, have you?
I have, and that claim is new to me.
Research which companies are recruiting at your and other area colleges. Not that you necessarily have to go to a college career fair (although it's not a terrible idea), but it's a good way to get a feel for which companies will hire with no experience.
A couple companies in my area are very much of the "hire people straight out of college and try to keep them forever" mindset; it's no coincidence that these companies also do a ton of college recruiting. A company like this may not be where you want to spend your entire career, depending on your aspirations, but it's not a bad way to get started.
With those tools, we build things like Contact management systems, inventory applications, and websites.
We then turn around and sell them to customers. Customers love the price, but then later realize that they must buy a server to run in on, a copy of Windows, a server to run SQL on, a copy of Microsoft SQL Server, licenses, licenses to allow 'anonymous' internet connections, copies of Microsoft Office 2007 to be able to read the reports it spits out in Word 2007 format, etc... ...and the price balloons by thousands of dollars.
This seems dubious to me.
For example, in the case of SQL Server, an awful lot of end users can be just fine with the free (as in beer) Express version. You don't need Word 2007 to open Word 2007 documents, either.
Beyond that, I'd argue that either:
A) Your company is sticking Microsoft bits (Word, etc.) where they don't really need to go, thus, the fault is yours, or
B) The end user is gaining legitimate value from that integration that probably outweighs what they're paying. For example, if the end users actually need to manipulate or tinker with the data your reports spit out for them, probably being able to do it in a program that they're very used to (Excel) is worth the price.
We want officially and native supported Linux version of their games, wine doesn't count as native.
And I want a stableful of magic ponies, and you know what? We're currently equally likely to get what we want.
OMGPonies!
Some American-based MUDs have had a similar payment model for at least 10 and probably more like 15 years.
An Eye for an Eye will make the whole world blind - Gandhi
I feel confident that Gandhi would have also hated spammers.
I agree that as developers we should strive to write good, self-describing code that doesn't need comments.
Yet I still tend to write a lot of comments.
Well-written code can convey most of the how of what you're doing, but it rarely can convey the why -- and that's important too.
Suppose I look at code someone else (or even myself) wrote two years ago. I see what I think is an error in how the logic applies one of the business rules.
Is it an error?
Or was it right, and the business rule has changed?
Or is it still right, and there's some reason for the way it is that I don't understand?
Did someone in management mandate a change that runs contrary to the last version of the design docs? Was a more obvious solution tried first, but found to fail under testing?
All of these things are useful to know, and as much as I'm in favor of self-describing code, it rarely can communicate them.
The hidden gotcha with the hybrid (although I'm still considering one for my next car) is that their batteries are expensive and typically have to be replaced not long after the manufacturer's warranty gives out.
I'm not saying you can't still come out ahead of a less efficient car in the long run, but having to spring for a several thousand dollar battery at some point is something to consider.
I've found this to be true also.
It's completely stupid, but companies of any size generally are.
And yet, by and large, people still aren't choosing that freedom.
For everyone who's running Open Office, I bet there's a dozen pirated copies of Office.
I mean seriously, how is the $400m MEGADRAW going to affect your life compared to $10m? You'd be stupid to be holding out for such a huge amount.
Well, not necessarily:
Typically if you want the cash lump sum instead of an annuity, you'd get about 40% of the 'jackpot' amount. So the 10 million is already 4.
Taxes will take about half. Now it's 2.
2 million is a nice chunk of money, but it's probably not enough to quit your job on. I could spend most of that on a nice house in my neighborhood without even buying anything all that ridiculous.
On the other hand, 400 million -> 80 million after taxes / instant payout, and now that is enough to quit your job and buy pretty much whatever you want.