오랜만에 와 봤더니 파이슨 욕을 하고 싶어하는 사람들이 많은 거 같던데
직접 대가리 깨져 본 경험으로 반박 못하는 진짜 단점들 이야기 해드림
1. 1줄 람다
사실 정확히는 statement가 들어갈 수 없고 expression만 하나 쓸 수 있다.
그래서 람다 안에서는 assertion을 못 한다. 함수로 랩핑하면 되지만 그럴 바에 람다를 안 쓰겠지
프린트도 못해서 디버깅을 하려면 tap 같은 함수를 정의해야 한다. 빡친다.
무슨 Scheme같은 틀딱 언어도 아니면서 굳이 l a m b d a 다 치는 것도 븅신같다.
존나 쓸데 없는 신택스는 오지게 도입하면서 화살표 함수 같은 슈가를 넣을 생각은 왜 안 할까
그렇게 커두는 람다를 곱창 내놓은 다음 성능이 떨어지고 가독성이 구리므로 쓰지 말라고 한다.
니가 그렇다면 그런거겠지
2. 언어 개발자가 하위 호환성과 버전 관리에 관심이 없다.
2에서 3으로 가면서 하위 호환을 버린 결정은 정말 프밍 언어의 역사에 길이 남을 븅신 짓
알파 버전도 아니고 진짜 많이들 쓰는 언어에 이런 미친 짓을 하는 건 파이슨 말고는 본 적이 없음
자바스크립트처럼 태생적으로 여러 벤더에서 만들어진 언어도 아니고
커두 혼자서 독재하던 언어가 이렇게 개판 치는 건 굉장히 신기하게 느껴진다.
3. 그걸 따라하는 건지 라이브로리 개발자도 하위 호환은 좆깐다
안 써서 있는지 모르겠는데 pip으로 모든 라이브러리 업데이트? 하면 보통 개좆된다. 하지 말자.
파이슨에서 디펜던시 관리는 돌아가는 라이브러리의 조합을 외우거나 requirements.txt에 기록해 둔 다음 잊어버리는 게 답이다.
이건 전에 한번 남이 짠 코드 돌리다 당해본 건데
이 미친 놈들은 deprecated 된 걸 버전업 후에 진짜로 빼버렸다. 이유는? 보기에 아름답지 않아서
그래서 결과가 스오플의 scipy.misc의 imread를 찾는 글들이다.
scipy도 꽤 많이 쓰는 라이브러리다... 그리고 imread도 참 많이들 썼나보다. 그걸 지워버렸다.
정상적인 라이브러리 개발자라면 deprecated 한 걸 호출하면 "쓰레기니까 쓰지마세요" 이 정도 경고문구만 출력해야 한다
아예 안 돌아가게 하는 게 아니라!
이때 어떻게 해결했냐면
스오플 제안에 따라 다른 라이브러리의 imread를 썼다가
함수의 결과가 달라져서 패드립 치고 도커로 빤스런했다.
내 생각에 파이썬 유저들이 대놓고 말은 안 하지만
"늘 새로운 걸 쓰고 오래된 건 버린다" 이게 분명히 파이써닉일 거다
4. 그냥 느림
무슨 무슨 언어가 빠르네 병림픽을 하면서 벤치 들고 오는 경우가 있다.
거기서 의미 있는 건 딱 하나임: 인싸 언어들 중에서 파이썬은 압도적으로 쳐느리다는 것
그 외엔 별로 의미 있는 떡밥이 아니므로 무시해도 무관
아는 사람한테 들은 이야기인데 넥슨 듀랑고는 서버를 파이썬으로 짰다고 한다
그래서 망한 거 아닐까...?
그 외에도 사소한... str(None) == 'None'이나 for x in {k:v, k1:v}: 하면 key만 나오는 등 몇몇 정신나갈 것 같은 피처들이 있음...
하위호환성은 뭐 tensorflow같은애도 그렇지 않나? tensorflow2랑 1이랑 호환 안되잖아
텐서플로우는 뭐 어짜피 네임스페이스 떡칠이긴 하지만 1코드 2에서 돌아가게 바꿔주는 스크립트라도 제공해줌
뭐 그렇게 치면 파이썬도 2to3를 지원하잖아... 애초에 다른 언어들도 라이브러리 버전을 따로 관리하는데, 굳이 파이썬의 단점이라고 까기엔 좀? 속도느리거나 한줄람다는 단점맞고ㅋㅋㅋ
파이썬은 언어고 텐서플로우는 라이브러리잖아 언어가 바뀌면 거기서 돌아가는 라이브러리도 다 바꿔야하는데
속도는 그렇다치고 단순히 2to3로 바꿔지면 다행인데 대부분 파이썬 라이브러리가 파이썬 구현 자체에 의존성을 가져서 갈아엎어야 된다
라이브러리 호환을 단점으로 꼽은걸 얘기한 거였음, 2 -> 3 호환말고, 위에 2to3 얘기한건 script 있다고 python2하고 3하고 호환된다 얘기할수 없듯이 tensorflow 1하고 2하고 호환된다고 볼수없다는 얘기였고. 2 -> 3 호환은 나도 문제라고 생각함 ㅋㅋ 근데 라이브러리 호환 안되는걸로 까는건 단점이 될수 없단거
호환성이 특정 그룹에겐 가장 중요하고 가장 큰 단점이 될수도 있는거지
비정상이 정상이 되셨습니다 고객님
사실 수준 이하의 라이브러리 문제는 개발자가 아닌 유저들이 많아서 생기는 부작용임. 하위 호환 같은 건 딱히 중요하지 않은 분들.. 파이썬 그래프 라이브러리로 networkx라는 라이브러리가 있는데 이보다 더 쓰레기 같은 인터페이스의 API는 본 적이 없음. 근데 되는 게 젤 많아서 울며 겨자먹기로 씀... 라이브러리 문제는 어딜 가나 비슷하긴 함. 파이슨에서 대가리가 많이 깨져서 그런 느낌이 드는 거 같기도 하고. 걍 각을 잘 보고 잘 골라 써야되는 거 같음. scipy의 기타(.misc) 모듈 같은 쎄한 곳에 있는 imread를 쓴 건 사용자 잘못인 거 같기도 하다,,,
듀랑고는 걍 재미없어서 망한거 아님?
호환성은 메이저 버전 올랐으면 그럴 수 있는거 아닌가?
그리고 deprecated도 쓰지 말라고 표시해놓은건데 버전 관리 잘 된거면 문제 없다고 생각
메이저 버전 올리면 깨질 각오는 해야지 deprecated까지 해줬으면 할만큼 한것
씨이발 imread ㅋㅋㅋ 저걸로 한참 노가다했는데
앗 선생님도 당하셨읍니까
2번3번 진짜 너무 ㅅㅂ....
그와중에 qastack, lottoking 쓰레기 사이트가 맨위에 있는거보소
딱 대학이나 연구실 언어자너 실험적이고, 믿을만한 그런건 아니고
근데 웹서버 짤때 존나 많이 씀...
펄도 그러고 웹서버 쓴다는 언어는 어째 설계가