## HtDP – prologo: come programmare – 1

Prologue: How to Program
When you were a small child, your parents probably taught you to count and later to perform simple calculations with your fingers: “1 + 1 is 2”; “1 + 2 is 3”; and so on. Then they would ask “what’s 3 + 2” and you would count off the fingers of one hand. They programmed, and you computed. And in some way, that’s really all there is to programming and computing.

Uhmmm, vediamo, nella REPL, quella migliorata di cui dicevo recentemente:

Però forse sto sbagliando tutto. Cioè no, sarebbe OK se partissi proprio a livello niubbo perso ma arrivo da un corso di Common Lisp fatto davvero bene, non metto il link per non sembrare ripetitivo ma c’è nel post precedente (su Racket, ovvio).

Per cui salto alle cose nuove, nèh! 😉

This is as a good a time as any to discuss the nature of our notation—dubbed Beginning Student Language or just BSL—something you might have pondered for a while now. E fa operazioni simili a quelle che ho fatto io.
Uh! ‘na roba: This book does not teach you Racket, even if the software is called DrRacket. Instead it uses a series of teaching languages created for learning design principles. Once you have mastered these languages, you can quickly learn to program in all kinds of programming languages, including Racket and also JavaScript, Python, Ruby, and others.

Elementare –assay– ma leggibile: If programming were just about numbers and arithmetic, it would be as boring as mathematics. Just kidding: mathematics is a fascinating subject, but you knew that. 😉

Piuttosto:

Ovvio. Sto barando, i docenti (Matthias Felleisen, Robert Bruce Findler, Matthew Flatt e Shriram Krishnamurthi) non se ne accorgono perché sono di là, dovrei usare l’IDE DrRacket, quella che lancio con drr. Ma va bene, vero?
Piuttosto: facendo click su `string-append` finisco alla definizione, sempre su un file HTML locale:

Credo ci arriveremo. Per intanto notare il termine `procedure` e non `function`. O altro, mi dice procedure anche per gli operatori aritmetici, booleani e altri ancora.

Ecco, vedi dovrei davvero essere più diligente:

Use F1 or the drop-down menu on the right to open HelpDesk, look at the manuals for HtDP languages (BSL) and its section on primitives. It lists all the operations in BSL and especially those that work on strings.

E si apre una pagina diversa nel browser Showing all matches (13 exact) trovate nella documentazione salvata nella directory della documentazione doc. 😀

`#f` sta per false, il testo scrive `false` ma OK.
This is neither a number nor a string; it is a Boolean. Unlike numbers and strings, Boolean values come in only two varieties: true and false. The first is truth, the second falsehood.

Notare che `#T` e `#t` sono entrambe `true`, chissà se…

Uau! a differenza di CL il caso importa; CL è vecchio, ricordo perfettamente che nel Fortran <mica partirai con il solito Fortran di quando eri piccolo?> OK, scancello. E continuo…

OK, i predicati che in CL (che nomino per l’ultima volta promesso (quasi)) hanno nomi che finiscono con `P` qui usano molto più sensatamente `?` (come in newLISP). <mica parti con questa manfrina adesso?> No, promesso.

With all these new kinds of data—yes, numbers, strings, and Boolean values are data—and operations floating around, it is easy to forget some basics, like nested arithmetic:

``````(and (or (= (string-length "hello world") (string->number "11"))
(string=? "hello world" "good morning"))
(>= (+ (string-length "hello world") 60) 80))``````

What is the result of this expression? How did you figure it out? All by yourself?

Questa è una delle cose che mi piacciono del Lisp: ogni funzione ritorna un valore per cui la procedura (uso i sui termini) `=` della prima riga valuta se sono lo stesso numero la lunghezza della stringa “hello world” e il numero della stringa “11”, vero; la seconda riga valuta se le due stringhe sono uguali, falso; a questo punto i due valori, `#t` e `#f` sono passati alla `or` ottenendo `#t`; la terza riga valuta se 71 è maggiore o uguale a 80, falso; questo risultato viene passato con il `#t` di prima alla `and` ottenendo `#f`. Vediamo:

volendo si può scomposta:

OK! 😀

Before we show you how to do some “real” programming, let’s discuss one more kind of data to spice things up: images.
Uh! la prossima volta, pausa

Posta un commento o usa questo indirizzo per il trackback.