Iniziare a Programmare - Consigli per principianti
da koteko, in Informatica Libera | 27 agosto 2008 @ 16:43 | 4 commenti
Molto spesso sul forum di ubuntu-it.org giovani pinguini scrivono topic come “Imparare a programmare” e simili.
La sezione Programmazione ne è ovviamente piena, ed è una cosa bella: mi auguro sempre che su dieci che vogliono iniziare, uno si metta a scrivere software libero.
Girando sul web, ho visto che questa tendenza c’è in qualsiasi community un po’ geek, come c’era su IRC quando bazzicavo anni fa i canali riguardanti Linux e le distribuzioni che usavo, e su qualsiasi forum con ragazzi che si avvicinano all’informatica oltre i videogiochi e l’uso da utente.
Indubbiamente è un argomento che attira molto, ma ci sono una serie di problematiche per chi inizia che spesso decretano il fallimento del tentativo e la successiva rinuncia:
- Troppe risposte diverse. I consigli degli esperti spaziano dall’Assembler al F#.
- Incapacità di chi aiuta di comprendere almeno un minimo la psicologia di chi scrive.
Si assume che sia un geek qualcuno che ha appena installato Ubuntu e ha chiesto aiuto già tre volte per trovare il Solitario, e si consiglia il Logo a chi sta già provando a fare danni con la shell bash. - Sovraffollamento di documentazione. Già è difficile per chi inizia scegliere tra dieci manuali diversi, ma se gli esperti ne consigliano ciascuno uno diverso…ci siamo capiti :)
- Difficoltà per il principiante di essere immediatamente operativo, con alcuni linguaggi e se i consigli non sono adeguati alla sua conoscenza del sistema.
Capisco chi, nella veste dell’ipotetico esperto, pensa
io gli do il mio consiglio, poi s’arrangi.
Oppure
Se non ha la voglia di spulciare sul web e capire da solo, non vale la pena che io ci perda tempo.
Non sono per nulla d’accordo. Siamo tutti diversi, e lo stimolo per programmare può venirci in qualsiasi momento, un po’ come quello per installare Linux: vedo spesso intorno a me che anche per questo ci sono molte paure, e le problematiche sono quasi le stesse.
Un programmatore in più che scriva in futuro Software Libero è oro per tutti noi, ricordiamocelo. E la nostra parte la possiamo fare anche incoraggiando i giovani.
Un po’ come fanno in America: finanzio cento progetti, sperando che uno diventi Google e mi ripaghi dieci volte tanto. E’ un buon investimento, almeno secondo me.
Quindi, nel mio piccolo, posso dire a chi ha intenzione di intraprendere questa strada, che ci sono molte possibilità se si vuole iniziare a programmare.
Innanzi tutto ci si deve domandare cosa si vuole fare.
Sviluppo Web
Se il vostro sogno a breve-medio termine è quello di fare pagine web statiche e/o temi per Wordpress, Splinder etc, ciò che dovete imparare è l’HTML e il CSS. E poi cominciare a creare, questo è molto importante, ogni cosa che leggete sui manuali dovete provarla e utilizzarla subito.
Se ve la cavate con l’inglese, un buon punto di partenza e’ HTML Dog. Sempre ottime poi le guide di html.it sull’HTML, sulle basi del CSS e sullo sviluppo di Layout CSS (siti a più colonne etc).
All’inizio è buona cosa scriversi il codice delle pagine a mano, con un editor di testo, per capire bene gli effetti che ha sulla pagina web. Se proprio non potete evitare di avere uno sviluppo assistito, su Ubuntu date un:
sudo aptitude install kompozer
Se usate KDE vi consiglio Quanta Plus invece
sudo aptitude install quanta
Una volta svezzati con le basi del Web, vorrete forse andare un po’ più un là. Ad esempio, sviluppare un vostro plugin per Wordpress, o fare una modifica al forum phpBB che gestite..
Beh, qui si entra nel vero sviluppo web. Dovete imparare un linguaggio lato server, e vi consiglio il PHP, e abbinarlo alla comprensione di un minimo di sintassi SQL, preferibilmente con l’uso di MySQL.
Innanzi tutto una guida per installare in locale il PHP, il server web Apache e il DataBase MySQL, su Linux o su Windows. Dovete poi imparare a programmare in PHP integrandovi l’HTML e il CSS che avete precedentemente praticato.
Questa è la guida base, che vi consiglio di leggere subito. Poi c’è anche una guida teorica che potete usare come riferimento in caso non capiste qualcosa, e due guide pratiche: una sullo sviluppo PHP e l’altra sull’interazione PHP/MySQL che vi consiglio di studiare per ultima.
A questo punto, se vi impegnate su queste guide un mesetto, sarete pronti per essere operativi nello sviluppo web. Per migliorare la vostra comprensione delle tematiche principali della creazione di siti Web, vi consiglio queste guide sul Web Design.
Utile sarebbe poi se imparaste il JavaScript e l’Ajax, che va a completare ciò che avete già imparato.
Altri link utilissimi come riferimento o approfondimento:
- W3C Schools - Reference su tutti gli argomenti a cui vi ho indirizzato :)
- php.net - Manuale ufficiale ( anche in italiano ) e il miglior reference per il PHP ( search for .. in the function list )
- MySQL - Documentazione Ufficiale.
- Spaghetti Ajax - Esempi in italiano.
- Installare Apache + PHP + MySQL su Ubuntu - Una delle tante guide, in caso aveste problemi a farli funzionare.
- CodiceFacile - Pieno di snippet di codice e consigli utili su PHP, MySQL, JavaScript
Sviluppo Applicazioni
E’ molto facile che siate arrivati a questo articolo cercando informazioni su come scrivervi i vostri programmi. La vostra idea di programma è sicuramente quella tipica: un coso grafico che risponde in modo particolare ai tuoi input.
Beh, all’inizio di grafica non ne vedrete, ed è meglio così. Dovete imparare a fare programmi testuali, poi li potrete adornare di una veste grafica.
Senza troppi giri di parole, vi consiglio di studiarvi la guida Pensare da Informatico, che vi aiuta a entrare in questo mondo in modo non traumatico, imparando un linguaggio semplice e potente: il Python.
Prima che vi chiediate perché questa e non le millemila altre, sappiate che è utilizzata con successo in alcune Università americane e italiane e che…beh, se vi chiedete troppo quale è meglio e quale peggio, non ne leggerete neanche una. Studiate questa, per ora :)
Se volete essere operativi il più presto possibile, il Python e quella guida è ciò che fa per voi.
Potrete farci qualsiasi cosa: dalla calcolatrice testuale di fiducia ai videogiochi 2D e 3D ( un esempio è il gioco degli scacchi in Gnome ). Ha una quantità immensa di librerie ed estensioni, e troverete manuali ovunque per imparare le caratteristiche più avanzate.
Il vostro riferimento principale è sicuramente Python.it Doc. Li troverete guide per principianti e howto più avanzati, informazioni utili sugli IDE per la programmazione assistita e per la creazione di interfacce grafiche con molte librerie ( GTK+, QT, wxWidgets..).
Personalmente, comunque, se utilizzate Gnome vi consiglio Gedit dopo aver installato i plugin
sudo aptitude install gedit-plugins
Se invece utilizzate KDE, non potete non provare il mitico Eric
sudo aptitude install eric
Inoltre, se avete scelto le Qt come toolkit per le vostre GUI, questo è un buon howto per le Qt4.
Conclusioni
Seguiranno altri articoli per approfondire la programmazione con GUI, la programmazione di videogiochi e di applicazioni complesse.
Intanto, vi lascio qualche altro link utile.
- Su SlashCode l’autore è arrivato al sesto articolo sulla programmazione, vi consiglio di leggerli tutti :)
- Guida Python su html.it
- Sezione Programmazione del forum Ubuntu-it.org
- Python-it.org - Il punto di riferimento italiano per gli appassionati di Python.
- Il management del software nelle micro-aziende
- PyOgre per programmare videogiochi e applicazioni 3D
Tag: guide, ilbloggatore, informatica, linux, programmazione, python, ubuntu















Complimenti, è davvero un’ottima guida per chi non sa come districarsi nella giungla della sovrainformazione che internet ci offre (però non ci lamentiamo: quando mi ci approcciai io, quasi un lustro e mezzo fa, si usava ancora spulciare la sezione informatica delle librerie :P).
Ci sono tanti bei riferimenti che hai citato nell’articolo, molti non li conoscevo e ho arrichito un bel po’ i miei segnalibri.
Per la mia esperienza però, avrei fatto in primis una sovradistinzione: vuoi solo imparare a smanettare o vuoi farlo seriamente? E, se la risposta è la seconda, allora mettiti in testa che non è tanto il linguaggio che impari per primo ma è sulla forma mentis che devi lavorare e, forse sì, un ottimo inizio è leggere una guida per aiutarti a pensare come un informatico ma sono solamente pratica ed esperienza che contribuiscono in maniera significativa. Quindi ovviamente sei tu che indirizzi pratica ed esperienza in un senso o in un altro.
Sarà che sono nel mestiere da un po’ (w il software libero ma abbiate compassione per chi fa del software una forma di sostentamento :P) ma la differenza tra uno smanettone e un programmatore (che invecchiando diventa un analista) si vede lontano un miglio.
Buona programmazione a tutti :)
Ciao, grazie per il commento :)
Si, la tua precisazione è utilissima, ma in realtà credo che all’inizio dello “smanettamento” nessuno possa dire chi diventerà cosa, neanche noi stessi.
Ho voluto dare loro strumenti utili per rompere il ghiaccio. Quando poi vorranno fare le cose serie…credo sapranno trovare la loro via come noi (io mi sono iscritto a Informatica, ad esempio, e tu lavori nel campo) :)
Se hai qualche link utile da consigliare, oltre quelli che ho messo, sono estremamente ben accetti ;)
Oilà!
Giusto per segnalare, oggi m’è capitato per le mani questo
http://pythonbook.coffeeghost.net/book1/index.html
non l’ho ancora letto, quindi non so dirti come sia, ma dice il capitolo “Per chi è questo libro”:
:D
Ehi…grazie! Gli ho dato uno sguardo, e sembra buono…me lo spulcio un po’, e intanto cerco una traduzione italiana, se esiste :°)