The answer is the Option type. It's been around for ages, and it's easy to implement yourself in languages that do not support it natively. Scala even comes with a number of handy methods that make working with Java-style (i.e., nullable) data types a bit easier.
The issue isn't that nulls don't serve a purpose. You're right, they do. The issue is that it is very difficult to know statically (i.e., before your program runs) whether you've handled them all correctly or not. Option make this handling a part of the type system, thus if you fail to check for null, your program will not compile. That's a good thing.
I'm not sure that you don't see that. The last time I was in Beijing, I took a photo of an intersection that included:
A modern jet flying overhead.
A modern train (light rail?) passing through.
Numerous cars and trucks.
A vast quantity of people on bicycles, some of whom were hauling mind-boggling amounts of stuff.
At least one rickshaw.
A cart, full of fresh vegetables, drawn by a donkey, pretty much in the middle of the intersection.
And, of course, many pedestrians.
I was disappointed that there wasn't water nearby, because having a boat in that picture would have been great. Anyway, the variety of modes of transportation---modern and old---was kind of amazing.
If breathing became a problem due to car exhaust, that would simply present a marketing opportunity for manufacturers to make cars that pollute less. Consumers would demand and purchase these cars to do their part to limit pollution, just like they do now. All without any need for government regulation, incompetent or otherwise.
This is demonstrably false. I am old enough to remember living in places where pollution was bad--air quality in the urban US is substantially better now than it was when I was a kid. See http://www.esf.edu/cue/documen...>here.
Air quality is terrible in many places outside the US, notably in China and in India. I have experienced the air in Beijing--sometimes you cannot even see across the street. You can argue that China does not have a free enough market to encourage clean air vehicles. But you cannot argue the case in India: their market is arguably freer than ours (e.g., they have weak automobile safety requirements). So why don't people buy vehicles with better emissions in India? Because there's no incentive. Fuel-efficient non-polluting vehicles are more expensive, and your purchase alone makes almost no difference. This is a classic case of he tragedy of he commons--the commons here being air.
Interestingly, that article contradicts itself: "a 2013 Consumer Reports study tested more than 300 cars, and found 90 percent landed within two miles per gallon of their EPA-approved ratings."
Yeah, testing standards aren't perfect. That doesn't mean that the government is incompetent and is trying to fuck you.
There's a confounding factor in the design of the paper you cite. The fact is that cardiac surgery is risky; some not insignificant portion of people getting it will die. That does not mean, however, that they don't need it eventually. Indeed, the window of time in this study is only 30 days (i.e., "30-day mortality"). It's not just possible, but likely, that those who did not receive early treatment (because the doctor was away) have shorter lifespans on average than those who did, even when considering those who die during surgery. Without being able to compute the average lifespan of those without and without the "treatment" (in this case, the doctor being away), which you can't really do without a long-term study, the best case is that the paper is inconclusive. Worst case, it is horribly misleading. I don't have a JAMA account otherwise I'd be looking specifically for a discussion of this confound in the paper.
You will be doing your son a grave disservice if you send him to community college when he is capable of attending a university. For starters, while community college teaching staff only teach, which presumably means that they are focused solely on that goal, it is also true that they are underpaid and overworked. If you son needs extra help, it is unlikely that he will be able to get it. Secondly, community college staff often have only master's degrees in their field. While this means that they may be able to teach the basics competently, it also means that they lack the perspective from having contributed new ideas to their field.
By contrast a university professor has spent years contributing to their field. They often possess expertise that you can't find anywhere else. This means that their commitment to teaching may not be 100%-- they'd rather be doing research-- but if you son is smart and talented, and wants to take his education to the next level, being able to work with a professor is a huge advantage. Professors work on interesting new problems. Also, particularly in computer science, professors frequently have contacts in private industry, and they act as conduits to the most desirable jobs. Here's the list of my frequent employers for students in my lab: Microsoft, Google, Facebook, Apple, Amazon, IBM. We're all doing great; we love our jobs, and it's because we went to a research university.
Now, I am most certainly not saying that having a good education and getting a highly-paid, very interesting job is the exclusive domain of universities. Definitely not. I'm not even saying that you can't do it on your own. What I am saying is that you'd be foolish to conclude that they are a waste of your money (my MS and eventual PhD cost me NOTHING out of pocket). Furthermore, if you want to maximize your chances for success, you should seriously consider public universities. The amount you pay for undergrad tuition is worth the debt. The same cannot be said for many other institutions of higher learning.
You're forgetting that mobile devices need a complement to be useful: mobile services. Many of the services that we know and love-- and the many more coming down the pipeline-- all need massive amounts of computation. And the trend right now is toward more and more computation. For example, Skype (not exactly a failure) requires massive cloud resources, and the forthcoming Skype Translator will require a neural net behind the scenes.
I don't think your feelings about Windows Server contradict my point: Microsoft is moving into a software-as-a-service model. It shouldn't be surprising that you want to ditch the old model. In many ways, it doesn't matter if you don't use Microsoft handheld devices; if you do things on the Internet, you almost certainly use their cloud services. And if anything can be learned from Apple's example, it's that rapid innovation can happen when you have the capability to vertically integrate. There are really only three players out there right now that can do that: Apple, Google, and Microsoft. I think it would be silly to call any one of those companies irrelevant.
(disclaimer: I have interned at Microsoft for the past three summers; I do not speak for them)
I think your criticism against lock-in is fair, and this is clearly one of Microsoft's strategies, and I suspect that it will continue to be to some degree. But on the language front, you are wrong. Not only are Microsoft's newest languages open-source (F#, TypeScript), but they are also cross-platform and collaboratively developed with open source groups. And, of course, you can run all.NET languages on the Mac, Linux, FreeBSD, etc. with mono.
While it is theoretically possible that all of this is a deadly Microsoft-bait-and-switch just waiting to happen, having worked at Microsoft, I can say that doing so would fly in the face of a lot of hard work by many, many people there. I was as critical about Microsoft as you were (dig into my/. history and you'll see) until I worked there. Not only is it a great place to work, but the company really is committed to changing its culture. Use of open-source tools at Microsoft used to be strictly-prohibited. Now they have a fast-track process for working with them. Open-sourcing of Microsoft software was also a complete non-starter. Now putting Microsoft code up on the web is increasingly routine, and they even have their own open-source hosting ala GitHub that has git bindings.
Microsoft is a big company (the Redmond campus is mind-bogglingly huge to me) and they have a lot of corporate momentum. Despite this, in my opinion, I've seen my daily interactions with people do a complete 180 in the last couple of years. Microsoft knows that the era of selling boxed copies of proprietary software is coming to an end. So you're simply wrong about Microsoft not being able to change.
Oh, right, I thought that JavaScript sucked because I was under the impression that it was dynamically typed, allowed monkey-patching, had a lame set of numeric types, poor support for sequential I/O, etc., etc., etc. Oh, wait... those things are true? But Douglas Crockford says it's Lisp-y, so that gives us license to sweep all those problems under the rug.
If you're doing Javascript in Visual Studio, then you have no excuse not to check out TypeScript. Likewise, in IDEA, you should check out Scala.js. It's surprisingly mature for something that just got off the ground. Javascript needs to die.
My concern is how Google handles removing things accurately. This isn't the white pages-- there isn't some person assembling these indices. They've generated by learning algorithms, and those algorithms themselves misclassify information. So how do you get all of your references removed without inflicting collateral damage? What about people with the same name? Furthermore, how does Google know that requests are legitimate? You can imagine political candidates requesting that Google remove their opponents.
Whatever algorithm Google is using to do this, I think its details are in the public interest. I'd like to see them publish its details.
Not to mention: many UVA grads likely stay in Virginia, and Stanford grads likely stick around in Silicon Valley (e.g., 100% of the Stanford grads that I know). The cost of living in Silicon Valley is dramatically more expensive than in Virginia. E.g, the cheapest condo in Palo Alto listed on Zillow is priced at $548,000 (which is > $300k above the already insane appraisal value) and for that, you get 679 square feet. Since I was an intern, my housing was (fortunately!) covered by my employer when I worked in Mountain View, but my boss ended up taking a job elsewhere because he and his wife simply could not afford anything more spacious than an RV. If you don't adjust the salary to the cost of living, your study is fundamentally flawed.
We don't need to certify programmers, we need to certify programs. I'm not sure that certification for programmers would provide any extra benefit other than maybe being a prior on whether you think the programmer can get the job done or not (and I'm not a Bayesian, so...).
On the other hand, many properties about programs themselves can and should be verified. A great deal of current programming language research is devoted toward both improving the capabilities of automatic program verification as well as designing languages more amenable to verification. Functional languages, for instance, rule out entire classes of bugs present in imperative languages. People complain that they're hard to understand. Maybe. I argue that they're hard to understand if you're the kind of person who does not care about whether your program is correct or not.
As far as I can tell, there are no FW S1600/S3200 controllers available commercially. But if you want to connect a FW800 network to any Mac, problem solved.
Unless and until some unforeseen, miraculous breakthrough happens in language design, GCd languages will always be slower when it comes to memory management. And because memory management is so critical for complex applications, GCd languages will effectively always be slower, period.
This isn't true. Have a look at Quantifying the Performance of Garbage Collection vs. Explicit Memory Management. The take-away is that GC'd languages are only slower if you are unwilling to pay an extra memory cost; typically 3-4x of your explicitly-managed program. Given that GC gives you safety from null-pointer dereferences for free, I think that's a fair tradeoff for most applications (BTW, you can run the Boehm collector on explicitly-managed code to identify pointer safety issues).
I was being glib. Just nitpicking on the phrase "maximum precision". Sorry, it's a bad habit developed from working around a bunch of pedantic nerds all day.
Thanks for the pointer about native ints, although I can't seem to find any kind of authoritative reference about this. This guy claims that asm.js converts these to native ints (see Section 2.3: Value Types), but his link seems to be talking about the JavaScript runtime, not the asm.js compiler. If you have a reference, I'd appreciate it if you'd send it along.
I never made any such claim. If you doubt the veracity of my statement, open a JavaScript console (Chrome, Firefox, Rhino, whatever) and try it yourself.
Let's just open up my handy Javascript console in Chrome...
(0.1 + 0.2) == 0.3
false
It doesn't matter how many bits you use in floating point. It is always an approximation. And in base-2 floating point, the above will never be true.
If they're saying that JavaScript is within 1.5x of native code, they're cherry-picking the results. There's a reason why people who care have a rich set of numeric datatypes.
All of .NET is open source.
Numerous languages are open. Even the compiler is open source.
You also have vscode, the Edge JavaScript runtime and so many other things I'm just going to put this link here.
In short, you are living under a rock.
The answer is the Option type. It's been around for ages, and it's easy to implement yourself in languages that do not support it natively. Scala even comes with a number of handy methods that make working with Java-style (i.e., nullable) data types a bit easier.
The issue isn't that nulls don't serve a purpose. You're right, they do. The issue is that it is very difficult to know statically (i.e., before your program runs) whether you've handled them all correctly or not. Option make this handling a part of the type system, thus if you fail to check for null, your program will not compile. That's a good thing.
I was disappointed that there wasn't water nearby, because having a boat in that picture would have been great. Anyway, the variety of modes of transportation---modern and old---was kind of amazing.
This is demonstrably false. I am old enough to remember living in places where pollution was bad--air quality in the urban US is substantially better now than it was when I was a kid. See http://www.esf.edu/cue/documen...>here.
Air quality is terrible in many places outside the US, notably in China and in India. I have experienced the air in Beijing--sometimes you cannot even see across the street. You can argue that China does not have a free enough market to encourage clean air vehicles. But you cannot argue the case in India: their market is arguably freer than ours (e.g., they have weak automobile safety requirements). So why don't people buy vehicles with better emissions in India? Because there's no incentive. Fuel-efficient non-polluting vehicles are more expensive, and your purchase alone makes almost no difference. This is a classic case of he tragedy of he commons--the commons here being air.
I am going to charitably assume that you are not a troll or shill, so I'm going to point out that your ad hominem style of argument is counterproductive. If you really care about your point, and you think that it is true, back it up with facts and reasoned argument. Slashdot is today is not the Slashdot of old, but there are enough of us still around whose beliefs are based on facts that a good argument might actually change our minds.
Slashdot editors: how did this garbage get posted here? Why not go straight to the quoted Wired article with the hyperbolic title?
Interestingly, that article contradicts itself: "a 2013 Consumer Reports study tested more than 300 cars, and found 90 percent landed within two miles per gallon of their EPA-approved ratings."
Yeah, testing standards aren't perfect. That doesn't mean that the government is incompetent and is trying to fuck you.
Ditto everything you said. Sad day.
Also, somewhat presciently: Don't smoke. I did. Wish I never had. LLAP
RIP, Leonard Nimoy. You are sorely missed.
Ditto the PCMCIA Ethernet. The trick may be finding drivers for such a card, but there are tons of cheap old PC cards on eBay.
There's a confounding factor in the design of the paper you cite. The fact is that cardiac surgery is risky; some not insignificant portion of people getting it will die. That does not mean, however, that they don't need it eventually. Indeed, the window of time in this study is only 30 days (i.e., "30-day mortality"). It's not just possible, but likely, that those who did not receive early treatment (because the doctor was away) have shorter lifespans on average than those who did, even when considering those who die during surgery. Without being able to compute the average lifespan of those without and without the "treatment" (in this case, the doctor being away), which you can't really do without a long-term study, the best case is that the paper is inconclusive. Worst case, it is horribly misleading. I don't have a JAMA account otherwise I'd be looking specifically for a discussion of this confound in the paper.
Anyone know if there's going to be an offline archive?
You will be doing your son a grave disservice if you send him to community college when he is capable of attending a university. For starters, while community college teaching staff only teach, which presumably means that they are focused solely on that goal, it is also true that they are underpaid and overworked. If you son needs extra help, it is unlikely that he will be able to get it. Secondly, community college staff often have only master's degrees in their field. While this means that they may be able to teach the basics competently, it also means that they lack the perspective from having contributed new ideas to their field.
By contrast a university professor has spent years contributing to their field. They often possess expertise that you can't find anywhere else. This means that their commitment to teaching may not be 100%-- they'd rather be doing research-- but if you son is smart and talented, and wants to take his education to the next level, being able to work with a professor is a huge advantage. Professors work on interesting new problems. Also, particularly in computer science, professors frequently have contacts in private industry, and they act as conduits to the most desirable jobs. Here's the list of my frequent employers for students in my lab: Microsoft, Google, Facebook, Apple, Amazon, IBM. We're all doing great; we love our jobs, and it's because we went to a research university.
Now, I am most certainly not saying that having a good education and getting a highly-paid, very interesting job is the exclusive domain of universities. Definitely not. I'm not even saying that you can't do it on your own. What I am saying is that you'd be foolish to conclude that they are a waste of your money (my MS and eventual PhD cost me NOTHING out of pocket). Furthermore, if you want to maximize your chances for success, you should seriously consider public universities. The amount you pay for undergrad tuition is worth the debt. The same cannot be said for many other institutions of higher learning.
Or, you know, you could just measure the viewable area. No research required.
You're forgetting that mobile devices need a complement to be useful: mobile services. Many of the services that we know and love-- and the many more coming down the pipeline-- all need massive amounts of computation. And the trend right now is toward more and more computation. For example, Skype (not exactly a failure) requires massive cloud resources, and the forthcoming Skype Translator will require a neural net behind the scenes.
I don't think your feelings about Windows Server contradict my point: Microsoft is moving into a software-as-a-service model. It shouldn't be surprising that you want to ditch the old model. In many ways, it doesn't matter if you don't use Microsoft handheld devices; if you do things on the Internet, you almost certainly use their cloud services. And if anything can be learned from Apple's example, it's that rapid innovation can happen when you have the capability to vertically integrate. There are really only three players out there right now that can do that: Apple, Google, and Microsoft. I think it would be silly to call any one of those companies irrelevant.
(disclaimer: I have interned at Microsoft for the past three summers; I do not speak for them)
.NET languages on the Mac, Linux, FreeBSD, etc. with mono.
/. history and you'll see) until I worked there. Not only is it a great place to work, but the company really is committed to changing its culture. Use of open-source tools at Microsoft used to be strictly-prohibited. Now they have a fast-track process for working with them. Open-sourcing of Microsoft software was also a complete non-starter. Now putting Microsoft code up on the web is increasingly routine, and they even have their own open-source hosting ala GitHub that has git bindings.
I think your criticism against lock-in is fair, and this is clearly one of Microsoft's strategies, and I suspect that it will continue to be to some degree. But on the language front, you are wrong. Not only are Microsoft's newest languages open-source (F#, TypeScript), but they are also cross-platform and collaboratively developed with open source groups. And, of course, you can run all
While it is theoretically possible that all of this is a deadly Microsoft-bait-and-switch just waiting to happen, having worked at Microsoft, I can say that doing so would fly in the face of a lot of hard work by many, many people there. I was as critical about Microsoft as you were (dig into my
Microsoft is a big company (the Redmond campus is mind-bogglingly huge to me) and they have a lot of corporate momentum. Despite this, in my opinion, I've seen my daily interactions with people do a complete 180 in the last couple of years. Microsoft knows that the era of selling boxed copies of proprietary software is coming to an end. So you're simply wrong about Microsoft not being able to change.
Oh, right, I thought that JavaScript sucked because I was under the impression that it was dynamically typed, allowed monkey-patching, had a lame set of numeric types, poor support for sequential I/O, etc., etc., etc. Oh, wait... those things are true? But Douglas Crockford says it's Lisp-y, so that gives us license to sweep all those problems under the rug.
If you're doing Javascript in Visual Studio, then you have no excuse not to check out TypeScript. Likewise, in IDEA, you should check out Scala.js. It's surprisingly mature for something that just got off the ground. Javascript needs to die.
My concern is how Google handles removing things accurately. This isn't the white pages-- there isn't some person assembling these indices. They've generated by learning algorithms, and those algorithms themselves misclassify information. So how do you get all of your references removed without inflicting collateral damage? What about people with the same name? Furthermore, how does Google know that requests are legitimate? You can imagine political candidates requesting that Google remove their opponents.
Whatever algorithm Google is using to do this, I think its details are in the public interest. I'd like to see them publish its details.
Not to mention: many UVA grads likely stay in Virginia, and Stanford grads likely stick around in Silicon Valley (e.g., 100% of the Stanford grads that I know). The cost of living in Silicon Valley is dramatically more expensive than in Virginia. E.g, the cheapest condo in Palo Alto listed on Zillow is priced at $548,000 (which is > $300k above the already insane appraisal value) and for that, you get 679 square feet. Since I was an intern, my housing was (fortunately!) covered by my employer when I worked in Mountain View, but my boss ended up taking a job elsewhere because he and his wife simply could not afford anything more spacious than an RV. If you don't adjust the salary to the cost of living, your study is fundamentally flawed.
We don't need to certify programmers, we need to certify programs. I'm not sure that certification for programmers would provide any extra benefit other than maybe being a prior on whether you think the programmer can get the job done or not (and I'm not a Bayesian, so...).
On the other hand, many properties about programs themselves can and should be verified. A great deal of current programming language research is devoted toward both improving the capabilities of automatic program verification as well as designing languages more amenable to verification. Functional languages, for instance, rule out entire classes of bugs present in imperative languages. People complain that they're hard to understand. Maybe. I argue that they're hard to understand if you're the kind of person who does not care about whether your program is correct or not.
As far as I can tell, there are no FW S1600/S3200 controllers available commercially. But if you want to connect a FW800 network to any Mac, problem solved.
Not to mention, you can still have SATA if you really want it.
Unless and until some unforeseen, miraculous breakthrough happens in language design, GCd languages will always be slower when it comes to memory management. And because memory management is so critical for complex applications, GCd languages will effectively always be slower, period.
This isn't true. Have a look at Quantifying the Performance of Garbage Collection vs. Explicit Memory Management. The take-away is that GC'd languages are only slower if you are unwilling to pay an extra memory cost; typically 3-4x of your explicitly-managed program. Given that GC gives you safety from null-pointer dereferences for free, I think that's a fair tradeoff for most applications (BTW, you can run the Boehm collector on explicitly-managed code to identify pointer safety issues).
I was being glib. Just nitpicking on the phrase "maximum precision". Sorry, it's a bad habit developed from working around a bunch of pedantic nerds all day.
Thanks for the pointer about native ints, although I can't seem to find any kind of authoritative reference about this. This guy claims that asm.js converts these to native ints (see Section 2.3: Value Types), but his link seems to be talking about the JavaScript runtime, not the asm.js compiler. If you have a reference, I'd appreciate it if you'd send it along.
I never made any such claim. If you doubt the veracity of my statement, open a JavaScript console (Chrome, Firefox, Rhino, whatever) and try it yourself.
When you're done with that, go read What Every Computer Scientist Should Know About Floating-Point Arithmetic. I cribbed the example directly from the article.
Let's just open up my handy Javascript console in Chrome...
(0.1 + 0.2) == 0.3
false
It doesn't matter how many bits you use in floating point. It is always an approximation. And in base-2 floating point, the above will never be true.
If they're saying that JavaScript is within 1.5x of native code, they're cherry-picking the results. There's a reason why people who care have a rich set of numeric datatypes.