Vale la pena essere un linguaggio informatico poliglotta? [chiuso]

14

Spesso puoi sentire che i programmatori dovrebbero imparare molte lingue diverse per migliorarsi. Vado ancora a scuola e non ho una grande esperienza di programmazione (un po 'più di un anno). Ma la nobile intenzione di migliorare le abilità di programmazione si è trasformata in una sorta di OCD: sento che non mi calmerò fino a quando non imparerò tutti i linguaggi di programmazione relativamente noti.

E qui ci si pone la domanda: i poliglotti di programmazione saranno effettivamente di aiuto (e non intendo al solito "il programmatore dovrebbe conoscere almeno tutti i paradigmi", intendo davvero tutte le lingue che si sentono di solito di)? Qualcuno ha un'esperienza simile? Aiuta con lavoro / abilità / carriera? Quante volte sei in grado di applicare queste competenze?

    
posta Anton Barkovsky 01.07.2011 - 14:57
fonte

8 risposte

10

"Programmer should know at least all paradigms"

Questo aiuta

I mean really all languages you usually hear about

Questo non aiuta. Sebbene una volta che conosci tutti i paradigmi, puoi imparare una lingua a settimana.

È semplicemente più ottimale trascorrere una settimana a imparare quella lingua quando hai bisogno di quella lingua.

A good programmer is a lazy programmer

Side note:

Imparare le lingue comuni / popolari non è così utile come imparare "tutti i paradigmi". Il primo non copre quest'ultimo. Ad esempio, l'apprendimento del sé è incredibilmente utile per comprendere l'OO prototipo. Non è un linguaggio comune o popolare, ma è molto più utile dell'apprendimento di Python quando conosci già ruby.

Progettazione della lingua:

Conoscere la maggior parte delle lingue è utile se stai scrivendo / progettando una nuova lingua. Quindi c'è un solido caso d'uso per questo, ma è piuttosto di nicchia.

Quello che ti consiglio di fare invece:

Leggi codice Completa 2 almeno 3 volte

Le lingue vanno e vengono a sinistra e a destra in base a "ciò che è popolare". La tecnologia diventa deprecata dopo mesi o anni a seconda di come è la curva tecnologica. (Il web depreca la tecnologia ad un ritmo di 6 mesi).

La tecnica di programmazione e la teoria dell'informatica rimane sempre la stessa.

    
risposta data 01.07.2011 - 15:02
fonte
4

Non si tratta di sapere come codificare in una moltitudine di lingue, è, come dici tu, dei paradigmi. Più opzioni conosci meglio. Conoscere più lingue certamente aiuta, ma se continui ad apprendere gli stessi tipi di lingue, ti imbatti rapidamente in un vicolo cieco.

La chiave è sapere quale linguaggio / sistema è il migliore per implementare una parte del tuo progetto. Anche se hai deciso una lingua principale (come la maggior parte dei progetti), avrai ancora tutti i tipi di strumenti, script, automazione e supporto per la compilazione che devono essere scritti. Di solito una varietà di altre lingue o strumenti, sono migliori di questa rispetto alla tua lingua principale.

Giusto per chiarire, trovo sciocco cercare di imparare tutte le lingue che effettivamente senti: ce ne sono centinaia e spesso sono solo lievi variazioni su altre lingue.

    
risposta data 01.07.2011 - 15:06
fonte
3

IMHO, non è così. Innanzitutto perché non puoi imparare una lingua in meno di un anno. Ci vogliono 2 giorni per essere in grado di scrivere del codice, ma ci vuole molta esperienza per scrivere un codice fluente e ben fatto per la lingua data. Perché GC funziona come fa, dove allocare memoria, quali costrutti sono più veloci, come concatenare correttamente le stringhe, quali sono gli angoli pericolosi della lingua, ecc.

Scrivo che il terribile codice Java / .NET è uno sviluppatore C ++, poiché molti sviluppatori Java scrivono un codice C ++ terribile.

La parte migliore dell'apprendimento di altre lingue è che apprendi nuovi paradigmi e forse hai uno strumento migliore per qualche problema concreto. Dì: hai bisogno di un'applicazione GUI molto rapida e non pubblica, .NET è insostituibile lì.

Tuttavia, l'apprendimento di una lingua in modo da non utilizzare le strutture in .NET o la perdita di ogni oggetto in C ++ richiede molto tempo. Penso che sia meglio dedicarlo all'apprendimento dei principi di progettazione, delle piattaforme e della tua lingua preferita.

Ma questa è solo la mia opinione.

    
risposta data 01.07.2011 - 15:08
fonte
2

Non è pratico conoscerli , ma può essere molto utile sapere su loro. Ciò che intendo è che quando si verifica un nuovo problema, si può dire: "Ricordo vagamente che [l'altra lingua] ha un modo superiore per risolvere problemi come questo. Dovrei cercare in questo modo."

    
risposta data 01.07.2011 - 17:19
fonte
1

Aiuteresti maggiormente la tua carriera sviluppando la conoscenza del dominio e imparando molti linguaggi di programmazione. Per non parlare del fatto che avrete bisogno di imparare strumenti extra per andare con quello come usare un profiler nella vostra lingua, lo stesso per debugger, il miglior framework GUI e come programmare rapidamente con esso, quali librerie di terze parti comuni esistono con compromessi e idiomi specifici della lingua.

È anche più saggio imparare a fare più cose piuttosto che molti modi di fare la stessa cosa.

    
risposta data 01.07.2011 - 16:31
fonte
1

Ho lavorato su diversi sistemi in cui i componenti sono stati scritti in più lingue (il peggiore criminale mi ha richiesto di consegnare il codice scritto in Ada 83, C, Fortran 77, SQL e DCL, mentre il mio ultimo lavoro mi richiedeva di consegnare C ++ e codice Java). Quindi, sì, ci sono casi reali in cui è necessario conoscere più lingue abbastanza bene da essere produttivi in loro (produttivo! = Competente, non sarai un profondo esperto di C ++ e Java e ... a meno che tu non sia un mostro).

Oltre a ciò, il punto di dedicare del tempo ad apprendere più lingue è quello di aiutare a separare concetti dall'implementazione . Per me, OOP non ha avuto senso finché non ho lavorato con più OOPL. Inoltre, ad un certo punto della tua carriera, vorrà cambiare rapidamente marcia e iniziare a lavorare su qualcosa di totalmente nuovo e sconosciuto; Prendersi un po 'di tempo per andare oltre ciò che bisogno di per sapere renderà più semplice la transizione quando accadrà.

    
risposta data 01.07.2011 - 16:31
fonte
1

Penso che faresti meglio a imparare alcune lingue diverse e poi almeno una in profondità, prima di iniziare a imparare ogni lingua possibile. Una volta che hai una quantità minima di ampiezza, la profondità diventa davvero importante per il tuo progresso come sviluppatore. Avrei visto qualcuno con profondità in una o due lingue e un'infarinatura di una coppia in più rispetto a qualcuno con un'infarinatura di tutto. Ottenere profondità è come imparare un altro paradigma, cambierà il modo in cui pensate alla programmazione e aprirà le porte a progetti eccitanti davvero complessi.

    
risposta data 01.07.2011 - 17:42
fonte
0

È come imparare a parlare molte lingue. Imparare tutti fino al punto di essere utili è quasi impossibile. Attenetevi a quelli che probabilmente userete e starete meglio. Potresti imparare abbastanza bene C ++, C # e Java, ma provare a spremere in Perl, Python, VB (non VB.NET), Ruby e JavaScript a livello professionale allo stesso tempo è semplicemente stupido. Non ci sono abbastanza ore al giorno per mantenere le tue abilità in tutte in una volta.

    
risposta data 01.07.2011 - 15:12
fonte

Leggi altre domande sui tag