컴파일러 구성에 대해 배우고 이해하면 어떤 이점이 있습니까?


10

저는 소프트웨어 엔지니어링 학위 3 년차에 학사입니다. 올해부터 우리 대학은 '컴파일러 구성 (Compiler Constructions)'이라는 새로운 과정을 소개했습니다.이 과정은 컴파일러 구축 이론의 기초를 알려줍니다.

컴파일러 구성에 대해 배우는 소프트웨어 엔지니어에게는 실제로 어떤 이점이 있습니까?


2
컴파일러 과정을 수강하는 것을 후회하지는 않지만 내가 가진 것 중 가장 힘들었습니다. 대부분의 CSci 과정에는 반드시 배워야 할 중요한 이론이나 많은 프로그래밍이있었습니다. 컴파일러는 둘 다 가지고있었습니다.
David Thornley

이것은 너무 이론적으로 보인다 : ocw.mit.edu/courses/electrical-engineering-and-computer-science/…
Job

1
나는 3 학년도 유니에서 그것을했다. -전체 과정에서 두 번째로 좋은 모듈이었습니다 (AI 이후).
TWith2Sugars

@ TWith2Sugars : CC가 최고라고 말하는 이유는 무엇입니까?
Nipuna

1
페니는 수업 시간에 여러 번 나에게 떨어졌습니다. 게다가 매력적인 강사와 괜찮은 동료 학생들이 제가 정말 좋아하는 것을 만들었습니다. 제가 기억하는 순간 중 하나는 처음에 문법 표현을 시작했고 강사가 "두 번째 용어까지 이해가되지 않습니다"라고 말한 것입니다. 두 번째 용어는 나머지 컴파일러를 구축하기 시작했을 때입니다 (1'st 우리는 파서 / 토크 니저를 만들었습니다). 그것은 나를 위해 훌륭한 모듈로 만들었습니다.
TWith2Sugars

답변:


12

컴파일러 구성을 배우는 데는 실질적인 측면이 있습니다. 앱별 명령 언어를 구현하기 위해 파서를 작성해야하는 경우가 여러 차례있었습니다. 유연하고 스크립트 가능한 앱 인터페이스를 만들 수있었습니다.

또한 일부 언어가 원래 디자인 된 방식과 왜 완벽한 언어가 아닌지에 대한 통찰력을 제공합니다.

교과 과정에서 어려운 과정 중 하나 인 힘든 과정입니다. 여름 학기 중에는 실수를했습니다. 여름 학기에는 컴파일러 과정을 수강 하지 마십시오 . 뇌가 폭발 할 것입니다.


5
뇌 폭발로 +1 또한 학기가 끝날 때까지 컴파일러를 작성하지 마십시오! 나는 경험을 통해 알고 있습니다 ...
Jeremy Heiler

20

오 좋은 사람입니다. 후회하지 않을 것입니다.

프로그래밍 언어의 마법, 비교 특성, 고급 코드를 실행 가능한 형식으로 변환하는 것에 대한 통찰력을 얻을 수 있습니다. 많은 언어 기능을 더 잘 이해하고, 가능한 기능과 해당 작업이 수행되는 방식에 대해 더 폭넓게 이해할 수 있습니다. 당신은 다른 눈으로 모든 것을 볼 수 있습니다.

CS의 기본 사항을 배우기 위해 대학에서 시간을 보내는 것이 현명합니다. 구체적인 프로그래밍 언어, 도구 및 라이브러리는 모두왔다 갔다 할지라도 기초는 유지됩니다.

또한 만약 당신이 코스에서 살아남는다면 (진지 할 것입니다) 당신은 프로그래밍을위한 올바른 두뇌를 ​​갖는 것을 축하 할 수 있습니다. 이 이론으로 실제 프로젝트를 수행하고 이력서에 언급하면 ​​좋은 고용주에게 많은 관심을 보일 것입니다.


2
또한 좋은 / 나쁜 언어에 대한 통찰력을 제공합니다.
JBR 윌킨슨

8

명확히!

예를 들어 데이터베이스 클래스처럼 매일 사용하는 주제가 아닐 수도 있습니다. 예를 들어 컴파일러를 이해하면 훌륭한 기초가됩니다.

비슷한 예는 운영 체제 클래스입니다. 프로그래머 일 수도 있고 매일 OS가 어떻게 작동하는지는 생각하지 않지만 그 안에 들어가는 것은 장기적으로 도움이 될 것입니다.


2
저학년 OS 과정은 동시성을 이해하는 첫 번째 장소였습니다. 매우 실용적이었습니다. 저학년 프로그래밍 언어 과정은 파서를 작성할 때 가장 좋았습니다.
justkt

내 3 년 동안 어떤 이유로 OS 모듈을 제거했습니다 :( 정말로하고 싶었습니다.
TWith2Sugars

6

예! 이 과정은 프로그래밍 언어, 데이터 유형 및 함수를 구문 분석하고 특정 CPU의 기계 코드로 변환하는 방법에 대해 더 깊이 이해합니다.

이것은 그 자체로는 매일 실용적이지는 않지만 실제로 물건이 어떻게 작동하는지 알고 있다는 확신을 줄 것 입니다. 이것은 저수준 최적화를 수행하고 정말로 불쾌한 버그를 찾아야 할 때 매우 유용합니다 (여기에서 경험으로 이야기하면).


4

오늘날 도메인 특정 언어 에 대한 많은 화제가 있습니다. 그리고 그들은 모든 버즈의 가치가 있으며, 그들의 진정한 잠재력은 아직 탐구 되지 않았습니다 . 따라서 컴파일러 구축 기술은 미래에 중요 할뿐만 아니라 필수적인 요소가 될 것입니다. 현재 문제가 컴파일러와 전혀 관련이없는 경우에도 개발 시간의 약 60 %를 eDSL 컴파일러 구현에 소비합니다.


eDSL 컴파일러의 의미는 무엇입니까?
Nipuna

1
메타 프로그래밍을 지원하는 언어를 사용함에 따라 구현하는 각 임베디드 도메인 별 언어는 실질적으로 컴파일러 매크로입니다. 일부는 자체 유형 시스템과 수많은 변환 패스로 상당히 복잡하지만 일부는 사소하지만 컴파일러입니다. 실제로 필요한 경우가 아니라면 통역사가 아무 의미가 없습니다.
SK-logic

1

프로그래밍 경력 전체 (예 : 컴파일러, 인터프리터, 파서)에 사용되는 도구와 제한 사항이 무엇인지 이해하는 과정을 수강하는 것이 좋습니다.

또한 실제 세계의 많은 복잡성이 아니라 흥미로운 기초를 드러내는 학문적 맥락에서이를 수행 할 가치가 있습니다. 레거시 언어 및 아키텍처, 즉 많은 복잡성을 처리하는 데 지저분하고 혼란 스럽습니다. 또한 업계에서 하나를 작업하는 것보다 코스를 위해 전체를 빌드하는 데 컴파일러의 모든 측면을 다루게 될 가능성이 높습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.