기글 하드웨어 소프트웨어 포럼
모 시퍼런 사이트에 우문이 올라와서 썰을.. 풀려다가 그냥 기회가 되어 다른 이야기 해 보고자 합니다.
(이 회원은 컴퓨터 조립에 야동 잘 찾으면 컴퓨터 잘 하는줄 아는 모양입니다.)
저는 안철수씨의 정치적 신념이나 사고는 아직 제대로 파악한 바가 없습니다.
이 부분은 저도 책을 읽어보고 시간을 가지고 판단해야 하니 이야기 하지 않겠고..
그의 컴퓨터 실력에 대해 논해보고자 합니다. 이 게시판은 수게가 아니라 공개 게시판이니 정치댓글은 사절입니다.
당시 90년대.. 즉 제가 아장아장 기어다니던 시절에는 컴퓨터 성능도 좋지 않고 환경또한 척박했습니다.
안철수씨가 만든 첫번째 백신은 (c)brain을 치료하는 백신으로.. 어셈블리어로 되어있습니다.
지금 컴공 다니시는 분들께 물어보겠습니다. 어셈블리어는 무엇입니까?
어셈블리어는 기계를 알아야만 쓸 수 있는 언어입니다. C언어와는 레벨이 다릅니다.
C언어는 해당 기계의 특성을 파악하면 좋지만, 전체적인 특성을 몰라도 기계 독립성 덕분에 코딩할 수 있습니다.
(물론 모든 시스템이 다 그렇다는건 아닙니다.)
하지만 어셈블리어는 그런거 없습니다. 세세한 레지스터 정보까지도, 성능을 위해선 하드웨어 특성도 다 알아야 합니다.
어셈블리어로 코딩하면 하드웨어를 모를 것 같나요? 그걸 하는 사람들은 훨씬 세세한 특성을 꿰는 사람들입니다.
내친김에 그 때의 소스를 다시 한번 봅시다. 길어서 머리아플테니 핵심적인 부분만..
....
뭔 소스인가 모르겠다는 분들 많으실겁니다. 일단 이 백신은 (c)brain 바이러스 한놈만 때려잡기 위해 나온 백신 코드의 일부분입니다.
바이러스 패턴 분석을 일일히 하드코딩을 하고 있습니다. current memory size + 7KB가 brain 바이러스의 특징입니다.
따라서 구조 자체는 꽤 단순한 편입니다만은.....
20대에 의대 생활을 하던 비전공자가 저런 프로그래밍 하려면 준비할게 많아서 힘든 척박한 환경인 시대에 저정도 수준의 코드를 짰다는 것은 그냥.. 저 사람은 괴물이에요 괴물. 적어도 이쪽 분야에서는 더이상 토를 달 것이 없어요..
맥아피의 scan/clean에 비해서 속도상의 이점도 있었고, 따라서 V3는 PC통신 상에서 매우 잘나가는 백신이 되었지요..
물론 안철수씨가 이후 안철수컴퓨터바이러스연구소(現 안철수연구소)를 세우시고 나서는 그가 프로그래밍을 직접 하지는 않았겠지만, 한 시대를 풍미했던 아주 훌륭한 프로그래머이자 컴퓨터 잘하는 사람이었던건 틀림없어 보입니다.
그때 구독잡지를 통해 공개된 V2 소스코드를 보면서 우왕 나도 꼭 저렇게 해야지 했던 생각이... -_ -a
기계어를 그냥 외웠다고 하는 사람이니..-_-;;(어셈이 아니라 기계어입니다...)
적어도 절차적 프로그래밍에 있어서는 신급이라고 봐야죠.
컴공했지만 어셈은 지금봐도 돌아버리겠어요.
나는 좀더 많은 나이때 겉만 비슷한코드로 '온 힘을 다해' 인트로놀이 뻘짓이나 하고 있었구나...
32비트 환경과 달리 16비트 환경은 세그먼트 메모리(segment memory model)라는 아주 복잡한 메모리 모델을 썼습니다.
지금은 평면 메모리(flat memory model)라 해서 한 프로그램이 4GB를 갖고있다고 생각하고 가상주소로 침범의 걱정 없이 안전한 프로그래밍이 가능했으나.. 16비트때는 그런거 없었습니다. 포인터도 far, near 두 종류가 있었구요..
게다가 백신은 바이러스를 잡기 위해 시스템을 건드는 영역이고.. 잡기위해선 바이러스의 패턴을 분석을 해야 하는데
그게 어디 쉬운 과정은 아니지요.. 당시에는 더했을테고..
그리고 어셈블리어 그 자체는 어렵지 않습니다. 그냥 명령 + 오퍼렌드면 끝나기 때문에 굉장히 단순합니다. 하지만 명령 하나하나가 기능성이 매우 low-level하고, 추상화가 되어있지 않으며, 생각해야 할 부분이 많기 때문에 어렵다고 하는 것이죠. 가령 초등학교 5학년 어휘 수준으로 세익스피어의 작품같은 대작을 만든다고 생각해본다면? 이해가 가실겁니다.
잘한다고보아집니다
돈이있다고 차린회사는아닌거같습니다