잡탕2 - 칼럼2009. 3. 19. 15:34
* 이글의 모든 의견은 제 개인적인 생각임을 미리 밝혀 둡니다


인간이 갈구하는 욕망 중에 '미래의 예측' 만큼 인류 역사에 많은 기록과 염원이 담긴건 없을 것이다
고대에는 농사, 사냥을 위해서 내일의 날씨를 알고 싶어 했으며
현대에 이르러서도 앞으로 펼쳐질 사회의 모습, 인류의 존속, 부의 방향을 알고 싶어하는 열망은 계속되고 있다

그런 예측(or 바램) 관련 시각으로 바라 볼때 IT 관련 산업이 앞으로 어떻게 발전할지는 프로그래머로써 초유의 관심이 된다
무엇보다 생활과 직결되기 때문일 것이다
내가 알고 있는 지식, 내가 할 수 있는 것이 무용지물이 되고 퇴보되고 없어지기 전에
새로 탄생한 언어를, 발명된 장비를, 만들어진 기술을 빨리 익혀야 하기 때문이다
IT 관련 산업은 그 발전 속도가 가히 초광속이고 오늘의 기술이 내일이면 과거가되어 필요 없어지는 일이 다반사로 일어난다

지금까지 소프트웨어의 발전은 하드웨어의 발전과 동반됐다
새로운 하드웨어가 발명되면 그에 따른 소프트웨어가 눈부시게 개발됐고
새 하드웨어의 성능으로 말미암아 할 수 없었던 부분을 넘어설 수 있게 되므로써
새로운 발견이라해도 무방할 만한 기술들이 넘쳐나게 된다

초기 컴퓨터 프로그래밍의 목표라면 산업자동화의 컨트롤러 였다
장비를 통제하고 정밀한 작업을 계산해서 실행하게 해주는 도우미 같은
즉, 하드웨어 컨트롤이 그 목표였던 것이다
물론 지금도 그 분야가 없어진게 아니고 중요한 비중을 차지하고 있지만
'인터넷' 의 등장으로 말미암아 온라인 부분은 IT 에서 핵심으로 자리매김하게 된다

현대는 인터넷이 없으면 아무것도 할 수 없는 세상이 되었다
모두가 이메일은 한두개씩 가지고 있으며, 홈페이지, 블로그 등을 가지고 있어서
온라인에 자기 영역을 가지고 있으며, 정보 얻기, 광고, 기업서비스 등..
현대를 살아가면서 해야하는 일들 중 상당한 비중을 차지하고 있는 것이다

이러한 상황에서 '웹프로그래밍'의 발전은 어떻게 될까?
앞으로 어떤 언어가 소위 대세로 자리매김할까?

(2편에 계속)

postscript
가끔 코딩을 하다가 뻘생각이 들곤 한다
18세기 산업혁명이란 이름아래 수많은 노동자들이 현장에서 땀을 흘리고
그 존재가치도 어필해 보지 못하고 무엇을 위해 일을 해야하는지도 모른채 그냥 그렇게 사라져간 이름 모를 혁명원들..
나도 그런 이름없는 프로그래머가 아닐까?
단순히 생활의 영위만을 위한 프로그래밍이 아니라면 내가 하고 있는게 과연 무엇일까?


Posted by pearl짓거리전문
잡탕1 - IT2009. 3. 18. 12:14
"프로그래밍의 길은 멀고도 험한 것"

프로그래밍에 처음 입문해서 짜보는 프로그램이 'Hello Wolrd' 일 것이다
해당 언어의 기본출력으로 텍스트를 출력하는 가장 간단한 프로그램..
어떤 언어든 최초 예제는 저걸로 시작한다
언제부터 시작되었는지 정확히 알 수는 없지만 타이핑하게되는 프로그래밍 첫 예제임은 부인할 수 없다

그러다가 순환문을 배우게 되면 구구단을 짜게 된다
2*1=2 로 시작해서 9*9=81 까지 출력해보는 for 문의 예제로 말이다

이런 거의 정형화 되어지는 이러한 프로그래밍 예제에서 요즘 떠오르는게 있다
바로 lotto 숫자 출력 프로그램이다
1~45 까지 숫자중에서 랜덤 6개를 중복없이 출력하는 이 예제는
순환, 랜덤, 자료형, 배열 등을 포함할 수 있다

언어를 배우다보면 알게되는 지식으로부터 상상했던 프로그램이 땡기는 경우가 있다
소켓 인터페이스를 배우면 채팅 프로그램을 만들고 싶은 충동이 일어나는 등 말이다
비단 엔터프라이즈 환경의 core 프로그램이 아니라해도 반 장난성 프로그램들을 만들고 싶어질 때가 있다

그래서 그런지 몰라도 나도 Java 로 로또 숫자 생성 프로그램을 만들어본 적이 있다
아마 1~45 중 6개 랜덤한 숫자를 뽑아서 BitSet 을 이용해서 중복을 없에는 방식이었을 것이다
잘 돌아가는걸 보며 나름 흐믓해 했었던거 같다

'JAVA의 정석' 을 보다가 충격적인 로또 프로그램을 보게된다
내가 짠것보다 무려 코딩라인이 1/2 이나 줄어 있고 간단명료한 것이다

 import java.util.*;

class TreeSetLotto {
    public static void main(String[] args) {
        Set set = new TreeSet();

        for (int i = 0; set.size() < 6 ; i++) {
            int num = (int)(Math.random()*45) + 1;
            set.add(new Integer(num));
        }
        System.out.println(set);
    }
}

BitSet 을 이용해서 중복제거 과정을 프로그램에서 돌리는 내 예제와는 다르게
입력부터 중복을 배제하고, 정렬까지 되는 TreeSet을 이용하여  출력하는 이런 간단명료한!

이런 작은 예제에서부터 이런 차이가 난다면 대형 프로젝트에 투입됐을 때의 차이는 명확할 것이다
프로그램의 소소한 부분을 신경쓰지 못하는 아닐함 or 무지...

기초, 기본이 중요하다는건 그 영향력을 생각한다면 상당한 큰 부분이지만
실상은 이런 작은 차이에서 시작된다

"나는 과연 프로그래머가 될 수 있을까?"
"능력부족은 과연 노력만으로 매꿔질 수 있는 것인가?"

다시한번 생각해볼 문제다
Posted by pearl짓거리전문