Cosa dovrei fare per essere indipendente dalla lingua?

52

Ormai lavoro con asp.net e C #. Ho anche fatto un buon lavoro in Java. Sto pianificando la mia carriera in un modo che un giorno dovrei essere indipendente dal linguaggio. Quali sono le cose che ho bisogno di imparare?

Innanzitutto i paradigmi OOP come parla del design Class. Ce ne sono altri?

    
posta Gopi 07.09.2010 - 11:54
fonte

4 risposte

67

Per essere indipendente dal linguaggio, devi avere esperienza in tutti gli stili e tipi di lingue più comuni.

Inoltre:

  • Un funzionale lingua (le funzioni sono fondamentali, evitando lo stato e gli effetti collaterali sono gli obiettivi.) - Haskell / OCaml / Lisp / F #)
  • Un linguaggio orientato agli oggetti (Architettura in cui gli oggetti incapsulano i dati correlati ei metodi che agiscono su di essi). Ad esempio - Java / C #)

Alcuni stili di battitura:

Alcuni stili di runtime diversi:

Materiale di livello inferiore:

  • Qualcosa di livello abbastanza basso (Eg - C)
  • Qualche dialetto di assembly (Eg - NASM)

Inoltre, direi che hai bisogno dell'esperienza di qualche programmazione concorrente e qualcosa event driven . Probabilmente dovresti anche assicurarti di sapere qualcosa sui vari domini come programmazione web (client e server), sviluppo client / desktop ricco, giochi. Potresti anche voler conoscere la programmazione incorporata o l'hardware dedicato (come le console di gioco) e lo sviluppo mobile sta diventando un dominio sempre più rilevante.

Altri hanno anche detto che vale la pena provare qualche esperienza su Programmazione generica e Approgrammazione della programmazione .

Quando impari questi paradigmi evita solo di imparare la sintassi e scrivere nel tuo vecchio stile. Ho visto molti sviluppatori di C # scrivere JavaScript come se fosse tipizzato staticamente. Non farlo, prova ad apprendere i paradigmi linguistici e ad abbracciarli.

Se hai fatto tutto questo, le differenze tra le lingue diventeranno ampiamente sintattiche, quindi il passaggio diventerà un semplice esercizio di apprendimento di una nuova sintassi.

Non dimenticare però che la programmazione moderna dipende quasi sempre da un framework, quindi è fondamentale familiarizzare con i framework comuni e popolari per ogni lingua che impari. Conoscere C # è irrilevante senza .net.

    
risposta data 07.09.2010 - 13:19
fonte
4

Non penso che tu possa diventare veramente indipendente dal linguaggio. Trovo che "penso" nella mia lingua corrente (al momento C #).

Tuttavia, detto questo, penso che potresti essere in grado di separare il design dal codice cercando di pensare in pseudo codice piuttosto che in un linguaggio specifico, e in realtà scriverlo in questo formato. Questo potrebbe aiutarti a concentrarti sulle decisioni di progettazione e architettura piuttosto che sull'implementazione nella tua lingua corrente. Lo svantaggio di ciò, come sottolinea Simon, è che il linguaggio e la struttura che usi in definitiva influenzeranno inevitabilmente il design. Quindi, man mano che il tuo design si sviluppa, diventerà sempre più legato alla lingua e al mondo quadro.

    
risposta data 07.09.2010 - 13:19
fonte
3

Leggendo la tua domanda e alcune delle risposte si può avere l'impressione che si equivalga a "agnosticismo linguistico" con "conoscere ogni paradigma sulla terra".

Non sono sicuro che conoscere tutti i paradigmi esistenti o conoscere una vasta gamma di lingue, spanning diversi paradigmi e tipi di linguaggi ti rende "agnostico della lingua".

È come dire che aver praticato tutte le religioni ti rende religiosamente agnostico.

Penso che una persona agonista linguistica riguardo ai linguaggi di programmazione dovrebbe essere qualcuno che non sa come programmare in nessuna lingua o non si cura di quale lingua gli viene chiesto di programmare.

Detto questo, alcune persone dicono che un vero programmatore può programmare in qualsiasi lingua l'accesso alla documentazione di quella lingua.

Se questo è ciò che intendi per "linguaggio agnostico", quasi tutti i programmatori esperti possono programmare in qualsiasi lingua con cui è costretto a lavorare, dando accesso alla documentazione linguistica.

Forse vuoi essere un "politeista della lingua".

Io stesso sono competente in diversi paradigmi linguistici ma preferirei OOP quando si applica. Quindi immagino di non essere agnostico.

Difficilmente troverai qualcuno che non preferisce un certo paradigma o linguaggio data la libertà di scegliere.

    
risposta data 20.11.2012 - 20:03
fonte
0

Non sono solo le lingue, Java ha così tante diverse modalità che potresti passare anni imparando tutto da solo. Potresti imparare:

  • Funzioni J2EE come Messaggistica e Persistenza e i vari server
  • jsp e toolkit orientati ad Apache
  • ant, maven e altri sistemi di compilazione (lingue stesse).
  • L'intero mondo Groovy / Grails
  • tutte le API di apache commons
  • sistemi di test (Mocking, JUnit)
  • Costruttori di GUI come Swing, GWT ...

E un centinaio di cose che mi mancano: JUST in java.

Se passi degli anni a coprire l'ampiezza (imparando tutte le lingue) avrai difficoltà ad acquisire la profondità per lavorare efficacemente in ognuna di esse.

Non sto dicendo che imparare una nuova lingua sia SEMPRE un problema, lo devi fare attivamente! Cerco di scegliere il mio prossimo lavoro basato su ciò che posso imparare (cosa non ho ancora fatto), ma spesso non scelgo un linguaggio casuale e lo imparo più - L'ultima volta che ho provato è stato con Scala e io lasciato un po 'umiliato ...

    
risposta data 20.11.2012 - 18:21
fonte

Leggi altre domande sui tag