2009-11-11 8 views
5

Google의 Golang은 Paul의 Graham의 게시물 'Why Arc isn't Especially Object Oriented'에서 언급 된 언어의 문제를 해결합니까? 이 향한Google의 go-language가 Paul 's Graham의 게시물에서 '왜 아크가 특히 객체 지향적이지 않은 이유'의 문제를 해결합니까?

+2

무슨 문제입니까? 이 게시물은 언어 문제가 아니라 부피가 큰 객체 지향 디자인을 과도하게 사용하는 문제에 대해 이야기합니다. – mquander

+0

@mquander : 정말로 포스트는 문제보다 가짜 이점에 관한 것입니다. – ctd

답변

7

내 첫 느낌은 "그것은 말할 너무 곧"당신이 어휘 폐쇄 또는 매크로없이 정적으로 입력 된 언어가있는 경우

1) 객체 지향 프로그래밍은 흥미 진진한입니다. 어떤 학위를,이 주위에 방법을 제공합니다 제한. (Greenspun의 열 번째 규칙을 참조하십시오.)

이동 나는 이것이 올바르게 다른 곳에서 정의 또는 임시을 생성 여부, PARAMS 등의 기능을 전달할 수 있도록 읽고 있습니다 경우 기능 리터럴 (docs 참조)를 지원합니다. 이 가 소프트웨어를 작성하는 방법을 맞는 때문에

2) 객체 지향 프로그래밍은 큰 회사에서 인기가있다. 대기업에서는 소프트웨어가 평범한 팀 (주로 으로 변경)으로 작성된 인 경향이 있습니다. 객체 지향 프로그래밍은 이러한 프로그래머가 에 중 하나가 너무 많이 수행하지 못하도록하는 규율을 부과합니다. . 가격은 결과 코드가 개의 프로토콜과 중복으로 가득 차게됩니다. 큰 소프트웨어 인 의 경우 너무 높지 않습니다. 소프트웨어가 일 것입니다. 어쨌든 이 부풀려져있을 것입니다.

이 점은 답변에 주관적입니다.

3) 객체 지향 프로그래밍 작업의 모습을 많이 생성합니다. 위로 팬 폴드 당시, 프로그래머 유형은 페이지에 코드의 5 줄 또는 10 줄만 넣었고, 앞에 줄을 정교하게 서식이 지정된 개의 줄에 배치했습니다. 객체 지향 프로그래밍 은이 사람들에게 균열과 같습니다. 은 코드를 소스 코드 코드에 통합 할 수있게합니다. Lisp 해커 이 심볼을 에 푸시하여 처리 할 수있는 것이 목록은 클래스 의 전체 파일이됩니다. 따라서 자신을 설득하려는 경우 또는 다른 사람이 좋은 도구 인 경우 작업 중입니다.

go는 진정한 객체 지향 언어가 아니기 때문에, 여러분이 편안하게 생각하는 어떤 문제라도 해결할 수 있습니다.언어 자체가 객체 지향 프로그램이면

4), 그것은 사용자에 의해 확장 될 수 . 어쩌면. 아니면 하위 개념을 제공하여 더 잘 수행 할 수 있습니다. 객체 지향 프로그래밍 a la 예를 들어 오버로드는 본질적으로 클래스에 묶여 있지 않은 입니다. 우리가 보겠습니다.

는 이동이/걱정 대형 오브젝트 트리를 개발하기 위해 필요하지 않은 객체에 대한 흥미로운 접근 방식을 갖고있는 것 같아요. 도구가 언어에 존재하여 순수 객체 지향 환경에 잠기지 않고 객체 지향 방식으로 데이터를 구조화하는 것처럼 보입니다.

5) 객체 지향 추상화 시뮬레이션과 CAD 시스템과 같은 프로그램의 특정 특정 종류의 도메인에 깔끔하게 매핑합니다.

...

+0

Go는 일류 및 고차 함수를 지원하므로 멋집니다. 또한 MLs/Haskell/Racket의 타이핑을 지원합니다. 개인적으로 Go에 대해 좋아하는 점은, 관용구가있는 반면 디자이너는 Graham과 달리 다양한 상황에 따라 다른 도구가 필요하다는 것을 디자이너가 이해하는 것입니다. 오해하지 마라, Graham은 굉장해. 프로그래밍 관용구에 관해 논쟁하는 것은 궁극적으로 효과가 없다는 것입니다. 편향된 장인 사이의 도구 또는 언어 편향 철학자 간의 사고 프로세스 사이의 논쟁으로 귀결됩니다. – jcc333

5

바울은 몇 가지 흥미로운 점은, 일반적으로, 나는 그의 담고 많이 읽은 있습니다. 이 문제에 대해서는 동의하지 않습니다. 그는 lisp 너트이고, 진절머리 나는 프로그램입니다. 그는 위대한 프로그래머의 일로 프로그램을 이해하기가 어렵다고 생각합니다. 네, 그보다 더 미묘한 차이가 있다는 것을 알고 있습니다. 하루가 끝나면 코드가 쉽게 작동하거나 그렇지 않습니다. 그리고 Paul이 훌륭한 개발자라고 생각하는 프로그래머는 다른 사람들보다 더 많은 쓰레기를 내고 코드가 의도하는 바를 꼬리 꼬리표로 만들 수 있습니다. 그것은 기술이지만, 확실하게 좋은 프로그래머가 필요로하는 것은 아닙니다.

아크에 대해 말하면, 그것은 짜증나며, Lisp 커뮤니티의 사람들조차도 그렇게 생각하지 않는 한 똑똑한 사람들조차도 실수를 저지른다고 지적합니다.

Paul은 똑똑한 사람이지만,이 특정 작품에서의 그의 전체 접근 방식은 보이는 것처럼 느껴지지 않습니다.

1

잠깐, 실제로는 객체 지향적 인가요? 그 전선에서 완전히 불가 지론적인 것처럼 보입니다. Go에서 OOP 또는 FP 또는 명령형 프로그래밍을 사용할 수 있습니다. 내 말은, 프롤로그 스타일의 "프로그래밍"은 늘릴 것입니다. 그러나 그렇지 않으면 ...

사실, 나는이 점에서 바둑이 스칼라와 비슷하다고 주장 할 것입니다. 객체 패러다임이 주변에 놓여 있지만 아직 있습니다. 또한 람다와 typecasing 주위에 거짓말.

+1

Go는 객체 지향적입니다. 커먼 리스프 (Common Lisp)와 딜런 (Dylan)과 마찬가지로 객체 지향에 대한 일반 디스패치 접근 방식을 사용합니다. – PuercoPop