새로운 기술을 습득하는 방법
새로운 기술을 습득하는 방법에는 여러가지가 있지만 요즘 시대에도 그리 바뀐거 같지는 않다.
과거의 습득 방법이 책과 스승에게 배웠다고 하면 지금도 역시 책과 스승이다.
하지만 스승이라는 존재가 과거에는 주변의 사람에 국한 되었다면, 지금은 인터넷을 통한
모르는 사람의 글과 동영상강좌도 스승이라는 점이다.
사실 이것은 굉장히 큰 변화로써 과거에는 지식이 위에서 아래로만 흐르고 각각의 등급(?)에 맞는
지식을 습득했다면 이제는 인터넷이란 것을 통해서 누구나 고급지식에 접근이 가능해졌고
또한 그것을 습득해서 자신의 것으로 만들 수 있다는 점이다.
복잡한 알고리즘의 내부에는 그것을 도출한 수학공식이 있기 마련이며, 그 수학공식에는
우리가 쉽게 접하는 사칙연산을 기반으로 한 수식들이 있다.(모든 공식은 사칙연산으로 표현될껄?)
파고 들면 들어갈수록 그 내부에는 간단한 진리들이 복잡하게 톱니바퀴처럼 얽혀서 유기적인 흐름을
이루고 있는것이다.
그렇다면 기술적인 관점에서의 새로운 기술을 습득하는것도 관계가 있을까?
저렇게 원자성의 기준은 제쳐두고 기술들의 연결과 그 필요성을 알아보는데서
새로운 기술의 습득을 시작하는것이 좋지 않을까 싶다.
예로 들어 언어의 표현을 위해 우리는 인코딩을 한다.
대표적인 영어 인코딩의 방식에는 IBM의 EBDIC과 ASCII방식등이 있고 기타 국가별, 언어별로의 서로 다른 인코딩 방식들이 있으며 이것은 서로 호환이 되지 않는 방식으로 설계가 되어있다.
그렇다면 여기서 유니코드의 필요성을 느끼는가? 느끼지 못하는가의 차이는 이러한 인코딩방식이
나뉘어 있는것을 어떠한 시각으로 보느냐에 따라서 달라진다.
해당 인코딩방식으로만 작업을 하며 그 인코딩 방식 이외에는 사용하지 않는다면 불편을 느끼지
않을 수도 있다. 하지만 직업적인 특성상 여러 언어로 작업을 하게 되고 또한
그때마다 인코딩방식이 달라서 제대로 표현되지 못한다면 사용자는 각각의 인코딩에 알맞는
디코딩 옵션을 매번 사용해야 할 것이며 이것을 이용한 정보의 교류 역시 해당 인코딩을 사용하는
지역이나 디지탈 기기에서만 가능할 것이다.
이는 동양의 언어와 서양의 언어에서 그 차이가 확연히 드러난다.
동양 한자 문화권에서의 언어 표현은 2바이트 문자이여 한 글자를 나타내는데 2바이트(16비트)가 필요하다. 하지만 영어권에서는 한글자에 1바이트(8bit)만 있으면 된다.
그렇다면 한글로 씌여진 글씨는 영어 문화권의 인코딩방식에 적합하지 않아서 볼수가 없다.
(반대는 된다 -.-)
이러한 정보들의 교류를 위해서 비록 내용을 알 순 없지만 무의미한 기호들이 도배되어 있는
디코딩이 제대로 되지 않은 (소위 인코딩이 깨졌다라는 표현) 글을 보게 되게 되고
이는 정보의 교류라는 측면에서 심각한 문제가 된다.
따라서 이것을 극복하기 위한 방법으로 유니코드라는것을 만들어냈다. (http://www.unicode.org)
위의 글을 보면 유니코드라는것을 다루는데 있어서 만들게 된 이유를 설명해 놓았다.
기타 대표적인 예를 들면
lagacy라 일컬어지는 메인 프레임과 유닉스 시스템의 연결을 위해 CORBA가 등장했고
C++의 시스템 종속성과 메모리 관리등의 어려움을 어느정도 해소했다는 (사용자입장에서) JAVA
HTML의 한계를 넘기 위한 ECMA SCript(java script) 와 CSS
데이타 간의 호환성을 높여주기 위한 XML 과 XML Database
등등 너무나 많다.
이러한 기술들은 하늘에서 뚝 떨어져서 어느날 갑자기 세상에 등장한게 아니고
다들 그 필요성에서 의해서 서로들간의 연관된 관계를 가지고 등장하게 된 것이다.
따라서 새로운 기술이라고 하더라고 그 시작은 어느날 어디에선가 불편함을 느낀 누군가가 시작해서
기존의 기술을 재가공하고 추가해서 만들어낸것 이므로
그러한 기술을 배움에 있어서 과거의 원천이 되는 기술을 배우고 바뀐점을 습득하며
서로간의 관계를 연상해서 기술의 전체적인 흐름을 알고
그 기술의 이용법을 배우는것이 효과적이라고 생각한다.