Orientação profissional: doutorado em teoria das linguagens de programação [fechado]

16

Estou muito interessado nas teorias das linguagens de programação e vou aplicar um PhD neste tópico, mas quero saber mais sobre a carreira após a pós-graduação. além de professor, mas também qual profissão posso obter?

user16854
fonte
O que você quer dizer com 'teorias de linguagens de programação'?
22411 Kirk Broadhurst
4
um ramo da ciência da computação que lida com o design, implementação, análise, caracterização e classificação de linguagens de programação e seus recursos individuais.
user16854
@ Kirk: É um campo muito ativo, com suas próprias conferências e jornais (além de muitas publicações em conferências gerais). PLDI é um bom exemplo. Existem até classificações separadas para escolas de CS no PL.
Uri

Respostas:

17

Se você é profissional em linguagens de programação e teoria de autômatos, deve ter oportunidades suficientes no setor como desenvolvedor de compiladores ou especialista em otimização de back-end.

Os idiomas mais novos estão surgindo o tempo todo e os idiomas existentes estão melhorando ou direcionando-se a plataformas mais novas. Por exemplo, o C ++ está mudando para o C ++ 0x, o pessoal do hardware está mudando do Verilog para o SystemVerilog e o ARM é cada vez mais usado em dispositivos de consumo. Todos esses apresentam boas oportunidades para desenvolvedores de compiladores.

Por último, mas não menos importante, os desenvolvedores de compiladores que podem fazer uso de arquiteturas com vários núcleos dominariam o cenário nos próximos anos.

Para trabalhos de compilador, veja aqui .

Fanatic23
fonte
14

Michael Feathers escreveu uma vez que descobriu que a maioria das pessoas envolvidas na programação pertencia a uma escala que variava de cientista a engenheiro.

Os cientistas aprendem e aprendem, enquanto os engenheiros gostam de criar coisas e vê-las funcionar.

No extremo engenheiro, você tem pessoas constantemente lançando novos códigos, ou hacks, apenas para fazer as coisas acontecerem. Eles tendem a ignorar o quadro geral. Os cientistas extremos, por outro lado, tornam-se astronautas arquitetos com a cabeça em grandes estruturas nubladas e nunca entregaram uma linha de código de trabalho a vida inteira. Os melhores programadores estão em algum lugar no meio.

Eu pensava que era programador, pois adorava ler sobre isso e passava horas nisso. Alguns trabalhos depois, percebi que, na verdade, tenho um problema na entrega, pois estou sempre procurando uma maneira melhor, ou "a maneira certa" de fazer as coisas. Acontece que estou muito do lado do cientista para ser eficaz, pelo menos em um trabalho de desenvolvedor "normal".

De qualquer forma, acho que você nasceu com uma preferência por um ou outro (tenho lido muito sobre tipos de personalidade ultimamente, especialmente o Indicador de Tipo Myers-Briggs , e tenho um pressentimento de que isso pode estar relacionado ao S / N para aqueles que estão interessados ​​nisso). Eu tentei me forçar a ser mais prático e mais "executor", mas acabei me esgotando.

Meu argumento em relação à pergunta original é que, se você seguir o caminho do doutorado, provavelmente estará mais inclinado a gostar do material teórico do que do material "construção de material prático". Não há nada errado com isso, mas acho que essa escolha de carreira geralmente o trará em uma carreira científica / educacional. Você não pode esperar ser capaz de passar diretamente de um doutorado para um emprego de consultor bem remunerado. As coisas que você aprende trabalhando no "mundo real" diferem bastante das melhores práticas aprendidas nos livros.

Uma alternativa é, é claro, iniciar seu próprio negócio após o doutorado e desenvolver (ou contratar alguém para desenvolver) um aplicativo baseado nas fantásticas teorias que você descobriu ao fazer pesquisas.

erikric
fonte
6

Estou pensando em fazer um doutorado há alguns anos (atualmente trabalhando em uma faixa de tese de mestrado) e a primeira coisa que me foi dito pelos detentores de doutorado na academia e na indústria é o seguinte:

Não faça um doutorado por causa do dinheiro ou das perspectivas de carreira; só o faça se você realmente gosta do que está fazendo e deseja passar anos estudando-o em profundidade.

A Fanantic23 cobriu muito bem o lado da carreira, mas não há tantos empregos disponíveis para um doutorado, então você precisa ter certeza de que deseja investir tempo em aprender algo por outras razões além do dinheiro antes de ingressar no programa de doutorado .

rjzii
fonte
2

NÃO faça doutorado se você está contando com um emprego acadêmico ou se não se importa em desperdiçar muitos anos apenas para acabar sendo engenheiro da mesma maneira que faria antes.

Não para desencorajá-lo, mas a grande maioria das pessoas com doutorado em ciências da computação e especificamente em tópicos como linguagens de programação NÃO acabam como professores. Simplesmente não há trabalhos de pesquisa suficientes para dar a volta.

Os trabalhos de pesquisa na indústria são ainda menos comuns e disponíveis do que os trabalhos de pesquisa na academia, uma vez que pagam melhor e não têm necessidade de ensino.

Pense da seguinte maneira: se você observar o número de artigos científicos publicados em PL por ano e presumir um estudante de doutorado por artigo, nem todas essas pessoas serão professores.

Eu fiz meu doutorado em Engenharia de Software na CMU, onde PL é um dos campos mais fortes (somos um dos três principais programas em PL). Que eu saiba, de todos os que se formaram com doutorado em PL, apenas dois acabaram em cargos acadêmicos. Todos os outros estão empregados como engenheiros de software. Eu conheço um que trabalha com coisas relacionadas ao PL, mas os outros são generalistas.

Entre em contato comigo em particular, se você quiser que eu o coloque em contato com pessoas que fizeram pesquisas sobre PL e que podem lhe contar mais sobre a experiência.

Uri
fonte
1
Passei anos fazendo doutorado em física e acabei em uma ampla variedade de trabalhos de 'engenheiro' muito interessantes. Provavelmente a mesma variedade de trabalhos de engenharia que eu teria conseguido de qualquer maneira, mas isso não significa que foi desperdiçado!
Martin Beckett
Como posso entrar em contato com você?
TPA
1

Eu esperaria que você pudesse trabalhar em um dos laboratórios de pesquisa que trabalham em linguagens de programação, Microsoft e IBM tê-los, assim como várias outras empresas. Sem mencionar qualquer loja que desenvolva ou implemente idiomas.

Zachary K
fonte
1

Você deve conversar com os professores de sua alma mater antes de iniciar o doutorado.

Normalmente, um doutorado trabalha em um laboratório de pesquisa ou se torna professor. Os ganhos ao longo da vida geralmente são consideravelmente inferiores a um diploma de MS.

Uma teoria da linguagem de programação diss provavelmente colocaria você no campo de escrever compiladores.

Além disso, essas coisas não são difíceis de serem descobertas pela leitura. Expresso dúvidas de que você está pronto para o doutorado se estiver fazendo essa pergunta.

Paul Nathan
fonte
Alguém com um PhD em CS normalmente ganha 10K-20K / ano mais do que alguém com um BS / MS. Há muitos doutores trabalhando como engenheiros de software no Google, Microsoft, Adobe, Oracle etc. Entre em contato com seus fatos e aproveite para ganhar menos.
stackoverflowuser2010
@stackoverflowuser: Errado . salário vitalício é diferente do salário anual. Procure. Os PhDs normalmente parecem trabalhar nas áreas de laboratório de pesquisa do Google, Microsoft et al.
Paul Nathan
1
@ oosterwal: Não de imediato, não com pesquisas triviais. É uma das coisas comumente jogadas nos círculos acadêmicos. Basicamente, o que você faz para calcular os efeitos é executar o "juro" do salário composto em diferentes horários de início e diferentes salários. Eu fiz isso cerca de 2 anos atrás: basicamente, a matemática sugere obter um mestrado em 2 anos e entrar na indústria. Atrasar a data de início por 3-5 (PhD) anos anula o efeito de composição. É claro que isso não leva em consideração as pessoas de primeira linha, mas se alguém assume que a média é média, é melhor não fazer doutorado.
Paul Nathan
1
@oosterwal - Depende da escola, mas na maioria das vezes um aluno de doutorado não estará pagando mensalidades e receberá uma bolsa da escola. A maior parte da vida ganha cálculos com base no fato de que eles podem ter mais de seis a oito anos de escola onde, como titular de um diploma de Bacholors, estaria trabalhando e ganhando dinheiro durante esse período.
rjzii
2
@ stackoverflowuser2010 Você fez o seu ponto. Deixe ir.
Adam Lear
1

Eu estava interessado em estudar a mesma carreira / curso (minha tese de graduação é relacionada ao Design de Compiladores e também dou uma aula sobre "Comparação de Linguagens de Programação", ambos os conceitos relacionados à "Teoria das Linguagens de Programação").

Mas, foi mais como um hobby que uma carreira de "pagar as contas".

Há também o problema de que a teoria das linguagens de programação aplica muita matemática, mas é difícil aplicá-la, de maneira prática.

Se você já possui esse curso, como se inscreveu?

Por exemplo, crie seu próprio Java Compiler, torne-o mais rápido que o original, adicione algumas coisas e venda-o. Exemplo: "HotSpot"

Ou algo como o compilador "Java / C # em execução em uma torradeira" e venda ;-)

Ministrar aulas de conceitos relacionados em um colega / universidade, como autômatos, design de compiladores, comparação de linguagens de programação etc.

Você também pode criar sua própria pequena inicialização, em período integral ou em período parcial / livre, enquanto possui um trabalho de programador padrão, que paga as contas (Tentativa e falha). : -s

Existem várias empresas que podem produzir produtos de software que realmente exigem essas habilidades específicas.

(Principalmente, projetar uma linguagem de programação e o compilador correspondente, para uma determinada máquina virtual / física, um analisador XML próprio, etc.).

Mas, parece que a maioria deles prefere contratar um desenvolvedor barato genérico, do que um desenvolvedor com alguma especialização ...

umlcat
fonte
1

Um doutorado em ciências da computação com foco na teoria das linguagens de programação pode conseguir um emprego fora da academia, mas provavelmente ainda dentro do campo da pesquisa. Microsoft (via MS Research ou Microsoft), Google, Amazon, Ericsson, HP, IBM Research e Oracle seriam possíveis empregadores.

Se você expandir suas oportunidades de trabalho fora de sua dissertação futura, Ph.D. os grupos de contratação também considerarão você pela profundidade de seus estudos.

E isso é apenas no setor comercial. Se você observar o DoE e seus muitos laboratórios (Laurence Livermole, Sandia, etc) ou o DoD ou empreiteiros militares como Raytheon, General Dynamics (meu empregador) ou Lockheed Martin, existem posições disponíveis para cientistas e pesquisadores. A NSA também gostaria de contratá-lo.

As oportunidades não acadêmicas para pessoas com doutorado em ciências são menos (muito menos) do que aquelas que exigem um bacharelado ou mestrado, mas ainda são muitas, decentemente remuneradas e recompensadoras.

Boa sorte.

luis.espinal
fonte
-2

Muitos empregos disponíveis:

C # /. NET no Microsoft
Java no Oracle
Perl6 (acho que não vai pagar muito)
ActionScript na Adobe

jondinham
fonte