ISWIM
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
ISWIM은 함수형 프로그래밍 코어를 가진 명령형 프로그래밍 언어이다. 람다 대수에 가변 변수, 할당, 프로그램 포인트 연산자를 추가한 구문 설탕으로 구성되었으며, 고차 함수와 렉시컬 스코핑된 변수를 가진다. ISWIM은 SECD 머신을 사용하여 연산 의미론을 정의하고, 엄격한 계산 방식인 값 호출 방식을 사용한다. 또한 where 절을 사용한 표기법적 특징을 가지며, CPL과 함께 where 절을 사용한 최초의 프로그래밍 언어 중 하나이다. ISWIM은 직접적인 구현은 없지만, PAL, Gedanken, ML 등에 영향을 주었으며, 명령형 기능을 제거하여 SASL, KRC, Hope, Miranda, Haskell, Clean과 같은 순수 함수형 언어 계열로 발전하는 데 기여했다.
더 읽어볼만한 페이지
- 함수형 프로그래밍 언어 - XQuery
XQuery는 함수형 프로그래밍 패러다임을 지원하며 XPath 식 구문의 상위 집합을 포함하는 XML 데이터 추출 및 조작을 위한 쿼리 언어로서, FLWOR 식을 통해 XML 데이터 조작 및 새로운 XML 문서 구성을 지원하고 XQuery 및 XPath 데이터 모델(XDM)을 기반으로 한다. - 함수형 프로그래밍 언어 - 코틀린 (프로그래밍 언어)
코틀린은 젯브레인즈에서 개발한 정적 타입 언어로, 자바 가상 머신에서 동작하며 자바와의 호환성을 갖고, 안드로이드 공식 지원 언어로 채택되어 다양한 분야에서 활용되고 있으며, 이름은 러시아의 코틀린 섬에서 유래되었다.
ISWIM - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
언어 | 프로그래밍 언어 |
패러다임 | 명령형 함수형 |
발표 연도 | 1966년 |
설계자 | 피터 랜딘 |
영향 받은 언어 | ALGOL 60 리스프 |
영향을 준 언어 | SASL 미란다 ML 하스켈 클린 루시드 |
2. 디자인
ISWIM은 수학적 표기법과 유사하게 보이도록 디자인되었으며, ALGOL의 문장 사이 세미콜론과 `begin` ... `end` 블록 대신 오프사이드 규칙과 들여쓰기 스타일 기반 스코핑을 사용했다.
표기법적 특징으로는 ''`where`'' 절을 사용한 점을 들 수 있다. CPL과 함께 ISWIM은 ''where'' 절을 사용한 최초의 프로그래밍 언어 중 하나였다.[3]
2. 1. 핵심 특징
ISWIM은 함수형 프로그래밍 코어를 가진 명령형 프로그래밍 언어이며, 람다 대수에 가변 변수와 할당, 강력한 제어 메커니즘인 ''프로그램 포인트'' 연산자가 추가된 구문 설탕으로 구성되어 있다. 람다 대수를 기반으로 하는 ISWIM은 고차 함수와 렉시컬 스코핑된 변수를 가지고 있다.ISWIM의 연산 의미론은 Landin의 SECD 머신을 사용하여 정의되었으며, 값 호출 방식, 즉 엄격한 계산 방식을 사용한다.[2] ISWIM의 목표는 수학적 표기법과 유사하게 보이는 것이었으며, Landin은 ALGOL의 문장 사이의 세미콜론과 `begin` ... `end` 블록을 버리고 오프사이드 규칙과 들여쓰기 스타일 기반의 스코핑으로 대체했다.
ISWIM의 표기법적 특징은 ''`where`'' 절의 사용이다. ISWIM 프로그램은 ''where'' 절(변수 간의 방정식을 포함한 보조 정의), 조건식 및 함수 정의로 한정되는 단일 표현식이다. CPL과 함께 ISWIM은 ''where'' 절을 사용한 최초의 프로그래밍 언어 중 하나였다.[3]
주목할 만한 의미론적 특징은 (가능성이 있는 재귀적인) 곱의 합으로 새로운 데이터 타입을 정의할 수 있다는 것이다. 이것은 다소 장황한 자연어 스타일의 설명으로 수행되었지만, 표기법 외에는 현대적인 함수형 언어에서 발견되는 대수적 데이터 타입과 정확히 일치한다.[4] ISWIM 변수는 명시적인 타입 선언을 가지지 않았으며 (1966년 논문에는 명시적으로 언급되어 있지 않지만) Landin은 LISP처럼 동적으로 타입을 지정하는 언어를 의도했을 가능성이 높다. ALGOL과는 다르다. 그러나 그가 타입 추론의 형태를 개발하려고 했을 가능성도 있다.
3. 구현 및 파생 언어
ISWIM의 직접적인 구현은 완료되지 않았다. 하지만 아트 에반스의 PAL[5], 존 C. 레이놀즈의 ''Gedanken''[6]은 랜딘의 개념 대부분을 포함하고 있었다. 이 두 언어는 모두 동적 타이핑을 사용했다. 로빈 밀너의 ML은 J 연산자가 없고 타입 추론이 있는 ISWIM과 동등하다고 볼 수 있다.
ISWIM에서 파생된 또 다른 흐름은 명령형 기능(할당 및 J 연산자)을 제거하여 순수 함수형 언어를 만드는 것이었다.[7] 이를 통해 느긋한 계산법으로 전환이 가능해졌다. 이 경로는 SASL, 켄트 재귀 계산기(KRC), Hope, Miranda, Haskell, Clean과 같은 프로그래밍 언어로 이어졌다.
3. 1. ISWIM의 영향을 받은 언어
ISWIM의 직접적인 구현은 완료되지 않았지만, 아트 에반스(Art Evan)의 언어 PAL[5]과 존 C. 레이놀즈의 언어 ''Gedanken''[6]은 강력한 제어 전송 연산을 포함하여 랜딘(Landin)의 대부분의 개념을 담고 있었다. 이 두 언어 모두 동적 타이핑을 사용했다. 로빈 밀너의 ML은 J 연산자가 없고 타입 추론이 있는 ISWIM과 동등하다고 간주될 수 있다.ISWIM에서 파생된 또 다른 흐름은 명령형 기능(할당 및 J 연산자)을 제거하여 순수 함수형 언어를 만드는 것이다.[7] 이렇게 하면 느긋한 계산법으로 전환하는 것이 가능해진다. 이 경로는 SASL, 켄트 재귀 계산기(KRC), Hope, Miranda, Haskell, 그리고 Clean과 같은 프로그래밍 언어로 이어졌다.
3. 2. 순수 함수형 언어 계열
ISWIM에서 파생된 또 다른 흐름은 명령형 기능(할당 및 J 연산자)을 제거하여 순수 함수형 언어를 만드는 것이다.[7] 이렇게 하면 느긋한 계산법으로 전환하는 것이 가능해진다. 이 경로는 SASL, 켄트 재귀 계산기(KRC), Hope, Miranda, Haskell, Clean과 같은 프로그래밍 언어로 이어졌다.참조
[1]
논문
The Next 700 Programming Languages
https://www.cs.cmu.e[...]
Association for Computing Machinery
1966-03
[2]
보고서
Call-by-Name, Call-by Value and the Lambda Calculus
http://homepages.inf[...]
1975
[3]
문서
ISWIM
FOLDOC
[4]
간행물
Some History of Functional Programming Languages
http://dx.doi.org/10[...]
Springer Berlin Heidelberg
2024-01-28
[5]
학회
PAL: a language designed for teaching programming linguistics
Association for Computing Machinery
1968
[6]
보고서
GEDANKEN: a simple typeless language which permits functional data structures and co-routines
Argonne National Laboratory
1969-09
[7]
논문
A definition of an ISWIM-like language via Scheme
1993-04
[8]
논문
The Next 700 Programming Languages
https://www.cs.cmu.e[...]
Association for Computing Machinery
1966-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com