PDA

View Full Version : [vari] Considerazioni sulla programmazione in generale


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!".

gugoXX
20-07-2009, 08:11
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 .

Paroloni!!!
La realta' e' molto piu' terra terra, anche se non meno affascinante.

Prendendo spunto dal nostro maestro
Abu Ja'far Muhammad ibn Musa al-Khwarizmi
al secolo Al-Khwarizmi (l'inventore dell' al-goritmo)

programmare e' un modo formale per descrivere un algoritmo, il quale a sua volta e' un modo per risolvere un problema complesso spaccandolo in sottoproblemi banali e noti.

I nostri computer sono in grado infatti di svolgere solo azioni molto semplici. Dall'unione di problemi semplici si riescono pero' a risolvere problemi complessi.
Il programmatore e' colui che sceglie quali di queste azioni semplici possono servire per risolvere il problemone, e le mette insieme nel giusto ordine.

MEMon
20-07-2009, 12:59
Programmare nel senso letterale del termine è risolvere un problema tramite un algoritmo, generalmente, e relativamente parlando, programmare è la parte più semplice del crare un software.
Infatti si a che fare con un problema da risolvere quando si è già capito cosa si vuole fare, ed è questa appunto la parte più difficile.

In poche parole, scrivere un programma singifica semplicemnte risolvere un problema reale con uno strumento reale, quello che in pochi capiscono è che il difficile è sintetizzare il problema da risolvere, e spesso avere anche un problema da risolvere...non il risolverlo.

M4rk191
20-07-2009, 13:56
Il computer, come si intuisce dal nome, non è altro che un calcolatore. Paradossalmente, una calcolatrice è anche migliore di un computer, escludendo la velocità dei calcoli, perché quest'ultimo, è in grado di risolvere solo addizioni.

gugoXX
20-07-2009, 14:28
Il computer, come si intuisce dal nome, non è altro che un calcolatore. Paradossalmente, una calcolatrice è anche migliore di un computer, escludendo la velocità dei calcoli, perché quest'ultimo, è in grado di risolvere solo addizioni.

Non e' vero.

anonimizzato
20-07-2009, 14:28
*cut*

Mi esce sangue dal naso.






:D

M4rk191
20-07-2009, 18:01
Non e' vero.

invece è vero, quanto è vero che le 4 operazioni fondamentali della matematica posso essere risolte tramite semplici addizioni.

gugoXX
20-07-2009, 18:49
invece è vero, quanto è vero che le 4 operazioni fondamentali della matematica posso essere risolte tramite semplici addizioni.

Si', ma non e' vero che i computer sanno fare solo addizioni.

Peraltro nella tesi ho indirettamente dimostrato che e' possibile risolvere tutte le operazioni con il solo Shift a sinistra di 1, che e' molto piu' semplice in quanto a porte logiche della add, (+ la mov)

Albitexm
20-07-2009, 23:31
Si', ma non e' vero che i computer sanno fare solo addizioni.

Peraltro nella tesi ho indirettamente dimostrato che e' possibile risolvere tutte le operazioni con il solo Shift a sinistra di 1, che e' molto piu' semplice in quanto a porte logiche della add, (+ la mov)

Credo che comunque sia un po' pochino per essere nel 2009..
"se questa condizione è così allora fai questo". Qualche cosina di più si potrebbe avere.

gugoXX
20-07-2009, 23:49
Credo che comunque sia un po' pochino per essere nel 2009..
"se questa condizione è così allora fai questo". Qualche cosina di più si potrebbe avere.

non ho capito

wingman87
21-07-2009, 01:50
cut

Certo che scrivi proprio bene, a parte alcuni passaggi sembra l'introduzione di un libro (di quelle fatte bene si intende).