L'Open Source porta a una cattiva programmazione? [chiuso]

4

Ho un pensiero che ho provato a chiedere a SO, ma non mi è sembrato il posto adatto. Penso che siti come Google Code, GitHub, SourceForge ... abbiano avuto un ruolo importante nella storia della programmazione. Tuttavia, ho scoperto che c'è un altro aspetto negativo di questo tipo di siti e che potresti semplicemente "copiare" il codice da quasi tutti, non sapendo se è una fonte buona (testata) o meno.

Questa linea di pensiero mi ha portato a credere che i siti web dei codici sorgente tendano a condurre molti sviluppatori (molto probabilmente inesperti) a copiare / incollare enormi quantità di codice, che trovo semplicemente sbagliato.

Non so davvero come mettere a fuoco la domanda, ma il pensiero di base sarebbe:

Va bene? È Open Source che contribuisce a questo o sto solo vedendo i fantasmi ...

Spero che le persone si interessino perché penso che questo sia un tema importante.

    
posta David Conde 29.11.2010 - 06:50
fonte

10 risposte

45

La correlazione non implica causalità. Gli sviluppatori copia / incolla il codice che non capiscono perché sono cattivi sviluppatori. La disponibilità di tale codice non gira male i buoni sviluppatori.

Se non ci fossero progetti open source, ci sarebbero ancora post sul forum con frammenti di codice o libri di programmazione con esempi. Quindi torniamo al mio primo paragrafo: i cattivi sviluppatori troveranno un modo per non essere bravi a scrivere codice. La colpa per copiare e incollare il codice spetta agli sviluppatori che lo fanno, non ai repository del codice sorgente.

    
risposta data 29.11.2010 - 06:56
fonte
7

Non penso che troppi sviluppatori copino e incollino da grandi progetti open source. È troppo lavoro per trovare il punto giusto in migliaia di linee di codici, e potrebbe essere diverso (almeno per uno sviluppatore cattivo) per scoprire quale parte copiare. Esse preferiscono copiare e incollare piccoli snipplet trovati su forum, articoli, esempi ecc., In cui tutto è ben combinato.

    
risposta data 29.11.2010 - 08:20
fonte
5

Per ogni 100 programmatori che copia / incolla il codice senza sapere cosa sta facendo, ce n'è quasi uno che non lo fa.

Prima di Google Code et similia c'erano snippet in tutto il Web che le persone copiavano / incollavano, quindi non vedo il problema come relazionato a questo tipo di siti.

    
risposta data 29.11.2010 - 06:56
fonte
1

Non è uno dei grandi principi della codifica "non reinventare la ruota"?

Se copia codice errato e non impara da esso, allora è il tuo male. Se copi un grande codice e impari da esso, allora sei un buon programmatore che sta andando alla grande.

    
risposta data 29.11.2010 - 07:04
fonte
1

La mia opinione è che ci siano buoni progetti open source e cattivi progetti open source. La disponibilità di buoni progetti open source che possono essere trovati su siti come Git Hub permette al tipo di programmatore principiante che un giorno finirà come un buon programmatore di avere una fonte quasi infinita di codice buono da guardare e studiare e (se lo si desidera ) copia. Il fatto è che il tipo di persona che finisce come un buon programmatore è quasi incapace di copiare e incollare semplicemente il codice. Vogliono guardarlo e smontarlo, modificare e capire cosa lo rende buono e cosa potrebbe migliorarlo e cosa peggiorerebbe. Quando hanno finito, è il loro codice e capiscono come funziona.

Rende più conveniente per i programmatori cattivi essere dei programmatori cattivi, ma allora? È un po 'come il difetto in javascript dove

i = 1

crea una variabile globale i e

var i = 1

crea una variabile locale corretta. Ciò rende possibile individuare il codice crap in un secondo da tutte le variabili globali involontarie che si trovano dappertutto 1 . Il fatto che sia più facile copiare e incollare i progetti significa che è più facile individuare il codice di crap perché sarà disseminato di quel tipo di arti vestigiali adattati alle condizioni da cui proviene e non alle condizioni in cui attualmente vive.

1 La mancanza di variabili globali non implica ovviamente che il codice sia buono ma è un segno promettente

    
risposta data 29.11.2010 - 07:37
fonte
1

Ognuno ha una sorta di motivazione per rilasciare il proprio codice in un modo che consenta ad altre persone di usarlo, modificarlo e ridistribuirlo.

Alcuni dei motivi:

  • Senti che il codice è utile e sarebbe utile per gli altri
  • Senti che l'idea è utile, e spero che persone più esperte raffinino l'implementazione
  • Sei obbligato da una licenza a rilasciare il codice per gli eseguibili binari modificati che hai distribuito
  • Speri che la disponibilità del codice possa aiutarti a migliorare la tua attività

Altre ragioni, naturalmente, entrano in gioco, o forse una combinazione di ragioni. La tua domanda sembra dipendere dal presupposto che il codice rilasciato nel selvaggio dovrebbe avere una qualità minima, che a mio avviso è eccessivamente idealistica.

Inoltre, penso che più risultati di codifica "copia e incolla" derivino dalla lettura di un "tutorial" che qualcuno ha pubblicato su un blog con frammenti, non da qualcuno che ha impiegato del tempo a scavare attraverso github per trovare qualcosa che potesse risolvere un problema. Tuttavia, l'utilizzo di esempi tratti da una guida "quick start" di cinque anni acquistata presso un negozio di libri usati potrebbe essere ugualmente pericolosa.

I bravi programmatori evitano gli errori che i programmatori inesperti tendono a fare, sarà sempre così. Spesso impari come evitare queste trappole cadendo in esse.

    
risposta data 29.11.2010 - 09:14
fonte
1

All'inizio non esiste una definizione esatta di buon codice. Puoi prendere due parti del codice buono e combinarle e ottenere codice cattivo. Solo perché gli stili di codice sono diversi.

Programmatore errato copia-incolla codice errato, scrivi codice errato.

Un buon programmatore copia-incolla un buon codice, scrive un buon codice. Un buon programmatore non inserirà codice errato.

Ma l'open source ci dà grandi possibilità di non scrivere più volte lo stesso codice, ma

    
risposta data 29.11.2010 - 12:38
fonte
1

Questa domanda è impossibile da rispondere.

Tuttavia, se chiedi rispetto a te stesso, ad es. "la presenza di codice liberamente disponibile che risolve i problemi con cui ho a che fare mi rende uno sviluppatore peggiore o peggio", quindi c'è una soluzione molto semplice e collaborativa per la tua ansia.

Trova un progetto che usi, supporti o trovi interessante, e vedi se puoi coinvolgerti con esso. Scrivi del codice, scrivi alcuni casi di test o fornisci della documentazione. Qualunque cosa tu stia facendo, lavorerai e valuterai il codice che stai usando e aiuterai un progetto che sostieni.

    
risposta data 29.11.2010 - 13:24
fonte
0

L'open source tende a una buona codifica, dal momento che non è possibile nascondere il codice errato dietro un'applicazione funzionante, è necessario codificare bene altrimenti si è fuori dal gioco. Capire e copiare / incollare un buon codice non fa peggiorare lo sviluppatore (non confondere con copia / incolla invece di fare una progettazione corretta). E, come menzionato in un'altra risposta, un programmatore cattivo troverà altri modi per produrre codice cattivo se non ci fossero codici sorgente disponibili.

    
risposta data 29.11.2010 - 11:49
fonte
0

Theodore Sturgeon ha dichiarato che "il 90% di tutto è grezzo" e che si applica al software open source come qualsiasi altra cosa. Ci sono molti, molti progetti su Sourceforge che sono una discarica di codice incompleto di una o due persone, e nulla è successo dal primo caricamento.

Ciò non significa che il software open source sia intrinsecamente cattivo o di qualità inferiore. I buoni progetti hanno una qualità più alta perché

  • se non ricevi un pagamento in denaro, la ricompensa che guadagni è il rispetto dei tuoi collaboratori
  • tutti possono vedere il tuo lavoro
  • Le versioni
  • vengono rilasciate quando sono pronte, non perché alcuni imperativi commerciali li costringono a essere rilasciati a metà

Se stai valutando un software open source che potresti voler adottare, lo vuoi scoprire se c'è una comunità abbastanza numerosa che la usa, così se gli attuali sviluppatori non possono o non vogliono supportarla, ci sarà abbastanza interesse e richiesta in modi alternativi per mantenerla e svilupparla. Poni la stessa domanda sul software commerciale.

Vorrei sottolineare il lavoro svolto dalla Apache Software Foundation per identificare progetti promettenti open source, fornire loro risorse e aiutarli a supportarli attraverso una fase di "incubatore" in modo che possano sviluppare abbastanza slancio per essere fattibili a lungo termine. Mentre naturalmente ci sono molti altri eccellenti progetti open source in giro, se un progetto ha raggiunto lo status di primo livello ASF puoi avere una certa sicurezza sulla sua qualità e redditività.

    
risposta data 01.03.2011 - 07:07
fonte

Leggi altre domande sui tag