Author Archives: juhan

HtDP – dovete leggerlo di là

x_004Sono giorni che ci sto provando senza successo; sto leggendo qui.
Il testo è chiaro, introduce concetti che i programmatori non niubbi conoscono (anche se non sempre applicano come il copiare) e altre cose non scontate (come quella che le funzioni sono valori e quindi si possono passare a funzioni).
Non è possibile riassumerlo. E non voglio fare un semplice elenco, non ha senso come si vede dai post precedenti. È piuttosto lungo, richiede tempo, più giorni secondo me, se si è nuovi nella programmazione. Per contro io mi ritrovo cose note del Lisp anche se con qualche differenza (il Lisp esiste in infinite varianti, questo deriva da Scheme).

Proseguendo e arrivando a Intermezzo: Scope and Abstraction si trovano altri concetti, per esempio la definizione dei cicli (loops). In Common Lisp il ciclo è una brutta bestia, qui viene visto attraverso le astrazioni precedentemente introdotte. Resta comunque una brutta bestia, in molte varianti.

I capitoli “Intermezzo” sono più pratici ma essendo strettamente collegati al resto non ha senso vederli separati (e quindi parlarne sul blog).

Per cui, con dispiacere, mi arrendo, userò HtDP –che è bellissimo– solo per quando mi troverò in difficoltà con Racket, affrontato in modo più tradizionale. D’altronde il prof Matthias Felleisen e collaboratori l’avevano previsto: Chapter 2 provides a brief introduction to Racket. From Chapter 3 on, this guide dives into details—covering much of the Racket toolbox, but leaving precise details to The Racket Reference and other reference manuals.

Ma tutto questo non immediatamente, prima finisco di leggerlo, ci sono cose che non so di non sapere :mrgreen:

Visto nel Web – 190

Fa caldo, troppo, decisamente troppo. OK, intanto ecco cosa ho visto nel Web.
11665515_933547536683573_3656437893251385293_n
Top 20 #opensource #machinelearning projects in Python
::: elenaneira

clojure-toolbox.com  is such a great resource!
::: nonrecursive

Compagni che non ragionano abbastanza
OK, Eco è andato :evil:
::: manteblog

L’irresistibile ascesa dell’open source
::: Apogeonline

5 Ways To Learn Programming Faster
::: I am Programmer

cost-cosm

Into the future! The making of “Beyond #Cyberpunk”
::: verdebinario

Banzi perde il primo round per il controllo di Arduino
::: il Sole 24 Ore

Where Computer Science, Engineering, and Math Majors Want to Work
::: TechCrunch

How Television Is Fighting Off the Internet
vero?
::: Slashdot

Cosa sappiamo dello spionaggio industriale NSA di cui parla Snowden
::: Chiusi nella rete ::: fabiochiusi

bog

The Supreme Court just refused to review a disastrous ruling on software copyrights
::: Vox

Git from the inside out
::: Code Words

Nanoelettronica in grafene
::: Focus

SMS Co-Inventor Matti Makkonen Dead At 63
::: Slashdot

Alexandria
::: Alexandria

11693835_1644964099073961_5354498727489313942_n

Cookie Law: E’ arrivato il widget ufficiale per WordPress e si chiama EU Cookie Law Banner
::: patfumetto

Dilemme de codeur #6 – Le choix de la techno
a me viene da pensare al Fortran IV
::: CommitStrip

Dask
Dask enables parallel computing in Python; forse ne ho già parlato
::: Dask

ClojureScript REPL in 3 steps
::: bus_kanaka

The Old Coding Languages That Refuse to Die
::: Bloomberg

11402720_836945379722521_55425876656913874_n

If the Computer Fits, Wear It
::: Computer History Museum

Docker: Not Even a Linker
::: The Drive-By Contrarian

$50SAT
::: Note Diacroniche

How Verizon Is Hindering NYC’s Internet Service
::: Slashdot

Project Euler – Problem 2
::: Extended Reality

11178357_10153610036225934_7299981349963903085_n

SSL/TLS da command line
::: SIAMO GEEK

Beyond Propaganda
::: Foreign Policy

Kaspersky: è l’era dalla Digital amnesia, più “smemorati” e dipendenti dal mobile
::: Tech Economy

Rischia 8 anni di carcere per aver condiviso un documento già online
::: Wired

‘The Rust Programming Language’ E-Books
::: Pascal Hertleif

scan

North America Runs Out of IPv4 Addresses
::: Slashdot

Uno dei più estesi programmi di sorveglianza della storia, e come funziona
::: Chiusi nella rete

Ho scoperto il nome del gatto del mio vicino
::: Wordsfit

Internet advertising is now bigger than TV in North America and Western Europe
::: BenedictEvans

bu

Julian Assange : « Monsieur Hollande, accueillez-moi en France »
::: Le Monde ::: Numerama

Why ClojureScript Matters
::: JUXT

Why Wikipedia + Open Access = Revolution
::: Technology Review ::: dropsea

How China stopped its bloggers
::: AFR
girls

Il Lisp è diverso

warningQuesto –vi avviso subito– è uno di quei post senza troppo senso in cui tento di giutificarmi di quello che faccio. Una roba che capita ogni tanto l’ultima volta credo sia stata questa: Perché Lisp.

Il post è nato in condizioni di serendipity funzionale e ricorsiva. Cioè in seguito a una discussione partita su Facebook e proseguita via mail su quale sia la struttura migliore dei linguaggi di programmazione poi deragliata. Magari ne parlerò in futuro ma forse sono cose che interessano solo i vecchi (anche il mio interlocutore aveva iniziato con il Fortran) mentre oggi sono tutti alle prese con C++, Java, Matlab (di cui se ne parla poco ma c’è). A dire il vero chi seguo su Twitter (il mio social-coso preferito) dice di programmazione funzionale, Clojure, Haskell, Scala e peggio ancora. Che poi è quello che vorrei approfondire, forse probabilmente i miei seguiti non sono tipici, pochissimi gattini pucciosi :wink:

10-90

OK, TL;DR, vengo al dunque: a seguito della discussione ho googlato un po’ (neanche tanto) e serendipiticamente (le ricerche non sono mai perfette e a volte, come in questo caso, per fortuna) sono finito su un vecchio post di John D. Cook, questo: The myth of the Lisp genius.

Questo post mi ha fatto deragliare –al solito! Non tanto quello che dice John (sempre ottimo) ma i commenti.
Adesso, senza prenderlo troppo sul serio, come un gioco, riporto qualcosa copiando –come sempre– di brutto.

Lisp has jokingly been called ‘the most intelligent way to misuse a computer’. I think that description is a great compliment because it transmits the full flavor of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.
Sì, è EW Dijkstra, riportato da Jan Galkowski nel commento del 3 dicembre.

Christopher (Kotfila, si trova su Twitter): Learning LISP is valuable because it provides a completely different perspective on what a programing language is.

Andrew Pennebaker: Verbosity distinguishes programming lanugages. Because Lisp requires less typing than other languages, Lisp affords programmers the mental space to write more complex programs. That’s why AI is typically done in Lisp.
È da leggere tutto il commento, anche divertente.
You don’t have to be a genius to learn Lisp or to use functional programming, but there is a correlation between Lispers and Computer Science education, interest in theory, and natural curiosity.

Personalmente concordo con Jason in tutto e per tutto il suo commento (che non copio, è di là).
Ma ci sono tutti gli altri, tanti spunti.
Ho controllato anche chi sono i commentatori, à la NSA, dove possibile per quelli che maggiormente mi piacciono e ho scoperto una cosa, forse. O forse no, è normale: sono tutti importanti! A volte salta fuori un post in un blog di un giovanissimo che ti piace, lo RSSisci ma il blog muore, il giovane ha trovato lavoro e/o non ha più voglia e tempo. Peccato. Questi invece interagiscono, spesso in proprio o sul blog di John.

Infine aggiungo una cosa mia, anzi tre:

  • le s-expressions che ritornano un valore con la concatenazione e l’annidamento rendono diverso il Lisp da Fortran, Algol e derivati (C++, Java, Python);
  • l’omoiconicità, la struttura del programma è simile alla sua sintassi, e quindi rappresentazione interna del programma può dedurre leggendo il layout del testo;
  • le macro, non è che le padroneggio come vorrei ma sono quelle che unite all’omoiconicità rendono il Lisp un linguaggio di programmazione programmabile.

x-y

:mrgreen:

HtDP – quote, unquote, &co.

c2Naturalmente il mio è solo un supporto a quello che trovate qui.

Lists play a central role in our book and in Racket, which spawned our teaching languages. For the design of programs, it is critical to understand how lists are constructed from first principles; it informs the organizations of the functions in our programs. Routine work with lists calls for a compact notation, however, like the list function.

Since the late 1950s Lisp-style languages have come with an even more powerful pair of list-creation tools: quotation and anti-quotation. Many programming languages support them now […]

Quote

Quotation is a short-hand mechanism for writing down a large list easily. Roughly speaking, a list constructed with the list function can be constructed even more concisely by quoting lists. Conversely, a quoted list abbreviates a construction with list.

Note: Be sure to use BSL+ or higher for working through this intermezzo.

quote è una keyword:

l11

siccome si usa spesso esiste la scorciatoia ' (apice).

l12

Al solito io preferirei usare la REPL ma poi viene diverso, sarebbe così:

l13

quote –inteso come apice– fa anche di più:

l14

nella REPL viene così:

l15

mi sa che devo usare DrRacket.

quasiquote e unquote

But all good things come with surprises, and that includes quote.

Dice Matthias che le liste all’inizio sono meno intuitive di cons; io sono vecchio e non so ma mi fido :grin:, voi leggete di là.

Let us move on then to the actual surprises hidden behind quote. Segue un concetto importante, che non duplico ma si introduce il simbolo: [f]or our purposes, a symbol looks like a variable names except that it starts with ' and that a symbol is a value.

In some cases, you do not want to create a nested list. You actually want a true expression in a quoted list and you want to evaluate the expression during the construction of the list. For such cases, you want to use quasiquote. Like quote, quasiquote is a keyword for a compound sentence: (quasiquote (1 2 3)). And like quote, quasiquote comes with a shorthand, namely the ` character, which is the “other” single-quote key on your keyboard.

Per noi disgraziati con la tastiera italiana il simbolo ` si ottiene con AltGr+’ per Linux e digitando 96 dal tastierino numerico (se c’è) tenendo premuto il tasto Alt per Windows.

Al solito c’è tutto di là ma questo chiarisce tutto:

l16

Avrei potuto scrivere:

l17

che nella REPL si presenta così:

l18

Quindi le scorciatoie sono:
' == quote
` == quasiquote            `
, == unquote (è la virgola)
,@ == unquote-splicing (adesso arriva)

Proprio come nel Common Lisp dove però non esistono le funzioni quasiquote e unquote; inoltre non si usa il termine quasiquote ma backquote. Uh! si usa anche backtick.

Unioni di unquote

When quasiquote meets unquote during the expansion of short-hands, the two annihilate each other.

L’esempio che riporta il prof usa una funzione non definita (make-row) ma non importa, si può proseguire e si arriva alla funzione unquote-splicing la cui scorciatoia e ,@ proprio come nel Common Lisp.

Il prof continua l’esercizio –ahemmm…– visto ma non fatto, si dovrebbe cercare make-row.

:mrgreen:

HtDP- dati arbitrariamente grandi – 3 – generalizzare le funzioni

1627c95b-b5ad-4037-b24b-7b40c6aaef43Continuo da qui a vedere questo qui.
Questo post sembra corto ma solo apparentemente. Seguendo le raccomandazioni a leggere Matthias è mooolto impegnativo, anche se facile e chiaro :wink:

Generalizzare le funzioni

Auxiliary functions are also needed when a problem statement is too narrow. Conversely, it is common for programmers to generalize a given problem just a bit to simplify the solution process.

Qui il prof fa un esempio grafico, riprendendo cose già viste, inutile ripeterle qui. Alla fine giunge alla creazione della funzione polygon. [polygon] is available in one of its [di Racket] libraries. If you are wondering why we just designed a similar function, take a look at the title of the book and the section. The point is not (necessarily) to design useful functions, but to study how programs are designed systematically.

Esercizi con le liste

This chapter presents four extended exercises, all of which aim to solidify your understanding of all elements of design: the design of batch and world programs, the design recipe for functions, making wish lists, and the guidelines for composing functions.

È incredibile come con gli elementi visti finora (siamo appena agli inizi) si riescano a fare cose come quelle proposte. E mica finisce qui :grin:

Il guaio è che questi post non ho ancora trovato il modo di scriverli come vorrei: rimando di là perché è perfetto; e di mio aggiungo quasi niente. Devo pensarci su un po’, prossimamente… :mrgreen:

HtDP- dati arbitrariamente grandi – 2 – liste

2015 - 1Continuando da qui eccomi a leggere qui.

Progettare per composizione

[N]ow you know that programs are complex products and that their production requires the design of many collaborating functions. This collaboration works well if the designer knows when to design several functions and how to compose these functions into one program.

Continuate a leggere là vero? anche perché adesso arriva una funzione di quelle che WOW! :grin:

La funzione list

At this point, you should have tired of writing so many conses just to create a list, especially for lists that contain a bunch of values.

l5

Siamo fortunati, c’è list:

l6
La lista può contenere elementi di ogni tipo, anche liste:

l7

Forse ho trollato, poi il prof ve lo spiega quell’apice (che chiamiamo quote) per inserire la lista interna (altrimenti veniva valutata e dava errore).

Of course, we can apply list not only to values but also to expressions:

l8

Ah, fate gli esercizi ma per intanto:

l9

Una cosa: c’è il dizionario, siamo ancora principianti quindi andiamo (quando serve) il Beginning Student.

Comporre funzioni

Abbiamo visto that programs are collections of definitions: structure type definitions, data definitions, constant definitions, and function definitions.

Fate tante piccole funzioni specializzate, come dice di là. C’è anche la rivelazione del trucco delle Wish Lists, importantissima, molto più di quanto i niubbi riescano a immaginare.

Funzioni ricorsive ausiliarie

People need to sort things all the time, and so do programs.
Qui il prof parte con una lunga lezione, da seguire.

Solo una nota: io mi rifugio nella REPL tutte le volte che posso ma non sempre si può. Per esempio il prof usa spesso la funzione check-expect che è disponibile solo con DrRacket e non subito, dovete selezionare Language/choose Language/Beginning Student.

Ancora una nota: seguire il prof richiede un po’ di pazienza; per esempio non usa mai variabili (scopriremo presto il perché) e allora bisogna sempre costruire la lista al volo. Ovviamente per costruire la variabile primi-cinque si può fare così (e resta a disposizione:

l10

pausa, riprenderò da Generalizing Functions.
:mrgreen:

HtDP- dati arbitrariamente grandi – 1

l8Continuo da qui, oggi sono qui.

I tipi di dati visti finora hanno dimensione uno; vale a dire che ognuno rappresenta un numero o una stringa o una struttura. Ma capita sovente di dover trattare con più dati, per esempio per fare la media occorre una serie di dati.

This part revises the language of data definitions so that it becomes possible to describe data of (finite but) arbitrary size.

Si comincia con le liste –ehi! è il Lisp :grin:

Liste

HdDP è impareggiabile anche per come è scritto, per esempio la definizione che segue è OK anche se contiene un pizzico di LOLlosità.

This chapter introduces self-referential data definitions, that is, definitions that refer to themselves. It is highly unlikely that you have encountered such definitions before. Your English teachers certainly stay away from these, and many mathematics courses are somewhat vague when it comes to such definitions. Programmers cannot afford to be vague; programming languages call for precise definitions.

Creare liste

Some people write down a to-do list every morning. During December, many children prepare Christmas wish lists. To plan a party, we make a list of invitees. Arranging information in the form of lists is a ubiquitous part of our life.

When we form a list, we always start out with the empty list. In BSL, we represent the empty list with

'()

la lista vuota (empty).

Aggiungiamo qualcosa a una lista con cons:

l0

La lista contiene due campi: first e rest. Così:

l1

Usando ripetutamente cons possiamo aggiungere elementi alla lista:

l2

Quello che capita è questo:

l3

Poi il resto lo leggete di là, vero?
Come pure la spiegazione che '() è un tipo di dato atomico distinto da ogni altro tipo di dato. C’è anche l’esempio. empty? è un predicato (finisce con ?) cioè ritorna un booleano, vero se vuoto:

l4

Next we turn to cons. Everything we have seen so far suggests that cons is a constructor just like those introduced by structure type definitions. More precisely, cons appears to be the constructor for a two-field structure: the first one for any kind of value and the second one for an list-like value.

Continuate di là, arrivando al riepilogo in figura:

l5

Tutto da leggere di là programmare con le liste, calcolare con le liste e progettare con definizioni di dati autoreferenziali con gli esercizi.

Liste non vuote

Now you know enough to use cons and to create data definitions for lists. If you solved (some of) the exercises at the end of the preceding section, you can deal with lists of various flavors of numbers, lists of Boolean values, lists of images, and so on. In this section we continue to explore what lists are and how to process them.

C’è un esempio semplice e dettagliato che al solito è da vedere nell’originale.

E poi…

Niente, tutto da leggere di là, lungo ma semplice. Riprendo, forse con più cose mie da qui: Design by Composition.

:mrgreen:

Visto nel Web – 189

Condizioni di salute non tanto buone ma poi mi passa –forse, spero :wink:
Intanto ecco cosa ho visto nel Web.

Stephen Bourne

Stephen Bourne

Two Years After Snowden Leaks, Encryption Tools Are Gaining Users
::: Slashdot

Why I still prefer Scala after Java 8 was released
::: Scala vs JDK8

Blaise Pascal would have used EMACS!
::: Google+

40% of Europeans don’t have basic digital skills
::: DigitalAgendaEU

Mi fa piacere che hai solo 4 preferiti e che uno sia mio!
::: f_126_ck

sac150618

Smartphones are really a generational change in scale for the industry
::: BenedictEvans

1 In 3 Data Center Servers Is a Zombie
::: Slashdot

LLJS : Low-Level JavaScript
::: mbebenita

Quasar and Kotlin – a Powerful Match
::: Parallel Universe

Racket v6.2
::: Google Groups

CHkj5UEWgAA_n0e

They started using Linux
::: climagic

Can Wikipedia Survive?
io sono convinto di sì :grin:
::: The New York Times

History of the First Crypto War
::: Bruce Schneier

The UNIX Philosophy and Elixir as an Alternative to Go
non so se è vero, chissà…
::: Aaron Lebo

La U.S. Navy paga oltre 9 milioni di dollari per mantenere il supporto a Windows XP
::: Downloadblog

Finally… the process to replace JavaScript has begun
::: coolscala

CIBPNhAWcAA4yrx

The Internet That Was (and Still Could Be)
::: _arianna

jooby – do more, more easily
::: jooby

I modelli di business del software libero
::: Tech Economy

Lasciate che Snowden ritorni negli Stati Uniti e possa difendersi sollevando l’eccezione di avere agito nell’interesse pubblico
::: Consiglio d’Europa

Il documento NSA che prova la presenza dell’unità SCS a Parigi – e Roma
::: fabiochiusi

IMG_8398

Algorithmic wizardry
::: The Endeavour

LaTeX, Microsoft Word, effort, and document complexity
::: MartensJD

Apple co-founder Steve Wozniak says humans will be robots’ pets
alle volte Woz :lol:
::: fabiochiusi

Il Social di papà
::: Il Tecnico Informatico

The Next Java Update Could Make Yahoo Your Default Search Provider
::: Slashdot

11402954_10152987468070687_4229105583131147704_n

Ce la faremo eh, ma la strada è in salita ripida ripida!
::: flavia_marzano

Who Controls Your Computer? (And How to make sure it’s you)
::: Faré’s

Rust 1.1 stable, the Community Subteam, and RustCamp
::: The Rust Programming Language

Early days of Unix and design of sh
::: BSDCan – The BSD Conference

NASA and Microsoft will send HoloLens into space by the end of this year
::: The Next Web

sac150624

astrofrog
a plugin to faciliate image comparison for Matplotlib figures in pytest
::: astrofrog

Riflessione: è ora di spostare la mail?
::: SIAMO GEEK

Oh no! Hitler blaming me in Italian for monads in C++ and demonic Haskell
::: BartoszMilewski

Ah, finally got my Emacs setup just how I like it
::: ieure

#finaki15it oggi il 38% degli italiani non conosce internet
::: luc_guglielmi

tumblr_nqg9ngF5Cr1qboyowo1_500

Dice il saggio da scrivania
::: AngioniSimone

Siete in cerca di tutorial per Arduino?
::: Google+

Non lasciate che l’open source sia una battaglia di parte
::: Marco’s Box

Il ritorno di WikiLeaks
::: Chiusi nella rete

OneWeb Secures “Largest Ever” Rocket Acquisition For Satellite Internet Launch
::: Slashdot

CIe1jg1WEAAZW9s

Portable Utah Standard LISP
::: blakemcbride

L’uccellino che spia dove ti trovi. Ma questo non è un opt-out!
::: Quinta’s

free data science books
::: The Ubuntu Incident

words of wisdom from StackOverflow :)
::: imRahulSoni
wpbanner

HtDP – Tipi di dati – 8 – strutture

w_006Continuo da qui, leggendo studiando qui.
Sono in condizioni di salute non proprio perfette, provo lo stesso a rackettare, chissà :wink:

Strutture

Il prof ci fa capire come i tipi di dati che abbiamo visto finora praticamente non ci bastano.
Every programming language provides some mechanism for combining several pieces of data into one piece and for retrieving the constituent values. BSL is no exception; it offers structure type definitions as the fundamental mechanism for combining several values into one. In general, a structure type definition introduces many different functions into the available vocabulary, including one that creates structure instances—structures for short—and several others that extract values from instances.

Da qui parte tutta una lunga lezione, chiarissima, non riassumibile per cui tutti di là. Sono cose che chi conosce altri linguaggi di programmazione OOP ha già visto più volte, i nuovi le scopriranno in modo chiaro e semplice.

Mi sa che mi sono cacciato in un pasticcio, dal quale non so ancora come uscirne. Il fatto è che HtDP è fatto troppo bene, non c’è niente da aggiungere, se non “oh!”, “ah!”, “ecco”.
Però il prof queste cose le sa, difatti passa a Intermezzo: BSL dove confessa:

Thus far we have approached teaching BSL as if it were a natural language. Like toddlers, we first taught you the vocabulary of the language with an intuitive understanding of its meaning. Next we exposed you to some basic rules of how to compose and not to compose sentences. Truly effective communication, however, requires some formal study of a language’s vocabulary, grammar, and meaning.

Viene definito il vocabolario, composto da nomi (variabili). Ognuno dei quali può essere una primitiva (+, sqrt) o una variabile, un valore, un numero, un booleano, una stringa o un’immagine.
Si passa poi alla grammatica, che per BSL è più semplice di quella degli usuali linguaggi. E mi sa che è tutto da vedere di là.
Nel frattempo ci penso su a come continuare questi post. L’idea è di trovare le parti in cui si può interagire lasciando la teoria.

Prossimamente… :mrgreen:

HtDP – Tipi di dati – 7 – gestire mouse e tastiera

nuovoDopo l’aggiornamento continuo da qui a seguire la lezione qui.

Controllare mouse e tastiera

OK! baro, ma da noi non si fa il plurale, specie se è irregolare, vero? :lol: Comunque avrebbe dovuto essere “A Note on Mice and Characters“.

Il programma di figura 11 mi ha fatto girare le scatole quanto basta, anzi di più. Intanto mancano i require, di cui uno da andare a cercare. Inoltre dopo l’installazione conviene riavviare (non so se necessario ma l’ho fatto). Quindi aggiungere prima della riga ; graphical constants queste istruzioni:

(require 2htdp/image)
(require 2htdp/universe)
(require test-engine/racket-tests)

salvare, lanciare (runnare?) e nella finestra interattiva eseguire (main 10), otterrete qualcosa come questo:

d15

I dettagli al solito li vedete di là. Il passo successivo, quello di figura 12 è per gli eventi di tastiera. Al solito mancano le tre istruzioni di require e poi con (main "test") ottenete questa meraviglia:

d16

OK? Adesso ci sono da fare gli esercizi; li fate vero?

Intervalli, enumerazioni e [uhmmm] itemizations

Finora abbiamo quatto tipi di dati: numeri, stringhe, immagini e booleani. Di solito bastano ma ci sono dei casi in cui non sono sufficienti. Quindi si va oltre. Matthias spiega molto meglio di me e allora mi sa che dovete andare di la.
Ci sono parecchie cose, importante per cominciare la spiegazione di cond (il case o select di altri linguaggi), la sintassi che a prima vista potrebbe sembrare strana, l’impiego delle parentesi quadre per rendere più leggibile il codice, anche se le tonde funzionerebbero ugualmente. Se c’è la clausola else (ma Wirth diceva che chi la usa non sa programmare (non ricordo dove ma forse in Algorithms + Data Structures = Programs)) dev’essere l’ultima.

Si passa poi alle enumerazioni, agli intervalli con esempio, e finalmente arriviamo a risolvere la parola mysteryousassay: An interval distinguishes different subclasses of numbers; an enumeration spells out item for item the useful elements of an existing class of data. Data definitions that use itemizations generalize intervals and enumerations.

Chiarite queste definizioni si passa al loro uso nel progettare programmi (4.6 Designing with Itemizations). Molto dettagliato e –al solito– non riassumibile.

Pausa, c’è molto da fare, riprenderò da 5 Adding Structure :mrgreen:

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 88 follower