Tư vấn nghề nghiệp: Tiến sĩ lý thuyết về ngôn ngữ lập trình [đóng]


16

Tôi rất quan tâm đến các lý thuyết về ngôn ngữ lập trình và sẽ áp dụng bằng tiến sĩ trong chủ đề này, nhưng tôi muốn biết thêm về nghề nghiệp sau khi tốt nghiệp. ngoài việc là một giáo sư, nhưng tôi có thể có được nghề nghiệp gì?


Bạn có ý nghĩa gì bởi 'các lý thuyết về ngôn ngữ lập trình'?
Kirk Broadhurst

4
một nhánh của khoa học máy tính liên quan đến việc thiết kế, thực hiện, phân tích, mô tả đặc điểm và phân loại ngôn ngữ lập trình và các tính năng riêng lẻ của chúng.
dùng16854

@Kirk: Đó là một lĩnh vực rất tích cực với các hội nghị và tạp chí riêng (ngoài ra còn có rất nhiều ấn phẩm trong các hội nghị chung). PLDI là một ví dụ tốt. Thậm chí có bảng xếp hạng riêng cho các trường CS trong PL.
Uri

Câu trả lời:


17

Nếu bạn là một chuyên gia về ngôn ngữ lập trình và lý thuyết automata, thì bạn nên có đủ cơ hội trong ngành như một nhà phát triển trình biên dịch hoặc chuyên gia tối ưu hóa phụ trợ.

Các ngôn ngữ mới hơn đang xuất hiện mọi lúc và các ngôn ngữ hiện tại đang được cải thiện hoặc nhắm mục tiêu các nền tảng mới hơn. Ví dụ, C ++ đang chuyển sang C ++ 0x, những kẻ phần cứng đang chuyển từ Verilog sang SystemVerilog và ARM ngày càng được sử dụng nhiều hơn trong các thiết bị tiêu dùng. Tất cả những cơ hội tốt hiện nay cho các nhà phát triển trình biên dịch.

Cuối cùng nhưng không kém phần quan trọng, các nhà phát triển trình biên dịch có thể sử dụng các kiến ​​trúc đa lõi sẽ thống trị trong nhiều năm tới.

Đối với công việc biên dịch xem tại đây .


14

Michael Feathers đã từng viết rằng ông thấy rằng hầu hết mọi người tham gia lập trình đều thuộc về quy mô từ nhà khoa học đến kỹ sư.

Các nhà khoa học nhận được những cú đá từ việc học và hiểu, trong khi các kỹ sư thích chế tạo đồ đạc và xem nó hoạt động.

Vào cuối kỹ sư cực đoan, bạn có người liên tục phun ra mã mới, hoặc hack, chỉ để mọi thứ diễn ra. Họ có xu hướng bỏ qua bức tranh lớn. Mặt khác, các nhà khoa học cực đoan, trở thành kiến ​​trúc sư phi hành gia với cái đầu trong khuôn khổ lớn, nhiều mây và chưa bao giờ đưa ra một dòng mã làm việc trong suốt cuộc đời của họ. Các lập trình viên tốt nhất đang ở đâu đó ở giữa.

Tôi đã từng nghĩ rằng tôi là một lập trình viên, vì tôi thích đọc về nó và dành hàng giờ cho nó. Một vài công việc sau đó, tôi nhận ra rằng tôi thực sự có một vấn đề khi giao hàng, vì tôi luôn tìm kiếm một cách tốt hơn hoặc "cách đúng đắn" để làm mọi việc. Hóa ra tôi quá nhiều về phía nhà khoa học để có hiệu quả, ít nhất là trong một công việc phát triển "bình thường".

Dù bằng cách nào, tôi nghĩ rằng bạn được sinh ra với sở thích này hay khác (tôi đã đọc rất nhiều về các loại tính cách gần đây, đặc biệt là Chỉ số Loại Myers-Briggs và có linh cảm rằng điều này có thể liên quan đến S / N chức năng, cho những người bạn quan tâm đến điều đó). Tôi đã cố gắng ép bản thân trở nên thực tế hơn và là một "người làm" hơn, nhưng tôi chỉ bị kiệt sức.

Quan điểm của tôi đối với câu hỏi ban đầu là nếu bạn đi theo con đường tiến sĩ, có lẽ bạn có xu hướng thích những thứ lý thuyết hơn là "công cụ thực hành xây dựng". Không có gì sai với điều đó, nhưng tôi nghĩ rằng một sự lựa chọn nghề nghiệp như vậy thường sẽ khóa bạn trong một sự nghiệp khoa học / giáo dục. Bạn không thể mong đợi có thể đi thẳng từ tiến sĩ đến một công việc tư vấn được trả lương cao. Những điều bạn học được khi làm việc trong "thế giới thực" khác rất nhiều so với những thực tiễn tốt nhất được học từ sách.

Tất nhiên, một sự thay thế là bắt đầu công việc kinh doanh của riêng bạn sau tiến sĩ và phát triển (hoặc thuê ai đó phát triển) một ứng dụng dựa trên những lý thuyết tuyệt vời mà bạn đã khám phá khi thực hiện nghiên cứu.


6

Tôi đã suy nghĩ về việc làm Tiến sĩ trong một vài năm nay (hiện đang làm luận án thạc sĩ) và điều số một mà tôi đã được các tiến sĩ trong học viện và ngành công nghiệp nói là:

Đừng lấy bằng tiến sĩ vì tiền hoặc triển vọng nghề nghiệp, chỉ nhận bằng nếu bạn thực sự thích những gì bạn đang làm và muốn dành nhiều năm nghiên cứu sâu.

Fanantic23 bao quát khía cạnh nghề nghiệp của mọi thứ khá tốt, nhưng không có nhiều công việc ngoài đó cho bằng tiến sĩ nên bạn cần đảm bảo rằng bạn muốn đầu tư thời gian vào việc học một cái gì đó vì lý do khác ngoài tiền trước khi vào chương trình tiến sĩ .


2

KHÔNG đi học tiến sĩ nếu bạn đang tính đến một công việc học tập, hoặc nếu bạn không lãng phí nhiều năm chỉ để kết thúc việc trở thành một kỹ sư như bạn sẽ có trước đó.

Không làm bạn nản lòng, nhưng đại đa số những người có bằng tiến sĩ về CS, và đặc biệt trong các chủ đề như ngôn ngữ lập trình KHÔNG kết thúc với tư cách là giáo sư. Đơn giản là không có đủ công việc nghiên cứu để đi xung quanh.

Các công việc nghiên cứu trong ngành thậm chí còn ít phổ biến và có sẵn hơn các công việc nghiên cứu trong học viện, vì họ trả lương cao hơn và không có yêu cầu giảng dạy.

Hãy suy nghĩ về nó theo cách này: Nếu bạn nhìn vào số lượng bài báo khoa học PL được xuất bản mỗi năm và giả sử một nghiên cứu sinh trên mỗi bài báo, không phải tất cả những người này sẽ là giáo sư.

Tôi đã lấy bằng Tiến sĩ Kỹ thuật phần mềm tại CMU, trong đó PL là một trong những lĩnh vực mạnh nhất (chúng tôi là chương trình top 3 về PL). Theo hiểu biết tốt nhất của tôi, từ tất cả những người tốt nghiệp Tiến sĩ PL, chỉ có hai người kết thúc ở vị trí học tập. Mọi người khác được tuyển dụng làm kỹ sư phần mềm. Tôi biết một cái hoạt động trên các công cụ liên quan đến PL, nhưng những cái khác là tổng quát.

Liên lạc với tôi một cách riêng tư nếu bạn muốn tôi liên lạc với những người đã nghiên cứu PL, những người có thể cho bạn biết thêm về trải nghiệm này.


1
Tôi đã dành nhiều năm để lấy bằng tiến sĩ vật lý và tôi đã kết thúc rất nhiều công việc 'kỹ sư' rất thú vị. Có lẽ cùng một loạt các công việc kỹ thuật tôi sẽ có được nhưng điều đó không có nghĩa là nó bị lãng phí!
Martin Beckett

Tôi có thể liên hệ với bạn bằng cách nào?
tpA

1

Tôi hy vọng rằng bạn có thể làm việc cho một trong những phòng thí nghiệm nghiên cứu về ngôn ngữ lập trình, Microsoft và IBM cũng có họ như một số công ty khác. Không đề cập đến bất kỳ cửa hàng phát triển hoặc thực hiện ngôn ngữ.


1

Bạn nên nói chuyện với các giáo sư trường cũ của bạn trước khi bắt tay vào tiến sĩ.

Thông thường một tiến sĩ hoặc làm việc trong phòng thí nghiệm nghiên cứu hoặc trở thành giáo sư. Thu nhập trọn đời thường đáng kể dưới một mức độ MS.

Một lý thuyết về ngôn ngữ lập trình có thể sẽ đưa bạn vào lĩnh vực viết trình biên dịch.

Ngoài ra, những điều này không khó để tìm ra bằng cách đọc - Tôi bày tỏ nghi ngờ rằng bạn đã sẵn sàng cho Tiến sĩ nếu bạn đang hỏi câu hỏi này.


Người có bằng tiến sĩ CS thường kiếm được 10K-20K / năm so với người có bằng BS / MS. Có rất nhiều tiến sĩ làm kỹ sư phần mềm tại Google, Microsoft, Adobe, Oracle, v.v. Hãy nói thẳng sự thật của bạn và tận hưởng thu nhập ít hơn.
stackoverflowuser2010

@stackoverflowuser: Sai . thu nhập trọn đời khác với tiền lương hàng năm. Tìm kiếm. Tiến sĩ dường như thường làm việc trong các phòng thí nghiệm nghiên cứu của Google, Microsoft et al.
Paul Nathan

1
@oosterwal: Không phải tay, không phải với các tìm kiếm tầm thường. Đó là một trong những điều thường được ném xung quanh trong giới học thuật. Về cơ bản, những gì bạn làm để tính toán các hiệu ứng là chạy "lãi" gộp từ các thời điểm bắt đầu khác nhau và mức lương khởi điểm khác nhau. Tôi đã làm điều đó khoảng 2 năm trước: về cơ bản toán học gợi ý lấy bằng Thạc sĩ trong 2 năm và đi vào ngành công nghiệp. Trì hoãn ngày bắt đầu 3-5 năm (Tiến sĩ) cho thấy hiệu ứng gộp. Tất nhiên điều này không tính đến những người hàng đầu, nhưng nếu một người cho rằng một người là trung bình, thì tốt hơn hết là không làm tiến sĩ.
Paul Nathan

1
@oosterwal - Phụ thuộc vào trường học, nhưng hầu hết thời gian một sinh viên tiến sĩ sẽ không được trả học phí và sẽ nhận được một khoản trợ cấp từ trường. Hầu hết các tính toán kiếm được trọn đời đều dựa trên thực tế rằng họ có thể có sáu đến tám năm học nữa, nơi một người có bằng Cử nhân sẽ làm việc và kiếm tiền trong khung thời gian đó.
rjzii

2
@ stackoverflowuser2010 Bạn đã đưa ra quan điểm của mình. Để nó đi.
Adam Lear

1

Tôi thích nghiên cứu về cùng một nghề nghiệp / khóa học (Luận văn tốt nghiệp của tôi có liên quan đến Trình biên dịch-Thiết kế và tôi cũng dạy một lớp về "So sánh ngôn ngữ lập trình", cả hai khái niệm đều liên quan đến "Lý thuyết ngôn ngữ lập trình").

Nhưng, nó giống như một sở thích mà một nghề nghiệp "thanh toán hóa đơn".

Cũng có một vấn đề là, Lý thuyết ngôn ngữ lập trình, áp dụng rất nhiều toán học, nhưng rất khó để áp dụng nó, một cách thực tế.

Nếu bạn đã có khóa học đó, làm thế nào để bạn áp dụng?

Ví dụ, tạo Trình biên dịch Java của riêng bạn, làm cho nó nhanh hơn bản gốc, thêm một vài thứ và bán nó. Ví dụ: "HotSpot"

Hoặc, một cái gì đó như trình biên dịch "Java / C # đang chạy trong máy nướng bánh mì" và bán nó ;-)

Dạy các lớp khái niệm liên quan trong một trường đại học / đại học, như Automatons, Thiết kế trình biên dịch, So sánh các ngôn ngữ lập trình, v.v.

Bạn cũng có thể tạo cho mình một công ty khởi nghiệp nhỏ, toàn thời gian hoặc miễn phí / bán thời gian, trong khi có một công việc lập trình viên tiêu chuẩn, trả các hóa đơn (Đã thử và thất bại). :-S

Có một số công ty có thể sản xuất các sản phẩm phần mềm thực sự đòi hỏi các kỹ năng cụ thể đó.

(Hầu hết, thiết kế ngôn ngữ lập trình và trình biên dịch phù hợp, cho một máy ảo / vật lý cụ thể, trình phân tích cú pháp XML riêng, v.v.).

Nhưng, có vẻ như hầu hết trong số họ thích thuê một nhà phát triển giá rẻ chung chung, hơn là một nhà phát triển với một số chuyên môn ...


1

Một tiến sĩ về CS tập trung vào lý thuyết về ngôn ngữ lập trình có thể giúp bạn có một công việc bên ngoài học viện, nhưng rất có thể vẫn nằm trong lĩnh vực nghiên cứu. Microsoft (thông qua MS Research hoặc Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle sẽ là những nhà tuyển dụng có thể.

Nếu bạn mở rộng cơ hội việc làm ngoài luận án trong tương lai, Ph.D. các nhóm tuyển dụng cũng sẽ xem xét bạn về độ sâu của nghiên cứu của bạn.

Và đó chỉ là trên lĩnh vực thương mại. Nếu bạn nhìn vào DoE và nhiều phòng thí nghiệm của nó (Laurence Livermole, Sandia, v.v.) hoặc DoD hoặc các nhà thầu quân sự như Raytheon, General Dynamics (chủ nhân của tôi) hoặc Lockheed Martin, có những vị trí dành cho các nhà khoa học và nhà nghiên cứu. NSA cũng muốn thuê bạn.

Cơ hội phi học thuật cho những người có bằng tiến sĩ khoa học ít hơn (rất ít) so với những người yêu cầu bằng BS hoặc MS, nhưng họ vẫn còn rất nhiều, được trả thù lao và bổ ích.

Chúc may mắn.


-2

Rất nhiều công việc có sẵn:

C # /. NET tại Microsoft
Java tại Oracle
Perl6 (tôi nghĩ sẽ không phải trả nhiều tiền)
ActionScript tại Adobe

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.