MindShake

cosa ci frulla nella testa

Iniziare a Programmare – Consigli per principianti

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.


Tag: , , , , , ,
Tagged as: , , , , , ,

10 Comments

  1. 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 :)

  2. 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 ;)

  3. 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”:

    * Anyone who wants to teach themselves computer programming, even if they have no previous experience programming.
    * Kids and teenagers who want to learn computer programming by programming games. Kids as young as 9 or 10 years old should be able to follow along.
    * Adults and teachers who wish to teach others programming.
    * Programmers who want to teach others “real” programming by example.

    :D

  4. Ehi…grazie! Gli ho dato uno sguardo, e sembra buono…me lo spulcio un po’, e intanto cerco una traduzione italiana, se esiste :°)

  5. Io sono un utente di python ma sono solo agli inizzi perciò ho scaricato il libro.
    In un punto del libro c’e scritto :
    $ python
    Python 1.5.2 (#1, Feb 1 2000, 16:32:16)
    Copyright 1991-1995 Stichting Mathematish Centrum, Amsterdam
    >>> print 1 + 1
    2
    La prima linea di questo esempio è il comando che fa partire l’interprete Python
    in ambiente Linux e puµo cambiare leggermente a seconda del sistema operativo
    utilizzato. Le due righe successive sono semplici informazioni di copyright del
    programma.

    La versione di Python che ho io e 2.5 e quando lo accendo c’e scritto:
    Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSG v.1310 32 bit (intel)] on win
    32
    Type “help”, “copyright”, “credits” or “license” for more information.

    Quindi in teoria è assente il rigo in cui c’e scritto il comando con cui far partire Python.
    Se è possibile vorrei sapere il perchè, il mio sistema operativo e Windows XP.

    Seconda domanda.
    Poco dopo c’è scritto:
    In alternativa alla riga di comando si può scrivere un programma in un File (detto
    script) ed usare l’interprete per eseguire il contenuto del File. Nell’esempio
    seguente abbiamo usato un editor di testi per creare un File chiamato pippo.py:
    print 1 + 1
    Per convenzione, i File contenenti programmi Python hanno nomi che terminano
    con .py.
    Per eseguire il programma dobbiamo dire all’interprete il nome dello script:
    $ python pippo.py
    2

    Io ho aperto WordPad e ho scritto “print 1 + 1″ poi ho fatto salva con nome e “pippo.py”.
    Poi avvio Python ma nn so cosa devo scrivere dopo… sul libro c’e scritto che devo scrivere $ python pippo.py
    ma quando lo scrivo Python risponde col messaggio:
    (riscrivo tutto)
    ))) $ python pippo.py
    File “(stdin)”, line 1
    $ python pippo.py
    ^
    Syntax Error: invalid syntax

  6. Ciao, grazie del commento.

    Allora, il problema e’ che la guida e’ scritta per linux, dove devi:

    a) Aprire un terminale (piu’ o meno come il prompt di MS-DOS ma piu’ potente e usabile)
    b) digitare i comandi che stanno nella guida.

    Quindi ad esempio se io voglio usare python interattivamente, cioe’ senza creare un file .py, apro il terminale, scrivo “python” do invio e compare:

    Python 1.5.2 (#1, Feb 1 2000, 16:32:16)
    Copyright 1991-1995 Stichting Mathematish Centrum, Amsterdam

    E da li inserisco riga per riga il mio programma, ad esempio “print 1+1″.

    Se invece (come e’ piu’ consigliabile per qualsiasi programma tu voglia fare) voglio scrivere un file .py, anche su Linux come su Windows bisogna aprire un editor di testo, scrivere il programma e salvarlo con estensione .py

    Ora, su Linux, se io ho il programma nella mia Home (un po’ come il desktop di windows), basta che apro il terminale e scrivo:

    python file.py

    Su Windows invece quando tu “apri python”, apri una SINGOLA istanza dell’interprete. Che corrisponde non al terminale Linux, ma a dopo aver scritto nel terminale “python” e aver premuto invio, che compare il copyright e poi il prompt “>>>”.

    Il punto ora e’: come apro un file .py su Windows in modo che sia eseguito direttamente? La risposta precisa non la so, pero’ immagino che aprendo l’interprete python tu abbia anche dei menu’, in alto. E se c’e’ il menu’ File, probabilmente c’e’ anche l’opzione “Apri”, da cui caricare il tuo file .py

    Spero che sia cosi’, fammi sapere se ci riesci, altrimenti cerco qualche informazione su internet e ti so dire. Io non uso Windows altrimenti proverei :)

    ciao!

  7. Tu mi hai scritto che ci dovrebbe essere un menu, ho aperto Python e mi sono accorto che cliccando la “croce” di python che c’e in alto a sinistrasi apre una specie di menu però nn c’e scritto apri, invece c’e scritto:

    Ripristina
    Sposta
    Ridimensiona
    Riduci a icona
    Ingrandisci
    ————-
    Chiudi
    Modifica(cliccando su di essso compare):Segna
    Copia Invio
    Incolla
    Seleziona tutto
    Scorri
    Trova
    Predefinite
    Proprietà

    Ma io nn apro Python con il prompt dei comandi ma cliccando direttamente sulla sua icona, perche se io uso il prompt dei comandi e scrivo:
    C:\Documents and Settings\art>python
    (Mi scrive)
    “python” non è riconosciuto come comando interno o esterno,
    un programma eseguibile o un file batch.

  8. Prova a dare un’occhiata qui, ci sono molte informazioni utili :)

    http://docs.python.org/faq/windows.html

  9. Dopo 20 minuti in giro per il web, per farmi un’idea sul punto di partenza, (ho fatto qualche programmino in pascal al biennio) ho trovato la tua guida, con la quale condivido la parte “umana” e perciò ho deciso di seguire il tuo consiglio: vediamo un pò sto python.Grazie!!!M.

    • In bocca al lupo…python è un ottimo linguaggio, in inghilterra dove sto studiando ora è usatissimo in tutto l’ambito scientifico (anche intelligenza artificiale, traduzione automatica etc). Fammi sapere se serve qualche consiglio ;)

Leave a Response