본문 바로가기
컴퓨터공학/기초

키보드 & 명령 라인 인터페이스(CLI)

by 하이방가루 2022. 9. 12.
728x90
반응형

이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다.

  사용자가 컴퓨터와 소통을 가능하게 하는 다양한 입출력 장치(I/O device;Input-output device)들이 있다. 이러한 장치들은 인간과 컴퓨터 사이의 인터페이스를 제공한다. 그리고 오늘날에는 인간-컴퓨터 상호작용(Human-computer Interaction)에 대한 분야가 존재하고 연구하고 있다. 이러한 인터페이스는 사용자 경험(UX;User eXperience)에 근본적인 요소이다.

 

  가장 초기의 기계 및 전자 기계 컴퓨팅 장치는 기어, 노브 및 스위치와 같은 입출력용 물리적 제어 장치를 사용했다. 이는 휴면 인터페이스의 범위였다. 콜로서스나 애니악의 같은 첫 번째 전자 컴퓨터조차도 거대한 기계적 제어 장치와 패치 와이어를 사용하여 구성되었다. 하나의 프로그램을 입력하려면 몇 주가 걸릴 수도 있고, 프로그램을 실행한 후 데이터를 얻으려면 결과는 거의 대부분 종이에 인쇄되었다.

  그러나 1950년대에는 기계 입력이 프로그램에 의해 쓸모없게 되었고, 데이터와 프로그램은 펀치 카드와 자기 테이프와 같은 매체에 저장되었다. 최종 출력물에는 종이 출력물이 여전히 사용되었고, 엄청난 양의 표시등이 개발되어 프로그램 진행 중에 실시간 피드백이 제공되었다.

  이 시대의 컴퓨터 입력은 컴퓨터에 대해 가능한 간단하고 견고하게 설계되었음을 인식하는 것이 중요하다. 사용자를 위한 용이성과 이해는 2차적 관심사였다.  펀치 테이프는 훌륭한 예로 이것은 컴퓨터가 쉽게 읽을 수 있도록 명확하게 설계되었지만 프로그래머가 이해하고 이용하기 힘들었다. 기본적으로 1950년 이전에는 사람들이 컴퓨터에 프로그램과 데이터를 입력하지만, 컴퓨터가 이에 상호작용하여 응답하지 않았다. 프로그램이 한 번 시작되면 일반적으로 프로그램이 끝날 때까지 실행되었다. 컴퓨터가 사람들의 명령이라 데이터를 입력받기 위해서 기다리기에는 비용 소모가 심했다.

 

  그러나 이것은 1950년대 후반에 변화하기 시작했다. 소규모 컴퓨터가 충분히 저렴해져서 인감 참여(Human-in-the-loop)가 가능해졌다. 즉, 인간과 컴퓨터 사이를 오가는 것이다. 다른 한편으로 큰 컴퓨터가 빠르고 정교해져서 많은 프로그램과 사용자를 동시에 지원했다. 이것을 멀티 태스킹(Multitasking)시분할 시스템(Timesharing System)이라고 한다.

  이제 컴퓨터는 실행 중 사용자의 입력을 얻을 수 있는 방법이 필요해졌다. 이를 위해 컴퓨터는 이 시대의 유비쿼터스 데이터 입력 메커니즘인 키보드(Keyboard)를 빌렸다. 이 시점에서 타이핑 기계는 이미 몇 세기 동안 사용되어 왔지만, 크리스토퍼 래탐(Christopher Latham Sholes)이 1868년에 현대 타자기를 발명했다. 디자인을 수정하고 제조하는 데 6년이 걸렸지만, 상업적으로 성공을 거두었다. Sholes의 타자기는 현재 쿼티(QWERT;왼쪽 위의 문자 키 행으로 이름 지어졌다.)라는 특이한 자판 배열을 채택했다.

  왜 이 디자인이 사용되었는지에 대해 많은 추측이 있다. 가장 널리 퍼진 이론은 영어에서 일반적인 문자 쌍을 멀리 떨어뜨려 연속적으로 입력할 때 타이핑되는 타이핑 바의 방해 가능성을 줄이기 위해서라고 한다. 사실 쿼티는 "th"와 "er"같이 많은 일반적인 문자 쌍을 함께 놓았다. 하지만 Sholes와 그의 팀이 이러한 상징적인 배열을 완성하기 전에 많은 시행착오를 경험했다.

  이유와 관계없이 Sholes 타지기의 상업적인 성공은 줄곧 경쟁 업체들이 디자인을 복제했음을 의미했다. 지난 세기 동안 많은 대안적인 키보드 레이아웃이 등장해 다양한 이점을 주장했지만, 사람들이 쿼티를 배우려고 한 번 시간을 투자했기 때문에 새로운 것을 배우고 싶어 하지 않았다. 이것은 경제학자들이 전환 비용(switching cost, switching barrier)이라고 부르는 것이다. 그리고 그것이 한 세기 반 이후에도 사람들이 거의 기본적으로 쿼티 키보드를 사용하는 이유이다.

 

  Sholes는 타이핑이 분당 약 20 단어인 필적보다 더 빠를 것이라고 생각하지 않았다. 타자기는 주로 속도가 아닌 문서의 표준화와 가독성을 위해 도입되었다. 그러나 사무실에서 표준 장비가 됨에 따라 신속한 타이핑에 대한 욕구가 커졌고, 타이핑의 진정한 가능성을 열어주는 두 가지 큰 발전이 있었다.

  1880년경, Cincinati의 속기 및 타자기 연구소의 선생님이었던 Elizbeth Longley가 10 손가락 타이핑을 촉진하기 시작했다. 이것은 기존의 찾아서 치는 방법보다 손가락 이동이 적어, 타이핑 속도가 향상되었다.

  몇 년 후, 솔트 레이크 시티에 있는 연방 법원 서기인 Frank Edward McGurrin는 터치 타입으로 독학하여 타이핑하는 동안 키를 볼 필요가 없었다. 1888년 McGurrin은 스피드 타이핑 시합에서 높은 점수를 받았고, 그 후 10손가락 터치 타이핑이 시작되었다.

  전문 타자들은 곧 수기보다 훨씬 빠른 분당 100 단어 이상의 속도를 성취할 수 있게 되었다.

 

  그래서 인간은 꽤 타자기에 능숙했다. 하지만 타자기를 컴퓨터에 꽂아 입력할 수는 없었다. 대신에 초기 컴퓨터는 전신용으로 사용된 특별한 유형의 타자기를 조정하여 사용했다. 이것을 텔레타이프 머신(Teletype Machine)이라고 한다. 이 기계는 전신선을 통해 텍스트를 주고받을 수 있는 전자 기계적으로 강화된 타자기였다.

  하나의 텔레타입 키보드에서 문자를 누르면 전신선을 통해 다른 끝에 있는 텔레타이프 기계로 신호가 보내지고 전자 기계적으로 글자를 입력한다. 이것은 두 사람이 먼 거리에서 서로 타자를 치는 것을 가능하게 했고 기본적인 채팅방의 깜작 버전이다.

  이들 텔레타이프 머신은 이미 전자 인터페이스를 가지고 있기 때문에 쉽게 컴퓨터 사용에 적합했고, 텔레타이프 컴퓨터 인터페이스는 1960년대와 1970년대에는 보편화되었다.

 

  상호작용은 매우 간단했다. 사용자는 명령을 입력하고 Enter키를 누른 다음 컴퓨터가 다시 입력한다. 사용자와 컴퓨터 사이에 "대화"가 반복되었다. 이것을 명령 라인 인터페이스(cli;Command Line Interface)라고 불렀고, 1980년대까지 인간-컴퓨터의 상호작용의 가장 흔한 형태였다.

  텔레타이프 기계 안의 명령 라인 상호작용은 이렇게 보인다. 사용자는 원하는 수만큼의 명령을 입력할 수 있다. 현재 디렉터리의 모든 파일에서 우리가 보고 있는 것부터 시작하여 몇 가지를 살펴보자. 이를 위해 "ls"명령을 입력한다. 리스트(List)의 줄임말이며 컴퓨터는 현재 파일 목록으로 응답한다. 만약 특정 파일을 보고 싶다면, 유닉스에서는 concatenate(연쇄시키다)를 줄여 "cat"이라고 부르는 명령이 있다. 표시할 파일을 지정해야 하므로 명령 뒤에 인수로 파일명을 포함시킨다. 다른 사람과 네트워크에 연결되어 있다면 사용자는 친구 찾기 앱의 기본 버전을 사용하여 "finger"명령으로 더 많은 정보를 얻을 수 있다.

 

  전기 기계식 텔레타이프 기계는 1970년대까지 대부분의 사용자를 위한 주요 컴퓨팅 인터페이스였다. 컴퓨터 화면이 1950년대에 처음 등장했고, 그래픽 용도로 사용되었지만 매일 사용하기에는 너무 비싸고 해상도가 낮았다. 그러나 소비자 시장을 위한 TV의 대량 생산과 프로세서, 메모리의 전반적인 개선으로 인해 1970년까지, 전기기계식 텔레타이프 기계를 스크린 기반 등가물로 교체하는 것이 경제적으로 가능해졌다.

  그러나 이 스크린을 컴퓨터에 연결하기 위해 새로운 표준을 구축하는 대신, 엔지니어는 단순히 기존의 텍스트 전용 텔레 타입 프로토콜을 재활용했다. 이 기계는 무한한 종이를 모방한 스크린을 사용했다. 텍스트를 넣고 빼는 것 그 이상의 기능은 없었다. 프로토콜은 동일했기 때문에 컴퓨터가 종인인지 화면인지 알 수 없었다. 이러한 가상 텔레타이프 또는 글래스 텔레타이프 머신은 터미널(Terminal)로 알려졌다.

  스크린은 훨씬 더 빠르고 유연했다. 종이와 달리 실수를 삭제하면 사라졌다. 그래서 1970년대 말까지 스크린은 표준이었다.

 

  명령 라인 인터페이스로 뭔가를 하기엔 너무 원시적이라 생각할 수 있다. 하지만 텍스트로 상호작용을 하는 것만으로도 프로그래머는 이것을 재미있게 만드는 방법을 발견했다. 1977년 초기 대화형 텍스트 기반 컴퓨터 게임인 Zork와 같은 것들 있다.

  스크린 기반 터미널에 있는 명령 줄에서 이것을 플레이해본다고 해보자. 전과 마찬가지로 "ls"명령을 사용하여 현재 디렉터리에 있는 것들을 볼 수 있다. 그러면 디렉터리 변경(directory change)을 의미하는 "cd"명령을 사용하여 게임 디렉터리에 들어간다. 이제 "ls"명령을 다시 사용해 컴퓨터에 어떤 게임이 설치되어 있는지 볼 수 있다. 원하는 게임을 실행하기 위해서는 단지 그 파일명을 입력하기만 하면 된다. 이제 이 응용 프로그램이 중단되거나 종료될 때까지 명령 라인을 대신한다. 게임에서 플레이어는 하나 또는 두 단어로 움직이는 명령, 객체 상호작용을 하는 명령을 입력하여 아이템을 집게 하거나 다른 행동을 할 수 있다. 여기서 이 프로그램은 내레이터의 역할을 하며 위치, 가능한 행동 및 그 행동의 결과를 알려준다.

  이러한 텍스트 어드벤처 게임은 나중에 멀티 유저 던전(MUD;Multi-User Dungeon)이라고 불리는 멀티 플레이어가 되었다. 그리고 오늘날 그래픽 MMORPG의 위대한 조상이다.

 

  명령 라인 인터페이스는 단순하지만 아주 강력하다. 컴퓨터 프로그래밍은 여전히 서면 작업이며, 명령 라인은 자연스러운 인터페이스이다. 이런 이유로 오늘날에도 대부분의 프로그래머들은 명령 라인 인터페이스를 작업의 일부로 사용한다. 그리고 그것은 다른 나라에 있는 서버와 같이 멀리 있는 컴퓨터에 접근하는 가장 일반적인 방법이다.

  Windows, MacOS 또는 Linux를 사용하는 경우, 컴퓨터에 명령 라인 인터페이스가 있다. Windows 검색 창에 "cmd"를 입력하거나 Mac에서 "Terminal"을 검색해 실행할 수 있다.

728x90
반응형

'컴퓨터공학 > 기초' 카테고리의 다른 글

그래픽 유저 인터페이스(GUI)  (0) 2022.09.24
화면 및 2D 그래픽  (0) 2022.09.18
압축  (0) 2022.09.09
파일 & 파일 시스템  (0) 2022.09.04
메모리(Memory) & 저장 장치(Storage)  (0) 2022.08.28

댓글