학습 경험을위한 새로운 스크립팅 언어 만들기? [닫은]


13

내 개인 학습 경험을위한 스크립팅 언어를 만드는 것이 가치가 있습니까?

내가 묻는 이유는 이미 사용할 수있는 프로그래밍 언어가 너무 많기 때문에 좋은 학습 경험을 제공하는 것 외에는 실제로 사용하지 않을 것입니다. 그러나 스크립팅 언어를 학습 경험으로 만들려고하면 단점이 있습니다. 더 "생산적인"일을하려면 많은 시간과 노력이 필요합니다.

프로그래밍 언어 (의도 된 목적, 구문, 철학, 해석기 등의 초안 작성 포함)를 만드는 것이 시간, 노력 및 학습 경험의 가치가 있습니까? 아니면 더 많은 혜택을 볼 수있는 다른 프로젝트가 있습니까?


3
또 다른 옵션은 기존 언어를 구현하는 것입니다. 나는 1 년 이상 Machete 라는 ECMAScript 방언을 서서히 개발했으며 꽤 많이 배웠습니다.
ChaosPandion

흥미 롭습니다.
Ivan

2
1) 이것을 배우십시오 ... www1.idc.ac.il/tecs 2) 그리고 이것 ... mitpress.mit.edu/sicp
Joe Internet

당신은 또한 프로젝트 V8 기존에 기여 고려할 수, SpiderMonkey를 파이썬
treecoder

3
새로운 프로그래밍 언어를 배우는 가장 좋은 방법은 IMHO를 위해 컴파일러를 구현하는 것입니다. 그렇습니다. 그것은 실제로 유용한 학습 경험입니다.
SK-logic

답변:


15

기술과 포트폴리오 구축

내 생각에 그것은 다음과 같이 매우 좋은 학습 경험이 될 것입니다.

  • 후드 아래보도록 강요 하고
  • 내부적으로 수행되는 방법배우도록 안내합니다 .
  • 다른 구현 을보고 비교 하도록 장려하십시오 .
  • 당신의 유지 algorithmics 기술을 속도까지,
  • 당신이 만드는 코드 (희망 및 문서 ) 중 하나 나쁘지 않다 많이,
  • 온라인에서 공유 할 수있는 중요한 프로젝트와 코드베이스를 제공합니다.
    • 개인 즐거움과 만족 ,
    • 잠재적 인 고용주 에게 기술보여주고
    • 같은 지역에 관심이있는 동료들 과 의사 소통하고 교류하며
    • 잠재적으로 더 많은 것으로 자랄 수 있습니다 ...

그래서 나는 이것을 생산적이고 유용하며 전반적으로 "가치"로 본다.

시작하다

이제 당신은 이것에 소비하는 시간에 따라 다른 접근법을 사용할 수 있습니다 ... :

  • 기간이 제한되어 있다면 다이빙을하고 코드를 작성해야합니다.
  • 더 넓은 기간을 가지고 있다면 실제로 길을 가고 사양, 자습서, 매뉴얼 등을 작성할 수 있습니다 ...

작은 시작

오히려 작은 시작 하는 것이 좋습니다 . 내가 아는 그 누구도 그처럼 멋진 언어를 직접 쓰지 않았습니다. 당신은 걸려 넘어지고 실패하며 실패 합니다. 그런 다음 효과가 있지만 여전히 빨라서 다시 시작합니다. 그리고 새로운 기능을 추가하면 마침내 시원해지고 있지만 갑자기 처음부터 망쳐 놓은 기본 개념이 있다는 것을 깨달았습니다. 그래서 당신은 다시 시작합니다 ...

나에게 매우 교육적인 것 같습니다.

계속해서 링크를 공유하십시오.

"짧음"과 같이 작음

그러나 다시 한 번 작은 시작을 권장합니다 . 사람들이 많은 코드와 시간이 걸릴 것이라고 두려워하지 마십시오. 복잡한 언어를 목표로하지 않는다면 꼭 그런 것은 아닙니다. 앨런 케이 (Alan Kay) 및 기타 제록스 PARC의 엔지니어들은 주장 의 초기 버전 개발 스몰 토크 종이 한 장에 맞는 것을 (읽기 간결성을위한 목적으로, : 번개의 딜러 제록스 PARC을 의 역사에 대한 자세한 내용은 PARC ). 가독성을 희생하지 않는 한, 훌륭하고 교육적이며 충분한 접근 방법으로 보입니다.

"제약 됨"과 같이 작음

고급 유형 시스템, 고차 기능 및 42 가지 패러다임의 혼합을 즉시 지원할 필요는 없습니다. 수학적 표현 언어 일 수 있습니다.

다른 사람의 지식을 재사용하고 엿보기

언어를 처음부터 작성하는 데 사용되는 도구를 살펴볼 수도 있습니다. 모든 것을 직접 구현할 수 있지만, 예를 들어 기존 어휘 분석기와 파서 생성기를 살펴 보는 것도 좋습니다.

그리고 분명히, 당신은 컴파일러 구성 에 대해 전반적 으로 읽고 싶을 것 입니다.


이제 귀하의 질문을 "시간을 가장 생산적으로 사용할 수 있습니까?" 그것은 완전히 다른 문제가됩니다 :)

당신이 다룰 수있는 다른 학습 프로젝트가 많이 있으며, 그것은 나아지지 않더라도 기술을 똑같이 잘 훈련시키고 보여줄 것입니다. 그것은 당신이 목표로하고 싶은 것에 달려 있습니다.


2
"그런데 효과가 있지만 여전히
Ivan

1
@Ivan : 감사합니다 :) 학습 경험의 또 다른 좋은 부분은 내성, 겸손, 인내입니다!
haylem

1
나는 haylem에 동의합니다. 일반 프로그래밍, 언어 작동 방식, 다양한 구현 방법에 대해 배우게 될 가치가 있습니다. 그렇습니다. 아마 당신은 그것을 본 유일한 사람 일 것입니다. 그러나 그것은 당신 자신을 향상시키기 위해 당신의 작은 애완 동물 프로젝트가 될 것입니다.
RJay75

3

계속 말해봐

프로그래밍 언어를 구현하면 광범위한 주제를 다루게되며 일을 처리하는 방식에 대해 많은 것을 배우게됩니다. 당신은 아마 여섯 번 정도의 실패한 시도를 겪을 것이지만, 학습 경험은 매우 중요합니다.


2

(완벽하지만 완전한) 프로그래밍 언어를 설계하고 구현하는 것은 실제로 상위 부문 CS 클래스 중 하나에서 (필수?) 연습 중 하나였습니다 (컴파일러 클래스 또는 프로그래밍 언어 설문 중 어느 것을 잊어 버렸습니다 ...)

그래서 적어도 한 명의 CS 교수가 그렇게 생각했습니다.

당신은 다른 언어가 가진 모든 "질투"에 대해 훨씬 더 나은 감사로 끝날 것입니다.


1

시간이 좀 걸릴 것입니다. 유지 관리 할 계획입니까?

프로그래밍 언어 (의도 된 목적, 구문, 철학, 해석기 등의 초안 작성 포함)를 만드는 것이 시간, 노력 및 학습 경험의 가치가 있습니까? 아니면 더 많은 혜택을 볼 수있는 다른 프로젝트가 있습니까?

나는 당신의 재정 상태가 무한하지 않다고 가정하고 있으므로 시간 가치가 없다고 말하고 싶습니다. 돈을 벌 수있는 다른 유용한 프로젝트에 시간을 할애 할 수 있습니다. 이것은 당신이 찾고있는 대답이 아닐 수도 있지만, 논리적 관점에서 볼 때, 귀하의 프로그래밍 언어가 현재 올바른 프로젝트가 아닐 수도 있습니다. 당신이 은퇴 한 컴퓨터 과학자이고 업계에 기여할 필요가 있다고 생각한다면 나는 그것을 고려할 것입니다. 프로그래밍에 대한 열정이 강한 것 같습니다. 그러나 완전히 새로운 스크립팅 언어를 구축 하시겠습니까? 그것은 매우 긴 프로젝트가 될 것입니다. 그 당시에는 포트폴리오에 던질 수있는 많은 응용 프로그램을 구축 할 수있었습니다. 질문은 다음과 같습니다.


2
몰라요 ... 큰 사랑의 노동이 20 달러를 버릴 수있는 앱을 20 개 버립니다.
ChaosPandion

도메인 특정 언어를 구현하면 실제로 실제 프로젝트의 개발 속도를 크게 높일 수 있습니다. 따라서 재정적으로나 보상 적으로 미적으로 기뻐할 수 있습니다.
SK-logic

1
어떤 사람들은 물건을 만들고 싶어하기 때문에 물건을 만듭니다.
Jetti

@ 제티. 네 알아요 그렇기 때문에 나는이 답변이 당신이 찾는 것이 아닐 수도 있다고 말했고, 프로그래밍에 대한 열정이 있다고 말할 수 있습니다. 이 답변에 대해 말한 것과 같은 사람이 누군가를 기다리고 있기 때문에 귀하의 의견에 감사드립니다.
Ryan

@Ryan-미안하지만 그 부분을 놓쳤다.
Jetti

-2

당신에게 나의 충고는

바퀴를 재발 명하지 마십시오

이 관용적 은유에 대한 영감은 바퀴가 인간의 독창성의 전형이라는 사실에 있습니다. 추가 된 힘과 유연성 덕분에 사용자에게 부여 할 수 있으며 고대 기원에서도 모두가 아닙니다. 현대 기술. 이미 발명되었으며 운영상의 결함이있는 것으로 간주되지 않기 때문에 재발 명하려는 시도는 무의미하고 대상에 가치를 더하지 않으며 시간 낭비가되어 조사자의 자원을 더 가치있는 목표에서 벗어나게합니다. 자신의 기술이 더 실질적으로 발전 할 수 있습니다.

당신은 스스로에게 물어야합니다 :

  • 왜 스크립트를 만들어야합니까? 기존 스크립트가 충분하지 않습니까?
  • 스크립트를 유지 관리하고 게시 하시겠습니까? 다른 프로그래머가 스크립트를 사용할 것이라고 확신하십니까? 대답이 '아니요'인 경우에는하지 마십시오.

더 많은 학습 경험을 원하고 개인적으로 프레임 워크만들면 더 많은 학습 경험을 얻을 수 있으며 스크립트를 만드는 것보다 나중에 팀 / 커뮤니티가 다시 사용할 수있는 보너스를 얻는다고 생각합니다.

이 xkcd 만화는 약간 관련이 있습니다. "표준"을 "언어"로 변경하십시오.

여기에 이미지 설명을 입력하십시오


-1, 그는 이것이 개인 학습 경험을위한 것이라고 분명히 말했습니다.
GrandmasterB

스크립트를 작성한다고해서 자신과 커뮤니티에 실질적인 개인 학습 경험과 이점을 제공하지는 않는다는 사실을 솔직하게 알고 싶습니다. 또한 프레임 워크를 만들면 실제로 그와 커뮤니티에 더 많은 혜택을 줄 것이라고 대답했습니다. 당신이 그것이 사실이 아니라고 생각한다면, 더 많은 투표를 받고 싶지 않습니다.
Rudy

2
그래, 당신 말이 맞아-신입생 프로그래머는 그의 첫 "Hello, World!"를 쓰지 않을 것이다. -결국 기존 파일을 다운로드하는 것이 훨씬 낫습니다. 그리고이 맥락에서 " 프레임 워크 " 는 무엇 입니까?
SK-logic

5
@Rudy, 컴파일러 또는 인터프리터를 구현하는 것은 "Hello, World!"와 매우 유사한 사소하고 기본적인 기술입니다. 이것이 적절한 CS 과정에서 필수 인 이유입니다. 사소한 일 임에도 불구하고이 과제는 거의 모든 분야에서 실제로 적용 할 수있는 매우 유용한 기술을 가르칩니다. DSL을 구현하는 것이 매우 중요하다고 말할 필요도없이 (당신을 마음 - 최대 절전 모드가 언급 한 당신이 말았 있다는 것입니다 DSL이, 아주 제대로 구현 일부는 그 안에 포함 된 인터프리터와 컴파일러의 숫자가있다).
SK-logic

3
SK-논리 @ - 당신은 여기 내 자부심을 돕는하지 않을 ... :)
ChaosPandion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.