IMO it boils down to "if it's complicated then comment it, otherwise don't". Unnecessary comments just get in the way. I'd add that lots of code is complicated and "hairy", and thus deserves comments, solely because its author was not skilled enough to create a cleaner solution.
First off, my background is pretty similar to the progression you mention: BASIC, Pascal, then C/C++ and Java. Here, then, are my general suggestions:
Limit yourself to languages that are widely used to do "real work", whether in the marketplace or in a scientific setting. That's not to say these the best options from a teaching standpoint, but they give the added bonus of the kid learning something practical in addition to fundamental concepts. This would exclude languages like BASIC, Pascal, Scala, Ruby, Lisp/Scheme, Miranda, Haskell, etc.
Exclude languages that, while still widely used, are largely employed only for legacy work. This would exclude VB, COBOL, perl, Ada, etc.
Pick a language that lets you teach the object-oriented paradigm.
Based on these, I'd go with Java or C# to start. Maybe C++, but Java would be easier to learn. If you do go with Java, I'd strongly suggest he follow it up with plain-old C, just to get a feel for what life's like when you have to do your own memory management, don't have objects, don't have built-in synchronization primitives, don't have strong typing or type safety, etc. etc.
For the WORA part, what you're saying is.... Java isn't WORA if you don't use Java. I think you deserve a prize for that one!
No, what I'm saying is twofold:
The likelihood of WORA failing increases drastically when dealing with Java abstractions of things that are otherwise OS specific, such as UI libraries. If I write code that never does any I/O whatsoever, then yeah, it's extremely unlikely it will fail to work correctly in any environment where there's a JVM.
There are some things for which there is no current JRE support. Such as manipulating serial ports. So if you want to do that you must use non-Java code. Serial port communication isn't a super-obscure task. Imagine if one had to use JNI to do socket level network I/O in Java. Would you consider this a chink in the WORA armor?
I guess I should have been more specific on the performance thing. Mostly I was referring to two things: GUI performance, since Swing has traditionally been pretty turgid, and the ability to easily link with native libraries, which I have always assumed C# handles more elegantly than Java+JNI. As for general purpose performance, the jury's still out on that:
When it comes to WORA, again it depends on what you're doing. Recently I had to write an app to do serial port communication on Windows. Unless I missed something, that's only achievable in Java land by using a native library via JNI, meaning my code won't run elsewhere. Another example is when I used to work at IBM about seven years ago. We frequently had UI or I18N issues with our Java code that only cropped up on certain platforms (e.g. AIX) but not others (Windows).
That said, the non-graphical server code I write using Java runs pretty much everywhere. So for that class of application WORA really works.
While all that is undoubtedly true, I question the extent to which its responsible for Java's loss in market share. Honestly, how many Java developers do you imagine even know what a "Hindley-Milner type inference" even is? Answer: not many.
I'd point to some other misc. reasons:
Full force of Microsoft marketing behind.NET and friends.
It's reasonable to expect many users to have.NET already installed on their machines, whereas the same can't be said for a JRE. So if I'm distributing a small desktop application and I'm only targeting Windows, choosing.NET gives me the best chance of not obligating my customers to download an extra run-time environment.
Native look and feel for GUI applications on Windows.
Better performance. Can't verify this since I haven't done much with C# et. al., but it's always been my understanding that it outperforms Java, generally speaking.
ASP.NET is the obvious choice for a web scripting language if you're using IIS. Java is not the obvious choice of scripting language if you're using non-IIS.
The set of technologies surrounding.NET is much narrower than what you see with Java. That is to say if you want to learn.NET you can stick to one IDE, one OS, one application server, etc. With Java you have Tomcat, Jetty, JBoss, Websphere, Glassfish, etc. Then you've got NetBeans, Eclipse, IntelliJ, etc. Then maybe you have to pick an ORM framework. Or a Web Services framework Axis, Xfire or JAX-WS RI? The.NET environment removes all those decisions. So, as a student, you can say to yourself, "IF I learn X and Y and Z, then I'll have covered everything I need to know."
One of Java's big selling points, "Write once, run anywhere," never really worked in practice.
Your boss is a nut job. It's pretty common conventional wisdom that music aids in concentration, though that probably depends on the music. Unfortunately for you, anyone willing to micromanage at this level is unlikely to listen to reason, even if you were to present him with peer-reviewed studies that back up your contention that music is helpful. So like the tag says...find a new job.
One thought: he may not actually believe music is distracting. It may be that other people can hear what you guys are listening to even though you're using headphones, and have complained. Depending on what kind of headphones you're using, there may be some "sound leakage". It can be bothersome.
At the risk of sounding unintentionally harsh...why don't you get them whatever you think they'd most enjoy, rather than pigeonholing them into science toys?
While I agree with you that the high-consumption customer is not an "abuser" so long as he stays within the terms of his service contract, the ISP is also not being "abusive" if it decides to terminate his contract, so long as it also acts within the agreed upon terms. Its also not being particularly evil if it decides to codify usage caps in future service contracts, or decides to go with a per-bandwidth pricing scheme.
So they buy a pipe fat enough to ensure peak utilization consumes 50% of capacity. Now cut peak utilization by 30%. Would that not allow them to buy a "thinner" pipe, since peak capacity is decreased, and still afford the same guarantee (i.e. peak utilization = 50% of capacity)? Or if the current "pipe" is already in place, save money by postponing upgrades (as you mentioned)?
New infrastructure costs money. I'm either going to pay an unfair share of that cost by virtue of the fact that my ISP charges a bandwidth-agnostic flat rate and I'm a low-consumption customer, or I'm going to pay an unfair share by virtue of the fact that I'm a taxpayer whose tax dollars subsidize the cost of that new infrastructure.
Obviously there are fixed costs and there are costs related to bandwidth usage. Core capacity isn't the only one tied to bandwidth. My usage is approximately 3GB downstream per month, so I'll take my chances on pay-per-byte.
Top 5% of users probably consume around 30% of the total bandwidth. That means they need to pay for 30% more out-of-network core bandwidth. Is that cost footed by the heavy users? No. It's distributed across every paying customer.
Running LCDs at non-native resolutions only looks bad because it requires interpolation. However, if the non-native resolution you choose is exactly divisible into the previous resolution, then there should be no need for interpolation. So one solution would be to buy a very high-res monitor then run it at 1/2 resolution. This isn't exactly affordable, but newegg has a 30" monitor w/ native resolution of 2560x1600 for $1200. So you could run that at 1280 x 800. Every "pixel" in 1280 x 800 mode would be made up of four native pixels. They also have some 1920 x 1200 ones for about $290. Those you'd have to run at 960 x 600, which might be too restrictive for normal use.
Note that in the post to which I replied, the poster said:
Also, child rearing isn't a particularly female position beyond infancy.
So he had already admitted that mothers are, in that way at least, more suited to the care of infants than fathers. So I didn't see a need to reiterate it in my response.
I reject the idea that the quality of a developer is primarily about "training". I want someone who's creative, intelligent, can intuit solutions to complex out-of-the-ordinary problems, has no problem expressing himself verbally and in written communication, etc. If he has the right stuff then he'll figure out the rest on the job.
Also, child rearing isn't a particularly female position beyond infancy. Girls simply got stuck with it because they gave birth so its their responsibility. And the idea that violence and aggression is a manly thing. Or that it is something we should hope to aspire to is complete BS.
It's not just that the woman gave birth. One partner has to gather food / earn money / etc. Historically speaking, the man was more capable of doing this job because of his physical makeup. So the other job of caring for children fell to the female. Not to mention that, again historically speaking, the amount of time she was not caring for one infant or another was usually pretty small.
You could also argue there are other gender differences that make women more effective at caring for children that aren't just the result of socialization. I don't have a link handy, but I recall reading some research about how women (as a group) are better able to discern emotions by looking at the faces of other people. Stuff like that.
I'm not mentioning these to defend the idea that men should have no part in child-rearing. Not at all. But I think you oversimplify the reasons why this task has traditionally fallen to women.
If they're pirating Microsoft software, then you should gleefully comply. Because Microsoft is the devil and they deserve to get ripped off.
If they're pirating shareware software then you should report your bosses. Because your bosses are the devil and the shareware authors deserve to be paid.
This story just oozes WIN. Whether you agree or disagree with Microsoft's stance here, it's pretty impressive that they had the balls to disconnect 3% of their entire subscriber base. Kudos to them for putting their money where their mouth is.
With regard to scalability, it strikes me that the problem isn't so much SQL but the fact that current SQL-based RDBMS implementations are optimized for smaller data sets.
IMO it boils down to "if it's complicated then comment it, otherwise don't". Unnecessary comments just get in the way. I'd add that lots of code is complicated and "hairy", and thus deserves comments, solely because its author was not skilled enough to create a cleaner solution.
First off, my background is pretty similar to the progression you mention: BASIC, Pascal, then C/C++ and Java. Here, then, are my general suggestions:
Based on these, I'd go with Java or C# to start. Maybe C++, but Java would be easier to learn. If you do go with Java, I'd strongly suggest he follow it up with plain-old C, just to get a feel for what life's like when you have to do your own memory management, don't have objects, don't have built-in synchronization primitives, don't have strong typing or type safety, etc. etc.
Yep. Win7 will boost IE8 adoption, especially as corporations who declined to migrate from XP to Vista decide that migrating to Win7 is "worth it".
No, what I'm saying is twofold:
I guess I should have been more specific on the performance thing. Mostly I was referring to two things: GUI performance, since Swing has traditionally been pretty turgid, and the ability to easily link with native libraries, which I have always assumed C# handles more elegantly than Java+JNI. As for general purpose performance, the jury's still out on that:
C# beats Java (most of the time): http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html
C# beats Java: http://www.bentuser.com/article.aspx?ID=323&AspxAutoDetectCookieSupport=1
Java beats C#: http://blogs.sun.com/dagastine/entry/sun_java_is_faster_than1
When it comes to WORA, again it depends on what you're doing. Recently I had to write an app to do serial port communication on Windows. Unless I missed something, that's only achievable in Java land by using a native library via JNI, meaning my code won't run elsewhere. Another example is when I used to work at IBM about seven years ago. We frequently had UI or I18N issues with our Java code that only cropped up on certain platforms (e.g. AIX) but not others (Windows).
That said, the non-graphical server code I write using Java runs pretty much everywhere. So for that class of application WORA really works.
While all that is undoubtedly true, I question the extent to which its responsible for Java's loss in market share. Honestly, how many Java developers do you imagine even know what a "Hindley-Milner type inference" even is? Answer: not many.
I'd point to some other misc. reasons:
Your boss is a nut job. It's pretty common conventional wisdom that music aids in concentration, though that probably depends on the music. Unfortunately for you, anyone willing to micromanage at this level is unlikely to listen to reason, even if you were to present him with peer-reviewed studies that back up your contention that music is helpful. So like the tag says...find a new job.
One thought: he may not actually believe music is distracting. It may be that other people can hear what you guys are listening to even though you're using headphones, and have complained. Depending on what kind of headphones you're using, there may be some "sound leakage". It can be bothersome.
At the risk of sounding unintentionally harsh...why don't you get them whatever you think they'd most enjoy, rather than pigeonholing them into science toys?
While I agree with you that the high-consumption customer is not an "abuser" so long as he stays within the terms of his service contract, the ISP is also not being "abusive" if it decides to terminate his contract, so long as it also acts within the agreed upon terms. Its also not being particularly evil if it decides to codify usage caps in future service contracts, or decides to go with a per-bandwidth pricing scheme.
So they buy a pipe fat enough to ensure peak utilization consumes 50% of capacity. Now cut peak utilization by 30%. Would that not allow them to buy a "thinner" pipe, since peak capacity is decreased, and still afford the same guarantee (i.e. peak utilization = 50% of capacity)? Or if the current "pipe" is already in place, save money by postponing upgrades (as you mentioned)?
New infrastructure costs money. I'm either going to pay an unfair share of that cost by virtue of the fact that my ISP charges a bandwidth-agnostic flat rate and I'm a low-consumption customer, or I'm going to pay an unfair share by virtue of the fact that I'm a taxpayer whose tax dollars subsidize the cost of that new infrastructure.
Obviously there are fixed costs and there are costs related to bandwidth usage. Core capacity isn't the only one tied to bandwidth. My usage is approximately 3GB downstream per month, so I'll take my chances on pay-per-byte.
Uh, how do you figure?
Top 5% of users probably consume around 30% of the total bandwidth. That means they need to pay for 30% more out-of-network core bandwidth. Is that cost footed by the heavy users? No. It's distributed across every paying customer.
Yeah, because internet censorship is the most egregious form of oppression going on in China right now. Sheesh.
Running LCDs at non-native resolutions only looks bad because it requires interpolation. However, if the non-native resolution you choose is exactly divisible into the previous resolution, then there should be no need for interpolation. So one solution would be to buy a very high-res monitor then run it at 1/2 resolution. This isn't exactly affordable, but newegg has a 30" monitor w/ native resolution of 2560x1600 for $1200. So you could run that at 1280 x 800. Every "pixel" in 1280 x 800 mode would be made up of four native pixels. They also have some 1920 x 1200 ones for about $290. Those you'd have to run at 960 x 600, which might be too restrictive for normal use.
Note that in the post to which I replied, the poster said:
So he had already admitted that mothers are, in that way at least, more suited to the care of infants than fathers. So I didn't see a need to reiterate it in my response.
I reject the idea that the quality of a developer is primarily about "training". I want someone who's creative, intelligent, can intuit solutions to complex out-of-the-ordinary problems, has no problem expressing himself verbally and in written communication, etc. If he has the right stuff then he'll figure out the rest on the job.
It's not just that the woman gave birth. One partner has to gather food / earn money / etc. Historically speaking, the man was more capable of doing this job because of his physical makeup. So the other job of caring for children fell to the female. Not to mention that, again historically speaking, the amount of time she was not caring for one infant or another was usually pretty small.
You could also argue there are other gender differences that make women more effective at caring for children that aren't just the result of socialization. I don't have a link handy, but I recall reading some research about how women (as a group) are better able to discern emotions by looking at the faces of other people. Stuff like that.
I'm not mentioning these to defend the idea that men should have no part in child-rearing. Not at all. But I think you oversimplify the reasons why this task has traditionally fallen to women.
I can see those things socializing certain behaviors. I can't see them lowering male sperm count, which afaik has been observed over time.
If they're pirating Microsoft software, then you should gleefully comply. Because Microsoft is the devil and they deserve to get ripped off.
If they're pirating shareware software then you should report your bosses. Because your bosses are the devil and the shareware authors deserve to be paid.
Thus sayeth the wisdom of /.
This story just oozes WIN. Whether you agree or disagree with Microsoft's stance here, it's pretty impressive that they had the balls to disconnect 3% of their entire subscriber base. Kudos to them for putting their money where their mouth is.
With regard to scalability, it strikes me that the problem isn't so much SQL but the fact that current SQL-based RDBMS implementations are optimized for smaller data sets.
If not, then presumably their bodies just became more efficient at processing the food they ate into usable calories.
I put peroxide in my ear. Seriously. It fizzes too, which means its eating up some organic matter. Which makes me warm and happy inside.
"Why Computer Programmers Suck at Math
There's a whole discipline called "Numerical Analysis". Whoever programmed the Patriot's tracking software should look into it.