제약된 디코딩: LLM을 빠른 의사결정 모델로
여기 조용히 쓸모 있는 간단한 기법이 하나 있습니다. LLM이 내보낼 첫 번째 토큰만 신경 쓴다면, 객관식 질문을 던지고 단 한 번의 순전파(forward pass)로 답을 얻을 수 있습니다. 제약된 디코딩(어휘에서 받아들이고 싶은 소수의 토큰만 남기고 나머지를 모두 마스킹하는...
프로그래밍 언어 심층 분석: 새로운 기능, 성능, 생태계 동향.
기사 15개여기 조용히 쓸모 있는 간단한 기법이 하나 있습니다. LLM이 내보낼 첫 번째 토큰만 신경 쓴다면, 객관식 질문을 던지고 단 한 번의 순전파(forward pass)로 답을 얻을 수 있습니다. 제약된 디코딩(어휘에서 받아들이고 싶은 소수의 토큰만 남기고 나머지를 모두 마스킹하는...
1989년, 이후 Go, UTF-8, Plan 9를 함께 만든 Rob Pike는 프로그래밍 규칙 다섯 가지를 정리했습니다. 인덱스 카드 한 장에 다 적을 만큼 짧지만, 프로그래밍 세계는 37년 동안 이 규칙을 두고 논쟁해 오고 있습니다. 대부분의 개발자는 블로그나 컨퍼런스 발표에서 이...
프로그래밍 언어 이론 커뮤니티에서는 가끔 이런 주장이 나옵니다. ‘충분히 상세한 명세는 코드와 구별할 수 없다.’ 도발적인 주장이죠. 프로그램이 무엇을 해야 하는지 설명하는 것과 실제로 그렇게 동작하게 만드는 것 사이의 선이 생각보다 얇다는 뜻입니다. 명세가 모호함을 완전히 없앨 만큼...
SQLite는 어디에나 있습니다. 여러분의 휴대폰, 브라우저, 스마트 TV, 아마 자동차 안에도 들어 있죠. SQLite는 별도의 서버 없이 애플리케이션에 완전한 SQL 데이터베이스를 제공한다는 근본적인 문제를 해결했고, 그 성과가 워낙 좋아서 ‘임베디드 데이터베이스’라고 하면 곧...
Ryan Dahl이 Node.js에서 물러났을 때 프로젝트는 살아남았지만, 거버넌스를 재편하고 포크(io.js)를 거치고 다시 합치는 과정을 거쳐 안정을 찾기까지 몇 년이 걸렸습니다. Guido van Rossum이 Python의 BDFL('Benevolent Dictator For...
Ruby는 느리다는 평판이 있습니다. Python도 그렇고, JavaScript도 그랬죠. 적어도 V8이 서버 사이드 워크로드를 감당할 만큼 빨라지기 전까지는요. 동적 언어가 어떻게 빨라졌는지에 대한 이야기는 곧 JIT(Just-In-Time) 컴파일의 이야기이며, 실무 컴퓨터...
자바는 프로그래밍 언어계의 로드니 데인저필드입니다. 존중을 받지 못하죠. 30대 미만 개발자 대부분에게 자바를 말하면 XML 설정 파일, 엔터프라이즈 빈, 그리고 AbstractSingletonProxyFactoryBean 같은 이름이 떠오를 겁니다. 자바의 평판은 Java 6이 최신...
스택오버플로에 조회수 300만 회가 넘는 유명한 답변이 있습니다. 질문은 이렇습니다. 정렬된 배열을 처리하는 것이 정렬되지 않은 배열보다 왜 빠를까? 코드는 동일합니다. if 문이 있는 루프일 뿐이죠. 차이는 입력 배열이 정렬되어 있는지뿐입니다. 정렬된 쪽이 6배 빠르게 돌아갑니다....
우리 모두 겪어본 일이죠. 동영상을 변환해야 해서 구글에 검색하면, 누군가 키보드를 아무렇게나 두드린 것 같은 명령어가 적힌 Stack Overflow 답변이 나옵니다: ffmpeg -i input.mov -c:v libx264 -preset slow -crf 22 -c:a aac...
매일 셸을 쓰는 개발자는 많지만, 셸이 실제로 무엇을 하는지 아는 사람은 드뭅니다. 셸은 겉보기엔 명령어를 입력하면 실행해 주는 애플리케이션처럼 보입니다. 하지만 실제로는 유닉스 운영체제의 기본 요소들을 얇게 감싼 계층에 가깝습니다. 셸을 처음부터 직접 만들어 보는 것은 프로세스,...
몇 년에 한 번씩 'Lisp은 죽었다'는 글이 올라오고, 그때마다 누군가는 여러분이 즐겨 쓰는 현대 언어의 기능 절반이 Lisp에서 가져온 것이라고 지적합니다. 가비지 컬렉션, 일급 함수, 클로저, 동적 타이핑, 호모이코니시티, REPL 기반 개발, 매크로 모두 오늘날 대부분의...
1969년, Ken Thompson과 Dennis Ritchie는 Bell Labs의 사무실에 앉아 그 시대의 다른 기술 대부분보다 오래 살아남을 설계 결정들을 내렸습니다. Unix를 작성할 때 쓴 PDP-7은 이제 박물관 전시품이 되었고, 처음 사용했던 언어들도 사라졌습니다. 하지만...
Python은 존재하기 시작한 이래로 줄곧 '느리다'는 말을 들어왔습니다. 파이썬 커뮤니티의 표준 답변인 '핫 루프는 C 확장으로 짜라'는 말은 사실 이 언어의 기본 실행 모델에 근본적인 한계가 있다는 양보였죠. CPython은 바이트코드를 명령어 하나씩 해석하고, 각 명령어는...
프로그램이 malloc()을 호출할 때마다, 어떤 가상 메모리 조각을 돌려줄지 결정해야 합니다. 작은 프로그램에서는 사소한 결정이지만, 규모가 커지면 엄청난 엔지니어링 문제가 됩니다. 나쁜 할당자는 메모리를 파편화하고, RAM을 낭비하며, 스레드 간 락 경합을 만들고, OS가 페이지를...
Flask가 1.0 버전에 도달하기까지는 8년이 걸렸습니다. SQLite는 2000년부터 꾸준히 개발되고 있고, 지금도 의미 있는 개선이 이어지고 있습니다. Linux 커널은 30년이 넘었지만 나이를 먹을수록 오히려 더 나아지고 있다고 해도 과언이 아닙니다. 반면 VC 투자를 받은...