내 세상을 바꾼 코드 열 줄

2 hours ago 1

화면에 인사를 끝없이 출력하는 BASIC 두 줄만으로도, 컴퓨터가 내가 시킨 대로 움직인다는 사실에 눈이 휘둥그레지던 순간이 있었음 실행 중인 명령어를 바꾸는 6502 어셈블리와 게임에 무한 목숨을 주는 POKE는, 프로그램도 들여다보고 직접 바꿀 수 있다는 깨달음을 줌 Windows에서 빈 파일을 만드는 짧은 배치 스크립트와 진분홍색 테두리를 두르는 CSS 한 줄은 거창하지 않아도 매일 꺼내 쓰는 도구가 됨 JavaScript로 배트맨 주제가를 만들고, 빈 반복문의 횟수를 줄여 최적화를 가장하는 농담처럼 짧은 코드에는 개발자 특유의 유머도 담김 280자의 CSS만으로 움직이는 시를 만들 수도 있음. 직접 쓰거나 수없이 복사하고, 웃거나 울게 했던 코드 열 가지를 돌아봄 Hello World: 컴퓨터와 나눈 첫 인사 처음 입력한 시점이나 쉼표·느낌표의 개수는 기억나지 않지만, 화면에 인사를 출력하는 BASIC 두 줄은 컴퓨터와 처음 소통하는 경험을 줌 10 PRINT "HELLO, WORLD!" 20 GOTO 10 첫 줄이 세상에 인사를 건넸다면, GOTO 10은 그 인사를 영원히 반복하게 함 컴퓨터가 내가 시킨 대로 움직인다는 사실에 눈이 휘둥그레지던 순간임 JavaScript의 기묘함과 Batman Array(16).join('wat' - 1) + ' Batman' 'wat' - 1은 숫자로 계산할 수 없어 NaN 이 되며, 이를 반복해서 붙이면 NaNNaNNaN… Batman이라는 문자열이 만들어짐 나나나나를 반복하는 옛 배트맨 TV 시리즈의 주제가와 JavaScript의 기묘한 형 변환이 만나는 한 줄짜리 농담임 고전적인 Wat 발표와 연결된 예제로, 처음 실행했을 때 실제로 웃음을 터뜨리게 한 코드임 자기 자신을 수정하는 6502 어셈블리 실행 중인 프로그램도 메모리에 놓인 바이트이므로, 자신의 명령어를 덮어써 동작을 바꿀 수 있음 아래 코드는 데이터를 복사한 뒤 명령어에 적힌 주소를 직접 수정해 다음 메모리 구간으로 넘어감 LDX #$00 .loop LDA $2000,X STA $0400,X INX BNE .loop INC .loop+2 INC .loop+5 LDA .loop+5 CMP #$07 BNE .loop 처음에는 $2000부터 $20FF까지의 데이터를 $0400부터 시작하는 영역으로 복사함 한 구간을 마치면 INC .loop+2와 INC .loop+5가 읽기·쓰기 명령어의 주소를 변경함 다음...

Read Entire Article