Perché le scuole non insegnano il codice errato? [chiuso]

5

Ho capito che potrebbe esserci un sacco di codice cattivo in un sistema durante la scrittura di Java.

Mi chiedo perché le scuole non insegnano quali sono le cattive pratiche di programmazione. Ad esempio, in Java, l'utilizzo di un grosso blocco try / catch che cattura Exception è negativo, ma nessuno me lo ha detto. E vediamo la tipica "String + String" concatenazione che appare in ogni angolo di un programma.

Non è il lavoro delle scuole, presumendo che la maggior parte dei programmatori sia insegnata a scuola e non autodidatta, per mettere in guardia gli studenti dalle insidie di una programmazione?

    
posta lamwaiman1988 24.02.2012 - 13:18
fonte

5 risposte

3

Se parli di laurea in CS presso un'università, la risposta è semplice: la programmazione è solo un mezzo per raggiungere un fine. Il grado è più sulla scienza dell'informatica e non sulla programmazione. Ora, potrebbe essere una domanda valida per un college comunitario / programma di un college tecnico il cui unico scopo è quello di creare programmatori.

Per costruire su ciò che S.Lott ha detto nei commenti, ci sono una quantità infinita di cose cattive ma solo una piccola quantità di bene, quindi perché concentrarsi sull'infinito cattivo. Questo è solo per una lingua. Quindi l'università passerebbe tutto questo tempo ad insegnare agli studenti come non fare qualcosa (e se hanno avuto il tempo che potrebbero insegnare loro come farlo nel modo giusto) per il linguaggio X. Quindi diciamo che sono 2 classi (l'introduzione e poi "come fare la lezione giusta"). Questo è un anno pieno di studi di apprendimento che una lingua, la lingua X. Il prossimo anno si vuole prendere una classe di sistemi embedded che utilizza Y. Così ora si deve bruciare un altro blocco anno di lezioni per imparare Y e imparare in modo corretto. Semplicemente non è realistico né è desiderabile perché spesso ciò che è buono o cattivo può cambiare. È solo qualcosa che può essere facilmente imparato una volta nel mondo reale.

    
risposta data 24.02.2012 - 14:45
fonte
16

Due motivi fondamentali:

  1. I progetti che sviluppi a scuola non devono essere mantenuti in futuro, devi solo ottenere un voto e passare a un altro corso. Pertanto, anche se in realtà cerchi di "forzare" alcune regole, la maggior parte degli studenti non realizzerà la vera importanza di essa. Quando ero all'università, alcuni insegnanti in realtà hanno fatto lo sforzo e hanno dato alcuni punti extra per "codice pulito", ma è stato solo quando ho iniziato a lavorare e leggere il codice di molti popoli che in realtà me ne sono reso conto. Viene fornito con esperienza.
  2. Alcuni insegnanti non hanno mai lasciato il mondo accademico e non hanno mai avuto la responsabilità di mantenere un progetto per una grande squadra. Pertanto, il tuo codice potrebbe essere splendidamente progettato o un disastro, e otterresti lo stesso grado fintanto che l'output fosse corretto e l'algoritmo efficiente.
risposta data 24.02.2012 - 13:33
fonte
3

In primo luogo, penso che sia un errore presumere che non ci siano molti programmatori autodidatti.

In secondo luogo, c'è molto spazio per il dibattito su cosa sia il codice buono e cosa no. Alcune persone sono focalizzate sulla leggibilità, altre sulla manutenibilità, altre sull'efficienza, altre sulla testabilità e così via.

In terzo luogo, c'è un grosso problema con il modo in cui viene insegnata la programmazione: nelle scuole secondarie e post-secondarie che ho frequentato, almeno. Non esiste un curriculum buono, coeso e pluriennale che possa crescere anno dopo anno. Quasi tutti i corsi devono presumere che ci possano essere novizi e veterani nella stessa classe, quindi il contenuto del corso finisce per non essere lasciato indietro a troppe persone.

Sono sicuro che ci sono molti programmi CS universitari che hanno programmi di coesistenza multi-anno, ma ci sono molti, molti programmatori professionisti con scienze, matematica, economia e persino titoli di studio, non gradi CS.

    
risposta data 24.02.2012 - 13:38
fonte
1

Esiste un'imponente percezione generale che school knowledge (in particolare sulla programmazione) sia inutile o debole. Questo in realtà non è vero.

In effetti, chiedi a un moderatore medio di scuola di scrivere sul codice: lui / lui avrà ragione su un codice cattivo. Ma sarà almeno compilato e gestito. Chiedete ad un ingegnere elettronico fresco di media (ero uno di loro!) Per costruire una radio FM - non sarà nemmeno a metà del lavoro.

Il problema è la classica differenza tra - conoscere e realizzare. Di solito, c'è abbastanza teoria di te che conosci dal college, ma non riesci a sviluppare un giudizio su dove e come usare quella conoscenza.

Ad esempio, le scuole ti insegnano che violare l'incapsulamento è sbagliato. Ma molte persone non si rendono conto del fatto che il loro codice l'ha fatto - finché le cose lunghe diventano un problema.

La ragione per cui lo sviluppo del giudizio non arriva quando esci da scuola perché hai passato solo pochi mesi a risolvere problemi reali. Quando hai trascorso altri 10 anni nel settore, ripeti la stessa cosa che hai imparato nel tuo primo anno.

    
risposta data 24.02.2012 - 14:01
fonte
0

Se una scuola pone troppa enfasi su come evitare il codice erroneo, potrebbe essere colpevole di "ottimizzazione prematura". Per molti progetti a scuola viene utilizzata solo una parte del codice per dimostrare la comprensione del nuovo materiale. Poiché è necessario coprire un sacco di materiale in un semestre, chiedere agli studenti di tornare indietro e migliorare il codice per risparmiare qualche secondo di tempo di esecuzione, significa che è possibile coprire meno materiale.

Al lavoro puoi dire di prendere un paio d'ore per trovare le parti del codice che sono un collo di bottiglia e sistemarle. A scuola chiedendo loro di farlo si estende la data di scadenza del progetto di alcuni giorni o una settimana.

Non è necessario concentrarsi su ciò che è strettamente cattivo stile, perché ogni azienda lo fa in modo diverso.

Sono d'accordo con il commento sulla mescolanza di studenti in una classe, specialmente al liceo. Alcuni membri della classe non hanno mai visto un'istruzione If, altri sono nella loro terza lingua.

    
risposta data 24.02.2012 - 14:30
fonte

Leggi altre domande sui tag