본문 바로가기
👨‍💻 프로그래밍/기타

내가 Python을 싫어하는 이유

by 개발자 진개미 2024. 9. 5.
반응형


Python과 관련된 경험

  • 서버 개발자로 취업하기 전에는 인공지능 관련 분야로 취업하려 해서 Numpy, Matplotlib, Keras, Tensorflow 같은 Pyhton Library를 사용해 모델링을 했습니다.
  • Django로 간단한 CRUD 웹 개발을 해 봤습니다.


싫은 이유 1 - Indentation으로 Scope 구분

이건 순전히 개인 취향입니다. 하지만 첫 프로그래밍 언어로 Swift, 다음 언어로 Java를 배운 사람 입장에서는 C 언어에서 유래된 중괄호 ({})로 Scope를 구분하는 문법이 너무 익숙해 져서 Python의 Indentation으로 구분하는 방식이 굉장히 보기 힘들고 자유도가 떨어지는 느낌이 듭니다.

예를 들어 여러 겹의 if나 for 문을 중첩해서 쓸 때 Python은 Indentation으로 구분을 하기 때문에 헷갈립니다.

for i in range(1, 4):  # Outer loop
    print(f"Outer loop, i = {i}")

    for j in range(1, 4):  # Inner loop
        if i == j:
            print(f"  Inner loop, j = {j} (skipping because i == j)")
            continue  # Skip this iteration if i == j

        print(f"  Inner loop, j = {j} (normal execution)")

 

반면 중괄호가 있는 언어는 이게 상대적으로 덜 합니다.

for (i in 1..3) { // Outer loop
    println("Outer loop, i = $i")
    
    for (j in 1..3) { // Inner loop
        if (i == j) {
            println("  Inner loop, j = $j (skipping because i == j)")
            continue // Skip this iteration
        }
        
        println("  Inner loop, j = $j (normal execution)")
    }
}

싫은 이유 2 - Dynamic Typing

사실 동적 타이핑은 Python 만의 문제는 아니고 JS도 가지고 있는 문제입니다. 그래서 꼭 Python을 향한 디스만은 아니지만... 동적 타이핑에 크게 당해본 사람으로서 악감정을 가지지 않기는 힘듭니다.

Python에는 아래 코드가 문제없이 동작합니다.

x = 5
x = "oops"
x = [1, 2, 3]  # 실화냐?

 

이런 유연한 타입은 특히 함수에서 지옥입니다. a, b가 무슨 타입인지 주석이라도 남겨 놓지 않으면 나중에 본인이 봐도 까먹기 십상입니다.

def do_stuff(a, b):
    return a + b

싫은 이유 3 - 빨리 짠 코드의 유지 보수 어려움

사실 이유 1, 이유 2는 Python의 장점으로 올려지기도 합니다. 코딩을 빠르게 하기에는 Python 만한 게 없습니다. 하지만 이걸 유지보수해야 한다면 어떨까요? 이유 1과 이유 2를 피할 수 있는 여러 방법이 당연히 있긴 합니다.

  • 이유 1 - Idetation으로 구분이 힘들어? 애초에 몇 단계 깊게 들어가는 코드를 안 쓰면 되지
  • 이유 2 - Dynamic Typing도 주석으로 타입에 관한 내용을 넣거나 mypy를 쓰면 돼

하지만 언어에서 이 모든걸 지원해서 이론적으로 그럴 수 있다는 건, 그런 코드가 있다는 뜻입니다. 그것도 상당히 많이... 특히 Python의 경우 빨리 짤 수 있는 스크립트 언어로 인기가 있으니 엉망인 코드가 다른 언어에 비해서도 상당히 많습니다.

처음에 빨리 코드를 쓸 수 있는 건 좋지만, 대부분의 사람은 대부분의 시간을 새로운 코드를 만드는 게 아니라 기존 코드를 유지보수하고 고치는 데 씁니다. 이때 이 코드가 Python이면 2배 이상으로 힘든 거 같습니다.


결론

그렇다고 Python을 좋아하는 분들이 잘못된건 결코 아닙니다. 결국 각자의 취향과 사용 용도에 따라 다릅니다. 엄격한 Typing이나 C 언어와 비슷한 문법은 다른 프로그래밍 언어에 익숙하진 분들이나 큰 프로젝트를 하시는 분들에게는 좋은 점이겠지만 그냥 간단한 프로그램을 작성하고 싶거나 프로그래머가 아닌 사람들에게는 쓸데없는 제약입니다. 아마 그래서 Python이 수학이나 과학을 하시는 분들에게 인기가 많은 거 같습니다.

저 또한 Python으로 코딩하는걸 좋아하지는 않지만 필요하다면 기꺼이 하겠죠? 결국 중요한 건 기술 그 자체가 아니라 그 기술로 창조해 내는 가치이기 때문에...


반응형