1. async await 성능
기본 탑재 event loop이 느림.
uvloop 쓰라고?
Node처럼 libuv 쓴다고 해도 node가 libuv 기능을 훨씬 많이 쓰는 반면 uvloop는 asyncio loop의 drop in 패치라 제약이 많음.
Stream 받아와서 읽고 보내고 할 때 Boxing Unboxing 이나 GIL 문제는 덤.
결국 일정 수준 이상의 성능이 필요하면, async 넣는 순간 머리아파짐.
2. JiT, AoT 둘 다 없음
언어 차원에서 지원하는 최적화가 거의 없음
while i in range(10):
SomeClass.someMethod
someMethodLocal = SomeClass.someMethod()
while i in range(10):
someMethodLocal()
후자가 훨씬 빠름. 이정도 최적화도 안해준다고? 라는 생각밖에...
3. Indentation 문제 (괄호 없음)
이거 '난 괜찮은데?' 하는 애들은 전부 인덴테이션 레벨별로 색칠해주는 플러그인같은거 압수해야됨.
실수로 중간에 이상한 구문 넣고 auto format 하면 인덴테이션이 '비가역적으로' 변한다던가, 분기 추가하면서 맨 밑에 한 두 줄을 빼먹고 indentation 하면 헬게이트 오픈.
IDE로 못잡는 런타임 에러 만들기 딱 좋음
4. 예약어가 거의 없음
상식적으로 int, float 이런 건 예약어로 해놔야 하지 않나? 싶지만... shadowing 경고해주는 플러그인 없으면 잘만 돌아감ㅋㅋ
int = 404
...
someVal = int(someFloat)
하면 '런타임' 에러 남
더 쓰고 싶은 건 많지만 똥 다 싸서 이만....
이거 완전 파이쏘닉한데요? 완전 스크립트인데요?
어디서 자바스크립트같은 언어가 꼴에 스크립트라면서 JIT 있고 예약어 있고 C 패밀리 마냥 {}로 파싱하고 그게 어딜 봐서 스크립트 언어냐 이말입니다
JiT 컴파일러는 LISP에서 처음 도입됨 (LISP가 스크립트 언어냐는 논쟁은 패스)
솔직히 나도 파이썬말고 다른거 쓰고싶은데 다른언어에서 쓸 시도도 못하는 라이브러리가 조온나 많기 때문에 어쨌든 파이썬이 강요됨
ㄹㅇㅋㅋ
2번 예제 맞는거임?
ㄴㄴ 실수한듯 ㅋㅋ
ㄴㄴ 바인딩할때 ()가 없어야함 ㅋㅋ 덕분에 실수한거 알고 본문 고침
님 평소에도 변수명 카멜케이스로함..?
ㄴㄴ 폰으로 스네이크 케이스 치기 힘들다...
파이썬에서 성능 따지는거 바보짓이고 다른거도 솔직히 별로 공감안됨. 근데 2번은 좀 필요하다고 생각하긴 함. 근데 jit은 추가할 생각 없다고 해놔서 아쉬움
바보짓이라니... 실제 요구사항들 맞추려면 성능이 필요할 때가 꽤나 있음. 결론은 항상 C Extension을 짜서 넣든 뭘 하든 똥꼬쇼로 귀결되지만..
예약어가 없다고 해야 되나 있다고 해야 되나.. 전에 test.py 라는 파일 만들었다가 괴상한 버그가 나는 문제가 있었음 알고 보니 파이썬 언어 자체에서 test라는 모듈을 불러오는 게 있는데 그거랑 충돌이 난다는 거임 시발 진짜 정신 나가는 줄 알았다
C++ 같은 거 보면 라이브러리 내부 코드 같은 거 identifier 개쓰레기 같은 이름 쓰는데 그게 사용자랑 충돌 안 일으키려고 그러는건데 파이썬은 지들이 무슨 앱을 쳐만드는 줄 아나봐 어떻게 test.py 라는 이름을 못쓰게 해 둔건지 지금 버전에는 수정됬을지도 모르겠는데 아무튼 당해본 적 있음
파일명을 implicit하게 모듈로 인식해서 그럼 ㅋㅋㅋ
파서운 이야기) python2는 True = False가 실행된다