Albitexm
20-07-2009, 01:50
Da principiante, stò cercando d'apprendere le basi per scrivere un programmino. Un po' seguendo un libro, un po' con i vostri utili consigli e un po' con la pratica, il mio lavoro piano piano si stà concretizzando.
In queste poche settimane che stò lavorando con un compilatore, mentre scrivo il codice mi rendo conto che i computer sono veramente "stupidi".
Stupidi nel senso che le cose che poi sanno effettivamente fare, sono veramente poche. Esse si possono ridurre a semplici operazioni matematiche tra byte, e allo spostamento e memorizzazione di questi, oltre alla loro visualizzazione. L'unico punto di forza è la capacità di ripetere molto velocemente milioni di operazioni (relativamente banali).
Allora giungo alla conclusione che le grandi potenzialità dei programmi di oggi siano merito di chi gli ha scritti. Credo che la differenza tra un buon programma e un programma mediocre dipenda tutto dal programmatore/i.
Bisogna amettere che oggi i softwaristi sono arrivati a fare delle cose veramente eccezionali.
Ma che cosa è un programma? Cosa vuol dire scrivere un programma? Non è forse la rappresentazione virtuale di una realtà? Qualsiasi linguaggio di programmazione alla fine è il risultato di "codici" che seguono leggi matematiche. Quindi la programmazione può essere vista come l'attività di virtualizzare una realtà con la matematica, tramite lo strumento del computer.
Ma la matematica cosa è? Essa è un'invenzione umana, per cercare di rappresentare la realtà. Un tentativo di stabilire una convenzione, uno standar per rappresentare le cose. Se io devo spiegare a un venditore di corde, che ho bisogno di una corda lunga più o meno "così", posso dire lunga una pertica, lunga otto palmi di mano o lunga un metro. Ma darò sempre definizioni umane,a realtà, per far capire a un'altro umano cosa vorrei.
(pertica e palmi della mano esistono, una-otto-metro non esistono).
Quindi la matematica è una teoria umana, che non esiste in natura.
Ma il problema (o contraddizione) è che questa teoria umana, applicata nella realtà, produce risultati reali. Quando io progetto un'apparrecchiatura per visualizzare con dei led il corretto inserimento meccanico di un'oggetto in una guida, svolgo un'attività teorica. Quando progetto uno strumento di collaudo, che verifica che un oggetto funzioni "a caldo" a +70 C°, io svolgo un'attività teorica: infatti io non ho mai visto gli elettroni, io non ho mai visto il flusso della corrente. Eppure quando realizzo quello che ho progettato con formule matematiche, questo funziona (quasi sempre;) ): se l'oggetto è inserito storto, il led rosso si accende "realmente", se il relè a caldo non chiude i contatti, il cicalino suona "realmente". Nello stesso modo un programmatore quando scrive un programma, applica la matematica, per rappresentare un evento con un computer. Progetta teoricamente e realizza una cosa (il programma) che è teoria visualizzata su un monitor di un computer. Ma questa teoria produce risultati "reali". Quando analizzo una posizione di una partita di scacchi con un programma, ottengo dei risultati che mi danno una statistica veritiera sulla posizione (quasi sempre). Quando manipolo un file musicale sentirò poi un suono migliore o peggiore, comunque "realmente" diverso. Quando chatto con una ragazza attraverso internet cercando di baccagliare, io ottengo un appuntamento o (più spesso) un rifiuto "reale".
Quindi in conclusione si può dire che l'attività "teorica" di programmare, produce spesso (non sempre) risultati reali.
Allora alla luce di queste considerazione, forse si può dire che un buon programmatore è una persona che riesce attraverso la scrittura di un codice a trovare una buona armonizzazione tra la teoria virtuale e la realtà su cui deve lavorare. Egli deve stare attento a non perdersi troppo nei meandri della teoria informatica a discapito della realtà-obbiettivo finale del suo lavoro .
Ma.. c'è sempre un ma o una contraddizione: parafrasando una frase di Alexander Alekhine, campione del mondo di scacchi del passato:
"Per fortuna a scacchi non contano solo lo studio e la logica!".
In queste poche settimane che stò lavorando con un compilatore, mentre scrivo il codice mi rendo conto che i computer sono veramente "stupidi".
Stupidi nel senso che le cose che poi sanno effettivamente fare, sono veramente poche. Esse si possono ridurre a semplici operazioni matematiche tra byte, e allo spostamento e memorizzazione di questi, oltre alla loro visualizzazione. L'unico punto di forza è la capacità di ripetere molto velocemente milioni di operazioni (relativamente banali).
Allora giungo alla conclusione che le grandi potenzialità dei programmi di oggi siano merito di chi gli ha scritti. Credo che la differenza tra un buon programma e un programma mediocre dipenda tutto dal programmatore/i.
Bisogna amettere che oggi i softwaristi sono arrivati a fare delle cose veramente eccezionali.
Ma che cosa è un programma? Cosa vuol dire scrivere un programma? Non è forse la rappresentazione virtuale di una realtà? Qualsiasi linguaggio di programmazione alla fine è il risultato di "codici" che seguono leggi matematiche. Quindi la programmazione può essere vista come l'attività di virtualizzare una realtà con la matematica, tramite lo strumento del computer.
Ma la matematica cosa è? Essa è un'invenzione umana, per cercare di rappresentare la realtà. Un tentativo di stabilire una convenzione, uno standar per rappresentare le cose. Se io devo spiegare a un venditore di corde, che ho bisogno di una corda lunga più o meno "così", posso dire lunga una pertica, lunga otto palmi di mano o lunga un metro. Ma darò sempre definizioni umane,a realtà, per far capire a un'altro umano cosa vorrei.
(pertica e palmi della mano esistono, una-otto-metro non esistono).
Quindi la matematica è una teoria umana, che non esiste in natura.
Ma il problema (o contraddizione) è che questa teoria umana, applicata nella realtà, produce risultati reali. Quando io progetto un'apparrecchiatura per visualizzare con dei led il corretto inserimento meccanico di un'oggetto in una guida, svolgo un'attività teorica. Quando progetto uno strumento di collaudo, che verifica che un oggetto funzioni "a caldo" a +70 C°, io svolgo un'attività teorica: infatti io non ho mai visto gli elettroni, io non ho mai visto il flusso della corrente. Eppure quando realizzo quello che ho progettato con formule matematiche, questo funziona (quasi sempre;) ): se l'oggetto è inserito storto, il led rosso si accende "realmente", se il relè a caldo non chiude i contatti, il cicalino suona "realmente". Nello stesso modo un programmatore quando scrive un programma, applica la matematica, per rappresentare un evento con un computer. Progetta teoricamente e realizza una cosa (il programma) che è teoria visualizzata su un monitor di un computer. Ma questa teoria produce risultati "reali". Quando analizzo una posizione di una partita di scacchi con un programma, ottengo dei risultati che mi danno una statistica veritiera sulla posizione (quasi sempre). Quando manipolo un file musicale sentirò poi un suono migliore o peggiore, comunque "realmente" diverso. Quando chatto con una ragazza attraverso internet cercando di baccagliare, io ottengo un appuntamento o (più spesso) un rifiuto "reale".
Quindi in conclusione si può dire che l'attività "teorica" di programmare, produce spesso (non sempre) risultati reali.
Allora alla luce di queste considerazione, forse si può dire che un buon programmatore è una persona che riesce attraverso la scrittura di un codice a trovare una buona armonizzazione tra la teoria virtuale e la realtà su cui deve lavorare. Egli deve stare attento a non perdersi troppo nei meandri della teoria informatica a discapito della realtà-obbiettivo finale del suo lavoro .
Ma.. c'è sempre un ma o una contraddizione: parafrasando una frase di Alexander Alekhine, campione del mondo di scacchi del passato:
"Per fortuna a scacchi non contano solo lo studio e la logica!".