Lợi thế của việc tìm hiểu và hiểu về xây dựng trình biên dịch là gì?


10

Tôi là sinh viên năm thứ 3 chuyên ngành Kỹ sư phần mềm. Từ năm nay, trường đại học của tôi đã giới thiệu một khóa học mới gọi là 'Trình biên dịch cấu trúc', dạy cho bạn những điều cơ bản về lý thuyết xây dựng trình biên dịch.

Điều gì sẽ là lợi thế trong thế giới thực cho một Kỹ sư phần mềm học về xây dựng trình biên dịch?


2
Mặc dù tôi hoàn toàn không hối hận khi tham gia khóa học biên dịch, nhưng đó là khó khăn nhất tôi từng có. Hầu hết các khóa học CSci hoặc có lý thuyết quan trọng phải học, hoặc nhiều chương trình, không phải cả hai. Trình biên dịch đã có cả hai.
David Thornley


1
Tôi đã làm nó tại uni trong năm thứ 3 của tôi quá. - Là mô-đun tốt thứ 2 tôi tham gia trong toàn bộ khóa học (Sau AI).
TWith2Sugars

@ TWith2Sugars: Tại sao bạn lại nói CC là một trong những thứ tốt nhất?
Nipuna

1
đồng xu giảm nhiều lần cho tôi trong lớp - cộng với một giảng viên hấp dẫn và những sinh viên tốt bụng đã biến nó thành thứ gì đó tôi thực sự thích. Một trong những khoảnh khắc tôi nhớ là chúng tôi đã bắt đầu thực hiện các biểu thức ngữ pháp ngay từ đầu và giảng viên nói "Điều này sẽ không có ý nghĩa cho đến học kỳ thứ hai" - Thuật ngữ thứ hai là khi chúng tôi bắt đầu xây dựng phần còn lại của trình biên dịch (1'st thuật ngữ chúng tôi đã xây dựng một trình phân tích cú pháp / mã thông báo). Điều đó đối với tôi làm cho nó một mô-đun tuyệt vời.
TWith2Sugars

Câu trả lời:


12

Có một mặt thực tế để học xây dựng trình biên dịch. Đã có một vài lần tôi cần xây dựng các trình phân tích cú pháp để triển khai một số ngôn ngữ lệnh dành riêng cho ứng dụng. Nó cho phép tôi tạo các giao diện linh hoạt, có thể viết kịch bản cho ứng dụng.

Nó cũng cung cấp cho bạn cái nhìn sâu sắc hơn về lý do tại sao một số ngôn ngữ được thiết kế theo cách của chúng và tại sao không có ngôn ngữ nào là hoàn hảo.

Đó là một khóa học khó khăn, một trong những khóa học khó hơn trong chương trình giảng dạy. Tôi đã phạm sai lầm khi dùng nó trong một phiên mùa hè; không bao giờ tham gia một khóa học biên dịch trong một phiên mùa hè, bộ não của bạn sẽ nổ tung.


5
+1 cho nổ não. Ngoài ra, không bao giờ ngừng viết trình biên dịch của bạn cho đến cuối học kỳ! Tôi biết từ kinh nghiệm ...
Jeremy Heiler

20

Oh đó là một trong những tốt. Mang nó bạn sẽ không hối tiếc.

Bạn có cái nhìn sâu sắc về sự kỳ diệu của ngôn ngữ lập trình, các đặc điểm so sánh của chúng, chuyển đổi mã cấp cao thành dạng thực thi của nó. Bạn sẽ hiểu rõ hơn về nhiều tính năng ngôn ngữ, sẽ có cái nhìn rộng hơn về những gì có thể và cách những điều đó được thực hiện. Bạn sẽ chỉ nhìn thấy tất cả với đôi mắt khác nhau.

Sẽ là khôn ngoan khi dành thời gian ở trường đại học để học những điều cơ bản của CS. Các ngôn ngữ lập trình cụ thể, các công cụ và thư viện tất cả đều đến và đi, nhưng nền tảng vẫn còn.

Ngoài ra nếu bạn sống sót sau khóa học (với điều kiện nó sẽ nghiêm túc) thì bạn có thể tự chúc mừng mình vì có bộ não phù hợp để lập trình. Nhận một số dự án thực tế được thực hiện với lý thuyết này, đề cập đến nó trong sơ yếu lý lịch của bạn và bạn sẽ rất nhiều quan tâm với các nhà tuyển dụng tốt.


2
Thêm vào đó, nó cung cấp cho bạn cái nhìn sâu sắc về ngôn ngữ tốt / xấu, đây là một chủ đề thường xuyên ở đây.
JBRWilkinson

8

Chắc chắn rồi!

Nó có thể không phải là một chủ đề bạn sẽ sử dụng hàng ngày như một lớp cơ sở dữ liệu, việc hiểu các trình biên dịch sẽ cung cấp cho bạn một nền tảng tuyệt vời.

Một ví dụ tương tự sẽ là một lớp Hệ điều hành. Bạn có thể là một lập trình viên và không nghĩ về cách một hệ điều hành hoạt động mỗi ngày, nhưng có nền tảng trong đó sẽ giúp bạn về lâu dài.


2
Khóa học hệ điều hành đại học của tôi là nơi đầu tiên tôi phải thực sự hiểu về sự tương tranh. Nó rất thiết thực. Khóa học ngôn ngữ lập trình đại học của tôi là tốt nhất khi chúng tôi viết trình phân tích cú pháp.
justkt

Vì một số lý do trong năm thứ 3 của tôi, mô-đun đã gỡ bỏ :( Thực sự muốn làm điều đó.
TWith2Sugars

6

Đúng! Khóa học sẽ giúp bạn hiểu sâu hơn nhiều về phân tích ngôn ngữ lập trình, kiểu dữ liệu và chức năng và cách dịch nó thành mã máy cho CPU cụ thể: s.

Điều này, bản thân nó, có thể không được sử dụng nhiều trong thực tế hàng ngày, nhưng nó sẽ giúp bạn tự tin rằng bạn thực sự biết cách thức hoạt động của công cụ . Điều này rất hữu ích (nói với kinh nghiệm ở đây) khi bạn phải thực hiện tối ưu hóa ở mức độ thấp và tìm ra những lỗi thực sự khó chịu, điều mà mọi người khác đều mắc phải.


4

Có rất nhiều tin đồn về Ngôn ngữ cụ thể miền ngày nay. Và họ thực sự có giá trị tất cả các buzz, tiềm năng thực sự của họ vẫn chưa được khám phá . Vì vậy, trình biên dịch kỹ năng xây dựng sẽ trở nên không chỉ quan trọng mà còn cần thiết trong tương lai. Tôi dành khoảng 60% thời gian phát triển của mình để thực hiện các trình biên dịch eDSL, ngay cả khi vấn đề hiện tại không liên quan trực tiếp đến trình biên dịch.


ý nghĩa của trình biên dịch eDSL là gì?
Nipuna

1
Vì tôi đang sử dụng các ngôn ngữ hỗ trợ siêu lập trình, mỗi ngôn ngữ cụ thể của miền được nhúng mà tôi triển khai thực tế là một macro trình biên dịch. Một số khá phức tạp, với hệ thống loại riêng và nhiều bản dịch, một số là tầm thường, nhưng tất cả đều là trình biên dịch. Không có điểm trong phiên dịch trừ khi họ thực sự cần thiết.
SK-logic

1

Thật đáng để tham gia một khóa học để hiểu cách các công cụ bạn sẽ sử dụng cho toàn bộ sự nghiệp lập trình (ví dụ: trình biên dịch, trình thông dịch, trình phân tích cú pháp) được xây dựng và những hạn chế là gì.

Nó cũng đáng để làm điều này trong một bối cảnh học thuật, vì nó phơi bày những nguyên tắc cơ bản thú vị và không có nhiều phức tạp của thế giới thực, vốn lộn xộn và sa lầy trong việc xử lý các ngôn ngữ và kiến ​​trúc cũ, rất phức tạp. Cũng có nhiều khả năng là bạn sẽ làm việc trên tất cả các khía cạnh của trình biên dịch trong việc xây dựng toàn bộ một cho một khóa học, hơn là làm việc trên một trong ngành công nghiệp.

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.