저자: 한동훈(traxacun at unitel.co.kr)
어떤 언어를 사용하고 있는가는 중요하지 않으며 언어에 있어서 패배란 있을 수 없다. 어쨌든 언어라는 것은 생명력을 갖고 있고 새로 생겨났는가하면 메이저에서 조용히 물러난 언어도 있는 법이다. 나의 첫번째 직업적 프로그래밍 언어가 코볼이었다는 점을 생각해보면 말이다. 아마도 C와 C++만 일다가 코볼을 접하게 되고, 모두가 C로 시작하는 언어로 먹고 사는 줄 알았고 결국 C로 시작하는 언어(코볼)로 먹고 살게 되었으니 말이다.
2002년에도 자바와 C#에 대한 논쟁이 많은 커뮤니티에서 있었지만 시간 소모적인 논쟁이 아닌가 싶다. 여기서도 그러한 논쟁을 재현할 생각도 없으며 그러한 논쟁에 참여한 적이 없으므로 어떤 주제들로 서로를 상처입히기 위해 으르렁거렸는지 알지도 못한다.
Java and .Net both a disaster
위 기사를 보면 전체 자바 프로젝트의 약 70% 정도가 실패한 프로젝트이며 시장에 초기 진입한 닷넷 역시 비슷한 정도로 실패했다는 내용을 알 수 있다. 결국, 개발자가 고민해야할 것은 언어, 프레임워크의 문제가 아니라 설계와 어떻게 하면 성공적인 프로젝트로 이끌 수 있는가하는 스킬이 더 중요하다는 것을 알 수 있을 것이다.
Microsoft "X#" On Tap?
마이크로소프트의 C#이후에 D언어, F#과 같은 언어들도 등장하면서 # 시리즈 언어들이 등장하고 있는 가운데 지난해 XML 2002 Conference에서 MS는 X#과 같은 언어에 대한 가능성도 이야기되었다고 한다. 현대 언어들이 객체지향 개념에 지나치게 묶여있는 반면에 현재 요구되고 있는 것은 데이터 중심으로 기술할 수 있는 언어의 필요성을 반영하는 언어가 있어야한다는 것이다.
C# Generics in Rotor
C#을 FreeBSD와 Mac OS X에서 이용할 수 있는 Rotor가 MS 사이트에서 공개되어 있으며 이 Rotor에서 Generic Programming을 하는 것에 대한 소개를 담고 있다.
NEW C# LANGUAGE FEATURES
지난해 2002년에 열린 OOPSLA에서 Anders Hejlsberg가 발표한 내용으로 다음 버전의 C#에 추가될 새로운 특징들로 언급된 내용을 담고 있다. 여기에는 Generics, Anonymous Method, Iterators, Partial Types가 있다. 현재의 닷넷 프레임워크 v 1.0에서도 Generics는 이용할 수 있으며 이는 CLIX라는 이름으로 배포되고 있다.
닮아가는 자바와 C#
JSR 201: Extending the JavaTM Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import
JSR201에서 제안된 것들은 JDK 1.5(코드명 Tiger)에 포함될 것이라고 하는데 C#에서 볼 수 있는 박싱과 같은 기능들이 자바에 포함되는 것을 알 수 있다. 자바를 쓰는 동료에 의하면 ADO, ADO.NET에서 보았던 단절된 데이터셋(Disconnected DataSet)에 대한 지원도 포함된다고 한다.(참으로 어이없을 정도로 빠르다고 하는 이야기를 들었다)
다음 버전의 자바에 포함될 기능에 대해서 친절하게도 정리해주었는데 그 기능들은 다음과 같다고 한다.
뿐만 아니라 다음 내용들 역시 JDK 1.5의 변화될 내용들이다.
- JSR-003 JavaTM Management Extensions (JMXTM) Specification
- JSR-013 Decimal Arithmetic Enhancement
- JSR-014 Add Generic Types to the JavaTM Programming Language
- JSR-101 JavaTM APIs for XML RPC
- JSR-105 XML Digital Signature APIs
- JSR-106 XML Digital Encryption APIs
- JSR-114 JDBC Rowset Implementations
- JSR-121 Application Isolation API Specification
- JSR-163 JavaTM Platform Profiling Architecture
Mono
모노 프로젝트는 리눅스에서 CLI 코드를 컴파일하고 실행할 수 있는 도구를 제공한다. C#, VB.NET, ASP.NET과 같은 다양한 닷넷 기술들을 사용할 수 있게 해준다. 개발 진행 상황들을 확인할 수 있다. 데비안 사용자는
Mono for debian에서 데비안용 패키지를 받아서 설치할 수 있다.(apt-get install mono mono-interpreter를 실행하고, mcs, mint를 사용해서 컴파일과 실행을 모두 할 수 있다) ASP.NET을 위한 WAS(Web Application Server) XSP도 이곳에서 받아볼 수 있다.(데비안 패키지는 아직 제공되지 않고 있다)
mod_haydn
mod_haydn은 아파치에서 MSIL 코드를 임베드하여 사용할 수 있게 해주는 모듈이다. 아파치에서 임베드된 MSIL 코드를 실행하는 것에 관심이 있다면 mod_haydn 프로젝트에도 관심을 가져주기 바란다.
Essential .NET, Volume I: The Common Language Runtime
닷넷팀의 한 사람이며 가장 많은 공헌을 한 사람을 꼽으라면 Don Box를 들 수 있으며, 그의 첫번째 책이다. CLR의 내부 동작 방식에 대해서 자세히 설명하고 있으며 CLR의 비밀스러운 부분을 엿보고자하는 분들에게는 좋은 책이 될 것이다.
Production Debugging for .NET Framework Applications
닷넷 프레임워크 응용 프로그램의 디버깅에 대한 MSDN 문서이며, 디버깅을 살펴보고자하는 분들에게 좋은 출발점이 될 것이다.
위에서 소개한 것들외에도 닷넷 환경을 위한 다양한 프로젝트가 진행중에 있으며 새로운 성과물들을 속속 내놓고 있다. 닷넷 환경에서 Unit Testing을 할 수 있는 NUNIT도 소개되어 있다. 또한 JDK 1.5에 포함될 foreach, 박싱등이 C#에 이미 있는가하면 자바와 C# 모두 다음 버전에 Generic Programming을 지원하기 위한 준비를 착실히 수행하고 있다.
다소 두서없이 이것저것 소개했지만 결국에 내가 하고 싶었던 이야기는 프로젝트가 성공하기 위해서는 언어나 프레임워크의 문제가 아니라 소프트웨어 개발 프로세스 즉 설계와 방법론 그리고 이를 잘 적용하며 프로젝트를 이끌어갈 수 있는 사람이 더 중요하다는 것을 말하고 싶다. 객체 지향 패러다임이 무르익어가는 시점에 자바가 등장하여 다양한 실험들이 자바에서 먼저 시도되었고 Unit Testing, ANT, Jakarta와 같은 다양한 산출물들이 먼저 있을 뿐이다.(ANT와 같은 경우에는 훌륭한 빌드툴이라 하기전에 자바에 제대로 된 빌드툴조차 없었음을 나타내는 반증이고, 자바 커뮤니티의 ANT에 대한 환호는 그 목마름에 대한 상대적 보상이 아니었을까? :)
여러분 중에 자바와 C#과 같은 언어에서 디바이스 드라이버를 개발하려는 사람은 없을 것이다. 애초에 그러한 용도로 개발된 언어가 아니기 때문에 디바이스 드라이버 개발은 불가능하다.(C#에서 이용할 수 있는 라이브러리를 Managed C++로 작성하는 작업들은 결국 C++이지 C#과 같은 언어가 아니다)
2003년이 되었고 올해에도 많은 이슈들이 여러분을 기다리고 있을 것이다. 그러나 호사가들의 이야기에 귀를 기울이기보다는 여러분이 사용하는 언어의 코드 한 줄에 더 많은 노력을 기울였으면 한다.