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으로 코딩하는걸 좋아하지는 않지만 필요하다면 기꺼이 하겠죠? 결국 중요한 건 기술 그 자체가 아니라 그 기술로 창조해 내는 가치이기 때문에...
'👨💻 프로그래밍 > 기타' 카테고리의 다른 글
Chrome Extension 개발하기 (0) | 2024.12.21 |
---|---|
B2B vs B2C, 개발자 입장에서 비교해 보기 (0) | 2024.08.23 |
영어권에서 자주 쓰는 프로그래밍 신조어 소개 (feat. Programming Slag) (0) | 2024.08.04 |
토스에서의 첫 팀 회고 (🏠 주담대팀) (0) | 2024.07.05 |
🐶 신입 개발자가 3개월 현업에서 굴러본 후기 (0) | 2023.11.26 |