프로그래밍 언어 전문가들을 위한 노트
기원
Wolfram 언어는 무엇보다 먼저 Mathematica를 위해 앞서 개발 된 기호 언어로서 30여 년에 걸쳐 진화해 왔습니다. 뿐만아니라, Wolfram|Alpha의 지식, 지식 표현, 자연 언어 입력 기능 외에도 Wolfram Cloud에서 생성되는 새로운 기호 배치 메커니즘 역시 단순한 기호 언어를 초월 것입니다.
이론적 기반
Wolfram 언어는 일찍부터 기호 시스템에 대한 기본적인 개념을
기반으로 계산을 위한 범용 언어로 구상 되었습니다.
첫 번째 킬러앱: 수학
Wolfram 언어의 개념은 먼저 Mathematica에서 매우 까다로운
수학 계산 분야에 적용되어 30여 년에 걸쳐 큰 성공을 거두고
있습니다.
개발 전부터 이마 수백만의 사용자 보유
Wolfram 언어는 Mathematica에 포함 되기전부터 30여 년 이상 세계 유수의 연구자와 무수한 학생 등을 포함한 수백만 명의 사용자에 의해 이용되어 오고 있습니다.
하드웨어를 초월하여
Wolfram 언어는 시작부터 그 시대의 하드웨어 한계와 타협하지
않고 원칙을 따르도록 설계되어 있습니다 (모두 기호 적이며, 무한 정밀도의 탑재 등).
노트북에서의 프로그래밍이라는 발상
이미 선구적으로 Mathematica에서 30여 년 전부터 사용되고있는 Wolfram 언어는 출력을 돌려주는 실행 코드와 출판 품질의 타입 세트를 결합한 인터랙티브 노트북 문서에서 프로그램 생성이
가능합니다.
기호적 프로그래밍의 중요성 학습
데이터 구조, 코드 단편, 그래픽, 문서, 인터페이스... 30여 년 이상의 개발 기간 동안 Wolfram 언어는 기호 프로그래밍 적용의 다양한 방법을 지속적으로 더해가고 있습니다.
Wolfram|Alpha: 현실 세계 캡처
Wolfram|Alpha는 다양한 실제 지식의 계산을 가능하게 하였으며, 이를 Wolfram 언어에 통합하여 형식적인 구조뿐만 아니라 현실
세계에 대해서도 다룰 수있게 하였습니다.
수십억 행의 코드
전세계 소프트웨어 시스템 내부에 수십억 행의 Wolfram 언어 코드가 포함되어 있습니다. Wolfram|Alpha와 Wolfram 언어 자체에도 수천만 행이 포함되어 있습니다.
대대로 사용 가능한 언어
Wolfram 언어의 독창적인 디자인은 시대를 거슬러 1988년 출시된 오리지널 Mathematica 1.0 과도 호환이 가능합니다.
30여 년 이상 앞서간 시대의 선두주자
Wolfram 언어는 수많은 새로운 프로그래밍 아이디어를 탄생시켰습니다. 그 중에는 지난 30여 년 동안 개발된 다른 언어들에 영향을 준 것도 있지만, 대부분은 Wolfram 언어 내에 여전히 존재하고 있습니다.
현시대 화제의 선진 기술에 대응
Wolfram 언어는 신, 구 언어 모두를 표현하고 있습니다. 오랜 역사를 가지고 있으면서도 참신한 새로운 아이디어 역시 함께 포함하고 있기 때문입니다. 일반적인 모던 프로그래밍 언어의 선진 기술에 잘 대응하는 특성을 가지고 있으면서도 다른 언어에서는 흔히 접할 수 없는 특성도 역시 다수 찾아볼수 있습니다.
Wolfram 언어는...
(많은 특징들 가운데)
지식 기반
Wolfram 언어는 중심이되는 기본 이념 중 하나로 알고리즘 및
세계에 대한 광범위한 지식을 포함하고 있습니다.
기호적
Wolfram 언어는 코드, 데이터, 이미지, 문서, 인터페이스, 프로그램 등 모두 기호 식으로 나타냅니다.
인터랙티브
Wolfram 언어 코드는 사용자와 시스템 사이에서 문서 기반 REPL 다이얼로그로 상호 실행할 수 있습니다.
함수형
기호적 특성을 가진 Wolfram 언어는 일반화 된 변환에 기반 된
함수형 프로그래밍의 확장 형식을 지원합니다.
하이 레벨
지식 기반이라는 특성과 최대한 자동화라는 기본 이념을 가진 Wolfram 언어는 세계에서 가장 높은 수준의 언어라 할 수
있습니다.
선언적
Wolfram 언어는 지정된 하이 레벨의 목표를 달성하기 위해 고도로 자동화 된 슈퍼 함수를 사용하여 선언적 개념의 궁극적인 형태를 포함하고 있습니다.
"동력 내장"
Wolfram 언어는 마치 발전소를 내장하고 있는 것과 같습니다. Wolfram 언어는 일관성있는 알고리즘과 지식이 내장되어있어
즉시 상호 운용이 가능하도록 설정되어 있습니다.
동일성
Wolfram 언어는 그 기호적 특성에 따라 기본적으로 "코드=데이터"의 공식이 성립합니다.
패턴 지향적
기호 식의 세련된 패턴 매칭은 Wolfram 언어의 주요 기능이라
할 수 있습니다.
메타 프로그래밍
기호적 특성을 가진 Wolfram 언어는 대규모로 뿐만 아니라 언어의 모든 파워를 사용한 코드의 즉각적 수정 또한 가능합니다.
간결성
모든 임베디드 기능 및 신중하게 선택된 근원적 Wolfram 언어의 프로그램은 짧은 반면 커다란 결과를 제공합니다.
표현식 기반
Wolfram 언어에서는 데이터 및 코드 등 값을 가진 무엇이든 계층 구조의 기호 식으로 표현됩니다.
경향 반영
Wolfram 언어의 기호적 특성은 완전한 자기 성찰이 가능합니다.
다형성
패턴 매칭을 사용하여 함수를 지정하면 Wolfram 언어는 즉각적으로 매우 다양한 동작을 식으로 나타냅니다.
다이나믹 유형
Wolfram 언어는 모두 기호 식으로 구성 되어있으며 모든 기호식에는 그 동작을 자동으로 정의하는 헤드가 포함되어 있습니다.
응용적
Wolfram 언어의 프로그램은 기호적 변환의 열을 불변의 기호 식에 적용하는 것으로 간주할 수 있습니다.
연결성
Wolfram 언어의 기호적 특성으로 인하여 의미를 이루는 부분들의 연결로 신속하게 프로그램을 구축 할 수 있습니다.
자가 반복 지양
Wolfram 언어의 기능적 심볼릭 패러다임에서 코드를 자유롭게
분해 할 수 있기 때문에 Wolfram 언어는 DRY, 즉 반복을 피하여 손쉽게 프로그램을 작성할 수 있도록 설계 되어 있습니다.
도메인 특정 언어에 대응
Wolfram 언어가 가진 기호적 특성은 언어에서 도메인 지정 언어 생성을 간단하게 진행할 수 있으며, 다수는 이미 포함되어 있습니다 (정규 표현식, 그래픽, 인터페이스 배포 등).
지식 표현
폭 넓은 임베디드 지식 및 심볼릭 구조를 갖춘 Wolfram 언어는
지식을 표현하고 그것을 계산하는데 매우 적합합니다.
의미적
Wolfram 언어는 현실 세계의 실체와 구조의 표현이 폭넓게 포함되어 있습니다.
수학적
Wolfram 언어는 세계에서 가장 폭넓고 깊은 수학적 계산 기능을 내장하고 있습니다.
임의의 정밀도 조절
Wolfram 언어는 어떠한 정밀도 및 길이도 숫자로 사용할 수 있습니다.
기호적-수치적
Wolfram 언어는 심볼릭 계산과 수치 계산을 모두 깊이 지원하고 있으며, 알고리즘의 대부분은 이러한 방식을 결합하고 있습니다.
쿼리가 가능
Wolfram 언어에서는 모든 데이터가 기호 식으로 표현되기 때문에 하이 레벨 함수 구조를 이용하여 일관된 쿼리 사용이 가능합니다.
객체 지향적
Wolfram 언어는 기존의 객체 지향 프로그래밍을 대체하는 강력한 기호 프로그래밍을 지원합니다.
리액티브
Wolfram 언어는 함수형 리액티브 프로그래밍을 구현하여 복잡한 다이나믹 사용자 인터페이스 구축을 지원합니다.
멀티 디스패치
Wolfram 언어의 기호 패턴 매칭에서는 함수의 어느 인수도 또는 식의 어떤 부분이라도 즉시 발송이 가능합니다.
표현적
Wolfram 언어의 주의 깊은 설계와 다양한 내장 기능을 통해 계산에 대한 생각을 언어로 명확하게 내타낼 수 있습니다.
높은 가독성
사려깊은 이름과 구조의 선택에 중점을 두고 발전해온 Wolfram
언어는 판독이 매우 용이합니다.
문서 중심
Wolfram 언어에서 코드는 ASCII 텍스트 뿐만 아니라 노트북으로 제작이 가능합니다.
문서화
Wolfram 언어에서는 실행 가능한 프로그램을 고도로 구조화된 노트북으로 작성할 수 있습니다.
스크립트 작성 가능
Wolfram 언어는 다양한 환경 및 언어에서 외부 작업 스크립트
작성에 사용할 수 있습니다.
자연 언어
Wolfram|Alpha와 동일한 기술 위에 구축 된 Wolfram 언어는 프로그램의 일부로서 뿐만 아니라 기능에도 역시 자연 언어 입력을
사용할 수 있습니다.
JIT 컴파일
Wolfram 언어는 자신의 가상 머신의 완벽한 적시 컴파일을 사용하여 성능을 최적화하고 해석 된 조작 뿐만 아니라 컴파일 된 조작 역시 최고 결과를 제공합니다.
병렬화 가능
Wolfram 언어는 여러 개의 개별 시스템으로 또한 다양한 환경의 네트워크에 대응할 수있는 병렬 컴퓨팅 기능이 포함되어
있습니다.
클라우드 기반
Wolfram 언어는 로컬에서 실행할 수 있을뿐 아니라 클라우드에서도 실행할 수 있으며 다양한 형태의 클라우드 기반 컴퓨팅을 지원합니다.
클라이언트-서버 지향적
Wolfram 언어의 인터랙티브 인터페이스는 WolframLink 기호 프로토콜을 통해 하나 또는 여러 계산 커널과 통신 할 수 있도록 설정되어 있습니다.
플랫폼 독립성
Wolfram 언어는 로컬 또는 클라우드의 모든 표준 컴퓨터 플랫폼에서 동일하게 작동합니다.
핫 스와핑
Wolfram 언어는 해석적 언어이며 그 배치는 기호적이기 때문에
어떤 실행 단계에서도 코드를 검사하고, 디버깅하고 수정할 수 있습니다.
FFI 지원
Wolfram 언어는 다양한 수준에서 작동하는 다른 언어 함수 인터페이스의 충실한 지원이 포함되어 있습니다.
상호 운용 가능성
Wolfram 언어는 다른 언어, 그리고 수백가지 형식의 데이터와
상호 작용할 수 있는 능력을 지니고 있습니다.
안전성
Wolfram 언어는 포인터와 메모리 할당 등의 낮은 수준 구조를
제시하지 않기 때문에 대용량 버그를 피할 수 있습니다.
지속성
Wolfram 언어는 코드, 데이터, 그래픽, 인터페이스 등 무엇이든
기호 식으로 표현할 수있기 때문에 지속적인 저장 장치에 대한 즉각적 직렬화가 가능합니다.
몽키 패치가 가능
Wolfram 언어는 거의 모든 작업을 재정의하는 일관된 메커니즘을 제공합니다.
불변성
Wolfram 언어는 무엇이든 자신의 값을 나타내는 기호 식으로 표현됩니다. 특정 함수에만 식을 "그 자리"로 변경함에 따른 뜻하지 않은 결과를 초래할 수 있습니다.
안정성
Wolfram 언어는 30년 이상의 시간에 걸쳐 완벽에 가까운 하위
호환성을 유지해온 Mathematica 호환 언어 진화의 산물입니다.
Wolfram 언어는 30년 이상의 시간에 걸쳐 완벽에 가까운 하위
호환성을 유지해온 Mathematica 호환 언어 진화의 산물입니다.