Doradztwo zawodowe: doktorat z teorii języków programowania [zamknięty]

16

Jestem bardzo zainteresowany teoriami języków programowania i zamierzam zrobić doktorat w tym temacie, ale chcę dowiedzieć się więcej o karierze po ukończeniu studiów. oprócz tego, że jestem profesorem, ale także jaki zawód mogę uzyskać?

użytkownik16854
źródło
Co rozumiesz przez „teorie języków programowania”?
Kirk Broadhurst,
4
gałąź informatyki zajmująca się projektowaniem, wdrażaniem, analizą, charakteryzacją i klasyfikacją języków programowania oraz ich indywidualnymi cechami.
user16854
@Kirk: To bardzo aktywna dziedzina z własnymi konferencjami i czasopismami (oprócz wielu publikacji na konferencjach ogólnych). PLDI jest dobrym przykładem. Istnieją nawet osobne rankingi dla szkół CS w PL.
Uri

Odpowiedzi:

17

Jeśli jesteś profesjonalistą w językach programowania i teorii automatów, powinieneś mieć wystarczająco dużo możliwości branżowych jako programista kompilatora lub specjalista od optymalizacji zaplecza.

Ciągle pojawiają się nowe języki, a istniejące języki są ulepszane lub kierowane na nowsze platformy. Na przykład C ++ przechodzi na C ++ 0x, faceci od sprzętu przechodzą z Verilog do SystemVerilog, a ARM jest coraz częściej wykorzystywany w urządzeniach konsumenckich. Wszystkie te stanowią dobre możliwości dla programistów kompilatorów.

Na koniec programiści kompilatorów, którzy mogą korzystać z architektur wielordzeniowych, będą rządzić luką w nadchodzących latach.

Tutaj znajdziesz zadania kompilatora .

Fanatyk 23
źródło
14

Michael Feathers napisał kiedyś, że odkrył, że większość osób zaangażowanych w programowanie należała do różnych dziedzin - od naukowców po inżynierów.

Naukowcy czerpią z wiedzy i zrozumienia, a inżynierowie lubią budować i oglądać, jak działa.

Na skraju inżyniera ludzie ciągle wyrzucają nowy kod lub hacki, aby wszystko działało. Zwykle ignorują duży obraz. Ekstremalni naukowcy stają się architektami-astronautami z głowami w dużych, pochmurnych ramach i nigdy nie dostarczyli działającego kodu przez całe życie. Najlepsi programiści są gdzieś pośrodku.

Kiedyś myślałem, że jestem programistą, ponieważ uwielbiałem czytać o tym i spędziłem nad tym godziny. Kilka prac później zdałem sobie sprawę, że faktycznie mam problem z dostarczeniem, ponieważ zawsze szukam lepszego sposobu lub „właściwej drogi” do zrobienia rzeczy. Okazuje się, że jestem zbyt po stronie naukowca, aby być skutecznym, przynajmniej w „normalnej” pracy programisty.

Tak czy inaczej, myślę, że urodziłeś się z preferencją dla jednego lub drugiego (ostatnio dużo czytałem o typach osobowości, szczególnie Myers-Briggs Type Indicator , i mam przeczucie, że może to być związane z S / N funkcja dla tych, którzy są tym zainteresowani). Próbowałem zmusić się do bycia bardziej praktycznym i bardziej „wykonawcą”, ale po prostu się wypaliłem.

Chodzi mi o pierwotne pytanie: jeśli idziesz ścieżką doktorską, prawdopodobnie bardziej lubisz rzeczy teoretyczne niż „budowanie rzeczy praktycznych”. Nie ma w tym nic złego, ale myślę, że taki wybór kariery często zablokuje cię w karierze naukowej / edukacyjnej. Nie możesz oczekiwać, że będziesz mógł przejść bezpośrednio od doktora do wysoko płatnej pracy konsultanta. Rzeczy, których uczysz się ćwicząc w „prawdziwym świecie”, znacznie różnią się od najlepszych praktyk wyniesionych z książek.

Alternatywą jest oczywiście założenie własnej firmy po doktoracie i opracowanie (lub zatrudnienie kogoś do opracowania) aplikacji opartej na fantastycznych teoriach odkrytych podczas badań.

erikric
źródło
6

Od kilku lat zastanawiam się nad zrobieniem doktoratu (obecnie pracuję nad utworem magisterskim), a najważniejszą rzeczą, którą powiedzieli mi doktoranci ze środowisk akademickich i przemysłowych, jest:

Nie zdobywaj stopnia doktora ze względu na pieniądze lub perspektywy kariery, zdobądź go tylko wtedy, gdy naprawdę lubisz to, co robisz i chcesz spędzić lata na dogłębnym studiowaniu.

Fanantic23 dość dobrze poradził sobie z kwestiami związanymi z karierą zawodową, ale nie ma tylu miejsc pracy dla doktora, więc musisz się upewnić, że chcesz zainwestować czas w naukę czegoś z powodów innych niż pieniądze przed przystąpieniem do programu doktoratu .

rjzii
źródło
2

NIE chodź na doktorat, jeśli liczysz na zdobycie pracy naukowej lub jeśli nie masz nic przeciwko marnowaniu wielu lat, by zostać inżynierem, tak jak wcześniej.

Nie zniechęcając cię, ale ogromna większość ludzi z doktoratami w CS, a konkretnie w takich tematach, jak języki programowania NIE kończą jako profesorowie. Po prostu nie ma wystarczającej liczby prac badawczych do obejrzenia.

Praca naukowa w przemyśle jest jeszcze mniej powszechna i dostępna niż praca naukowa w środowisku akademickim, ponieważ płacą lepiej i nie wymagają nauczania.

Pomyśl o tym w ten sposób: jeśli spojrzysz na liczbę artykułów naukowych PL publikowanych rocznie i założysz jednego doktoranta na artykuł, nie wszyscy z nich będą profesorami.

Zrobiłem doktorat z inżynierii oprogramowania na CMU, gdzie PL jest jedną z najsilniejszych dziedzin (jesteśmy programem 3 najlepszych w PL). Według mojej najlepszej wiedzy, od wszystkich, którzy ukończyli doktorat z PL, tylko dwóch skończyło na stanowiskach akademickich. Wszyscy inni są zatrudnieni jako inżynierowie oprogramowania. Znam taki, który działa na rzecz PL związanych z PL, ale inni są generalistami.

Skontaktuj się ze mną prywatnie, jeśli chcesz, żebym skontaktował się z ludźmi, którzy przeprowadzili badania PL, którzy mogą powiedzieć ci więcej o tym doświadczeniu.

Uri
źródło
1
Spędziłem lata zdobywając doktorat z fizyki i skończyłem na wielu bardzo interesujących pracach inżynieryjnych. Prawdopodobnie ta sama różnorodność prac inżynieryjnych, którą i tak dostałbym, ale to nie znaczy, że została zmarnowana!
Martin Beckett,
Jak mogę się z tobą skontaktować?
tpA
1

Spodziewałbym się, że możesz pracować dla jednego z laboratoriów badawczych, które pracują nad językami programowania, Microsoft i IBM mają je, podobnie jak wiele innych firm. Nie wspominając o żadnym sklepie, który rozwija lub implementuje języki.

Zachary K.
źródło
1

Przed rozpoczęciem doktoratu powinieneś porozmawiać ze swoimi profesorami z Alma Mater.

Zazwyczaj doktorat albo pracuje w laboratorium badawczym, albo zostaje profesorem. Dożywotnie zarobki są zazwyczaj znacznie poniżej stopnia MS.

Teoria programowania w języku programowania prawdopodobnie umieściłaby cię w dziedzinie pisania kompilatorów.

Te rzeczy nie są trudne do znalezienia przez czytanie - wyrażam wątpliwości, czy jesteś gotowy na doktorat, jeśli zadajesz to pytanie.

Paul Nathan
źródło
Ktoś z doktoratem CS zwykle zarabia 10–20 tys. Rocznie więcej niż ktoś z BS / MS. Jest wielu doktorów pracujących jako inżynier oprogramowania w Google, Microsoft, Adobe, Oracle itp. Wyjaśnij swoje fakty i ciesz się mniejszym zyskiem.
stackoverflowuser2010
@stackoverflowuser: Wrong . zarobki w ciągu całego życia różnią się od rocznego wynagrodzenia. Sprawdź to. Doktorat zazwyczaj wydaje się pracować w obszarach badawczych Google, Microsoft i in.
Paul Nathan
1
@ oosterwal: Nie bezpośrednio, nie przy trywialnych wyszukiwaniach. Jest to jednak jedna z rzeczy, które często się rzucają w kręgach akademickich. Zasadniczo to, co robisz, aby obliczyć efekty, to uruchomić „odsetki” składanej pensji z różnych godzin rozpoczęcia i różnych pensji początkowych. Zrobiłem to około 2 lata temu: w zasadzie matematyka sugeruje zdobycie tytułu magistra za 2 lata i przejście do przemysłu. Opóźnienie daty rozpoczęcia o 3-5 (doktoranckie) lata odwraca efekt mieszania. Oczywiście nie bierze to pod uwagę ludzi z najwyższych lotów, ale jeśli ktoś zakłada, że ​​jest przeciętny, lepiej nie doktorować.
Paul Nathan
1
@ oosterwal - Zależy od szkoły, ale przez większość czasu doktorant nie będzie płacił czesnego i otrzyma stypendium od szkoły. Większość obliczeń dotyczących zarobków w ciągu całego życia opiera się na fakcie, że mogą mieć od sześciu do ośmiu lat nauki w szkole, gdzie jako posiadacz dyplomu Bacholors pracowałby i zarabiał pieniądze w tym okresie.
rjzii
2
@ stackoverflowuser2010 Masz rację. Odpuść sobie.
Adam Lear
1

Byłem zainteresowany studiowaniem tej samej kariery / kursu (moja praca dyplomowa jest związana z projektowaniem kompilatorów, a także prowadzę zajęcia na temat „Porównanie języków programowania”, obie te koncepcje odnoszą się do „teorii języków programowania”).

Ale bardziej hobby było karierę „płacenia rachunków”.

Istnieje również problem polegający na tym, że teoria programowania języków ma wiele zastosowań matematycznych, ale trudno ją zastosować w praktyce.

Jeśli masz już ten kurs, jak się zgłosiłeś?

Przykład: stwórz własny kompilator Java, uczyń go szybszym niż oryginał, dodaj kilka rzeczy i sprzedaj go. Przykład: „HotSpot”

Lub coś w rodzaju kompilatora „Java / C # działającego w tosterze” i sprzedaj go ;-)

Nauczanie pokrewnych klas pojęć w Collegue / University, takich jak Automaty, Projektowanie kompilatorów, Porównanie języków programowania i tak dalej.

Możesz również stworzyć swój własny mały start, pełny etat lub wolny / niepełny etat, mając standardowe zadanie programisty, które płaci rachunki (Wypróbowane i nieudane). : -s

Istnieje kilka firm, które mogą produkować oprogramowanie, które faktycznie wymaga tych konkretnych umiejętności.

(Głównie projektowanie języka programowania i pasującego kompilatora dla konkretnej maszyny wirtualnej / fizycznej, własnego parsera XML itp.).

Wygląda jednak na to, że większość z nich woli zatrudnić zwykłego taniego programistę niż programistę o specjalizacji ...

umlcat
źródło
1

Doktorat z CS z naciskiem na teorię języków programowania może dać ci pracę poza środowiskiem akademickim, ale najprawdopodobniej nadal w dziedzinie badań. Microsoft (za pośrednictwem MS Research lub Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle będą potencjalnymi pracodawcami.

Jeśli poszerzysz swoje możliwości pracy poza swoją przyszłą rozprawą, doktorat. grupy zatrudniające również rozważą Cię w związku z dogłębnością studiów.

I to tylko w sektorze komercyjnym. Jeśli spojrzysz na DoE i jego liczne laboratoria (Laurence Livermole, Sandia itp.) Lub DoD lub wykonawców wojskowych, takich jak Raytheon, General Dynamics (mój pracodawca) lub Lockheed Martin, dostępne są stanowiska dla naukowców i badaczy. NSA też chciałby cię zatrudnić.

Możliwości pozaakademickie dla osób posiadających stopień naukowy doktora są mniejsze (o wiele mniejsze) niż te, które wymagają dyplomu licencjata lub stwardnienia rozsianego, ale wciąż są dostatecznie wynagradzane i satysfakcjonujące.

Powodzenia.

luis.espinal
źródło
-2

Wiele dostępnych miejsc pracy:

C # / .NET w Microsoft
Java w Oracle
Perl6 (myślę, że nie dostanie dużo zapłaty)
ActionScript w Adobe

jondinham
źródło