Sono copia / incolla programmatore? [duplicare]

32

Quando sono bloccato con un problema particolare, cerco una soluzione in Google.

E poi provo a capire il codice e lo ritocco in base alle mie esigenze.

Per esempio recentemente ho fatto una domanda Leggere il documento xml in firefox nello stack trabocco.

Soufiane Hassou mi ha fornito un collegamento a w3schools, dove ho trovato un esempio sull'analisi del documento xml, ho capito come funziona l'esempio, ma ho copiato il codice e ottimizzato secondo le mie esigenze, dal momento che non mi piace digitare molto.

Quindi questo mi fa diventare un programmatore copia / incolla?

Come si dice se una persona è un programmatore copia / incolla?

Grazie.

    
posta Searock 23.05.2017 - 14:40
fonte

17 risposte

33

Sembra che sarò la sola vista dissenziente qui.

Prima di tutto, dobbiamo distinguere tra programmazione copia-e-incolla e programmazione settoriale cargo , poiché sembra che molte persone stiano combinando le due cose.

Copia e incolla la programmazione si riferisce alla pratica di copiare e incollare lo stesso codice più e più volte in diverse parti di un programma, verbatim o con solo piccole modifiche, invece di creare classi o subroutine o qualsiasi altra struttura di codice di ordine superiore offerta dal linguaggio. A volte questo è un sintomo di una deficienza nella lingua / ambiente stesso, ma più spesso è perché il programmatore non capisce (o valorizza) astrazione .

Chiaramente, non sei un programmatore copia e incolla a meno che non si tratti di ciò che stai facendo. Ma è ovvio dalla tua descrizione delle tue attività che questa non è la domanda che stai chiedendo.

Ciò a cui ti riferisci in realtà è chiamato programmazione settoriale cargo . Questo è un insieme di anti-pattern, uno dei quali è la copia all'ingrosso del codice da altre parti del programma o da fonti esterne, senza capire veramente come funzionano o se sono assolutamente necessari.

Può essere vero che molti programmatori lo fanno in misura molto limitata. Ad esempio, a volte abbiamo bisogno di aggirare un bug nel framework o nel sistema operativo, e basta copiare qualche soluzione ben nota perché non siamo davvero interessati a imparare tutto sul bug di qualcun altro che non possiamo aggiustaci. Ma per un programmatore professionista, questi casi dovrebbero essere pochi e distanti tra loro.

Se ti ritrovi a fare questo frequentemente allora dovrebbe essere una bandiera rossa per te. E hai fatto questa affermazione molto poco convincente:

[...] then I try to understand the code and tweak it according to my requirement.

Forse è vero. Può essere. Il problema è che ogni programmatore del culto del carico dirà questo. La domanda è: lo veramente capisci? Davvero?

Lo capisci in misura sufficiente da poterlo scrivere da zero se dovessi, dato un tempo sufficiente? Il risultato sarebbe ragionevolmente privo di bug?

O stai solo facendo delle modifiche casuali al codice che hai copiato fino a quando non colpisci la combinazione magica che fa ciò che vuoi?

Non sto livellando le accuse; Non ti ho mai incontrato, non so niente di te. Ma questo è qualcosa su cui devi riflettere.

Un semplice test è: ti ritrovi a dover modificare e ricompilare molto frequentemente quando sei in procinto di "modificare" il codice? O leggi il codice forse una o due volte e sai immediatamente cosa deve essere cambiato e come?

Se le tue modifiche / modifiche stanno funzionando sulla prima o forse seconda prova, probabilmente hai effettivamente capito il codice che hai appropriato. Se sembri sperimentare molto con il codice copiato, allora mi dispiace dire che sei un programmatore di culto del carico.

Ricordalo per la prossima volta. Guarda come ti avvicini al problema. Se ti trovi a fare l'equivalente di codifica dei pulsanti di mash su un game pad, devi rallentare e provare a imparare un po 'di più sulla libreria o sull'algoritmo che stai tentando di usare, prima di andare oltre.

    
risposta data 02.01.2011 - 19:21
fonte
26

Se "copia / incolla programmatore" è un negativo, allora direi "No, non sei uno" . Quello che fai perfettamente e in effetti esattamente come consiglierei alle persone di fare qualcosa. È sempre utile vedere la soluzione di altri popoli per un problema. In molti casi finirai per gettare questa soluzione completamente alla fine, perché è lenta, stupida o superata. Non tutte le soluzioni che trovi saranno buone.

Ma imparerai molto più velocemente in questo modo.

Copia e incolla molto. Sia dagli altri che da me stesso. Non vedo il problema con questo. Infatti, ogni singolo progetto che comincio, comincio usando un modulo (ironicamente ma per ragioni non correlate) chiamato Paster per creare scheletri di progetto. Perché dovrei digitare il codice skeleton da solo?

Quindi continui a incollare. Finché comprendi cosa fa il codice e perché, non è un problema.

    
risposta data 31.12.2010 - 10:06
fonte
17

Solo la mia opinione, (e non sono un esperto) ma dovrei dire: no.

Per me, un programmatore di c & p è uno che copia appena ciecamente qualcosa senza capire perché funzioni.

Se hai capito perché l'esempio funziona e hai avuto fiducia nella tua comprensione per apportare modifiche, allora non sei un programmatore copia e incolla.

    
risposta data 31.12.2010 - 09:17
fonte
5

Secondo me, sei un programmatore di copia-incolla se copi e incolli letteralmente qualcosa nella tua app e ti aspetti che compili / esegua senza sapere perché il codice che hai appena copiato e incollato funziona.

Se riesci a modificare il codice in base alle tue esigenze, allora non sei la definizione di un "programmatore copia-incolla".

    
risposta data 31.12.2010 - 09:20
fonte
4

Come si dice se una persona è un programmatore copia / incolla?

Ans: un programmatore intelligente!
Non esitare a rubare il codice (se non violiamo le licenze e se necessario, abbiamo persino coniato il riutilizzo del codice della parola per questo).
Non siamo a scuola quali compiti dovevamo fare da soli.

Il modo migliore per riutilizzare il codice è includere la sua libreria
in modo tale che tu possa apprezzare l'aggiornamento e la correzione dei bug da esso.

Non dovresti sentirti in colpa per niente ...

    
risposta data 31.12.2010 - 09:15
fonte
4

Quindi questo mi fa diventare un programmatore copia / incolla? < < In realtà!

Un programmatore copia-incolla è colui che ruba il codice stesso, mentre tu stai semplicemente prendendo idee per cose banali nel tuo progetto. Presumo che tu stia utilizzando la tua logica.

Semplicemente rilassati e non lasciare che il senso di colpa costruisca una casa nel tuo cervello!

    
risposta data 31.12.2010 - 09:24
fonte
3

Ho ottenuto il mio primo computer quando avevo cinque anni (uno ZX Spectrum :) e ho programmato da allora.

Quando avevo cinque anni, ero un "programmatore solo copia" perché non c'era copia e incolla! Vorrei avere una rivista con un articolo che elenca il codice per un programma semplice come "indovina il numero". Vorrei scrupolosamente copiare ogni personaggio. Quindi salvalo su un nastro ed eseguilo. Con il 13 ° tentativo, o così, sarebbe eseguito.

Più tardi, ho iniziato a creare i miei programmi fuori di testa. Ho adottato copia / incolla nel momento in cui ho avuto Internet. Quando Google è arrivato sulla scena l'ho fatto di più.

Continuerò a copiare il codice di altri popoli e leggerlo / capirlo, tuttavia, ora, non copio / incollo mai il mio codice.

Ho teso a notare che se si copia / incolla il proprio codice accadono cose brutte. Ad esempio, potresti dimenticarti di rinominare tutte le variabili utilizzate o di duplicare il codice che dovrebbe essere rifatto da qualche parte. Inevitabilmente ti imbatti in alcuni schemi di bug.

    
risposta data 31.12.2010 - 16:33
fonte
2

Oh sei cattivo cattivo cattivo uomo baaad ... Tsk tsk tsk .. C & P è un atto molto pessimo. (Se sai cosa sta facendo il codice e come lo sta facendo CTRL + C e CTRL + V it) Sei un uomo molto cattivo.

    
risposta data 31.12.2010 - 13:32
fonte
2

Non ho mai copiato e incollato il codice che non ha introdotto un bug nel mio sistema. Solo il mio 5 ¢.

    
risposta data 31.12.2010 - 16:51
fonte
2

Per me, un programmatore Copia / Incolla è qualcuno che vede qualcosa in un'altra parte dell'applicazione che è simile a quello che devono fare e copia e incolla il codice nella sezione di codice su cui stanno lavorando.

Scenario 1: lasciano il codice esattamente così com'è, senza modificarlo, e si finisce con duplicati esatti di codice in tutta l'applicazione. Non buono, ma abbastanza facile da calcolare quando scoperto.

Scenario 2: trova un codice simile, incollalo in una nuova parte dell'applicazione e cambialo un po '. Può essere scomposto se scoperto più tardi, ma queste piccole differenze diventano un grave problema nel sedere.

Soluzione: Calcola una soluzione più generica (classe, componente, what-have-you) e usa quel nuovo componente per entrambi i posti nell'applicazione.

Quello che fai - trova il codice su internet, lo incolla nell'app e lo modifica in modo appropriato - può andare bene finché il codice dell'applicazione finisce con un set coesivo e non con una specie di codice Frankenstein. Finché capisci cosa sta facendo, come modificarlo in futuro, non vedo alcun problema. Penso che molti di noi cercano soluzioni quando stiamo provando qualcosa che non abbiamo mai fatto prima. Uno dei miei animaletti è quando la gente dice "Non posso modificare questo codice, l'ho trovato su internet e non capisco veramente cosa fa, quindi dobbiamo lasciarlo esattamente così com'è".

    
risposta data 31.12.2010 - 17:48
fonte
2

la programmazione (php, asp, jsp) può cambiare, ma La logica è più importante.

Se capisci la logica dietro, puoi lavorare su tutta la programmazione. Problema di Np se è Copia / Incolla. La comprensione è importante

    
risposta data 31.12.2010 - 09:23
fonte
1

No, stai imparando e molte persone imparano attraverso l'hacking di altro codice.

Alla fine ti troverai a guardare le API il più delle volte. Chiamati un programmatore copia / incolla quando copi / incolli il tuo codice o altri " fuori bradipo.

    
risposta data 31.12.2010 - 18:08
fonte
1

Ho sempre pensato che un "programmatore copia-incolla" si riferisse di più allo "stile" della programmazione.

Ad esempio, un programmatore copia-incolla potrebbe copiare incolla la propria funzione più volte e modificarlo un po 'ogni volta invece di progettare correttamente il suo programma e / o generalizzare la funzione iniziale in modo che il codice sia presente in un solo posto .

Ad ogni modo, questo è quello che ho sempre pensato che la gente intendesse dire "copy-paste programmer", e con questa definizione, copiare e incollare il codice di esempio di altre persone va perfettamente bene.

    
risposta data 31.12.2010 - 18:26
fonte
1

Ecco i miei 5 centesimi. Essere un programmatore c / p è in qualche misura definito dalla propria area di competenza. Quello che voglio dire è che, se sei uno sviluppatore web, puoi trovare dozzine di informazioni sull'argomento con codici sorgente di supporto, ecc. E non usare questo codice è sciocco. Ma, se lavori nell'area di sistemi Real-time, EDA, sistemi cluster: trovare un codice di esempio che salvi la giornata è quasi impossibile, è molto più semplice ed efficiente sedersi e pensare a un determinato algoritmo e implementarlo da solo.
Se sei un principiante, naturalmente, il modo più efficace per affrontare un compito è imparare come gli altri lo hanno completato, quindi, studiando il codice sorgente degli altri e usandolo. È così che ho iniziato, ma più tardi, maturando come sviluppatore, scoprirai che la maggior parte delle soluzioni disponibili non sono così eleganti, hanno problemi di prestazioni o sono semplicemente brutte e finirai per scrivere il tuo codice.

    
risposta data 31.12.2010 - 18:40
fonte
1

Non ti definirei un programmatore copia-incolla. In realtà non lo fai in modo cieco (come hai detto tu), ma in realtà capisci cosa sta succedendo prima di usare il codice. Non c'è niente di sbagliato / dannoso in questo.

Di solito in realtà scrivo il codice da solo, anche se ciò significa fondamentalmente digitarlo in parola per parola (o è carattere per carattere per il codice?). Trovo che ogni volta che copio incolla, spesso dimentico esattamente come quel problema è stato risolto anche se ricordo la logica dietro. Ci sono molte sfumature e sottigliezze che semplicemente non sono registrate quando leggo il codice, anche se posso seguire e comprendere il ragionamento in questione. In realtà dattilografarlo mi costringe a confrontarmi con dettagli, problemi nascosti e facili errori che altrimenti mi perderebbero.

    
risposta data 31.12.2010 - 21:42
fonte
1

Le persone spesso cercano soluzioni quasi nella loro base di codice esistente e copiano la quasi-soluzione e la risolvono. Ero solito pensare che un tale codice duplicato fosse completamente sbagliato.

(Ma lo faccio molto, quindi non può essere sbagliato! In pratica, direi che tutti sono un programmatore di copia-incolla)

Quello che ora percepisco essere è un mezzo per rendere i programmatori efficienti a breve termine, con conseguenze negative a lungo termine.

Che codice di clonazione (copia-incolla-modifica) fa è consentire a un programmatore di prendere una soluzione a un problema e personalizzarlo più rapidamente, di quanto potrebbe presumibilmente fare scrivendo da zero. Dal punto di vista del tempo e del costo (a breve termine), questa è praticamente una vittoria.

Il problema è che qualsiasi codice clonato viene fornito con l'insieme di bug e presupposti integrati nella copia originale. Quando viene trovato un bug in uno, o il set di basi delle ipotesi cambia, allora tutte le copie devono essere riconvalidate. E mentre le persone sembrano sapere che il loro codice è pieno di cloni, in genere non sembrano sapere se il codice che stanno modificando ha un clone da qualche altra parte. Quindi, i cloni non vengono corretti, e questa è una conseguenza negativa a lungo termine.

Ora penso che la risposta giusta sia che i programmatori dovrebbero essere incoraggiati a clonare, e alcuni strumenti dovrebbero essere usati per tracciare la posizione di tutti i cloni (poiché i programmatori sembrano riluttanti o incapaci) e dire al programmatore quando ne sta modificando uno, o lascia che lei esamini il set prima che cominci e astratti i cloni.

C'è un varietà di strumenti per il rilevamento dei cloni là fuori , quindi non ci sono scuse per le persone che non le seguono più.

(I ne abbiamo creato uno oltre un decennio fa e usarlo mi ha portato a questa conclusione).

    
risposta data 23.05.2017 - 14:40
fonte
1

Penso che riutilizzare riutilizzare il riutilizzo sia sempre più il modo in cui le cose dovrebbero essere fatte. Quanto lo fai, rispetto a quanto fai rotolare il tuo è probabilmente principalmente una funzione di temperamento. Per temperamento, e anche per alcune brutte esperienze iniziali, non mi piace copiare i pacchetti, preferirei capire come implementarlo da solo. Ma questo ovviamente ha i suoi svantaggi. Le persone come me, impareranno molto sulla progettazione / costruzione di procedure a basso livello, ma potrebbero essere irrimediabilmente inefficienti nella creazione di una grande app che utilizza molte sottofunzioni esistenti che possono essere trovate in opensource. Se sei in una squadra, sarebbe bene avere almeno un programmatore che è del tipo roll-hisown. Se hai bisogno di nuovi metodi di soluzione, sarebbe meglio saperli scrivere. Ma hai anche bisogno di persone capaci di trovare, valutare e integrare anche il codice esistente. Penso che non sia possibile che con il passare del tempo l'attività C / P acquisisca sempre più importanza.

    
risposta data 02.01.2011 - 23:30
fonte

Leggi altre domande sui tag