Come faccio a gestire la necessità di conoscere più linguaggi di programmazione? [chiuso]

25

Sono un programmatore relativamente giovane. Ho 23 anni e ho programmato professionalmente per circa 5 anni.

Come la maggior parte dei programmatori che ho iniziato con C, ho imparato alcuni x86 assembly per divertimento e poi ho trovato C ++ che si è rivelata la mia più grande passione nel mondo della programmazione. La programmazione con C e C ++ ti obbliga a imparare API, librerie e framework specifici per piattaforma, ognuno dei quali richiede uno studio e una sperimentazione costanti. Dopo un po 'di tempo ho dovuto passare a Java e C # in quanto la domanda sulla mia regione è fondamentalmente per queste lingue. Con queste lingue sono entrato nel mondo dello sviluppo web e poi ho dovuto imparare javascript. Lo sviluppo per .NET Framework è stato entusiasmante all'inizio, ma mi sono sempre sentita legata a Microsoft (e ovviamente .NET Framework mi stava allontanando da Linux). Per lo sviluppo del desktop potrei fare praticamente tutto quello che ho fatto con .NET usando C ++ con Qt, ma per lo sviluppo web ho dovuto cercare un'alternativa. Ho trovato velocemente Django e poi ho iniziato a imparare Python per poter usare Django. Al giorno d'oggi sto imparando lo sviluppo iOS con Objective-C.

Finora è stato abbastanza facile imparare tutti questi linguaggi (il C ++ mi ha insegnato bene) ma sono preoccupato che un giorno non sarò in grado di tenere traccia di tutti loro. Solo per chiarire. Le uniche lingue che ho imparato dovevano essere C # e Java. Tutti gli altri che ho imparato per divertimento, perché amo programmare e imparare cose nuove. Inoltre, mi piace mantenere le mie competenze in primo piano sullo sviluppo di desktop, web e dispositivi mobili.

La mia domanda è: come si tiene traccia di più linguaggi di programmazione? (Voglio dire, tieni traccia delle modifiche a queste lingue e mantieni le tue abilità nitide) e: Esiste un numero sufficiente di linguaggi di programmazione?

    
posta Raphael 11.01.2011 - 02:36
fonte

15 risposte

27

Personalmente, penso che "tenere traccia" delle lingue sia una perdita di tempo. È sempre bene scegliere nuove lingue popolari, ma una volta che hai un linguaggio popolare e consolidato come C ++, Python, ecc., Non dovresti preoccuparti. Se sei un buon programmatore, la lingua è solo un insieme di parole chiave.

Ci sono solo tanti paradigmi sostanziali là fuori; forse i vecchi cani non possono imparare nuovi trucchi, ma in realtà non ci sono molti nuovi trucchi. Se sei preoccupato che la tua lingua funzionale / orientata agli oggetti / guidata dagli eventi / qualsiasi possa non durare, impara un altro paradigma; ma non preoccuparti troppo della scelta della lingua esatta.

E quindi cosa succede se dimentichi una o due parole chiave dopo che sei stato via da una lingua per un po '? Ecco perché abbiamo Google.

    
risposta data 11.01.2011 - 02:40
fonte
54

I am worried that someday I won't be able to keep track of them all.

Dopo 30 anni, lasciami dire questo.

Sì, perdi traccia.

Ecco perché scrivono manuali di riferimento.

    
risposta data 11.01.2011 - 03:14
fonte
14

Il vero vantaggio dell'apprendimento di più lingue sono i diversi paradigmi e modelli e modi di pensare che ti garantiscono.

La tua conoscenza di Java e della sua eredità singola dovrebbe aver modellato la tua visione del C ++ e della sua ereditarietà multipla. La tua conoscenza di Java e del suo GC dovrebbe aver modellato la tua visione del C ++ e della sua memoria gestita dall'utente. La tua conoscenza di C ++ e dei suoi modelli dovrebbe aver modellato la tua visione di Java e dei suoi generici. Tutte queste relazioni funzionano in entrambi i modi, naturalmente.

Se non hai mai scritto in un linguaggio funzionale, non apprezzerai ciò che la libreria <algorithm> di C ++ sta tentando di fare e ciò che manca non avendo funzioni cittadine di prima classe (prima di C ++ 11 almeno) . Se non hai mai scritto in un linguaggio tipizzato dinamicamente, non ti renderai conto dei limiti di ciò che la tipizzazione statica può e non può fare per te. Se non hai mai scritto in una lingua senza stato mutabile, non comprenderete le sanzioni che lo stato mutevole comporta.

Imparare altre lingue va bene, perché ti fa capire meglio le tue lingue esistenti. A questo proposito, non devi preoccuparti di essere aggiornato, perché i concetti di una lingua non tendono a cambiare rapidamente o affatto.

    
risposta data 11.01.2011 - 09:38
fonte
8

My question is: How do you keep track of multiple programming languages? (I mean, keep track of changes to these languages and keep your skills sharp)

Scrivi codice. Se vuoi tenere il passo con gli aggiornamenti della lingua, continua a scrivere codice.

Is there such a thing as enough programming languages?

Imparare più di una lingua ti aiuta ad avere una prospettiva su altre lingue che altrimenti non avresti. L'apprendimento di molte lingue offre una prospettiva generale di ampio respiro sul calcolo in generale.

Ma è impossibile imparare tutte le lingue, e non tutte le lingue hanno valore - o per te o per il tuo lavoro. Le lingue esoteriche non valgono la pena di essere apprese, tranne che per il loro valore intellettuale intrinseco, perché non hanno un reale uso pratico.

Quindi no, non esiste "abbastanza". Ma certamente c'è qualcosa come "non vale la pena."

    
risposta data 11.01.2011 - 03:02
fonte
4

Basta preoccuparsi di stare al passo con le lingue che pensi di usare o di utilizzare al momento. Imparare nuove lingue è utile, ma non c'è motivo di apprendere su modifiche più piccole in una lingua se non si finisce mai per usarlo di nuovo.

    
risposta data 11.01.2011 - 02:46
fonte
4

Non smettere mai di imparare; ma renditi conto che non sai mai tutto di tutto. Avrai sempre degli ambienti in cui sei più fluente. Non preoccuparti, continua a divertirti.

    
risposta data 11.01.2011 - 02:48
fonte
3

Hai abbastanza linguaggi di programmazione quando ritieni di aver finito. Conoscere più lingue è grandioso, ma non so se conoscere 12 quando usi 2 al lavoro fornisce più del beneficio contestuale. Non c'è niente di sbagliato nel conoscere più lingue, ma il resto del tempo è probabilmente meglio migliorare le proprie conoscenze all'interno delle lingue e delle discipline che è necessario utilizzare maggiormente. Come le lingue parlate, vuoi essere più abile in quelle che danno valore alla tua vita.

Riesco a ricordare diversi programmatori che si sono vantati di conoscere più lingue, ma hanno scritto codice nello stesso modo in ciascuno di essi, e non è necessariamente una buona cosa.

Inoltre, quando si invecchia, il tempo ti aiuterà a prendere una decisione per te (ho molto meno tempo per studiare sul lato di quanto non facessi prima di sposarmi, avere figli, diventare uno scrittore freelance, iniziare a occuparmi di carriera problemi, e la mia memoria ha iniziato a sud. Doh!).

    
risposta data 11.01.2011 - 02:48
fonte
3

Ho imparato molte lingue negli ultimi 25 anni. Dopo un po ', alcuni diventano meno utili e vengono dimenticati (Perl). Non parliamo nemmeno dell'assemblaggio 6502, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

Altre lingue si sono sbiadite, quindi ho dovuto reimparare (Python) dopo 10 anni. Non era il caso di tenere il passo con Python, non ci vuole molto per arrivare alla massima velocità - Google / SO è tuo amico.

Alla fine, una lingua è solo uno strumento. Lo usi per il lavoro a portata di mano. L'abilità è sapere cosa usare quando. Per essere onesti, una volta che ho iniziato ad usare C ++, non ho mai voluto fare di nuovo il codice C. Quando ho imparato C #, non ho mai voluto fare di nuovo il C ++.

    
risposta data 11.01.2011 - 03:27
fonte
1

Secondo me la programmazione non riguarda solo la lingua che stai utilizzando. La programmazione è un modo di pensare. Devi essere un buon analista per scrivere un buon software, il linguaggio di programmazione ti aiuterà solo a costruire il tuo software. Certo, ogni lingua ha i suoi difetti o vantaggi, ma per costruire un buon software devi pensare come sviluppatore. Le persone che non pensano come uno sviluppatore non costruiranno un ottimo software, indipendentemente dalla bontà della lingua che stanno utilizzando.

Io faccio sempre il paragone con qualcuno che sta costruendo una casa, non si preoccupa del suo martello, finché ne ha uno che può costruire la casa. Potrebbe aver bisogno di familiarizzare con il martello (ad esempio il peso), ma una volta che avrà familiarizzato con lo strumento, potrà costruire una casa fantastica. Abituarsi allo strumento non è poi così difficile poiché la maggior parte delle "versioni" dello strumento sono abbastanza simili (questo vale per i martelli, ma anche per i linguaggi di sviluppo).

Mentre studiavamo, usavamo Java (prima usavo ASP e VB5), ma dopo essermi laureato (circa 5 ~ 6 anni fa) ho imparato a usare C # (e Javascript), un job switch mi "obbligava" ad andare su VB .NET, il lavoro successivo mi ha permesso di utilizzare entrambi i linguaggi .NET (cosa che ho fatto) e persino "permesso" di lasciarmi usare nuovamente Java (per alcuni strumenti legacy che stavano usando). Al giorno d'oggi sto lavorando con X ++ (linguaggio di Microsoft Dynamics AX), ma sto ancora sviluppando in .NET. Sono solo la lingua con cui lavoro nel mio lavoro quotidiano, mi piace anche studiare nuovi linguaggi come F #, Ruby, ecc. Imparare queste nuove lingue richiede solo un paio di giorni (solo per capire la sintassi) e il resto del tempo stai solo giocando con la lingua e imparerai gradualmente.

Ci sono così tante lingue, ma io tendo a concentrarmi solo sulle lingue che sono veramente diverse (come F #). Vedo l'apprendimento di nuove lingue come interessanti e divertenti, quindi per ora sto bene, l'apprendimento di una nuova lingua è abbastanza semplice (almeno se il pensiero è lo stesso, C #, VB, Java sono uguali, ma per esempio F # è molto diverso) e non mi preoccupo troppo.

    
risposta data 11.01.2011 - 07:54
fonte
1

Ho iniziato la mia carriera 5 anni fa su vb6, spostato su php, quindi su java e poi su .net. attualmente per l'ultimo anno lavorando su asp.net mvc2 e sto provando la mia mano anche su mvc3

il segreto è che non si dovrebbe mai diventare obsoleti non si può dominare tutto nel mondo, quindi preoccuparsi di ciò non è l'opzione

    
risposta data 11.01.2011 - 08:14
fonte
1

Penso che questa sia una domanda di carriera. Pertanto devi rendere conto per le persone che ti assumono solo se conosci uno specifico set di strumenti. Forse questo squalifica il lavoro, ma forse no. Quindi impara nuove cose in modo superficiale. Ma continua a imparare profondamente le cose difficili (matematica, nuovi paradigmi di programmazione).

L'adattamento all'uso di nuovi strumenti è un compromesso. Il settore IT è pieno di hypes e devi difenderti da questi. Questo inizia con la frase: no continuo ad usare il mio vecchio editor (emacs?). Ma di tanto in tanto devi imparare cose nuove. Stanno davvero migliorando nel corso degli anni (3-4). Se hai la possibilità di imparare cose nuove al lavoro con un vero progetto a portata di mano: non esitare, dato che sarà divertente! Il modo migliore per distinguere l'hype dalla vera innovazione è guardare le persone che lo usano. Sei più bravo a giudicare le persone che la tecnologia:)

    
risposta data 11.01.2011 - 09:20
fonte
1

Suggerirei di apprendere le lingue con diversi paradigmi, come funzionale, OO e logico, perché sono così diversi.

Tuttavia, non suggerirei necessariamente di imparare 3 lingue funzionali o 3 OO-Languages.

Se sei bravo a recitare, forse. Ma trovo che sia difficile imparare cose simili ancora e ancora, il che sembra essere quasi lo stesso, ma non esattamente, specialmente le cose da biblioteca come la pittura di finestre, l'invocazione di database, le librerie di raccolta, dove devi ricordare nomi e convenzioni diversi, ma quale comportarsi quasi allo stesso modo. È stato paintRect (xstart, ystart, xend, yend) o (xstart, ystart, width, height)? Compreso 'fine' qui, non includendolo lì?

Ma alcune persone non hanno difficoltà a imparare queste cose.

Quindi suggerirei di apprendere alcune lingue, ma impararne alcune in profondità potrebbe insegnarti di più, che una lingua dopo l'altra solo in superficie. Forse non 2 lingue all'anno, ma ogni due anni una lingua.

    
risposta data 05.06.2011 - 06:15
fonte
0

Sono un po 'al lato opposto dello spettro. Odio imparare più lingue, perché impari cose semplici e non riesci mai a risolvere problemi più profondi in questo modo. Allo stesso tempo impari cattive pratiche da altre lingue.

Hai mai visto un codificatore di sviluppatori Java in C ++, è un casino in attesa di esplodere ...

Il problema è che tutte le lingue hanno i loro trucchi in cui l'astrazione inizia a perdere o giocare contro di te. Puoi imparare la sintassi in 1 giorno, ma ci vorranno 5 anni per sapere come codificare in modo efficiente e privo di bug. Usi a () o []? Perché malloc renderà il tuo processo a lungo termine a corto di memoria?

Anche i paradigmi dell'apprendimento sono una proposta interessante. Perché usare le linee guida Java in C, o le linee guida Perl in C # è probabilmente una dimostrazione impressionante di come scrivere codice offuscato.

Imparare poche nuove lingue potrebbe aiutarti ad ampliare i tuoi orizzonti, ma non dovrebbero farti sentire più intelligente, dovrebbero farti sentire più stupido con ogni nuovo apprendimento.

    
risposta data 21.09.2011 - 23:12
fonte
0

Qualcun altro ha suggerito da qualche parte che "tutti dovrebbero conoscere 3 lingue".

Tendo ad essere d'accordo. Dovresti conoscere un linguaggio compilato (C / C ++, C #, ecc.), Un linguaggio interpretato (Python, Ruby, ecc.) E un linguaggio di elaborazione del testo (Perl, Awk, ecc.). Penso inoltre che dovresti conoscere un linguaggio di scripting della shell (Bash, in questi giorni o Windows Power Shell). Lo stesso consiglio vale per toolkit e API.

L'unico modo per stare al passo con un linguaggio mentre si evolve è usarlo. Se mantieni il tuo toolkit di lingue regolari limitato a pochi, sarai più facile usarli tutti regolarmente per risolvere i problemi, e così sarai in grado di tenere il passo con gli sviluppi in ciascuno.

Quindi, vai al passo con le tecnologie che usi quotidianamente e rimani lì. Non c'è niente di sbagliato nel dilettarsi in altre aree di interesse quando hai tempo. Di solito non richiede a un programmatore esperto una lunga durata per apprendere una nuova tecnologia con sufficiente motivazione e tempo di blocco per sedersi con essa.

Non c'è bisogno di stare al passo con ogni singola tecnologia là fuori ... sarai in grado di andare su e giù su di loro quando necessario, mantenendo quelli che usi più regolarmente come focus.

    
risposta data 22.09.2011 - 06:51
fonte
-5

Ragazzi, davvero - questo è triste. Nessuna specializzazione, "imparerò tutto". Scusa per questo approccio, saprai tutto, ma le tue abilità saranno così basse che nessuno ti pagherà bene.

C'è stata una ricerca che diceva che hai bisogno di 10 anni di allenamento per essere "bravo" con qualsiasi cosa (programmazione, suonare la chitarra, ballare, ecc.). E questo è vero, hai bisogno di 5-10 anni di scrittura di C ++ / python / etc. per acquisire le competenze necessarie per sviluppare codice commerciale di buona qualità.

E che cazzata sui riferimenti linguistici? E dove sono buone abitudini di programmazione che sono diverse per ogni linguaggio di programmazione. In quale riferimento trovi buone pratiche di gestione della memoria e strutture dati per le pratiche di C o Server Side Security?

Desktop, mobile, server (!!!) - questi sono ambienti completamente diversi. Decidi se vuoi "giocare" per tutta la vita, oppure focalizzarti su una cosa e ottenere un lavoro decente. Probabilmente le persone ti diranno cazzate che dovresti conoscere ogni lingua del mondo, perché stanno cercando di fare lo stesso per migliorare i loro lavori di merda. Ma indovina un po ', non saranno mai in grado di farlo, anche dopo aver letto il "riferimento" di Java, perché di cosa saranno capaci allora? Esattamente NIENTE.

Sì - impara anche il design grafico, la scrittura di sceneggiature e il flash, ne avrai bisogno! :) Non so esattamente cosa c'è che non va, ma se stai facendo client, server e mobile contemporaneamente - esci dal tuo lavoro e non aspettare fino a domani perché devi farlo ora!

My question is: How do you keep track of multiple programming languages?

La tua domanda dovrebbe essere come non tenerne traccia. Il mio consiglio è di smettere di pokemon e diventare bravo in qualcosa che ti piace.

    
risposta data 11.01.2011 - 06:47
fonte

Leggi altre domande sui tag