프로그래밍 포스트 치고는 뭔가 오묘한 제목이지요?
요즈음 이것저것 해보다가 갑자기 든 생각이라 포스트로 구성해 보았습니다.
------------------------------------------------------------------------------------------
자유에는 책임이 따른다고 하지요?
같은 밥솥으로...
.... 요런 밥을 탄생시킬 수도 있고,
요런 밥이 나올 수도 있습니다 -_-;
밥 하는 사람의 책임에 따른 문제이지요.
프로그래밍 또한 같습니다.
프로그래밍의 자유도, 즉, 사용할 언어의 자유도에 따른 책임은 스스로 져야 한다는 것이지요.
어셈블리언어의 어셈블러는 아주 기초적인 문법만 체크할 뿐, 데이터와 코드의 구분도 잘 안해줍니다.
(MASM의 구분니모닉은 예외로 칩시다 =ㅁ=)
이리 하여 프로그래머의 자유도를 거의 무한에 가깝게 보장해 주는 대신,
엄.청.난 길이의 코드와 -_-
한끗 삑날때마다 컴이 어디로 튈 지 모르는 위험-_-한 상황을 연출할 수 있지요.
.... 그런 면에서 이분은 나름 잘 버티고 있지요? -_-;
반면, 자바와 C#을 봅시다.
프로그래머의 편의는 엄청나게 제공합니다.
객체지향적인 형태로 객체들을 조합하기만 하면 금방 쉽게 프로그램이 구성이 되지요.
사소한 익셉션 조차도 try-catch와 내장 익셉션 기능을 이용해 처리가 가능하고,
이런 문제가 발생하더라도 시스템에 무리가 가지 않는, 그야말로 프로그래머의 책임을 엄청나게 덜어주는
같은 친구이지요 -_-;
이렇게 프로그래머의 책임과 수고를 덜어주는 대신,
Java와 C#의 프로그래머의 자유도는
...
프로그래머의 수고를 덜어주기 위한 객체지향의 기본 원칙들이
프로그래머의 자유를 제한하고 있습니다.
분명히 Java와 C#은 디버깅이나 코딩에 있어서, 그 뿐만 아니라 프로그램의 개발 속도나 생산성,
유지 비용 및 타 팀원과의 협동에는 매우 유리할 수 있으나,
그로 인해 스스로의 발을 어느정도 묶어버리게 되어버린 다는 것이지요.
자, 그럼 우리의 히어로 C와 C++을 볼까요?
C는 절차지향 언어이고, 하이레벨 언어이면서, 동시에 로우레벨 시스템의 컨트롤에 관여할 수 있습니다.
C++영감탱이는 객체지향을 표방한 절차지향 + 객체지향의 짬뽕 언어이면서,
C언어의 형태를 고대로 쓸 수도 있고, Java나 C#을 어느정도 흉내내서 쓸 수도 있으며,
자신만의 독창적인 신기한 형태의 객체지향을 구현할 수도 있지요.
그런데...
C와 C++은 타겟 프로그램을 어디에서 돌릴 목적으로 컴파일/링크/어셈블리 하느냐에 따라
자유도가 달라집니다.
가령 예를 들면, 윈도우즈 어플리케이션으로 컴파일 한 친구는 메모리 내부의 비디오메모리 번지에
접근하려 할 경우,
라는 OS의 강력한 경고를 받지만 -_-;;
커널 수준에서 제어할 목적으로 만들었다면,
요래도 뭐 문제삼지 않습니다 -_-;
왜냐,
시킨놈 마음대로니까요 -_-;
시킨놈이 알아서 처리할꺼라고 굳게 믿는거지요.
시키는 사람이 사태에 대해 잘 알건 모르건 신경 안쓰는 겁니다.
-_-;;
뽑던 말던... 뽑아서 보던 말던... =_=;;
고로, 프로그래머의 자유도는 사용하는 프로그래밍 언어의 자유도와 같다고 할 수 있고,
사용할 수 있는 프로그래밍 언어의 갯수이며,
프로그래머가 가진 지식의 양에 비례하고,
"프로그래머의 책임 정도에 달렸다"
라고 할 수 있지요.
요즈음 이것저것 해보다가 갑자기 든 생각이라 포스트로 구성해 보았습니다.
------------------------------------------------------------------------------------------
자유에는 책임이 따른다고 하지요?
같은 밥솥으로...
.... 요런 밥을 탄생시킬 수도 있고,
요런 밥이 나올 수도 있습니다 -_-;
밥 하는 사람의 책임에 따른 문제이지요.
프로그래밍 또한 같습니다.
프로그래밍의 자유도, 즉, 사용할 언어의 자유도에 따른 책임은 스스로 져야 한다는 것이지요.
어셈블리언어의 어셈블러는 아주 기초적인 문법만 체크할 뿐, 데이터와 코드의 구분도 잘 안해줍니다.
(MASM의 구분니모닉은 예외로 칩시다 =ㅁ=)
이리 하여 프로그래머의 자유도를 거의 무한에 가깝게 보장해 주는 대신,
엄.청.난 길이의 코드와 -_-
한끗 삑날때마다 컴이 어디로 튈 지 모르는 위험-_-한 상황을 연출할 수 있지요.
.... 그런 면에서 이분은 나름 잘 버티고 있지요? -_-;
반면, 자바와 C#을 봅시다.
프로그래머의 편의는 엄청나게 제공합니다.
객체지향적인 형태로 객체들을 조합하기만 하면 금방 쉽게 프로그램이 구성이 되지요.
사소한 익셉션 조차도 try-catch와 내장 익셉션 기능을 이용해 처리가 가능하고,
이런 문제가 발생하더라도 시스템에 무리가 가지 않는, 그야말로 프로그래머의 책임을 엄청나게 덜어주는
같은 친구이지요 -_-;
이렇게 프로그래머의 책임과 수고를 덜어주는 대신,
Java와 C#의 프로그래머의 자유도는
...
프로그래머의 수고를 덜어주기 위한 객체지향의 기본 원칙들이
프로그래머의 자유를 제한하고 있습니다.
분명히 Java와 C#은 디버깅이나 코딩에 있어서, 그 뿐만 아니라 프로그램의 개발 속도나 생산성,
유지 비용 및 타 팀원과의 협동에는 매우 유리할 수 있으나,
그로 인해 스스로의 발을 어느정도 묶어버리게 되어버린 다는 것이지요.
자, 그럼 우리의 히어로 C와 C++을 볼까요?
C는 절차지향 언어이고, 하이레벨 언어이면서, 동시에 로우레벨 시스템의 컨트롤에 관여할 수 있습니다.
C++영감탱이는 객체지향을 표방한 절차지향 + 객체지향의 짬뽕 언어이면서,
C언어의 형태를 고대로 쓸 수도 있고, Java나 C#을 어느정도 흉내내서 쓸 수도 있으며,
자신만의 독창적인 신기한 형태의 객체지향을 구현할 수도 있지요.
그런데...
C와 C++은 타겟 프로그램을 어디에서 돌릴 목적으로 컴파일/링크/어셈블리 하느냐에 따라
자유도가 달라집니다.
가령 예를 들면, 윈도우즈 어플리케이션으로 컴파일 한 친구는 메모리 내부의 비디오메모리 번지에
접근하려 할 경우,
라는 OS의 강력한 경고를 받지만 -_-;;
커널 수준에서 제어할 목적으로 만들었다면,
요래도 뭐 문제삼지 않습니다 -_-;
왜냐,
시킨놈 마음대로니까요 -_-;
시킨놈이 알아서 처리할꺼라고 굳게 믿는거지요.
시키는 사람이 사태에 대해 잘 알건 모르건 신경 안쓰는 겁니다.
-_-;;
뽑던 말던... 뽑아서 보던 말던... =_=;;
고로, 프로그래머의 자유도는 사용하는 프로그래밍 언어의 자유도와 같다고 할 수 있고,
사용할 수 있는 프로그래밍 언어의 갯수이며,
프로그래머가 가진 지식의 양에 비례하고,
"프로그래머의 책임 정도에 달렸다"
라고 할 수 있지요.
'(비정기) Dlbo's Post' 카테고리의 다른 글
Dlbo's Post 연기 공지. (0) | 2009.06.09 |
---|---|
코드 최적화, 어떻게, 왜 하는걸까? (9) | 2009.06.02 |
Design Pattern & Network, 5. 간략한 UDP 서버. (2) | 2009.05.19 |
Dlbo's Post 연기 공지 (2) | 2009.04.25 |
Design Pattern & Network, 5. 간략한 TCP/IP 서버. (0) | 2009.04.21 |