가변적인 크기를 가질 수 있는 하나의 자료형만 존재하고 그게 무엇을 의미하는지는 자료의 실질적인 값 또는 외부에서 보여지는 상태로 구분되는 것을 말하고 있어. "data is code, code is data." 라는 문장하고도 비슷한 말이지. 어떤 변수가 문자열을 담고 있고 평문이거나 값을 가지고 있다면 변수, 실행 가능한 코드와 같은 구조를 가지고 있다면 함수로 본다는 거야. 아니면 그 변수의 상태를 나타내는 메타데이터가 구분할수도 있지.
내 생각에 이런 개념과 가장 가까운 것은 유닉스의 파일 시스템이라고 보는데. 문자를 담는 파일과 바이너리를 담는 파일을 따로 구분하진 않고 단지 하나의 파일로 취급하기 때문에 실행 파일을 문자 다루듯이 할 수 있고 그 반대로도 가능하지. 그러나 실행 파일과 실제로 실행이 가능한 파일은 달라서 가지고 있는 내부 데이터의 구조가 실행 파일이여도 권한이 주어지지 않으면 실행할 수 없고 문자를 담는 파일에 실행 권한이 주어졌고 이 파일이 통상적으로 ELF 같은 실행 파일의 구조가 아닌 셸 스크립트의 구조를 가지고 있다면 스크립트로 실행되는거지. 요약하자면 파일 시스템은 데이터의 구조와 메타데이터로 의미를 구분하니까 내가 생각하는 개념하고 비슷함.
반대로 이런 프로그래밍 언어는 나오지 않을거라고 보는 이유가 이미 설명부터 논리적 결함 투성이로 언어의 기준을 만들기 난해할 뿐더러 어렵게나마 인터프리터를 만들었다 해도 멀쩡하게 동작하는 프로그램은 만들기 어려울거라 생각해. 이런 이상한 생각의 모티브가 된 자바스크립트도 이제는 타입 시스템이 있는것이 대세가 되어가는 중이기도 하고.
하지만 나는 언제나 모험을 즐기는 스타일이여서 이런 개념은 누가 보기에 말도 안되고 허무맹랑한 아이디어지만 생각하는 것만으로도 재미있어서 가끔씩 망상에 가까운 상상을 하기도 하지만 나는 그런것도 괜찮아. 이건 진지하게 쓴 글은 아니라서 어쩌면 누군가는 한 번씩 해본 생각일수도 있고 이미 그런 아이디어가 구현되었다면 어떻게 생겼을지 궁금하기만 해서 있으면 답변을 부탁함.
근로저 해라 Clojure 대충 비슷한 사상으로 구현되어 있다 기본 자료구조 map vector list symbol keyword 몇개만으로 모든 걸 다 헤쳐먹는다
그것과는 별개로 글 가독성을 좀 높여 보아요 이번에는 읽었지만 사람들이 비추만 존나 박고 런 하는 이유가 있음
(근로저도 단일 자료구조까지는 아니고 정해진 몇개이긴 함 단일 자료구조로 다 한다는 건 리스트로 모든 걸 처리하는 리슾계열 scheme 정도일까)
최대한 노력해서 써봤는데 가독성은 아직 글러먹었군요. 지금 봐도 이해가 갑니다.
왜 Unix-like라는 표현 안씀?
유닉스가 만든거지 유닉스 계통에서 갑자기 나온게 아니잖아. 그러니까 최초로 만든곳의 이름을 붙히는게 맞지.