Un programmatore dovrebbe concentrarsi almeno su quante lingue? [chiuso]


21

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?


stai chiedendo perché i processi di assunzione cercano parole chiave sui curriculum?
Brian,

@ 0A0D no in realtà, era per interesse personale. Sono anche un programmatore :)
Digital Dude,

Risposte:


43

Posso pensare ad almeno cinque ragioni per imparare una lingua, e sembra che alla fine dovresti impararne una per ognuna di queste.

  1. Una lingua per ottenere il tuo primo lavoro - probabilmente Java / C # / C ++
  2. Una lingua per fare le cose - probabilmente Bash / Perl / Python / Ruby
  3. Un linguaggio per piegare la mente - probabilmente Haskell / Clojure / Scala / F #
  4. Una lingua per motivi specifici del dominio - probabilmente JavaScript / Obiettivo C
  5. Una lingua per sporcarti le mani - probabilmente C / Assembly

17
Quale lingua li governa tutti?
Tester101

4
L'Assemblea li governa tutti. È per questo che è elencato per ultimo. Ho salvato il meglio per ultimo.
WernerCD,

9
Tester101: inglese? ; o)
John Fisher,

6
Naturalmente, non dovrebbe sorprendere che la lingua per ottenere il tuo primo lavoro non sia la lingua che usi per fare le cose.

4
... e nell'oscurità, legali!
tchrist,

53

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à.


23
+1 "Un linguaggio che non influisce sul modo in cui pensi alla programmazione, non vale la pena conoscerlo" -Alan Perlis
Inaimathi,

20
@Inaimathi: A meno che non lo sappia, aiuta a pagare le bollette.
Kramii Ripristina Monica il

5
Solo una nota: ho suggerito Haskell per nessun altro motivo se non radicalmente diverso da C #. Il truffatore che indossa l'amianto in me voleva dire "impara Smalltalk in modo da poter imparare OO"!
Frank Shearar,

10
@Digital Dude: il fatto che sia difficile è un po 'il punto. Quel dolore dietro la fronte NON è una brutta cosa - è un segno che il tuo cervello sta crescendo. Se vuoi solo continuare a imparare sempre la stessa cosa, impara Java, poi C #, poi Ruby, poi C ++ (woooh, no garbage collector - pauroso!), Quindi C (no class - pauroso-spaventoso!), Quindi forse diventa davvero pazzo e prova Objective-C! (Ooooh - due giorni fa non sono riuscito a scrivere Mac e ora posso programmarne uno!) Il mio punto - se vuoi imparare qualcosa di NUOVO devi fare qualcosa DIVERSO. Seguire la stessa strada ti porta nello stesso posto.
Bob Jarvis - Ripristina Monica il

4
@Kramii @Inaimathi Aha, ma un linguaggio che ti aiuta a pagare le bollette influisce sul modo in cui pensi alla programmazione
slf

22

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).


1
concordo anche con te quello. Un programmatore che conosce una lingua deve almeno imparare uno dei linguaggi di scripting per lavorare con essa. Sento che è molto importante + utile quando vuoi fare dei test. in particolare lo sviluppo di giochi ... ecc. Immagino che prenderò Python come lingua aggiuntiva :)
Digital Dude,

2
karma per la capacità di apprendere velocemente
Ayush Goyal,

Oltre a un linguaggio di scripting, a volte conoscere un linguaggio di script di shell può essere di grande aiuto. Alcune faccende comuni sul sistema sono più facili da risolvere in un linguaggio shell che anche in un linguaggio di scripting come Python.
CodexArcanum,

sapere che C # è diverso dall'essere un esperto in quella lingua
Brian,

1
Pascal non è quasi un linguaggio obsoleto; ci sono un sacco di cose in fase di sviluppo in Delphi in questi giorni.
Mason Wheeler,

8

È 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.


Grazie! Conosco un po 'di qua e di là ma mi sono reso conto che non posso davvero padroneggiare completamente una lingua. C'è sempre qualcosa di nuovo da fare ...: /
Digital Dude,

2
@Digital Non hai bisogno di padroneggiare ogni lingua. Dovresti avere familiarità con i concetti, in modo che se si presenta un problema che sarebbe meglio servito da una lingua, puoi prendere quella decisione. Potrebbe anche esporti a concetti che puoi usare nelle tue lingue principali.
KeithB,

8

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.


7

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


sì, di recente ho scelto C # essential, che è un ottimo libro da leggere e ho scoperto molte cose che non ho mai saputo davvero sfruttare appieno. Si raccomanda anche l'altro libro C # in profondità che ho sentito. Ci sono così tante cose da imparare ... ecco perché ho iniziato questo post sulla necessità di concentrare alcune lingue.
Digital Dude,

stabilire le priorità in base al proprio scopo. vuoi creare il tuo lavoro più facilmente? sei felice di dove sei e cosa fai? scegli un codice pulito. se vuoi lavorare in un'altra azienda che utilizza un'altra tecnologia, impara questo. se vuoi cambiare tecnologia solo per la diversità, provaci. hai scelto il tuo obiettivo e agisci di conseguenza
Belun,

6

Un programmatore deve concantrarsi sulla programmazione non su un / i linguaggio / i specifico / i.


6

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.


1
oppure! Xóõ: en.wikipedia.org/wiki/Taa_language (la lingua africana del "clic").
Jared Updike,

hehe, dopo aver parlato del finlandese o del navajo. Penso che andrò in lingua giapponese per il mio quarto invece ... abbastanza programmazione ...
Digital Dude,

1
@Jared, penso che una lingua che RICHIEDE taglia e incolla solo per dire il suo nome, possa incoraggiare abitudini indesiderate fin dall'inizio ...

5

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.


Dopo un certo punto, puoi anche passare un po 'di tempo usando i concetti appresi in una lingua in un'altra. Ad esempio, dopo aver appreso la programmazione funzionale utilizzando Haskell, potresti provare a vedere quali concetti di programmazione funzionale potresti usare in C #. Non vorrai scrivere un intero programma di funzioni in C #, ma sezioni di esso potrebbero avere più senso in questo modo.
KeithB,

3

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.


2

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.


1

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.


1

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.


0

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.


0

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:

  1. Programmazione funzionale - Haskell o Lisp sarebbero esempi qui e il cambio di paradigma può essere in qualche modo un colpo di testa.

  2. 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à.

  3. 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.


0

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.


Gradirei un commento sul perché tu, critico anonimo, hai votato questa risposta.
Philosodad,

la lingua inglese non ti insegna l'idea, è solo un modo per esprimere l'idea.
Sagarmatha,

@sagarmatha: anche se questo fosse vero, cosa che non lo è , non c'è niente "solo" nel poter esprimere te stesso nella lingua di comunicazione predefinita del campo. Se migliorassi il tuo inglese, saresti in grado di esprimerti chiaramente in chi parla inglese e, cosa più importante, leggere e comprendere l'inglese molto più velocemente. Come Matias sottolinea, libri di programmazione e articoli tecnici tendono a venire fuori in inglese prima , e qualche volta in inglese solo .
philosodad,

Non capisco perché sei stato sottoposto a downgrade, ma sono d'accordo con te sul fatto che conoscere l'inglese sia importante quanto conoscere un linguaggio di programmazione principale. @sagarmatha: Ti sei appena contraddetto. Se le idee sono espresse in inglese, sicuramente conoscere la lingua inglese ti permetterà di imparare queste nuove idee. Quanto imparerai e applicherai dipenderà dalla tua capacità di comprendere l'inglese più abilità di programmazione.
Chiurox,
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.