"파이썬"을 까보자(작정하고 디스)
"버닝썬"과 관련이 없다.
까다 : 나쁘게 말하다.
디스 : "까다"와 비슷한 말
의견있는 사람은 댓글 달아도 된다.
Python
Python - 나무위키
특유의 철학 때문에 문법이 엄격한 편이다. 잘 작동하는지와는 별개로 가독성을 위해 이렇게 쓰기를 권장한다는 스타일 가이드까지 있다. 파이썬 공식 문서에서는 파이썬에 맞는 코딩 스타일을
namu.wiki
모르는 사람은 여기 가서...
나도 안써봐서 사실 잘 모른다.
그래도 한번 까보겠다.
(잘못하면 내가 크게 까인다)
장단점
4. 장점
4.1. 빠른 개발 속도
4.2. 피드백의 용이성
4.3. 과학 및 공학 친화성
4.4. 거대한 생태계
4.5. 교육의 편의성
5. 단점
5.1. 느린 실행 속도
5.2. 일반 사용자에게의 배포
장점이 많은 언어이다.
그러나 2가지 단점이 무시못할 수준이라는것.
"거대한 생태계"때문에 지금 "파이썬을 깐다"는건 "BTS가 노래 못한다"고 하는것과 동일한 것.
그래도 해보겠다.
문법이 매우 쉬워서 작성하기에 간단하기 때문에
초보자들이 처음 프로그래밍을 배울 때 추천되는 언어이다.
오죽하면 파이썬의 별명이 "실행할 수 있는 의사 코드(Executable pseudocode)"일 정도.
쉬운사람에게나 쉽지. 아무것도 모르는 사람에겐 큰 차이 없다고 본다.
특히 비 영어권 사람들은 그게 그거.
마치 COBOL 장점과 비슷한 맥락.
그러나 누가 COBOL이 쉽다고 생각했나?
난 오히려 C, FORTRAN이 COBOL보다 쉬웠다.
디자인 철학
"가장 아름다운 하나의 답이 존재한다"
답은 한개가 아닐 수도 있다. 과학자가 가장 경계해야할 말이다.
답이 없는것도 많다.
파이썬을 만든 사람은 과학자가 아닐것이다.
내가 보기엔 그냥 개똥같은 철학이다.
뚜렷한 권장 코드 스타일
파이썬 공식 문서에서는
파이썬에 맞는 코딩 스타일을 지키기를 권장하는데,
이것이 바로 PEP 8이다.
표준이 있다는건 좋다.
하지만, 자율성, 창조성이 별로 없다는 말이다.
C언어의 자율성은 거의 무한대이다.
자유자재로 사용할 수 있는 도구를 잘 쓰면, 매우 뛰어나지만,
중구난방으로 사용하면, 없느니 못한것이다.
제약사항이 많은 언어는 좋다고 하기 어렵다.
공백(Space) 4문자
공백문자 1개는 1바이트이다.
tab문자는 1문자로 4개또는 8개의 공백을 대신할 수 있다.
"뭐 3바이트가지고 뭘 그러느냐?"
라고 하겠지만, 거의 모든 줄마다 공백문자가 3개~15개를 더 사용한다.
이런 소스가 1만줄이고,
이런 파일이 1000개이고,
이런 폴더가 100개이고,
이런 프로그램이 100000개라면
이야기가 달라진다.
그만큼 당신의 SSD공간이 줄어드는거다.
이건 돈, 전기, 환경오염과 관련이 있다.
C언어=친환경적
파이썬=친환경 아님
또한, 공백문자를 처리하기위해서는 그만큼 시간이 걸린다.
극단적이 예로, 공백문자가 거의 없이 작성된 소스코드 43,324만 라인을 컴파일하면,
공백문자로 떨칠한 43,324만 라인보다 분명히 짧은 시간이 걸린다.
공백문자는 그 시간이 0.00001초라도, 당신의 시간을 뺐고 있다.
"그시간 얼마나 된다고....."하겠지만, 공백문자가 한두개가 아니라는게 문제이다.
파이썬은 "효율"은 버리고, 불편한 "아름다움"을 선택한거다.
작명 규칙
C언어에도 작명규칙은 있지만, 그냥 권장사항일뿐이다.
규칙이라는건 잘 사용하면 좋지만, 자율성이 없어진다.
C언어는 규제(제약)이 거의 없는 언어이다.
작명규칙도 배워야 알 수 있는것이다. 배우는데도 시간이 소모된다.
순수 객체 지향
좋을 수도 나쁠 수 도 있다.
C언어는 기계어에 가깝게 설계된 언어이다.
기계어로 번역이 쉽다.
이는 기계어로 번역했을때 성능을 보장받을 수 있다.
C++도 객체지향 개념은 있다.
순수객체지향이라는건, 기계어와 관련이 적다는 말이고,
그 성능이 어찌될지 모른다는 말이다.
그리고 모든 프로그램이 객체지향일 필요는 없다.
객체지향을 하려면, 불필요한 연산, 작업, 코딩이 추가되는 경우가 많다.
또한 객체지향 1줄을 기계어로 번역하면, 수천줄이 나올 수도 있다.
문제는 그 1줄이, 기계어로 2줄이면 끝나는 경우가 많다는 건다.
기계어로 몇줄이면 처리할 수 있는일을 수십~수백줄로 처리하니, 당연히 느릴 수 밖에 없다.
일반적인 말로 번역하면 "객체지향"="느리다"
반복 가능한 객체
def f(n):
x = 1
while True:
yield n*x
x += 1
ot = f(2)
print(ot)
print(next(ot))
print(next(ot))
뭐래는겨?
파이썬 안배운사람도 쉽게 이해한데메?
해석좀 해달라.
뭐가 반복한다는겨?
쉽다면서?
(안배우면 모른다.)
빠른 개발 속도
개발을 빨리할 수 있는 이유는,
해당분야 관련자들이 이미 비슷한 것들을 다 준비해놓았기때문이다.
파이썬 언어자체가 빨리 동작하진 않으며,
복잡한 수식을 다른 언어보다 쉽게 기술하는것도 아니다.
단지, 이미 그 목적에 맞는 코드들이 자성되어 있기때문에 가져다 쓰면 되도록 만들어 놓은것이다.
이는 C언어도 마찬가지이다.
이미 있는것들은 그냥 가져다 쓰면 된다.
대표적인것이 표준함수이다.
표준함수 범위내에서 개발하는건
파이썬과 마찬가지로 몇줄이면 만든다.
그러나 결정적인 차이는 C언어는 돈과 관련이 있어, 공개를 꺼려한다.
그래서 해당 기능을 직접 구현하는 경우가 많다.
예를 들어 mp3코덱은 라이센스가 붙어있다.
코드에 붙어있다고 보기는 어렵지만, 해당코드 자체도 극비이고,
공개를 안한다.
이런 점때문에 C언어가 프로그램을 작성하기 어려운것이다.
"필요한것은 없다"는 식이 되버린것.
그러나 일부 공개된 오픈소스 라이브러리들은 아주 복잡한것도 아주 쉽게 구현이 가능하다.
예를 들면 ffmpeg 라이브러리이다.
이것만 있으면 동영상 압축, 재생도 어렵지않게 할 수 있다.
원한다면, 특수필터를 추가할 수 도 있다.
게다가 성능도 매우 뛰어나다.
미리 만들어진 공개 라이브러리가 많은 파이썬이 프로그램 속도는 빠른것은 당연하다.
파이썬 자체가 빠른 언어는 아니다.
C언어도 무수한 소스코드들이 다 공개되면, 파이썬보다 더빨리 프로그램 할 수 도 있다.
어쩌면, 너무 많아서 선택장애를 일으킬 수도 있다.
반대의 경우를 예로 들어서, 파이썬으로 4k화면 필터를 구현하라고 한다면,
구현은 하겠지만, 극악의 속도를 보여줄것이다.
물론, 중요 부분은 다 C로 작성하겠지만...
(어떤 언어가 좋다 나쁘다를 판단하는것 자체가 바보스런 행동이다)
(나는 파이썬을 까고 있지만, 나쁘다고 말하는건 아니다.)
나도 시간이 없는 인간이라 한개만 더하고 끝내겠다.
파이썬은 C에 비해
71.90배의 시간,
2.80배의 메모리,
75.88배의 에너지를 더 소모한다고 한다.
뭐 이정도면 준수하다?
하지만 70배 느린속도, 70배 많은 에너지 소모는 용납하기 어렵다.
가장 최선은 파이썬과 C언어를 적당히 섞어서 사용하는것이다.
그러나, 가능하면 C언어로 다하는것을 추천한다.
어떻게 날고 있냐는 그림에 대한 해석
=>C언어도 "우주선 라이브러리"가 있다면, 우주여행도 다녀올 수 있다.
나무위키 맨 밑에 주석글을 보면, 내 말이 어느정도 이해가 갈듯함.
본문은 그냥 찬양글.
개인적인 의견은
가능하면 파이썬 쓰지말고 C언어로 짜라.
빠르고, 작고, 전기도 적게먹는 친환경 언어가 C언어임.
뭐좀 할려면, 파이썬 설치하라고 나오는데, 이런거 참 귀찮다.
요약 : 썬아, 니가 금수저인건 니가 원래 잘나서가 아니야.
관련된 사람들이 열심히 기반을 다 만들어줬기 때문이야.
이 굼뱅이야!!!