Hacker News 의견
  • 'call'이라는 단어의 원래 의미(물리적 도서관에서 자료를 정리하는 데 쓰였던 call number에서 유래함)가 'compiler'라는 용어의 탄생에도 영향을 주었다고 Grace Hopper가 설명함. 각각의 서브루틴에 'call word'가 부여되었고, 도서관에서 자료를 꺼내 조합하는 것처럼 프로그램을 만든다는 개념에서 비롯된 것임
    • 나는 이 용어들을 직접 사용함
    • 이제야 비로소 퍼즐이 맞춰짐을 느낌. 듀이십진분류체계의 식별 숫자는 'call number'라고 불렸음
  • Library Science(문헌정보학)가 현대 컴퓨팅 분야에 우리가 상상하는 것보다 훨씬 더 많은 기여를 했다고 생각함. 예를 들어 데이터베이스 인덱스를 설명할 때 카드 카탈로그 이미지를 자주 꺼냄. 저자명, 듀이 십진, 주제별로 찾을 수 있는 나무 서랍장을 보면 다들 바로 이해함. 도서관 카탈로그 개념 참고
    • 나는 로컬 도서관에서 나무 서랍장과 종이사전 같은 것들을 써봤던 세대임. 25년 전 해시맵이나 IDictionary를 처음 접했을 때 이 이미지 덕분에 바로 감이 잡혔음. 하지만 요즘은 이 은유가 그다지 더 도움이 안 됨. 직접 카드 카탈로그나 사전이 어땠는지 설명해야 하는 상황이 종종 있었고, 젊은 사람들은 "아, 그러니까 그게 아날로그 해시맵이군요"라고 말함
    • 몇 달 전만 해도 왜 터미널의 표준 폭이 80자인지 궁금했었음. 예전 PC 화면 크기 때문이라고 생각했음. 그런데 알고 보니 펀치카드가 80자였기 때문이고, 펀치카드의 시작도 결국 인덱스 카드였던 셈임. 또 한 번 문헌정보학에 경의를 표하는 계기였음. 이건 마치 자동차 너비가 말 엉덩이 두 개 크기에서 유래한 것과 비슷한 컴퓨팅 역사 같음
    • 1~2년 전에 도서관 구석에 있는 먼지 쌓인 나무 서랍을 데이터베이스에 빗대어 설명한 적이 있음. 맥락과 선이해가 정말 중요함
    • 나는 항상 책 뒤쪽의 색인이 컴퓨팅 용어에서 'index'라는 단어가 나온 시초라고 생각해왔음. 'index cards'와 연결지은 적은 없었음
    • 요즘 젊은 세대는 카드 카탈로그 자체를 본 적이 없을 수도 있음. 나는 하드디스크가 0과 1이 나열된 리스트임을 설명하고, 뭔가를 찾으려면 구조가 필요하다는 점을 유추하도록 함
  • 핀란드인임. 핀란드어에서 '함수 호출'에 해당하는 단어는 'kutsua'인데, 영어로 다시 번역하면 'invite'나 'summon' 임. 즉, '엄마가 아이를 마당에서 부르는 것' 같은 '호출'의 의미로 쓰이지, 'Joe가 친구에게 전화를 건다'거나 '이 색을 뭐라고 부르지?' 할 때의 call과는 쓰임이 다름. 그냥 공유하고 싶었음
    • 독일어에선 'aufrufen'을 쓰는데, fragment 단위로 번역하면 '불러 올린다' 정도임. 학교에서 학생 이름 부를 때 같이 직접 목적어와 함께 쓰면 누군가를 name이나 번호로 부르는 의미임. 전화 걸다에 해당하는 단어는 'anrufen'임
    • 'summon'은 뭔가 코드에 오컬트적 공포를 불러올 때도 있는 것 같고, 때로는 매우 적절함. 'invite'는 악마나 뱀파이어를 초대하는 것일 수도 있다고 느끼기도 함
    • 노르웨이에서는 'funksjonskall'을 쓰는데, 직역하면 function call임. 단순히 무언가를 부르는 call 의미임
    • 러시아어도 비슷해서, 역번역하면 '전화로 부르다', '소환하다', '초대하다' 등임
    • 직접적인 주제는 아니지만, 혹시 헬싱키에 있다면 현지 Hacker News 밋업에 참여하면 좋겠음
  • Wilkes, Wheeler, Gill (1951)이라는 책에서 'call in'이라는 문구가 서브루틴 실행에 쓰임. 31페이지에 "서브루틴이 바르게 호출되지 않으면 기계가 멈춘다", "어떤 프로그램에서든 자유롭게 서브루틴을 호출할 수 있다"는 내용이 있음. 1950년 EDSAC 초기 보고서에도 "call in auxiliary sub-routine"이라는 주석이 남아있음을 이 프리젠테이션에서 볼 수 있음
  • 가끔씩 'call' 보다는 'invoke'나 'execute'도 쓰이지만, 더 길고 일반적인 용어임. 그런데 'call'이라는 용어가 잘못 쓰인 상황("calling a command", "calling a button")이 비영어권 CS 학생들에게서 많이 들려오는데, 그게 좀 거슬림
    • 'invoke'는 라틴어 invocō, invocāre(불러 일으키다)에서 왔으니 잘못된 게 아니라 약식 표현임
    • 가장 흔히 듣는(혹은 싫어하는) 잘못된 예는 'return'과 같이 쓰는 것임. "이제 return 키워드를 호출하면 함수가 끝나요" 같은 표현을 들은 적이 있음
    • C#은 대리자나 reflection 같은 곳에 'Invoke'를 자주 쓰면서, 디버거에서는 'Call Stack'을 씀
    • 내 경험상 프로그래밍을 처음 배우는 원어민들도 비슷한 용법을 씀. 그들은 명령이 아닌 것들도 'command'라고 설명함
    • 초보자가 아예 반대로 statement나 함수 선언 전체를 'command'라고 부르는 경우도 종종 봄
  • 과학 이론은 아니고 그냥 한 가지 관찰임. 새로운 용어는 뭔가 통하는 지점이 있을 때 전파가 잘됨. 대개 짧고, 의미나 이미지를 쉽게 연상/기억할 수 있어서 빠르게 퍼짐. 때론 설명이 필요하지만 맥락만으로도 사람들이 익혀서 전파함. 예를 들어 'salty' 같은 단어가 그렇고, call도 마찬가짐. 짧으면서 자주 쓰이니 입에 잘 붙고, call up/call in/summon/invoke(마법 주문 같은 느낌) 모두 느낌이 맞아떨어짐. 당시엔 전화기도 새롭고 신기한 기술이었으므로, 다른 사람에게 전화를 거는 이미지를 서브루틴 호출에 비추어 쉽게 연결지었을 것임. 'jump' 같은 용어는 이미 다른 의미로 쓰이고 있었으니 call이 널리 퍼질 수 있었다고 생각함
    • 나에게 'salty'는 tears와는 별 상관 없음. 내 언어습관에서는 누군가 'salty'하다는 건 슬프다는 게 아니라 짜증나거나 불쾌한 상태임. 즉, 소금처럼 맵고 강렬하다는 이미지에서 비유가 나옴. 즉, 서로 해석이 달라도 은유는 잘 통한다는 점에서, call이 그런 식으로 퍼질 수 있었음을 보여줌
  • "... 복잡한 것들은 라이브러리, 즉 자석 테이프 세트(이전에 작성된 가치 있는 문제가 저장된 곳)에 있어야 한다"는 문장에서 라이브러리라는 단어가 실제로 라벨 붙은 자료 선반에서 유래된 것이라는 생각을 해본 적이 없었음
  • 함수가 굳이 call이라는 키워드를 필요로 했던 건 아니라고 생각해왔음. 함수는 보통 값을 반환하므로 대입문 안에 사용하면 됨. call이 필요한 건 subroutine(실질적으로는 이름이 붙은 주소/레이블)이었음. 사실 GOTO로도 이 주소를 직접 이동하고 다시 올 수 있음. CALL 키워드 덕분에 실행 흐름이 더 명확하게 보임. 마치 사장이 Sam에게 계산을 맡겼다가, Bill에게 TPS 리포트 인쇄를 맡기는 것처럼 일의 흐름이 진행됨. 결국 모든 것이 함수로 바뀌었고 subroutine은 'spaghetti'라는 별명으로 불렸음. 그런데 왜 routine(프로그램)과 subroutine이라는 용어가 있는지 궁금함
    • routine이라는 단어의 유래는 1947년 Goldstine과 von Neumann의 문서에 따르면 "문제의 코딩된 일련의 명령을 routine이라 부릅니다"라고 명시되어 있음 (참고)
  • 음악에도 "call and response"라는 표현이 있음. return value 개념과도 연결된다고 생각함
  • Algol 60도 함수뿐만 아니라 파라미터에 대해서 "call"이라는 용어를 썼음. 예를 들어 "call by value", "call by name" 등인데, 4.7.5.3에 보면 "call by value인 경우"라는 구조가 나옴. 오늘날에는 procedure/function/subroutine은 'call'하고, argument/parameter는 'pass'한다고 말하기 때문에 'pass by value/reference/name'이 더 명확함. 하지만 "call by value" 등의 옛 용어도 아직 일부 문맥에선 남아 있음. Argument나 parameter를 호출(call)하는 개념은 사라졌으나 이런 legacy 용어는 계속 존재함