프로그래밍 언어의 발전은 어떻게 보면 상당 부분이 보일러플레이트 코드를 제거하려는 노력의 결과라고 할 수 있다. 몇십년에 걸친 연구와 노력의 결과 인류는 마침내 보일러플레이트로 가득찬 아래의 자바 코드를
public class Pet {
private String name;
private Person owner;
public Pet(String name, Person owner) {
this.name = name;
this.owner = owner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person getOwner() {
return owner;
}
public void setOwner(Person owner) {
this.owner = owner;
}
}
단 4줄의 C# 코드로 바꿀 수 있게 되었다:
public class Pet {
public string Name { get; set; }
public Person Owner { get; set; }
}
마찬가지로 아래의 장황한 자바 코드1는
// The fibonacci sequence
class Fibonacci implements Iterable<Integer> {
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int a = 0;
private int b = 1;
@Override
public boolean hasNext() {
return true; // Infinite sequence
}
@Override
public Integer next() {
int tmp = a;
a = b;
b = a + tmp;
return tmp; // Boxing conversion
}
@Override
public void remove() {
throw new UnsupportedOperationException(
"Not supported by the Fibonacci sequence.");
}
};
}
}
// The Fibonacci sequence
public static IEnumerable<int> Fibonacci() {
int a = 0;
int b = 1;
while (true) {
yield return a;
a += b;
yield return b;
b += a;
}
}
그렇다면 왜 처음부터 후자처럼 문법을 짧고 간결하게 만들지 못한 것일까? 이유를 한 마디로 요약하면
짧게 만들기가 길게 만들기보다 훨씬 어렵다.
이 점에 대해서는 이미 옛 성현(?)이 언급한 바 있다:
‘‘I have made this letter longer than usual, because I lack the time to make it short.’’
— Blaise Pascal내가 이 편지를 평소보다 길게 쓴 것은 짧게 쓸 시간이 부족했기 때문이다.
따라서 여러분이 평소보다 코드를 길게 짜는 것 같다면 그 이유는 아마도
자바로 짰기 때문이다.
- http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp ↩
- 실제로는 두 코드 모두 같은 버그가 있다. 여기서는 비교 차원에서 소개한 것이다. ↩
- 짧기도 짧지만 박싱/언박싱이 필요없는 C#이 더 빠르다. ↩
댓글 없음:
댓글 쓰기
댓글을 입력하세요. 링크를 걸려면 <a href="">..</a> 태그를 쓰면 됩니다. <b>와 <i> 태그도 사용 가능합니다.
게시한지 14일이 지난 글에는 댓글이 등록되지 않습니다. 날짜를 반드시 확인해 주세요.