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

21

Per me sono C # e persona Java. Trovo che queste 2 lingue siano abbastanza simili, quindi è più facile per me incontrarci. Non sono sicuro se la sua buona idea di prendere altre lingue diverse. Qualche idea?

    
posta Digital Dude 28.10.2010 - 10:56
fonte

16 risposte

42

Posso pensare ad almeno cinque motivi per imparare una lingua, e sembra che alla fine dovresti imparare uno per ognuno di questi.

  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. Una lingua per piegare la mente - probabilmente Haskell / Clojure / Scala / F #
  4. Una lingua per motivi specifici del dominio - probabile JavaScript / obiettivo C
  5. Una lingua per sporcarsi le mani - probabilmente C / Assemblea
risposta data 28.10.2010 - 14:53
fonte
53

Non si tratta di quante lingue si impara. Si tratta di imparare 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à.

    
risposta data 28.10.2010 - 11:30
fonte
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 l'applicazione mobile

4) C per la quantità enorme di codice legacy

5) Alcune lingue obsolete che conoscevo quando ero giovane (Basic, Pascal, Clipper, ecc.)

Direi che è necessaria almeno una lingua principale e una di scripting. Conoscendo C # direi che devi imparare Python o Perl o Ruby dopo. (Vorrei andare con Python ma è solo una questione di preferenza).

    
risposta data 28.10.2010 - 11:24
fonte
8

È bello imparare un nuovo linguaggio di programmazione ogni anno. Ma piuttosto che imparare qualcosa di simile a ciò che già sai, ti consiglierò di imparare qualcosa di radicalmente diverso come Scala o F #. Ti mostrerà nuovi modi di fare le cose e arricchirà le tue capacità di programmazione.

    
risposta data 28.10.2010 - 11:18
fonte
8

Dovresti concentrarti sulle lingue che ti servono e utilizzarle per quello che stai facendo . Imparare davvero una lingua deriva dalla pratica, quindi ottieni il beneficio di quella lingua quando la pratichi. Se hai intenzione di apprendere una nuova lingua nel tuo tempo libero, esegui l'operazione in compiti di complessità crescente, in modo che tu riesca davvero a gestirla.

    
risposta data 28.10.2010 - 14:33
fonte
7

concentrarsi su nessuno. concentrarsi sull'apprendimento e la scrittura di codice pulito; chiaro, espressivo, semplice e, soprattutto, non duplicato.

vai per i principi di quel tipo di programmazione, i concetti di base (ad esempio, incapsulamento per OOP, che cosa significa e cosa implica) e apprendi alcuni principi

questa roba renderà più facile il tuo lavoro. questo renderà anche più facile per le persone che lavorano con te o dopo di te.

ya, anche tu devi conoscere bene la sintassi. ma non è qualcosa che ti mette a fuoco per lungo tempo

e ya, devi capire molto bene anche le tecnologie che usi. ma quelli possono essere classificati in base al livello di complessità richiesto dalla tua attività.

gli ultimi due non sono di interesse principale, ma di qualche attenzione

    
risposta data 28.10.2010 - 11:42
fonte
6

Un programmatore deve concentrare su programmazione non su una lingua / s spesificosa.

    
risposta data 28.10.2010 - 16:47
fonte
6

Tanti quanti ne servono per fare il tuo lavoro.

Ma C # e Java sono vicini come inglese britannico e inglese americano. Potresti imparare qualcosa nuovo andando per finlandese o Navajo.

    
risposta data 28.10.2010 - 16:49
fonte
5

Non penso che tu possa necessariamente padroneggiare una lingua senza avere una comprensione sufficiente di altre lingue per vedere quella lingua "dall'esterno", per così dire. Ogni lingua diversa porta qualcos'altro al tavolo e i concetti che portano sono cose che puoi riportare alle principali lingue con cui lavori.

Quindi il tempo speso ad imparare ad usare altre lingue non è mai sprecato anche se non hai intenzione di usarli commercialmente.

Il vecchio adagio è imparare una lingua ogni anno e direi sicuramente per i primi dieci anni o giù di lì che devi farlo. Forse oltre a questo puoi scegliere se esplorare alcuni di quelli che conosci già in profondità (magari aggiornando le tue conoscenze su quelli che hai appreso qualche anno fa) o lavorare con determinate librerie piuttosto che accumulare nuove lingue all'infinito, ma tenendo d'occhio esplorare la pratica della programmazione lavorando con linguaggi diversi è certamente un aiuto per il tuo sviluppo come programmatore.

    
risposta data 28.10.2010 - 11:52
fonte
3

I linguaggi di programmazione popolari come C # e Java ti manterranno sempre più occupati, 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 apprendendo 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 degno di apprendimento 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 questa mentalità.

Ho suonato con Smalltalk e l'ho adorato. Il linguaggio è stato un piacere sviluppare con. Una volta che ti sei abituato agli idiomi, ti hanno aiutato a essere più espressivo con il tuo codice. Non ho perso la tipizzazione statica che hai in Java / C ++ / C #. I generici con i quali viviamo nei nostri linguaggi tipizzati staticamente sono davvero dei costrutti per aggirare le limitazioni imposte dalla tipizzazione statica.

Uso regolarmente Ruby e Ruby on Rails, anche se non per pagare lavori in questo momento. Il principio di progettazione di Ruby era "aumentare la felicità dei programmatori". Devi amare quel sentimento e, per la maggior parte, penso che lo consegni.

Alla fine Java farà il verso di Lisp e Smalltalk, e C # seguirà l'esempio. Resta da vedere quello che sarà lì per prendere il loro posto. Alla fine della giornata, se sai come risolvere i problemi e hai una serie di modi per risolvere il problema, sarai in grado di trovare un lavoro e scegliere la lingua che ti serve.

    
risposta data 28.10.2010 - 18:38
fonte
2

Quando si tratta di mantenere le competenze aggiornate e flessibili, penso che dovresti provare ad apprendere almeno un linguaggio di programmazione completamente nuovo ogni 6 mesi circa. E intendo un linguaggio molto, molto diverso.

Quindi, mentre apprendi più del framework .net mentre usi C # o i framework Java ti aiuta a rimanere agile, l'apprendimento di Haskell, Smalltalk, Scala, Clojure o Ruby espande la tua tecnica e ti aiuta a pensare in modi diversi, alcuni dei quali può tornare utile nella tua lingua principale, e alcuni di questi potrebbero aiutarti a proseguire se Java cessa di essere il re della collina.

Se non hai mai imparato C, anche se la sintassi è stata portata in Java, la mentalità può essere molto diversa. Vale la pena di saperlo, in profondità, e ancora meglio, capire come il codice OO può essere scritto in questo linguaggio che sembra solo procedurale.

Raccomando di leggere il libro di Bruce Tate "Beyond Java", che mette in evidenza fin troppo bene i pericoli dell'essere solo in una lingua, notando l'ascesa e la caduta del C ++. Sebbene il C ++ sia ancora lontano dall'essere morto e abbia ancora decenni a disposizione, sta diventando sempre più limitato da utilizzare solo in situazioni che non possono beneficiare degli aumenti di produttività in altre lingue. Per contrasto, Sinatra, un framework rubino, ti permette di costruire un semplice servizio web in circa 6/7 linee di codice, l'equivalente in C ++ potrebbe essere un ordine di grandezza più grande di questo.

    
risposta data 28.10.2010 - 17:04
fonte
1

Quando non sei un madrelingua inglese, almeno devi concentrarti sul miglioramento del tuo inglese . Lo sto dicendo in base alla mia esperienza. Capire che la 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.

    
risposta data 28.10.2010 - 16:43
fonte
1

Le lingue sono strumenti per portare a termine il lavoro. Alcune lingue sono buone per alcuni tipi di problemi, altre sono generalmente valide per tutti i tipi di problem solving. Raccomando di imparare nuove lingue man mano che escono. Non essere ossessionato da ciò che è di moda questo mese, ma impara cosa possono fare, in cosa sono bravi. Il mio consiglio è 1 nuova lingua all'anno. Vengono fuori più velocemente, 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 un linguaggio ipotetico in modo da non andare a discutere su cosa può fare la tua lingua preferita):

Or how about Perl 4? Between Perl 4 and Perl 5, lexical closures got added to the language. Most Perl hackers would agree that Perl 5 is more powerful than Perl 4. But once you've admitted that, you've admitted that one high level language can be more powerful than another. And it follows inexorably that, except in special cases, you ought to use the most powerful you can get.

This idea is rarely followed to its conclusion, though. After a certain age, programmers rarely switch languages voluntarily. Whatever language people happen to be used to, they tend to consider just good enough.

{snip}

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.

By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. (This is probably what Eric Raymond meant about Lisp making you a better programmer.) You can't trust the opinions of the others, because of the Blub paradox: they're satisfied with whatever language they happen to use, because it dictates the way they think about programs.

link

La maggior parte delle applicazioni che spediamo sono scritte in C # o VB. Quando abbiamo avuto bisogno di aggiungere script a un'applicazione, abbiamo scelto Python (Lua era la scelta runner-up). Stiamo imparando F # perché questo può fare alcune cose nuove e pelose che sono difficili da spiegare e capire se tutti sanno che C # / Java / VB.

    
risposta data 28.10.2010 - 18:25
fonte
0

beh, 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. così si potrebbe anche essere acqulandati con loro, non se ne andranno.

è anche una buona idea conoscere un linguaggio di scripting dattiloscritto ... ad es. uno di perl, python, ruby, lua ecc. Questi sono incredibilmente utili per una vasta gamma di problemi tra cui l'automazione di gran parte del tuo lavoro quotidiano quotidiano

nel bene o nel male probabilmente ti imbatterai anche in c # e / o java ad un certo punto, sono piuttosto pervasivi.

in ogni caso, non limitarti artificialmente. quei programmatori che conosco che evitano esplicitamente di raccogliere strumenti interessanti sembrano avere visioni del mondo chiuse alla clausura e un impatto limitato.

    
risposta data 29.10.2010 - 00:12
fonte
0

Questo potrebbe diventare un altro specialista contro un dibattito generalista in un certo senso. Alcune persone possono trascorrere molto tempo a conoscere una lingua a grandi profondità che funziona bene per loro. Altre persone potrebbero voler conoscere un po 'di un sacco di lingue diverse che funzionano bene per loro. La maggior parte delle persone si trova tra questi due estremi.

Se vuoi suggerimenti di lingue da esplorare qui ci sono alcune idee:

  1. Programmazione funzionale - Haskell o Lisp sarebbero esempi qui e il cambio di paradigma può essere un po 'un punto di svolta in una certa misura.

  2. Database specifico - PL / SQL o T-SQL vengono in mente come qualcosa che può essere utile se vuoi fare più lavoro di back-end con sistemi che richiedono un database per alcune delle sue funzionalità.

  3. Lingue web dell'interfaccia utente - ActionScript o Javascript sarebbero esempi di lingue utilizzate in Rich Internet Applications, sebbene AIR possa far sì che alcune applicazioni desktop utilizzino chiamate Web in alcuni casi come Twhirl utilizzando l'API di Twitter.

Queste sono solo idee e a seconda di dove vuoi essere queste possono essere utili o inutili per te. Buona fortuna con qualsiasi scelta tu faccia.

    
risposta data 29.10.2010 - 00:25
fonte
0

Un programmatore deve conoscere tre lingue: C, inglese e Something Else.

C è un linguaggio di base, è vicino alla macchina e ha regole di sintassi comuni a diversi linguaggi di alto livello. C ti costringe a pensare a cose come le strutture dati in un modo molto diverso rispetto a Java. Inoltre, i vms Python e Ruby sono entrambi costruiti in C, e puoi integrare C in entrambe le lingue quando vuoi aumentare la tua velocità.

L'inglese è il linguaggio comune della programmazione. La maggior parte dei libri, delle relazioni tecniche, dei siti web tecnici e delle carte di giornale escono prima in inglese e talvolta 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 gli studenti che imparano un'altra lingua, naturalmente).

The Something Else dovrebbe essere un linguaggio che non è procedurale, o non è tipizzato staticamente, o è strongmente orientato agli oggetti, o in qualche modo è fondamentalmente diverso da C. Haskell, Scala, Python, Ruby, alcuni Lisp dialetto, qualunque cosa.

Dopodiché, puoi imparare qualsiasi cosa richieda la tua situazione specifica, probabilmente C # o Java.

    
risposta data 05.12.2010 - 22:39
fonte

Leggi altre domande sui tag