Indie Vault Forum

Versione completa: The demise of the low level Programmer.
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Pagine: 1 2
Una serie di link su argomenti che i programmatori "di oggi", potrebbero non aver incontrato a causa del cambiamento dell'approccio alla programmazione:
The demise of the low level Programmer.
e aggiungo anche una serie di articoli molto interessante (8 and counting...), che introducono il divertente mondo del passaggio c/c++--->asm
A Low Level Curriculum for C and C++
Che è stato segnalato pochi giorni fa in home:
http://www.indievault.it/2012/05/21/una-...atform-2d/
sicuro? trololol!
(26-05-2012 10:20)dany_dev ha scritto: [ -> ]sicuro? trololol!

Facepalm
Grazie mille per i link. Tuttavia mi spiace quotare il primo articolo linkato. Dice troppe verita persino per i miei gusti. Frequentando informatica noto che son davvero pochi coloro a cui interessa davvero scendere nei dettagli e si accontentano di una preparazione sommaria, di una strada che funziona senza valutarne altre che magari più si adattano al nostro contesto. Però se si chiama computer science un motivo ci sarà Asd
Il problema non è volerle approfondire. Il problema è ricordare.
Gli argomenti che ha elencato vengono generalmente affrontati anche in un corso di laurea triennale, dubito che un programmatore non gli abbia mai visti.
Due anni fa quando ho preparato l'esame di algoritmi e strutture dati, avrei saputo enunciare la complessità di un bel po di algoritmi di ricerca e ordinamento e scrivere al volo il codice di oguno di essi. Così come avrei saputo calcolare e dirti cosa sono l'epsilon macchina, qual'è la differenza tra floating e fixed point, scrivere l'algoritmo per risolvere un sistema triangolare superiore, disegnare a memoria l'header ipv6/ipv4, scrivere l'algoritmo RED per il dropping di pacchetti ect, ect.

Ma non appena hai a che fare con lavori "pratici" trovi bene o male già tutto implementato, ti viene consigliato di utilizzare le implementazioni esistenti e a dimenticare si fa in fretta. Quel che mi è rimasto oggi è un vago "quick sort meglio di bubble sort"... generalizzando "A meglio di B perché dall'uni ricordo più o meno così". Eppure ho colleghi che magari all'esame sono andati peggio di me ma a distanza di anni ricordano ancora "i dettagli".
Secondo me è una questione di come funziona l'apprendimento in ognuno di noi.. potrei prendere la lista di argomenti citati in quell'articolo, ristudiarmeli tutti e son sicuro che passati 2 mesi senza vederli costantemente mi ritroverei a non ricordare una cippa.
credo che il punto non sia: "ricordati tutto a memoria", il punto è: "sappi che esistano, e se incontri un problema dove è richiesta la loro conoscenza, sappi come agire per risolvere il problema al meglio".
Ma il problema è che non lo risolvi al meglio se non ricordi "i dettagli". E' vero che c'è sempre google, c'è sempre la possibilità di ripassare, e se son cose già viste si fa in fretta a nonostante gli anni.
Però l'autore mi sembrava lamentarsi del fatto che tanti colleghi "di alto livello" non ricordino i dettagli "seduta stante". Ma in effetti a fondo articolo specifica:

"It seems I didn’t do a very good job at explaining the core audience for the article, I apologize for that. The programmers I would like to see learning and absorbing these “low level” details are those who would see themselves working in console games".

E io non leggo mai fino a fondo articolo XD
(26-05-2012 16:24)shogo ha scritto: [ -> ]Ma non appena hai a che fare con lavori "pratici" trovi bene o male già tutto implementato, ti viene consigliato di utilizzare le implementazioni esistenti e a dimenticare si fa in fretta. Quel che mi è rimasto oggi è un vago "quick sort meglio di bubble sort"... generalizzando "A meglio di B perché dall'uni ricordo più o meno così". Eppure ho colleghi che magari all'esame sono andati peggio di me ma a distanza di anni ricordano ancora "i dettagli".
Secondo me è una questione di come funziona l'apprendimento in ognuno di noi.. potrei prendere la lista di argomenti citati in quell'articolo, ristudiarmeli tutti e son sicuro che passati 2 mesi senza vederli costantemente mi ritroverei a non ricordare una cippa.

Il punto secondo me è un altro. Non si pretende certo di ricordare a memoria la complessità di ogni algoritmo esistente o di saperlo implementare su ogni linguaggio ed hardware esistente, ma almeno sapere che esistono ed le loro forze/debolezze si Asd Noi informatici dobbiamo risolvere problemi e, come tale, dobbiamo conoscere al meglio gli strumenti che abbiamo di fronte e selezionare, di volta in volta, il migliore. Non si pretende certo di ricordare che bubble sort è O(n^2) e quicksort O(n log n) ma almeno sapere che quicksort è ottimale alla lunga a costo di una implementazione più complessa ( cosa che non sempre sottovaluterei ) e uno stack ausiliario si Asd

N.B. Io sto parlando di informatico, non di code monkey o programmatore generico che usa sort() con atto di fede. In tal caso, ovviamente, il mio discorso si va a perdere ma son abbastanza sicuro che non sia indirizzato a loro quell' articolo.

(26-05-2012 16:39)dany_dev ha scritto: [ -> ]credo che il punto non sia: "ricordati tutto a memoria", il punto è: "sappi che esistano, e se incontri un problema dove è richiesta la loro conoscenza, sappi come agire per risolvere il problema al meglio".

Si, la penso anche io cosi. Studiare a memoria non serve, grazie ad internet, documentazioni, reference ecc. ecc. ed anzi, può essere controproducente. La forma mentis adeguata però non te la può dare certo una ricerca su internet.
Non e' neanche questione di avere una infarinatura.. l'idea e' di avere un hacker con le mani sporche di codice.

Certe cose devono diventare una seconda natura.. essere efficienti vuol dire non doverci necessariamente pensare.
Se uno deve pensare su qualcosa, vuol dire che sta ancora imparando.. che e' lecito ed e' forse la cosa piu' bella del game dev.. ma allo stesso tempo uno vuole imparare qualcosa di nuovo, non come shiftare i bits 8)
mi sono letto un po' i commenti dell'articolo linkato e molti "veterani", confermano il trend dei giovani di allontanarsi dal basso livello e tra i commenti ho trovato questo: I have as simple test that only one in twenty programmers get right. What does the following function do?

Codice:
char *func(char *p1, char *p2)
{
   char *l1 = p1 ;

   while (*l1++ = *p2++) ;
  
   return p1 ;
}

Sinceramente pur non essendo un asso del C++, ci ho messo meno di 10 secondi a capire cosa facesse....mi sento rincuorato xD
(27-05-2012 15:32)dany_dev ha scritto: [ -> ]mi sono letto un po' i commenti dell'articolo linkato e molti "veterani", confermano il trend dei giovani di allontanarsi dal basso livello e tra i commenti ho trovato questo: I have as simple test that only one in twenty programmers get right. What does the following function do?

Codice:
char *func(char *p1, char *p2)
{
   char *l1 = p1 ;

   while (*l1++ = *p2++) ;
  
   return p1 ;
}

Sinceramente pur non essendo un asso del C++, ci ho messo meno di 10 secondi a capire cosa facesse....mi sento rincuorato xD
20 secondi Fifi
Segmentation fault come fosse niente Sorriso
(27-05-2012 15:32)dany_dev ha scritto: [ -> ]mi sono letto un po' i commenti dell'articolo linkato e molti "veterani", confermano il trend dei giovani di allontanarsi dal basso livello e tra i commenti ho trovato questo: I have as simple test that only one in twenty programmers get right. What does the following function do?

Codice:
char *func(char *p1, char *p2)
{
   char *l1 = p1 ;

   while (*l1++ = *p2++) ;
  
   return p1 ;
}

Sinceramente pur non essendo un asso del C++, ci ho messo meno di 10 secondi a capire cosa facesse....mi sento rincuorato xD

Ma perché.. dovrebbe funzionare? Fermosi
Se si non mi rincuoro per niente!
(27-05-2012 15:57)shogo ha scritto: [ -> ]Ma perché.. dovrebbe funzionare? Fermosi
Se si non mi rincuoro per niente!

Seh, copia una stringa null-terminated in dest (compreso /0) e restituisce dest.
L'equivalente sarebbe

Codice:
char* func( char* dest, char* src )
{
    int i = 0;
    for(; src[0] != NULL; ++i )
        dest[i] = src[i];
    dest[i] = 0;
    return dest;
}

Che forse è anche più decente Asd
(27-05-2012 16:33)_tommo_ ha scritto: [ -> ]
(27-05-2012 15:57)shogo ha scritto: [ -> ]Ma perché.. dovrebbe funzionare? Fermosi
Se si non mi rincuoro per niente!

Seh, copia una stringa null-terminated in dest (compreso /0) e restituisce dest.
L'equivalente sarebbe

Codice:
char* func( char* dest, char* src )
{
    int i = 0;
    for(; src[0] != NULL; ++i )
        dest[i] = src[i];
    dest[i] = 0;
    return dest;
}

Che forse è anche più decente Asd

non dovrebbe essere src[i] != NULL ? Asd
Pagine: 1 2
URL di riferimento