언어 디자인과 "이상적인"프로그래밍 언어에 필요한 요소에 대해 많은 생각을 해왔으며 Google의 Go를 연구하면서 일반적인 지식에 대해 의문을 갖게되었습니다.
특히, Go는 실제로 객체 지향 언어 의 구조 를 갖지 않고 객체 지향 프로그래밍의 흥미로운 이점을 모두 가지고있는 것 같습니다 . 클래스는없고 구조 만 있습니다. 클래스 / 구조 상속이없고 구조 임베딩 만 있습니다. 계층 구조, 상위 클래스, 명시 적 인터페이스 구현이 없습니다. 대신, 타입 캐스팅 규칙은 덕 타이핑과 유사한 느슨한 시스템을 기반으로합니다. 따라서 구조체가 "Reader"또는 "Request"또는 "Encoding"의 필수 요소를 구현하면이를 캐스팅하여 사용할 수 있습니다. 하나로서.
C ++ 및 Java 및 C #으로 구현 된 OOP에 대해 본질적으로 더 유능하고 유지 관리가 가능하며 Go와 같은 언어로 이동할 때 포기해야하는 강력한 기능이 있습니까? 이 새로운 패러다임이 나타내는 단순성을 얻기 위해 어떤 이점을 포기해야합니까?
편집
독자들이 지나치게 전화를 끊고 화를내는 것처럼 보이는 "사용되지 않는"질문을 제거했습니다.
문제는 일반적인 언어 구현에서 자주 볼 수있는 전통적인 객체 지향 패러다임 (계층 구조 등)이이 단순한 모델에서는 쉽게 수행 할 수없는 것을 제공해야하는 것입니다. 즉, 오늘날 언어를 디자인하려는 경우 클래스 계층의 개념을 포함하고 싶은 이유가 있습니까?