Conseil de carrière: Doctorat en théorie des langages de programmation [clôturé]


16

Je suis très intéressé par les théories des langages de programmation et vais appliquer un doctorat dans ce sujet, mais je veux en savoir plus sur la carrière après les études supérieures. en plus d'être professeur, mais aussi quelle profession puis-je obtenir?


Qu'entendez-vous par «théories des langages de programmation»?
Kirk Broadhurst

4
une branche de l'informatique qui traite de la conception, de la mise en œuvre, de l'analyse, de la caractérisation et de la classification des langages de programmation et de leurs caractéristiques individuelles.
user16854

@Kirk: C'est un domaine très actif avec ses propres conférences et revues (en plus de nombreuses publications dans des conférences générales). PLDI est un bon exemple. Il existe même des classements distincts pour les écoles CS en PL.
Uri

Réponses:


17

Si vous êtes un professionnel des langages de programmation et de la théorie des automates, vous devriez avoir suffisamment d'opportunités dans l'industrie en tant que développeur de compilateur ou spécialiste de l'optimisation du backend.

De nouvelles langues apparaissent tout le temps, et les langues existantes s'améliorent ou ciblent de nouvelles plates-formes. Par exemple, C ++ passe à C ++ 0x, les gars du matériel passent de Verilog à SystemVerilog et ARM est de plus en plus utilisé dans les appareils grand public. Tous ces éléments présentent de bonnes opportunités pour les développeurs de compilateurs.

Dernier point mais non le moindre, les développeurs de compilateurs qui peuvent utiliser des architectures multicœurs gouverneraient le perchoir pour les années à venir.

Pour les travaux de compilation, regardez ici .


14

Michael Feathers a écrit une fois qu'il avait constaté que la plupart des personnes impliquées dans la programmation appartenaient à une échelle allant du scientifique aux ingénieurs.

Les scientifiques tirent leur épingle du jeu de l'apprentissage et de la compréhension, tandis que les ingénieurs aiment construire des choses et les regarder fonctionner.

Du côté des ingénieurs extrêmes, il y a des gens qui crachent constamment du nouveau code, ou des hacks, juste pour faire avancer les choses. Ils ont tendance à ignorer la grande image. Les scientifiques extrêmes, d'autre part, deviennent des astronautes architectes avec leurs têtes dans les grands cadres nuageux, et n'ont jamais livré une ligne de code de travail toute leur vie. Les meilleurs programmeurs se situent quelque part au milieu.

J'avais l'habitude de penser que j'étais programmeur, car j'adorais lire à ce sujet et j'y passais des heures. Quelques emplois plus tard, j'ai réalisé que j'avais en fait un problème de livraison, car je cherchais toujours une meilleure façon, ou «la bonne façon» de faire les choses. Il s'avère que je suis trop du côté scientifique pour être efficace, au moins dans un travail de développeur "normal".

Quoi qu'il en soit, je pense que vous êtes né avec une préférence pour l'un ou l'autre (j'ai lu beaucoup de choses sur les types de personnalité récemment, en particulier l' indicateur de type Myers-Briggs , et vous avez l'impression que cela pourrait être lié au S / N fonction, pour ceux d'entre vous qui sont intéressés par cela). J'ai essayé de me forcer à être plus pratique et plus «faiseur», mais je me suis juste épuisé.

Mon point vers la question d'origine est que si vous suivez le chemin du doctorat, vous êtes probablement plus enclin à aimer les trucs théoriques que les trucs "construire des trucs pratiques". Rien de mal à cela, mais je pense qu'un tel choix de carrière vous enfermera souvent dans une carrière scientifique / éducative. Vous ne pouvez pas vous attendre à pouvoir passer directement d'un doctorat à un poste de consultant bien rémunéré. Les choses que vous apprenez à travailler dans «le monde réel» diffèrent beaucoup des meilleures pratiques apprises dans les livres.

Une alternative est bien sûr de démarrer votre propre entreprise après le doctorat et de développer (ou d'engager quelqu'un pour développer) une application basée sur les théories fantastiques que vous avez découvertes en faisant des recherches.


6

Je pense à faire un doctorat depuis quelques années maintenant (travaille actuellement sur une maîtrise de thèse) et la première chose que les titulaires de doctorat m'ont dite est la suivante:

N'obtenez pas de doctorat en raison de l'argent ou des perspectives de carrière, n'obtenez-le que si vous aimez vraiment ce que vous faites et que vous souhaitez passer des années à l'étudier en profondeur.

Fanantic23 couvrait assez bien l'aspect carrière, mais il n'y a pas autant d'emplois pour un doctorat, vous devez donc vous assurer de consacrer du temps à apprendre quelque chose pour des raisons autres que l'argent avant d'entrer dans le programme de doctorat .


2

N'allez pas à un doctorat si vous comptez obtenir un emploi universitaire, ou si cela ne vous dérange pas de perdre de nombreuses années juste pour finir comme ingénieur comme vous le feriez auparavant.

Pas pour vous décourager, mais la grande majorité des personnes titulaires d'un doctorat en CS, et en particulier dans des sujets tels que les langages de programmation, ne se retrouvent PAS comme professeurs. Il n'y a tout simplement pas assez d'emplois pour la recherche.

Les emplois de recherche dans l'industrie sont encore moins courants et disponibles que les emplois de recherche dans le monde universitaire, car ils paient mieux et n'ont pas d'exigences pédagogiques.

Pensez-y de cette façon: si vous regardez le nombre d'articles scientifiques PL publiés par an et que vous supposez un doctorant par article, tous ces gens ne seront pas professeurs.

J'ai fait mon doctorat en génie logiciel à la CMU, où PL est l'un des domaines les plus forts (nous sommes un programme top-3 en PL). À ma connaissance, parmi tous ceux qui ont obtenu un doctorat en PL, seuls deux se sont retrouvés dans des postes universitaires. Tout le monde est employé comme ingénieur logiciel. J'en connais un qui fonctionne sur des choses liées au PL, mais les autres sont des généralistes.

Contactez-moi en privé si vous voulez que je vous mette en contact avec des gens qui ont fait des recherches PL et qui peuvent vous en dire plus sur l'expérience.


1
J'ai passé des années à obtenir un doctorat en physique et je me suis retrouvé dans une grande variété d'emplois d'ingénieurs très intéressants. Probablement la même variété d'emplois d'ingénierie que j'aurais eu de toute façon, mais cela ne signifie pas qu'il a été gaspillé!
Martin Beckett

Comment puis-je te contacter?
tpA

1

Je m'attendrais à ce que vous puissiez travailler pour l'un des laboratoires de recherche qui travaillent sur les langages de programmation, Microsoft et IBM les ont comme le font un certain nombre d'autres sociétés. Sans parler de toute boutique qui développe ou implémente des langues.


1

Vous devriez parler à vos professeurs d'alma mater avant de vous lancer dans le doctorat.

Un doctorat travaille généralement dans un laboratoire de recherche ou devient professeur. Les gains à vie sont généralement considérablement inférieurs à un diplôme MS.

Une théorie du diss de langage de programmation vous mettrait probablement dans le domaine de l'écriture de compilateurs.

De plus, ces choses ne sont pas difficiles à découvrir en lisant - je doute que vous soyez prêt pour le doctorat si vous posez cette question.


Quelqu'un avec un CS PhD gagne généralement 10K-20K / an de plus que quelqu'un avec un BS / MS. Il existe de nombreux doctorants travaillant comme ingénieurs logiciels chez Google, Microsoft, Adobe, Oracle, etc. Obtenez des informations claires et profitez de gagner moins.
stackoverflowuser2010

@stackoverflowuser: Mauvais . les gains à vie sont différents du salaire annuel. Cherchez-le. Les docteurs semblent généralement travailler dans les domaines des laboratoires de recherche de Google, Microsoft et al.
Paul Nathan

1
@oosterwal: Pas avec désinvolture, pas avec des recherches triviales. C'est l'une des choses les plus répandues dans les milieux universitaires. Essentiellement, ce que vous faites pour calculer les effets consiste à exécuter les «intérêts» salariaux composés à partir de différentes heures de début et de différents salaires de départ. Je l'ai fait il y a environ 2 ans: en gros, les mathématiques suggèrent d'obtenir une maîtrise en 2 ans et d'entrer dans l'industrie. Retarder la date de début de 3 à 5 (PhD) annule l'effet cumulatif. Bien sûr, cela ne prend pas en compte les personnes de haut vol, mais si l'on suppose que l'on est moyen, il vaut mieux ne pas être docteur.
Paul Nathan

1
@oosterwal - Cela dépend de l'école, mais la plupart du temps, un doctorant ne paiera pas de frais de scolarité et recevra une allocation de l'école. La plupart des calculs de gains à vie sont basés sur le fait qu'ils peuvent avoir six à huit années d'école supplémentaires où, en tant que titulaire d'un diplôme Bacholors, travailleraient et gagneraient de l'argent pendant cette période.
rjzii

2
@ stackoverflowuser2010 Vous avez fait valoir votre point de vue. Laisser aller.
Adam Lear

1

Je m'intéressais à l'étude de cette même carrière / cours (ma thèse de maîtrise est liée à la conception de compilateurs et j'enseigne également une classe sur la "comparaison des langages de programmation", les deux concepts se rapportent à la "théorie des langages de programmation").

Mais, c'était plus comme un passe-temps qu'une carrière de «payer les factures».

Il y a aussi le problème que, la théorie des langages de programmation, applique beaucoup de mathématiques, mais il est difficile de l'appliquer de manière pratique.

Si vous avez déjà ce cours, comment postulez-vous?

Par exemple, créez votre propre compilateur Java, rendez-le plus rapide que l'original, ajoutez quelques éléments et vendez-le. Exemple: "HotSpot"

Ou quelque chose comme le compilateur "Java / C # fonctionnant dans un grille-pain" et le vendre ;-)

Enseigner des classes de concepts connexes dans une université / université, comme les automates, la conception de compilateurs, la comparaison des langages de programmation, etc.

Vous pouvez également créer votre propre petite start-up, à temps plein ou à temps partiel / libre, tout en ayant un travail de programmeur standard, qui paie les factures (essayé et échoué). : -s

Il existe plusieurs sociétés qui peuvent produire des produits logiciels qui nécessitent réellement ces compétences spécifiques.

(Surtout, conception d'un langage de programmation et du compilateur correspondant, pour une machine virtuelle / physique particulière, propre analyseur XML, etc.).

Mais, il semble que la plupart d'entre eux préfèrent embaucher un développeur générique pas cher, plutôt qu'un développeur avec une certaine spécialisation ...


1

Un doctorat en CS avec un accent sur la théorie des langages de programmation peut vous décrocher un emploi en dehors du monde universitaire, mais très probablement toujours dans le domaine de la recherche. Microsoft (via MS Research ou Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle seraient des employeurs possibles.

Si vous élargissez vos opportunités d'emploi en dehors de votre future thèse, Ph.D. les groupes de recrutement vous considéreront également pour la profondeur de vos études.

Et cela ne concerne que le secteur commercial. Si vous regardez le DoE et ses nombreux laboratoires (Laurence Livermole, Sandia, etc.) ou le DoD ou des entrepreneurs militaires comme Raytheon, General Dynamics (mon employeur) ou Lockheed Martin, il y a des postes disponibles pour les scientifiques et les chercheurs. La NSA voudrait également vous embaucher.

Les opportunités non académiques pour les personnes titulaires d'un doctorat en sciences sont moins (beaucoup moins) que celles nécessitant un diplôme BS ou MS, mais elles sont toujours nombreuses, décemment rémunérées et gratifiantes.

Bonne chance.


-2

Beaucoup d'emplois disponibles:

C # /. NET chez Microsoft
Java chez Oracle
Perl6 (ne sera pas beaucoup payé je pense)
ActionScript chez Adobe

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.