programming-languages - 지향 - 스퀵




스몰 토크(Smalltalk)의 특별한 점은 무엇입니까? (8)

모든 기술 출판물과이 사이트에서도 사람들은 항상 OO 언어를 Smalltalk 비교합니다. 내 경험은 Java에 있습니다. Smalltalk가 너무 중요해서 공부해야합니까?


Smalltalk은 가장 초기의 객체 지향 언어 중 하나였으며 ( SimulaEiffel 과 같은 다른 언어들과 함께) OO 의미에서 매우 "순수"하다고 말할 수 있습니다 :

  • 모든 것은 객체이며 객체는 메시지 전송을 통해서만 전달됩니다.
  • 프리미티브 없음 ( int s, boolean s 등)
  • 통제 구조가 없습니다 ( for , while , if 등). 불가능한 것 같지만 사실이야!
  • 통계 없음

또한 다른 공통적 인 것들을 개척했습니다.

  • 가상 머신 (및 JIT 컴파일)
  • 검사에 의한 디버깅
  • "핫 스왑"실행 코드
  • 현대 IDE
  • 마감
  • 오리 타이핑
  • UI 용 MVC (Model-View Controller) 아키텍처
  • 테스트 주도 개발 (TDD) 및 민첩한 방법론

스몰 토크와 관련된 다른 것들은 주류에 들어 가지 않았습니다.

  • 파일 기반이 아닌 "이미지"기반 시스템.
  • 객체 지향 데이터베이스

Java Collections API와 apache-commons collections API는 스몰 토크의 영향을 크게받는다고 말할 수 있습니다.

Smalltalk 그 자체를 배워야한다고 말하지는 않겠지 만 ,이 기능의 기본 사항 (현재는 다른 많은 언어로 제공됨)에 익숙 하면 확실합니다.

현재이 언어에 대한 smalltalk , 원래 작성자 인 앨런 케이 (Alan Kay)가 교육용 언어 (즉, 어린이를 대상으로 한 언어)였던 것입니다. 더 이상 특별히 많이 사용되지는 않습니다. 그것은 그것이 사용되지 않는다고 말하는 것이 아닙니다. 예를 들어, JP 모건은 이국적인 파생 상품 위험 관리 시스템을 가지고 있습니다.


Smalltalk은 처음 두 개의 원래 OOP 언어 중 하나이며, 다른 하나는 Simula-67입니다. 결과적으로 Simula (C ++, Java, C #은 모두 여기에 속함)가 개척 한 메소드 호출을 중심으로 정적으로 형식화 된 모델과 스몰 토크 (Python, Ruby가 여기에 속합니다. ).

오늘날 스몰 토크는 그 자체로 특별히 중요하지 않습니다. 사람들이 아직도 물건을 쓰는 데 사용하고 있지만, 주류는 아닙니다. 그러나 학습을 통해 OOP이 어떻게 그리고 왜 전개되었는지에 대한 통찰력을 얻을 수 있습니다.


나는 다른 사람들과 동의한다. 나는 그것이 본질적으로 중요한 것인지 확신하지 못한다. 그러나 그것은 냉담하다 (imho).

나는 언어에 루프 나 조건문이 없다는 것을 좋아한다. If-then-else는 부울 객체에 전송 된 메시지입니다. True 타입의 객체는 한 가지를 수행하고, False 타입의 객체는 다른 것을 수행합니다. (예, True 및 False는 부울의 부속 유형이며 각각 단일 값, 각각 참 및 거짓 임).

반 직관적 인 것부터 시작하지만, OO 프로그래밍이 어떻게 작동해야하는지에 대한 매우 흥미롭고 깊이있는 견해를 제공합니다 ...


두 가지 의견 :

  1. Smalltalk은 "지향적 인"객체가 아니며 실제 객체이며 환경의 객체 및 메시지입니다.

  2. 스몰 토크는 언어가 아니며 같은 이름의 언어를 사용하는 환경이지만 여기의 "마법"의 대부분은 환경 덕분입니다 (이미지).


스몰 토크의 또 다른 특징은 동창생들이 켄트 벡 (Kent Beck)과 워드 커닝햄 (Ward Cunningham)을 포함한다는 것입니다. SmallTalk의 작업은 자동화 된 xUnit 테스팅 , 소프트웨어 디자인 패턴 , CRC 카드 및 XP / Agile에 적용되는 다른 방법 등을 창출했습니다. 따라서 SmallTalk가 현대 프로그래밍 환경의 주요 기여자였습니다.


예, 스몰 토크는 매우 중요하므로 공부해야합니다. 왜? 순수하고 간단한 형태로 객체 지향 프로그래밍을 이해할 수 있습니다. 사람들이 잊는 것은 Smalltalk-80 "Blue Book"에 약 90 페이지의 언어 전용 페이지가 있다는 것입니다. 언어는 단순합니다. 나머지 300 페이지는 단일 상속을 사용하는 클래스 기반의 객체 지향 언어에 대한 디자인의 걸작 인 미리 정의 된 클래스 계층 구조에 대해 설명합니다. 객체를 훨씬 더 깊이 이해하게 될 것입니다 (예 : 클래스는 객체이고 메타 문자는 무한대입니다 ... 매듭은 시스템을 유한하게 유지하기 위해 조심스럽게 묶여 있습니다). Java 또는 C ++과 같은 하이브리드 언어. 스몰 토크 (Smalltalk) 문제는 역사 때문 만이 아니라 단순함 때문입니다.

  • 충분히 간단하여 전체 언어 라이브러리를 이해할 수 있습니다.

  • 그것의 논리적 인 극단으로 밀린 하나의 아이디어 (객체가 모두 필요함)를 보여줍니다.

모두 가 스몰 토크에서 배울 점이 있습니다!


저는 스몰 토크에 대한 관심을 되살리기 시작했습니다. 제 의견으로는 스몰 토크에 대한 몇 가지 흥미로운 점이 있습니다 :

  • 고도로 생산적인 개발 환경
  • Agile / Extreme 프로그래밍 방법론을위한 내장 지원
  • "순수한"객체 모델
  • 사용하기 쉬운 그래픽 프레임 워크

이들 중 어느 것도 소프트웨어 개발 사업에 종사하지 않는 사람들에게 특히 유용합니다. 내가 처음 스몰 토크를 사용하는 PC에서 프로토 타이핑 된 임베디드 장치 용 사용자 인터페이스를 본 순간이었다. 이를 통해 사용자 인터페이스를 매우 빠르게 수정하고 테스트 할 수 있었으며, 완성되었을 때 임베디드 개발자에게 어떤 문서보다 훨씬 정확한 "실행 가능 사양"을 제공했습니다. 나는이 기술이 지난 20 년 동안 여행에서 관찰했던 것보다 훨씬 자주 사용되는 것을 보지 못했기 때문에 놀랍습니다.

Smalltalk을 프로토 타이핑 도구로 사용하는 것이 나의 관심사입니다. 새로운 문제가 제기되면이를 해결하기위한 다양한 접근법을 Smalltalk 환경에서 매우 빠르고 쉽게 검증하고 검증 할 수 있다고 생각합니다. 일단 원하는 솔루션이 발견되면 상대적으로 실제로 Java / C ++ / C # 등으로 변환 할 수있는 기계적 기능을 제공합니다. 사실 반복적 인 일들을 위해서 스몰 토크를 사용하여 다른 일부 대상 언어로 솔루션의 일부분에 대한 코드를 생성하는 것이 가능할 수도 있습니다.


지난 달 Smalltalk의 역사와 영향에 관한 발표에서 약 5 분을 보냈습니다. 스몰 토크로 이미지 기반 개발을 참조하십시오. 오늘날 프로그래머들에게 더 많은 외국 개념 중 하나는 "이미지 기반"개발입니다. DBMS와 스프레드 시트를 포함한 좋은 비유가 있습니다.