Trawling

최신기사

AI, 개발 도구, 오픈소스, 보안과 인프라의 변화와 이용 조건을 설명하는 최신 기사와 해설입니다.

Rust에는 이미 이름 있는 인자가 있습니다

발행

Rust에 이름 있는 인자, 기본 인자, 오버로딩이 없어도 구조체와 Option, Default, 트레이트, 열거형, 반복자로 비슷한 API를 만들 수 있다는 글입니다. 저자는 호출 규칙을 늘리는 대신 기존 타입 시스템을 조합하자고 주장하며, Reddit에서는 이 방식의 명료함과 보일러플레이트 부담을 두고 논쟁이 이어집니다.

PEG와 정규식 비교: SXML로 HTML을 만드는 Lisp 기반 Org 파서

발행

Guile Scheme의 PEG 문법으로 Org 문서를 AST로 파싱한 뒤 SXML을 거쳐 HTML로 렌더링하는 라이브러리 OrgWebAlchemy를 소개합니다. 중첩 목록과 인라인 마크업처럼 정규식만으로 다루기 까다로운 문법을 처리하며, 아직 Org 전체 기능을 지원하지는 않습니다.

프로그래머를 위한 현대 Object Pascal 입문

발행

Castle Game Engine의 Object Pascal 입문서가 스트림 기반 입출력, 제네릭 컨테이너, 객체 복사를 설명합니다. FPC와 Delphi 사이의 호환성을 고려한 컨테이너 선택부터 TPersistent.Assign의 상속 규칙까지 코드 예제로 다룹니다.

멜의 이야기

발행

Ed Nather가 1983년에 쓴 글로, 기계어만으로 프로그램을 짜고 드럼 메모리의 회전 타이밍까지 맞춘 프로그래머 멜의 일화를 들려줍니다. 명령어 주소를 직접 수정해 반복문을 만들고 주소 오버플로를 분기 명령으로 활용한 사례가 중심입니다.

이번엔 직접 코드를 썼습니다. 답이 틀려도 배운 걸까요?

발행

AI 에이전트로 26개 넘는 프로젝트를 만든 저자가 Stanford의 초급 Python 과정에 지원하며 처음 직접 코드를 작성합니다. 프로그램은 작동했지만 GPT가 틀린 NBA 기록을 자신 있게 답하면서, 코드 작성과 답 검증이 서로 다른 기술임을 보여줍니다.

중간 AST 없이 JSON 객체 파싱하기

발행

JSON 라이브러리는 보통 먼저 JSON AST를 만든 뒤 도메인 데이터로 변환합니다. 이 글은 Haskell의 지연 평가와 비트셋을 이용해 중간 표현을 생략하는 파서를 구현하고, 마이크로벤치마크에서 약 3배 빠른 결과를 얻었습니다.

Zig를 배우는 여정

발행

Zig 개발자 Andrew Kelley가 Zigtoberfest에서 제안한 학습 경로를 소개합니다. 시스템과 의존성을 깊이 이해하고, 빌드와 실행 동작을 직접 설계하며, 프로젝트를 완성하는 과정이 Zig뿐 아니라 소프트웨어 엔지니어로 성장하는 데 도움이 된다고 설명합니다.

Go의 `if err != nil`이 그리워 TypeScript용 errval을 만들었습니다

발행

errval은 TypeScript에서 오류를 명시적으로 반환하고, 호출부에서 처리하도록 돕는 라이브러리입니다. 오류 타입을 호출에서 추론하고 `match`의 누락된 분기를 컴파일 오류로 잡습니다. 실패 경로 벤치마크와 오류 생성 방식도 공개했습니다.

프로그래밍 언어의 타입 시스템에 별칭 추론을 맡기지 마세요

발행

Futhark는 배열을 복사하지 않고 갱신하는 기능의 안전성을 보장하려고 소비(consumption)와 별칭(alias)을 타입 검사에서 추적합니다. 이 글은 추상 타입과 고차 함수가 추적 규칙을 복잡하게 만드는 과정을 설명하고, 자기 별칭(self-aliasing) 처리와 매개변수성(parametricity)을 활용하는 설계안을 제시합니다.

TypeScript와 CSS로 만드는 네이티브 앱

발행

GeaStack은 TypeScript와 CSS로 작성한 앱을 여러 운영체제와 ESP32 같은 임베디드 기기에서 실행하는 도구 모음입니다. 중심에는 TypeScript를 C++로 정적으로 컴파일하는 컴파일러가 있으며, 저장소에는 앱 예제와 빌드·플래시 절차가 정리돼 있습니다.

AI를 의인화하지 않고 말하는 법

발행

Emily M. Bender와 Nanna Inie는 소프트웨어에 사고력·감정·행위 의도가 있는 듯한 표현을 줄이고, 시스템 기능과 이를 사용하는 사람을 드러내는 대체 표현을 제안합니다. ‘환각’을 ‘바람직하지 않은 출력’으로, ‘AI 에이전트’를 ‘확률적·검증되지 않은 소프트웨어 조작기’로 바꾸는 식입니다.

프로그래밍 언어를 제대로 설계하기

발행

새 프로그래밍 언어가 초기에 결정해야 할 설계 원칙을 정리합니다. 들여쓴 여러 줄 문자열, 파일 경로와 확장자, 후행 쉼표, 키워드와 숫자 리터럴, 개발·배포 환경, 버전 관리, 빌드 시스템과 파일 감시까지 생태계와 호환성을 좌우하는 세부 사항을 짚습니다.

인자 기능을 둘러싼 논쟁

발행

Steve Klabnik이 Rust에 named parameter, optional/default argument, function overloading을 넣을 때 생기는 복잡성을 살펴봅니다. coding agent 시대에는 named parameter만 다시 검토할 여지가 있지만, 패턴·함수 포인터·trait·평가 순서 같은 문제가 남아 있다고 설명합니다.

왜 0xCAFEBABE인가?

발행

Java .class 파일의 첫 4바이트를 식별하는 매직 넘버 0xCAFEBABE의 유래를 다룹니다. Java라는 이름보다 먼저 정해졌으며, 재미와 기억하기 쉬운 형태를 고려해 선택했다는 당시 개발자의 설명과 다른 시스템의 유사한 값도 소개합니다.

Jev를 형편없는 챗봇으로 만들어 봤습니다

자료 요약발행

jevchat은 Jev에게 매 단계마다 다음에 올 문자나 토큰을 묻고, 확률 분포에서 하나를 뽑아 답변을 이어가는 채팅 도구입니다. 알파벳과 탐색 전략을 바꿔가며 문자 단위 샘플링, 이진 탐색, 빔 서치 등을 실험할 수 있지만 API 비용은 상당히 비현실적입니다.