Seven: each time you mention the speed issue, which obviously exists and thoroughly limits python, the only response consists of ad-hominems.
I almost forgot about that one.
Whoever said that Python is the best tool for every problem? That's a strawman. Every programming language has its limitations. No programming language is perfect for every task. Because a tool isn't perfect for every task, doesn't mean that it isn't well-suited to a large set of particular tasks. In this case, the particular task under consideration is to be an introductory programming language, and even more particularly, a substitute for Basic. The fact that it makes a great introductory programming language is well-proven by the fact that it is used as the introductory programming language at one of the three finest Computer Science programs in the world. The performance of tight loops for this particular task is of little relavance. Likewise for the vast majority of scripting tasks, which is one of Python's primary niches. Scripting is typically limited by i/o, not by cpu.
If you don't wish to be subject to ad hominem, post something thoughtful and reasoned rather than merely lazy flamebait.
While I am very reluctant to mention this problem : speed. Now I am very, very tolerant of speed issues in scripting languages, as I know it doesn't really matter. But python... python is an absolute disaster.
You apparently weren't all that reluctant, since you went on for quite a few paragraphs, and yet little of what you said had any merit. First of all, what does anything you have to say have to do with whether or not Python makes a decent introductory programming language? Python is the introductory programming language at MIT. Are you saying that you know better than the entire MIT Electrical Engineering and Computer Science faculty. Furthermore, you seem completely oblivious to the tradeoffs between dynamically typed and statically typed languages. As a result of these tradeoffs dynamically typed and statically typed languages excel and different sorts of things. For large projects, statically typed languages often fair better, due to catching errors earlier. For smaller projects, however, the flexibility of dynamically typed languages is often a huge boon. For instance, I've completed programming projects in a day in Python that would have taken me a month in C++. On the other hand, I'm not so sure I would have wanted to work on a project with a couple of dozen programmers all working on a giant Python programmer.
Regarding speed, Python is not particularly slower than other scripting languages. It is about the same speed as Perl. It is much faster than either Ruby or Tcl. The kind of rant you have made, which demonstrates absolutely no understanding of the tradeoffs involved or of the advantages of the technology that you criticize, is almost always uninformed flamebait that speaks more about the author of the flamebait than of the topic under discussion.
Sure there is. Or there very well might be. Nobody understands the Copenhagen Interpretation of quantum mechanics because it is ill-defined. If on the other hand, the correct interpretation of quantum mechanics is the Many Worlds/Everett Interpretation, then the entire universe is in an incredibly complex macroscopic superposition of states all the the time, amounting to a staggeringly large number parallel worlds. Most people will claim that this is "spooky". In fact, the spookiness of it, is typically the only reason given to reject the Everett Interpretation.
Also, if the Everett Interpretation is correct, no one understands why we observe quantum coin flips that are anything other than 50/50.
I've heard Scala is also gaining popularity, but it's really just baby ML running on the JVM.
By that argument, F# is just baby ML running on the CLR. I'm pretty sure that you're going to get the same functional goodness out of Scala that you are going to get out of ML. All of these are gateway drugs to Haskell, but once you catch that bug, you're no longer employable.
So, I guess one really should learn Clojure instead.
Learn to program in Scala–it puts the joy back into programming. Python too, if you don't already know it. Here's the xkcd comic on Python, just in case you haven't already seen it:
Also, get a job at a university working on a research project. That way you're actually doing something meaningful with your life.
|>ouglas
Re:still using it for remote admin
on
Vim Turns 20
·
· Score: 1
Oh, and also, if you're running something like RedHat on your web server, you might want to be able to use their gui configuration programs remotely.
|>ouglas
Re:still using it for remote admin
on
Vim Turns 20
·
· Score: 1
Why would you have it on a webserver?
So when you log into the web server using ssh you can use xterm and emacs and xmore and xman a myriad of other X11 clients that you might wish to run. Though 99% of the time it would just be xterm and emacs.
|>ouglas
Re:still using it for remote admin
on
Vim Turns 20
·
· Score: 1
Who installs X on a server?
Actually, every server I've ever logged into has had X11 on it. (And I've logged into hundreds of different servers over the years.)
Or they've had the X11 clients in any case. If you don't know why this would be a common thing to do, I guess you're not that familiar with X11.
You're the one making the mess, not your coworker. It's anti-social to set your tab space to anything other than 8 if you share files with anyone else. Terminals always use a 8-spaces to a tab, so if you change your tab setting, then your files don't look right when catted to the terminal or output with "more" or "less" or printed using "lpr", etc., etc., etc.
Re 8 spaces automatically getting turned into tabs: yes Emacs will do this automatically. The reason for this is that the meaning of tab is well defined, so there is no reason to avoid doing what Emacs does. Unless of course someone works with people like you. Which is why everywhere I've worked we've just had a no tab policy. That readily shuts down the pointless debate. I.e., you're not allowed to have tabs in any files that you check in. Fortunately, you can tell Emacs that this is what you want.
Or maybe not, those Harvey Mudd ones might not be "legit";^)
Yes, I'm sorry. The lectures that I was thinking of are from Cornell, not Harvey Mudd. It's been ages since I watched them. I.e., well before YouTube, and I had to go to lecture hall at MIT to watch them, when they would show them once every year or two.
In any case, despite what Fenman may or may not think about the efficacy of instruction, his lectures have inspired many and they still do. Instruction may be overrated at times, but inspiration isn't. Also, I shouldn't think that it would be at all controversial to cite the truism that if you want to be a great writer you should read and steal from other great writers. The same is true in most other fields. Sure, you can study the greats anywhere, to the extent that you have access to what they have written. But, isn't it easier to study the greats if you go to be where they are? Going to MIT, for instance, gives you immediate access to many of them. They don't keep them locked in some ivory tower, where you can't get to them. They come down and teach freshman classes and let you do research for them.
Also, in fast moving technological fields, they may not have written a textbook, or even published yet. If you're somewhere else, then you may have no access at all. Additionally, it was certainly true when I was an undergrad, that my friends who studied at other colleges often used textbooks written by people who were either decidedly not great, or that were rather out of date.
Unique, no? But at most places it's much less pervasive than at MIT for students to do research with the best professors. I also attended Harvard for a bit and worked at a research lab there. It was hard for us to find Harvard students as interns because it apparently just wasn't much in the Harvard culture for undergraduate students to work with professors or scientists. We had to recruit our interns mostly from other schools.
At MIT, however, the UROP program (Undergraduate Research Opportunity Program) is utterly pervasive and well-funded. I.e., professors are very eager to hire undergraduates because most of the wages for the UROP students will come from a central pot of money, and they are guaranteed that any student they hire is smart.
The difference is that nearly every tenured professor at MIT is world famous in their field. And almost all of the freshman classes are taught by such tenured professors. At many universities, teaching freshman classes is considered the shit-work. At MIT the professors fight over who should have the honor.
I've just casually mentioned at times that I took a class by such-and-such at a party, or whatever, and someone will say, "OH MY GOD!!! I can't believe you were taught by Susan Carey! [Or whomever.] She's the world's leading expert on childhood development." Well, huh! I didn't even know, but she was an excellent teacher.
At less prestigious schools, you may have the occasional class taught by someone so distinguished. At MIT, it's the rule rather than the exception.
There's a reason that prestigious schools are prestigious, and everyone should strive to get the best education that they can afford.
I didn't mean to imply that you can't get a great education elsewhere. What I'm saying is that at MIT (and other such prestigious universities) you are practically guaranteed to get not just a first class education, but an inspiring education. E.g., in all my life, I have never seen any other teachers who are as inspiring as Sussman and Ableson were.
There's something about your reply that is indicative of the difference between an MIT education, and the education that you apparently got: MIT doesn't even offer a course in data structures. You are taught such stuff just along the way in other classes that are actually teaching you something interesting. E.g., MIT's CS 101 class, in which you learned data structures along the way, was all a joyous ode to functional programming. You'd pick up more on data structures in the class on software engineering and more in an algorithms class. You'd never stop to lazily rest on merely data structures. MIT has since taken this even further. There now is no CS101 class at all. You are taught CS101 just along the way in the engineering 101 class, which is all centered around robotics.
Is this better than the kind of education that you might get elsewhere. Maybe not, but you are guaranteed to get an incredible education at MIT. Elsewhere, who knows? Maybe you will, maybe you won't.
Re being taught by famous people, aka great minds: The difference is something you might not be able to appreciate until you've been taught by great minds. Watch all the online SICP lectures from 1985 if you want to have a clue about how inspiring it can be. Or watch the Feynman lectures from Harvey Mudd. Keep in mind that these talks are all a bit dated, and the concepts explicated have now propagated into the world at large. Imagine learning these things before any one else learned them. Imagine being a decade or two or three ahead of your peers in your field of study. E.g., programming languages are just now clamoring to add closures to the language. I lived, breathed, and dreamt closures 30 years ago in MIT's CS101. And many of the classes I took at MIT had no text book, only xeroxed course notes because the textbook had not yet been written.
The following equipment saved my career. You likely cannot imagine the amount of agony I was in at one point until I aggressively moved to using ergonomic equipment and making sure that my work environment was set up ergonomically. E.g., having the monitor directly in front of my, rather than off to the side.
The most important piece of ergonomic equipment was the Kinesis Contour Keyboard:
A typical keyboard seems designed to destroy your hands. The Kinesis keyboard, on the other hand, is not. It has a quite a few refinements that make it much easier on the hands than a typical keyboard. I feel that without this keyboard, I would have ended up on disability.
Another change that was required was a very adjustable chair. Most chairs that you will find in a work place are not adjustable to your individual body. Also many chairs have inadequate lumbar support. If the chair you are given just so happens to be right for you, then you are lucky, but most likely it is far from optimal. If the chair does not fit you properly, you should get a chair that can be adjusted so that you can always sit in it with a good posture.
Chairs, however, are more personal than keyboards. I think that the Kinesis keyboard mentioned above is perfect for almost everyone. For chairs, you might want to visit a store that has many different models that you can try out. This is the chair that I ended up with, and I also credit it with saving my career:
BodyBilt makes very adjustable chairs. Unfortunately, such adjustability does not come cheap. I purchased this chair with an inflatable lumbar support, which lets one adjust precisely how much lumbar support it provides. I also purchased it with "linear tracking arms", which are a huge win, especially for using the mouse. I don't know of any other chair that has such arms as an option.
The linear tracking arms are shown on this page. You'll have to scroll down a bit:
These armrests have low-friction ball bearings in them and they slide and rotate effortlessly to follow your arms around. This greatly reduces stress on your back and shoulders, while still allowing you to move your mouse around freely.
It is also important that your desk be at the right height. The standard desk height is designed for someone who is six feet tall. This is fortunate for me, as I am six feet tall. If you are not this height, however, it makes sense to get an adjustable height desk. E.g., something like this:
I have a desk like this one. (Though the one I have is made by KI.) I got it so that my girlfriend and I can both use the same desk. (Not at the same time!) The heights of the two different levels adjust independently via a crank.
Another thing that I needed was physical therapy to strengthen my back muscles. Certain muscles in my back had so atrophied after 12 years of hunched over a keyboard, that it had become impossible for me to maintain a posture that was healthy for my back.
It's been about 19 years since making the above changes, and I've been fine since.
Well, I know that if I go to the "IT" section of most job sites I see everything from "senior software engineer" to "windows support monkey", so he's mostly right. For that matter acting like all admins are dumb janitors and all programmer from genius engineers is pretty typical fresh from college arrogance.
Hear, hear! I've worked as a Unix sysadmin and as a software developer on such cool projects as x-ray space telescopes, brain surgery software, and a large RNA Interference library, which is being used to (hopefully) cure cancer. When I was a sysadmin, one of my fellow syadmins had a masters in CS from Stanford and had developed expert systems. Another one went on to write one of the early books on Perl.
And, to answer the OP, I have never found my prior sysadmin experience to hurt me as a software developer. I've never had any problem finding a job. The only downside is sometimes getting roped into helping with sysadmin stuff from time to time.
Re auto mechanics, two of the most famous auto mechanics, Click and Clack, both have MIT degrees.
(1) The Earth is a planet, more or less like any other planet in the universe. It's just the one that we happen to live on.
(2) The Earth is the center of the universe, and the laws of motion and gravity are extremely complicated.
Most people don't realize this, but the details for #2 can be worked out; it's just that we reject this theory by Occam's Razor. There is, however, absolutely no way to experimentally determine whether theory #1 or theory #2 is the correct one.
The theory of multiverses is like theory #1. It makes our theories simpler, and makes us less in the center of things. If John Horgan must assert that theories of multiverses are a moral outrage, then he must also assert that theory #1 is a moral outrage. The Earth is the center of the universe after all.
The assertion that we are going to heaven when we die has absolutely no evidence for it whatsoever. The existence of parallel universes, however, has a lot of evidence for it, albeit indirect. There's a huge difference.
You want to see the evidence? Look no further than here.
This might seem fanciful, but it is something that we can actually test. Although we cannot put human beings in a box for ethical reasons, we can put increasingly large systems in the box that act as "observers" of some particle (by engineering an interaction between the observer and the particle) and then perform interference experiments to determine whether the wave function in the box has collapsed or not.
I believe that the Many Worlds interpretation and Bohm's interpretation are fundamentally indistinguishable from each other experimentally. In Bohm's interpretation, the wave function also never collapses, but it does push around particles, which turn out to be classical in nature. So, in some sense, Bohm's interpretation is the same thing as the Many Worlds interpretation, only all those worlds exist only as pilot waves to push about the particles in the actual world.
Whether or not many worlds being actual is more true to Occam's Razor than there being an unimaginable number of phantom pilot waves pushing on matter in a single actual world, is left as an exercise for the reader.
If you want to get the actual scientific scoop on multiverses, as opposed to John Horgan's myopic rant, check out this excellent article by renowned cosmologist Max Tegmark. It was the cover story in Scientific American a few years ago.
John Horgan is utterly misguided. He has apparently decided, for instance, that the entire field of Cosmology is a moral outrage because it doesn't gel with his myopic notion of how science should work. But contra to what he asserts, Science does not require direct evidence. No one will ever see a quark, for instance, with their own eyes. Or even with a microscope. We know that quarks are there because when we theorized their existence, it made our theories simpler and gave them more predictive power. Likewise for multiverses.
In any case, you don't have to take my word that multiverses are on sound scientific footing. There's an excellent article on the topic by the renowned cosmologist Max Tegmark in Scientific American here.
|>ouglas
P.S. Don't take any of this to mean that multiverses are now an accepted scientific fact, but they are a very plausible scientific theory for which we do have a significant amount of evidence. Also, Horgan's notion that scientists should stick to the more mundane is ridiculous. Scientific theories that promote wonder (especially if they have a good chance of being true) are essential for generating interest in science amongst the general populace, and for enticing future generations of scientists.
They just want to CHARGE you for 100% of device maintenance and support. It's $$$, not smarts.
This whole thread is the dictionary photo for the term "tempest in a teapot". Who cares what kind of screw Apple uses for iPhones??? They probably chose the new screw because it's less likely to get stripped. (I speak from hard experience, as I had a torx screw in a hard-to-reach place get stripped while hacking a TiVo to have more disk space.) Why would I want to open my iPhone anyway? And if I did, I'd just buy a screwdriver for it for the cost of a few bucks and with a minimum of whining. Besides, if it requires a special screwdriver, it increases my hacker creds.
I've been a Java/C++/PHP developer for about 6 years now. However, I'm seeing the jobs for these languages dry up
Where are you??? For Boston, where I live, there are currently 527 jobs listed on Dice for Java, 221 for C++, and 107 for PHP. I'm a big fan of Python, and I highly recommend learning it, but I think that most software in the future is going to be for VMs. I.e., for the JVM,.Net, and JavaScript, which is the defacto browser VM. For the foreseeable future, there's also always going to be demand for good C++ programmers, since you often need to get down to the metal.
So, the executive summary is that you're doing fine. Though you should definitely also learn Javascript. I recommend the book Javascript: The Good Parts. It's a great book, and it's short, and it shows that Javascript is actually a fine language if you ignore the bad parts. For Javascript, you should also learn jQuery, which is a library that makes manipulating the DOM much easier.
Personally, I've moved recently from doing mostly C++ and Python to doing mostly Java, due to my belief that most development is going to be done for VMs. I'm also learning Clojure, since it gives you the beauty and power of Lisp, and the huge library of stuff available for the JVM. I'm also going to learn Scala, which is also a JVM programming language. I don't expect that I'll have zillions of job offers for either Clojure or Scala programming rolling in anytime soon, but it's fun to learn better ways to do things.
I'm not so sure I would have wanted to work on a project with a couple of dozen programmers all working on a giant Python programmer.
Actually, that sounds like it would be pretty awesome, if only because once we finished we could use him to intimidate Stroustroup.
That would indeed be pretty awesome! I bet it would make a great anime too.
It's too bad that I do most of my programming these days in Scala, though. Maybe we should work on a giant Scala programmer too.
|>ouglas
Seven: each time you mention the speed issue, which obviously exists and thoroughly limits python, the only response consists of ad-hominems.
I almost forgot about that one.
Whoever said that Python is the best tool for every problem? That's a strawman. Every programming language has its limitations. No programming language is perfect for every task. Because a tool isn't perfect for every task, doesn't mean that it isn't well-suited to a large set of particular tasks. In this case, the particular task under consideration is to be an introductory programming language, and even more particularly, a substitute for Basic. The fact that it makes a great introductory programming language is well-proven by the fact that it is used as the introductory programming language at one of the three finest Computer Science programs in the world. The performance of tight loops for this particular task is of little relavance. Likewise for the vast majority of scripting tasks, which is one of Python's primary niches. Scripting is typically limited by i/o, not by cpu.
If you don't wish to be subject to ad hominem, post something thoughtful and reasoned rather than merely lazy flamebait.
|>ouglas
While I am very reluctant to mention this problem : speed. Now I am very, very tolerant of speed issues in scripting languages, as I know it doesn't really matter. But python ... python is an absolute disaster.
You apparently weren't all that reluctant, since you went on for quite a few paragraphs, and yet little of what you said had any merit. First of all, what does anything you have to say have to do with whether or not Python makes a decent introductory programming language? Python is the introductory programming language at MIT. Are you saying that you know better than the entire MIT Electrical Engineering and Computer Science faculty. Furthermore, you seem completely oblivious to the tradeoffs between dynamically typed and statically typed languages. As a result of these tradeoffs dynamically typed and statically typed languages excel and different sorts of things. For large projects, statically typed languages often fair better, due to catching errors earlier. For smaller projects, however, the flexibility of dynamically typed languages is often a huge boon. For instance, I've completed programming projects in a day in Python that would have taken me a month in C++. On the other hand, I'm not so sure I would have wanted to work on a project with a couple of dozen programmers all working on a giant Python programmer.
Regarding speed, Python is not particularly slower than other scripting languages. It is about the same speed as Perl. It is much faster than either Ruby or Tcl. The kind of rant you have made, which demonstrates absolutely no understanding of the tradeoffs involved or of the advantages of the technology that you criticize, is almost always uninformed flamebait that speaks more about the author of the flamebait than of the topic under discussion.
|>ouglas
I know this is neither here nor there, but I was a software engineer for RXTE and I snuck Kate Bush lyrics into an unused part of one of the ROMs.
|>ouglas
P.S. Peek-a-boo, little Earth.
There is nothing spooky in quantum mechanics
Sure there is. Or there very well might be. Nobody understands the Copenhagen Interpretation of quantum mechanics because it is ill-defined. If on the other hand, the correct interpretation of quantum mechanics is the Many Worlds/Everett Interpretation, then the entire universe is in an incredibly complex macroscopic superposition of states all the the time, amounting to a staggeringly large number parallel worlds. Most people will claim that this is "spooky". In fact, the spookiness of it, is typically the only reason given to reject the Everett Interpretation.
Also, if the Everett Interpretation is correct, no one understands why we observe quantum coin flips that are anything other than 50/50.
|>ouglas
I've heard Scala is also gaining popularity, but it's really just baby ML running on the JVM.
By that argument, F# is just baby ML running on the CLR. I'm pretty sure that you're going to get the same functional goodness out of Scala that you are going to get out of ML. All of these are gateway drugs to Haskell, but once you catch that bug, you're no longer employable.
So, I guess one really should learn Clojure instead.
|>ouglas
Learn to program in Scala–it puts the joy back into programming. Python too, if you don't already know it. Here's the xkcd comic on Python, just in case you haven't already seen it:
http://xkcd.com/353/
Also, get a job at a university working on a research project. That way you're actually doing something meaningful with your life.
|>ouglas
Oh, and also, if you're running something like RedHat on your web server, you might want to be able to use their gui configuration programs remotely.
|>ouglas
Why would you have it on a webserver?
So when you log into the web server using ssh you can use xterm and emacs and xmore and xman a myriad of other X11 clients that you might wish to run. Though 99% of the time it would just be xterm and emacs.
|>ouglas
Who installs X on a server?
Actually, every server I've ever logged into has had X11 on it. (And I've logged into hundreds of different servers over the years.)
Or they've had the X11 clients in any case. If you don't know why this would be a common thing to do, I guess you're not that familiar with X11.
|>ouglas
You're the one making the mess, not your coworker. It's anti-social to set your tab space to anything other than 8 if you share files with anyone else. Terminals always use a 8-spaces to a tab, so if you change your tab setting, then your files don't look right when catted to the terminal or output with "more" or "less" or printed using "lpr", etc., etc., etc.
Re 8 spaces automatically getting turned into tabs: yes Emacs will do this automatically. The reason for this is that the meaning of tab is well defined, so there is no reason to avoid doing what Emacs does. Unless of course someone works with people like you. Which is why everywhere I've worked we've just had a no tab policy. That readily shuts down the pointless debate. I.e., you're not allowed to have tabs in any files that you check in. Fortunately, you can tell Emacs that this is what you want.
|>ouglas
Really, Python's problem is that both spaces and tabs are legal
Set your tab width to 8 spaces, you damn hippy!
|>ouglas
Or maybe not, those Harvey Mudd ones might not be "legit" ;^)
Yes, I'm sorry. The lectures that I was thinking of are from Cornell, not Harvey Mudd. It's been ages since I watched them. I.e., well before YouTube, and I had to go to lecture hall at MIT to watch them, when they would show them once every year or two.
In any case, despite what Fenman may or may not think about the efficacy of instruction, his lectures have inspired many and they still do. Instruction may be overrated at times, but inspiration isn't. Also, I shouldn't think that it would be at all controversial to cite the truism that if you want to be a great writer you should read and steal from other great writers. The same is true in most other fields. Sure, you can study the greats anywhere, to the extent that you have access to what they have written. But, isn't it easier to study the greats if you go to be where they are? Going to MIT, for instance, gives you immediate access to many of them. They don't keep them locked in some ivory tower, where you can't get to them. They come down and teach freshman classes and let you do research for them.
Also, in fast moving technological fields, they may not have written a textbook, or even published yet. If you're somewhere else, then you may have no access at all. Additionally, it was certainly true when I was an undergrad, that my friends who studied at other colleges often used textbooks written by people who were either decidedly not great, or that were rather out of date.
|>ouglas
Unique, no? But at most places it's much less pervasive than at MIT for students to do research with the best professors. I also attended Harvard for a bit and worked at a research lab there. It was hard for us to find Harvard students as interns because it apparently just wasn't much in the Harvard culture for undergraduate students to work with professors or scientists. We had to recruit our interns mostly from other schools.
At MIT, however, the UROP program (Undergraduate Research Opportunity Program) is utterly pervasive and well-funded. I.e., professors are very eager to hire undergraduates because most of the wages for the UROP students will come from a central pot of money, and they are guaranteed that any student they hire is smart.
|>ouglas
The difference is that nearly every tenured professor at MIT is world famous in their field. And almost all of the freshman classes are taught by such tenured professors. At many universities, teaching freshman classes is considered the shit-work. At MIT the professors fight over who should have the honor.
I've just casually mentioned at times that I took a class by such-and-such at a party, or whatever, and someone will say, "OH MY GOD!!! I can't believe you were taught by Susan Carey! [Or whomever.] She's the world's leading expert on childhood development." Well, huh! I didn't even know, but she was an excellent teacher.
At less prestigious schools, you may have the occasional class taught by someone so distinguished. At MIT, it's the rule rather than the exception.
There's a reason that prestigious schools are prestigious, and everyone should strive to get the best education that they can afford.
|>ouglas
I didn't mean to imply that you can't get a great education elsewhere. What I'm saying is that at MIT (and other such prestigious universities) you are practically guaranteed to get not just a first class education, but an inspiring education. E.g., in all my life, I have never seen any other teachers who are as inspiring as Sussman and Ableson were.
There's something about your reply that is indicative of the difference between an MIT education, and the education that you apparently got: MIT doesn't even offer a course in data structures. You are taught such stuff just along the way in other classes that are actually teaching you something interesting. E.g., MIT's CS 101 class, in which you learned data structures along the way, was all a joyous ode to functional programming. You'd pick up more on data structures in the class on software engineering and more in an algorithms class. You'd never stop to lazily rest on merely data structures. MIT has since taken this even further. There now is no CS101 class at all. You are taught CS101 just along the way in the engineering 101 class, which is all centered around robotics.
Is this better than the kind of education that you might get elsewhere. Maybe not, but you are guaranteed to get an incredible education at MIT. Elsewhere, who knows? Maybe you will, maybe you won't.
Re being taught by famous people, aka great minds: The difference is something you might not be able to appreciate until you've been taught by great minds. Watch all the online SICP lectures from 1985 if you want to have a clue about how inspiring it can be. Or watch the Feynman lectures from Harvey Mudd. Keep in mind that these talks are all a bit dated, and the concepts explicated have now propagated into the world at large. Imagine learning these things before any one else learned them. Imagine being a decade or two or three ahead of your peers in your field of study. E.g., programming languages are just now clamoring to add closures to the language. I lived, breathed, and dreamt closures 30 years ago in MIT's CS101. And many of the classes I took at MIT had no text book, only xeroxed course notes because the textbook had not yet been written.
|>ouglas
The following equipment saved my career. You likely cannot imagine the amount of agony I was in at one point until I aggressively moved to using ergonomic equipment and making sure that my work environment was set up ergonomically. E.g., having the monitor directly in front of my, rather than off to the side.
The most important piece of ergonomic equipment was the Kinesis Contour Keyboard:
http://www.kinesis-ergo.com/contoured.htm
A typical keyboard seems designed to destroy your hands. The Kinesis keyboard, on the other hand, is not. It has a quite a few refinements that make it much easier on the hands than a typical keyboard. I feel that without this keyboard, I would have ended up on disability.
Another change that was required was a very adjustable chair. Most chairs that you will find in a work place are not adjustable to your individual body. Also many chairs have inadequate lumbar support. If the chair you are given just so happens to be right for you, then you are lucky, but most likely it is far from optimal. If the chair does not fit you properly, you should get a chair that can be adjusted so that you can always sit in it with a good posture.
Chairs, however, are more personal than keyboards. I think that the Kinesis keyboard mentioned above is perfect for almost everyone. For chairs, you might want to visit a store that has many different models that you can try out. This is the chair that I ended up with, and I also credit it with saving my career:
http://www.ergogenesis.com/2507.php
BodyBilt makes very adjustable chairs. Unfortunately, such adjustability does not come cheap. I purchased this chair with an inflatable lumbar support, which lets one adjust precisely how much lumbar support it provides. I also purchased it with "linear tracking arms", which are a huge win, especially for using the mouse. I don't know of any other chair that has such arms as an option.
The linear tracking arms are shown on this page. You'll have to scroll down a bit:
http://www.ergogenesis.com/arm_options.php
These armrests have low-friction ball bearings in them and they slide and rotate effortlessly to follow your arms around. This greatly reduces stress on your back and shoulders, while still allowing you to move your mouse around freely.
It is also important that your desk be at the right height. The standard desk height is designed for someone who is six feet tall. This is fortunate for me, as I am six feet tall. If you are not this height, however, it makes sense to get an adjustable height desk. E.g., something like this:
http://www.shopbrodart.com/furnishings/tables/computer/_/Balt-Ergonomic-Split-Level-Tables
I have a desk like this one. (Though the one I have is made by KI.) I got it so that my girlfriend and I can both use the same desk. (Not at the same time!) The heights of the two different levels adjust independently via a crank.
Another thing that I needed was physical therapy to strengthen my back muscles. Certain muscles in my back had so atrophied after 12 years of hunched over a keyboard, that it had become impossible for me to maintain a posture that was healthy for my back.
It's been about 19 years since making the above changes, and I've been fine since.
|>ouglas
Well, I know that if I go to the "IT" section of most job sites I see everything from "senior software engineer" to "windows support monkey", so he's mostly right. For that matter acting like all admins are dumb janitors and all programmer from genius engineers is pretty typical fresh from college arrogance.
Hear, hear! I've worked as a Unix sysadmin and as a software developer on such cool projects as x-ray space telescopes, brain surgery software, and a large RNA Interference library, which is being used to (hopefully) cure cancer. When I was a sysadmin, one of my fellow syadmins had a masters in CS from Stanford and had developed expert systems. Another one went on to write one of the early books on Perl.
And, to answer the OP, I have never found my prior sysadmin experience to hurt me as a software developer. I've never had any problem finding a job. The only downside is sometimes getting roped into helping with sysadmin stuff from time to time.
Re auto mechanics, two of the most famous auto mechanics, Click and Clack, both have MIT degrees.
|>ouglas
There are two theories:
(1) The Earth is a planet, more or less like any other planet in the universe. It's just the one that we happen to live on.
(2) The Earth is the center of the universe, and the laws of motion and gravity are extremely complicated.
Most people don't realize this, but the details for #2 can be worked out; it's just that we reject this theory by Occam's Razor. There is, however, absolutely no way to experimentally determine whether theory #1 or theory #2 is the correct one.
The theory of multiverses is like theory #1. It makes our theories simpler, and makes us less in the center of things. If John Horgan must assert that theories of multiverses are a moral outrage, then he must also assert that theory #1 is a moral outrage. The Earth is the center of the universe after all.
|>ouglas
P.S. I just pwned that guy.
no. it was fair criticism. you just didn't get it
No, it was not fair criticism. And I did get it.
The assertion that we are going to heaven when we die has absolutely no evidence for it whatsoever. The existence of parallel universes, however, has a lot of evidence for it, albeit indirect. There's a huge difference.
You want to see the evidence? Look no further than here.
|>ouglas
This might seem fanciful, but it is something that we can actually test. Although we cannot put human beings in a box for ethical reasons, we can put increasingly large systems in the box that act as "observers" of some particle (by engineering an interaction between the observer and the particle) and then perform interference experiments to determine whether the wave function in the box has collapsed or not.
I believe that the Many Worlds interpretation and Bohm's interpretation are fundamentally indistinguishable from each other experimentally. In Bohm's interpretation, the wave function also never collapses, but it does push around particles, which turn out to be classical in nature. So, in some sense, Bohm's interpretation is the same thing as the Many Worlds interpretation, only all those worlds exist only as pilot waves to push about the particles in the actual world.
Whether or not many worlds being actual is more true to Occam's Razor than there being an unimaginable number of phantom pilot waves pushing on matter in a single actual world, is left as an exercise for the reader.
|>ouglas
If you want to get the actual scientific scoop on multiverses, as opposed to John Horgan's myopic rant, check out this excellent article by renowned cosmologist Max Tegmark. It was the cover story in Scientific American a few years ago.
|>ouglas
John Horgan is utterly misguided. He has apparently decided, for instance, that the entire field of Cosmology is a moral outrage because it doesn't gel with his myopic notion of how science should work. But contra to what he asserts, Science does not require direct evidence. No one will ever see a quark, for instance, with their own eyes. Or even with a microscope. We know that quarks are there because when we theorized their existence, it made our theories simpler and gave them more predictive power. Likewise for multiverses.
In any case, you don't have to take my word that multiverses are on sound scientific footing. There's an excellent article on the topic by the renowned cosmologist Max Tegmark in Scientific American here.
|>ouglas
P.S. Don't take any of this to mean that multiverses are now an accepted scientific fact, but they are a very plausible scientific theory for which we do have a significant amount of evidence. Also, Horgan's notion that scientists should stick to the more mundane is ridiculous. Scientific theories that promote wonder (especially if they have a good chance of being true) are essential for generating interest in science amongst the general populace, and for enticing future generations of scientists.
They just want to CHARGE you for 100% of device maintenance and support. It's $$$, not smarts.
This whole thread is the dictionary photo for the term "tempest in a teapot". Who cares what kind of screw Apple uses for iPhones??? They probably chose the new screw because it's less likely to get stripped. (I speak from hard experience, as I had a torx screw in a hard-to-reach place get stripped while hacking a TiVo to have more disk space.) Why would I want to open my iPhone anyway? And if I did, I'd just buy a screwdriver for it for the cost of a few bucks and with a minimum of whining. Besides, if it requires a special screwdriver, it increases my hacker creds.
|>ouglas
I've been a Java/C++/PHP developer for about 6 years now. However, I'm seeing the jobs for these languages dry up
Where are you??? For Boston, where I live, there are currently 527 jobs listed on Dice for Java, 221 for C++, and 107 for PHP. I'm a big fan of Python, and I highly recommend learning it, but I think that most software in the future is going to be for VMs. I.e., for the JVM, .Net, and JavaScript, which is the defacto browser VM. For the foreseeable future, there's also always going to be demand for good C++ programmers, since you often need to get down to the metal.
So, the executive summary is that you're doing fine. Though you should definitely also learn Javascript. I recommend the book Javascript: The Good Parts. It's a great book, and it's short, and it shows that Javascript is actually a fine language if you ignore the bad parts. For Javascript, you should also learn jQuery, which is a library that makes manipulating the DOM much easier.
Personally, I've moved recently from doing mostly C++ and Python to doing mostly Java, due to my belief that most development is going to be done for VMs. I'm also learning Clojure, since it gives you the beauty and power of Lisp, and the huge library of stuff available for the JVM. I'm also going to learn Scala, which is also a JVM programming language. I don't expect that I'll have zillions of job offers for either Clojure or Scala programming rolling in anytime soon, but it's fun to learn better ways to do things.
|>ouglas