Reputation
3,335
Next privilege 5,000 Rep.
Approve tag wiki edits
Badges
12 18
Newest
 Enlightened
Impact
~252k people reached

Jun
2
comment What's the difference between computer science and programming?
That's a little bit narrow. At the very least, the "Algorithms, Machines and People" lab at my university would like to disagree :). And that lab contains some of the top CS researchers, period. Also all the HCI people everywhere. I'm being a little facetious, but CS is really more broad than just algorithms and math.
Jun
2
comment What's the difference between computer science and programming?
Also, most of the people I know working as programmers don't do it for the money (although the money certainly doesn't hurt!): they do it because they love programming and they love making stuff and they love solving hard problems. Some of the smartest people I know could be making far more money in finance or the like, but instead they work for a startup or Google or Facebook just because they really love it. (Of course the salaries there aren't shabby either.)
Jun
2
comment What's the difference between computer science and programming?
Except it's not really a "science" in the same way as physics or chemistry: we don't even pretend to follow the scientific method. Even the "soft" sciences do experiments with control groups and the like; CS has more in common with engineering and math than actual science.
Jun
2
comment What's the difference between computer science and programming?
I don't think you should tie CS (despite the name) too closely to computers: first and foremost, it is the study of information. It just happens that the term "computer" encompasses most of the different physical tools we use to work with information, so almost any study of information is going to involve programming a computer.
May
31
awarded  Nice Answer
May
30
comment Maybe monad vs exceptions
Also, regarding (1): you could easily write a monad that can carry error information (e.g. Either) that behaves just like Maybe. Switching between the two is actually rather simple because Maybe is really just a special case of Either. (In Haskell, you could think of Maybe as Either ().)
May
30
answered Maybe monad vs exceptions
May
30
comment Maybe monad vs exceptions
@Oak: that's true, but that wasn't really my point. What I'm saying is that you get null checking exactly like that (e.g. if Nothing then Nothing) for free because Maybe is a monad. It's encoded in the definition of bind (>>=) for Maybe.
May
30
comment Maybe monad vs exceptions
@Oak: Regarding (3), the whole point of treating Maybe as a monad is to make the propagating None implicit. This means that if you want to return None given None, you do not have to write any special code at all. The only time you need to match is if you want to do something special on None. You never need if None then None sort of statements.
May
30
comment Why is the “kill” command called so?
To be entirely fair, the difference between moving and renaming a file is rather arbitrary. "Renaming" a file is just moving it to a different location which happens to be in the same directory.
May
19
revised Why isn't rich code formatting more common?
edited body
Apr
19
comment Do real-world algorithms that greatly outperform in the class below exist?
I think it's also partly historical--the algorithm for turning a regular expression into a DFA was patented when some of the earlier tools (sed and grep, I guess) were being developed. Of course I heard this from my compilers professor who wasn't entirely sure, so this is a third-hand account.
Apr
19
comment Should a new programmer focus on a single technology until he's proficient at it?
This is why I think SICP is the perfect introductory text--it covers a bunch of different ideologies in a uniform manner; you get to reuse syntax (sexps) and concepts while learning about functional programming, OOP, logic programming and even low-level register-based programming.
Apr
11
comment What are some characteristics of Python that makes it unique as its own language?
If you think Python has low syntactic overhead (despite having an obscenely complicated grammar and a relatively large amount of syntax sugar), what do you think of Scheme?
Apr
11
comment How were some language communities (eg, Ruby and Python) able to prevent fragmentation while others (eg, Lisp or ML) were not?
@root45: Don't Python libraries fail to work on alternative implementations (e.g. PyPy) with reckless abandon?
Mar
22
answered What do you use macros in your editor for?
Mar
22
comment Why was Tanenbaum wrong in the Tanenbaum-Torvalds debates?
@MasonWheeler: Of course. Anybody can pick up Ubuntu and use it with no command line stuff at all. My roommate--certainly not super tech literate--had no problems moving from Windows to Ubuntu. Other people I know using Ubuntu--varying in experience but all not experts--have not had any problems either. My old roommate last year had more problems with his Mac than my current roommate does with Ubuntu, at similar levels of computer experience. (Even printing, of all things, was easier by far on Linux than on the Mac!) So the whole Linux command line thing is a gross misrepresentation.
Mar
17
comment Are operators clearer to read than keywords or functions?
Well, Haskell lets you define arbitrary operators and set their precedence and associativity. The difference is that you can't overload operators per se--they behave like normal functions. This means you can't have different libraries trying to use the same operator for different things. Since you can define your own operator, there's much less reason to reuse the same ones for different things.
Mar
16
comment Are operators clearer to read than keywords or functions?
If users can add operators, why not let them set the precedence and associativity of the operators they've added?
Mar
16
comment Are operators clearer to read than keywords or functions?
@comingstorm: I actually think the Haskell way is better. When you have a finite set of operators that you can overload in different ways, you're often forced to reuse operators in different contexts (e.g. + for string concatenation or << for streams). With Haskell, on the other hand, an operator is either just a function with a custom name (that is, not overloaded) or part of a type class which means that while it's polymorphic, it does the same logical thing for every type, and even has the same type signature. So >> is >> for every type and is never going to be a bit shift.