Công việc biên dịch - Cần bao nhiêu giáo dục [đóng]


15

Tôi đã bị thúc đẩy bởi câu hỏi Trình biên dịch xây dựng như một chủ đề và nghĩ rằng tôi sẽ hỏi câu hỏi này.

Tôi đã nghe từ một số người rằng họ có một "nhóm biên dịch" tốt (đừng hỏi tôi đã nghe nó ở đâu, tôi không thể nhớ được), vì vậy điều đó khiến tôi tự hỏi, làm thế nào một người có được công việc trong một nhóm như vậy ?

Tôi biết có các lớp học trong các chương trình Đại học và như vậy, nhưng đó có phải là thứ mà bằng tốt nghiệp sẽ là tối thiểu (chẳng hạn như bằng Thạc sĩ ít nhất) không?

Tôi sẽ bắt đầu học thạc sĩ về Khoa học máy tính trong hai tháng và trường tôi sắp có hai lớp biên dịch, liệu điều đó có đủ để có một công việc phát triển trình biên dịch hay không cần thêm thời gian để đầu tư vào nó?


2
Việc tham gia vào một dự án trình biên dịch mã nguồn mở (ví dụ, llvm) sẽ là một lợi thế lớn.
SK-logic

Ditta @ SK-Logic Tôi hiện đang viết một trình biên dịch cho trận chung kết IB CS của mình. Lấy kinh nghiệm viết trình biên dịch có lẽ là cách tốt nhất .... như với bất cứ điều gì thực sự.

1
Tôi đã chỉ ra rằng một trong những tên tuổi lớn nhất trong trình biên dịch và thời gian chạy không có bằng cấp. Anders Hejlsberg ... bộ não đằng sau Turbo Pascal, Delphi, C #, TypeScript
Matthew Whited

Câu trả lời:


17

Vâng, phát triển trình biên dịch là cực kỳ khó khăn có nghĩa là nó đòi hỏi rất nhiều kiên nhẫn, niềm đam mê và kiến ​​thức vững chắc. Đừng nhầm lẫn giữa sự kiên nhẫn, niềm đam mê và kiến ​​thức vững chắc với bất kỳ loại bằng cấp nào. Chúng tôi đã thấy một số ứng viên có bằng Thạc sĩ thậm chí không thể nhận ra strlen()trong bốn dòng mã C.

Chắc chắn tham dự các lớp học và có được kiến ​​thức thực tế. Có thể bạn thậm chí không thích phát triển trình biên dịch, nhưng kinh nghiệm bạn có được sẽ giúp bạn có được một số công việc phát triển rất thú vị khác.


Cảm ơn vì sự trả lời. Bạn có thể cho một người nào đó tự học và không có nền tảng CS học thuật không?
Jetti

3
chỉ cần kiểm tra khóa học của MIT OCW
segfault

3
@Jetti: Tôi sẽ trao cơ hội cho bất kỳ ai có đóng góp đáng kể cho trình biên dịch mã nguồn mở trong nhiều năm qua, bất kể nền tảng của họ là gì :)
Matthieu M.

@Jetti: Tôi chắc chắn sẽ một khi họ mang bằng chứng họ có kiến ​​thức thực sự. Ví dụ, nếu họ viết các bài kiểm tra cho trình biên dịch tối ưu hóa trình tạo mã, họ có khả năng có giá trị cao hơn một sinh viên tốt nghiệp đại học trung bình.
sharptooth

Nó thậm chí còn thú vị hơn khi trình biên dịch được viết bằng ngôn ngữ riêng của nó.
ott--

5

Bước đầu tiên là có một nền tảng CS tốt - có khả năng, càng nhiều càng tốt, nhưng ít nhất là đã hoàn thành bằng Cử nhân danh dự. Thực sự có một số biện minh cho điều này, trong đó các trình biên dịch (nói chung, các dịch giả ngôn ngữ) và các kỹ thuật liên quan (lexing, phân tích cú pháp) là những nguyên tắc cơ bản được nghiên cứu kỹ của khoa học máy tính.

Tôi tin rằng sự phát triển trình biên dịch công nghiệp (bao gồm cả nguồn mở) đáng kể tất nhiên sẽ giảm thiểu việc thiếu thông tin học thuật - nhưng phụ thuộc phần lớn vào nền tảng của ứng viên. Lưu ý rằng phát triển trình biên dịch ở đây cũng sẽ bao gồm các thông dịch viên và các công cụ liên quan để phân tích cú pháp.

Một năng lực chung trong công nghệ phần mềm là cần thiết. Kiến thức tên miền về các ứng dụng cần trình biên dịch tốt (ví dụ tính toán khoa học, phát triển trò chơi) hoặc kinh nghiệm lập trình ngôn ngữ lắp ráp ở trên và ngoài nền tảng lập trình chung trong ngôn ngữ cấp cao cũng là một điểm cộng. Kiến thức chuyên môn về ngôn ngữ mà trình biên dịch thực hiện cũng là một điểm cộng.

Tuyên bố miễn trừ trách nhiệm: Tôi là một nhà phát triển trình biên dịch và đã tham gia phỏng vấn các ứng viên.


5

Ngày nay, các công cụ như Flex , YACC và một số công cụ tương tự đã làm cho trình biên dịch xây dựng đơn giản hơn nhiều. Nếu bạn muốn tiếp cận nó như một sở thích vì nó mê hoặc bạn, thì những công cụ này sẽ giúp bạn và bạn sẽ có thể xây dựng một trình biên dịch hoàn chỉnh trong một tháng.

Dragon Book là một trong những cuốn sách yêu thích mọi thời đại cho bất kỳ ai muốn tự học cách xây dựng trình biên dịch. Và khi bạn tiếp tục, bạn tiếp tục dành thời gian đọc mã trình biên dịch mã nguồn mở .


5

Nếu bạn nghiêm túc về nghề nghiệp trong trình biên dịch, tôi tin rằng ít nhất bạn cần giáo dục chính thức về lý thuyết ngôn ngữ, đặc biệt là lý thuyết loại, ngữ nghĩa chính thức và lý thuyết tính toán. Những lĩnh vực này sẽ khó học ngoài môi trường học thuật. Đối với hầu hết các phần, xây dựng trình biên dịch mỗi se là một chủ đề mà một nhà phát triển thông minh có thể tự học những điều cơ bản. Tuy nhiên, nếu bạn muốn làm việc trên các trình biên dịch tiên tiến sử dụng phân tích ngữ nghĩa và công cụ mở rộng để bảo mật và tối ưu hóa, có lẽ bạn sẽ cần ít nhất một luận án thạc sĩ trong lĩnh vực này.


1
Nghe có vẻ giống như vai trò R & D hơn là "vai trò kỹ thuật sản phẩm". Tôi là một kỹ sư sản phẩm về armcc và LLVM (hai trình biên dịch C / C ++ chất lượng sản xuất) và không bao giờ cần bất kỳ chủ đề nào trong số đó, tôi thậm chí không thấy tham khảo về chúng trong 2 năm tôi làm việc trong lĩnh vực này.
dune.rocks
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.