View Full Version : [Generale] Mentalità di un programmatore
VirtualFlyer
10-04-2010, 16:27
Ciao a tutti,
Come pensa un programmatore?
Nel senso, se decide di fare, ad esempio, un client di chat per gtalk, cosa fa?
Immagino si legga tutta la documentazione sul protocollo usato da gtalk (XMPP)
e poi? :confused:
Se non sa come interfacciarsi con il server?
Immagino ci siano comandi e cose simili, ma come li trova?
Come decide cosa gli serve della documentazione dell'XMPP?
Insomma, come da titolo, vorrei più o meno sapere cosa fa un programmatore (bravo) davanti a una cosa di questo tipo (se no può essere interfacciarsi con un ftp o l'os)!
Effetivamente questo è a mio parere il più grande ostacolo nell'imparare a programmare, almeno da soli, perchè le strutture e la sintassi si studiano, questo no. Poi se riuscite a far capire anche a me, non avrò più bisogno di aprire discussioni per capire come fare e potrò risolvere i miei problemi by myself! :D
Grazie mille!!
cdimauro
11-04-2010, 11:38
Ti sei chiesto come mai nessuno abbia risposto finora?
VirtualFlyer
11-04-2010, 12:26
Ti sei chiesto come mai nessuno abbia risposto finora?
Sì, ma non ho trovato risposta.
Risolvere un problema prescinde di per se dalla programmazione (che è uno strumento).
Nessuno può dirti cosa fare, quella mentalità viene acquisita con il tempo dopo aver affrontato una serie di problemi più semplici magari...
Tra l'altro il mio modo di risolvere il problema potrebbe essere completamente diverso dal tuo, potrebbe essere migliore o peggiore ma arrivare cmq al fine prefissato (che è già cmq un'ottima cosa).
Quello che chiedi è un po' come chiedere dove si trova il Santo Graal :D.
In genere cmq se non sai una cosa Google può aiutare, anche se IMHO non c'è niente di meglio che un buon libro sull'argomento.
Tesinevb
11-04-2010, 12:46
Ciao a tutti,
Come pensa un programmatore?
Nel senso, se decide di fare, ad esempio, un client di chat per gtalk, cosa fa?
Immagino si legga tutta la documentazione sul protocollo usato da gtalk (XMPP)
e poi? :confused:
Se non sa come interfacciarsi con il server?
Immagino ci siano comandi e cose simili, ma come li trova?
Come decide cosa gli serve della documentazione dell'XMPP?
Insomma, come da titolo, vorrei più o meno sapere cosa fa un programmatore (bravo) davanti a una cosa di questo tipo (se no può essere interfacciarsi con un ftp o l'os)!
Effetivamente questo è a mio parere il più grande ostacolo nell'imparare a programmare, almeno da soli, perchè le strutture e la sintassi si studiano, questo no. Poi se riuscite a far capire anche a me, non avrò più bisogno di aprire discussioni per capire come fare e potrò risolvere i miei problemi by myself! :D
Grazie mille!!
IL VERO PROGRAMMATORE
Il sistema piu' rapido e sicuro per distinguere un Vero programmatore dal resto del mondo e' considerare il linguaggio che usa: il Vero Programmatore programmava in FORTRAN, mentre ora programma in C.
I mangiatori di Quiche programmano in Pascal. Da questo si deduce che sicuramente Niklaus Wirth era un mangiatore di Quiche e NON un Vero Programmatore.
Ad un Vero Programmatore non servono tutte le strutture ed i meccanismi del pascal, un Vero Programmatore puo' essere felice con un perforatore di schede o un terminale a 1200 baud, un C a standard K&R (ANSI... a che serve, il K&R e' fin troppo chiaro), ed una birra.
A proposito, Kerningan e Ritchie sicuramente erano dei Veri Uomini. probabilmente anche dei veri programmatori.
- Il Vero Programmatore processa liste in C
- Il Vero Programmatore processa numeri in C
- Il Vero Programmatore manipola stringhe in C
- Il Vero Programmatore elabora programmi di IA in C
- Il Vero Programmatore fa contabilita' in C
- Il Vero Programmatore crea simulatori di reti neuronali in C
- Il Vero Programmatore starnutisce in C
- Il Vero Programmatore fa TUTTO in C
Se per caso il C non fosse sufficiente il Vero Programmatore lavorera' in assembler, se neppure questo fosse sufficiente allora il lavoro non e' fattibile, ma la cosa e' impossibile, un Vero Programmatore in C ed assembler puo' fare TUTTO, per definizione.
--------------------------------------------------------------------------------
PROGRAMMAZIONE STRUTTURATA
Gli accademici negli ultimi anni hanno stabilito, dall'alto delle loro cattedre, che un programma e' piu' facilmente leggibile se il programmatore utilizza particolari tecniche, strutture e costrutti.
Ovviamente essi non sono d'accordo su quali questi costrutti e queste tecniche precisamente siano, e percio' le loro teorie sono discordanti ed erratiche. In questo modo solo alcuni mangia-Quiche si lasciano convincere dai loro assiomi.
Un tipico lavoro del mondo reale (e non un lavoro teorico da universita') e' di prendere un sorgente di 100.000 o 200.000 linee e farlo andare il doppio piu' veloce. In questo caso qualunque Vero Programmatore vi potra' dire che la programmazione strutturata non serve a nulla, quello che in realta' serve e' del talento.
Alcune rapide considerazioni del Vero Programmatore sulla programmazione strutturata:
- Il Vero Programmatore non ha paura di usare GOTO
- Il Vero Programmatore puo' scrivere un ciclo DO lungo 5 pagine senza fare confusione.
- Il Vero Programmatore usa i costrutti CASE basati su calcoli aritmetici, essi rendono un programma piu' divertente.
- Il Vero Programmatore scrive del codice automodificante, soprattutto se questo puo' salvare 20 nanosecondi all'interno di un ciclo.
- Il Vero Programmatore utilizza l'area di memoria di un codice gia' eseguito e che non servira' piu' come area di memoria per i dati, ottimizzando in questo modo lo spazio a disposizione.
- Il Vero Programmatore non ha bisogno di commenti, il codice e' gia' autoesplicante a sufficienza.
Dopo aver parlato di programmazione strutturata si e' anche parlato molto di strutture di dati. Tipi di dati astratti, stringhe, liste e chi piu' ne ha piu' ne metta.
Wirth (il mangiatore di Quiche menzionato poco sopra) ha scritto un intero libro [2] tentando di dimostrare che si puo' scrivere un intero programma basandosi solo sulle strutture di dati.
Come ogni Vero Programmatore sa invece l'unica struttura che serve VERAMENTE e' l'array, dato che tutti gli altri tipi di dato altro non sono che sottoinsieme limitati di questi. e dato che sono limitati egli usa solo puntatori, soprattutto se questi rendono possibile bombare irrimediabilmente il computer, se no dove starebbe il divertimento?
VirtualFlyer
11-04-2010, 12:48
Risolvere un problema prescinde di per se dalla programmazione (che è uno strumento).
Nessuno può dirti cosa fare, quella mentalità viene acquisita con il tempo dopo aver affrontato una serie di problemi più semplici magari...
Tra l'altro il mio modo di risolvere il problema potrebbe essere completamente diverso dal tuo, potrebbe essere migliore o peggiore ma arrivare cmq al fine prefissato (che è già cmq un'ottima cosa).
Quello che chiedi è un po' come chiedere dove si trova il Santo Graal :D.
In genere cmq se non sai una cosa Google può aiutare, anche se IMHO non c'è niente di meglio che un buon libro sull'argomento.
Hai ragione, però dei consigli e simili servirebbero molto. Poi penso che studiare senza un professore non sia molto di aiuto, perchè, per quel che ne so, qualche consiglio di metodo te lo danno sempre e può essere meglio di niente!
Riguardo ai libri non so se ne si trovino di così specifici.
Cosa pensi un programmatore (bravo) richiede una volto metallico altrimenti detto "faccia di bronzo" perchè si risponda.
Da programmatore (qualsiasi) potrei dire di aver fatto un tentativo di fissare i un testo il ragionamento che sta dietro allo sviluppo di un programma. Una specie di diario, come quelli che a volte gli psicologi consigliano di tenere solo che al posto di esprimere fatti di vita quotidiana è riferito a ciò che pensavo mentre scrivevo un certo programma.
In due giorni ho scritto 73 pagine. Non le "pubblico" perchè, be', sono cacchi miei, non è bello buttarli in piazza, ma ci sono un paio di considerazioni che posso condividere, visto che hai una curiosità analoga.
Parliamo di sviluppo di un programma e non della semplice scrittura di un modello di sistema già sviluppato e parliamo dell'esperienza di un singolo individuo.
C'è un'idea generale che corrisponde al tuo "...decide in partenza di fare un client per gtalk..." ma sono poi le singole parti di quell'idea generale a far progredire in concreto il modello che si sta realizzando.
Ad esempio il 5 aprile il punto di partenza è stato:
"A un certo punto l'utente chiuderà la finestra dell'editor".
Cioè aperto l'IDE, di fronte al codice sono giunto a questa fondamentale rivelazione per cui l'utente pigia un pulsante ("fraca boton, salta macaco" diceva la mia professoressa di filosofia, il che spiega parecchie cose sullo stato dell'istruzione di casa nostra).
E quello è il punto di partenza di 60 pagine del predetto caos. Sembra esserci sempre una domanda di partenza ("Carico una valanga di immagini: come faccio a far sì che l'utente possa visualizzarne solo alcune?") a cui segue una risposta ipotetica ("be', potrei dire che...") seguita dal tentativo di applicare quella risposta alla parte di programma che è già stato scritto. L'applicazione genera altri problemi.
A volte di fronte ai problemi generati dal tentativo di applicazione di una soluzione ipotetica la questione principale perde rilevanza, più spesso quei problemi sono accantonati finchè l'integrazione del nuovo pezzo non è completa.
Alcune questioni sorgono per ragioni estetiche (non mi piace, lo faccio in un modo diverso).
La rilettura è comunque ostica a livelli esagerati: il processo sembra svilupparsi in un caos di episodi affrontati a colpi di ipotesi alcune sole delle quali sono effettivamente verificate.
Ma vera domanda è: quanto è messo male uno che si mette a scrivere decine di pagine per cercare di capire quello che pensa mentre scrive un programma? Robe da pazzi (e una fatica non da ridere).
VirtualFlyer
11-04-2010, 13:50
WOW ho ricevuto più risposte nell'ultima ora nel resto!
@Tesinevb:
mi sembra un po' OT, però magari ho capito male io
@PGI-Bis:
effettivamente potevi quasi fare il filosofo!!:D
A parte gli scherzi, grazie mille, mi puoi rispiegare la frase1?
Se uno chiedesse "cosa pensa un bravo programmatore" e uno rispondesse tout court si potrebbe pensare ad un atto di presunzione "io sono bravo, quindi rispondo". A certi effetti il presuntuoso è una "faccia di bronzo", da cui la facezia.
:D Certo che se devo star qui a spiegarle!... Eddai, un po' di verve! :D
*
Bell'esperimento, in effetti a ripensarci è sorprendente (ma non dovrebbe esserlo) quanto sia disordinato il processo mentale che seguo mentre sviluppo qualcosa... è un continuo interrompersi per problemi banali unito a progetti troppo a grandi linee che non tengono conto di qualcosa che genera problemi banali...
Forse più che farsi mille pi*** mentali sui metodi di programmazione del computer, sarebbe da capire innanzitutto come funzioniamo noialtri?
Se c'è una cosa che risulta evidente, è che in questo casino continuo il fatto che esca poi fuori qualcosa che funziona è quasi miracoloso :asd:
Ciao a tutti,
Come pensa un programmatore?
Nel senso, se decide di fare, ad esempio, un client di chat per gtalk, cosa fa?
Immagino si legga tutta la documentazione sul protocollo usato da gtalk (XMPP)
e poi? :confused:
Se non sa come interfacciarsi con il server?
Immagino ci siano comandi e cose simili, ma come li trova?
Come decide cosa gli serve della documentazione dell'XMPP?
Insomma, come da titolo, vorrei più o meno sapere cosa fa un programmatore (bravo) davanti a una cosa di questo tipo (se no può essere interfacciarsi con un ftp o l'os)!
Effetivamente questo è a mio parere il più grande ostacolo nell'imparare a programmare, almeno da soli, perchè le strutture e la sintassi si studiano, questo no. Poi se riuscite a far capire anche a me, non avrò più bisogno di aprire discussioni per capire come fare e potrò risolvere i miei problemi by myself! :D
Grazie mille!!
Cosa pensa e cosa fa penso sia frutto dell'esperienza, di ciò che ha studiato e gli è stato insegnato. Non è molto diverso da qualsiasi altra attività umana: cosa fa un contadino? Basta andare a comprare i semi e metterli per terra? No. Come ha imparato? In diversi modi può diventare un buon agricoltore.
Cosa pensi prima di usare un dizionario di italiano? Alle elementari ti avranno detto come si trova una parola, ma con l'andar del tempo e con l'esperienza, avrai sicuramente imparato ad estrarre le informazioni che ti servono oltre il banale significato del vocabolo cercato, come per esempio un sinonimo, se una parola è adatta ad un certo contesto, l'etimologia, ecc.
Allo stesso modo si impara ad usare una documentazione di una libreria, di un tool, ecc. All'inizio è normale essere spaesati, poi più tempo si investe lì sopra, più si entra nell'ottica, si sa dove cercare, si diventa produttivi.
A scopo didattico, per la maggioranza delle persone, non mi pare un buon metodo "inventarsi" un problema e risolverlo programmando (voglio imparare a programmare -> cosa programmo -> uhm, vediamo, vediamo, sì la chat), perché così facendo non si ha un problema vero che devi affrontare. Più difficilmente si ha l'interesse di frequentare quegli ambienti (forum, comunità, colleghi, ecc.) che sanno, che hanno una conoscenza approfondita di quell'argomento.
Ti sei chiesto come mai nessuno abbia risposto finora?
Imho, per il semplice motivo che la domanda è stata posta di sabato (pure pomeriggio) e l'attività di questa sezione del forum nel weekend è più bassa del solito, per motivi facilemente intuibili.
Infatti una mia euristica è che se ti serve qualcosa qui, devi postare in un giorno feriale, magari prima di pranzo o comqunque non troppo dopo le 18, altrimenti rischi di non avere risposte fino al giorno dopo. :D
EDIT: Non sono un bravo programmatore, e si dovrebbe capire anche dalla risposta generale, ma che ritengo comunque valida, che ho dato. :D
VirtualFlyer
11-04-2010, 14:33
Se uno chiedesse "cosa pensa un bravo programmatore" e uno rispondesse tout court si potrebbe pensare ad un atto di presunzione "io sono bravo, quindi rispondo". A certi effetti il presuntuoso è una "faccia di bronzo", da cui la facezia.
:D Certo che se devo star qui a spiegarle!... Eddai, un po' di verve! :D
:D :D
Era più o meno come credevo! Era più la struttura della frase che non capivo!
VirtualFlyer
11-04-2010, 15:06
Cosa pensa e cosa fa penso sia frutto dell'esperienza, di ciò che ha studiato e gli è stato insegnato. Non è molto diverso da qualsiasi altra attività umana: cosa fa un contadino? Basta andare a comprare i semi e metterli per terra? No. Come ha imparato? In diversi modi può diventare un buon agricoltore.
Cosa pensi prima di usare un dizionario di italiano? Alle elementari ti avranno detto come si trova una parola, ma con l'andar del tempo e con l'esperienza, avrai sicuramente imparato ad estrarre le informazioni che ti servono oltre il banale significato del vocabolo cercato, come per esempio un sinonimo, se una parola è adatta ad un certo contesto, l'etimologia, ecc.
Allo stesso modo si impara ad usare una documentazione di una libreria, di un tool, ecc. All'inizio è normale essere spaesati, poi più tempo si investe lì sopra, più si entra nell'ottica, si sa dove cercare, si diventa produttivi.
A scopo didattico, per la maggioranza delle persone, non mi pare un buon metodo "inventarsi" un problema e risolverlo programmando (voglio imparare a programmare -> cosa programmo -> uhm, vediamo, vediamo, sì la chat), perché così facendo non si ha un problema vero che devi affrontare. Più difficilmente si ha l'interesse di frequentare quegli ambienti (forum, comunità, colleghi, ecc.) che sanno, che hanno una conoscenza approfondita di quell'argomento.
Imho, per il semplice motivo che la domanda è stata posta di sabato (pure pomeriggio) e l'attività di questa sezione del forum nel weekend è più bassa del solito, per motivi facilemente intuibili.
Infatti una mia euristica è che se ti serve qualcosa qui, devi postare in un giorno feriale, magari prima di pranzo o comqunque non troppo dopo le 18, altrimenti rischi di non avere risposte fino al giorno dopo. :D
EDIT: Non sono un bravo programmatore, e si dovrebbe capire anche dalla risposta generale, ma che ritengo comunque valida, che ho dato. :D
Per al seconda parte aspetto anch'io una risposta di cdimauro.
Comunque non è che io abbia deciso di fare una chat, anche perchè non ne ho le basi, ma era solo un esempio qualunque, infatti dopo ne ho messi anche altri. Non è certo nata da voglio imparare a programmare -> cosa programmo -> uhm, vediamo, vediamo, sì la chat. Io volevo imparare a programmare -> ho preso un libro che sto seguendo -> mi sono chiesto cosa fa un programmatore davanti a cose del genere. :)
Secondo me l'esempio del dizionario non regge, perchè qualcuno mi ha detto che dovevo aprire il dizionario e come trovare la parola,poi io ho affinato il metodo. Se avessi un problema come quello descritto sopra non saprei cosa fare. Comunque potrei trovare ugualmente qualcuno che mi dà dei consigli sul fatto di cercare i sinonimi o non guardare le espressioni letterarie, ed è quello che volevo ricevere con questo 3d, qualche consiglio da chi è più esperto.
Secondo te se no perchè non avrei fatto il contadino?? :D :D
tutto IMHO
cdimauro
11-04-2010, 20:14
Per al seconda parte aspetto anch'io una risposta di cdimauro.
Ehm. Quale sarebbe la domanda? :stordita:
VirtualFlyer
11-04-2010, 20:46
Ehm. Quale sarebbe la domanda? :stordita:
La tua!
cdimauro
11-04-2010, 21:09
Ah, ok. Beh, le risposte le hai già ricevute. :D
clockover
12-04-2010, 00:53
Signore e Signori......... il vero programmatore ------> http://img16.imageshack.us/img16/7619/programmere.th.jpg (http://img16.imageshack.us/i/programmere.jpg/) :asd::asd::asd:
banryu79
12-04-2010, 08:52
Bell'esperimento, in effetti a ripensarci è sorprendente (ma non dovrebbe esserlo) quanto sia disordinato il processo mentale che seguo mentre sviluppo qualcosa...
Dirò una banalità: secondo me è il gap che passa tra rappresentazione del modello del sistema da realizzare (che sia stata formalizzata o che esista solo come vaga idea) e sua implementazione tramite la specifica tecnologia usata per realizzarla; e dato che la mente umana, per ora, non è computabile, ci teniamo il buio: nessuna garanzia.
Forse più che farsi mille pi*** mentali sui metodi di programmazione del computer, sarebbe da capire innanzitutto come funzioniamo noialtri?
Sì ma sarebbe poco pratico: non si conosce ancora completamente il cervello umano e come funziona (che poi, cervello, interazione e tutto il resto sono pur sempre e solo dei concetti, delle astrazioni della nostra mente, per cui campa cavallo). Non è fantastico? :D
ome pensa un programmatore?
Nel senso, se decide di fare, ad esempio, un client di chat per gtalk, cosa fa?
Immagino si legga tutta la documentazione sul protocollo usato..
e poi?
Se non sa come interfacciarsi con il server?
Immagino ci siano comandi e cose simili, ma come li trova?
Beh, al di là delle digressioni varie.. dizionario, vero programmatore, contadino, etc. :D secondo me la risposta alla tua domanda è più semplice di quanto credi. In parte hai risposto da solo: .."immagino si legga tutta la documentazione..".
Fondamentalmente si tratta di risolvere problemi utilizzando strumenti informatici (computer, linguaggi, etc). Studi il problema nella sua totalità, cerchi di capire quali sono i passaggi per arrivare ad una soluzione, almeno a grandi linee, man mano che hai una visione di insieme più concreta, scomponi il problema in problemi più circoscritti e cerchi di risolverli singolarmente. La risoluzione di questi sottoproblemi, ti porta alla soluzione finale. Naturalmente il tutto utilizzando gli strumenti che ti sembrano più opportuni: strutture dati, algoritmi, protocolli, etc.
Poi.. non sai come interfacciarti al server? bene, in relazione al linguaggio che usi ed al protocollo con cui far dialogare l'applicazione, cerchi le adeguate librerie da utilizzare, le studi e le applichi. Se non ci sono librerie, ti tocca scendere ad un livello più basso di astrazione.
Banalmente direi che la sequenza è: pensare al dominio del problema, alle varie soluzioni possibili, scomporre il problema in parti più piccole, risolverle utilizzando i "metodi" che ti sembrano più opportuni e iterare il tutto finchè non completi il "puzzle".
Come ragiona il bravo programmatore.. beh col talento e l'esperienza, riesce ad arrivare alla soluzione nella maniera più rapida, più elegante e più efficiente possibile..
IMHO in linea di massima non è molto diverso dall'essere un bravo matematico, ingegnere o simile: cambiano solo gli strumenti a disposizione.
La capacità di ragionamento ti porta a risolvere il problema nel modo più rapido e/o brillante, l'esperienza a farlo nel modo più elegante e con gli "strumenti" più idonei.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.