현재 버전

개인적으로 파이썬을 끔찍하게 싫어하는데 본문의 이유와 겹치는 부분이 별로 없는 것이 신기하네요. 본문이 틀렸다기 보단 언어에 대한 선호의 문제엔 다양한 기준이 있다는 걸 느끼게 되는 예인 것 같습니다.

전 들여쓰기에 대해선 큰 불만은 없습니다만 그렇다고 그게 파이썬의 장점이란 주장에 딱히 납득을 하는 편도 아닙니다.

중괄호를 생략해봐야 꼴랑 두 글자를 줄이는 것인데, 파이썬 문법은 그보다 훨씬 장황한 코드를 강제하는 구석이 많으니까요.

람다 한 번 쓸 때 마다 "lambda:"를 꼬박 꼬박 붙여야 한다던가, 삼항식을 if else로 써야 한다던가, 표현식 개념이 없어서 임시 변수와 return을 명시 해야 한다던가 하는 부분 이야기 입니다.

반면 괄호는 가독성 면에서 들여 쓰기 보단 조금 나은 점도 있으니 파이썬의 선택이 장점이 아니라는 점에는 어느 정도 동의합니다.

반복문의 경우 저는 성능도 그렇지만 무엇보다 함수형 관련 지원이 끔찍하게 장황한 점부터 고쳐야 한다고 봅니다.

예를들어 스칼라 같은 언어로 customers.filter(_.age > 30).map(_.name)으로 끝날 문제를 파이썬으로 오면 이렇게 됩니다:

map(lambda c: c.name, filter(lambda c2: c2.age > 30, customers))

고작 filter, map 한 번 씩 했다고 가독성이 저렇게 처참하게 떨어져 버렸습니다.

for-comprehension으로 개선할 수 있다고 말씀하실 분이 계시겠지만, 위는 예시일 뿐 보통 filter나 map을 사용하면 저 보다 훨씬 복잡한 체인을 구성하는 경우는 흔하고, 그런 걸 파이썬으로 표현하면 보기에도 끔찍한 코드가 됩니다.

무엇보다 파이썬은 람다를 쓰는 순간 타입 정보가 날아가 버리기 때문에 typing이고 mypy고 IDE 자동완성이고 다 무용지물이 되버립니다.

그리고 위의 예시에 깨알 같이 "c2"로 인자를 바꾸어 쓴 부분이 있는데, 메서드 체이닝을 안 하고 중첩을 해버리니 스코프가 겹쳐서 저런 문제가 생깁니다. 여기에 파이썬 특유의 이상한 스코프 규칙까지 더하면 저 구문 윗 쪽 어딘가의 if 문 안에서 c 변수를 썼다해도 IDE에선 인자의 shadowing에 대한 경고가 발생합니다.

flatMap/bind에 대한 문법도 존재하지 않기 때문에 스칼라나 C# 처럼 간결한 표현이 불가능합니다.

파이썬은 분명 배우기 쉽고 방대한 생태계가 존재한다는 장점이 있는 언어이고, 그런 이유로 입문용, 또는 머신러닝이나 데이터 사이언스 같이 스크립트가 보조적인 역할을 하는 분야의 경우 장점이 극대화 될 수 있는 것 같습니다.

하지만 파이썬으로 무언가 복잡한 걸 설계하고 유지보수해야 한다면 그보다 더 끔찍한 언어도 드물 것 같습니다.

어쩔 수 없이 계속 파이썬을 써야하는 입장에서 제발 다른 대안이 나왔으면 좋겠다는 생각을 매일 하고 있습니다.


수정 이력

2021-01-03 11:03:45 에 아래 내용에서 변경 됨 #3

개인적으로 파이썬을 끔찍하게 싫어하는데 본문의 이유와 겹치는 부분이 별로 없는 것이 신기하네요. 본문이 틀렸다기 보단 언어에 대한 선호의 문제엔 다양한 기준이 있다는 걸 느끼게 되는 예인 것 같습니다.

전 들여쓰기에 대해선 큰 불만은 없습니다만 그렇다고 그게 파이썬의 장점이란 주장에 딱히 납득을 하는 편은 아닙니다.

중괄호를 생략해봐야 꼴랑 두 글자를 줄이는 것인데, 파이썬 문법은 그보다 훨씬 장황한 코드를 강제하는 구석이 많으니까요.

람다 한 번 쓸 때 마다 "lambda:"를 꼬박 꼬박 붙여야 한다던가, 삼항식을 if else로 써야 한다던가, 표현식 개념이 없어서 임시 변수와 return을 명시 해야 한다던가 하는 부분 이야기 입니다.

반면 괄호는 가독성 면에서 들여 쓰기 보단 조금 나은 점도 있으니 파이썬의 선택이 장점이 아니라는 점에는 어느 정도 동의합니다.

반복문의 경우 저는 성능도 그렇지만 무엇보다 함수형 관련 지원이 끔찍하게 장황한 점부터 고쳐야 한다고 봅니다.

예를들어 스칼라 같은 언어로 customers.filter(_.age > 30).map(_.name)으로 끝날 문제를 파이썬으로 오면 이렇게 됩니다:

map(lambda c: c.name, filter(lambda c2: c2.age > 30, customers))

고작 filter, map 한 번 씩 했다고 가독성이 저렇게 처참하게 떨어져 버렸습니다.

for-comprehension으로 개선할 수 있다고 말씀하실 분이 계시겠지만, 위는 예시일 뿐 보통 filter나 map을 사용하면 저 보다 훨씬 복잡한 체인을 구성하는 경우는 흔하고, 그런 걸 파이썬으로 표현하면 보기에도 끔찍한 코드가 됩니다.

무엇보다 파이썬은 람다를 쓰는 순간 타입 정보가 날아가 버리기 때문에 typing이고 mypy고 IDE 자동완성이고 다 무용지물이 되버립니다.

그리고 위의 예시에 깨알 같이 "c2"로 인자를 바꾸어 쓴 부분이 있는데, 메서드 체이닝을 안 하고 중첩을 해버리니 스코프가 겹쳐서 저런 문제가 생깁니다. 여기에 파이썬 특유의 이상한 스코프 규칙까지 더하면 저 구문 윗 쪽 어딘가의 if 문 안에서 c 변수를 썼다해도 IDE에선 인자의 shadowing에 대한 경고가 발생합니다.

flatMap/bind에 대한 문법도 존재하지 않기 때문에 스칼라나 C# 처럼 간결한 표현이 불가능합니다.

파이썬은 분명 배우기 쉽고 방대한 생태계가 존재한다는 장점이 있는 언어이고, 그런 이유로 입문용, 또는 머신러닝이나 데이터 사이언스 같이 스크립트가 보조적인 역할을 하는 분야의 경우 장점이 극대화 될 수 있는 것 같습니다.

하지만 파이썬으로 무언가 복잡한 걸 설계하고 유지보수해야 한다면 그보다 더 끔찍한 언어도 드물 것 같습니다.

어쩔 수 없이 계속 파이썬을 써야하는 입장에서 제발 다른 대안이 나왔으면 좋겠다는 생각을 매일 하고 있습니다.

2021-01-03 06:19:28 에 아래 내용에서 변경 됨 #2

개인적으로 파이썬을 끔찍하게 싫어하는데 본문의 이유와 겹치는 부분이 별로 없는 것이 신기하네요. 본문이 틀렸다기 보단 언어에 대한 선호의 문제엔 다양한 기준이 있다는 걸 느끼게 되는 예인 것 같습니다.

전 들여쓰기에 대해선 큰 불만은 없습니다만 그렇다고 그게 파이썬의 장점이란 주장에 딱히 납득을 하는 편은 아닙니다.

중괄호를 생략해봐야 꼴랑 두 글자를 줄이는 것인데, 파이썬 문법은 그보다 훨씬 장황한 코드를 강제하는 구석이 많으니까요.

람다 한 번 쓸 때 마다 "lambda:"를 꼬박 꼬박 붙여야 한다던가, 삼항식을 if else로 써야 한다던가, 표현식 개념이 없어서 임시 변수와 return을 명시 해야 한다던가 하는 부분 이야기 입니다.

반면 괄호는 가독성 면에서 들여 쓰기 보단 조금 나은 점도 있으니 파이썬의 선택이 장점이 아니라는 점에는 어느 정도 동의합니다.

반복문의 경우 저는 성능도 그렇지만 무엇보다 함수형 관련 지원이 끔찍하게 장황한 점부터 고쳐야 한다고 봅니다.

예를들어 스칼라 같은 언어로 customers.filter(_.age > 30).map(_.name)으로 끝날 문제를 파이썬으로 오면 이렇게 됩니다:

map(lambda c: c.name, filter(lambda c2: c2.age > 30, customers))

고작 filter, map 한 번 씩 했다고 가독성이 저렇게 처참하게 떨어져 버렸습니다.

for-comprehension으로 개선할 수 있다고 말씀하실 분이 계시겠지만, 위는 예시일 뿐 보통 filter나 map을 사용하면 저 보다 훨씬 복잡한 체인을 구성하는 경우는 흔하고, 그런 걸 파이썬으로 표현하면 보기에도 끔찍한 코드가 됩니다.

무엇보다 파이썬은 람다를 쓰는 순간 타입 정보가 날아가 버리기 때문에 타이핑이고 mypy고 IDE 자동완성이고 다 무용지물이 되버립니다.

그리고 위의 예시에 깨알 같이 "c2"로 인자를 바꾸어 쓴 부분이 있는데, 메서드 체이닝을 안 하고 중첩을 해버리니 스코프가 겹쳐서 저런 문제가 생깁니다. 여기에 파이썬 특유의 이상한 스코프 규칙까지 더하면 저 구문 윗 쪽 어딘가의 if 문 안에서 c 변수를 썼다해도 IDE에선 인자의 shadowing에 대한 경고가 발생합니다.

flatMap/bind에 대한 문법도 존재하지 않기 때문에 스칼라나 C# 처럼 간결한 표현이 불가능합니다.

파이썬은 분명 배우기 쉽고 방대한 생태계가 존재한다는 장점이 있는 언어이고, 그런 이유로 입문용, 또는 머신러닝이나 데이터 사이언스 같이 스크립트가 보조적인 역할을 하는 분야의 경우 장점이 극대화 될 수 있는 것 같습니다.

하지만 파이썬으로 무언가 복잡한 걸 설계하고 유지보수해야 한다면 그보다 더 끔찍한 언어도 드물 것 같습니다.

어쩔 수 없이 계속 파이썬을 써야하는 입장에서 제발 다른 대안이 나왔으면 좋겠다는 생각을 매일 하고 있습니다.

2021-01-03 06:15:54 에 아래 내용에서 변경 됨 #1

개인적으로 파이썬을 끔찍하게 싫어하는데 본문의 이유와 겹치는 부분이 별로 없는 것이 신기하네요. 본문이 틀렸다기 보단 언어에 대한 선호의 문제엔 다양한 기준이 있다는 걸 느끼게 되는 예인 것 같습니다.

전 들여쓰기에 대해선 큰 불만은 없습니다만 그렇다고 그게 파이썬의 장점이란 주장에 딱히 납득을 하는 편은 아닙니다.

중괄호를 생략해봐야 꼴랑 두 글자를 줄이는 것인데, 파이썬 문법은 그보다 훨씬 장황한 코드를 강제하는 구석이 많으니까요.

람다 한 번 쓸 때 마다 "lambda:"를 꼬박 꼬박 붙여야 한다던가, 삼항식을 if else로 써야 한다던가, 표현식 개념이 없어서 임시 변수와 return을 명시 해야 한다던가 하는 부분 이야기 입니다.

반면 괄호는 가독성 면에서 들여 쓰기 보단 조금 나은 점도 있으니 파이썬의 선택이 장점이 아니라는 점에는 어느 정도 동의합니다.

반복문의 경우 저는 성능도 그렇지만 무엇보다 함수형 관련 지원이 끔찍하게 장황한 점부터 고쳐야 한다고 봅니다.

예를들어 스칼라 같은 언어로 customers.filter(_.age > 30).map(_.name)으로 끝날 문제를 파이썬으로 오면 이렇게 됩니다:

map(lambda c: c.name, filter(lambda c2: c2.age > 30, customers))

고작 filter, map 한 번 씩 했다고 가독성이 처참하게 떨어져 버렸습니다.

for-comprehension으로 개선할 수 있다고 말씀하실 분이 계시겠지만, 위는 예시일 뿐 보통 filter나 map을 사용하면 저 보다 훨씬 복잡한 체인을 구성하는 경우는 흔하고, 그런 걸 파이썬으로 표현하면 보기에도 끔찍한 코드가 됩니다.

무엇보다 파이썬은 람다를 쓰는 순간 타입 정보가 날아가 버리기 때문에 타이핑이고 mypy고 IDE 자동완성이고 다 무용지물이 되버립니다.

그리고 위의 예시에 깨알 같이 "c2"로 인자를 바꾸어 쓴 부분이 있는데, 메서드 체이닝을 안 하고 중첩을 해버리니 스코프가 겹쳐서 저런 문제가 생깁니다. 여기에 파이썬 특유의 이상한 스코프 규칙까지 더하면 저 구문 윗 쪽 어딘가의 if 문 안에서 c 변수를 썼다해도 IDE에선 인자의 shadowing에 대한 경고가 발생합니다.

flatMap/bind에 대한 문법도 존재하지 않기 때문에 스칼라나 C# 처럼 간결한 표현이 불가능합니다.

파이썬은 분명 배우기 쉽고 방대한 생태계가 존재한다는 장점이 있는 언어이고, 그런 이유로 입문용, 또는 머신러닝이나 데이터 사이언스 같이 스크립트가 보조적인 역할을 하는 분야의 경우 장점이 극대화 될 수 있는 것 같습니다.

하지만 파이썬으로 무언가 복잡한 걸 설계하고 유지보수해야 한다면 그보다 더 끔찍한 언어도 드물 것 같습니다.

어쩔 수 없이 계속 파이썬을 써야하는 입장에서 제발 다른 대안이 나왔으면 좋겠다는 생각을 매일 하고 있습니다.