디버그
우리는 코딩을 할 때 디버그를 꼭 한다.
왜냐하면 코드를 짜다 보면 다양한 이유로 오류가 발생할 수 있기 때문이다.
물론 그 오류는 단순한 실수때문일 수도 있고 하드웨어의 사양 혹은 고장때문일 수도 있다.
그래서 디버그 과정(디버깅)은 개발 작업에 없어서는 안 될 중요한 작업이다.
여기서 "디버그(Debug)"는 보통 오류를 찾아 수정한다는 뜻으로 사용하는데
과연 이 용어는 어떻게 만들어졌을까?
단어 자체만 보면 "벌레를 잡다(제충하다)"라는 뜻이다.
Debug의 bug에서 이미 눈치를 챘을 수도 있겠다.
디버그와 버그의 관계

그런데 오류랑 벌레(Bug)랑 무슨 연관이 있을까?
그래서 Debug의 유래를 알아보기 전에 Bug와 오류의 관계가 어디서 왔는지 알아보려 한다.
Bug가 벌레가 아니라 오류, 문제라는 뜻으로 사용된지는 사실 오래되었다.
이미 오래전 엔지니어들의 전문 용어였다고 하며 1878년에 토머스 에디슨도 언급했다고 한다.
즉, 이 Bug라는 용어는 콜로서스, 에니악같은 컴퓨터가 만들어지기도 전에
오동작이라는 의미로 사용이 되었다는 것이다.
왜 옛날 엔지니어들은 기계에 오류가 나면 Bug라고 했을까?
여기에 대한 나의 두 가지 추측(뇌피셜)이 있다.
버그(Bug)의 유래 (1) - 뇌피셜 주의

우선, 오류나 벌레나 일단 보면 기분이 안좋다는 것이다.
오류라는 개념이 생기기 이전부터 벌레라는 개념은 존재했을 것이다.
그리고 옛날에는 그렇게 심한 욕으로 쓸 수있는 단어가 흔치 않았을 것이고 말이다.
그래서 어떤 문제가 발생했을 때, 옛날 사람들은 이렇게 말했을 것이라 생각한다.
"아오~ 기분 벌레(Bug)같네~"
아니면 그냥 "뻑X크!"
솔직히 내 생각엔 진짜 fXck에서 유래된 것 같다
아니면 말고
그렇게 문제(오류)가 발생하면 <오류==벌레>인 것 마냥,
자동적으로 사람들의 입에서 Bug(fuck)가 나오게 된 것이다.
버그(Bug)의 유래 (2) - 살짝 뇌피셜

두번째, 사실 이게 제일 유력한데, 그냥 단순히 벌레로 인해 기계의 고장이 잦았던 것이다.
요즘처럼 방충망, 에프킬라, 세스코같은 벌레 퇴치법이 마땅히 없던
그 옛날에는 벌레들이 살기가 참 좋았을 것이다.
그래서 아무데나 제 집 안방처럼 드나들던 벌레들이 기계 속으로 들어가 회로 판을 갉아먹거나
전선을 물어뜯고, 그 기계속에 알을 낳고, 일심동체 상태로 죽어버려서
기계가 고장나고 오작동하는 사례가 많았을 것이다.
실제로 아래에 후술 할 Debug의 유래 또한 이와 마찬가지이다.
방금까지 버그(Bug)가 왜 오류, 오동작이라는 의미로 쓰였는지에 대해 상상해알아보았고
이제 디버그(Debug)의 유래에 대해 알아보자.
디버그라는 용어가 이렇게 우리의 일상 속에 정착한 데에는 재미있는 일화가 있었기 때문인데
여기엔 또 이 분에 대한 설명이 빠질 순 없다.
이 분 설명 먼저하고 일화를 알려주겠다!
전설적인 프로그래머 Grace Murray Hopper

위 사진의 호퍼씨는 미해군의 제독, 컴퓨터과학자, 수학자이자
최고의 프로그래머중 한 명이셨으며 최초의 디버거이시다.
(당시 세계관 최강자)
참고로 컴파일러라는 개념도 이분께서 최초로 정의내리셨었다.
이 분이 영어단어를 기계어로 바꿔주는 번역기(A-0)를 만들어내셨고, 그것을 컴파일러라고 부른다.
그 뒤 "코볼"이라는 프로그래밍 언어를 개발하셨고
"영어로 명령을 입력하는 언어(B-0/Flow-matic)" 창시자가 되셨다.
전설은 아니고 레전드급 프로그래머셔서 부연 설명이 좀 길었다.
그래도 여러분이 코딩을 하는 이상 이 분을 알아야하지 않겠나?
이 분 덕분에 기계어로 코딩하지 않고 편하게 코딩하니 말이다.
게다가 이 분은 마흔 살 때 처음으로 컴퓨터를 접하셨는데도, 이렇게 전설 그 자체가 되셨다.
여러분도 할 수 있다! (아마도)

디버그(Debug)의 유래

아무튼, 재미있는 일화가 뭐냐하면 에디슨이 "버그(Bug)"라는 용어를 사용한 이후
버그가 그러한 의미로 통용되고 있었다.
1947년 하버드 대학의 컴퓨터 Mark II에 버그(오류)가 발생하여 호퍼씨가 하드웨어를 살펴보던 중에
컴퓨터 사이에 죽은 나방 시체(Bug)가 끼어있는 것을 발견하게 되었고,
그 버그(나방)를 테이프로 박제해 "버그가 최초로 입증된 사례(First actual case of bug)"라고 적어뒀다.
("기계의 알 수 없는 오류"라는 의미로 쓰던)버그(Bug)가 진짜 버그(벌레)로 인해 생겼던 것이다.
즉, 버그(오류)의 원인이 버그(벌레)가 된 셈.
나방은 아직도 스미소니언 박물관(Smithsonian Museum)에 소장되어 있다고 한다.
이 일지를 직접 보고 싶으면 다음에 미국 스미소니언 박물관에 한번 가보기 바란다.
그렇게 호퍼씨는 최초의 디버거(물리)가 되셨고
컴퓨터 프로그램에서의 오류를 의미하는 "버그"라는 용어를 대중화시킬 수 있었다.
마무리
이렇게 지금까지 버그(Bug)와 디버그(Debug)의 뜻과 유래 + 그레이스 호퍼를 알아보았는데
그레이스 호퍼씨 정말 대단하지 않은가?
여러분도 호퍼씨같은 멋진 프로그래머가 될 수 있도록 열공하시길!
그럼 이만.
'소소한 이야기' 카테고리의 다른 글
[용어의 유래/의미] - 코드를 짜다 (0) | 2023.08.15 |
---|---|
[용어의 유래/의미] - CD를 굽다 (1) | 2023.08.15 |