In quanti linguaggi di programmazione ci si aspetta che un programmatore sia un esperto? [chiuso]


21

La maggior parte dei programmatori è specializzata in un singolo stack, lasciando altre cose o sono esperti in più lingue contemporaneamente? Se è più di uno, quanti sono standard?

Per esperto, intendo più che semplicemente conoscere la sintassi di una lingua: un esperto conosce abbastanza librerie, strumenti, ambienti e sintassi standard per essere in grado di scrivere programmi non banali senza dover costantemente cercare cose o leggere libri / tutorial.


2
Non credo che ci sia una risposta obiettiva (o anche soggettiva) a questa domanda. Più sei esperto, migliore è per te - più ampia è la prospettiva che hai. Intendevi "In quanti paradigmi del linguaggio di programmazione un programmatore dovrebbe idealmente essere un esperto?"
Talonx,

6
Non sono d'accordo con la tua definizione di esperto. Per me, se devi cercare le funzioni di libreria è molto meno importante che puoi scrivere o meno il codice idiomatico in quella lingua. Se riesci a pensare in una lingua, sei almeno vicino ad essere un esperto.
Chinmay Kanchi,

1
Come pensi in una lingua, se devi cercare la maggior parte delle tue parole in un dizionario per sapere cosa significano?
Blueberryfields,

1
@blueberryfields: la fluidità in una lingua è molto più di un semplice vocabolario e, al di là delle basi, il vocabolario ne è una piccola parte. Non è bene sapere che esiste una funzione se non puoi fare qualcosa di intelligente con quella conoscenza. È molto più semplice cercare la funzione piuttosto che capire come fare qualcosa di intelligente con essa. Direi che conoscere i documenti abbastanza bene da sapere rapidamente dove cercare una determinata funzione se esiste è sufficiente conoscenza della libreria. Dopodiché, ricorderai esattamente quelli che usi e ricorderai vagamente quelli che non usi.
aaronasterling,

2
@blueberryfields: a seconda della lingua / piattaforma , un po 'di conoscenza può essere una cosa pericolosa . Quello che voglio dire è: se una persona afferma di conoscere a memoria molte funzioni della libreria e non ha bisogno di leggere la documentazione, mi aspetto che quella persona conosca anche tutti i valori di ritorno, le condizioni di eccezione e le insidie ​​/ avvertenze, alla Raymond Chen a memoria ed essere in grado di scrivere un libro e tenere una conferenza a Microsoft / Google ecc. A parte questo, la persona finisce per fare molti piccoli errori divertenti.
rwong

Risposte:


33

Il vantaggio principale di conoscere più lingue non è nel scriverle direttamente. A parità di altre condizioni, preferirei lavorare con un programmatore C # che conosce anche C, Python e Lisp (per esempio) piuttosto che uno che ha mai solo hackerato in C #. Non è che conoscere più lingue sia meglio, è che essere in grado di pensare a problemi a più livelli e da più prospettive è davvero utile.

Un linguaggio di programmazione che non cambia il modo in cui pensi alla programmazione non vale la pena conoscerlo. -Alan Perlis

Non si tratta di spuntare un'altra lingua o di metterlo sul tuo curriculum; devi solo capire i concetti sottostanti abbastanza bene da programmare in esso per ottenere il massimo beneficio. Non lo capirai avendo una conoscenza di base della sintassi.

La risposta più diretta è "dipende".

Nelle aziende più grandi ti aspetti / ti puoi specializzare, ma come ho detto sopra, credo che ci sia ancora vantaggio nel comprendere le cose oltre il tuo unico strumento preferito.

In posti più piccoli, non puoi davvero cavartela. Se non altro, in genere è necessario mantenere l'app oltre a crearla e probabilmente non è possibile utilizzare le stesse lingue per eseguire log / munging dei dati come si fa per creare effettivamente l'app. Immagino che potresti tecnicamente cavartela con la conoscenza di una sola lingua, ma il vantaggio di avere un linguaggio ben funzionante, fortemente tipizzato (o almeno capace di asserire), probabilmente compilato fa il lavoro pesante, e un linguaggio di scripting per la manutenzione / le attività di installazione / scripting sembrano piuttosto grandi. Non vorrei farne a meno, certamente.


3
sì, allarga anche il mio orizzonte - pensare in molte lingue per affrontare un problema
maz3tt

3
+1 a tutti gli Inaimathi. Pensa a un linguaggio di programmazione come uno strumento. Sì, dobbiamo conoscere molto bene il nostro strumento, ma quando sai solo come usare un martello, allora tutto potrebbe sembrare un chiodo
Liviu T.,

14

Hai una domanda molto interessante:

Non penso che nessun programmatore dovrebbe essere un "esperto" in una lingua specifica. La mia convinzione è che come programmatori siamo destinati a essere esperti di programmazione, progettazione di algoritmi, pensiero a passi chiari, ma un linguaggio di programmazione è qualcosa che hai appena imparato.

Un programmatore "buono", intendo dire che gestisce i progetti di sviluppo senza spaventare il classico "Non ho mai lavorato prima", dovrebbe imparare una lingua in meno di 5 giorni lavorativi. Impara le migliori pratiche, strumenti e librerie principalmente da 2 modi, 1: lettura e 2: lavoro. O fai rimbalzare la testa contro il codice o leggi un mucchio di libri.

In pochi anni dopo la premessa di "I bravi programmatori scrivono solo codice" senza codice C # o codice C ++ o codice Java, ti renderai conto che dopo aver imparato a sviluppare programmi, il linguaggio e le tecnologie non sono così importanti. Certo, saprai come muoverti in C # meglio di PHP, ma se hai imparato bene, troverai Python se devi.

Spero che le mie idee piacciano!


+1 "i bravi programmatori scrivono solo il codice ... il linguaggio e le tecnologie non sono così importanti" - è vero, però ci vuole molta esposizione per arrivare a quella conclusione.
Orbling

Grazie e hai capito bene: 11 anni e oltre ... :)
David Conde il

3

Uno, ma ciò non significa che puoi trascurare gli altri. Devi sapere abbastanza per giustificare il motivo per cui non li stai usando o conoscere i tuoi limiti, quindi puoi chiedere aiuto quando appropriato.


3

Penso che probabilmente dipende dalla tua personalità, ci sono persone che si divertono a scavare negli angoli e nelle fessure di un soggetto, e ci sono altri a cui piace avere una visione ampia delle cose. Probabilmente dovrai capire che tipo di personalità sei. Non sto mettendo uno sopra l'altro, ognuno ha i loro usi.

Come primo sarai l'esperto, il guru, lo specialista. Come quest'ultimo sarai di uso più generale e possibile verrà utilizzato in una varietà di situazioni ma possibilmente non approfondirai o approfondirai l'argomento.



2

Uno

Quello di fronte a te.


1
+1 Il numero di lingue di cui devi essere esperto è almeno il numero che devi usare. ;-)
Orbling

1

Come ha detto Joel nel podcast SO, è meglio conoscere molte lingue e sapere come / quando usare la lingua giusta per l'attività. Ci sono cose che puoi fare più velocemente in una lingua che in un'altra. Penso che sarebbe utile conoscere, ad esempio, un linguaggio imperativo e un linguaggio funzionale. Molte volte l'apprendimento di un linguaggio più duro o più esoterico allena il tuo cervello ad essere un programmatore migliore nel complesso.


1

Nessuno come probabilmente ci sono alcuni programmatori che non saranno esperti in nessuna lingua ma godono del diverso ambiente che hanno e useranno varie lingue a seconda delle circostanze poiché alcuni potrebbero conoscere alcune tecnologie lato server come PHP, ASP.Net in C # .Net o VB.Net, o Java, un paio di linguaggi di scripting lato client come JavaScript o Flash, e questo è senza entrare in alcun hardware utilizzato per mettere le cose sul web qui.

Allo stesso tempo, ci possono essere alcuni programmatori che sono esperti in una dozzina di lingue o più in quanto è quello che studiano piuttosto fedelmente la maggior parte del tempo per tenere il passo con così tanto all'interno di ogni lingua.


1

Uno, ma deve essere in grado di leggere programmi del mondo reale non banali che sono scritti in poche altre lingue di volta in volta. In qualche modo, quello in cui il programmatore è un esperto è come la loro madrelingua, ci pensano, ma imparare e parlare altre lingue è molto buono in quanto mostra che il programmatore può apprezzare altri modi di pensare. Se riescono a pensare in più di una lingua fluente come la loro madrelingua, è fantastico.


1

Questa è una buona domanda, ma non credo ci sia uno standard. Normalmente da quello che ho visto le persone sono esperte in un linguaggio di alto livello (C ++, Java, ecc.) In un ambiente (windows / linux, mac, solaris). Conoscono all'incirca qualche altra lingua di alto livello ma non la comprendono appieno. (es. C ++, le persone Java si conoscono approssimativamente). In parole povere intendo che possono confrontare le prestazioni di un compito nella lingua in cui sono esperti e nell'altra lingua. E poi sono moderati in alcuni dei linguaggi di scripting. (es. la gente di Linux conosce bash, la gente di Windows conosce VBA, la gente di web conosce PHP).
Per me ciò che conta è la conoscenza dell'algoritmo di base rispetto alla lingua. Se le tue basi sono buone, ci sono meno possibilità di sbagliare in qualsiasi lingua.
Ma sì, a volte può essere utile sapere quale lingua potrebbe essere migliore per quale compito. ad esempio il seguente codice è molto più veloce in pascal che in C.

strcat (A, "Ciao"); strcat (A, "WOrld"); strcat (A, "Dico ciao!");

Questo perché Pascal salva la lunghezza della stringa nella prima posizione e quindi è facile saltare all'ultima posizione. In C la terminazione della stringa è '\ 0' e quindi dovrai attraversare l'intera stringa per l'operazione strcat.


0

Dipende dall'ambiente in cui stai programmando. In un precedente lavoro, la maggior parte del mio lavoro era in Perl; durante il mio periodo lì sono diventato abbastanza abile. Ora lavoro in un posto che ha programmi legacy in tre lingue che conosco a malapena la sintassi; Mi aspetto di mantenerli in aggiunta al mio lavoro su nuovi progetti. Ora sono meno un padrone di qualsiasi lingua, ma penso di aver avuto un'idea migliore per la programmazione . Ho imparato a pensare in modo più astratto, vedere prima il quadro generale, quindi cercare la sintassi e le librerie per riempire i dettagli.

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.