Programming The Universe

physics 2008/09/02 02:00 posted by CECRI

사용자 삽입 이미지

양자정보이론과 양자 컴퓨터 그리고 우주도 일종의 양자컴퓨터로 볼수 있다는 저자의 이론을 소개하는 책이다. 저자는 우주 자체가 양자 정보로 이루어져 있으며 이 정보 자체가 우주의 다음 행동을 결정하는 프로그램으로 작용하여 행동한다고 주장한다.

나는 물리와 컴퓨터를 전공하는 입장에서 양자컴퓨터와 양자정보이론에 꽤나 관심이 있는 편이다. 하지만 이런것에 대해 학부생이 제대로 접근하기는 어렵고 학교에서 개설되는 강좌도 없는 편이다. 이 책은 전공자를 위한 책은 아님에도 불구하고 굉장히 많은것을 생각하게 해 주었다.

사실 지금 내 생각에는 세부전공을 컴퓨터와 물리가 연합된 복잡계, 양자컴퓨터 이런쪽으로 잡는것을 생각중이기 때문에 그쪽에 관련된 최신의 연구정보를 얻을수 있는 이러한 책은 개인적으로는 꽤나 도움이 되었다. 또한 이러한 우주론은 처음 접해보는 것이기 때문에 꽤나 신선하기도 했다.

저자 생각과 마찬가지로 정말로 풀릴것인지도 의문스러운 초끈이론의 여러 문제를 두고(초끈이론은 11차원에서 우주를 설명하는 적당한 model을 찾긴 았는데 문제는 아직 제대로 된 물리의 설명은 할 수 없는 상황이다. 11차원으로 올라갔을 경우 여러가지 가능한 model중에 실제로 공간이 어떻게 구성되어 있는지는 엄청나게 큰 Order의 SImple Group의 원소 중에 맞는것을 찾아야 하는데 이것을 찾을 수 있는 방법이 아직 없다.)고민하는것 보다는 새로운 양자중력이론을 받아들이는게 나을 수도 있다.

하지만 하나 의문스러운것은 정말로 이러한 우주론이 맞느냐는 것이다. 수학없이 말로 풀어쓴 이 책의 내용을 읽었을때는 너무 쉽게 우주를 생각한다는 느낌이 왔다. 분명이 양자역학적인 정보의 분석으로는 맞는 말이긴 한데, 이것과 초끈이론이 말하는 우주론은 꽤나 큰 차이를 보인다는 생각이다. 초끈이론에서는 끈의 떨림에 대한 진동수로 입자나 힘이 결정된다고 하는데 이러한 것도 사실은 자유도를 갖는 사항인데 이러한 사항에 대해서 자세한 설명은 생략되어 있다.

또한 실제로 이 이론이 무엇인가를 예측 가능한지도 의문이다. 저자는 양자큐빗들이 4차원상의 시공간 상에 있고 이것이 기본적인 일반상대론적 예측에 따라 움직이면서 우주를 프로그래밍하고 우주를 작동시킨다고 한다. 그렇다면 실제로 우주의 명령어 세트를 통해 우리가 아는 실험이나 다른 이론 결과와 부합하는 결과를 예측할 수 있다는 말인데, 이것이 실제로 가능한가? 이런 부분은 개인적으로 저자의 논문을 찾아봄으로써 해결 해 보려고 생각 중이다.

위에서 뭐라 주절주절 떠들었지만 사실, 이 책 자체는 꽤나 재미있는 책이다. 특히 우주론에 관심이 있는 사람. 즉 브라이언 그린의 엘러건트 유니버스나 우주의 구조 또는 미치오 카쿠의 평행우주등을 한번쯤 읽어본 사람이면 재미로 한번 읽어보기를 권한다. 물론 이 이론은 대부분의 물리학자들도 잘 알지 못하는 비주류 이론이지만 그만큼 일반인들에게도 다가가기 쉬울 것이라고 생각한다.

Ruby 곡괭이책 3장까지 봄

programming 2008/08/03 18:21 posted by CECRI
아직 잘은 모르겠지만...

뭐 레퍼런스를 통해 객체에 메세지를 날린다든지 이런 설정은 smalltalk와 꽤나 유사한것 같고...

아무데서나 클래스 선언을 추가할수 있다는 점도 꽤나 쓸모있을것 같고...

그리고 속성부분도 C++하고 JAVA도 잘 모르는 나한테는 꽤나 신선하게 다가왔다.

뭐 자연어처럼 쓸수 있게 하는 부분은 Perl하고도 비슷하긴 한데... 이런건 빠지는 추세라니...

코드블록도 좋은 부분이고...

PL관련으로 한번 본다면 꽤나 매력적인 언어같다.

인터프리터 언어긴 한데 꽤나 관심이 가네.. ㅎㅎ
TAG Ruby
일단 당선자는 나왔으니 뭐 긴 말 할수는 없겠지만..

도대체 중고등학교 평준화 한다고 공정택 뽑아야 한다는 사람들...

주로 뭐 강남쪽 사람들 같기도 하고...

간단히 내 주장은 중고등학교 평준화는 당연하다는 것이다.

뭐 평준화고교 아니라서 고등학교때 선대 못배워서 다른나라에 뒤쳐진다는 말따위 하는 사람도 있는데

개념이 없는것 같고...

선대 고등학교때 알고 싶으면 지가 찾아서 공부하면 될거 아냐.

어떻게 고등학교 선행학습 다 해놓고 대학교거 선행학습 안하는걸 평준화 탓으로 돌리냐...

지가 원하면 다 찾아서 공부할 수 있는것 가지고 태클거네.

고등학교에서 저거 가르치자고 하면 수능공부 안시킨다고 욕할놈들이. 퉷

게다가 강남쪽 사람 거의 다 공정택 찍었다는데...

고학력자가 많아서 그런가?
 
근데 고학력자 비율 더 많은 대전 유성구, 서구에서 공정택 나오면 표 별로 못얻을거 같은데...

그냥 이기주의가 좀 쩔고, 평준화라면 안좋은 시각밖에 없다고 보여짐.

전교조 까는것도.. 참..

내가 고등학교 다니면서 본 정치색을 제일 크게 나타낸 선생님은

맨날 노무현 까는 영어 못하는 영어선생밖에 없다.

뭐 규제때문에 기업이 죽는다더니.. 경제가 안좋다더니... 맨날 전교조 까고

말투에서 한나라당 빠라는게 퍽퍽 느껴진다.

그리고 전교조 출신 선생님들 다 높은자리 못올라간다. 일단 교장 교감 다 반 전교조고 점수 안준다.

높은자리 올라가는 선생님 보면 대부분 싸바싸바 잘해서 점수 챙기기 바쁘고, 학생들은 관심도 없다.

이런 교육제도 계속 유지되는게 바로 저런 보수파 때문.

아참, 사학비리 척결하는게 자유로운 시장경제의 파괴라는 소리 하는 사람들한테 너무 바라는게 많은건가?

레일즈 소감

programming/web 2008/07/31 00:29 posted by CECRI

레일즈로 코딩하는걸 본 소감...

이것 좀 짱인듯 ㅋㅋ

DB쓰는데 SQL이 필요 없고

컨트롤러에서 작업 할것 진짜 뭐할건지 구현 하나도 없이 써놓기만 하면 알아서 되고

그것 보여주는건 그냥 뷰에서만 하면 되고

간단히 말하면

구현을 찾아볼 수가 없다...

진짜 신기한듯 ㅋㅋ


사용자 삽입 이미지


짤방은 레일즈 책..

캐 어이없는 뉴스

Other Stories 2008/07/30 23:10 posted by CECRI
http://news.naver.com/main/read.nhn?mode=LS2D&mid=sec&sid1=105&sid2=229&oid=030&aid=0001964794

모냐...

미쳤네

규제철폐라면서 조낸 쪼아 댈 때는 언제고 어딴걸 규제랍시고 만들고 있다니;;

이건 독재국가인가? ㄷㄷㄷ

한나라당 짱이다. 이런 생각은 어떻게 할 수 있는거지..

예전 MB물가지수 만들때 부터 알아보긴 했다만...

그것도 공산권 정책이지. 자율경제에서 손해 배상해줄것도 아니면서 물건 가격에 태클거는게 말이 됨?

게다가 청소년인데 대학생인 사람은 어쩌라는거? 진짜 정신나갔네

이번에 교육감도 공정택되면 이나라는 더 이상 희망이 없다.

그냥 외국에서 살거다.

막나가는 대통령과 여당...

Other Stories 2008/06/27 14:05 posted by CECRI
저번 선거는 한마디로 조중동의 10년동안의 이미지 메이킹이 거둔 승리였다.

보수라고 자처하고, 실제로는 자기 기득권과 돈밖에 모르는 차떼기당을 정말로 어떻게 하면, 서민의 당으로 포장할 수 있는지...

747경제공약으로 마치 진짜 7%성장해서 모든 사람이 다 잘살것 처럼 말하고, 그러면서 올해 경제성장률은 지난 5년 평균 성장률보다 낮은 4%대로 예상한단다. 747은 7월까지 지지율 4.7%달성이 되어버렸다.

진짜 신물이 난다. 지쳤다. 질렸다. 야당때도 충분히 사기치던 당이다. 이런 당이 어찌 여당이 될 수 있었을까...

하지만 조중동의 지난 5년동안의 기사를 보면 왠지 그럴 것 같기도 하다. 경제성장 안되는건 전부 노무현탓이고 종부세는 서민을 힘들게 하는 것 처럼 묘사되어 있다. 그리고 5%대의 경제성장률은 정말 낮은 성장률이라 어디 꺼내면 부끄러운것 처럼 말한다. 분명히, 개도국을 벋어나는 우리나라랑 사정이 비슷한 나라나, 선진국들 중에 5%성장률을 달성하는 데는 거의 없다.

또한 5년동안 노무현의 신자유주의 정책을 트집잡던 모습은 어디로 가고 이명박은 실용주의라고 칭찬 일색이다. 하지만 내 생각으로는 노무현이 훨씬 실용주의에 가깝다. 괜히 좌파나 개혁새력에게 까이던 노무현이 아니다. 운동권으로 출발해서 결국 대통령까지 된 노무현이 배신했다고도 볼 수 있지만, 현재 우리나라 상황에 적절한 대처를 했다고 본다.

그리고 지금 이명박이 대처를 제대로 하지 못하는 것은 자명하게 알 수 있다. 인물이 얼마나 없고, 제대로된 머리가 얼마나 없으면, 여당 대표에 청와대가 이리저리 끌리는 상황이 연출될까... 홍준표가 촛불시위 이제 폭력적이라고 하니까 청와대에서 바로 그런다. 대통령 말이 조중동 찌라시 수준이다.

아무 논거도 없다. 진짜 한심한 청와대다. 첫 협상 뒤에는 미국 소고기 안전홍보 대사를 하더니. 노무현은 대통령때 언론을 대한 자세만큼은 선진적이라고 평할 수 밖에 없다. 이것 좀 배우고, 그리고 할일좀 잘하면 좋겠다. 개인적으로는 그냥 이명박은 대통령감도 아니고, 그냥 자리에서 내려왔으면 좋겠지만, 어찌어찌 남은 4년 8개월을 어거지로 보낼것 같으니 하는 말이다. 진짜 좀 배워라. 말도 안되는 실용주의 뭐라 하지 말고 기초부터 튼튼히 해라. 노무현이 하던 기업 체질개선같은것도 신자유주의를 그대로 따른다면 꼭 필요한 것이다. 예전 70, 80년대처럼 보호시장같은거 없다. 다국적기업과 싸워 이기려면 할건 제대로 해야 한다.

Dammit Emacs

분류없음 2008/05/25 16:41 posted by CECRI

그래도 난 vi...

사용자 삽입 이미지

Pi

Other Stories 2008/04/22 01:09 posted by CECRI
http://mathworld.wolfram.com/PiFormulas.html


여러가지 Pi의 공식들. 사실 파이 자체가 수학자들에게 주는 매력이 대단했나보다.

물리학적 관점에서는 그냥 자연이 부여해준 상수라고 볼 수도 있지만(빛의속도 c처럼 말이다), 그런식으로 취급하기에 다른것은 일단 단위가 없다는것. 그리고 그런것들이 사실 별로 수학적 의미 없는 숫자일수 있는데 실제로 유클리드 공간상에서 원의 성질을 표현해주는 흥미를 끄는 것 같다.


The Elegant Universe

physics 2008/04/16 11:20 posted by CECRI

고딩때 한번 읽었던것을 다시 읽고 있다. 아마 고3 1학기 중간고사때일 것이다.

어떤걸 해도 재밌다는 그 시기에 나는 이 엘러건트 유니버스에 필요 이상의 흥미를 지니며 열심히 읽었고

그러한 흥미는 물리학에 대한 갈망으로 승화되어 물리학을 하겠다는 나의 결심을 흔들림 없이

바로 잡아 주었다.

사실 그때 저 책은 쉽게 읽히지 않았던 것으로 기억한다. 상대론과 양자역학에 대한 설명에서 꽤나 의문을

느꼈으며, 그 다음 접한 끈이론의 접힌 차원 개념은 혼동을 주었다. 자세히 이해할수 없으면서도,

이론에서 느끼는 막연한 아름다움에 취했던것 같다.

그러한 그 책을 요즘 다시 읽고 있다.

난 지금 대학교 3학년 1학기를 다니고 있고 중간고사 이다. 햇수로는 딱 3년이 된거겠지.

그동안 많은 발전이 있었다. 의문을 가질수 밖에 없었는 상대론과 양자역학의 설명은 다 아는것을 풀어쓴것에

불과하게 되었고 뒤에 나오는 끈이론으로 설명하는 세상의 모습도 자연스럽게 생각할수 있게 되었다.


고딩때의 물리학에 대한 막연한 열망은 잊어버렸지만, 물리학과에서 지낸 3년이 헛되지 않았다는듯 그동안의

지식은 내 머리속 한구석에 남아 나의 물리학적 존재 가치를 지키고 있었다.

마치 열망이 지식으로 바뀌는것처럼 공부를 할수록 물리학에 대한 관심은 점점 사라져 가지만,

사실 내가 공부하는것은 아직 물리가 아닌듯한 느낌을 받는다. 그래서 계속 진짜 물리를 찾아가는거겠지.

열망이 사라져갈수록 집착이 커져간다. 그래서 내가 하고 있는것은 물리공부가 아니라 물리에 대한 집착인

느낌이다.

석궁사건

Other Stories 2008/03/21 21:49 posted by CECRI
http://h21.hani.co.kr/section-021107000/2008/03/021107000200803200702053.html

이 사건은 처음부터 끝까지 화가 치미는 사건이다.

한국 대학이 얼마나 경직되었는가, 그리고 그런 대학보다도 못한 사법부.


수학에서 조차 정치를 끌여들어 틀린문제를 옳다고 하고,

자기네들 맘에 안드니까 유명 저널에 논문쓴 사람을 재임용도 탈락시킨다.


아마 탈락시킨 자들은 저널에 논문한편 제대로 못쓰는 사람들이겠지.


그리고 판사는 그것을 보고 인성문제로 끌고간다. 참나. 대학에 인성배울려고 오나?

그런건 중고등학교때 집에서나 배울 것이지, 자기가 대학때 인성 없었다고 교수도 그런줄 안다.


여러모로 맘에 안든다.

언어들

Other Stories 2008/03/16 16:16 posted by CECRI
언어학에서는 언어가 사고의 매개체라고 한다. 이것은 어느정도 사실인것 같다. 우리가 우리말을 쓸때나 영어를 쓸때 어순이 달라서 사고의 순서 자체도 바뀐다. 색깔의 경우도 비슷한 일이 있다. 무지개색을 5가지 색으로 보는 사람들이 있다고 한다. 그들은 무지개를 그릴대 5가지 색만을 이용할 것이다. 우리나라 초등학생들이 무지개를 그릴때는 7가지 색을 이용하듯이.

이렇게 언어는 사고의 틀을 제약할 수 있다. 이것은 프로그래밍의 경우에도 마찬가지다. 널리 쓰이는 C언어의 경우 이식성이 뛰어나고, 정말 풍부한 라이브러리를 가지고 있지만, 표현 가능한 영역이 꽤나 제한적이다. 따라서 인공지능 분야나, C를 수준급으로 다루는 해커들은 오히려 LISP같은 표현력이 풍부한 언어를 쓰는 경향이 있다.

LISP같은 함수형 언어는 수학에 가까운 구조를 가진다. 어떠한 함수는 새로운 structure를 정의하고 그것의 성질을 이용해 여러 자료를 structure에서 처리하도록 하는 것이다. 요즘 나오는 자연어에 가까운 루비나 파이썬과는 또 다른 성질의 유연함을 보여준다.

수학은 표현력이 뛰어난 언어이다. 프로그래밍 언어가 예약어와 문법을 통해 언어가 되듯이 수학은 몇몇의 정의로부터 모든것을 유도해 내는 언어이다. 즉 우리가 새로운 수학적 구조를 만드는 데에는 몇가지 정의만 있으면 된다. vetor space나 group을 보면 그러하다.

그리고 이 수학 자체를 통해서 자연을 연구하는 학문인 물리학도 있다. 사실 물리는 그것을 기술하는 언어로 수학을 택할 필요는 없다. 다만 그것이 가장 일반적이기 때문에 수학을 선택한 것이다.

하지만 요즘 물리가 수학으로 표현될수 있는 한계에 다다랐다고 주장하는 사람들도 있다. 그들이 주장은 이렇다. 처음에 뉴턴이 뉴턴법칙을 통해 세상을 기술할때를 보면 간단한 미분방정식과 vector space에 대한 지식만 있으면 됬다. 하지만 현대물리에서 상대론과 양자론을 다루면, 미분기하학이나 대수학에 대한 고급 지식이 필요하게 되고, 요즘 나오는 초끈이론 같은 경우 수학이 정말로 어렵다. 하지만 이런 상태로는 더이상 물리학이 발전될수 없다고 생각하는 것이다. 특히 요즘 다루는 초미시세계에서는 기본적인 수학적 연속성마저 사라져 버리기 때문에 그걸 수학으로 다룰 수 있냐 하느냐는 것이다. 그리고 물리를 표현할수 있는 다른 언어를 만들자는 것이다.

구체적인 사항은 나도 모른다. 하지만 물리학자들이 물리를 기술하는데 수학 말고 다른것을 쓴다는 것이 가능할지에 대해 나는 회의적이다. 물리 몇년 배우지도 않았지만 물리문제를 풀면 일단 연습장을 피고 수식을 적고 다른 방법은 생각조차 할 수 없다.

이번학기 산 공부관련 책들

지름 2008/03/09 12:50 posted by CECRI

대충 통계 내 보니 50만원어치를 산듯 하다... ㄷㄷㄷ 이렇게 많을줄 몰랐는데...

다른것들도 산거 있으니 이제 아껴써야지...

---------------------------------------------------------------------
책 목록들

정보처리산업기사 필기
리눅스마스터 1급 표준교재
TEPS 한번에 끝내기 : 독해
TEPS 한번에 끝내기 : 청해
Programming Pearls 2/E
유닉스 • 리눅스 프로그래밍 필수 유틸리티 : vi, make, gcc, gdb, cvs, rpm
SICP 번역본
화일구조
Operating System Principle
Advanced Programming in the UNIX Enviroment
Rindler Gravity
Hartle Gravity
Introduction to Formal Language
클래스 구조의 이해와 설계 : UML, Java, C++을 활용한 객체지향 모델링 실전
Open GL Extensions Guide
C로 배우는 알고리즘2
More Effective C++
Head First Design Patterns
하루 10분씩 핵심만 골라 마스터하는 SQL 핸드북
데이터베이스 설계와 구축 : 성능까지 고려한 데이터 모델링(개정판)


다음학기에는 또 물리과 전공을 많이 듣는 관계로 비싼 책들을 주로 사야할듯 한데... 걱정이다

프로그래밍 언어

programming 2008/03/03 23:24 posted by CECRI
오늘 현대대수학 첫 시간에 교수님이 일반적인 무협지의 이야기에 대해 약간 말을 해 주셨다. 사실 수학에서의 추상화의 힘 이런것을 말하던 부분이었던것 같다.

그중 기억나는부분을 있다.

 주인공은 정공 문파의 제자가 되서 숨쉬는법, 잠자는법 이런것을 가르침 받고 주인공의 라이벌인 원수의 아들은 사문의 제자가 되어 창쓰는법, 활쓰는법 이런것을 가르침을 받는다.

그리고 대련을 하는데, 처음에는 주인공이 계속 진다. 그러다가 어느날, 몸이 가벼워지고, 자신이 달라짐을 느낀 주인공은 원수의 아들을 통쾌히 때려 눕힌다.


내가 왜 프로그래밍 언어라는 제목을 달고 이런 이야기를 하느냐면, 프로그래밍 언어도 이와 똑같다고 생각하기 때문이다. 프로그래밍 언어만 다양하고 열심히 익힌 사람은 처음엔 대단할줄 몰라도, 결국 컴퓨터에 대한 이해 없이는 좋은 프로그램을 만들기는 힘들다. 사실 언어 자체를 잘하는것도 중요하지만, 그것은 프로그래밍을 얼마나 잘하느냐와 전혀 다른 문제다.

보통 프로그래밍을 한다고 하면, 요구조건에 맞춘 설계부터 시작한다. 설계를 한다면 보통 내부적인 구현인 자료구조와 객체가 가지고 있는 성질을 보존하기 위한 알고리즘들, 그리고 외부 인터페이스의 설계를 하게 될 것이다.
프로그래밍 언어는 여기서 어느 인터페이스를 가지냐에 따라 보통 달라진다. 이클립스처럼 사용자의 OS에 관계 없이 일관된 인터페이스를 가진다면, JAVA를 이용하고 특정OS나 인베디드 환경에서 돌아간다면 C나 C++을 사용하게 될것이다.

따라서 중요해지는 능력은 그 시스템에서 제일 효율적인 자료구조, 알고리즘, 객체관계들을 알맞은 프로그래밍 언어로 표현하는 능력인데, 사실 이것은 언어 자체를 얼마나 잘 아느냐보다는 그 시스템에 대해서 얼마나 잘 알고 있냐가 중요한 영향을 미친다.


사실 컴과 전공과목중에 프로그래밍을 직접 하는 과목을 그렇게 많지 않고, 프로그래밍 언어 자체를 배우는 수업은 거의 전무하다. 그 이유도 바로 이런것에서 나오지 않았을까 싶다.


방학의 끝자락에서

Other Stories 2008/03/01 21:31 posted by CECRI
일단 3.3일 개강이니 며칠 안남았다. 그리고 내일은 정보처리산업기사.

다음학기는 컴퓨터쪽 과목을 많이 듣는다. 기계공학개론을 제외하면 4개인 셈

컴퓨터 프로그래밍, 오토마타, 프로그래밍 언어, 논리설계실험

물리과거는 하나... 내가 무슨과인지 잘 모르겠다.

하여간 무서운 이준규 교수님의 상대론.

수학과거도 하나 듣는다.

이인석교수님 현대대수학.

아직 교재는 산게 아무것도 없다. 일단 컴퓨터 프로그래밍교재는 주문했다.

근데 이과목 교수는 내가 이름을 발음하기도 어려운 사람. 하여간 마지막에 Hoai였던것 같다.

오토마타는 수학쪽하고 가까우니 별로 어려울것 같지는 않고, 컴퓨터 프로그래밍은 뭐 다 아는 내용이고

프로그래밍 언어도 별로 특별한게 있는듯 하지는 않다. 논리설계 실험이야 좀 빡세지만 뭐 실험과목이 그렇듯이

어렵지는 않을것이고(사실 내가 들어본 물리학과 계측론은 실험주제에 보고서도 오래써야 하고 실험 자체도

빡센데다, 시험도 어렵고 프로젝트는 안드로메다. 진짜 최악의 과목이었다).

하여간 학점은 같아도 저번학기처럼 우리과거 많이 들었던때보다야 편할것 같다고 생각하고 있다.

사실 상대론이 어떨지 몰라서 잘은 모르겠다.

체리필터 Happy day

Other Stories 2008/02/29 20:42 posted by CECRI
가사

난 내가 말야
스무살쯤엔
요절할 천재일줄만 알고
어릴 땐 말야
모든게 다
간단하다 믿었지
이제 나는
딸기향 해열제 같은
환상적인 해결책이
필요해
징그러운 일상에
불을 지르고
어디론가 도망갈까
찬란하게 빛나던
내 모습은
어디로 날아갔을까
어느 별로
작은 일에도
날 설레게 했던
내 안의 그 무언가는
어느 별에 묻혔나
가끔 울리는 전화벨소리
두근거리며 열어보면
역시 똑같은 이상한
광고 메세지일뿐야
이제 여기 현실은
삼류영화속
너무 뻔한 일들의
연속이야
징그러운 일상은
멈춰 세우고
어디론가 도망갈까
거칠 것이 없었던
내 모습은
어디로 사라졌을까
어느 틈에
작은 일에도
늘 행복했었던
예전 그대로의 모습
찾고 싶어
찬란하게 빛나던
내 모습은
어디로 날아갔을까
어느 별로
작은 일에도
날 설레게 했던
내 안의 그 무언가는
어느 별에 묻혔나
찬란하게 빛나던
내 모습은
어디로 날아갔을까
어느 별로
작은 일에도
날 설레게 했던
내 안의 그 무언가는
어느 별에
거칠 것이 없었던
내 모습은
어디로 사라졌을까
어느 틈에
작은 일에도
늘 행복했었던
예전 그대로의 모습
다시 찾고만 싶어


갑자기 이 노래가 끌렸다. 1년전에만 해도 항상 좋았던것 같은데, 작년에 뭔가 일이 많이 있었던것 같다.

ps. 체리필터는 2, 4, 리메이크 앨범 이렇게 세개를 가지고 있다.

C++ 과 객체지향

programming/C/C++ 2008/02/29 15:09 posted by CECRI
사실 C++에서 객체지향은 그렇게 까지 큰 부분을 차지하고 있지는 않다. 스캇 마이어스 형님의 EC++에서는 C++은 절차형 언어, 객체지향형 언어, 제네릭 프로그래밍, STL이라는 네가지 부분으로 나눌 수 있다고 한다. 사실 STL은 라이브러리일 뿐이지만, 그 자체만으로도 엄청난 성능을 자랑한다. 웬만한 알고리즘과 자료구조는 전부 있으니 STL을 잘 아는 사람이 짠 수치계산이나 통계같은것의 코드는 전부 STL만 쓰여서 그냥 STL코드라고 불러도 될정도니 그렇게 포함시킨것 같다.

C++에서 객체지향은 그것을 이루는 네가지 구성요소중 한가지에 지나지 않는다. 여기서 자바와의 차이점이 발생한다. 하지만 이로 인해 생기는 오해가 C++을 java보다 못하다고 생각하는것이다.

많은 사람들이 C++의 객체지향정도가 많이 낮다고 한다. 이것에 대해서는 나도 어느정도 동의하는 편이다. 하지만 이것을 가지고 C++을 깍아내리는건 바람직하지 못하다. 여러 라이브러리나 이런것이 비 객체지향적으로 설계되어 있지만 그 이유는, 어느 경우는 템플릿을 쓰는것이 재사용성이나 간결함을 객체지향을 쓰는것보다 훨씬 잘 구현할 수 있기 때문이다.

C++에서 자바의 Object같은것이 없는 이유는 그런것을 통해 클래스 계층구조를 만듬으로써 잃는 성능상의 이점이 얻는것보다 많다고 느꼈기 때문일 것이다. 사실 Object같은건 프레임워크에서 구현할수 있는 것이고(MFC의 CObject가 그렇다) 보통의 경우 그것을 쓰지 않아도 충분히 코드를 만들 수 있고, 필요한 경우에도 템플릿 같은것을 쓰는 경우가 더 효율적일때가 많다.

사실 객체지향을 배우기에는 C++은 별로 바람직하지 못하다. C++의 원래 목적은 뛰어난 프로그래머에게 강력한 툴을 제공하기 위한것이라고 한다. 사실 C++의 복잡한 문법과 템플릿의 능력같은것을 보면 그 말이 틀리지는 않은 것 같다. 처음 객체지향을 배우는 사람이 C++의 방대한 문법을 본다면 꽤나 암담할 것이다.

그리고 많은 사람들이 JAVA를 객체지향적이라고 하지만, 자바의 객체지향은 C++의 부분집합이라는 느낌이 강하다. 물론 레퍼런스나 가비지 컬렉팅 같은것은 C++과의 뚜렷한 차별성을 주지만, 기본형과 객체의 구분과(오토박싱이 있긴 하지만 그래도 다른것은 다른것이다) '.'연산자로 메쏘드에 접근하는것은 사실 완벽한 객체지향이라는 smalltalk에 비추어 보면 그 정도가 모자란다. 사실 자바가 쓰기가 편하고 간결한것은 부정할수 없는 사실이다. 하지만 그 이유가 객체지향을 완벽히 구현했기 때문이 아니라, 사용자에 맞추어 개발된 언어기 때문이라는것이 내 생각이다.

smalltalk, ObjectC같은 메세지 기반으로 객체지향을 구현한 언어들을 보면 놀랄만큼 유연하다. smalltalk는 객체지향이 언어에 완벽히 내제되어있다(C++처럼 C에 문법을 추가해서 구현한 객체지향과 다르다는 이야기이다). 레퍼런스는 어느 타입이나 가리키고 메쏘드 호출은 메세지를 보내는것으로 대신한다. 가상함수나 이런것으로 구현된 오버라이딩이 아니라 메세지 처리기만 바꾸는 방식이다. 하지만 별로 인기가 없는것은 그만한 메리트가 없다는 것이겠지.

사실 WIN32API도 메세지 기반으로 C에서 객체지향을 구현하기는 했다. 하지만 언어가 아닌 관계로 언어의 문법 대신, 여러가지 API함수들을 통해 객체지향을 구현한다. 따라서 그닥 쓰기 쉽지가 않다. 객체지향적이긴 하지만 쓰다 보면 MFC가 왜 나왔는지 알수 있다.

다시 C++로 돌아오면 C++에서는 객체지향을 강제하는것이 하나도 없다. 라이브러리가 특별히 객체를 요구하지도 않는다. 그냥 함수객체같은것은 함수 포인터면 된다. 하지만 이것이 다른 방향의 객체지향을 만든다. smalltalk가 기본형과 객체 구분없이 레퍼런스로 가리킨다면, C++은 객체를 아예 기본형처럼 만든다. 객체는 수치형이 될수도 있고, 그냥 우리가 아는 그냥 객체일수도 있고, 아니면 함수객체같은것 일수도 있다.

사실 C++이 완전히 이렇지는 않다. 객체형을 받을때는 const T&로 받고 기본형은 그냥 값에의한 호출로 받기 때문에 차이점이 아예 없는것은 아니다. 하지만 제네릭 알로리즘 같은것은 C++의 이런 부분을 남김없이 사용할수록 되어 있다. 대충 알고리즘에서 사용하는 연산자들만 지원하면 어느 타입이든 전부 된다.

JAVA에서는 이런것을 따라하기 위해 객체지향적인 방법을 사용한다. T Max<T implements Comparable>(T[]) 같은 식이다. 하지만 이런것에서 T는 레퍼런스로 한정되어 있다. 기본형은 오토박싱을 써야 하고, 이런 제네릭은 TMP같은것도 불가능하다. 구현 자체도 JAVA에서는 T에 대해 compare메쏘드를 호출하는 식으로 비교한다. C++에서는 >연산자이다. 연산자 오버로딩의 강력함이다. 결국 함수 호출이 되지만 기본형에서도 잘 작동하고 무엇보다도 이런것을 통해 가벼워진다. 이런 식으로 C++은 객체지향을 포기하지만 강력함을 포기하지는 않는다.

사실 C++은 사용하기 어렵다. C++찬양을 하던 나도 별로 쓰고 싶지 않은 경우가 많다. 메모리관리를 직접 해야 하는건 정말 성가시다. java에서는 별로 필요 없는 pimpl 관용구를 써야 할때도 많다. 하지만 그래도 자바에서는 느낄수 없는 STL이나 템플릿의 강력함, 연산자 오버로딩, 스택에 쌓이는 객체 등은 정말 색다른 매력이다. 특히 자바에서 펑펑 낭비해가면서 쓰던 메모리를 C++로 돌아오면 조심조심 쓰는 그런 이중적인 모습도 발견할때 마다 웃게 된다 ㅎㅎ. 뭔가 java에서는 인간적 느낌이 별로 안느껴 지는듯.
<html>
<head>
<script type="text/javascript">
window.onbeforeunload = beforeUnload;

function beforeUnload(){
        return "Are you sure you want to leave?";
}
</script>
</head>
<body>
Please stay on this page!
</body>
</html>

-----------------------------------------------------------
좀 줄여서 쓰고 싶으면

window.onbeforeunload = function()
{
        return "Are you sure you want to leave?";
}
이렇게 써도 되요.


보통은 이렇게 쓰지만..
window.onbeforeunload = function() {
        return "Are you sure you want to leave?";
}