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


25

Sono un programmatore relativamente giovane. Ho 23 anni e sto programmando professionalmente da circa 5 anni.

Come la maggior parte dei programmatori ho iniziato con C, ho imparato alcuni assembly x86 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 impone di apprendere API, librerie e framework specifici della piattaforma, ognuno dei quali richiede uno studio e una sperimentazione costanti. Dopo un po 'di tempo ho dovuto passare a Java e C # poiché la domanda nella mia regione è fondamentalmente per queste lingue. Con queste lingue sono entrato nel mondo dello sviluppo web e poi ho dovuto imparare javascript. Inizialmente lo sviluppo per .NET Framework è stato entusiasmante, ma mi sono sempre sentito legato da Microsoft (e ovviamente .NET Framework mi stava allontanando da Linux). Per lo sviluppo desktop ho potuto fare praticamente tutto ciò che ho fatto con .NET usando C ++ con Qt ma per lo sviluppo web ho dovuto cercare un'alternativa. Ho rapidamente trovato Django e poi ho continuato a imparare Python in modo da poter usare Django. Oggi sto imparando lo sviluppo di iOS con Objective-C.

Finora è stato abbastanza facile imparare tutte queste lingue (il C ++ mi ha allenato bene) ma sono preoccupato che un giorno non sarò in grado di tenerne traccia tutte. Giusto per chiarire. Le uniche lingue che ho imparato perché dovevo essere erano C # e Java. Tutti gli altri che ho imparato per divertimento, perché amo programmare e imparare cose nuove. Inoltre, mi piace affinare le mie capacità nello sviluppo di desktop, web e dispositivi mobili.

La mia domanda è: come tenere traccia di più linguaggi di programmazione? (Voglio dire, tenere traccia delle modifiche a queste lingue e migliorare le tue abilità) e: Esistono linguaggi di programmazione sufficienti?


20
Come osi pensare di non imparare più lingue !?
Mateen Ulhaq,

9
"Ogni volta che imparo qualcosa di nuovo, mi spinge fuori dal cervello alcune cose vecchie. Come quella volta che ho seguito un corso di vinificazione a casa e ho dimenticato come guidare."
Dean Harding,

1
La programmazione non riguarda la padronanza della sintassi del linguaggio X, la programmazione riguarda l'apprendimento della programmazione. Impara come scegliere la lingua giusta per il lavoro giusto e poi, una volta scelta quella lingua, impara l'API e la sintassi e poi fai quello che fai in qualsiasi altra lingua ... PROGRAMMA!
Chris,

6
alcune lingue che non dimenticherai mai; altri che non vedi l'ora di dimenticare
Steven A. Lowe,

3
Sei per lo più in OOP. Dovresti esplorare altre lingue paradigmatiche come il linguaggio funzionale Haskell e poi pensare a tenere traccia.
Vigneshwaran,

Risposte:


27

Personalmente, penso che "tenere traccia" delle lingue sia una perdita di tempo. È sempre utile acquisire 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 così 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 il tuo funzionale / orientato agli oggetti / guidato dagli eventi / qualunque linguaggio possa non durare, impara un altro paradigma; ma non preoccuparti troppo dell'esatta scelta della lingua.

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


2
Non lasciare che il tuo capo lo veda. :) O un non programmatore. Penseranno che la programmazione sia così facile e perché un programmatore sarebbe pagato per un lavoro così facile.
Mateen Ulhaq,

4
Penso che questo sia vero se rimani all'interno di un paradigma specifico. Ad esempio OO / Imperativo. Si rompe se guardi una lingua che non è imperativa.
Richard

@Richard: so che non intendi suggerire che OO implichi necessariamente un imperativo, giusto?
Frank Shearar,

@Frank: Sì, piuttosto che un gruppo di linguaggi molto comunemente usati (Java, C #, C ++) che sono entrambi ...
Richard

1
"(a) la lingua è solo un insieme di parole chiave" - ​​Non sono d'accordo. Ogni piattaforma ha modi locali e idiomatici di fare le cose. Essere un buon programmatore nella piattaforma X implica molto di più della semplice sintassi. Ad esempio, un ottimo codice JavaScript non accadrà se suppongo che la mia mentalità .NET OO sia tutto ciò di cui ho bisogno.
Bevan,

54

Sono preoccupato che un giorno non sarò in grado di tenerne traccia.

Dopo 30 anni, lasciami dire questo.

Sì, perdi la cognizione.

Così?

Ecco perché scrivono manuali di riferimento.


14

Il vero vantaggio di imparare più lingue è i diversi paradigmi e modelli e modi di pensare che si concede.

La tua conoscenza di Java e della sua singola eredità dovrebbe aver modellato la tua visione di C ++ e della sua eredità multipla. La tua conoscenza di Java e dei suoi GC avrebbe dovuto plasmare la tua visione di 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, ovviamente.

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

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


8
+1 Non si tratta solo di imparare più lingue (l'apprendimento delle lingue è la parte facile). Imparare paradigmi diversi è ciò che è importante. Personalmente ritengo che gli studenti a livello universitario debbano essere esposti a questi diversi paradigmi, è un triste stato di cose quando ci sono così tante università "McJava (tm)" in questi giorni (Nota, non sto dicendo che Java sia pessimo, leggi l'intero contesto per favore.). :(
Darknight,

8

La mia domanda è: come tenere traccia di più linguaggi di programmazione? (Voglio dire, tenere traccia delle modifiche a queste lingue e migliorare le tue abilità)

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

Esistono abbastanza linguaggi di programmazione?

Imparare più di una lingua ti aiuta a ottenere una prospettiva su altre lingue che altrimenti non avresti. L'apprendimento di molte lingue ti offre una prospettiva generale di ampia portata sul calcolo in generale.

Ma è impossibile imparare ogni lingua e non tutte le lingue hanno un valore - né per te né per il tuo lavoro. Non vale la pena imparare le lingue esoteriche, tranne per il loro valore intellettuale intrinseco, perché non hanno un reale uso pratico.

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


4

Preoccupati solo di stare al passo con le lingue che ritieni verranno utilizzate o che stai attualmente utilizzando. L'apprendimento di nuove lingue è utile, ma non vi è motivo di apprendere modifiche minori in una lingua se non si finisce mai per usarlo di nuovo.


4

Mai smettere 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.


È vero, non smettere mai di imparare, ma FOCUS. Imparare tutto è come correre come un pollo senza testa e, alla fine, sei bravo a fare esattamente NIENTE.
Slawek,

@Slawek: "alla fine sei bravo esattamente NIENTE". Quasi. Una versione migliore potrebbe essere: Alla fine, le cose in cui sei stato bravo sono state sostituite da una nuova tecnologia di cui non hai idea.
S.Lott

3

Hai abbastanza linguaggi di programmazione quando pensi di aver finito. Conoscere più lingue è grandioso, ma non so se conoscere 12 quando ne usi 2 sul lavoro offra vantaggi più che contestuali. Non c'è nulla di sbagliato nel conoscere più lingue, ma il resto del tempo probabilmente stai migliorando le tue conoscenze all'interno delle lingue e delle discipline che devi usare di più. Come le lingue parlate, vuoi essere più competente in quelle che forniscono valore nella tua vita.

Ricordo molti programmatori che si vantavano di conoscere più lingue ma che scrivevano codice allo stesso modo in ognuna, e non è necessariamente una buona cosa.

Inoltre, man mano che invecchi, il tempo ti aiuterà a prendere una decisione (ho molto meno tempo per studiare sul lato rispetto a prima di sposarmi, avere figli, diventare uno scrittore freelance, iniziare a occuparmi di problemi di carriera e la mia memoria ha iniziato ad andare a sud. Doh!).


3

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

Altre lingue sbiadirono, poi ho dovuto riapprendere (Python) dopo 10 anni. Non aveva senso tenere il passo con Python, non ci vuole molto per arrivare alla velocità: Google / SO è tuo amico.

Alla fine, una lingua è solo uno strumento. Lo usi per il lavoro da svolgere. L'abilità è sapere cosa usare quando. Ad essere sincero, una volta che ho iniziato a usare il C ++, non avrei mai più voluto fare la codifica C. Quando ho imparato C #, non avrei mai più voluto fare C ++.


3
le notizie sulla morte di Perl sono molto esagerate.
Philip Potter,

Non è nulla di personale contro Perl. Lavoravo su Unix, quindi Perl era la mia arma preferita. Ho creato app dannatamente grandi per la tecnologia. Poi sono passato a Windows. Ora sono tornato di nuovo, ma l'app che sto sviluppando è in Python, quindi sembra poco utile usare Perl e Python.
Dave,

1

Secondo me la programmazione non riguarda solo la lingua che stai usando. 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 realizzeranno un software eccezionale, indipendentemente dalla lingua utilizzata.

Faccio sempre il paragone con qualcuno che sta costruendo una casa, a lui non importa del suo martello, fintanto che ne ha uno che può costruire la casa. Potrebbe aver bisogno di familiarizzare con il martello (ad esempio il peso), ma una volta che ha familiarità con lo strumento può costruire una casa fantastica. Abituarsi allo strumento non è 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 ho usato ASP e VB5), ma dopo la laurea (circa 5 ~ 6 anni fa) ho imparato usando C # (e Javascript), un interruttore di lavoro mi ha "costretto" ad andare su VB.NET, il lavoro successivo mi ha permesso di usare entrambi i linguaggi .NET (cosa che ho fatto) e persino "permesso" di farmi usare di nuovo Java (per alcuni strumenti legacy che stavano usando). Oggi sto lavorando con X ++ (linguaggio di Microsoft Dynamics AX), ma sto ancora facendo qualche sviluppo in .NET. Queste sono solo le lingue con cui lavoro nel mio lavoro quotidiano, mi piace anche studiare nuove lingue come F #, Ruby, ecc. L'apprendimento di queste nuove lingue ha richiesto solo un paio di giorni (solo per capire la sintassi) e il resto del tempo che stai solo giocando con la lingua e imparerai gradualmente.

Ci sono così tante lingue, ma tendo a concentrarmi solo su lingue che sono davvero diverse (come F #). Vedo imparare nuove lingue come interessanti e divertenti, quindi per ora sto bene, imparare una nuova lingua è abbastanza facile (almeno se il pensiero è lo stesso, C #, VB, Java sono uguali, ma per esempio F # è abbastanza diverso) e non mi preoccupo troppo.


1

ho iniziato la mia carriera 5 anni fa su vb6, sono passato a php, poi a java e poi a .net. attualmente per l'ultimo anno lavorando su asp.net mvc2 e sta anche provando la mia mano su mvc3

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


1

Penso che questa sia una domanda di carriera. Pertanto devi tenere conto delle persone che ti assumono solo se conosci uno specifico set di strumenti. Forse questo squalifica il lavoro, ma forse no. Quindi apprendi nuove cose superficialmente. Ma continua ad imparare a fondo le cose difficili (matematica, nuovi paradigmi di programmazione).

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


1

Vorrei suggerire l'apprendimento di lingue con paradigmi diversi, come funzionale, OO e logico, perché sono così diversi.

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

Se sei bravo a recitare, forse. Ma trovo difficile imparare cose simili più e più volte, il che sembra essere quasi lo stesso, ma non esattamente, specialmente materiale di libreria come pittura di finestre, invocazione di database, librerie di collezioni, dove devi ricordare nomi e convenzioni diversi, ma che comportarsi quasi allo stesso modo. Era paintRect (xstart, ystart, xend, yend) o (xstart, ystart, larghezza, altezza)? Includendo 'fine' qui, non includendolo lì?

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

Quindi suggerirei di imparare alcune lingue, ma impararne alcune in modo approfondito potrebbe insegnarti di più, che lingua dopo lingua solo in superficie. Forse non 2 lingue all'anno, ma ogni due anni una lingua.


0

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

Mai visto uno sviluppatore Java hardcore scrivere codice 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 giocano contro di te. Puoi imparare la sintassi in 1 giorno, ma ci vorranno 5 anni per sapere come codificare in modo efficiente e senza errori. Usi su () o []? Perché malloc renderà il tuo processo di lunga durata esaurito la memoria?

E l'apprendimento dei paradigmi è anche una proposta interessante. Perché l'uso delle linee guida Java in C o le linee guida Perl in C # probabilmente si trasformano in una fantastica dimostrazione 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 che impari.


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 anche che dovresti conoscere un linguaggio di scripting di shell (Bash, in questi giorni o Windows Power Shell). Lo stesso consiglio vale per toolkit e API.

L'unico modo per tenere il passo con una lingua mentre si evolve è usarla. Se mantieni il tuo toolkit di lingue regolari limitato a poche, sarai più facilmente in grado di usarle tutte regolarmente per risolvere i problemi, e così sarai in grado di tenere il passo con gli sviluppi in ciascuna.

Quindi, mettiti 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 ci vuole molto tempo per un programmatore competente per apprendere una nuova tecnologia data la motivazione sufficiente e bloccare il tempo per sedersi con essa.

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


-5

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

C'è stata una ricerca secondo cui 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 per scrivere C ++ / python / etc. per acquisire le competenze necessarie per sviluppare un codice commerciale di buona qualità.

E quella stronzata sui riferimenti linguistici? E dove ci 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 C o Server Side Security?

Desktop, mobile, server (!!!) - questi sono ambienti completamente diversi. Decidi se vuoi "giocare" per tutta la vita o focalizzi una cosa e ottieni un lavoro decente. Probabilmente le persone ti diranno stronzate che dovresti conoscere ogni lingua sulla terra, 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 la progettazione grafica, la sceneggiatura e anche il flash, ne avrai bisogno! :) Non so esattamente cosa c'è che non va, ma se stai eseguendo client, server e dispositivi mobili contemporaneamente - abbandona il tuo lavoro e non aspettare fino a domani perché devi farlo ora!

La mia domanda è: come tenere traccia di più linguaggi di programmazione?

La tua domanda dovrebbe essere come non tenerne traccia. Il mio consiglio, esci da Pokemon e diventa bravo in qualcosa che ti piace.


1
Sai che ho ragione: chi guadagna di più? Senior Java Engineer presso IBM o "programmatore-o-graphican-o-computerfixer-o" presso alcune società di sviluppo di siti Web locali? Beh, conosco buoni grafici che fanno solo grafica e fanno pagare $ 10.000 per un progetto di banner "stupido" ... e alcuni ragazzi "so tutto" che stanno realizzando alcuni stupidi siti Web per stupidi affari locali per $ 150 (che includono la grafica), che risolvono computer nel frattempo, ecc. Perché sanno così poco in così tante aree che tutto ciò che possono davvero fare è installare un tema wordpress o verificare perché msoffice non funziona.
Slawek,

-1 per essere più furioso di una risposta e per confondere la tua esperienza personale con il mondo. Mi piacerebbe vedere a quale "ricerca" ti riferisci. L'idea pop in questi giorni è che ci vogliono 10.000 ore di pratica attiva per sviluppare competenze in un campo. Questo è stato reso popolare dagli scritti di Malcom Gladwell. Probabilmente non è male come regola empirica, ma difficilmente è una legge della fisica. 10.000 ore sono cinque anni di 40 ore settimanali e, naturalmente, molti di noi mettono in orari molto più lunghi le prime fasi della nostra carriera.
Charles E. Grant,

No, hanno una specializzazione. La loro specializzazione è la programmazione. I linguaggi di programmazione sono semplicemente strumenti del mestiere da raccogliere quando necessario e da scartare quando non necessari. La cosa di 10.000 ore è stata resa popolare dal libro di Malcolm Gladwell. Ma hai capito cosa stava dicendo? Stava dicendo che per essere un genio musicale, ad esempio, ci sono volute 10.000 ore. Non stava dicendo che ci sono volute 10.000 ore per essere bravi a suonare il piano.
Antonio2011a

Se nessuno avesse mai imparato più di una lingua, saremmo tutti programmatori in assembler. Oggi sto usando Groovy, Java, Javascript, SQL, Ant e Selenium. Non ho bisogno di 7 persone nella mia squadra. Ho bisogno di persone in grado di acquisire una nuova tecnologia e far accadere le cose.
Kevin Cline,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.