That and the 6-figure salary are the only things I envy in my boss's position. He's viewed as important enough that he can bring his laptop to meetings and not pay any attention and get away with it.
But that doesn't address the problem -- that meetings are simply a battle of wills and personalities (versus superiority of ideas) -- it only delays the problem.
Usually, the strongest personalities 'win' at these types of meetings where few challenge contrasting ideas with their own.
You nailed it with that. It's not so much fear of being chastised or ridiculed, as being shouted down. When the same egomaniacal blowhards make a federal case over any little thing that deviates from their own way, they get their way every time, because the rest of us are just tired.
Ya know, for an online community where almost everyone wishes Windows would just go away, there are sure an awful lot of articles here picking at MS for every little thing that they do. It's like we don't care a whit about Vista, practically no one here's going to install it, and yet we want to give it the anal exam and scrutinize every nook and cranny.
Since when does "one blogger"'s view qualify as "news"?
Simple: When it's negative of "Micro$oft". Why does Fox News serve up what it does? Why CNN serve up the kind of thing that it does? It's called know thy audience. Every news outlet probably would love to expand beyond their core, narrow-minded, boringly predictable constituency. But when it's all you've got, you've got to make sure you cater to them and hang on to what you have. Unfortunately it gets to a point of no return as the diversity is driven away, so a network or web site has to resign themself to being content with a steady, albeit stagnant, following.
How is a Slashdot neo-Luddite different from a regular Luddite?
It sounds slightly worse. First of all, more words adds impact. Compare "you dummy" vs. "you stupid big fat dummy". Secondly, if you're really stuck with a word that's already become commonplace, you can make it sound fresh again by prefixing with "neo-". For example, calling someone a "conservative" doesn't by itself carry sufficient negative connotation to be effective as an epithet, so people use "neocon". There's also "arch-", so if "neo-Luddite" ever becomes overused, one can always switch to "arch-Luddite".:)
The interests of the Roman Church in the 17th century lay in unquestioning acceptance of the official, biblical cosmology, as expanded and bolstered by that of Ptolemy. The compulsory belief, the "safe science," of the day was in a stationary earth...
Unsettling this settled dogma came Galileo and his telescope,...
Seems to me he's a researcher who's noticed that "most software is really made" by C and C++ programmers in a hurry.
That may be so. But that's not what he said. He makes no mention of thinking that programmers are too much in a hurry. He only talks about how he thinks they're all so busy agonizing over speed and efficiency. They aren't. By a long shot. Thus, he's a kook with an axe to grind, either genuinely held, or feigned (towards making his funders feel good about the grant money they've given him). That said, his project looks very worthwhile.
They want things to be fast for some undefined quantity of fast.
No, we want things to be as fast as they can be.
From TFA:
These problems wouldn't arise if programmers were a little less focused on speed and efficiency, which is rarely a problem these days, and more attentive to security issues, says Berger.
He must be criticizing open source programmers only. Because in business, programmers aren't focussed on speed and efficiency, they're focussed on what their bosses are breathing down their necks about: getting it out the door. Berger sounds like a VM-language bigot (or paid ($30K from MS).Net Runtime shill) who doesn't understand how most software is really made, and prefers to believe in caricatures of programmers.
...the wisdom of doing it before having explained the more basic building blocks of any language.
But that's a big picture view, and if that's not against the actual, conceived spirit of Java, it seems to be of little interest to many its practitioners. More than for any other language community I've seen, Java folk are a generally insular bunch, think Java is all anyone really ever needs, and that knowing how things actually work are unimportant, you only need to know how to get something to work in Java.
So for example when I was connecting a web service of mine to that of a Java team's here at work, when I asked them about something in the SOAP message (the interop of web services) from them, they started telling me about Java classes! "No, no, I just want to know what your web service is expecting for this field." "Well, in the Java code we..." "Okay, but I'm not connecting thru a Java interface, I'm using the web services interface." "Um, I can send you the Java code?" "(Arg.)"
Why, because then somebody else's code might look a little different than yours?
Yes. Exactly. You should not program Python the C way, you should program Python the Python way. If you're just fooling around in a language for your own fun, and have no plans to program in it professionally, then fine. But if you're serious about it, and want/need to work with others in a language, then you should assimilate into that language and its developer community's style and idioms, so that you fit in and don't cause needless aggravation.
This is what the reviewer meant by the world needing less books on programming languages (syntax) and more books on how one goes about programming in them (culture).
Um, for std::vector, the "unsafe" syntax is "thing[1]". Definitely traditional and easy-to-read. The safe access is "thing.at(1)". Wow, that's so verbose and hard-to-read!
The designers clearly meant for the "unsafe"^H^H^H^H^H^Hefficient access to be the norm. If you get the length of the vector first, and loop from 0 up to before that, like everyone is used to doing with arrays and using the square brackets operator, it's unnecessary to pay the price for the overhead of bounds-checking the index on every access. at() would be used less often, only in cases like a function that takes an index as input and needs to access a vector with that index. One could then use at() to do the checking and throwing if out of range, rather than writing code one's own code to do this.
Cables at consumer electronics stores are like soda at fast food joints -- ridiculously high markup items, but most people will get them with their purchase anyways. On the bright side, these people keep margins down on the more, er, meaty items, for those who get their complementary goods elsewhere.
Nothing of what you say is wrong. We were instructed to be good stewards of this earth. And I think that suffices to answer the caricatures you felt the need to introduce.
It's just not a black or white issue of being either for "saving the planet" or against it. There will be no saving the planet because God will destroy it. And He has the right, because He created it in the first place. Don't cling to the earth, cling to God. It's a question of priorities. And magnitude of consequences. The #1 goal is to get yourself and others saved. The consequences of this last far longer than any earthly matter.
I'll close with offering a phrasing of a proverb, from a "translation" of ill-repute that I had as a kid, that I found to be very succinct and profound nonetheless: "Remember, no matter how long you live, you'll be dead much longer."
Makes me think that we should stop to think that maybe we don't have all the answers, and maybe we shouldn't necessarily go and fuck with things in such radical ways. Seems like the likelihood of us creating significant harmful effects from deliberate action to alter things is much greater than what we might be causing inadvertently by just going about our business.
The comment of a function should say what the function is supposed to do (unless it's so trivial that the name of the function is description enough),...
But we need to be able to read code where functions are being called, without having to look each one of them up to see what they all do. Comments are not the answer, the function name is. And if what the function performs is too "non-trivial" to fit all in its name, I would suggest that it probably needs to be broken down further. I take high cohesion seriously, and try to stick to the good rule of thumb that a function shouldn't be any longer than a screenful.
Unless you're coding in assembly.
I've never done asm in my professional life, so I'll concede every single one of these points in that domain.
"Why did he use filter coefficients c0...c15?" has nothing to do with any programming language.
I never said any of this had to do with any programming language -- I said it had to do with one's experience with a programming language -- a misinterpretation I tried to correct previously. I don't know what your example question refers to, but a comment is certainly called-for for an algorithm that not everyone will already be typically familiar with. I.e. only need to comment the unexpected.
Comments should have very little (ideally: zero) to do with the programming language used.
Agreed. I think it was a bad placement of a comma that gave you that impression. Distribute "experience with" across "programming" and "a particular language" to get the correct read which was "experience with programming and experience with a particular language".
Ideally, the comments should allow to re-create the functionality in any language, without looking at the actual code.
Ugh. No. For the same reason you don't copy and paste code, but rather modularize it into one place, so the two can't get out of sync, you don't try to duplicate the functionality of the code in comments. Redundant and hazardous.
If I don't understand why the last programmer did something, or what he was trying to accomplish, I'm out of luck.
That typically occurs under one of the following three conditions: 1) The last programmer was not proficient in the language and how its developer community uses it. 2) You're not proficient in the language and how its developer community uses it. 3) The last programmer had to do something unorthodox, and didn't explain it with a comment.
To try to solve 1) or 2) with comments is fruitless and beside the point. The only real solution is knowledgeable, competent programmers writing code in expected ways. An explaining in the rare cases when that's not possible.
Then mix in managers who don't know anything about how software is developed. So they can't lead, because they don't know what leading means in this domain. So they chair endless meetings where no progress is made. You need these non-technical "vision" people, the ones with the technical knowledge a mile wide but an inch deep, who can't get down to deciding on anything specific, and have to constantly flit about from topic to topic, else they run out of something to say. It's not a really good lesson for the real world without these folk 3 months into a 5 month project still saying "we could do this" and "we could do that", trying to impress the customers but doing nothing to get the project frickin' actually started. This gets the point across to students that they will have to get used to not only deriving their own requirements, but also running the project for their leader.
You're either a consultant, or you work at a place like my first employer. I remember speaking with a programmer in another group who mentioned that they didn't have time to test. They had to crank code, release it, and then poor Level 2 Support folk who hadn't even been involved in the project had to fix it.
I see the level of commenting advocated by people as a bell curve plotted over their time and experience with programming, and with a particular language:
The noob to programming cannot yet completely appreciate the need for comments, so uses little to none of them.
The experienced programmer but new to a particular language understands the need for comments, but the language and its common usages has not become second nature yet, so things all over the place appear to not be completely clear and thus require commenting, so comments are used liberally.
But the experienced programmer who is also quite experienced in a given language, knows of and uses in the code the patterns and idioms of that language and its community. And therefore comments little to none, like the amateur hacker.
Which is how you might be I think confusing the two.
The following idea from TFA is what caught my eye: "In a sign of the growing importance of graphics processors, chipmaker Advanced Micro Devices inked a deal in July to acquire ATI for $5.4 billion, and then unveiled plans to develop a new "fusion" chip that combines CPU and GPU functions."
I can see the coming age of multi-core CPU's not necessarily lasting very long now. We don't tend to need a large number of general-purpose CPU's. But a CPU+GPU chip, where the GPU has for example 128 1.35GHz cores (from the Nvidia press release), and with a new generation of compilers written to funnel sections of code marked parallelizable to the GPU portion, and the rest to the CPU, would be tremendous.
Does Intel have any plans to try to acquire Nvidia?
I was thinking basically the same thing. Java has a lot of "protect yourself from yourself" things in it that make it suitable for low to medium-skilled programmers. It is thus a strong attracter of this level of people, and combined with the platform's popularity, such are plentiful. Yet GP is asking for senior-level networking and concurrent programming. Seems like people like that would be much easier to find in the C or C++ camps.
You do need to "pick the right tool for the job", but the choice also needs to include non-technical factors such as the likely level of difficulty in filling the position(s). GP's organization may not be considering this.
That and the 6-figure salary are the only things I envy in my boss's position. He's viewed as important enough that he can bring his laptop to meetings and not pay any attention and get away with it.
But that doesn't address the problem -- that meetings are simply a battle of wills and personalities (versus superiority of ideas) -- it only delays the problem.
Usually, the strongest personalities 'win' at these types of meetings where few challenge contrasting ideas with their own.
You nailed it with that. It's not so much fear of being chastised or ridiculed, as being shouted down. When the same egomaniacal blowhards make a federal case over any little thing that deviates from their own way, they get their way every time, because the rest of us are just tired.
It's for prestige. They are big enough to have gone through enough hard drives to do a study on them, and have smart enough people to do the study.
Ya know, for an online community where almost everyone wishes Windows would just go away, there are sure an awful lot of articles here picking at MS for every little thing that they do. It's like we don't care a whit about Vista, practically no one here's going to install it, and yet we want to give it the anal exam and scrutinize every nook and cranny.
Since when does "one blogger"'s view qualify as "news"?
Simple: When it's negative of "Micro$oft". Why does Fox News serve up what it does? Why CNN serve up the kind of thing that it does? It's called know thy audience. Every news outlet probably would love to expand beyond their core, narrow-minded, boringly predictable constituency. But when it's all you've got, you've got to make sure you cater to them and hang on to what you have. Unfortunately it gets to a point of no return as the diversity is driven away, so a network or web site has to resign themself to being content with a steady, albeit stagnant, following.
How is a Slashdot neo-Luddite different from a regular Luddite?
:)
It sounds slightly worse. First of all, more words adds impact. Compare "you dummy" vs. "you stupid big fat dummy". Secondly, if you're really stuck with a word that's already become commonplace, you can make it sound fresh again by prefixing with "neo-". For example, calling someone a "conservative" doesn't by itself carry sufficient negative connotation to be effective as an epithet, so people use "neocon". There's also "arch-", so if "neo-Luddite" ever becomes overused, one can always switch to "arch-Luddite".
Linky:
Sounds exactly like religion to me.
That may be so. But that's not what he said. He makes no mention of thinking that programmers are too much in a hurry. He only talks about how he thinks they're all so busy agonizing over speed and efficiency. They aren't. By a long shot. Thus, he's a kook with an axe to grind, either genuinely held, or feigned (towards making his funders feel good about the grant money they've given him). That said, his project looks very worthwhile.
No, we want things to be as fast as they can be.
From TFA:He must be criticizing open source programmers only. Because in business, programmers aren't focussed on speed and efficiency, they're focussed on what their bosses are breathing down their necks about: getting it out the door. Berger sounds like a VM-language bigot (or paid ($30K from MS)
...the wisdom of doing it before having explained the more basic building blocks of any language.
But that's a big picture view, and if that's not against the actual, conceived spirit of Java, it seems to be of little interest to many its practitioners. More than for any other language community I've seen, Java folk are a generally insular bunch, think Java is all anyone really ever needs, and that knowing how things actually work are unimportant, you only need to know how to get something to work in Java.
So for example when I was connecting a web service of mine to that of a Java team's here at work, when I asked them about something in the SOAP message (the interop of web services) from them, they started telling me about Java classes!
"No, no, I just want to know what your web service is expecting for this field."
"Well, in the Java code we..."
"Okay, but I'm not connecting thru a Java interface, I'm using the web services interface."
"Um, I can send you the Java code?"
"(Arg.)"
Why, because then somebody else's code might look a little different than yours?
Yes. Exactly. You should not program Python the C way, you should program Python the Python way. If you're just fooling around in a language for your own fun, and have no plans to program in it professionally, then fine. But if you're serious about it, and want/need to work with others in a language, then you should assimilate into that language and its developer community's style and idioms, so that you fit in and don't cause needless aggravation.
This is what the reviewer meant by the world needing less books on programming languages (syntax) and more books on how one goes about programming in them (culture).
The professors' plight: Every year the same material, just a different group of wingdings.
Um, for std::vector, the "unsafe" syntax is "thing[1]". Definitely traditional and easy-to-read. The safe access is "thing.at(1)". Wow, that's so verbose and hard-to-read!
The designers clearly meant for the "unsafe"^H^H^H^H^H^Hefficient access to be the norm. If you get the length of the vector first, and loop from 0 up to before that, like everyone is used to doing with arrays and using the square brackets operator, it's unnecessary to pay the price for the overhead of bounds-checking the index on every access. at() would be used less often, only in cases like a function that takes an index as input and needs to access a vector with that index. One could then use at() to do the checking and throwing if out of range, rather than writing code one's own code to do this.
Cables at consumer electronics stores are like soda at fast food joints -- ridiculously high markup items, but most people will get them with their purchase anyways. On the bright side, these people keep margins down on the more, er, meaty items, for those who get their complementary goods elsewhere.
I'd be frickin' ecstatic if my raises "puttered along" at 11% annually.
Nothing of what you say is wrong. We were instructed to be good stewards of this earth. And I think that suffices to answer the caricatures you felt the need to introduce.
It's just not a black or white issue of being either for "saving the planet" or against it. There will be no saving the planet because God will destroy it. And He has the right, because He created it in the first place. Don't cling to the earth, cling to God. It's a question of priorities. And magnitude of consequences. The #1 goal is to get yourself and others saved. The consequences of this last far longer than any earthly matter.
I'll close with offering a phrasing of a proverb, from a "translation" of ill-repute that I had as a kid, that I found to be very succinct and profound nonetheless: "Remember, no matter how long you live, you'll be dead much longer."
Anonymous Coward
Makes me think that we should stop to think that maybe we don't have all the answers, and maybe we shouldn't necessarily go and fuck with things in such radical ways. Seems like the likelihood of us creating significant harmful effects from deliberate action to alter things is much greater than what we might be causing inadvertently by just going about our business.
The comment of a function should say what the function is supposed to do (unless it's so trivial that the name of the function is description enough),...
But we need to be able to read code where functions are being called, without having to look each one of them up to see what they all do. Comments are not the answer, the function name is. And if what the function performs is too "non-trivial" to fit all in its name, I would suggest that it probably needs to be broken down further. I take high cohesion seriously, and try to stick to the good rule of thumb that a function shouldn't be any longer than a screenful.
Unless you're coding in assembly.
I've never done asm in my professional life, so I'll concede every single one of these points in that domain.
"Why did he use filter coefficients c0...c15?" has nothing to do with any programming language.
I never said any of this had to do with any programming language -- I said it had to do with one's experience with a programming language -- a misinterpretation I tried to correct previously. I don't know what your example question refers to, but a comment is certainly called-for for an algorithm that not everyone will already be typically familiar with. I.e. only need to comment the unexpected.
Comments should have very little (ideally: zero) to do with the programming language used.
Agreed. I think it was a bad placement of a comma that gave you that impression. Distribute "experience with" across "programming" and "a particular language" to get the correct read which was "experience with programming and experience with a particular language".
Ideally, the comments should allow to re-create the functionality in any language, without looking at the actual code.
Ugh. No. For the same reason you don't copy and paste code, but rather modularize it into one place, so the two can't get out of sync, you don't try to duplicate the functionality of the code in comments. Redundant and hazardous.
If I don't understand why the last programmer did something, or what he was trying to accomplish, I'm out of luck.
That typically occurs under one of the following three conditions:
1) The last programmer was not proficient in the language and how its developer community uses it.
2) You're not proficient in the language and how its developer community uses it.
3) The last programmer had to do something unorthodox, and didn't explain it with a comment.
To try to solve 1) or 2) with comments is fruitless and beside the point. The only real solution is knowledgeable, competent programmers writing code in expected ways. An explaining in the rare cases when that's not possible.
Then mix in managers who don't know anything about how software is developed. So they can't lead, because they don't know what leading means in this domain. So they chair endless meetings where no progress is made. You need these non-technical "vision" people, the ones with the technical knowledge a mile wide but an inch deep, who can't get down to deciding on anything specific, and have to constantly flit about from topic to topic, else they run out of something to say. It's not a really good lesson for the real world without these folk 3 months into a 5 month project still saying "we could do this" and "we could do that", trying to impress the customers but doing nothing to get the project frickin' actually started. This gets the point across to students that they will have to get used to not only deriving their own requirements, but also running the project for their leader.
You're either a consultant, or you work at a place like my first employer. I remember speaking with a programmer in another group who mentioned that they didn't have time to test. They had to crank code, release it, and then poor Level 2 Support folk who hadn't even been involved in the project had to fix it.
- The noob to programming cannot yet completely appreciate the need for comments, so uses little to none of them.
- The experienced programmer but new to a particular language understands the need for comments, but the language and its common usages has not become second nature yet, so things all over the place appear to not be completely clear and thus require commenting, so comments are used liberally.
- But the experienced programmer who is also quite experienced in a given language, knows of and uses in the code the patterns and idioms of that language and its community. And therefore comments little to none, like the amateur hacker.
Which is how you might be I think confusing the two.The following idea from TFA is what caught my eye:
"In a sign of the growing importance of graphics processors, chipmaker Advanced Micro Devices inked a deal in July to acquire ATI for $5.4 billion, and then unveiled plans to develop a new "fusion" chip that combines CPU and GPU functions."
I can see the coming age of multi-core CPU's not necessarily lasting very long now. We don't tend to need a large number of general-purpose CPU's. But a CPU+GPU chip, where the GPU has for example 128 1.35GHz cores (from the Nvidia press release), and with a new generation of compilers written to funnel sections of code marked parallelizable to the GPU portion, and the rest to the CPU, would be tremendous.
Does Intel have any plans to try to acquire Nvidia?
I was thinking basically the same thing. Java has a lot of "protect yourself from yourself" things in it that make it suitable for low to medium-skilled programmers. It is thus a strong attracter of this level of people, and combined with the platform's popularity, such are plentiful. Yet GP is asking for senior-level networking and concurrent programming. Seems like people like that would be much easier to find in the C or C++ camps.
You do need to "pick the right tool for the job", but the choice also needs to include non-technical factors such as the likely level of difficulty in filling the position(s). GP's organization may not be considering this.