lainchan / λ
Let's Learn SICP Together
pop · 2017-12-05 20:29
Most people here are familiar with Structure and Interpretation of Computer Programs, an introductory book which uses Scheme for its lessons. It is finally time for lainons to read it.
This is a good opportunity for anyone interested to join and learn a lot together. Having an organized community behind this will make getting through the book much easier. I suggest doing this in the same fashion as >>3810 but instead we would separate it in subsections due to the length of the book.
Example schedule (CAN BE CHANGED)
Chapter one will be divided in 6 weeks.
Week one: from 1 to 1.1.8 (31 pages)
Week two: discussion of topics and exercises.
Week three: from 1.2 to 1.2.6 (25 pages)
Week four: discussion of topics and exercises.
Week five: from 1.3 to 1.3.4 (23 pages)
Week six: discussion of topics and exercises.
Due to the nature of the book, this schedule is very open to changes. I accept all criticism to it and will be modified as we move forward. Maybe a chapter is really easy while the next one is the absolute contrary.
Community communication:
We need to discuss if IRC is a good choice for communication, I personally think that it allows good conversations and interesting points of view but it also isn't easily available for another student which wasn't present at the time. Logs may solve this but its not a great solution either.
I need to think more about this and I would like to hear some suggestions.
Useful information:
I attached the PDF but it is also freely available in a number of formats.
HTML: https://sarabander.github.io/sicp/html/index.xhtml
Epub: https://github.com/sarabander/sicp-epub/blob/master/sicp.epub?raw=true
Mobi: https://github.com/twcamper/sicp-kindle/blob/master/sicp.mobi
Video lectures are available at MIT OpenCourseWare.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/
Setting up an ideal environment:
Editor.
Emacs is the defacto editor for Lisp as it allows direct code execution in a REPL and general integration with it. However, any editor with indentation and lisp mode will do.
Scheme implementation.
SICP was written with MIT/Scheme in mind, an old implementation which has some trouble running in modern systems. The book also assumes some functions (like inc and dec) which were included with the implementation, even a "picture language".
Racket, although not a popular choice, has a sicp package which will make things easier.
http://docs.racket-lang.org/sicp-manual/index.html
You can also use any R5RS Scheme you want but be warned you'll face some incompatibilities.
progn · 2017-12-05 21:47
>It is finally time for lainons to read it.
I already did, though.
() · 2017-12-05 21:55
>>5417
Well that's nice, maybe you can help the rest of us who didn't read it and stay up to date with the project! I do mean it, that would be appreciated
progn · 2017-12-05 22:13
I wholeheartedly support this thread. I believe something like this should happen more often (without overlapping, hopefully). Like, when we collectively finish one book, there could be a break (during which the next one may be decided collectively), and then start the next one.
Anyway, just wanted to show my support for the initiative to do something like this.
nibble · 2017-12-05 22:16
i could get down with this. i've been meaning to read this book anyway.
hash table · 2017-12-05 22:23
This is a great idea, I'm in.
Nemissa · 2017-12-05 22:27
There is no doubt that SICP is a great choice, its probably thee most respected programming book, a lot of programmers I look up to swear by it. HOWEVER, the exercises use advanced math...beyond college calculus math. I can read and understand the text in the book no problem but I could never even begin to attempt to do any of the exercises because they all require high level math knowledge. So this will separate this study group into 'haves and have nots' when it comes time to do the exercises. I seriously doubt the people who know the math are going to explain the math in every exercise to those who dont which means this book will only be read and not worked on, which I am ok with, this book is worth reading even if you cant do the exercises and we can have good discussions about the text. But if you want to work through another classic Lisp book where we all can do the exercises together then I would suggest:
On Lisp
Let over Lambda
Artificial Intelligence: A modern approach
Both On LIsp and Let over Lambda are the only two Lisp books that teach the metaprogramming side of Lisp which means you are really learning to use Lisp the way it was designed to be used and not just as a psuedo-FP scripting langauge. And since machine learning is big right now AI:aMA is a book that is the best book for learning AI and it uses Lisp.
Void · 2017-12-05 22:48
>>5422
Would you suggest using On Lisp or Let over Lambda instead of SICP for people with no background in programming nor cs?
I do agree with the premise of the OP though, however I'd like to see more choices with some details on them and perhaps we could vote or something.
Mitnick · 2017-12-05 22:49
>>5422
Hm, this makes me wonder. However, the point of doing SICP is not learning -Lisp- but learning the fundamentals of Compsci and using great tools while doing so (in this case, Scheme), with the end goal being having the ability of applying what was learned in any programming language.
With that said, you have a valid point and I'm willing to discuss this with the group of people interested in this project. I've heard about those books and I know they're great choices as well.
Maybe we could make a poll?
swap · 2017-12-05 23:19
>>5423
>Would you suggest using On Lisp or Let over Lambda instead of SICP for people with no background in programming nor cs?
Let over Lambda is a very dense read, the first time I read it I was overwhelmed by the depth of the material and by the second chapter I was totally lost. Most Lisp books just teach you surface level things like high order functions, lambdas, pattern matching, a lot of surface level stuff that makes you think you understand Lisp and these books hype all this stuff like its at a whole new level of programming when actually it doesnt scratch the surface of what Lisp does because Lisp is a macro-centric language. So now I am on my 3rd reading of Let over Lambda and I am finally at the point where I understand what the code examples do, but I just dont have the motivation to go through the whole book on my own. I think On Lisp is easier to understand than Let over Lambda, in fact on Lisp is mentioned as a sort of pre-requisite in Let of Lambda to getting cantered on macros. So either of these books would be good to go through although I think that Let over Lambda will require people like me to explain a lot more about what is going on as it blows away noobs.
Roy Batty · 2017-12-05 23:49
>>5422
Can you be more specific about what areas of math are relevant? Discrete, probability theory? I've heard this book is/was used for an intro CS course at MIT so sophomore/junior math for exercises is kinda unexpected.
Eldon Tyrell · 2017-12-06 00:32
>>5426
>Can you be more specific about what areas of math are relevant? Discrete, probability theory?
I dont know, you tell me, the text is available online, look at the exercises yourself:
https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start
here is one code example from chapter 1, no way in hell I could ever do this
Exercise 1.28. One variant of the Fermat test that cannot be fooled is called the Miller-Rabin test (Miller 1976; Rabin 1980). This starts from an alternate form of Fermat's Little Theorem, which states that if n is a prime number and a is any positive integer less than n, then a raised to the (n - 1)st power is congruent to 1 modulo n. To test the primality of a number n by the Miller-Rabin test, we pick a random number a<n and raise a to the (n - 1)st power modulo n using the expmod procedure. However, whenever we perform the squaring step in expmod, we check to see if we have discovered a ``nontrivial square root of 1 modulo n,'' that is, a number not equal to 1 or n - 1 whose square is equal to 1 modulo n. It is possible to prove that if such a nontrivial square root of 1 exists, then n is not prime. It is also possible to prove that if n is an odd number that is not prime, then, for at least half the numbers a<n, computing an-1 in this way will reveal a nontrivial square root of 1 modulo n. (This is why the Miller-Rabin test cannot be fooled.) Modify the expmod procedure to signal if it discovers a nontrivial square root of 1, and use this to implement the Miller-Rabin test with a procedure analogous to fermat-test. Check your procedure by testing various known primes and non-primes. Hint: One convenient way to make expmod signal is to have it return 0.
Guthrie · 2017-12-06 02:17
>>5428
Meh it seems fine to me, nothing more than expected. Perhaps you shouldn't be putting people off.
https://news.ycombinator.com/item?id=2498292
Demeere · 2017-12-06 03:50
>>5422
neither on lisp nor let over lambda are adequate beginner books. both teach advanced techniques, contain idiosyncratic advice and significantly non-idiomatic code. these are the kind of books that journeyman common lispers should read in their spare time having written a significant amount of conventional code.
ai:a modern approach is not a lisp book, nor is it a book that necessarily teaches you how to be a good programmer. you're probably thinking about paradigms of artificial intelligence programming, PAIP, that norvig wrote before modern approach. PAIP is an excellent all around educational book, problems is that i'm yet to see a study group that got through more than a chapter or two.
St. IGNUcius · 2017-12-06 04:32
>>5432
>neither on lisp nor let over lambda are adequate beginner books. both teach advanced techniques, contain idiosyncratic advice and significantly non-idiomatic code
This is not true, On Lisp and Let over Lambda are the only two books that actually teach Lisp at all, this is at a metaprogramming level where you are putting the homoiconic syntax to its proper use which is converting large amounts of code back and forth as code and data, there is nothing idiosyncratic about this, this is what Lisp was designed for. The fact that every other Lisp book besides these two only lightly touch on macros, usually as one chapter in the back of the book is testament to the fact that most Lisp programmers really cant use Lisp for metaprogramming and are only fooling themselves into believing they can program Lisp. Further evidence of this is the many tens of thousands of programmers who jumped on the Clojure hype train which has ended as a dead end for 95% of the programmers who tried it and now explains why Clojure died out from use in mainstream programming. I personally am willing to help anyone here who wants to do On Lisp or Let or Lambda. SICP is not going to work. Dont get fooled by guys like this >>5430 I guarantee this guy will just hand out the "dont ask me to spoonfeed you" line when everyone is stuck solving calculus problems. There is an easy way to figure out if we can do SICP, have everyone try to solve just one of the exercises and see how many can make it on their own.
dup · 2017-12-06 07:59
>>5428
When I first read your post I opened SICP to find exercises to prove you wrong and this is the one I wanted to post before you posted it.
You probably think SICP uses 'advanced math' because you when read 'Fermat' or 'Miller-Rabin' you say to yourself "woah no way I could do something like this" and don't even try solve it. I think SICP probably uses math exercises because it's something MIT students would see in later years anyway so these exercises kind of prime their brains for it. The book doesn't, however, assume you already know the math. In fact, the entire length of the exercise you posted went to explaining what Miller-Rubin is to someone who's never heard about it - and only the last two sentences actually tell you what to do.
I never heard of Fermat's test in school either but it's so simple it can be implemented as a short one liner in most languages (pow(a, n-1) % n == 1).
Just like programming a lot of math can be learned on your own.
Hitomi · 2017-12-06 09:18
>>5437
For me personally, I cant do basic calculus. But if everyone else here already knows calculus or wants to learn calculus just to do SICP, fine, then we'll do SICP.
The Phantom Phreak · 2017-12-06 11:44
>>5422
>>5426
FULL DISCLOSURE: I hold a master's degree on applied math. I have only read Chapters 1 and 2 so far. So take my opinion with a pinch of salt.
While the book uses math, I do not believe it to be the main focus of the book, and you can go through it entirely without understanding the math.
For the most part, the formulas are given, you need to code them up and then move on. As far as I remember there is only one exercise where you need to do some calculations yourself. They give you the formulas, they explain the methods quite explicitly and then they ask you to code them up. As a side note, this might be related to the bottom up approach to coding in the book, you write a bit, once its done, the function is there, you can use it, you dont need to even understand what it does. I think thats beautiful.
Furthermore, the maths they use, you will probably have not seen them because they are simple numerical methods, not because they are very advance. The standard math curriculum simply does not cover that. So, I believe that if you have some math literacy, you might be able to stop for a bit, spend a couple of evenings tops thinking about the math part in a given exercise and solve the problem.
TL;RD: I was also a bit discouraged when I saw some exercises. But at the end, it not that hard, it is just that we are not used to that part of math.
Zero Cool · 2017-12-06 11:49
>>5438
SICP actually covers the very basics of calculus you need to understand the book.
Project 2501 · 2017-12-06 12:04
Yes! I'm also down for this. My only concern is that there will be others near my timezone (Asian) so the chat isn't empty when I'm working on it. But it still seems to me that IRC is the best medium for this, unless others have ideas.
Molly Millions · 2017-12-06 12:19
>>5441
>>5442
I think Ive said enough so I wont bother responding to these posts, I'll leave it up to everyone to decide on their own what they want to do.
Knuth · 2017-12-06 14:05
>>5443
I'm the OP and I have this problem as well, that's why I wasn't convinced about using IRC. I would suggest using Telegram or something similar but it isn't FOSS and it requires a phone number, something most users here won't like at all.
I'm open to suggestions.
Regarding the whole SICP vs other alternatives, it's a difficult topic and I wouldn't like it becoming a barrier between ourselves when the project didn't even start. A good way to prevent this is communication and maybe even make separate simultaneous projects (although that would be a problem if you're interested in both at the same time, unless you have a lot of time in your hands). To further expand into this, I created a poll.
http://www.strawpoll.me/14560357
If the results are conflicting as in it exists a lot of interest in both parts we'll discuss creating simultaneous projects.
Koos van der Merwe · 2017-12-06 14:08
These two sites have a lot of information and books, maybe it'll make it easier to choose what to read.
https://teachyourselfcs.com/
https://functionalcs.github.io/curriculum/
Terzibashjian · 2017-12-06 14:24
>>5446
I think that the first one will put you into action faster than the latter, however the functionalcs' curriculum is what you see in an university course, perhaps including masters? Don't know really.
Cutter · 2017-12-06 15:29
>>5428
>no way in hell I could ever do this
>Exercise 1.28.
If you are new to both SICP and Miller-Rabin, the key to that exercise is separating M-R from the requirement of using the expmod template, and doing it in two phases. First, write out M-R in whatever form feels most natural, add debug messages on both FAIL and PASS branches, and look at the printout of the algorithm in action on many test inputs. Then, once you are familiar with the algorithm and understand its inner workings, you can proceed to recast it into the expmod template to complete the exercise.
Anonymous · 2017-12-06 21:58
>>5448
There are some people in this thread who are trying very hard to make SICP sound easy, like anyone with only high school algebra knowledge can learn calculus just by reading SICP. I dont believe this is true, but rather than get in a big arguement about this I think its worth spending a week on SICP just to see if anyone can make it through the exercises. That way we dont have and members of the group complaining that we are using the wrong book. SICP is no doubt a classic, its worth giving it a shot, but I personally think most the people in the group are going to crash&burn on the exercises. Just prepare yourselves for the "Im not going to spoonfeed you" line, because thats how it works on the internet, people who are expert like suggesting the hardest learning materials for noobs and then treat those noobs like idiots when you come back asking for help.
>>5445
>I'm the OP and I have this problem as well, that's why I wasn't convinced about using IRC. I would suggest using Telegram or something similar but it isn't FOSS and it requires a phone number, something most users here won't like at all.
>I'm open to suggestions.
I dont think IRC is going to work because in order to log the channel you have to keep your computer on all the time. I only own laptops so this is not visible for me. Something like Slack or Discord automatically logs all conversations so that would be my suggestion.
The Oracle · 2017-12-06 22:27
>>5451
Do people here not realize you're NOT supposed to do every single exercise? Skip some of them, or a lot of them. There are ~350 in the whole book, and they're not trivial. You guys should really just grab the homework problems from the MOOCs (I think MIT, Berkely, and Yale have them), and do those. Or just do the ones you find interesting.
t · 2017-12-06 23:50
Well I guess the idea behind the group study thing, besides just motivation, is that we could choose to do whatever exercises we want, and then help each other through them. The OP just says "discussion of topics and exercises" on the off weeks, which I think is appropriate. No need to lash ourselves for not doing an exercise, but rather set goals and then come back to see how we did and discuss.
I'm in favour of at least trying it, seeing how I go on my own and in relation to whatever group forms out of this. We should also keep in mind that it could take some time to complete this thing. Presumably we'll all be doing it in spare time and will want to linger where necessary to master new concepts. Just naively extrapolating OP's formula of two weeks per subchapter works out to be a year-long effort (without breaks).
Cereal Killer · 2017-12-07 00:18
>>5452
I think should just make this a read&discuss group and forget the exercises. From what I can see the exercises have nothing to do with the text and are entirely about solving math problems. So I'm in for just reading SICP
Lady Jessica · 2017-12-07 02:00
>>5455
They do have to do with the text, it's just the first parts use math to have you implement the abstractions they're talking about. Chapters 3+ follow the text pretty much exactly, you're implementing what they're talking about.
Wintermute · 2017-12-07 03:14
>>5451
>There are some people in this thread who are trying very hard to make SICP sound easy, like anyone with only high school algebra knowledge can learn calculus just by reading SICP
And there is another group trying to make it sound like something other than an introductory CS book.
SICP is hard, especially by modern standards, but it was a first year course and can be gotten through with some effort even without a formal education in mathematics. Working with a group should make it much more approachable too. At worst, the student might have to skip a handful of exercises (like I did), but that shouldn't do too much damage to their understanding of the CS concepts presented.
That said, It's absolutely essential that the exercises are at least attempted, a lot of the beauty and insight in SICP is contained in the questions it raises. The chapter-final exercises often function as extended projects too.
This thread started with a great idea but has already fallen pray to confusion and over-complication. Let's just read SICP, allocate a week or so to each section, and use IRC to communicate. We can probably finish the book in a year or so, and even if we don't get there, it never hurts to engage with the classics.
Agent Jones · 2017-12-07 09:24
>>5457
>And there is another group trying to make it sound like something other than an introductory CS book.
I think people should be aware of why it is no longer taught as an introductory CS book.
http://lambda-the-ultimate.org/node/5335
>We can probably finish the book in a year or so, and even if we don't get there, it never hurts to engage with the classics.
It hurts if you could be spending that time learning or doing something more worthwhile. I think there is some merit in experienced programmers reading SICP just to get an alternative view on things, but the book is mostly just an internet meme at this point.
Hagbard Celine · 2017-12-07 14:15
So when are we starting?
Can we make assigned exercises, then go over them together?
Joe Bloggs · 2017-12-07 16:29
>>5451
I do not think that anyone is making SICP sound easy, what we are trying to say is that the math is not hard. Because its not about the math. For all we care it could be databases, or webapps, but it was the 80's so they went with math.
I am not saying the math is easy either, It took me a while to finish some exercies.
But you do not need an extensive math background to read SICP: 1) every thing you need beyond algebra is explained in the book, 2) even with an extensive math background you are likely to have 0 experience on what they are talking about, because they talk about numerics mainly, and that is quite niche field of math.
Hey, you don't want to do SICP, feel free to dont. But I want to encourage everyone to give it a try, cause it is definitely worth it.
Boole · 2017-12-07 20:41
Update: the poll came out in favor of SICP, so we're going to try that and see how it goes.
The project would "start" next week, December 11th to be exact.
The communication method is not clear as of now, mainly because of the cons of IRC not having integrated logs. Since this is a study group I find it very important to be able to read all conversation that could potentially help someone with a topic.
In the same way that we decided SICP, we're going to decide our method of communication.
http://www.strawpoll.me/14570473
If anyone wants to give constructive feedback feel free to do so.
Cypher · 2017-12-07 21:37
What are the potential disadvantages of having all communication be in the thread?
() · 2017-12-07 21:47
>>5416
>Chapter one will be divided in 6 weeks.
>Week one: from 1 to 1.1.8 (31 pages)
>Week two: discussion of topics and exercises.
>Week three: from 1.2 to 1.2.6 (25 pages)
>Week four: discussion of topics and exercises.
>Week five: from 1.3 to 1.3.4 (23 pages)
>Week six: discussion of topics and exercises.
I think youre overestimating the size of the book (which is what happened on the last book we did). If you look at the table of contents here:
https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start
you will notice that chapter 1 is broken up into 3 sections: 1.1, 1.2 and 1.3 all 3 of which are viewed on a single html page. Chapter 1 is not a difficult read, we can burn through it in one week. If we stretch each chapter out too long (like 6 weeks) then people (like myself) are not going to waste their time monitoring the progress of this book and this group will die out. There are 5 chapters in this book, if we dedicate 6 weeks on each chapter then it will take 6 months to finish the book. I am not going to spend 6 months on one book.
>>5464
no offense, but everything youve said in this thread is bull, please dont assume that Im taking you seriously
St. IGNUcius · 2017-12-08 00:37
>>5468
OP here, I wholeheartedly agree. The schedule was a rushed thing as I haven't read the book and I couldn't possibly estimate the time needed for each section.
What do you think about cutting the time in half? 3 weeks for the first chapter? As in two weeks of reading and one of discussion?
As always if anyone wants to provide feedback do so. Maybe discussion for this first chapter won't take a whole week and we could reduce more time there.
Random · 2017-12-08 00:45
>>5471
>What do you think about cutting the time in half? 3 weeks for the first chapter? As in two weeks of reading and one of discussion?
The first chapter is broken up in 3 parts, I think its worth combining reading and discussing the first section in one week, so maybe 1 week per section.
queue · 2017-12-08 03:04
>>5467
Slower responses, questions that could lead to off topic discussion, harder to know who answered what and how to contact him for a more in depth talk, not as personal (this is debatable), etc
Eldon Tyrell · 2017-12-08 18:14
Another Lain here. We might use IRC+Telegram interconnected via some bot. As this normal people like me could easily check all Telegram logs while other paranoid lains could go with IRC with Tor or something. I don't really know how to set such a bot up though.
nil · 2017-12-08 20:44
We can use matrix/ create a riot channel
DEBUG-CONTENTS · 2017-12-09 05:15
Anyone interested in joining this group I recommend you read the first section of chapter 1 (there are 3 sections in chapter 1) right now. Its very easy, it just covers the basic syntax of Lisp, it only took me 15 minutes to read.
https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1
I dont think there will be much discussion on this section so we dont need any IRC or Discord set up yet.
Wintermute · 2017-12-09 05:43
Im done with finals next week and I will be free to begin the study of this book then.
Nanashi No Gombe · 2017-12-09 18:47
UPDATE: Last poll came in favor of Slack by one vote. Most options had very similar results, which gives me mixed feelings about what we should do.
I suggest Slack + daily summary of chat posted in the thread. The summary should cover the main discussed topics of the chat and the top voted messages (slack gives you the option of "voting" with emojis or something).
H.R. Giger · 2017-12-09 19:30
>>5514
I also think we could replace Slack for Matrix/riot like >>5491 said. It is very similar to Slack and it's FOSS with web and desktop clients available.
Jane Doe · 2017-12-10 03:08
Here is some collection of useful supplementary stuff to SICP, like interactive sicp (yep, there is such thing) and solutions on different languages.
https://sicp.neocities.org/
--
If you want to add something, please email: test2-for-fun@yandex.ru
Vasya Pupkin · 2017-12-10 13:50
Voting round 2 for comm
http://www.strawpoll.me/14589294
Sabo Engle · 2017-12-10 14:11
>>5525
Why not IRC?
Wirth · 2017-12-10 14:23
>>5526
It got only one vote on the last poll
Dujour · 2017-12-10 15:06
>>5525
I think it's fair to assume that Riot will win, so I went ahead and created a room.
#sicp:matrix.org
I will start to fill it up with helpful information, and anyone welcome to join.
Backus · 2017-12-10 15:27
>>5528
Hmm, I were just thinking that we could solve the problem with deadlines by simply creating separate room in slack for each chapter, so people can discuss chapter with each other according to their speed.
Hailvim · 2017-12-10 16:37
I am going to add even more noise, yet I would like to make this option to be known more. Wire https://wire.com/en/ it is basically telegram done right in Europe and completely open-source (including the server implementation, btw, written in haskell). You may use it with your mobile phone or an account. And you may use a nick to be known. It has web-desktop-mobile clients so... pretty complete.
Though IRC has been the go-to choice for a very long time and, with it's drawbacks, it is always nice to discuss whatever in it. Someone could log the chat daily and do a pastebin of it~~~~
--------------------------
And an all, here goes my opinion about the topic. I would love to join the group of people willing to spend some time learning Lisp, and I saw that SICP was the one that went the furthest, even with some opposition, so I would say SICP then. It is also the most well know one.
I would say that a decent pace would be to spend around an hour each week. I don't think it is too much even if you have finals (like I do now).
AND BTW, now that lainchan has a calendar.... We could use it, it would be a great tool to publish the pacing of the course, just saying.
Agent Jones · 2017-12-10 19:37
pls can we stop dividing the userbase? thanks.
λx.x · 2017-12-10 22:15
Encouraging the use of proprietary and centralized communications protocols, such as Slack, goes against the spirit of the programming board and its focus on Free Software and whatnot, along with excluding users who don't want to open themselves to trivial spying and exploitation.
The use of websites such as strawpoll.me, which don't function without JavaScript and so prevent many users from voting, is also frowned upon. A real vote could have easily been held in this thread, if desired.
As has been mentioned, Lainchan provides functionality that could be used for organizing such events and the Lainchan IRC is a suitable venue for discussing this. Before getting ahead of yourselves, perhaps this thread should actually be used for discussing its own topic, and it can be observed how well that works out, as opposed to using a service external to the thread.
hash table · 2017-12-10 23:18
>>5534
There's nothing about this in the rules anywhere, stop creating fake rules on the spot just because your feelings are hurt. I don't even like slack, but you can't just make soykaf up so people will use your pet Wire/Tox/whatever over things they like.
>The use of websites such as strawpoll.me, which don't function without JavaScript and so prevent many users from voting, is also frowned upon.
they can use the REST API :^). JS-whining-LARPers are terrible anyway.
drop · 2017-12-10 23:55
>>5536
>LARPers
Is that supposed to mean something?
over · 2017-12-11 00:25
>>5528
I cant find #sicp:matrix.org are you sure you set that up right?
DEBUG-CONTENTS · 2017-12-11 00:26
>>5534
Is this a joke or some soykaf?
Nameless · 2017-12-11 00:52
>>5534
>using propietary software is bad
It is, but so is telling people what they can and cant use on a site against internet policing. Its not against the rules either. We didnt even choose Slack, read the thread you're supposed to be moderating.
>"excluding users that dont want to use a program"
>'Hey guys lets add eachother on ((discord)) so we can organize meetings better'
>>No because *I* dont want to use it so you cant either.
>I dont like [conveniently accesible page] so you cant use it in your threads
>I dont know how to use strawpoll without JS
The audacity of this lain
>IRC
We already discussed IRC not having integrated logs. We decided on the place we thought would be better for all of us. You're more than welcomed to propose something better than Matrix, Telegram or WIRE.
>Using a single thread so a dozen people can post doubts about a book
>about SICP
Who gave you this job.
⍕ · 2017-12-11 00:53
>>5536
he said it
>goes against the spirit of the board
not
>goes against the rules
And hes not wrong either, there are certain ideals that goes along with this image board.
Agent Smith · 2017-12-11 01:07
Total newbie to SICP here. Would being able to write LaTeX make discussing the book easier? Should a medium that allows for that be considered?
Nameless · 2017-12-11 01:08
>>5543
to be honest I don't see a difference.
Telling people what they should do, regardless of it's being allowed or against the rules, is like kicking dead whales down the beach. People should do what they want and express themselves how they want without being bothered by triggered snowflakes. You're arguing like SJWs who constantly remind you how bad it is to say 'niggers' even if it's totally legal.
Unspecified · 2017-12-11 01:13
>>5545
Let's not go into that kind of topic, for the sake of the thread. Even though I agree with you
Personally I vote for Riot/Matrix.
dictionary · 2017-12-11 01:53
>>5545
gotcha. I think theres a slight difference, but honestly its completely useless to get into.
I agree with >>5547 for Riot/Matrix.
Im ready to start soon though, I think we should just start and worry about the pacing once we all get a better feel of the book.
Anamika · 2017-12-11 02:22
>>5543
If he didn't think it was against he rules he wouldn't have posted under moderator
Crazy Jake · 2017-12-11 02:33
>>5549
he probably just wanted attention
Gyula Kovacs · 2017-12-11 04:36
Can we have a meeting on the lainchan mumble about this pls?
It might weed out those who are serious about learning from those who are just stirring soykaf
Let's get a time and date for the meeting
Joey · 2017-12-11 07:33
>>5539
Yes, people found it already. But it doesn't matter because for the sake of convenience we moved to Slack.
Leto Atreides I · 2017-12-11 15:18
So, is today the first day?
Six · 2017-12-11 16:02
>>5572
So it seems?
Post the slack linku pls.
Linda Lee · 2017-12-11 16:27
I urge everyone to join the Slack channel
John Peters, You Know, The Farmer · 2017-12-11 17:29
>>5574
What's the slack channel name?
Really excited to start (and hopefully finish) SICP. Began to read it during the spring and got decently far in it, but just could not keep up with all my work. I'll make more of an effort to read through it this time, though
Motoko Kusanagi · 2017-12-11 19:07
>>5575
https://sicp-lainchan.slack.com/
Weird, I can swear it was posted before. Maybe some mod deleted it or something, if that's the case I don't know what to think about this site anymore, hopefully it wasn't tho
Erik Johansson · 2017-12-11 19:12
>>5578
The link was indeed deleted, I posted it before mod's post, and now it's gone.
queue · 2017-12-11 19:17
>>5578
Can I use the Slack without creating an account? I can't register an because either it blocks my mail addresses or it completely blocks connections from tor exit nodes.
Kay · 2017-12-11 19:33
>>5580
Sorry, try this instead
https://join.slack.com/t/sicp-lainchan/shared_invite/enQtMjgzNzgxOTg2NzA0LTA1Zjc5NTM1OGM5ZjM1YThjY2I0YTJmMjU3OTViYjkzNzA5MDI3NTc2MThmZWZiYmYzMjhjZWI5MWY2ZjY2ZDc
Cereal Killer · 2017-12-11 19:59
Well soykaf. Slack doesn't support palemoon.
Hailvim · 2017-12-11 20:50
Well... It seems Slack is the winner... I won't use it, I really don't like it, closed source and requires an account... However, I am not saying Lain must not use it, if that is what people want l am alright with it. I will follow the pacing course~ here and IRC.
A few things, I think this first week we could read the entire 1.1 section, it is not that long. And it is mostly introductory.
Finally, >>5416 >>5534 I wouldn't mind updating the calendar accordingly to the pace of the group. Though the main drawback is that I won't be on Slack, so communication would have to be through here or IRC.
Guthrie · 2017-12-12 23:22
>>5586
>Well... It seems Slack is the winner... I won't use it, I really don't like it, closed source and requires an account...
Its worth mentioning that you can make an account with Slack without having to give your email, so thats a plus
Cutter · 2017-12-17 20:28
Will there be some sort of progress update every week?
typedef · 2017-12-17 20:55
It is possible to learn cl reading and praticing SICP?
Technician · 2017-12-18 13:59
so i read this thread and surprise surprise what started out as ambitious got bikeshedded into oblivion. come on guys if you want to do sicp then stay on topic and focus on doing sicp.
Mentat · 2017-12-18 16:04
>>5756
We already settled for SICP, we're currently going for 1.2 with deadline set to December 20th. Anyone interested should be joining Slack asap.
Vasya Pupkin · 2018-06-17 21:26
jesus fuarrrking christ i wanted to write
Exercise 1.11:
A function
f
is defined by the rule that
n if n < 3
f(n-1) + 2* f(n-1) + 3* f(n-3) if n >= 3
Write this function ITERRATIVE
So recursive its kinda easy just
(define (recur n)
(if (< n 3) n (+ (recur(- n 1)) (* 2 (recur (- n 2)))
(* 3 (recur(- n 3))))))
But when i wanted to write iterrative in C++ it appears i cannot even do that. I tried
#include <iostream>
using namespace std;
int main() {
int n;
int t=3;
int w=3;
cin >> n;
if (n < 3) {
return n;
}
while (w!= n) {
t+=w+4;
w++;
}
cout << t << endl;
return 0;
}
And it gives me bad results! C++ function is not the same as Scheme function! Please can any of you guys point me in some place
vector · 2018-06-17 23:07
Did anyone actually read any of SICP? I remember when this group started everyone said they were busy with school work. And so after a month of waiting and nothing happening I left this study project.
over · 2018-06-17 23:12
>>9011
Honestly, I wasn't involved with this thread at the time, but I did read SICP after all the endless recommendations all across the internet. I don't know that it actually works well in a study group format in all honesty. It really seems more of something that you really just have to do at your own pace.
Some friends IRL tried to do this same thing and they never got past chapter 2 because it is just too hard to keep the pace going with everyone.
DEBUG-CONTENTS · 2018-06-18 01:51
If anyone is interested in maybe a much smaller-scale group (2-3 people) I'm up for being a part of it.
Chani · 2018-06-18 02:18
>>9014
unless a member of that group can demonstrate they can do ALL the math exercises in SICP then I think the idea is a no go
I suggest we pick a Haskell book and all work on that, then we can be sure we will all get through the book in a reasonable amount of time
Tyrell Wellick · 2018-06-18 02:50
>>9010
Convert the implicit state kept on the stack into explicit state kept in arguments.
>>> def f_rec (n):
... return n if n < 3 else f_rec (n - 1) + 2 * f_rec (n - 2) + 3 * f_rec (n - 3)
...
>>> [f_rec (k) for k in range (15)]
[0, 1, 2, 4, 11, 25, 59, 142, 335, 796, 1892, 4489, 10661, 25315, 60104]
>>> def f_iter (n):
... def worker (counter, back2, back1, now):
... return now if counter == n else worker (counter + 1, back1, now, now + 2 * back1 + 3 * back2)
... return n if n < 3 else worker (2, 0, 1, 2)
...
>>> [f_iter (k) for k in range (15)]
[0, 1, 2, 4, 11, 25, 59, 142, 335, 796, 1892, 4489, 10661, 25315, 60104]
>>>
Cowboy · 2018-06-18 03:19
>>9016
I did every single exercise in SICP (up to Chapter 5 Section 3, after I had cooked up a totally new GUI debugger for the JIT-compiled language introduced in 4, I had enough of the crazy projects it sends you on).
I don't have a high-school degree much less an advanced mathematics education.
It did take me about 6 months of part-time work however (I was unemployed).
Lain Iwakura · 2018-06-18 03:37
>>9018
...
OK, so if anyone has suggestions on a book topic other than Haskell
Bobby Newmark · 2018-06-18 06:22
>>9021
What is wrong with haskell. Also we could go through something like EOPL or maybe even go through some of On Lisp.
Also I think the thing about SICP's math being too difficult is a myth, it does basic calculus and maybe a little bit of differential equations but beyond that what does it even ask for?
Milner · 2018-06-18 10:44
>>9014
I'm down, anonymously though, of course. The math exercises may prove a challenge, like >>9016 suggested, but nothing that can't be overcame. It would be a good way to strengthen some math skills for any of the lainons that aren't capable of the math in the book, but from what I hear it doesn't go too far past some calculus. I started the book about a week ago, and I'm wrapping up 1.2's exercises tomorrow (hopefully). There really hasn't been anything too difficult so far, it's just gone through some common algorithms, ways to measure algorithms, recursive algorithms, and some concepts. The most challenging part is that I'm just not that good at programming in scheme, and don't know exactly where to start for a lot of the examples.
I'd love to work through it with a group, maybe I wouldn't feel so dumb if I did. Group discussion helps a lot, it also helps keep us on track. IRC would be an easy way to coordinate this. Maybe 4-5 people would be good, accounting for the fact that 1 will probably quit.
I'll be monitoring this, never done group studying though, but I guess it'll be better for me to ramble about the book to people actually reading it.
car · 2018-06-18 12:02
>>9035
sure i am ready i wanted to read it anyway
Switch · 2018-06-18 15:37
The reading had begin?
Agent Richard Gill · 2018-06-18 20:32
>>9035
Hey, I am lainon on Freenode & Lainchan IRC if you want to contact me. Alternatively, lainon@protonmail.com
Ein · 2018-06-19 01:42
>>9050
>protonmail
based. i might contact you but i don't know. i'm generally apprehensive about chatting non-anonymously. if a few other people show interest then i'll definitely pop in.
Technician · 2018-06-19 01:54
In the time it took this group to start and fail you could have read most of SICP alone.
Which you should do, it's a seriously good book, but it's just too long and involved for an ad hoc group like this.
Perhaps you could try The Little Schemer for an SICP-lite, there it'd be easy to do a chapter each session, of which there are only 10. The last 3 chapters provide some interesting talking points, but it's pretty smooth sailing up to there, so people are less likely to drop out.
Tomohisa "Tom" Kanezaki · 2018-06-19 02:06
dropping an epub version
epub master race
Cereal Killer · 2018-06-19 02:39
>>9057
I was actually about to suggest that myself, but I feel like doing little Schemer as a group is kind of weird since is really is meant to be more of a solitary meditation on the topics and walks you through them very clearly at your own pace.
Maybe we could do like some sort of Q/A on each chapter at designated times? IDK but I don't think it would take the same form as other things.
Mario Rossi · 2018-06-27 08:34
>>9058
I cannot read it properly in my Kindle.
Agent Smith · 2018-07-10 15:09
Please guys i beg you tell me whats wrong with my code. Excercise is 1.11 if n<3 f(n) = n, if n>=3 f(n)=f(n-1)+f(n-2). Error is
The object #f, passed as the first argument to integer-add, is not the correct type.
;To continue, call RESTART with an option number:
; (RESTART 7) => Specify an argument to use in its place.
; (RESTART 6) => Return to read-eval-print level 6.
; (RESTART 5) => Return to read-eval-print level 5.
; (RESTART 4) => Return to read-eval-print level 4.
; (RESTART 3) => Return to read-eval-print level 3.
; (RESTART 2) => Return to read-eval-print level 2.
; (RESTART 1) => Return to read-eval-print level 1.
here is code:
define (fun n)
(define v (make-vector n))
(vector-set! v 0 0)
(vector-set! v 1 1)
(vector-set! v 2 2)
(define w 3)
(if (equal? w n) (list (vector-ref v w))
((vector-set! v w (+ (vector-ref v (- w 1)) (vector-ref v (- w 2))))
(set! w (+ w 1)))))
queue · 2018-07-11 00:05
>>9401
>Excercise is 1.11 if n<3 f(n) = n, if n>=3 f(n)=f(n-1)+f(n-2).
https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-11.html#%_thm_1.11
"""f is defined by the rule that f(n) = n if n<3 and f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) if n> 3."""
>The object #f, passed as the first argument to integer-add, is not the correct type.
The error is based on the following elements:
- Your else branch consists of a procedure call with one argument, where the procedure is the unspecified result of vector-set! and the argument is the unspecified result of set!.
- By default Scheme does not specify the order in which the elements of a combination are evaluated.
- Your Scheme implementation appears to use #f for uninitialized vector slots instead of something like #<unspecified>, which is a poor choice on its part.
As a result, when the set! happens to be evaluated before the vector-set!, w becomes 4 and the sum looks up indices 3 and 2, thus becoming (+ #f 2), which + does not support. You can verify by changing your vector creation to (make-vector n "lain").
If you insist on vectors and mutation for Exercise 1.11, you have to order the mutations by wrapping them in 'begin' or switching the 'if' to a 'cond'. You also need a loop on w rather than a single step, and you need to return a proper value from your function.
If you want to do Exercise 1.11 without using features that the book has not introduced yet, you can take a look at >>9017 for a hint.
William Holtzer · 2018-07-13 21:21
Damn, I wish that I found out about this earlier; reading a book on a community scale is such a good idea.
I sometimes start reading a book, only to later get sidetracked or stop it.
I am too late, though! :(
Void · 2018-07-13 21:28
>>9430
There will be plenty of people who dont pack it and many more who never tried, you get your chance some other time.
Six · 2018-07-22 04:27
>>9430
>>9050 here still waiting for someone to contact me
Roger Pollack · 2018-07-22 05:56
>>9556
Sent you an email, Lain
over · 2018-07-26 00:23
To the person who contacted me on Freenode regarding the SICP group: try connecting to Lainchan IRC. I tried to respond to you but you are offline now. My hours are a bit odd currently which is why I didn't respond at the time.
Switch · 2018-07-26 08:37
Should I do SICP or The Rust Proogramming Language?
Hopper · 2018-07-26 08:43
>>9605
fuarrrk Rust.(Elaborate on your opinions rather than spilling soykaf.)
Agent Jones · 2018-07-26 11:57
>>9605
What >>9606 said. SICP is so much better, has actual exercises, and lisp provides an incredible metaprogramming experience.
Dr. X · 2018-07-26 15:28
>>9605
Though SICP introduces Scheme, it is not necessarily a book on the language; it explains the behavior of computer programs by means of using Scheme. I say you should go with SICP if you wish to develop your own knowledge and way of thinking about programming, and save any book on specific languages for later.
Church · 2018-07-26 20:30
>>9605
>asking about sicp in a sicp worship thread
What do you expect except brainless fanboy responses?
Meddler · 2018-07-26 21:45
>>9616
Something like this >>9612
Zhora · 2018-07-27 06:58
>>9605
They aren't mutually exclusive, read both of them if they both interest you.
Torvalds · 2018-07-27 13:27
>>9601
That was me. I'll setup some sort of irc bouncer and hopefully get the message. I sent a message on freenode and lainchan
Cutter · 2018-07-28 09:49
>>9612
Meanwhile back on planet earth.
>Programming by poking: why MIT stopped teaching SICP
http://lambda-the-ultimate.org/node/5335
Colmerauer · 2018-07-29 00:13
>>9633
well, yes, 100% right. Most programming nowadays is just poking around some library. And there is nothing wrong with that.
But sometimes you need to program something from scratch yourself. Say you need a soykaf ton of logic to make the libraries work together nicely, or maybe you can solve your problem with 10 lines of code, and that is cheaper than spending 3 hours reading documentation for someone else's library.
And basic computer science is helpful in doing that.
I have taken the coursera course[0] that replaced sicp, and that is one of the main reasons i got my job today. It kinda taught you python and computer science at the same time. Basics such as control flow, iteration and recursion where introduced with basic sorting algorithms. finally you moved to object oriented programming while teaching basic machine learning.
Main take aways from that: it teaches you a programming language, it gives an overview of the current computer science field. and its biggest selling point is that it gives you tools to think about and reason about programs.
I have not finished sicp. but it does exactly the same thing. only in scheme rather than python, and examples are an outdated overview of the field of computer science. Its goal is the same: teach you how to think about computer programming.
so, introduction to computer science is a great resource, it definitely shaped the way i think about programs. the same is true for what i have read of sicp.
If you want something practical that will help you land a job, taking the python route is better. That coursera course helped me land all the jobs i have ever had.
while sicp is less practical, i have not found it less valuable. i really love the bottom up approach, how everything is built from scratch. also i like that they do not have to teach you a language. the fact that scheme is there, is mere notation. you get used to it. This allows for a lot more ground being covered in a lot more depth. AND at the end of the day you have learn scheme as well as being fairly proficient with functional programming. so by giving you less material, they have actually taught you more.
So yes, you are right. the computing needs have changed, and new more pragmatic ways are available than sicp.
Introduction to computer science is an amazing resource that you should read if you want the skills need to be a successful programmer.
sicp is just to nerd around and this is the lainchan -> go read it.
[0] https://courses.edx.org/courses/course-v1:MITx+6.00.1x_8+1T2016/course/
list · 2018-07-29 01:40
>>9635
>[0] https://courses.edx.org/courses/course-v1:MITx+6.00.1x_8+1T2016/course/
Is that a free course? I'd like to enroll but I'm not sure that I have the commitment to do all the assignments.
Apoc · 2018-07-29 02:29
>>9637
It's free. Getting the college credit for it costs money. As for commitment, maybe we can start a Lain study group for it? The next iteration of the course starts August 30.
Hagbard Celine · 2018-07-29 09:58
>>9635
>sicp is just to nerd around and this is the lainchan -> go read it.
I have read it, it's not as groudbreaking as all the pathetic fanboys like to pretend. It's just a meme.
>Most programming nowadays is just poking around some library. And there is nothing wrong with that.
>But sometimes you need to program something from scratch yourself.
That wasn't the point. sicp teaches a development style where you create small self contained blocks and build them on top of each other which was fine in the 80s but modern software environments are too complex to understand every part of the system in that way.
x<->y · 2018-07-29 11:22
>>9642
> fine in the 80s
the reason this style of development is not adhered to more is because of incompetence not because things are more complex. if you think lisp is unable to support modern needs then you are sorely mistaken, current practices in enterprise OOP languages like SOLID are really a round about way of memphing a static OO language into something more flexible like lisp. remember there is not a lot of difference between an object and a closure.
Roger Pollack · 2018-07-29 13:45
>>9644
>the reason this style of development is not adhered to more is because of incompetence not because things are more complex.
Did you actually read why MIT stopped teaching SICP?
>if you think lisp is unable to support modern needs...
I don't know why you are talking about lisp all of a sudden. sicp is not about lisp, scheme is just a simple language they use for demonstrating the concepts.
Random · 2018-07-29 13:55
>>9642
While I believe that sicp is outdated, I disagree with the remainder of your claim.
Breaking a problem into smaller subproblems is a mantra of all science an engineering, and I did not learnt it in sicp.
Further, the programming style of sicp is just functional. Building smaller chunks and composing them. This was valid in the 80s and is more valid now, with parallelism and concurrency.
I work in python, and by following these principles, i can parallelize or make concurrent my code in a matter of minutes. While most my collegues suffer. They still make fun of my style and call it unpythonic "\__(o.O)__/" if unpythonic is faster i am happy.
William Holtzer · 2018-07-29 15:38
>>9642
While I believe that sicp is outdated, I disagree with the remainder of your claim.
Breaking a problem into smaller subproblems is a mantra of all science an engineering, and I did not learnt it in sicp.
Further, the programming style of sicp is just functional. Building smaller chunks and composing them. This was valid in the 80s and is more valid now, with parallelism and concurrency.
I work in python, and by following these principles, i can parallelize or make concurrent my code in a matter of minutes. While most my collegues suffer. They still make fun of my style and call it unpythonic "\__(o.O)__/" if unpythonic is faster i am happy.
Boris Grishenko · 2018-07-29 15:51
>>9644
>>9645
Both sicp and the course that replaced sicp teach the exact same core concepts. Breaking a problem into smaller problems is one of these core concepts. And lisp is great at doing that because its function and highly composable.
You do not read sicp or learn a lisp to get a job. You do it to do it cause you want to do it. I wish to be a lisp hacker professionally, but lets be honest: its a hobbyist language. Its the best programming language, and perfectly capable? In my OPINION yes. But for the most part is used by hobbyists. Same goes with reading sicp, its for hobbyist programmers. I love lisps and sicp, and i have found them valuable in my work, althought unnecessary.
And when i said lisp above i meant LISPS in plural, but too much typing.
JARGON · 2018-07-29 16:06
>>9650
Anyways, I see lots of people in the chans criticizing sicp: whether its outdated, too mathy or little practical... I belive you guys are missing the point, as well as being absolutely right.
Sicp is an essay by programming popes about thinking about programming. Just like let over lambda, the joy of clojure or MIT introduction to computer science that replaced sicp.
If you are going to cricize sicp do it on its core value proposition. I would love to read your critic. But if you are just going to say: "its got formulas that scare me", then i believe you should wait to have more programming time under your belt and revisit the book. Maybe you still hate it, there is nothing wrong with that and i would love to read why, but for sure you will be closer to the deeper meaning that the book breathes.
Wintermute · 2018-07-29 18:31
>>9638
I'd be down for a study group. We'd have to see how many lainons would be interested.
Cat Mother · 2018-07-29 19:08
>>9620
I've tried contacting you a couple of times with no success.
Demeere · 2018-07-29 19:46
I'll have to barge in and provide my own input here
People seem to be asking whether to read sicp or not, the obvious question should be yes, I see no reason why not outside time constraints. If it's too hard for you then read it later.
I don't think you need much mathematical or programming prerequisite knowledge to read it, but you do need some mathematical (or otherwise technical) maturity to read it, and a bit of criterion to understand what the book is about among the numerical applications.
Should you read a python book or SICP? best answer: read both.
SICP is for those who want to learn more, understand more and become better programmers. If all you want to be is a code monkey, go learn javascript. Perhaps the day will come when you'll find you could use the teachings in SICP to make better js code.
Just read SICP, it provides if nothing else good intellectual activity, the kind nobody but the laziest would find distasteful.
In my opinion, sicp is not a math book and isn't much a programming book either, in the sense that many today would expect from a programming book (which teaches some particular technology for getting the job done), it's more of a CS book, the overlap between mathematics and programming, or the mathematical aspects of programming (remember mathematics goes well beyond numbers and calculus), and as such it should be read.
Above all, I think it's a book about the *art* of structuring programs and reasoning about such programs, I stress the word 'art' because it really goes beyond technologies and techniques. Much like the art of the chess player who can reason about the pieces on the board well beyond the mere tactical or the array of techniques she can pick to reach a goal. If you don't think this is worth your attention or your effort then programming is probably not your thing and you're just doing it for your day job, which is probably with .NET, and you should probably just stick to your reference manual; that is to say, if learning and gaining a better understanding of things is not your cup of tea, then what the fuarrrk are you doing in a SICP thread?