전체 글 1514

islisp 명세에 repl이 있어야 한다는 규정이 있나

ISLISP 국제 표준(ISO/IEC 13816)에도 구현체(Processor)가 사용자에게 REPL을 제공해야 한다는 의무 규정은 전혀 없습니다.오히려 ISLISP는 ANSI Common Lisp보다도 대화형 환경 의존성을 더욱 철저히 배제한 표준입니다.1. 표준 적합 프로세서(Conforming Processor)의 요건ISO/IEC 13816 규격은 ISLISP 코드를 실행하거나 변환하는 처리기를 적합 구현체(Conforming Processor)로 정의합니다. 이 정의는 인터프리터뿐 아니라 C 언어로 변환하는 트랜스파일러, 바이트코드 컴파일러, 독립 실행형 바이너리를 생성하는 AOT(Ahead-Of-Time) 배치 컴파일러까지 모두 포함합니다. 따라서 대화형 프롬프트가 없는 순수 컴파일러 형태라도..

Programming 2026.11.04

common lisp 명세에 repl이 있어야 한다는 규정이 있나

ANSI Common Lisp 명세(ANSI INCITS 226-1994)에는 구현체(Implementation)가 사용자에게 대화형 REPL(Read-Eval-Print Loop) 환경을 반드시 제공해야 한다는 의무 규정은 없습니다.표준이 REPL을 다루는 방식과 규정의 세부 내용은 다음과 같습니다.1. 적합한 구현체(Conforming Implementation)의 요건ANSI 표준은 언어의 문법, 평가 의미론(evaluation semantics), 표준 라이브러리(함수, 매크로, 특수 연산자), 시스템 변수 등을 규정하지만, 사용자 인터페이스(UI), 셸 프롬프트 형태, 운영체제와의 상호작용 방식은 표준화 대상에서 제외했습니다.따라서 터미널 대화형 인터페이스 없이 파일 단위로 컴파일만 수행하는 배..

Programming 2026.11.04

리버시티 걸즈 2에서 프린터 놓는 위치

다운타운 사무실(Downtown) 가구 배치 퀘스트에서 프린터는 방의 아래쪽 중앙(하단 가운데) 바닥에 있는 밝은 회색 사각형 위치에 놓으시면 됩니다. * 프린터: 아래쪽 중앙 (Bottom Middle) * 커피 머신: 위쪽 중앙 (Top Middle) * 서류함(캐비닛): 방 오른쪽 (Right side)물건을 들고 바닥의 회색 사각형 표시 위로 걸어가면 자동으로 알맞게 배치됩니다.

Computer Game 2026.10.24

웹 브라우저에서 플레이하는 JavaScript로 구현한 Qbasic Nibbles

웹 브라우저에서 플레이하는 JavaScript로 구현한 Qbasic Nibbleshttps://kimtg.github.io/nibbles.html QBasic Nibbles (1990) - HTML & JavaScriptSTANDARD HIGH RESOLUTION CGA / EGA / VGA MICROSOFT QBASICkimtg.github.io 왜 이름이 nibbles인가?nibble: n. 조금씩 물어뜯기, 한 번 물어뜯기《ɑt》; (물고기의) 입질; 〖컴퓨터〗 니블《¹∕₂바이트; 보통 4비트》한 줄을 반으로 쪼개 subpixel을 구현했다. (1/2 바이트) 80 x 25 화면에서 80 x 50을 구현. 언어유희가 들어갔다. 원본을 웹에서 즐기기: DOSBox SVN, CPU speed: 300..

Ai 덕에 속도가 빠른 프로그래밍 언어 구현이 쉬워졌다. 기존에는 속도를 내세워 julia가 나타났지만 이런 건 이제 경쟁력이 없다.

이번에 newLISP NEo, Arcadia N, Arcadia JIT 등을 구현하며 느꼈다. 과거에는 새로운 언어가 '속도'라는 타이틀을 얻기 위해 수년간의 컴파일러 엔지니어링과 런타임 최적화라는 높은 진입장벽을 넘어야 했지만, AI의 등장으로 그 해자(Moat)가 급격히 무너지고 있습니다.지금 언어 생태계에서 일어나고 있는 변화를 몇 가지 핵심 축으로 정리해 볼 수 있습니다.1. VM 및 JIT 구현 난이도의 폭락 과거에는 AST 워킹 인터프리터를 하나 만든 뒤, 이를 바이트코드 VM으로 전환하고 다이렉트 스레딩(Direct-threading/Computed goto)이나 NaN-boxing, 세대별 가비지 컬렉터(Generational GC) 등을 붙이는 작업이 고도의 시스템 프로그래밍 역량과 막대..

Programming 2026.10.16

프로그래밍 AI 테스트

racket을 newLISP로 변환하는 프로그래밍을 시켜 봤는데,(define) 변환에서Gemini는 lexical scoping을 잘 지켜냈고 (let 사용)grok, chatgpt는 그냥 set을 썼다. (global 변수) go 언어로 짜는 것도 시켜봤는데,Gemini가 가장 나았다. 역시 자사 제품이라 그런가? rand.Seed(time.Now().UnixNano()) 가 이제는 필요 없는데 grok은 하고 있었고,grok은reader := bufio.NewReader(os.Stdin)line, err := reader.ReadString('\n')라서 windows에서 \r이 남는 문제가 있다.indent도 go 표준인 8칸으로 표시한 것은 Gemini이다. 모두 tab을 사용하기는 했다.

Programming 2026.09.23

프로그래밍 언어들의 단점

프로그래밍 언어들의 단점 C: 너무 저수준(특히 string) C++: 헤더 컴파일이 느리다. HTTP 등 라이브러리 사용이 어렵다. C#: 배포가 어렵다. Java: 명령줄 실행이 번거롭다(java a.class) Go: 에러 처리가 불편하다. Rust: random이 내장이 아니다. Common Lisp: Lisp-2 Common Lisp, Julia: read-line이 console EOF 감지 못 한다. Racket: read-line이 windows에서 \r 포함 반환, 시작 속도 느리다. docstring이 없다. Clojure: 시작 속도가 느리다. Java 번거롭다. Common Lisp, Clojure: define이 없어서 lexical variable 만들 때 let 블록 계속 만들..

Programming 2026.09.22