Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

SICP: It's Crassly Pretentious

Name: Anonymous 2008-06-28 9:48

Name: Anonymous 2008-06-28 10:05

This book is filled with pompous statements and philosophical discussions. Who cares? No one. Instead of teaching really useful things, such as algorithms, or tecnhiques, the text spends huge amounts of space on pointless philosophical discussions. For example, when assignments are introduced...(e.g. x = x + 1), the authors take up a boring discussion about the conceptual difficulties and implications this introduces into the language. Again, who cares? Millions of lines of code are written in C every year and everything works just fine. You can tell from the book's preface that the aim isn't to teach you programming, but instead to philosophise about conceptual issues...whatever that means. In other words, this text belongs more in a philosophy course than in a computer science course. There's more talk here, and less real action. It supposedly teaches you how to think about programming, but that is already accomplished by C courses, which teach objects and functions.

Name: Anonymous 2008-06-28 10:20

This book is readable. I can't say it's fun or easy to understand, but a *few* concepts might seem interesting. However, the large majority of things introduced can't be applied. Streams, for example, are introduced to alleviate the bottlenecks created by Scheme in conjunction with poor code planning earlier in the book. They are completely irrelevant to languages like C/C++. The same with other things here. Mildly curious but nothing useful and certainly no profound theories, as some would have you believe.
lol

Name: Anonymous 2008-06-28 11:47

(+ x 1)

Am I doing it right?

Name: Anonymous 2008-06-28 12:10

>>4
(+1 x)

Name: Anonymous 2008-06-28 13:12

>>5
NOT valid in R6RS. neither is 1+, as is used in common lisp.

Solution for all your problems:
(add1 x)

Name: Anonymous 2008-06-28 13:13

>>6
no one cares about r6rs hth :-)

Name: Anonymous 2008-06-28 15:09

>>5
Expert Haskell partial application.

Name: Anonymous 2008-06-28 16:21

>>8
It's called currying, darling.

Name: Anonymous 2008-06-28 16:34

>>9
It is not. Read YAHT.

Name: Anonymous 2008-06-28 19:36

Name: Anonymous 2008-06-28 23:58

>>11
It's commonly referred to as "Wizard Book," due to its featuring a wizard on the cover.  Cf "Dragon Book."
I hope this has been educational. :-)

Name: Anonymous 2008-06-29 0:05

>>12
The more you know.

Name: Anonymous 2008-06-29 7:21

>>12
:-)

Name: Anonymous 2008-06-29 7:27

"After reading this book, I went away having learned absolutely nothing. I knew about good program design techniques, such as abstraction, but I haven't been taught anything more."

"A better idea would be to get a nice, thick book on any specific topic after you learn the basics of programming from a C text."

Name: Anonymous 2008-06-29 8:55

Hi, Do you like lisp? When I first stumbled into Lisp advocacy on various corner
s of the web I was already an EXPERT PROGRAMMER. At that po
int I had grokked what seemed at the time a wide range of programming languages.
 I was proud to have under my belt (Java, C, C++, C#, C-, FORTRAN, BBCODE, etc.)
 I was under impression that I knew EVERYTHING there is to know about programmin
g languages, I had written HUGE PROGRAMS you couldn't even COMPREHEND at age 12.
 I couldn't have possibly been more wrong. My initial attempt to learn Lisp came
 to a crashing halt as soon as I saw some sample code. I suppose the same though
t ran through my mind that ran through thousands of other minds who were ever in
 my shoes: "OMG WTF LOOKS SHIT WTF IS UP WITH THAT ())()))))(((() F
UCK!!!!11111" I couldn't be bothered to learn a language if its creators couldn'
t be bothered to give it a BBCode like syntax. After all, I was almost blinded b
y the infamous suave space toad Lisp! For many months the Lisp advocates pressed
 on. I was baffled. Many extremely intelligent people I knew and had much respec
t for were praising Lisp with almost religious dedication. There had to be somet
hing there, something I couldn't afford not to get my hands on! Eventually my th
irst for knowledge won me over. I took the plunge, bit the bullet, got my hands
dirty, and began months of mind blending exercises. It was a journey on an endle
ss lake of frustration, I am stupid fuck. I turned my mind inside out, rinsed it
, and put it back in place. I went through seven rings of hell and came back.

And then I got it.

I KNOW LISP.
I AM SO SMART.
I AM SO EXPERT, NOW I KNOW EVERYTHING ABOUT PROGRAMMMING, I DONT HAVE TO LEARN A
NY OTHER LANGUAGE EVER.

Name: FUUUUUUUUUUUUUUUUUCK 2008-06-29 8:56

Hi, Do you like lisp? When I first stumbled into Lisp advocacy on various corners of the web I was already an EXPERT PROGRAMMER. At that point I had grokked what seemed at the time a wide range of programming languages. I was proud to have under my belt (Java, C, C++, C#, C-, FORTRAN, BBCODE, etc.) I was under impression that I knew EVERYTHING there is to know about programming languages, I had written HUGE PROGRAMS you couldn't even COMPREHEND at age 12. I couldn't have possibly been more wrong. My initial attempt to learn Lisp came to a crashing halt as soon as I saw some sample code. I suppose the same thought ran through my mind that ran through thousands of other minds who were ever in my shoes: "OMG WTF LOOKS SHIT WTF IS UP WITH THAT ())()))))(((() FUCK!!!!11111" I couldn't be bothered to learn a language if its creators couldn't be bothered to give it a BBCode like syntax. After all, I was almost blinded by the infamous suave space toad Lisp! For many months the Lisp advocates pressed on. I was baffled. Many extremely intelligent people I knew and had much respect for were praising Lisp with almost religious dedication. There had to be something there, something I couldn't afford not to get my hands on! Eventually my thirst for knowledge won me over. I took the plunge, bit the bullet, got my hands dirty, and began months of mind blending exercises. It was a journey on an endless lake of frustration, I am stupid fuck. I turned my mind inside out, rinsed it, and put it back in place. I went through seven rings of hell and came back.

And then I got it.

I KNOW LISP.
I AM SO SMART.
I AM SO EXPERT, NOW I KNOW EVERYTHING ABOUT PROGRAMMMING, I DONT HAVE TO LEARN ANY OTHER LANGUAGE EVER.

Name: Anonymous 2008-06-29 9:14

C courses, which teach objects and functions.
Ah, objects and functions. Obviously that's the most important part of programming. This man sees clearly.

Name: Anonymous 2008-06-29 9:18

Why the fuck do so many people buy a book about The Structure and Interpretation of Computer Programs, and then complain that it's about the Structure and Interpretation of Computer Programs, not code monkeying?

Name: Anonymous 2008-06-29 19:01

>>19
Java.

Name: Anonymous 2008-06-29 19:10

>>1
YHBT

Name: Norvig 2008-06-29 21:18

I think its fascinating that there is such a split between those who love and hate this book. Most reviews give a bell-shaped curve of star ratings; this one has a peak at 1, a peak at 5, and very little in between. How could this be? I think it is because SICP is a very personal message that works only if the reader is a computer scientist (or willing to become one). So I agree that the book's odds of success are better if you read it after having some experience.

To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.

Those who hate SICP think it doesn't deliver enough tips and tricks for the amount of time it takes to read. But if you're like me, you're not looking for one more trick, rather you're looking for a way of synthesizing what you already know, and building a rich framework onto which you can add new learning over a career. That's what SICP has done for me. I read a draft version of the book around 1982 and it changed the way I think about my profession. If you're a thoughtful computer scientist (or want to be one), it will change your life too.

Some of the reviewers complain that SICP doesn't teach the basics of OO design, and so on. In a sense they are right. The book doesn't directly tell you how to design and write an object-oriented program using the subset of object-oriented principles that show up in the syntax of Java or C++. Rather, the book tells you what those principles are, how they came to be selected as worthwhile, how they can be implemented from the ground up, and how a different combination of principles might be more appropriate for a particular problem. This approach requires you to understand the range of possibilities, and to think about trade-offs as you go through the design process. Programming is a craft that is subject to frequent failure: many projects are started and abandoned because the designers do not have the flexibility, experience and understanding to come up with a suitable design and implementation. SICP gives you an approach that will succeed, but it is an approach based on principles and wisdom, not on a checklist. If you don't understand the principles, or if you are the kind of person who wants to be given a cookbook of what to do rather than to think creatively, or if you only want to work on problems that are pretty much like the problem you worked on last time, then this approach will not work for you. There are other approaches that will be more reproducible for a limited range of simple problems, but there is no better way than SICP to learn how to address the truly hard problems.

Donald Knuth says he wrote his books for "the one person in 50 who has this strange way of thinking that makes a programmer". I think the most amazing thing about SICP is that there are so FEW people who hate it: if Knuth were right, then only 1 out of 50 people would be giving this 5 stars, instead of about 25 out of 50. Now, a big part of the explanation is that the audience is self-selected, and is not a representative sample. But I think part of it is because Sussman and Abelson have succeeded grandly in communicating "this strange way of thinking" to (some but not all) people who otherwise would never get there.

Name: Anonymous 2008-06-29 21:57

>>22
I came.

Name: Anonymous 2008-06-29 21:59

>>23
I [spoiler]failed[/spoiler].

Name: Anonymous 2008-06-30 17:36

>>22
The Sussman approves.

Name: Anonymous 2009-03-06 13:11

Journey on an endless lake of frustration   I am stupid   fuck I turned   around saw no   sqrt and something   like 500Kbps up   03 22 55   ron2 a hh   22 55 ron2!

Name: Anonymous 2010-11-11 5:15

I'm currently working my way through the problems at projecteuler.net .
I never went to a college programming course ( but will next year), so I'm sorry for the probably trivial question.

I solved Problem 22 ( http://projecteuler.net/index.php?section=problems&id=22 ) with this code:

#include <stdio.h>
#include <stdlib.h>

struct list_el {
    char name[20];
    struct list_el * next;
};

typedef struct list_el item;

int name_value(char *name) {
    int sum = 0;
    while(*name != '\0')
        sum += *name++ - 'A' +1;
    return sum;
}

//returns 1 if name1 is lower that name2
//0 else
int lower(char *name1, char* name2) {
    int i;
    for(i=0;name1[i] != '\0';i++) {
        //if name1 is longer than name2 name1 should be lower on the list
        if(name2[i] == '\0')
            return 1;
        //if the value of name1 is greater than name2 (Z > A) name1 should be lower on the list
        if(name1[i] > name2[i])
            return 1;
        //if the value of name1 is less than name2 (A < Z) name1 should be higher on the list
        if(name1[i] < name2[i])
            return 0;
    }
    //if name1 is shorter than name2 name1 should be higher on the list
    return 0;
}

int main(int argc, char *argv[])
{
    FILE *fin = fopen("names.txt","r");
   
    item *curr, *cursor;
    char name[20]; //buffer for the name
    int i, sum = 0;
   
    //Initialize list
    item first,last;
    first.name[0]   = '\0';
    first.next      = &last;
   
    last.name[0]    = '\0';
    last.next       = NULL;
   
    //Fill List
    while(fscanf(fin,"\"%[^\",]\",",name) != EOF){
       
        //create new item
        curr = (item *) malloc(sizeof(item));
        strcpy(curr->name,name);
       
        //Skip all the names that should be higher on the list
        for(cursor=&first;cursor->next!=&last;cursor=cursor->next) {
            //write the name if the name the next name the cursor is pointing at should be below our item
            //Since this is the first occurrence it is the highest possible item that is below our item
            if(lower(cursor->next->name,name)){
                curr->next = cursor->next;
                cursor->next = curr;
                break;
            }
        }
        //If we reached the last item this must be because all the other items are higher than ours
        //Write it to the end of the list
        if(cursor->next == &last) {
                curr->next = &last;
                cursor->next = curr;
        }
    }
   
    //Count our items
    for(i=1,cursor=first.next;cursor!=&last;cursor=cursor->next,i++)
        sum += name_value(cursor->name) * i;
       
    for(cursor=&first;cursor->next!=&last;cursor=cursor->next)
        free(cursor);
    free(&last);
   
    printf("%ld\n",sum);
   
    system("PAUSE");   
    return 0;
}


Any suggestions what could have done better?

Name: Anonymous 2010-12-12 12:54

>>27
system("PAUSE");
>>26 dates to 2009.
IHBT

Name: Anonymous 2010-12-13 6:04

sage

Name: Anonymous 2010-12-13 8:23

Any suggestions what could have done better?
Don't use C.

Name: Anonymous 2010-12-13 9:30

Problem solved already with strcmp and qsort.

Name: Anonymous 2011-01-31 20:17

<-- check em dubz

Name: Sgt.Kabukiman崈ᵦ 2012-05-24 9:43

All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy
 All work and no play makes Jack a dull boy

Name: bampu pantsu 2012-05-29 3:59

bampu pantsu

Don't change these.
Name: Email:
Entire Thread Thread List