스몰 토크는 엄청나게 압축 된 언어이며 가장 순수한 객체 지향 언어 중 하나입니다. Objective-C는 스몰 토크와 C 사이의 실용적인 타협점입니다. 예를 들어, 스몰 토크에서 모든 것은 객체입니다 - 심지어 간단한 숫자 - 그리고 객체의 모든 조작은 메시지 전송에 의한 것입니다. 메시지는 이름과 관계없이 동일한 순서로 평가됩니다. 그래서 예. 다음
8 + 9/23 + 16 * 8
엄격한 왼쪽에서 오른쪽으로 평가되기 때문에 사업자 '+', '/'와 언어가 번호로 전달됩니다 단지 메시지를 인에 특별한 의미가 없다 '*' 사물.
Objective-C는 스몰 토크 스타일의 객체를 C에 추가하지만 C의 기본 유형 및 내장 연산자를 보유하는 C의 엄격한 수퍼 세트이기도합니다. 그래서 Objective-C에서 연산의 정상적인 수학적 순서가 위의 표현에 적용될 것입니다 - 나누기와 곱셈이 먼저 수행되고 이후에 덧셈이 수행됩니다.
학습 C는 Objective-C를 완전히 이해하는 데 절대적으로 필요합니다. Objective-C는 C의 엄격한 상위 집합이며 명시 적으로 동일한 구문과 의미를 사용합니다. 이것은 어떤 연산을 어떻게 적용해야할지 모른 채 포인터를 유지하는 C의 능력 덕분에 객체의 개념을 C에 접목시킵니다. 그런 다음 C 구문을 확장하여 개체에 메시지를 게시하고 개체에서 수신 할 수있는 메시지를 선언하고 구현하는 방법을 제공합니다.
Objective-C 런타임의 일반적인 디자인은 특히 Cocoa와 결합 될 때 선택기의 개념, 클래스의 인스턴스, 계층 구조 및 시스템에 대한 팩터 리로 메타 클래스 사용 등 Smalltalk에서 직접옵니다. 모델 뷰 컨트롤러 (Smalltalk 원본, 거의 유비 쿼터스 임에도 불구하고)와 표준 콜렉션과 객체에 정의 된 많은 메시지의 분할을 말합니다.
내 머리 꼭대기에서 스몰 토크는 흐름 제어 시스템이 크게 다르며 '블록'과 비슷하지만 미묘하게 다른 생각을 가지고 있습니다 (대부분의 최신 구현이이 두 가지를 선으로 가져 왔음에도 불구하고). 애플은 실제로 C 레벨에서 확장 된 블록을 구현했다.이 블록은 Objective-C 객체에 대한 많은 새로운 메소드에 의해 활용된다.
Goldberg Smalltalk-80 서적은 매우 잘 쓰여지고 읽기 쉽고 언어는 매우 간단하므로 2-3 개의 장으로 전체 언어를 배울 수 있습니다. 대부분의 복잡성은 런타임에서 사용할 수있는 객체에 의해 삼켜지며, 분명히 그러한 것들은 전송되지 않습니다. 객체와 런타임에 대한 이데올로기 적 요소는 인쇄물의 특성과 매우 구분됩니다. 반대로 C는 흐름 제어와 산술 같은 것을 언어 기능으로 만든다. 이것은 어떤 일이 일어나고 있는지를 실제로 느끼기 전에 더 많은 구문과 더 많은 읽을 것을 의미한다.
결론적으로 Smalltalk-80 책 (자주색 책)은 분명히 가치가 있으며 매우 유용하지만 꼭 필요한 것은 아닙니다. 학습 C는 어쨌든 필수적입니다. K & R에 대한 내 언급은 비교를위한 것입니다.
스몰 토크 (Smalltalk)에 대해 잘 모르기 때문에 Objective-C 개발자에게 어느 정도 도움이되는지 여부에 대한 답변을 제공 할 자격이 있다고는 생각하지 않습니다. 즉, 나는 두 가지 언어를 동시에 배우 려하지 않고 객체 지향 프로그래밍 개념에 익숙해지는 것이 도움이 될 것임을 지적하는 것이 가치가 있다고 생각합니다 ** ** –
어떻게 사용하는지 궁금합니다. Obj-C는 Obj-C의 일부이기 때문에 C를 배워야합니다. – Vovanium