Consulenza sulla carriera: dottorato di ricerca in teoria dei linguaggi di programmazione [chiuso]


16

Sono molto interessato alle teorie dei linguaggi di programmazione e applicherò un dottorato in questo argomento, ma voglio sapere di più sulla carriera dopo la laurea. oltre ad essere un professore, ma anche quale occupazione posso ottenere?


Cosa intendi con "teorie dei linguaggi di programmazione"?
Kirk Broadhurst,

4
una branca dell'informatica che si occupa di progettazione, implementazione, analisi, caratterizzazione e classificazione dei linguaggi di programmazione e delle loro caratteristiche individuali.
user16854,

@Kirk: è un campo molto attivo con proprie conferenze e riviste (oltre a molte pubblicazioni in conferenze generali). PLDI è un buon esempio. Ci sono persino classifiche separate per le scuole CS in PL.
Uri

Risposte:


17

Se sei un professionista in linguaggi di programmazione e teoria degli automi, allora dovresti avere sufficienti opportunità nel settore come sviluppatore di compilatori o specialista di ottimizzazione del back-end.

Le lingue più recenti stanno arrivando continuamente e le lingue esistenti stanno migliorando o prendendo di mira le piattaforme più recenti. Ad esempio, C ++ si sta spostando su C ++ 0x, i ragazzi dell'hardware si stanno spostando da Verilog a SystemVerilog e ARM è sempre più utilizzato nei dispositivi consumer. Tutte queste buone opportunità per gli sviluppatori di compilatori.

Ultimo ma non meno importante, gli sviluppatori di compilatori che possono utilizzare architetture multi-core avrebbero dominato il posatoio per gli anni a venire.

Per i lavori del compilatore guarda qui .


14

Michael Feathers una volta scrisse di aver scoperto che la maggior parte delle persone coinvolte nella programmazione apparteneva a una scala che va dagli scienziati agli ingegneri.

Gli scienziati ottengono i loro calci dall'apprendimento e dalla comprensione, mentre agli ingegneri piace costruire cose e vederle funzionare.

All'estremo lato ingegnere ci sono persone che spargono costantemente nuovo codice o hack, solo per far andare avanti le cose. Tendono a ignorare il quadro generale. Gli scienziati estremi, d'altra parte, diventano architetti astronauti con la testa nelle grandi strutture nuvolose e non hanno mai consegnato una linea di codice funzionante per tutta la loro vita. I migliori programmatori sono da qualche parte nel mezzo.

Pensavo di essere un programmatore, poiché mi piaceva leggerlo e ci ho passato ore. Alcuni lavori più tardi, mi sono reso conto che in realtà ho un problema con la consegna, poiché cerco sempre un modo migliore, o "il modo giusto" per fare le cose. Risulta che sono troppo dalla parte degli scienziati per essere efficace, almeno in un "normale" lavoro di sviluppo.

Ad ogni modo, penso che tu sia nato con una preferenza per l'uno o l'altro (di recente ho letto molto sui tipi di personalità, in particolare l' indicatore di tipo Myers-Briggs , e ho la sensazione che questo potrebbe essere correlato all'S / N funzione, per quelli di voi che sono interessati a questo). Ho cercato di costringermi ad essere più pratico e più "agile", ma mi sono semplicemente esaurito.

Il mio punto verso la domanda originale è che se percorri il percorso di dottorato, probabilmente sei più incline ad apprezzare le cose teoriche che le cose "costruire cose pratiche". Non c'è niente di sbagliato in questo, ma penso che una tale scelta di carriera spesso ti bloccherà in una carriera scientifica / educativa. Non puoi aspettarti di essere in grado di passare direttamente da un dottorato di ricerca a un lavoro di consulente altamente retribuito. Le cose che impari lavorando nel "mondo reale" differiscono molto dalle migliori pratiche apprese dai libri.

Un'alternativa è ovviamente quella di avviare un'attività in proprio dopo il dottorato di ricerca e sviluppare (o assumere qualcuno per sviluppare) un'applicazione basata sulle fantastiche teorie che hai scoperto durante la ricerca.


6

Sto pensando di fare un dottorato da un paio d'anni (attualmente sto lavorando a un master in tesi di laurea) e la cosa numero uno che mi è stato detto dai dottorandi nel mondo accademico e industriale è la seguente:

Non ottenere un dottorato di ricerca a causa dei soldi o delle prospettive di carriera, ottenerlo solo se ti piace davvero quello che stai facendo e vuoi passare anni a studiarlo in profondità.

Fanantic23 ha affrontato abbastanza bene il lato della carriera delle cose, ma non ci sono molti posti di lavoro là fuori per un dottorato di ricerca, quindi devi assicurarti di voler investire il tempo nell'apprendimento di qualcosa per ragioni diverse dai soldi prima di entrare nel programma di dottorato .


2

NON andare a un dottorato di ricerca se stai contando di ottenere un lavoro accademico o se non ti dispiace perdere molti anni solo per finire per diventare un ingegnere come avresti fatto prima.

Non per scoraggiarti, ma la stragrande maggioranza delle persone con dottorati di ricerca in CS, e in particolare in argomenti come i linguaggi di programmazione NON finiscono come professori. Semplicemente non ci sono abbastanza lavori di ricerca per andare in giro.

I lavori di ricerca nell'industria sono ancora meno comuni e disponibili rispetto ai lavori di ricerca nel mondo accademico, poiché pagano meglio e non hanno alcun obbligo di insegnamento.

Pensaci in questo modo: se osservi il numero di articoli scientifici PL pubblicati ogni anno e presumi uno studente di dottorato per articolo, non tutte queste persone diventeranno professori.

Ho fatto il mio dottorato di ricerca in ingegneria del software presso la CMU, dove PL è uno dei campi più forti (siamo un programma top-3 in PL). Per quanto ne so, da tutti coloro che si sono laureati con un dottorato in PL, solo due sono finiti in posizioni accademiche. Tutti gli altri sono impiegati come ingegneri del software. Ne conosco uno che funziona su argomenti correlati a PL, ma gli altri sono generalisti.

Contattami privatamente se vuoi che ti metta in contatto con persone che hanno fatto ricerche PL che possono dirti di più sull'esperienza.


1
Ho trascorso anni a ottenere un dottorato in fisica e sono finito in una vasta gamma di lavori di "ingegnere" molto interessanti. Probabilmente la stessa varietà di lavori di ingegneria che avrei avuto comunque, ma ciò non significa che sia stato sprecato!
Martin Beckett,

Come posso contattarti?
tpA,

1

Mi aspetto che tu possa lavorare per uno dei laboratori di ricerca che lavorano su linguaggi di programmazione, Microsoft e IBM li hanno come un certo numero di altre società. Per non parlare di qualsiasi negozio che sviluppa o implementa le lingue.


1

Dovresti parlare con i tuoi professori di alma mater prima di intraprendere il dottorato.

In genere un dottorato di ricerca lavora in un laboratorio di ricerca o diventa professore. Gli utili a vita sono in genere considerevolmente inferiori a un grado MS.

Una teoria del linguaggio di programmazione diss probabilmente ti metterebbe nel campo della scrittura di compilatori.

Inoltre, queste cose non sono difficili da scoprire leggendo: esprimo dubbi sul fatto che sei pronto per il dottorato se stai ponendo questa domanda.


Qualcuno con un dottorato di ricerca in CS fa comunemente 10K-20K / anno in più rispetto a qualcuno con un BS / MS. Ci sono molti dottorandi che lavorano come ingegneri del software presso Google, Microsoft, Adobe, Oracle, ecc. Metti in chiaro i tuoi fatti e divertiti a guadagnare di meno.
stackoverflowuser2010,

@stackoverflowuser: sbagliato . i guadagni a vita sono diversi dallo stipendio annuale. Cerca. I dottorati di solito sembrano lavorare nelle aree dei laboratori di ricerca di Google, Microsoft e altri.
Paul Nathan,

1
@oosterwal: non disinvolto, non con ricerche banali. È una delle cose comunemente gettate in giro negli ambienti accademici. In sostanza ciò che fai per calcolare gli effetti è far funzionare lo "interesse" salariale composto da diversi orari di inizio e diversi salari di partenza. L'ho fatto circa 2 anni fa: fondamentalmente la matematica suggerisce di ottenere un Master in 2 anni e entrare nel settore. Ritardare la data di inizio di 3-5 (PhD) anni comporta l'effetto di combinazione. Ovviamente questo non tiene conto delle persone di alto livello, ma se si presume che uno sia nella media, funziona meglio non fare il dottorato.
Paul Nathan,

1
@oosterwal - Dipende dalla scuola, ma il più delle volte uno studente di dottorato non pagherà le tasse scolastiche e riceverà uno stipendio dalla scuola. La maggior parte dei calcoli dei guadagni della vita si basa sul fatto che potrebbero avere da sei a otto anni in più di scuola in cui come titolare di un diploma di laurea sarebbe lavorare e guadagnare denaro in quel lasso di tempo.
rjzii,

2
@ stackoverflowuser2010 Hai fatto il tuo punto. Lasciarlo andare.
Adam Lear

1

Ero interessato a studiare quella stessa carriera / corso (la mia tesi di laurea è relativa al Compiler-Design, e insegno anche una lezione sul "Confronto dei linguaggi di programmazione", entrambi i concetti si riferiscono alla "Teoria dei linguaggi di programmazione").

Ma era più un hobby che una carriera da "pagare le bollette".

C'è anche il problema che, in teoria dei linguaggi di programmazione, si applica molta matematica, ma è difficile applicarla in modo pratico.

Se hai già quel corso, come ti iscrivi?

Esempio, crea il tuo compilatore Java, rendilo più veloce dell'originale, aggiungi alcune cose e vendilo. Esempio: "HotSpot"

Oppure qualcosa come il compilatore "Java / C # in esecuzione in un tostapane" e venderlo ;-)

Insegnare classi di concetti correlati in un Collegio / Università, come Automi, Progettazione di compilatori, Confronto di linguaggi di programmazione e così via.

Puoi anche creare il tuo piccolo avvio, a tempo pieno o libero / part-time, pur avendo un lavoro programmatore standard, che paga le bollette (provato e fallito). :-S

Esistono diverse società che possono produrre prodotti software che richiedono effettivamente competenze specifiche.

(Principalmente, la progettazione di un linguaggio di programmazione e il compilatore corrispondente, per una particolare macchina virtuale / fisica, proprio parser XML, ecc.).

Ma sembra che la maggior parte di loro preferisca assumere uno sviluppatore economico generico, piuttosto che uno sviluppatore con qualche specializzazione ...


1

Un dottorato in CS con focus sulla teoria dei linguaggi di programmazione può farti ottenere un lavoro al di fuori del mondo accademico, ma molto probabilmente ancora nell'ambito della ricerca. Microsoft (tramite MS Research o Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle sarebbero possibili datori di lavoro.

Se espandi le tue opportunità di lavoro al di fuori della tua futura tesi di dottorato, Ph.D. i gruppi di lavoro ti prenderanno in considerazione anche per la profondità dei tuoi studi.

E questo è solo nel settore commerciale. Se osservi il DoE e i suoi numerosi laboratori (Laurence Livermole, Sandia, ecc.) O il DoD o appaltatori militari come Raytheon, General Dynamics (il mio datore di lavoro) o Lockheed Martin, ci sono posizioni disponibili per scienziati e ricercatori. L'NSA vorrebbe assumere anche te.

Le opportunità non accademiche per le persone con un dottorato in scienze sono meno (molto meno) di quelle che richiedono un diploma di laurea specialistica o specialistica, ma sono ancora numerose, decentemente remunerate e gratificanti.

In bocca al lupo.


-2

Molti lavori disponibili:

C # /. NET presso Microsoft
Java presso Oracle
Perl6 (credo che non pagherò molto)
ActionScript presso Adobe

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.