https://www.electronicdesign.com/blogs/altembedded/article/21252370/electronic-design-an-objective-look-at-rust
An Objective Look at RustRather than implementing an object-oriented programming architecture, the Rust language offers modular programming support, using traits rather than classes.www.electronicdesign.com학습 내용
- Rust가 객체를 어떻게 지원하는지
- Rust의 트레이트란 무엇인가
- 언어 간 인터페이스 도전 과제
C++와 Java는 상속을 통한 계층적 클래스 구조를 사용하는 전통적인 객체 지향 프로그래밍(OOP) 방식을 따릅니다. 두 언어 모두 인터페이스 정의를 제공하기 위해 추상 클래스를 지원합니다. 이러한 세부 사항은 상당히 복잡하므로 깊이 다루지 않고, Rust가 OOP 아키텍처를 따르지 않으면서 모듈화된 프로그래밍을 어떻게 지원하는지 살펴보겠습니다.
Rust에는 클래스가 없으며, 대신 트레이트가 있습니다. Rust 코드를 아직 살펴보지 않았다면 Reading Rust for C Programmers를 참고하세요.
기본 사항을 보여주기 위해, 고정 크기 요소를 사용하는 간단한 스택을 구현합니다. 이 스택은 push, pop, top(스택의 최상단)과 같은 제한된 기능을 포함합니다. 이는 Rust 표준 라이브러리의 Vector(Vec) 타입이 이미 이러한 기능(및 그 이상, 예: 모든 요소 타입 처리)을 제공하므로 실용적인 구현은 아닙니다.
마찬가지로, 이 설명은 클래스 기반 OOP와 트레이트의 기본 사용을 강조하기 위해 설계되었습니다. 따라서 이 예제를 실제 애플리케이션에 반드시 사용하지는 마세요. 또한, 트레이트는 C++와 Java를 포함한 다른 프로그래밍 언어에도 존재합니다.
https://gall.dcinside.com/board/view/?id=programming&no=2846821
에휴 rust에서는 superTraits라는게 있다.러스트는 일반적으로'구현 상속' 계층 즉 OOP 클래스 적인 계층을 안만드는거지다형성 자체가 의미론적 계층은 존재한다. 이게 원래 OOP에서고 OOP의 일종의 명세라서 계층이 없다고 할 수 없다그래서 러스트에서 다형성gall.dcinside.com내가 이미 니가 Trait을 계층이라고 부르는 걸 수도 없이 목격했는데 이래도 한 적 없다고 우긴다고????ㅋㅋㅋㅋㅋㅋㅋㅋ시발 어이가 털리겠노
이제는 뭐 러스트는 커녕 C++도 보급되기 전인 1985년 논문까지 끌고와서 나한테 뭐 역사를 가르치겠다고 들이대는데
애초에 러스트에 계층이 없다고 못 박은건 내가 아니라 러스트 개발자들임 니가 볼 때 이게 불만족스러워 보이면 직접 가서 따지라니깐? 여기서 여유롭게 키배나 쳐 뜰게 아니라 왜 나한테 화풀이를 하려고 해? 니가 가서 전세계인들의 인식을 바꾸라니깐 ㅋㅋㅋ
러스트에서 정의하는 계층의 사전적 의미가 머임?? - dc App
말그대로 class임 oop에서 말하는 그 자체
아 그러면 엄마의 삼촌의 아버지랑 섹스 가능? - dc App
계층이 클래스가 아닌데 얘는 무슨 소리임?; 저 본문도 계층=클래스라고 한 적 없는데
하 애미 터진년아 그럼 다시 한번 물어볼게 니가 보여준 그 블로그 글 외에 어디 러스트 공홈이나 공식 자료에서 러스트에 계층(class + hierachy) 포함된거 있으면 인정해줌 그럼 됐음?
너가 가져온 3개의 기둥은 왜 갑자기 인정을 못함? 이해가 안가노 ㅋㅋㅋ니가 아까 그렇게 잘났다고 가져온건데
정작 이 병신새끼는 supertrait이 뭔지도 모르면서 그냥 내가 syntax sugar라고 말해주기 전까지 진지하게 계층구조락 쳐믿고 있었던 주제에 존나 나불거리노
https://doc.rust-lang.org/book/ch18-01-what-is-oo.html?highlight=Parametric#polymorphism
자
여기서보면 Parametric Polymorphism이 있는데 이거 자체가 의미론적 계층을 형성함
???3개의 기둥이 도대체 왜 병신아 러스트가 OOP가 아닌 이유? 이미 설명해줬잖아 또 설명해줘야해 등신 미친 또라이 노친네년아?
뭔소리임 SuperTrait는 계층 예시지. 그걸 구현한 예시로 계층구조가 되는 걸 보여준건데 뭔소리여
그딴거 말고 직접적으로 hierarchical이랑 class 언급한 걸 내놓으라니깐? 왜 쫄림?
Polymorphism To many people, polymorphism is synonymous with inheritance. But it’s actually a more general concept that refers to code that can work with data of multiple types. For inheritance, those types are generally subclasses. Rust instead uses generics to abstract over different possible types and trait bounds to impose constraints on what those types must provide. This is sometimes called
아니 애초에 논문으로 직접 의미론적 계층구조를 가져와줬고 러스트 구현이 Parametric Polymorphism 이라는데 계층 구조라고 안쓰였으면 계층이 없는거냐? 별 ㅋㅋㅋ씨발ㅋㅋㅋ
Parametric Polymorphism의 컴공적 정의에 이미 의미론적 계층이 있다니까?
에효 병신아 supertrait은 그냥 합집합 만드는 함수라니깐 애초에 상속도 안 되고 계층이라는 내용도 메뉴얼 그 어디에서도 안 나오는데 왜 니 혼자 멋대로 레이블링 쳐함?
Traits: Defining Shared Behavior A trait defines the functionality a particular type has and can share with other types. We can use traits to define shared behavior in an abstract way. We can use trait bounds to specify that a generic type can be any type that has certain behavior. 여기서 abstract way가 그 뜻이고ㅓ
Parametric Polymorphism 최초의 의미론적 계층구조 정의가 최초 다형성에서 나온거니까요 병신아 ㅋㅋㅋ
Rust는 직접 Parametric Polymorphism을 구현했다고 공언함-> Parametric Polymorphism은 의미론적 계층 구조를 가진다고 정의되있다 그럼 Rust의 Trait은 의미론적 계층을 띈다. 이게 어려움? 귀납법 이해가 안감?
아니 컴공에서 뭐라던간에 관심 없다니깐 애초에 니가 갖고온 먼지나는 논문도 1985년 기준이라서 현재 기준에서 적합하지 않다고 몇번을 말해줌? 애초에 그땐 러스트는 커녕 계층을 제외한 polymorphic 구조는 그 어디에도 없다고
아니 사전적 정의가 1967년 논문으로 되있는데 거기서 뜻이 변한게 없는데 뭔 개소리임
No, parametric polymorphism is not inherently tied to class-based languages. While it's often associated with statically-typed languages like those with classes, it can also be implemented in other ways. Parametric polymorphism involves creating generic code that works with different types without needing separate implementations for each type. 니가 갖고온 똑같은 위키 페이지에서 퍼왔다 병신아
다형성의 사전적정의는 1967년 정의된 이후로 단 한번도 변한적 없고, 그걸 구현한 방식만 변했을뿐이다.
너 병신이냐? 클래스 기반 이야기가 왜 나옴? 지금 내가 클래스 이야기함? 너 진짜 저능아냐?
아이큐 한 50임?
왜 멋대로 parametric polymorphism을 clsssed로 단정짓는지 모르겠지만 적어도 느그위키에선 그렇지 않다고 한다
내가 계층=클래스라 함? 매개 변수 다형성은 클래스랑 상관없음 나는 Rust를 클래스를 기반 언어라 한 적 없고, OOP 스타일이 아니라 parametric polymorphism이라서 의미론적 계층구조를 가진다는건데 왜 자꾸 클래스<<여기에 집착함? 애미가 클래스에 따먹힘?
아니 내가 대체 언제 calssed라고 함? 너 저능아냐? 나 classed라고 한적없다고 병신아; 애초에 Rust는 클래스 기반 언어가 아닌데
아니 애초에 논점 자체가 러스트가 계층화된 언어냐 아니냐인데 뭔 개소리 쳐하고 앉았냐 이새낀
내 글 어디에 대체 Rust가 class라고 했는지 말해봐라 본문 보면 추상화 방식에서 변수레벨, 메서드 레벨, 클래스 레벨 이런식으로 추상화는 계층의 분류가 있다는 거를 설명하는건데
엌ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ어이구 그래서 러스트가 hierarchical 구조라는게 이거 때문이라구요? 결국 니 말은 닌 처음부터 class란 말을 안 했다 이거네?
아니 뭔 소리임 애초에 내가 그런적이 없는데 class기반이라고 한적도 없고, 나는 꾸준히 추상화의 본질적인 것과 다형성 이야기했는데 내가 대체 언제 클래스 이야기를 했냐고 병신아.;
ㅇㅇ 내가 클래스 기반이라고 한거 가져와보라니까? 난 클래스 기반이라 한 적 없다
너네 둘다 똑같다 함수가 포인터인것도 모르지 너네는?ㅋㅋㅋㅋ
나는 Rust의 Trait이 추상화적인 부분, 즉 의미론적 계층 구조를 가질 수 밖에 없다 그 이유는 parametric polymorphism의 사전적 정의가 그렇기때문이다라고 말한건데
너 설마 구조체를 계층이라고 오해하는거냐?
뭔소리임. 구조체는 계층이 아님;
프로그래밍에서 계층, 하이어라키는 기본적으로 레이어와 관련된거고, 너 DDD 이런거 모르냐?
구조체는 집합적 묶음이고 하이어라키는 레이어고, 레이어는 DDD 개념인데, 이 DDD 개념에서, 계층은 책임의 구조적 상하관계를 말하는거임 뭔 갑자기 딴 이야기로 새냐
니가 처음에 병신아 macro 전처리 도구랑 추상화랑 헷갈려하길래 그 본질적인 차이를 설명해줄려고, 계층 이야기 꺼낸거고
On the other hand, Rust does not support higher-kinded types, and as I noted in the previous section, this effectively means that its type system lacks the ability to talk about type constructors that are not immediately applied to arguments. This restriction means that generic associated types must be a special type system feature rather than merely being a special case of the associated type con
cept.
https://langdev.stackexchange.com/questions/3222/what-is-the-difference-between-gat-and-hkt
네이티브
러스트에는 상하구별이 없단다 미안하지만
니가 말하는 Hierarchical 또는 계층적 구조에 근접한 내용은 러스트 공식 메뉴얼에도 없고 그냥 전부 구현하려고 할려면 할 수는 있지만 Generic으로 존나 복잡하게 구현하는게 전부고 이제 진짜 니가 말하는 계층에 대한 근거 좀 보여줄래?
아 갑갑하네 GAT,HKT의 상위 타입 시스템이 아니라 sematic(의미론)적 이야기를 하고 있는데, 뭔 개소리야 자꾸 애초에 니가 이상하게 알아쳐먹어서 시비건건데 parametric polymorphism에 대해서 검색해서 봐라 의미론적 계층을 띄지. 1967년 그 논문이 그 내용이라니까?
Cardelli, Luca; Wegner, Peter (December 1985). "On understanding types, data abstraction, and polymorphism" (PDF). ACM Computing Surveys. 17 (4): 471–523. 검색해서 8장 봐라
semanticㅇㅈㄹ 그딴식으로 두루뭉실하게 들어가면 struct도 계층이고 string도 계층이겠네 애미 뒤진 소리쳐하지 말고 빨리 러스트 공홈에서 계층 언급한건나 내미세요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 네 다음 러스트 구조도 모르고 좆까불다가 쥐어터진 병신이고요 ㅋㅋㅋㅋ
음 무슨 얘기가 핵심인지 정리할 수도 있을거 같은데 계층이라는 말을 이렇게 생각해 보자구 부모클래스에서 가상함수를 선언했고 자식클래스에서 그걸 구현해야만 되는걸로 말이지 근데 러스트에서는 그런식으로 사용할 수 없다 그러므로 계층이 없다 이렇게 말이지 아님 말고
잘 읽고갑니다 그냥 말장난으로 싸운거같아보여요
둘이 싸우는거 2번 보니까; Parent + Child 하면 OOP 에서는 부모를 뒷배로 둔 자식새끼가 성립이 가능한데, 러스트는 부모자식이 되어버리는거임. 합집합은 그런 개념. 인터페이스 합성과 같게, 트레잇 합성으로 다형성을 구현한다. 근데 또 러스트가 OOP 언어가 아니라고 할 순 없음. 고수준 언어 자체는 이미 그 자체가 추상화이기 때문임. 러스트 구조체로 User 라는 '객체' 를 만든 시점부터 이미 OOP 언어임. OOP 적 특성이 부족할 순 있으나 OOP 언어가 아니라고 하기엔 애매하다는거임. Person 을 만드려면 OOP 언어가 아닌 언어는, 먹다, 입다, 자다, 팔, 다리, 눈, 코, 배 등 다양한 함수적 조건들이 합해져서 만들어져야 하는데, 이미 러스트는 struct 로 객체를 표현하고
있고, 내부에 객체가 할 수 있는 행동또한 정의될 수 있음. 이러한 의미에서 구조체 임베딩 자체도 상속이라고 봐야하지 않나? struct Person 이 있고 struct Child { parent: Parent } 가 있을 때, 상속을 통한 기능의 확장은 불가능해도, 부모놈의 무언가를 사용할 순 있잖음. 말장난일 수 있는데 근본적인 OOP 태생은 아니지만, 객체 지향이란 건, 사물 중심, 추상화 중심이라고 생각함. 추상화가 가능하면 OOP 적 특성이 부족해도 객체지향 언어임. 다시 말해 러스트는 계층적 구조를 표현하진 못하더라도, 의미론적인 계층 구조는 어떻게든 표현이 가능함.