Diventare un programmatore poliglotta [chiuso]

6

Conosco alcuni linguaggi di programmazione. I più commerciabili sono le procedure Java, Javascript e non memorizzate. Conosco anche Python, Actionscript e qualche linguaggio dei dinosauri. Sto avviando un progetto giocattolo con Scala / lift. Mi piace ogni lingua per le sue caratteristiche e i paradigmi che incoraggiano.

Mi interessa il concetto di programmatore poliglotta e diventare uno. Quali sono i passaggi per essere un vero programmatore poliglotta? (I.E. Io non conosco solo lingue diverse, li conosco bene e conosco modelli di progettazione validi per loro.) È qualcosa che può essere reso commercializzabile?

    
posta Joe 07.11.2011 - 20:34
fonte

5 risposte

19

Sono un programmatore molto avanzato in diverse lingue. Non so se questo fa di me un programmatore poliglotta, ma sono almeno sul percorso.

Ecco la cosa che considero importante per ottenere questo qualificatore e alcuni suggerimenti su come ottenerli.

Prima di tutto, devi padroneggiare diversi paradigmi di programmazione:

  • procedurale
  • Orientato agli oggetti
  • Functionnal
  • Basato sugli eventi
  • Metaprogrammazione

Per arrivare a questo punto suggerisco due cose:

  • Prova i linguaggi di programmazione che promuovono i paradigmi.
  • Prova i paradigmi in linguaggi che non li promuovono (ti mostrerà cos'è un determinato paradigma, quali problemi risolve e cosa fa effettivamente il computer quando li usi). I buoni esercizi sono OOP in C (costruisci i vtables manualmente, è quello che fanno gli uomini veri!) O i linguaggi non di tipo in uno strongmente tipizzato (vedi std.variant per un esempio di quello in D).

Quindi dovrai conoscere le buone pratiche e il motivo per cui sono buone pratiche (ricorda, devi conoscere il PERCORSO di una regola, in modo da sapere quando interromperlo).

  • DRY
  • Separazione delle preoccupazioni
  • Naming (in realtà questo è uno dei più importanti perché il codice ti dirà cose buttare nomi - per esempio, se non riesci a trovare un nome breve e preciso per una variabile, allora la variabile non è nella giusta luogo o il suo scopo non è chiaro).
  • Molti altri, tanti in realtà che non posso fare una lista qui, ma penso di aver già dato alcuni dei più importanti.

Per progredire su quel punto, suggerisco libri. Il programmatore pragmatico è buono, anche il codice pulito. Anche il codice completo è eccellente, ma piuttosto difficile da leggere, perché è grande e molto denso nelle informazioni (ma anche questo è il suo punto di forza!).

Hai anche bisogno di fallire male nell'applicare il tuo concetto e finire con un codice che assomiglia alla giungla. Difficile viaggiare, difficile adattarsi, con abitanti ostili. Quest'ultimo punto è la chiave perché ti insegnerà come utilizzare gli strumenti per ottenere il codice di qualità. Qual è il problema se sai qual è la qualità ma non puoi padroneggiare gli strumenti per crearla o viceversa?

Se controlli il punto dato, puoi considerarti un programmatore poliglotta IMO. A proposito, questo non è tutto ciò che serve per essere il miglior programmatore. Informatica, conoscenza delle tecnologie attuali, gestione di te stesso (a volte di altri: D), comprensione del requisito e molti altri sono richiesti.

Come ultimo consiglio, ti suggerisco di farti coinvolgere in una lingua recente in fase di sviluppo attivo. Questo ti insegnerà come viene creata la lingua e perché. Questo ti insegnerà la limitazione delle lingue attuali, le difficoltà che affronti per ottenere un'alternativa migliore (se fosse facile, mi sarei trovato in un primo posto!). Il mio è D. È anche un linguaggio multiparadigm, quindi è un buon candidato. Scegli il tuo!

Buona fortuna. Questo richiede lavoro, ma ne vale la pena!

    
risposta data 07.11.2011 - 21:47
fonte
6

La cosa più importante che vorrei dire è non pensare in termini di linguaggi di programmazione, ma in concetti di programmazione. OOP è ancora OOP in Java, C #, C ++ e Python. Ogni lingua ha le proprie stranezze con il modo in cui la gestisce, ma i concetti di OOP sono gli stessi indipendentemente dalla lingua in cui lo stai scrivendo.

    
risposta data 07.11.2011 - 20:46
fonte
3

Se vuoi veramente mettere a frutto le tue diverse conoscenze linguistiche di programmazione, considera l'adozione della programmazione orientata alla lingua modello. In questo modo inventerai e implementerai di routine nuove lingue e conoscere il maggior numero possibile di concetti linguistici è estremamente vantaggioso lì.

    
risposta data 07.11.2011 - 21:08
fonte
2

Anche i programmatori poliglotta più versatili hanno linguaggi forti e deboli; il punto di essere poliglotta, IMO, non è tanto avere una conoscenza approfondita di molti linguaggi particolari, ma piuttosto essere in grado di alternare linguaggi e paradigmi a proprio agio, e di essere pronti a coglierne di nuovi. Non credo che essere un guru in 12 lingue radicalmente diverse sia un obiettivo realistico, ma essere fluente in quattro o sei lingue (incluse le principali librerie con cui vengono, e le abitudini e le culture delle rispettive comunità), oltre a conoscenze di base in altre sei o dieci lingue sono certamente fattibili.

Per quanto riguarda la commerciabilità; c'è sicuramente un potenziale per un programmatore flessibile, specialmente nei negozi più piccoli, dove poter assegnare un programmatore a qualsiasi progetto è più importante che avere un gruppo di specialisti che non funzionerà al di fuori della propria area di competenza. La maggior parte delle aziende si concentra su un unico stack tecnologico (ad esempio .NET, Java, LAMPP), ma ce ne sono sicuramente altre che utilizzano piattaforme diverse per progetto.

    
risposta data 07.11.2011 - 21:08
fonte
1

NON mi considero un programmatore poliglotta, ma le poche lingue che conosco si estendono su stili di codifica molto diversi. Vorrei suggerire quanto segue per iniziare:

  1. Scopri come programmare bene in molte lingue. Duh.
  2. Siate consapevoli dei vantaggi e degli svantaggi dei fondamentali del linguaggio. Alcune lingue sono per natura orientate agli oggetti, alcune orientate alle stringhe e alcune orientate ai dati. Essere in grado di valutare in modo appropriato quando un determinato stile deve essere utilizzato.
  3. Avere familiarità con molti stili di codifica diversi. Poiché molte lingue hanno le loro idiosincrasie, avere familiarità con queste; renderà il tuo codice molto più leggibile agli sviluppatori di quel linguaggio.
risposta data 07.11.2011 - 20:56
fonte