3일 후에 연구탐구발표대회가 있습니다.

cppig1995의 이미지

제가 있는 대전교육정보원 정보영재원 중급반의 개인 연구 탐구 발표 대회가 3일 앞으로 다가왔습니다. 그래서 자료가 급조되고 있습니다.
(사실 작년-2006년에 고급을 수강하던 제가 중급을 수강하게 된 데는 어떤 선생님께서 제가 작년에 초급을 수강한 줄로 알고 중급을 신청해 주신 데서 비롯되었습니다.)

어쨌든 틀린 부분 없나 지적해 주시고... 사실 일부 내용은 지금 복사/붙여넣기를 해서 한국어 위키백과에 그대로 붙여넣어도 충분할 정도로 써야 한다고 의식하면서 썼는데, 제 특유의 농간성 때문에 이루어지지 못한 꿈이네요.

자료 wrote:
텍스트 편집기의 역사(歷史): 자료
대전월평중학교 1학년 윤희수
대전교육정보원 부설 정보영재원생 / 중급반

이 글은 “텍스트 편집기의 역사와 미래”를 들으시기 전에, 한번쯤 읽고 생각해보셨으면 하는 기반 지식들을 담아놓은 글입니다.

텍스트 편집기 대(對) 워드 프로세서
텍스트 편집기는 순수한 텍스트를 편집하는 프로그램임에 반해, 워드 프로세서는 서식을 지닌 텍스트를 편집할 수 있는 능력을 가지고 있습니다. 순수한 텍스트는 윈도우 상에서는 일반적으로 .txt의 확장자를 가지고 있습니다. 서식을 지닌 텍스트는 워드 프로세서의 종류만큼이나 그 형식이 다양한데, 대표적인 예로는 Rich Text Format의 약어인 .rtf, 열린 형식으로 그 가치가 높은 국제 표준 ‘OpenDocument’의 .odt, 2007 마이크로소프트 오피스 시스템의 상용 형식인 .docx, 한글과컴퓨터 한/글의 상용 .hwp 등이 있습니다.
참고로, 앞으로 이어질 기나긴 설명의 바다에서 통합 개발 환경의 이름이 나오면 그 개발 환경에 내장된 텍스트 편집기를 이야기하는 것으로 간주해 주시면 감사하겠습니다.

텍스트 편집기의 역사 (1) 1970년대: MIT산(産) 해커의 시대
천공기 ‘IBM 026'에서 그 이름을 딴 O26부터 제가 지금 프로그래밍을 할 때 쓰고 있는 Visual Studio 2008의 내장 편집기까지, 문자 그대로 ’수천‘ ’수만‘의 텍스트 편집기들이 존재합니다.
현재도 리눅스 사용자들은 텍스트 편집기 중 vi 계열과 Emacs를 놓고 서로 다투는 일이 빈번합니다. 소위 성전이라고 부르는 그러한 싸움이 존재하는 이유는 vi(vim)과 Emacs의 사용자층이 너무나 두텁기 때문입니다.
vi는 거의 대부분의 유닉스/리눅스 배포본에 포함되어 오는 편재성(遍在性)을 지닌 편집기입니다. 1976년 빌 조이(Bill Joy)에 의해 시작된 vi는 그 이름이 '시각적인‘을 뜻하는 영어 단어 ’visual'에서 유래한 것임에 걸맞지 않게, 어려운 사용법으로 초보자들에게 불평 아닌 불평을 듣고 있는 편집기입니다.
Emacs는 그 역사가 1975년의 TECO부터 시작되어 올라옵니다. (Emacs 그 자체는 1984년에 시작되었습니다.) Emacs를 개발한 자유 소프트웨어 운동의 선구자 Richard M. Stallman은 심지어 자신을 “Emacs교敎의 성자(聖者)”라고 장난스레 자칭하기도 했는데요.
vi는 ‘단순함의 미학(美學)’을 추구하는 편집기라고 할 수 있고, Emacs는 ‘부팅 기능만 빠진 완벽한 운영 체제, 그러나 편집 기능은 안 좋다’는 비아냥을 들을 정도로 다양한 기능을 추구하는 ‘복합성의 미학’ 그 자체입니다. 아니나 다를까, Emacs는 콘웨이 교수의 ‘인생 게임(The Game of Life)'부터 시작하여 테트리스, 퐁(Pong) 탁구, 오목, 하노이의 탑 퍼즐, 게다가 정신과 진단까지 엄청난 기능을 포함하고 있기로 유명합니다.

텍스트 편집기의 역사 (2) 메갈로기업의 등장, 독점의 서곡
마이크로소프트라는 초대형 기업(저는 ‘메갈로기업’이라고 표현하기를 즐깁니다)이 등장하고, 마이크로소프트 사의 운영 체제 ‘윈도우’가 차츰 시장을 정복하기 시작했죠. 그리고 윈도우에 번들(bundle)로 딸려오는 ‘메모장’으로 시작하여 상용 제품 ‘UltraEdit'까지 수많은 편집기가 또 윈도우용으로 등장합니다.
드디어 난장판이 된 편집기 시장은 차츰 자리를 잡아가기 시작합니다. 소위 ‘하얀 화면파’ 즉, 온통 백색으로 뒤덮인 눈밭 같은 화면에서 코드를 입력하면서 희열을 느끼는 낭만주의 프로그래머들과, 제가 ‘도구 모음파’라고 부르는 구문 강조(syntax highlighting)에다가 프로그래밍 언어의 각종 구역(block)들을 접고 펴고 할 수 있는 편집기를 필요로 하는 사람들로 명확하게 나눠지기 시작했습니다. 그리고 하얀 화면파를 위한 메모장과 그나마 단순한 Notepad++과 같은 “메모장을 표방하는 프로그램”을 사용하는 사람들과, Dev-C++이나 Visual C++, KDevelop이나 Anjuta, Code::Blocks 등을 애용하는 도구 모음파용 텍스트 편집기들로 나눠졌죠. 이렇게 저의 텍스트 편집기사(史)에 대한 설명은 끝나려고 합니다.
...다음 페이지로 넘어가세요!
텍스트 편집기의 역사 (3) 제국에 맞서는 일진의 광풍
이번 제목은 Eric S. Raymond의 책 ‘Art of UNIX Programming’을 번역하신 분의 명언(?)을 그대로 옮긴 것입니다. 원서를 보지 못했기에 무엇을 저렇게 번역했는지는 모르겠지만 말입니다.
어쨌든, 저의 "마악 끝을 향해 달려가는 역사 이야기"를 원점으로 되돌려 준 것은 1990년대에 들어 활발해진 자유 소프트웨어 운동과 GNU/Linux의 출현입니다. 리눅스가 등장하면서, 리눅스를 위한 텍스트 편집기도 그만큼 많이 생겼죠. KDevelop이나 제가 애용하는 Anjuta 같은 것들은 아까 언급했습니다만, 이제는 하얀 화면파를 위한 리눅스용 프로그램들을 열거해야겠군요. GNU nano(이름은 pico의 풍자입니다), Gnome의 gedit, KDE(K Desktop Environment)의 kate 등. 이제 이야기의 가장 중요한 포인트인 “협동 편집의 철학”을 향해 기차는 달려갑니다.

협동 편집기의 존재의 이유(Raison D'etre)
이번 절(節)의 제목은 프랑스어로 “존재의 이유(reason for being)"을 뜻하죠. 과연 협동 편집기란 무엇이고, 그것은 왜 존재하는 것일까?)__
존재의 이유는 비교적으로 쉽게 찾을 수 있었습니다. 바로, 텍스트 편집 작업을 하는 데 있어 협동(協同)을 하기 위해 있는 것이죠. 텍스트 편집 작업의 범위는 폭넓습니다. 프로그램 코드를 짜는 것? 설정을 변경하는 것! 협동 텍스트 편집은 프로그래밍의 협업(協業)이 될 수도 있고, 단순히 재미를 위해 할 수도 있습니다.
우리가 왜 존재하는가를 생각하는 철학적인 고찰 이전에 인간이 대체 무엇인지 하는 기초적 사고가 필요하겠죠. 마찬가지로 협동 편집기의 존재 가치를 깨달았으니 협동 편집기가 대체 무엇인지 다뤄보겠습니다.

협동 편집기의 이론과 실제, 그리고 실체(實體)
6교시, 협동 편집기의 정체를 찾기 위한 탐구 시간입니다. 협동 편집기란 무엇일까요? 협동 편집기는 완벽한 협동 환경을 지니고 있는 편집기입니다. 첫 번째 실마리를 드렸으니 한 번 상상해 보시죠.
제가 열심히 자판을 두드리고 있습니다. 글쇠가 부딪히는 소리가 요란하군요. 저는 "Hello, world!\n"이라고 입력했고, 그 순간 화면 반대편, 혹은 행성 반대편에 있는 누군가의 디스플레이에
“Hello, world!\n"
라는 메시지가 나타날 것입니다. 상대방은 제 메시지를 출력하는 프로그램을 만들기 위해 왼쪽에 cout <<를 넣죠. 제 화면과 상대방의 화면에 나오는 소스 코드의 내용은 이제
cout << “Hello, world!\n"
가 됩니다. 구문 오류 - ‘세미콜론이 없습니다, 없고요’의 가능성을 발견한 제가 끝에 세미콜론(;)을 붙여줌으로써 길고 긴 한 줄이 끝납니다.

정말 저렇게 해야 하나요? CVS나 서브버전이랑은 뭐가 다르죠?
쉬는 시간이 끝나고 7교시를 맞은 학생들이 외칩니다. “정말 저렇게 해야 하나요? 한 줄을 입력하는 데 30초나 걸렸습니다!” 정말 비효율적이군요. 동감이 가는 말이군요. 하지만 실제와 예제는 다릅니다. 제가 main 함수를 작성하면서 상대방은 countdown 함수를 작성할 수도 있습니다. 상대방이 huffman_encode 함수를 입력하고 있을 때 제 손은 키보드 위에서 열심히 소음을 방출하며 비트 단위 파일 입출력 알고리즘을 구현합니다.
생각만 해도 멋지지 않나요? 전혀 안 멋지다구요? 왜 그렇게 생각하죠? CVS, 서브버전이랑 똑같다구요?
CVS, 서브버전(subversion, 줄여서 ‘svn')과 같은 형상 관리 시스템도 협동 작업을 하는 데 도움을 줍니다. 사실이구요. 그러나, 협동 편집기를 사용하면 작업 동시에 저도 그 내용을 볼 수 있습니다. 복잡한 과정 없이도 버튼들을 누름으로써 저장소를 초기화하고, 체크인/체크아웃, 커밋(commit) 작업의 효과를 볼 수 있습니다. 정말 멋지지 않나요? 학생들에게 이제는 ’지겨우니까 제발 멋지다는 단어는 언급하지 말아 주세요‘라는 싸늘한 응답을 들었습니다. 충격 받아서 쓰러지니까 제발 건드리지 말아 주세요.

열심히 읽어 주셔서 감사합니다.
추신: 만약 여기까지 읽는 데 1분도 안 걸렸다면 첫 페이지 맨 위로 돌아가시기 바랍니다.

cymacyma의 이미지

제가 중학생때만 해도 영재'센터'였죠... 그리고 정보쪽은 제대로 운영이 안되서 애들이 정보하다가 순수과학쪽으로 날아가버리고 -ㅅ- 여튼 그런 시절이 있었습니다 'ㅅ'
============================
....And I can play a game of life to win...

============================
Welcome to my small Organization, volks 'ㅅ'

cwryu의 이미지

에디터 역사라면 유닉스 ed, MS-DOS edlin부터 시작해야 되는 거 아닌지..

----
익명이나 오래전 글에 리플은 무조건 -1

codebank의 이미지

DOS쪽 이야기도 재미있죠.
제가 알던 그 수많은 DOS용 한글에디터들... 아직도 '산'의 화려했던(?) 글꼴은 눈앞에 선합니다. :-)
------------------------------
좋은 하루 되세요.

------------------------------
좋은 하루 되세요.

IsExist의 이미지

저 역시 같은 생각입니다. 컴퓨팅의 기술의 발달에 따라
에디터의 역사도 발전합니다.

천공기
라인 에디터와 터미널.
GUI의 등장에 따른 에디팅 변화.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

mykldp의 이미지

내용보다 문체에 대해 한마디 하고 싶군요. cppig1995 님이 "제 특유의 농간성" 이라고 표현한 그 문체말입니다^^.

어떤 문장이 있습니다. 어떤 사람이 그 문장을 읽습니다. 그럼 그 사람의 마음에 어떤 활동(변화)이 생기겠지요.

뜻을 해석하고, 중요한지 판단하고, 의심도 하고, 어리둥절해 하기도 하는 소위 이성적인 활동도 있을 것이고, 화가 나거나, 슬퍼지거나, 즐거워지거나 하는 소위 감정적인 활동도 있을 겁니다.

그 문장을 쓴 사람이 의도했던 의도하지 않았던 간에 그 문장은 읽는 사람의 마음에 어떤 작용을 합니다. cppig1995 님은 글을 쓰면서 문장들이 읽는 사람의 마음에 어떤 작용을 할지 상상하셨나요? 물론 하셨을 겁니다. 말은 기본적으로 듣는(읽는) 사람이 어떻게 해석할지를 상상하지 않으면 가능하지 않으니까요. 하지만 얼마나 하셨을까요? 제 생각에 cppig1995 님은 문장이 읽는 사람의 마음에 미치는 영향을 고려하기보다는 문장을 쓰는 사람의 마음에 미치는 영향 (즉, cppig1995 님의 재미지요) 에 맘이 쏠려있는 것 같습니다.

일기나 치유를 목적으로 하는 문학이라면 모르되, 연구발표는 기본적으로 정보 전달과 (필요하다면) 설득에 초점을 맞춰야 합니다. 올리신 글에 들어있는 많은 수사들은 단순히 cppig1995 님이 재미있게 논 흔적일뿐입니다. 혹시 어떤 효과를 의도했더라도 연구발표에는 어울리지 않는 효과일 것 같군요.

글쓰기는 여러면에서 매우 중요한 능력입니다. 갈고 닦아야할 능력이지요. cppig1995 님은 몇 년간은 최대한 단순한 문체로 "모든" 글을 쓰시는 게 좋을 것 같습니다. 꾸미는 문체, 감정을 움직이는 문체는 천천히 시도하셔도 늦지 않습니다. 일단은 모든 문장을 오해될 여지 없이 최대한 명확하게, 또 최대한 단순하게 쓰려는 "시도"를 하는 것이 모든 종류의 글쓰기에 탄탄한 기본을 만들어 줄겁니다. 저도 글을 잘 못씁니다만 저처럼 되지 말라고 드리는 말씀이니 참고하셨으면 합니다.

jachin의 이미지

아직 어린 친구라, 무엇을 쓰고, 무엇을 해야하는지 잘모르는 거라 생각합니다.

요즘 cppig1995군이 칭찬받고 싶어서 이런 글을 쓰고 있는지도 모르겠습니다.

언제 한 번 만나봐야겠군요. ^^
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

nike984의 이미지

예 저도 동감입니다.
cppig1995님이 확실히 머리는 좋으신데
발표하는 글까지 저렇게 쓰실 필요는 없을거 같습니다.
글은 객관적으로 적는게 좋습니다.

p.s. 글 자체에 경향이 있긴 하지만 자라나는 새싹 보고
'농간성'어체라고 표현하면서까지 구박할 필요는 없을거 같은데요.

sangwoo의 이미지

돼지군님 표현이었죠 그건 :-)
어쨌든 전 재미있게 읽었습니다. 문체를 떠나서 내용은 충분히 좋은 것 같습니다.
발표할때는 위트가 너무 많아도, 적어도 나름의 문제가 있는데요. 잘 조절하셔서 성공적으로 발표하시길!

----
Let's shut up and code.

----
Let's shut up and code.

cppig1995의 이미지

발표문은 아닙니다.
별도로 배포할 자료입니다.
사실 전 절대 발표문의 '틀' 이상 잡지 않습니다. XD



It's High Noon...

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.