Мене дуже цікавлять теорії мов програмування і збираюся застосувати докторську ступінь у цій темі, але хочу знати більше про кар’єру після закінчення аспірантури. окрім того, що я є професором, але і яку професію я можу отримати?
Мене дуже цікавлять теорії мов програмування і збираюся застосувати докторську ступінь у цій темі, але хочу знати більше про кар’єру після закінчення аспірантури. окрім того, що я є професором, але і яку професію я можу отримати?
Відповіді:
Якщо ви професіонал з мов програмування та теорії автоматів, у вас має бути достатньо галузевих можливостей як розробник компілятора або фахівець з оптимізації бекенду.
Нові мови постійно з’являються, а існуючі мови вдосконалюються або націлюються на новіші платформи. Наприклад, C ++ переходить на C ++ 0x, апаратні хлопці переходять від Verilog до SystemVerilog, а ARM все частіше використовується на споживчих пристроях. Все це представляє хороші можливості для розробників-компіляторів.
І останнє, але не менш важливе значення, розробники компіляторів, які можуть використовувати багатоядерні архітектури, керуватимуть новою версією на довгі роки.
Про завдання для компілятора дивіться тут .
Майкл Перо одного разу писав, що виявив, що більшість людей, що займаються програмуванням, належать за шкалою, починаючи від вченого до інженера.
Вчені отримують удари від навчання та розуміння, а інженери люблять будувати речі та спостерігати, як це працює.
На крайньому рівні інженер у вас є люди, які постійно вигадують новий код або хакі, просто щоб виправити справи. Вони схильні ігнорувати велику картину. Крайні вчені, з іншого боку, стають архітекторами-космонавтами з головами у великих, похмурих рамках і ніколи не передавали робочого рядка коду протягом усього свого життя. Кращі програмісти десь посередині.
Раніше я вважав, що я програміст, оскільки любив читати про це і витрачав на це години. Через кілька робочих місць я зрозумів, що насправді виникає проблема з доставкою, оскільки я завжди шукаю кращого способу чи "правильного шляху" для виконання справ. Виявляється, я занадто багато на стороні вченого, щоб бути ефективним, принаймні в "нормальній" роботі розробника.
Так чи інакше, я думаю, що ви народилися з перевагою до того чи іншого (я останнім часом багато читав про типи особистості, особливо про індикатор типу Майєрса-Бріггса , і маю на увазі, що це може бути пов’язано з S / N функція, для тих, хто вас цікавить). Я намагався змусити себе бути більш практичним і більш «виконувати», але я просто вигораю.
Мій погляд на первісне запитання полягає в тому, що якщо ви йдете докторською стежкою, ви, мабуть, більше схильні сподобатися теоретичним речам, ніж "будівельний практичний матеріал". Нічого поганого в цьому немає, але я думаю, що такий вибір кар’єри часто замикає вас у науковій / навчальній кар’єрі. Ви не можете розраховувати, що зможете перейти прямо з доктора наук на високооплачувану роботу консультанта. Те, що ви дізнаєтесь, працюючи в "реальному світі", сильно відрізняється від найкращих практик, виучених із книг.
Альтернативно, звичайно, розпочати власний бізнес після кандидата наук та розробити (або найняти когось для розробки) програми, заснованої на фантастичних теоріях, які ви виявили під час дослідження.
Я вже пару років замислююся над тим, щоб здобути науковий ступінь доктора наук (зараз працюю над дисертацією дисертації), і річ номер один, про яку мені сказали доктори в академічних і промислових галузях:
Не отримуйте доктора наук з-за грошей чи перспектив кар'єри, отримайте її лише тоді, коли вам дуже сподобається те, що ви робите, і хочете витратити роки на глибоке вивчення.
Fanantic23 досить добре висвітлював кар’єрну сторону речей, але там не так багато робочих місць для кандидата наук, тому вам потрібно впевнитись, що ви хочете вкласти час у навчання чомусь з інших причин, ніж гроші, перш ніж потрапляти в докторську програму. .
НЕ звертайтесь до доктора філософії, якщо ви розраховуєте отримати академічну роботу або якщо ви не проти витрачати багато років, щоб стати інженером так само, як раніше.
Не перешкоджати вам, але переважна більшість людей, які мають докторантуру в КС, а саме з таких тем, як мови програмування, НЕ закінчуються професорами. Просто немає достатньо дослідницьких завдань, щоб обійти їх.
Дослідницькі робочі місця в галузі навіть менш поширені та доступні, ніж наукові роботи в наукових колах, оскільки вони платять краще і не вимагають викладання.
Подумайте про це так: Якщо ви подивитеся на кількість наукових праць з ПЛ, що публікуються за рік, і припускаєте одного докторанта за кожну роботу, не всі ці люди будуть професорами.
Я зробив докторську ступінь із програмної інженерії в КМУ, де ПЛ - одне з найсильніших напрямків (ми - топ-3 програми з PL). Наскільки мені відомо, з усіх, хто закінчив докторську ступінь в ПЛ, лише двоє потрапили на академічні посади. Усі інші зайняті як інженери програмного забезпечення. Я знаю одну, яка працює на пов'язаних з PL матеріалах, але інші - загальні фахівці.
Зверніться до мене приватно, якщо ви хочете, щоб я зв’язав вас з людьми, які проводили дослідження ПЛ, які можуть розповісти вам більше про досвід.
Ви повинні поговорити зі своїми професорами alma mater, перш ніж приступати до доктора наук.
Зазвичай доктор наук працює або в науково-дослідній лабораторії або стає професором. Заробітки за життя, як правило, значно нижче ступеня MS.
Теорія мов програмування дисків, ймовірно, поставить вас у сферу написання компіляторів.
Крім того, ці речі не важко з’ясувати, прочитавши - я висловлюю сумніви, що ви готові до кандидата наук, якщо ви ставите це запитання.
Мені було цікаво вивчити ту саму кар’єру / курс (моя дипломна робота пов'язана з дизайном компілятора, а також я викладаю клас про "Порівняння мов програмування", обидва поняття стосуються "Теорії мов програмування").
Але це було скоріше хобі - кар'єра "оплата рахунків".
Існує також проблема, що Теорія мов програмування застосовує багато математики, але її важко застосувати, практично.
Якщо ви вже маєте цей курс, як ви подали заявку?
Наприклад, зробіть свій власний компілятор Java, зробіть його швидшим за оригінал, додайте кілька речей та продайте його. Приклад: "HotSpot"
Або щось на кшталт компілятора "Java / C # працює в тостері" і продавати його ;-)
Викладання, пов'язані з викладанням у колегіумах / університетах, наприклад, Автомати, Дизайн компіляторів, Порівняння мов програмування тощо.
Ви також можете створити свій власний невеликий запуск, повний робочий день або безкоштовний / неповний робочий день, маючи стандартну роботу програміста, який оплачує рахунки (пробував і виходив з ладу). : -s
Є кілька компаній, які можуть виробляти програмні продукти, які фактично вимагають конкретних навичок.
(Здебільшого, проектування мови програмування та відповідного компілятора для певної віртуальної / фізичної машини, власного аналізатора XML тощо).
Але, схоже, більшість із них вважають за краще найняти загального дешевого розробника, ніж розробника з певною спеціалізацією ...
Докторський ступінь в галузі CS з фокусом на теорії мов програмування може влаштувати вас на роботу поза науковими колами, але, швидше за все, все ще в царині досліджень. Майкрософт (або через MS Research, або Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle стане можливим роботодавцем.
Якщо ви розширите свої можливості роботи за межами майбутньої дисертації, к.т.н. групи найму також розглядають вас за глибину навчання.
І це лише в комерційному секторі. Якщо ви подивитеся на DoE та його безліч лабораторій (Laurence Livermole, Sandia тощо) або DoD або таких військових підрядників, як Raytheon, General Dynamics (мій роботодавець) або Lockheed Martin, є в наявності позиції для вчених та дослідників. АНБ хотів би також найняти вас.
Неакадемічні можливості для людей, які мають ступінь доктора наук, менші (набагато менше), ніж ті, хто потребує ступінь бакалавра або магістра, але вони все ще вдосталь, гідно оплачуються та приносять користь.
Удачі.
Багато робочих місць:
C # /. NET в Microsoft
Java в Oracle
Perl6 (я не отримаю великої оплати, я думаю)
ActionScript від Adobe