Io(프로그래밍 언어)

Io (programming language)
이오
Io-logo.svg
패러다임객체 지향의 프로토타입 기반의
설계자스티브 데코르테
개발자스티브 데코르테, 조나단 라이트, 제레미 트레군나
처음 등장한2002년; 20년 전(2002년)
안정된 릴리스
20170906 / 2017년 8월 11일, 4년 전(2017-08-11)[1]
타이핑 분야다이내믹, 스트롱
웹 사이트iolanguage.org
주요 구현
이오 I.NET
영향을 받다
Smalltalk, NewtonScript, Self, Lua, Lisp, Python, Act1
영향받은
이오케, 물약

Io는 Smalltalk, Self, Lua, Lisp,[2] Act1, NewtonScript에서 영감을 얻은 순수한 객체 지향 프로그래밍 언어입니다.Io는 Self 및 NewtonScript와 유사한 프로토타입 기반 객체 모델을 사용하여 인스턴스와 클래스구분을 없앱니다.Smalltalk처럼 모든 것이 객체이며 동적 타이핑을 사용합니다.Lisp와 마찬가지로 프로그램도 데이터 트리일 뿐입니다.Io는 동시성을 위해 액터를 사용합니다.

Io의 주목할 만한 특징은 최소 크기와 외부 코드 리소스 [citation needed]사용에 대한 개방성입니다.Io는 작은 휴대용 가상 시스템에서 실행됩니다.

역사

이 언어는 2002년 스티브 데코르트가 친구 드루 넬슨의 언어인 셀을 돕기 위해 노력한 끝에 만들어졌다.그는 언어가 어떻게 작동하는지 잘 모른다는 것을 알게 되었고, 문제를 더 [3]잘 이해하기 위해 작은 언어를 쓰기 시작했다.

철학

Io의 목표는 개념 통합과 동적 언어를 탐색하는 것이기 때문에 성능보다 단순성과 유연성을 선호하는 경향이 있습니다.

특징들

구문

가장 단순한 형태에서는 단일 식별자로 구성됩니다.

 doStuff 

위의 doStuff가 메서드라고 가정하면 0 인수를 사용하여 호출되므로 명시적인 괄호는 필요하지 않습니다.

doStuff에 논쟁이 있다면 다음과 같습니다.

 doStuff(42) 

Io는 메시지 전달 언어이며 Io의 모든 것이 메시지(댓글 제외)이기 때문에 각 메시지는 수신자에게 전송됩니다.위의 예는 이를 잘 보여주고 있지만 완전히는 아닙니다.이 점을 더 잘 설명하기 위해 다음 예를 살펴보겠습니다.

 시스템. 버전 

위의 예에서는 Io로 전달되는 메시지를 보여 줍니다. "버전" 메시지는 "시스템" 개체로 전송됩니다.

연산자는 위의 예시와 같이 구문이 명확하지 않은 특수한 경우입니다.Io 파서는 인터프리터에 의해 정의된 연산자 세트를 대행 수신하여 메서드콜로 변환합니다예를 들어 다음과 같습니다.

 1 + 5 * 8 + 1 

번역자:

 1 + (5 *(8)) +(1) 

Io의 모든 연산자는 메서드이며 명시적 괄호가 필요하지 않다는 점이 편리합니다.보시는 바와 같이 여기에서는 연산자 우선 순위도 약간 존재하며 우선 순위 수준은 C 우선 순위 수준과 동일합니다.

메서드 및 블록

Io에서 익명 함수를 만드는 방법은 메서드와 블록 두 가지가 있습니다.둘 다 범위를 제외하고는 거의 동일합니다.블록에는 어휘 범위가 있지만 메서드에는 동적 범위가 있습니다.

메서드와 블록은 모두 고차 함수입니다.

어디서나 볼 수 있는 Hello 월드 프로그램:

 "안녕, 세상아!" 인쇄 

새 개체는 개체를 복제하여 생성됩니다.특히 Io에서는 빈 새 개체가 생성되고 새 개체와 상위 개체 간의 차이만 새 개체 내에 저장됩니다. 이 동작을 차등 상속이라고 합니다.이 동작의 예를 다음에 나타냅니다.

 A := 물건 클론         // "A"라는 이름의 새 빈 개체를 만듭니다. 

Io에서 단순 비재귀 요인 함수:

요인 := 방법(n,     한다면(n == 0, 돌아가다 1)     인식하다 := 1     범위 1 로.(n) 앞지르다(i, 인식하다 = 인식하다 * i) ) 

의 할당이 있기 때문입니다.res * i로.res는 마지막으로 실행된 액션이며 함수는 결과를 암묵적으로 반환하므로 명시적인 반환 표현은 필요하지 않습니다.위는 범위 사용법을 나타내며, 다음 항목은 사용하지 않습니다.for()더 빠른 루프입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Io Releases". GitHub. Retrieved 2020-02-06.
  2. ^ Io 프로그래밍 가이드
  3. ^ Tate, Bruce (2010). "Chapter 3: Io". Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (1st ed.). Raleigh, North Carolina: Pragmatic Bookshelf. p. 60, 72. ISBN 978-1934356593.

외부 링크