Overkill – Java as a First Programming Language

Matthias Endler

오버킬: 첫 프로그래밍 언어로 자바

최근에 우리 동네 학생과 첫 프로그래밍 경험에 대해 이야기했어요. 그 학생은 학교에서 자바를 배우기 시작했는데, 곧 그 경험이 끔찍하다는 걸 알게 됐죠.

우리 중 많은 사람은 BASIC이나 Pascal 같은 언어로 코딩을 배웠어요. 객체 지향도 없었고, 정교한 파일 입출력도 없었으며, 모듈화도 거의 없었죠… 그리고 그게 오히려 좋았어요. BASIC에서는 그냥 이렇게 쓰면 됐죠.

PRINT "HELLO WORLD"

그러면 끝이었어요. 이건 실제로 실행되는 프로그램이었고, 화면에 텍스트를 출력하는 기본적이고 반복적인 문제를 해결했죠.

자바에서 같은 일을 하려면 이렇게 쓰면 돼요:

public class Main {
  public static void main (String[] args) {
    System.out.println("Hello, world!");
  }
}

생각할 수 있는 가장 쉬운 작업을 해내는 데도 프로그래밍에 대한 지식이 얼마나 많이 필요한지 보이나요? 초보 프로그래머에게 이 프로그램을 설명하면 아마 이렇게 들릴 거예요:

void를 반환하고 단일 인자로 문자열 배열을 받는 main 메소드를 가진 Main 클래스를 만들고, PrintStream 클래스의 out 객체의 println 메소드를 사용해 텍스트를 단일 인자로 전달하세요.

— 괄호만 잊지 마세요. 이러면 첫 프로그래밍 시간은 확실히 아주 재미있을 거예요.

좋아요. 그럼 대안은 뭘까요? 더 이상 아무도 BASIC을 쓰고 싶어 하지 않는다는 걸 인정해요. 그래픽을 위한 정교한 표준 라이브러리가 없고 (자바도 없지만) 확장성도 약하기 때문이죠. 언어는 깔끔하고 직관적이어야 해요. 수치 작업에는 충분히 빨라야 하고, 딱딱한 C 스타일 중괄호 언어처럼 장황하지 않아야 해요 (미안해요, C++ 여러분). 학습 곡선이 완만해야 하고, 직접적인 피드백이 있어야 하죠 (컴파일 언어는 종종 그 점에서 형편없어요). 깨끗한 코드를 장려하고 모범 사례를 보상해야 해요. 그 모든 것을 제공하는 언어 중 하나가 파이썬이에요.

그리고 파이썬은 그 이상을 제공해요. 거의 모든 것을 도와주는 수백 개의 라이브러리, 일반적인 IDE와의 좋은 통합 (Eclipse의 PyDev, IDLE 등), 정확하고 우아한 문법까지요.

위에서 본 프로그램을 파이썬으로 작성하면 이렇게 돼요:

print("Hello World")

이 시점에 객체 지향, 스코프, 함수 인자를 알 필요가 전혀 없어요. 챙겨야 할 잡무도, 장부 정리 같은 것도 필요 없죠. 네, 인터프리터 언어이긴 하지만, 초보자에게 그게 큰 문제가 되지는 않아요.

아직 확신이 없다면, 자바에서 텍스트 출력을 인쇄하고 형식화하는 일은 고급 프로그래머에게는 상대적으로 쉽지만, 끔찍한 일은 파일 입력부터 시작돼요:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class fileIO {
    public static void main(String[] args) {
        String filename = "test.txt", line;
        try {
            BufferedReader myFile =
                new BufferedReader(new FileReader(filename));

            while ( ( line = myFile.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이런 말이 들릴 것 같아요. “야, 파일 입출력은 꽤 복잡한 거야. 원래 그런 거지.” 맞는 말이에요… 내부적으로는요. 하지만 초보자에게는 쉬운 인터페이스가 필요해요. 파이썬이 그 방법을 보여줘요:

file = open("test.txt")
text = file.read()
print(text);

이 코드는 그 과정에 대한 자연스러운 이해와 그대로 맞아떨어져요. “컴퓨터가 파일을 열고, 읽고, 출력한다”는 식이죠. 다섯 살 난 아이도 이해할 수 있어요. 아무도 “파일을 읽으려면 먼저 FileReader 위에서 동작하는 BufferedReader가 필요하다…”고 설명을 시작하지 않아요. 그게 내부적으로 정확히 그렇게 작동한다 하더라도요. 처음에는 큰 그림, 즉 컴퓨터에게 유용한 일을 하도록 가르치는 기초 원리를 설명해야 해요. 그렇지 않으면 초보자를 좌절하게 만들고, 자신이 프로그래밍에 충분히 똑똑하지 않다고 착각하게 만들 거예요. 프로그래밍은 재미있고, 시작하는 것이 가장 중요한 단계예요. 그러니 불필요한 추상화의 겹겹으로 그 경험을 망치지 마세요.

링크

원문은 Matthias Endler님이 에 게재했습니다.

이 글은 deepseek-v4-flash 모델을 사용해 번역했습니다.