Segnalo ancora un nuovo aggiornamento. Arrivato in ritardo ma è arrivato. :D Purtroppo sono stato distratto da interessanti argomenti di Intelligenza Artificiale e mi è passato tutto il resto di mente! :D

Fra le modifiche che ho fatto segnalo che ho completato la parte sui modelli astratti di algoritmi (forse approfondisco un po’ le macchine a registri) e ho corretto alcune sviste.

Ecco il solito link:

DIGITAL MIND

Alla prossima.

 

Penso di dover dare conto a qualcuno della mia lunghissima assenza. Ci sono molti motivi che mi hanno tenuto lontano dalle pagine di SlashCode in questi mesi. La prima è che avevo bisogno di staccare un attimo dalla vita tecnologica per dedicarmi ad altre mie passioni come la musica e la letteratura. Suono il pianoforte e la chitarra da anni e ultimamente le stavo lasciando troppo decadere. Il secondo punto è che, non appena ho ripreso gli studi informatici, mi sono concentrato su argomenti che sono poco da blog o quantomeno necessitano di una preparazione più specifica da parte del lettore e di un laborioso processo di semplificazione da parte mia. Ne parlerò sicuramente in un prossimo futuro ma essendo cose completamente nuove ci metto un po prima di elaborare un pensiero organico e coerente.

Il terzo punto invece è molto più interessante per chi mi legge. In questi mesi ho scritto gran parte di un libro dedicato a chi si avvicina alla programmazione ma anche a chi, sebbene sappia già programmare discretamente, è interessato al lato più “ingegneristico” e scientifico dell’informatica. Questo libro nasce per sostituire il vecchio GaPG la cui impostazione “blogghistica” cominciava da un lato a non soddisfarmi e dall’altro a limitare la mia possibilità di approfondire alcuni degli argomenti in modo coerente.

Prima di pubblicare la versione pdf ho preferito iniziare a rendere disponibile una versione HTML (raggiungibile da qui) che aggiornerò con cadenza circa settimanale. Ho optato per l’html in quanto mi è più facile mantenere aggiornata una versione web piuttosto che generare decine di bozze pdf con il rischio che le persone non sappiano più quale sia l’ultima versione aggiornata.

L’intero libro parte da un presupposto. La matematica. Non sono necessari prerequisiti matematici elevati: basta sapere un po di teoria degli insiemi e le operazioni base. Tuttavia non potevo farne a meno: chi parte con l’idea di programmare (e per programmare intendo farlo seriamente) deve mettersi in testa che la matematica è un requisito fondamentale.

Il volume è attualmente in lavorazione e, sebbene metto online solamente le parti che sono state già revisionate, non sono certo che siano esenti da errore ne che per adattarlo al resto faccia modifiche sostanziali sui primi capitoli.

Detto questo devo aggiungere due cose. Primo, il libro è dedicato a Evan (DJNeophyte) che mi ha incoraggiato a portarlo avanti anche quando pensavo di lasciar perdere. A lui va il più importante ringraziamento. Secondo, mi auguro che se siate interessati contribuiate con consigli di vario genere e segnalazioni di errori. Dopotutto possiamo considerarlo un libro opensource.

Alla prossima.

P.S.: Dato che non ho mai usato il LaTex per fare pagine Web mi sono arrangiato utilizzando il tool mk4ht. Solo che non l’ho mai usato. Se qualcuno volesse e conoscesse o lo strumento o il css e voglia contribuire a creare una versione web meno rustica mi contatti. Grazie.

 

qtVerrei farvi un regalo apprezzato. Mettere in piedi un’altra serie di guide oltre alle altre due principali (GAPG e Scheme) rischia di essere un azzardo. Ma, dato che sicuramente da febbraio avrò moolto tempo libero e che “parallelizzare un processo porta quasi sempre benefici” ho deciso di preparare una “mini serie” sulla programmazione grafica e in particolare all’uso di Qt e Python.

PERCHÉ QT?

Le Qt, dal mio punto di vista, sono nettamente superiori alle Gtk per semplicità di uso, completezza, resa grafica e strumentazione. Inoltre le so usare molto meglio delle Gtk e quindi non rischio di dire troppe boiate. Terzo punto, le Qt sono stra-mega portabili e quindi questa guida può essere facilmente seguita anche da sviluppatori Win.

PERCHÉ PYTHON?

Le Qt sono nativamente scritte in C++ per ovvi motivi. Esistono wrapper per parecchi linguaggi ma, fra tutti, quello meglio riuscito è sicuramente quello per Python. Quindi, per non dovermi concentrare troppo su argomenti troppo tecnici ed estranei alle Qt di cui sarei costretto a parlare se usassi C++, ho scelto Python. Inoltre Python è facile ed è uno dei linguaggi di programmazione con cui molti nuovi arrivati cominciano a programmare.

Python è la scelta adatta. Inoltre da python vi sarà semplice passare al C++ in quanto sia i nomi delle classi Qt, sia i dati con cui lavoro sono pressocché identici.

REQUISITI

I requisiti per la guida sono:

  • Conoscenza di Python a livello medio o medio-basso (ovvero conoscere tutti i costrutti base tipo if, for, def, while, liste, dizionari, tuple, etc…)
  • Familiarità con la programmazione a oggetti.
  • Familiarità con il terminale.
  • Cenni di Makefile.
  • Cenni di bash.

STRUMENTI

Presenterò gli strumenti man mano che ci serviranno. Tuttavia la dotazione base che utilizzarò io sarà:

  • KDevelop (o un qualsiasi altro editor/IDE)
  • PyUIC4
  • Qt-Designer
  • PyLint

Oltre ad altre varie ed eventuali.

COSA TRATTEREMO

Gli argomenti si dislocheranno fra:

  • Esempio di primo programma in Qt.
  • Presentazione dell’architettura della libreria Qt.
  • Presentazione di alcuni Widget comuni.
  • I Layout.
  • Gestione degli Eventi
  • I widget personalizzati

Più altre cose che ancora non ho deciso. Ci metterò un po ad organizzarmi per bene il discorso.

CONCLUSIONI

Alla fine delle guida saprete costruirvi delle interfaccie più o meno complesse. Ovviamente non posso insegnarvi il senso estetico ma quello non mi sembra importante per ora. :D

Datemi qualche feedback. Se ci sono persone interessate comincio lo sviluppo altrimenti lo lascio nella lista delle cose pendenti. :D

 

Questo articolo prende spunto dal corso di Ingegneria degli Algoritmi e da un articolo di Steve Friedl sulla lettura delle dichiarazione di tipo.

Uno degli scogli principali per chi comincia a programmare in C è proprio quello di comprendere bene il significato dei vari * e delle funzioni più contorte. Non è inverosimile che per i principianti si sviluppi un metodo di programmazzione chiamato “proviamo e vediamo se funziona” che consiste nell’aggiungere asterischi a caso nella dichiarazione fino a quando il programma funziona come sperato.

Ovviamente questo metodo è sconsigliabile, contando che esiste una pratica regola che rende decifrabile anche le dichiarazioni più ingarbugliate: “go right when you can, go left when you must”

Continue reading »

 

Posto qui di seguito la prima di una serie di guide pratiche su Java e sul Multithread che sta portando avanti un mio amico di università Dymios sul suo blog. Per ora metto solo la prima parte. Potete continuare la lettura sul suo blog.

Continue reading »

 

Continuiamo la serie di lezioni sulla programmazione generale, questa volta cercando di approfondire molti degli aspetti che nelle prime 10 parti introduttive avevamo lasciato appesi. Cominciamo perciò dal concetto che (dopo i puntatori) spiazza di più chi non ha confidenza con la programmazione: gli oggetti.

Abbiamo già visto nelle parti precedenti il principio base su cui si fondano i linguaggi di programmazione orientati agli oggetti. In particolare abbiamo parlato del concetto di oggetto come del concetto di entità dotata di caratteristiche e abilità particolari.

Adesso cercheremo di entrare più in dettaglio su alcuni aspetti per ottenere le basi per futuri approfondimenti.

Continue reading »

 

Come già ho annunciato sto convertendo, ampliando e correggendo i 10 articoli di Guida alla Programmazione Generale in pdf. L’università ha rallentato molto questo processo e quindi per mostrarvi la mia buonafede inizio a darvi il link per la prima bozza.

Per il momento contiene gli articoli da 1 a 6 con alcune imprecisioni corrette. :)

GAPG – Bozza01

 
Vi verrà lo sturbo.

Vi verrà lo sturbo.

Nel corso di Modelli e Complessità che sto seguendo è stato introdotto il Lisp (List Processor o meglio Lots of Infuriating & Silly Parenthesis) come esempio di linguaggio funzionale.

Come ho accennato in passato la programmazione funzionale è un tipo di paradigma che pone l’accento sulla definizione di funzioni poichè il flusso del programma assume la forma di valutazione di funzioni matematiche e in particolare delle funzioni ricorsive.

Senza addentrarci troppo in tecnicismi di informatica teorica passiamo subito ad affrontare la “pratica” con il linguaggio Lisp.

Continue reading »

© 2008-2012 SlashCode Suffusion theme by Sayontan Sinha