* Re: Help with Learning Programming and LISP
2019-09-09 16:18 Raghav Gururajan
@ 2019-09-09 16:38 ` John Soo
2019-09-09 17:04 ` Raghav Gururajan
2019-09-09 17:20 ` Jesse Gibbons
2019-09-09 16:50 ` Tobias Geerinckx-Rice
` (2 subsequent siblings)
3 siblings, 2 replies; 17+ messages in thread
From: John Soo @ 2019-09-09 16:38 UTC (permalink / raw)
To: Raghav Gururajan; +Cc: help-guix
Hi Raghav!
> I would like to learn programming starting with LISP
Great! Lisp is probably the best language to start with!
Lisp books also rank among the best introductory materials to programming. I highly recommend these two:
- Structure and Interpretation of Computer Programs (often called SICP)
This uses a dialect of scheme, so you can do the exercises without much translation using guile or racket. It touches on many aspects of computer science and I think is closest to the swiss-army knife you deacribed. There are also excellent lectures freely available on YouTube by the authors.
- Land of Lisp
This is an introduction to Common Lisp. I am less familiar with it, but it always comes highly recommended as a fun introduction to programming by writing simple games. If I’m not mistaken, it may be a little more pragmatic than SICP.
Hope that helps and happy hacking!
- John
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:38 ` John Soo
@ 2019-09-09 17:04 ` Raghav Gururajan
2019-09-09 17:20 ` Jesse Gibbons
1 sibling, 0 replies; 17+ messages in thread
From: Raghav Gururajan @ 2019-09-09 17:04 UTC (permalink / raw)
To: John Soo; +Cc: help-guix
[-- Attachment #1: Type: text/plain, Size: 57 bytes --]
> Hope that helps and happy hacking!
Thank you John!
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:38 ` John Soo
2019-09-09 17:04 ` Raghav Gururajan
@ 2019-09-09 17:20 ` Jesse Gibbons
1 sibling, 0 replies; 17+ messages in thread
From: Jesse Gibbons @ 2019-09-09 17:20 UTC (permalink / raw)
To: John Soo, Raghav Gururajan; +Cc: help-guix
On Mon, 2019-09-09 at 09:38 -0700, John Soo wrote:
> Hi Raghav!
>
> > I would like to learn programming starting with LISP
>
> Great! Lisp is probably the best language to start with!
>
> Lisp books also rank among the best introductory materials to
> programming. I highly recommend these two:
>
> - Structure and Interpretation of Computer Programs (often called
> SICP)
>
> This uses a dialect of scheme, so you can do the exercises without
> much translation using guile or racket. It touches on many aspects of
> computer science and I think is closest to the swiss-army knife you
> deacribed. There are also excellent lectures freely available on
> YouTube by the authors.
>
> - Land of Lisp
>
> This is an introduction to Common Lisp. I am less familiar with it,
> but it always comes highly recommended as a fun introduction to
> programming by writing simple games. If I’m not mistaken, it may be a
> little more pragmatic than SICP.
>
> Hope that helps and happy hacking!
>
> - John
SICP is packaged in guix. "guix install sicp" will install the HTML and
info versions.
Land of Lisp looks good, but I haven't read it. The author helped write
"Realm of Racket" which looks very similar, but I haven't read it
either.
As for emacs lisp, the "emacs lisp intro" (aka "An Introduction to
Programming in Emacs Lisp.") is a good start and "elisp" (aka "GNU
Emacs Lisp reference manual.") is full of reference material. Both can
be downloaded from the emacs site[1] and are included in emacs by
default. (C-h i C-s "emacs lisp" should help you find them.)
[0] https://nostarch.com/realmofracket.htm
[1] https://www.gnu.org/software/emacs/manual/
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:18 Raghav Gururajan
2019-09-09 16:38 ` John Soo
@ 2019-09-09 16:50 ` Tobias Geerinckx-Rice
2019-09-09 16:53 ` Tobias Geerinckx-Rice
` (2 more replies)
2019-09-09 17:18 ` Vladimir Sedach
2019-09-09 20:11 ` Ricardo Wurmus
3 siblings, 3 replies; 17+ messages in thread
From: Tobias Geerinckx-Rice @ 2019-09-09 16:50 UTC (permalink / raw)
To: help-guix, Raghav Gururajan
[-- Attachment #1: Type: text/plain, Size: 1023 bytes --]
Raghav,
I can't *not* mention classics like SICP (Free, comes with
retro-wave videos, easily found on-line), and The
{Little,{R,S}easoned} Schemer series (not free, and not for
everyone). Both of these focus on Scheme, which as you probably
know is a very elegant minimal dialect of Lisp.
With that out of the way, and as much as I enjoyed them, I don't
think either can be described as swiss army knives.
I just last week downloaded ‘The Land of Lisp’[0] for a friend.
It's definitely more modern and a lot more silly, aims to help you
‘learn Lisp, one game at a time’, and sounds the hands-on
introduction you're looking for.
In the more serious camp: I've heard good things about Practical
Common Lisp. Unlike Land of Lisp, it's freely available
on-line[1].
I can't personally vouch for either, but I hope to have been of
service.
Kind regards,
T G-R
[0]: http://landoflisp.com/ (beware: my IceCat shows an audio icon
:-)
[1]: http://www.gigamonkeys.com/book/
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:50 ` Tobias Geerinckx-Rice
@ 2019-09-09 16:53 ` Tobias Geerinckx-Rice
2019-09-09 17:05 ` John Soo
2019-09-09 17:04 ` Raghav Gururajan
2019-09-09 17:20 ` Pierre Neidhardt
2 siblings, 1 reply; 17+ messages in thread
From: Tobias Geerinckx-Rice @ 2019-09-09 16:53 UTC (permalink / raw)
To: help-guix, Raghav Gururajan
[-- Attachment #1: Type: text/plain, Size: 336 bytes --]
Tobias Geerinckx-Rice 写道:
> I don't think [SICP] can be described as swiss army knife.
John Soo 写道:
> I think [SICP] is closest to the swiss-army knife you deacribed.
Heh… I freely admit to not having a clue what ‘Swiss-army
knife’ really means in this context.
SICP is great!
Kind regards,
T G-R
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:53 ` Tobias Geerinckx-Rice
@ 2019-09-09 17:05 ` John Soo
0 siblings, 0 replies; 17+ messages in thread
From: John Soo @ 2019-09-09 17:05 UTC (permalink / raw)
To: Tobias Geerinckx-Rice; +Cc: Raghav Gururajan, help-guix
Hi TGR,
> Heh… I freely admit to not having a clue what ‘Swiss-army knife’ really means in this context.
>
> SICP is great!
Haha, I think I meant from a computer science perspective. I suppose that probably does not cover what most people think of as a swiss-army-knife, though. Nonetheless I think neither of us could recommend SICP highly enough.
- John
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:50 ` Tobias Geerinckx-Rice
2019-09-09 16:53 ` Tobias Geerinckx-Rice
@ 2019-09-09 17:04 ` Raghav Gururajan
2019-09-09 17:20 ` Pierre Neidhardt
2 siblings, 0 replies; 17+ messages in thread
From: Raghav Gururajan @ 2019-09-09 17:04 UTC (permalink / raw)
To: Tobias Geerinckx-Rice, help-guix
[-- Attachment #1: Type: text/plain, Size: 101 bytes --]
> I can't personally vouch for either, but I hope to have been of
> service.
Thank you Tobias!
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:50 ` Tobias Geerinckx-Rice
2019-09-09 16:53 ` Tobias Geerinckx-Rice
2019-09-09 17:04 ` Raghav Gururajan
@ 2019-09-09 17:20 ` Pierre Neidhardt
2 siblings, 0 replies; 17+ messages in thread
From: Pierre Neidhardt @ 2019-09-09 17:20 UTC (permalink / raw)
To: Tobias Geerinckx-Rice, help-guix, Raghav Gururajan
[-- Attachment #1: Type: text/plain, Size: 324 bytes --]
I've read Practical Common Lisp. It's very good to learn Common Lisp if
you already know the basics of programming.
It's rather "practical" and does not go into the deeper concepts
introduced by SICP. In particular, it does not deal much with
functional programming.
--
Pierre Neidhardt
https://ambrevar.xyz/
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:18 Raghav Gururajan
2019-09-09 16:38 ` John Soo
2019-09-09 16:50 ` Tobias Geerinckx-Rice
@ 2019-09-09 17:18 ` Vladimir Sedach
2019-09-09 20:11 ` Ricardo Wurmus
3 siblings, 0 replies; 17+ messages in thread
From: Vladimir Sedach @ 2019-09-09 17:18 UTC (permalink / raw)
To: Raghav Gururajan; +Cc: help-guix
Here are some "introductory yet comprehensive" books about programming
with Scheme that will help you get proficient with Guile and other
Scheme implementations:
Felleisen et al's How to Design Programs: https://htdp.org/
Havrey and Wright's Simply Scheme
Springer and Friedman's Scheme and the Art of Programming
Out of these I recommend Havrey and Wright's Simply Scheme the most.
It has the best treatment of input/output and text processing, a
couple of large realistic projects (a spreadsheet and a database),
and a chapter on Common Lisp.
Vladimir
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 16:18 Raghav Gururajan
` (2 preceding siblings ...)
2019-09-09 17:18 ` Vladimir Sedach
@ 2019-09-09 20:11 ` Ricardo Wurmus
2019-09-12 1:16 ` Raghav Gururajan
3 siblings, 1 reply; 17+ messages in thread
From: Ricardo Wurmus @ 2019-09-09 20:11 UTC (permalink / raw)
To: Raghav Gururajan; +Cc: help-guix
Hi,
I’d like to second Vladimir’s recommendation of Felleisen's How to
Design Programs (https://htdp.org/). It is a very well-written book
that doesn’t go too deep without preparing you first. (I should note
that I didn’t finish it.)
SICP is a classic, and it is very comprehensive, but it is also has a
steeper learning curve than other books. Some of the exercises are
really hard, and some are a little too “engineery” for casual
programmers. You will spend a lot of time on each important concept,
but it can be hard to stay motivated for as long as it takes to get to
the next exciting concept. I prefer the videos by the authors, which
cover the same ground but more quickly, so staying motivated is less of
an issue. If you want a book that will definitely keep you busy: this
is it.
Unlike others, I did not enjoy The Little Schemer much. It has a very
unique style of questions and answers, but sometimes it feels very
forced and it ended up confusing me more than it helped. Some people
swear by The Little Schemer, but personally I would not recommend it to
new learners.
“The Land of Lisp” is quirky and an odd joy to read! It’s got cartoons
and weird drawings, so if you have a short attention span like me you’ll
appreciate that. If you use it to prepare yourself for learning Scheme,
though, you’ll be disappointed as the code they present is not at all
idiomatic Scheme. There’s a lot of mutation and inelegant Common Lisp
forms (well, “inelegant” or “overengineered” from a Schemer’s
perspective, perhaps) that are not how you’d do things in Scheme.
There’s hardly anything about functional programming in the book, and
sometimes I found the examples too long to develop an intuition about
the problem and how to solve it myself from scratch. (The author also
compares Haskell and purely functional programming to an oppressive
regime in a cartoon, which I think is in poor taste.) Perhaps games
aren’t the best kinds of problems for learing a new language.
“Realm of Racket” is very similar to “Land of Lisp”, but I had —
inexplicably — less fun and ended up skipping over many of the examples.
It’s not really a problem with the writing — perhaps I just grew tired
of motivating myself with games. It uses Racket, which I think is a
more beautiful (collection of) language(s) than Common Lisp, and it is
closer to what you would find in Guile.
--
Ricardo
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-09 20:11 ` Ricardo Wurmus
@ 2019-09-12 1:16 ` Raghav Gururajan
2019-09-12 6:34 ` Konrad Hinsen
0 siblings, 1 reply; 17+ messages in thread
From: Raghav Gururajan @ 2019-09-12 1:16 UTC (permalink / raw)
To: rekado, mail, jgibbons2357, vas, me, znavko, jsoo1; +Cc: help-guix
[-- Attachment #1: Type: text/plain, Size: 482 bytes --]
Hello Everyone!
Thank you all for your suggesstions.
After careful review, I have chose following books to read:
PROGRAMMING CONCEPTS:
1) Structure and Interpretation of Computer Programs
2) How to Design Programs
COMMON LISP:
1) ANSI Common LISP
EMACS LISP:
1) An Introduction to Programming in Emacs LISP
SCHEME:
1) The Scheme Programming Language
:-)
I have a doubt though, do I have to learn dialects of LISP in a
particular order?
Regards,
RG.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Help with Learning Programming and LISP
2019-09-12 1:16 ` Raghav Gururajan
@ 2019-09-12 6:34 ` Konrad Hinsen
0 siblings, 0 replies; 17+ messages in thread
From: Konrad Hinsen @ 2019-09-12 6:34 UTC (permalink / raw)
To: help-guix, raghavgururajan
On 12/09/2019 03:16, Raghav Gururajan wrote:
> I have a doubt though, do I have to learn dialects of LISP in a
> particular order?
No, you can learn each of them on its own, and proceed in any order if
you want to learn all three of them.
If your main goal is to learn about the core features of the Lisp
family, I'd start with Scheme, which is the smallest and most coherent
Lisp dialect. Common Lisp is huge in comparison, but if you try to write
real-life programs in Scheme, you will discover that there are actually
good reasons for having a large standardized language. The other main
difference is that Common Lisp implementations tend to have much better
development environments and in particular much better debuggers, which
is also a consequence of the minimalist vs. practical tool approaches
taken by the two dialects.
In my opinion, there is exactly one reason for learning Emacs Lisp: to
configure and extend Emacs. Some people also use Emacs Lisp for text
processing tasks, because Emacs provides an excellent support library
for that. But as a language, Emacs Lisp is mostly considered outdated
and inferior to either Scheme or Common Lisp. I would definitely not
recommend learning Emacs Lisp as a typical modern Lisp.
Konrad.
^ permalink raw reply [flat|nested] 17+ messages in thread