Per me sono C # e Java. Trovo che queste 2 lingue siano abbastanza simili, quindi è più facile per me incrociarsi a vicenda. Non sono sicuro che sia una buona idea imparare altre lingue diverse. qualche idea?
Per me sono C # e Java. Trovo che queste 2 lingue siano abbastanza simili, quindi è più facile per me incrociarsi a vicenda. Non sono sicuro che sia una buona idea imparare altre lingue diverse. qualche idea?
Risposte:
Posso pensare ad almeno cinque ragioni per imparare una lingua, e sembra che alla fine dovresti impararne una per ognuna di queste.
Non si tratta di quante lingue apprendi. Si tratta di apprendere nuovi concetti. Alcune lingue potrebbero essere in grado di insegnarti molti concetti, mentre altri potrebbero essere in grado di insegnarne solo uno.
Se conosci C #, probabilmente non imparerai nulla di terribilmente nuovo imparando Java. Ma lo faresti se imparassi Haskell.
Quindi, quando scegli una nuova lingua da imparare, scegli qualcosa che ti insegnerà concetti che non conosci già.
Direi che la cosa più importante è la capacità di imparare velocemente. Detto questo, è importante conoscere lingue diverse che vengono utilizzate per scopi diversi. Ad esempio so:
1) Python e Perl per la categoria dei linguaggi di scripting
2) C ++ come linguaggio "framework"
3) Java per applicazione mobile
4) C per l' enorme quantità di codice legacy
5) Alcune lingue obsolete che conoscevo da giovane (Basic, Pascal, Clipper ecc.)
Direi che hai bisogno di almeno una lingua principale e una di scripting. Conoscendo C # direi che dovrai imparare Python o Perl o Ruby dopo. (Vorrei andare con Python ma è solo una questione di preferenza).
È utile imparare un nuovo linguaggio di programmazione ogni anno. Ma piuttosto che imparare qualcosa di simile a quello che già sai, ti consiglierò di imparare qualcosa di radicalmente diverso come Scala o F #. Ti mostrerà nuovi modi di fare le cose e alla fine arricchirà le tue capacità di programmazione.
Dovresti concentrarti sulle lingue di cui hai bisogno e usarle per quello che stai facendo . Imparare davvero una lingua viene dalla pratica, quindi ottieni il beneficio di quella lingua quando la pratichi. Se hai intenzione di imparare una nuova lingua nel tuo tempo libero, allora fallo implementandolo in attività di crescente complessità, in modo da avere davvero una mano su di essa.
concentrarsi su nessuno. concentrarsi sull'apprendimento e la scrittura di codice pulito; chiaro, espressivo, semplice e, soprattutto, non duplicato.
cercare i principi di quel tipo di programmazione, le basi (ad esempio l'incapsulamento per OOP; cosa sono i mezzi e ciò che implica) e apprendere alcuni principi
queste cose renderanno il tuo lavoro più semplice. questo renderà anche più facile per le persone che lavorano con te o dopo di te.
anche tu devi conoscere abbastanza bene la sintassi. ma non è qualcosa che ti concentra da molto tempo
e anche tu devi capire abbastanza bene anche le tecnologie che usi. ma è possibile stabilire le priorità in base al livello di complessità richiesto dall'azienda.
gli ultimi due non hanno come obiettivo principale, ma sono focalizzati
Un programmatore deve concantrarsi sulla programmazione non su un / i linguaggio / i specifico / i.
Quanti ne servono per fare il tuo lavoro.
Ma C # e Java sono vicini quanto l'inglese britannico e l'inglese americano. Potresti imparare qualcosa di nuovo scegliendo il finlandese o il navajo.
Non penso che tu possa necessariamente padroneggiare una lingua senza avere abbastanza comprensione delle altre lingue per vederla "dall'esterno" per così dire. Ogni lingua diversa porta qualcos'altro sul tavolo e i concetti che portano sono cose che puoi riportare alle lingue principali con cui lavori.
Quindi il tempo impiegato per imparare ad usare altre lingue non è mai perso, anche se non si prevede di usarle commercialmente.
Il vecchio adagio è quello di imparare una lingua ogni anno e direi sicuramente per i primi dieci anni circa, quindi è necessario farlo. Forse oltre a ciò potresti scegliere tra esplorare alcuni di quelli che già conosci in modo più approfondito (magari aggiornando la tua conoscenza di quelli che hai imparato qualche anno fa) o lavorare con determinate biblioteche piuttosto che accumulare nuove lingue all'infinito, ma tenendo d'occhio esplorare la pratica della programmazione lavorando con lingue diverse è sicuramente un aiuto per il tuo sviluppo come programmatore.
I linguaggi di programmazione popolari come C # e Java ti terranno occupati con profitto nella maggior parte dei luoghi, ma nessuno dei due è abbastanza diverso l'uno dall'altro per imparare nuovi modi di risolvere i problemi. Penso che ci siano alcune lingue con cui mangi (quelle che usi per fare il tuo lavoro) e altre con cui giochi. Entrambi hanno i loro scopi.
Ho scoperto che imparando nuovi linguaggi di programmazione, ho anche imparato modi nuovi e più eleganti per risolvere i problemi. Non si tratta del numero di lingue o della frequenza con cui le raccogli. Ogni linguaggio di programmazione che vale la pena apprendere ha un punto di vista unico, che ti costringe ad affrontare i tuoi problemi con una nuova mentalità. Molte volte il valore deriva dall'apprendimento di quella mentalità.
Ho suonato con Smalltalk e l'ho adorato. Il linguaggio è stato solo un piacere con cui sviluppare. Una volta che ti sei abituato ai modi di dire, ti hanno aiutato a essere più espressivo con il tuo codice. Non mi mancava affatto la digitazione statica che hai in Java / C ++ / C #. I generici con cui viviamo nei nostri linguaggi tipizzati staticamente sono in realtà costrutti per aggirare i limiti imposti dalla tipizzazione statica.
Uso Ruby e Ruby on Rails regolarmente, anche se non per pagare lavori in questo momento. Il principio progettuale di Ruby era "aumentare la felicità del programmatore". Devi amare quel sentimento e per la maggior parte penso che offra.
Alla fine Java seguirà la strada di lisp e Smalltalk e C # seguirà l'esempio. Ciò che sarà lì per prendere il loro posto resta da vedere. Alla fine della giornata, se sai come risolvere i problemi e hai un numero di modi per tagliare e tagliare il problema, sarai in grado di trovare un lavoro e raccogliere qualsiasi lingua ti serva.
Quando si tratta di mantenere le competenze aggiornate e flessibili, penso che dovresti provare ad imparare almeno un linguaggio di programmazione completamente nuovo ogni 6 mesi circa. E intendo una lingua molto, molto diversa.
Quindi, mentre apprendi di più del framework .net mentre usi C # o i framework Java aiuta a mantenere agile, l'apprendimento di Haskell, Smalltalk, Scala, Clojure o Ruby amplierà la tua tecnica e ti aiuterà a pensare in modi diversi, alcuni dei quali potresti usare utilmente tornando alla tua lingua principale, e alcuni dei quali potrebbero aiutarti ad andare avanti se Java cessa di essere il re della collina.
Se non hai mai imparato C, anche se la sua sintassi è stata portata a Java, la mentalità può essere molto diversa. Vale la pena conoscerlo, in profondità, e ancora meglio, capire come il codice OO può essere scritto in questa lingua che sembra solo procedurale.
Consiglio di leggere il libro di Bruce Tate "Beyond Java", che evidenzia fin troppo bene i pericoli di essere solo su una lingua, notando l'ascesa e la caduta del C ++. Sebbene il C ++ sia ancora tutt'altro che morto e siano rimasti decenni, sta diventando sempre più limitato da utilizzare solo in situazioni che non possono beneficiare dei miglioramenti della produttività in altre lingue. Al contrario, Sinatra, un framework ruby, consente di creare un semplice servizio Web in circa 6/7 righe di codice, l'equivalente in C ++ potrebbe essere un ordine di grandezza più grande di questo.
Quando non sei di madrelingua inglese, almeno devi concentrarti sul miglioramento del tuo inglese . Lo sto dicendo sulla base della mia esperienza. Comprendere quella lingua mi ha aiutato molto.
Tutti i buoni materiali (libri, articoli, codice, ecc.) Per l'apprendimento di linguaggi di programmazione, tecnologie e nuovi concetti sono scritti in inglese.
Le lingue sono strumenti per svolgere il lavoro. Alcune lingue sono utili per alcuni tipi di problemi, altre sono generalmente buone in tutti i tipi di risoluzione dei problemi. Consiglio di imparare nuove lingue appena escono. Non essere ossessionato da ciò che è di moda questo mese, ma impara cosa possono fare, in cosa sono bravi. Il mio consiglio è di 1 nuova lingua all'anno. Vengono fuori più velocemente di quello, ma stai cercando di mettere nuovi strumenti nella tua cassetta degli attrezzi, non essere il nuovo ragazzo alla moda sul blocco.
Un saggio che parla delle differenze nelle lingue è "Beating the Averages" di Paul Graham. Consiglio di leggerlo, ma una parte importante è qui (usa "Blub" come linguaggio ipotetico in modo da non litigare su ciò che il tuo linguaggio preferito può fare):
O che dire di Perl 4? Tra Perl 4 e Perl 5, le chiusure lessicali sono state aggiunte alla lingua. La maggior parte degli hacker di Perl concorderebbe sul fatto che Perl 5 è più potente di Perl 4. Ma una volta che lo hai ammesso, hai ammesso che una lingua di alto livello può essere più potente di un'altra. E ne consegue inesorabilmente che, tranne in casi speciali, dovresti usare il più potente che puoi ottenere.
Questa idea è raramente seguita alla sua conclusione, però. Dopo una certa età, i programmatori raramente cambiano lingua volontariamente. Qualunque sia la lingua a cui le persone sono abituate, tendono a considerare abbastanza bene.
{} Snip
Finché il nostro ipotetico programmatore Blub sta guardando in basso il continuum di potenza, sa che sta guardando in basso. Le lingue meno potenti di Blub sono ovviamente meno potenti, perché mancano alcune funzionalità a cui è abituato. Ma quando il nostro ipotetico programmatore Blub guarda nella direzione opposta, nel continuum di potenza, non si rende conto di guardare in alto. Ciò che vede sono solo lingue strane. Probabilmente li considera equivalenti in termini di potere a Blub, ma con tutte queste altre cose pelose gettate pure dentro. Blub è abbastanza buono per lui, perché pensa in Blub.
Quando passiamo al punto di vista di un programmatore che utilizza una delle lingue più in alto nel continuum di potenza, tuttavia, scopriamo che a sua volta guarda in basso su Blub. Come puoi fare qualcosa in Blub? Non ha nemmeno y.
Per induzione, gli unici programmatori in grado di vedere tutte le differenze di potere tra le varie lingue sono quelli che comprendono il più potente. (Questo è probabilmente ciò che Eric Raymond intendeva sul fatto che Lisp ti rendesse un programmatore migliore.) Non puoi fidarti delle opinioni degli altri, a causa del paradosso di Blub: sono soddisfatti di qualunque linguaggio si capisca, perché detta il come pensano ai programmi.
http://www.paulgraham.com/avg.html
La maggior parte delle applicazioni che spediamo sono scritte in C # o VB. Quando abbiamo dovuto aggiungere script a un'applicazione, abbiamo scelto Python (Lua è stata la seconda scelta). Stiamo imparando F # perché questo può fare alcune nuove cose pelose che sono difficili da spiegare e capire se tutto ciò che si sa è C # / Java / VB.
bene prima di tutto ci sono un certo numero di lingue che sono molto difficili da evitare per la maggior parte dei programmatori: javascript, sql, c, ecc. quindi potresti anche acquisire conoscenza con loro, non stanno andando via.
è anche una buona idea conoscere un linguaggio di scripting tipo duck ... ad esempio uno di perl, python, ruby, lua ecc. questi sono incredibilmente utili per una vasta gamma di problemi tra cui l'automazione di gran parte della tua fatica quotidiana
nel bene e nel male probabilmente ti imbatterai anche in c # e / o java ad un certo punto, sono abbastanza pervasivi.
in ogni caso, non limitarti artificialmente. quei programmatori che conosco che evitano esplicitamente di raccogliere strumenti interessanti sembrano avere una visione del mondo di clausura e un impatto limitato.
Questo potrebbe diventare un altro dibattito tra specialisti e generalisti in un certo senso. Alcune persone potrebbero trascorrere molto tempo a conoscere una lingua a grande profondità che funziona bene per loro. Ad altre persone potrebbe piacere sapere un po 'di un sacco di lingue diverse che funzionano bene per loro. Molte persone sono tra questi due estremi.
Se vuoi suggerimenti sulle lingue da esplorare, ecco alcune idee:
Programmazione funzionale - Haskell o Lisp sarebbero esempi qui e il cambio di paradigma può essere in qualche modo un colpo di testa.
Specifico per il database - PL / SQL o T-SQL vengono in mente come qualcosa che può essere utile se si desidera svolgere più attività di back-end con sistemi che richiedono un database per alcune delle sue funzionalità.
Linguaggi Web dell'interfaccia utente: qui ActionScript o Javascript potrebbero essere esempi dei linguaggi utilizzati nelle applicazioni Rich Internet, sebbene AIR possa fare in modo che alcune applicazioni desktop utilizzino le chiamate Web in alcuni casi come Twhirl utilizzando l'API di Twitter.
Queste sono solo idee e, a seconda di dove vuoi essere, queste potrebbero essere utili o inutili per te. Buona fortuna con qualsiasi scelta tu faccia.
Un programmatore deve conoscere tre lingue: C, inglese e Something Else.
C è molto un linguaggio di base, è vicino alla macchina e ha regole di sintassi comuni a diverse lingue di alto livello. C ti costringe a pensare a cose come le strutture di dati in un modo molto diverso rispetto a Java. Inoltre, i vms Python e Ruby sono entrambi costruiti in C e puoi incorporare C in entrambe le lingue quando vuoi aumentare la tua velocità.
L'inglese è la lingua comune della programmazione. La maggior parte dei libri, dei rapporti tecnici, dei siti Web tecnici e dei giornali vengono pubblicati prima in inglese e talvolta esclusivamente in inglese. Inoltre, se l'inglese non è la tua prima lingua, l'apprendimento dell'inglese amplierà il tuo kit di strumenti per manipolare i concetti (questo vale anche per chi parla inglese imparando anche un'altra lingua).
Something Else dovrebbe essere un linguaggio non procedurale, o non tipizzato staticamente, o fortemente orientato agli oggetti, o in qualche modo fondamentalmente diverso da C. Haskell, Scala, Python, Ruby, qualche dialetto di Lisp, qualunque cosa .
Successivamente, puoi imparare qualunque cosa richieda la tua situazione specifica, probabilmente C # o Java.