Orientación laboral: Doctorado en teoría de lenguajes de programación [cerrado]

16

Estoy muy interesado en las teorías de los lenguajes de programación y voy a aplicar un doctorado en este tema, pero quiero saber más sobre la carrera después de la educación de posgrado. además de ser profesor, pero ¿qué ocupación puedo obtener?

usuario16854
fuente
¿Qué quieres decir con 'teorías de lenguajes de programación'?
Kirk Broadhurst
44
una rama de la informática que se ocupa del diseño, implementación, análisis, caracterización y clasificación de lenguajes de programación y sus características individuales.
user16854
@Kirk: es un campo muy activo con sus propias conferencias y revistas (además de muchas publicaciones en conferencias generales). PLDI es un buen ejemplo. Incluso hay clasificaciones separadas para las escuelas CS en PL.
Uri

Respuestas:

17

Si es un profesional en lenguajes de programación y teoría de autómatas, debería tener suficientes oportunidades en la industria como desarrollador de compiladores o especialista en optimización de back-end.

Los idiomas más nuevos están apareciendo todo el tiempo, y los idiomas existentes están mejorando o apuntando a plataformas más nuevas. Por ejemplo, C ++ se está moviendo a C ++ 0x, los chicos de hardware se están moviendo de Verilog a SystemVerilog y ARM se usa cada vez más en dispositivos de consumo. Todos estos presentan buenas oportunidades para los desarrolladores de compiladores.

Por último, pero no menos importante, los desarrolladores de compiladores que pueden hacer uso de arquitecturas multinúcleo gobernarán el gallinero en los años venideros.

Para trabajos de compilación, mira aquí .

Fanático23
fuente
14

Michael Feathers escribió una vez que descubrió que la mayoría de las personas involucradas en la programación pertenecían a una escala que iba desde los científicos hasta los ingenieros.

A los científicos les gusta aprender y comprender, mientras que a los ingenieros les gusta construir cosas y ver cómo funcionan.

En el extremo del ingeniero extremo, hay personas que constantemente escupen nuevos códigos o hacks, solo para que las cosas funcionen. Tienden a ignorar el panorama general. Los científicos extremos, por otro lado, se convierten en astronautas arquitectos con la cabeza en los marcos grandes y nublados, y nunca han entregado una línea de código de trabajo durante toda su vida. Los mejores programadores están en algún punto intermedio.

Solía ​​pensar que era un programador, ya que me encantaba leer sobre eso y pasaba horas en eso. Unos trabajos más tarde, me di cuenta de que realmente tenía problemas para entregar, ya que siempre estoy buscando una mejor manera o "la forma correcta" de hacer las cosas. Resulta que soy demasiado científico para ser efectivo, al menos en un trabajo de desarrollador "normal".

De cualquier manera, creo que naciste con una preferencia por uno u otro (he estado leyendo mucho sobre los tipos de personalidad últimamente, especialmente el Indicador de tipo Myers-Briggs , y tengo el presentimiento de que esto podría estar relacionado con el S / N función, para aquellos de ustedes que estén interesados ​​en eso). He tratado de forzarme a ser más práctico y más "hacedor", pero me quemo.

Mi punto hacia la pregunta original es que si sigues el camino del doctorado, probablemente estés más inclinado a que te gusten las cosas teóricas que el material de "cosas prácticas de construcción". No tiene nada de malo, pero creo que una elección de carrera de este tipo a menudo lo encerrará en una carrera científica / educativa. No puede esperar pasar directamente de un doctorado a un trabajo de consultor bien remunerado. Las cosas que aprende trabajando en "el mundo real" difieren bastante de las mejores prácticas aprendidas de los libros.

Por supuesto, una alternativa es comenzar su propio negocio después del doctorado y desarrollar (o contratar a alguien para desarrollar) una aplicación basada en las fantásticas teorías que descubrió mientras investigaba.

erikric
fuente
6

He estado pensando en hacer un doctorado durante un par de años (actualmente trabajando en un título de maestría) y lo más importante que me han dicho los titulares de doctorado en la academia y la industria es lo siguiente:

No obtenga un doctorado por el dinero o las perspectivas de carrera, solo obténgalo si realmente disfruta lo que está haciendo y quiere pasar años estudiándolo en profundidad.

Fanantic23 cubrió bastante bien el lado profesional de las cosas, pero no hay tantos trabajos para un doctorado, por lo que debe asegurarse de que desea invertir el tiempo en aprender algo por razones distintas al dinero antes de ingresar al programa de doctorado. .

rjzii
fuente
2

NO vaya a un doctorado si cuenta con obtener un trabajo académico, o si no le importa perder muchos años solo para terminar siendo ingeniero tal como lo habría hecho antes.

No para desanimarte, pero la gran mayoría de las personas con doctorados en CS, y específicamente en temas como los lenguajes de programación, NO terminan como profesores. Simplemente no hay suficientes trabajos de investigación para todos.

Los trabajos de investigación en la industria son aún menos comunes y disponibles que los trabajos de investigación en la academia, ya que pagan mejor y no requieren enseñanza.

Piénselo de esta manera: si observa el número de artículos científicos PL publicados por año, y asume un estudiante de doctorado por trabajo, no todas estas personas serán profesores.

Hice mi doctorado en Ingeniería de Software en CMU, donde PL es uno de los campos más fuertes (somos un programa de top 3 en PL). Que yo sepa, de todos los que se graduaron con un doctorado en PL, solo dos terminaron en puestos académicos. Todos los demás trabajan como ingenieros de software. Conozco uno que funciona en cosas relacionadas con PL, pero los otros son generalistas.

Contáctame en privado si quieres que te ponga en contacto con personas que investigaron PL y que pueden contarte más sobre la experiencia.

Uri
fuente
1
Pasé años obteniendo un doctorado en física y terminé en una amplia variedad de trabajos de 'ingeniero' muy interesantes. Probablemente la misma variedad de trabajos de ingeniería que habría obtenido de todos modos, ¡pero eso no significa que se haya desperdiciado!
Martin Beckett
¿Cómo puedo contactarte?
tpA
1

Esperaría que pudieras trabajar para uno de los laboratorios de investigación que trabajan en lenguajes de programación, Microsoft e IBM los tienen al igual que otras compañías. Sin mencionar cualquier tienda que desarrolle o implemente idiomas.

Zachary K
fuente
1

Debes hablar con tus profesores de alma mater antes de embarcarte en el doctorado.

Por lo general, un doctorado trabaja en un laboratorio de investigación o se convierte en profesor. Las ganancias de por vida suelen ser considerablemente inferiores a un título de maestría.

Una teoría de los diss del lenguaje de programación probablemente lo pondría en el campo de la compilación de compiladores.

Además, estas cosas no son difíciles de descubrir leyendo: expreso dudas de que esté listo para el doctorado si hace esta pregunta.

Paul Nathan
fuente
Alguien con un doctorado en CS comúnmente gana 10K-20K / año más que alguien con un BS / MS. Hay muchos doctores que trabajan como ingenieros de software en Google, Microsoft, Adobe, Oracle, etc. Aclare sus datos y disfrute de ganar menos.
stackoverflowuser2010
@stackoverflowuser: Incorrecto . Las ganancias de por vida son diferentes al salario anual. Búscalo. Los doctorados generalmente parecen funcionar en las áreas de laboratorio de investigación de Google, Microsoft et al.
Paul Nathan
1
@oosterwal: no fuera de lugar, no con búsquedas triviales. Sin embargo, es una de las cosas más comunes en los círculos académicos. Esencialmente, lo que debe hacer para calcular los efectos es ejecutar el "interés" salarial compuesto desde diferentes horas de inicio y diferentes salarios iniciales. Lo hice hace unos 2 años: básicamente las matemáticas sugieren obtener una maestría en 2 años y entrar en la industria. Retrasar la fecha de inicio en 3-5 años (PhD) destripa el efecto de capitalización. Por supuesto, esto no tiene en cuenta a las personas de alto nivel, pero si se supone que uno es promedio, resulta mejor no tener un doctorado.
Paul Nathan
1
@oosterwal: depende de la escuela, pero la mayoría de las veces un estudiante de doctorado no pagará la matrícula y recibirá un estipendio de la escuela. La mayoría de los cálculos de ganancias de toda la vida se basan en el hecho de que pueden tener de seis a ocho años más de escuela donde, como titular de un título de Bacholors, estaría trabajando y ganando dinero durante ese período de tiempo.
rjzii
2
@ stackoverflowuser2010 Has hecho tu punto. Déjalo ir.
Adam Lear
1

Estaba interesado en estudiar esa misma carrera / curso (mi tesis de posgrado está relacionada con el diseño del compilador, y también enseño una clase sobre "Comparación de lenguajes de programación", ambos conceptos se relacionan con la "Teoría de lenguajes de programación").

Pero, fue más como un pasatiempo que una carrera de "pagar las cuentas".

También existe el problema de que, la Teoría de Lenguajes de Programación, aplica muchas matemáticas, pero es difícil de aplicar, de manera práctica.

Si ya tienes ese curso, ¿cómo lo aplicaste?

Ejemplo, cree su propio compilador de Java, hágalo más rápido que el original, agregue algunas cosas y véndalo. Ejemplo: "HotSpot"

O, algo así como el compilador "Java / C # que se ejecuta en una tostadora" y lo vende ;-)

Enseñanza de clases de conceptos relacionados en un colegio / universidad, como autómatas, diseño de compiladores, comparación de lenguajes de programación, etc.

También puede crear su propio inicio pequeño, a tiempo completo o gratis / a tiempo parcial, mientras tiene un trabajo de programador estándar, que paga las facturas (Probado y fallado). : -s

Hay varias compañías que pueden producir productos de software que realmente requieren esas habilidades específicas.

(Principalmente, diseñando un lenguaje de programación y el compilador correspondiente, para una máquina virtual / física particular, un analizador XML propio, etc.).

Pero, parece que la mayoría de ellos prefieren contratar a un desarrollador genérico barato, que un desarrollador con cierta especialización ...

umlcat
fuente
1

Un doctorado en CS con un enfoque en la teoría de los lenguajes de programación puede conseguirte un trabajo fuera de la academia, pero lo más probable es que aún esté dentro del ámbito de la investigación. Microsoft (ya sea a través de MS Research o Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle serían posibles empleadores.

Si amplía sus oportunidades de trabajo fuera de su futura disertación, Ph.D. la contratación de grupos también lo tendrá en cuenta para la profundidad de sus estudios.

Y eso es solo en el sector comercial. Si observa el DoE y sus numerosos laboratorios (Laurence Livermole, Sandia, etc.) o el DoD o contratistas militares como Raytheon, General Dynamics (mi empleador) o Lockheed Martin, hay puestos disponibles para científicos e investigadores. La NSA también querría contratarte.

Las oportunidades no académicas para las personas con un doctorado en ciencias son menos (mucho menos) que las que requieren un título de BS o MS, pero siguen siendo abundantes, remuneradas y gratificantes.

Buena suerte.

luis.espinal
fuente
-2

Muchos trabajos disponibles:

C # /. NET en Microsoft
Java en Oracle
Perl6 (creo que no pagará mucho)
ActionScript en Adobe

jondinham
fuente