Science attempts to understand the real world using empirical evidence and testing. Programmers attempt to understand computers by unit tests and trial and error. If the world was perfect, computing science would be "advanced math" and not a science. One would simply prove his program correct the same way one reasons about math. When you do math, you don't throw a bunch of unit tests on your math, you just prove your math to be correct or incorrect using reasoning and passing around your math to other peers. In computing science people take the science approach or engineering approach instead of the math approach: let's test this sh*t, to hell with proving it. It would take millions of years to test all integer values in math to ensure for example that all even numbers really are even (how do we know, until we unit test every single one of them and divide all even integers by two, to make sure they really are even?). So computing science is a science because, of empirical testing we do on programs. In a utopian society, computing science would be pure math, not science, which would allow infinite mental masturbation and zero work be gotten done.
Name:
Anonymous2015-09-15 5:02
oh shit i just got tricked
Name:
Anonymous2015-09-15 5:26
So what is Computer Science. In SICP were they trying to say that CS is all about imperative knowledge. Or am I retarded.
Name:
Eve is Adams Wife2015-09-15 6:19
computer science is the study of physical computers, such as the circuits that make a computer work. It is the study of transistors, capacitors, memory, and has nothing to do with programming.
Name:
Anonymous2015-09-15 16:42
>>4 In the past, computer scientists would look at the world and try to understand it, like any other science.
Computer science is abstract bullshite that you will never understand.
Name:
Adamer on Evening2015-09-15 23:40
>>8 In the past, mathematicians would look at their equations and try to understand it, unlike science which looked at the real world, not just equations that people made up. Programs are made up, they don't exist as physical electrons or atoms. If you create a brand new language like Haskell or Lisp, you could then create a million other languages from these languages - physics studies finite physical laws that already exist, not new physics that people make up in their heads. For example, ruby was made up by someone. It doesn't exist physically but exists as information. If anything, computing science is related more to Information theory than any other part of science.
>>12 Computer science is not abstract bull shit, computer science is the study of computers (cpu's, memory, transistors). Computing science is the abstract bullshit.
lol when it's actually the other way around welcome to the matrix, idiot
Name:
Seinfield2015-09-16 1:16
>>16 Welcome? No, you're not welcome. You're a slave being used as a tool. Evolution is being simulated and you are a lab rat being studied. You've been had. There's nothing liberating about being part of slavery.
Name:
Reptilian2015-09-16 1:54
>>17 Sending a grey to go and probe your ass tonight. I would not go to bed if I was you.
a grey would be too occupied studying Lisp on earth to bother with physical sciences and biology studies. Physics and biology and medicine are for wimps. That's so year 2000.
Name:
Reptilian2015-09-16 6:14
>>20 Greys are too occupied with probing human ass such as yours.
>>21 Are you sure you aren't talking to a grey through a keyboard right now
Name:
Anonymous2015-09-16 20:03
>>23 Computer philosophy is indeed what this crap is. Unit testing philosophy, object oriented philosophy, agregate oreinted philosophy, actor model philosophy - none of it is math or science. Well there are some maths in programming, but people tend to avoid it because unprofessionals get involved and crap all over the science and maths and turn it into philosophy. Even functional programming, which claims to be mathematical, is full of philosophical garbage largely unproven. Extraordinary claims require extraordinary evidence - in programming people fail to use evidence and say you should use OOP/functional/exceptions because it's better because I said so and that's my philosophy. Where's the evidence; extra, extra read all about it.
Name:
Anonymous2015-09-16 21:58
>>25 The evidence is in the maintainability and extendibility of code written in such style. You cannot tell me that logic that takes 200 lines of C code to express is easier to extend than logic that can be expressed in 10 lines of Haskell logic.
Name:
Anonymous2015-09-17 2:33
There's no computer or science in Computer Science. What's the deal with that?
Name:
Anonymous2015-09-17 3:17
>>26 To extend? The C is probably easier to extend. How are you supposed to modify something as dense and tightly knitted as Haskell?
Name:
Anonymous2015-09-17 16:12
A lot of programmers and computer scientists tend to confuse what with the how. It's an easy trap to fall into if you're only exposed to verbose imperative languages (no, it's not a Java bean you're sending over the connection, I have no beans in my code) because it's hard to see the forest for all the trees.
Object orienteers' are among the worst. If you want to treat everything as an object, fine. It doesn't make it so. That's just one way to look at it.
But people knee deep in declarative and purely functional languages make similar mistakes. No, not everything is really a monad. No, types aren't really algebraic. They are useful ways to look at things, sure, but there are other formalisms and ad-hoccery that are just as valid and useful in other contexts. An isomorphism is not equality.
>>31 What's the difference? Aren't they all Turing complete? Let me just fire up my unlambda interpreter that I wrote in Java so that I can execute my home made Haskell compiler to make my natural language structural editor in which I compose my masterpiece Shakespeare code.
Of course it's not, that's why we always carefully check the fulfillment of monad laws before calling something a monad. Oh, and trying to find monads everywhere is the right thing to do because it opens up a whole slew of library functions (that are monad-agnostic thanks to higher-kind polymorphism), and even more if you find a MonadPlus or some other typeclass.
No, types aren't really algebraic
I don't even know what you're complaining here. Go read about datatypes a la carte.
Name:
Anonymous2015-09-23 2:44
>>34 I think >>29-san's point is that, while you can treat a lot of things like monads, they aren't necessarily a great way to look at things.
Name:
Anonymous2015-09-23 2:58
Computers are science, dolt.
Name:
Anonymous2015-09-23 3:00
>>32 The difference is in the amount of programmer time it takes to get things done. I guarantee that it's quicker to complete something on the order of Quake 3 in C++ rather than doing it in Basic.
Of course it's not, that's why we always carefully check the fulfillment of monad laws before calling something a monad. Oh, and trying to find monads everywhere is the right thing to do because it opens up a whole slew of library functions (that are monad-agnostic thanks to higher-kind polymorphism), and even more if you find a MonadPlus or some other typeclass.
Don't get me wrong, monads are great, and being able to treat a new thing as a monad can simplify code a lot, like applying any abstraction. But I don't think it's useful to think of imperative programs as really being inside of the state monad. An object orienteer sees everything as objects, and Paul Graham thinks that everything really is a list, but I think you'd object to both of those notions. As humans, once we start recognizing a pattern we tend to see it everywhere, and there's a risk that we mistake the abstract idea to be the underlying reality. There are infinite axioms to choose from and theorems to derive. Who's to say which set of ideas are the right ones?
No, types aren't really algebraic
I don't even know what you're complaining here. Go read about datatypes a la carte.
I wasn't referring to the expression problem. I also don't think it's a big deal. And don't worry, Pierce's brick wall book is on my shelf.
What I'm getting at here is that I think that it's useful to talk about e.g. arrays as such. You could of course see them as algebraic types, i.e. homogeneous tuples. It's just that your pattern matches become infinitely big to handle all sizes. You might want to forget about them (who needs them anyway) and restrict them to being just a way to implement tuples or records, or a special case of lists (that happen to be cdr-coded). But I think it's stupid to restrict your thinking this way. It's even worse to insist that the patterns you use to describe problems is the right one.
Of course, you wouldn't think this way, and I'm not putting words in your mouth. But some do, and I find them irritating.
Name:
Anonymous2015-09-23 18:47
>>38 While it's not wrong, people often refer to monads saying things like "the State Monad" or "the IO Monad." However given the situation, those people use the word incorrectly as if monads were nouns. They're really more adjectives, so those people should refer to State and IO as "Monadic."
This imperative block of code is monadic. These combination of list functions are monadic. etc.
===
Monads are a formal way of describing a context. It's an analogous word for 'contextual.' It's not the actual context.
While many things do have monadic properties, it's not necessary to acknowledge it.
Name:
Anonymous2015-09-24 17:06
>>38 The obvious problem with what you said was it reads like "no type is truly algebraic", and now you've gone down a similar path saying something that reads like "since not all types are algebraic, algebraic types are stupid." Your talk about monads goes the same way.
No, they're burritos, you idiot! Ultimately, monads are just types of a certain class that satisfy certain laws. You cannot make this definition any more specific without cock-blocking some monads. If you think that monads are "a formal way of describing a context", then you're precluding yourself from thinking about a certain subset of monads as monads. Which is just stupid and wrong.
the one thing that would completely destroy prog is self confessed haskell programmers coming here to explain "monads" to us. We already know. We don't care. Go away.
>>45 Monads are shit, so you're saying (s)he doesn't know monads. How do you know (s)he doesn't know monads?
Name:
Anonymous2015-09-26 19:59
>>46 If he were a she, we'd instantly know she doesn't know monads, since women are too busy caring about rape culture and political correctness to learn about monads.