왜 파이썬에서 그런 인기가 있습니까? [닫은]


54

공백으로 구문에 짜증을내는 것 외에는 나는 증오가 아니며 파이썬에 매료되지 않습니다.

나는 Perl의시를 높이 평가하고 bash & korn 및 shebang에서 아름다운 웹 서비스를 프로그래밍했습니다 gnuplot. 나는 문서를 작성 troff하고 REXX를 신경 쓰지 않습니다. 몇 년 전에 더 유용한 tcl을 찾지 못했지만 파이썬에 대한 큰 악취는 무엇입니까? 나는 이력서에 상과 트로피로 구인 목록과 이것을 가진 많은 후보자를 본다.


나는 실제로 개인적으로 이것에 팔리려고 노력하고 있다고 생각합니다. 나는 이유를 찾을 수 없습니다.


81
왜 사람들이 파이썬의 들여 쓰기에 짜증을 내는지 이해하지 못합니다. 난 희망 당신이 바로, 어쨌든 코드를 들여 가고 있었다?
Greg Hewgill

10
물론 @GregH,하지만 내 구문에 따라 위임해야합니까? Makefile과 같은 종류?
Jé Queue

5
@Xepoch : 그러나 Makefile은 들여 쓰기 만 필요하지 않으며 일반적으로 다른 종류와 구별 할 수없는 특정 종류의 들여 쓰기가 필요합니다. 메이크가 필요한 경우 어떤 대신 특정의 공백 들여 쓰기를 0x09, 당신은 아마 반대하지 것이다 아마 원하는 들여 쓰기 폭 일관된 들여 쓰기를 사용합니다. 이것은 파이썬이 허용하는 것과 동일합니다.
Greg Hewgill

31
펄의시? 진심이야? 다른 사람들의 Perl 코드를 유지하는 것을 영광으로 생각한다면 Perl이 인기가 떨어지는 이유를 이해할 것입니다.
grokus

6
@ 그렉, 나는 당신에 동의합니다. 나는 이것을 전에 말했고 파이썬의 들여 쓰기 규칙에 대해 불평하는 사람은 들여 쓰기가 잘 안된 코드를 유지하도록 요청해야합니다. 그냥
말해

답변:


61

파이썬은 상당히 깔끔한 구문, 포괄적 인 표준 라이브러리, 뛰어난 포함 및 써드 파티 문서, 광범위한 배포 및 "스크립트"스타일 언어의 즉각적인 (즉, 명시적인 컴파일 단계가 없음)을 갖춘 잘 설계된 언어입니다.


36
잘 설계된? len? 라는 전역 함수가 있다는 것을 알고 계 셨습니까?
대안

65
len에 무슨 문제가 있습니까? 5 분 동안 만 파이썬에 대해 읽은 인상을받습니다
Kugel

5
개인적으로 언어 구조는 이해하기가 쉽기 때문에 언어가 일반적으로 내부에서 어떻게 작동하는지 더 잘 이해할 수있었습니다. 작은 것입니다. 일급 함수, 외부 모듈의 관련 부분 만 전류로 가져 오는 기능, 이해력, 튜플, 메소드 매개 변수로 자체 포함은 함수와 메소드의 차이점을 이해하는 데 도움이되었습니다 (다른 언어는 설탕 뒤에 숨어 있습니다). 코드가 내부에서 어떻게 작동하는지에 대해 아무것도 가르치지 않는다는 것을 직관적으로 알고 있기 때문에 C #과 같은 언어를 사용하는 것이 지금 고통 스럽습니다.
Evan Plaice

1
파이썬은 어떻게 잘 설계된 언어가 될 수 있습니까? 그것은 weird를 사용 하고 이름 과 __double_underscore_names__혼합 alllowercasefunctionames됩니다 . 끝에 또는 루프 가 필요합니다 . 그것은 이상한 약어를 많이 사용한다 , , . 컨벤션이 전혀없는 것 같습니다. 순수한 혼돈입니다. Peps, pips, zens ... 그것은 파이썬 종교와 언어와 비슷합니다. 몇 가지 멋진 기능이있을 수 있지만 왜 그렇게 많은 사람들이 그렇게 빠져 나왔는지 설명하지 않습니다. 피혼에는 특별한 것이 없습니다. 잘못 설계된 다른 제품 일뿐입니다. mixed_underscoremixedCamelCase:defstrdictislice
t3chb0t

1
그리고 해킹은 def무엇입니까? 왜 a def가 아닌 a 로 함수를 정의 func합니까? 파이썬만큼 직관적이지 않은 다른 언어는 없습니다.
t3chb0t

76

나는 파이썬이 코드를 작성한 가장 자연스러운 프로그래밍 언어라는 것을 알았습니다. 나는 파이썬 전후에 많은 언어로 코딩했습니다. 원하는대로하세요 파이썬은이 투쟁을 크게 줄입니다. Eric S Raymond는 왜 Python? 에서 할 수있는 것보다 훨씬 낫다고 말했습니다 .

관련 포인트로서, 파이썬은 빠르게 진화하는 동안에도 청결을 유지합니다. 내가 작업 한 대부분의 언어에서 새로운 언어 기능을 도입하면 많은 주름이 생깁니다. 그러나 파이썬에서는 추악한 해킹처럼 느끼지 않고 주요 언어 기능 (장식자가 생각 나게 함)조차 항상 추가됩니다.


8
기본적으로 이것을 말하기 위해 여기에 왔습니다. 구문은 너무 자연스럽고 의사 코드를 작성하는 것과 거의 같습니다.
제임스 데이비스

2
파이썬은 간결합니다. 전체 기능 세트 (및 라이브러리의 개념 인덱스)를 머리에 담을 수 있습니다.
systempuntoout

2
@ Zoomzoom83 의사 코드는 시작과 끝입니다-그것은 파이썬에서 작동하지 않습니다 :-(
mbq

1
@mbq 그리고 내 의사 코드에는 중괄호가 있지만 그것은 또 다른 이야기입니다.)
Christian Rau

26

나는 이것이 냉소적으로 들리지 않기를 희망하지만 IMO Python은 Java, C # 및 Objective-C와 같은 이유로 인기가 있습니다. 언어 자체에 대해 장엄한 것이 없기 때문에 각 광고에 많은 광고, 광고, 라이브러리를 제공하고 선호하는 언어를 지원할 수있는 잡지 후원자가 있었기 때문입니다.


6
C #은 특별하다. linq가있다
Daniel Little

39
파이썬에는 큰 회사가 있습니까? (정품 질문)
Jé Queue

11
그래, 그게 내 뜻이야 구글이 관심을 갖기 시작하기 전에 파이썬은 훨씬 "멋지다".
메이슨 휠러

10
@Mason-그러나 확실히 구글과 같은 대기업이 "쿨"하게 만드는 이유가 있을까요?
Jas

7
사람들은 왜 파이썬을 후원하는 회사가 있다고 생각합니까? 누구든지 파이 콘의 크기와 거대한 Java / j2ee 규칙을 보았습니까? 이것은 기업 자금의 David and Goliath 이야기입니다.
rox0r

11

저의 경험은 프로그래밍에 참으로 기쁨을 느끼는 사람들이 학교 나 대학교에서 배운 것보다 더 잘 맞는 언어를 찾는 것입니다. 기본적으로 이것은 기본 PHP / Visual Basic / C ++ / Java / C #에서 Python, Ruby, Haskell 및 심지어 perl과 같은 더 이국적인 (비즈니스 / 경력) 무언가로 이동한다는 것을 의미합니다 (엄청난 해킹 값과 모호함 때문에).

가, 오해하지 마십시오 매우 자신의 작업 코드 자부심과 기쁨을 경험 C #을 / VB.net 프로그래머합니다 (StackOverflow의의 사람은 아주 좋은 예이다),하지만 당신은 파이썬 프로그래머 이유만으로되지 않는다 그것이 그들이 학교에서 당신에게 가르친 것입니다. 그것은 당신 자신의 결정이어야합니다.

Jeff Atwoord가 이것에 대한 블로그 게시물을 가지고 있다고 생각하지만 찾을 수 없습니다. 그것을 찾으면이 의견을 업데이트 할 것입니다.


1
파이썬은 우리 학교에서 101 번째로 처음 가르치는 언어였습니다.
Morgan Herlocker

거의 모든 언어는 존재해야 할 이유가 있으며 적어도 무언가에 능숙합니다. 제 생각에 이것은 단지 "다른 사람들이 좋아하기 때문에 좋아합니다"라고 말합니다.
NtFreX

9

정말 멋지고 놀라운 코드 골프 오프를 만들어내는 Ruby와 비교할 때, 파이썬은 "핵심적인 방식으로"일을 수행하는 명백한 방법이 있어야한다 "는이 핵심 철학을 가지고 있습니다. 나는 이것이 Ruby에 비해 큰 이점이라는 것을 알았습니다.


4
.. 또는 무한한 방법으로 펄과 비교했을 때?
Jé Queue

@ Xepoch-실제로 Perl에서 일을하는 좋은 / 올바른 방법의 무한대보다 훨씬 적은 경우가 많으며 단서가있는 대부분의 사람들은 너무 많은 의견 불일치없이 상위 1 (또는 최대 2)에 대해 쉽게 말할 수 있습니다. 아르. 당신이 저를 믿지 않는다면, SO에 대한 Perl 질문을보십시오. 그렇습니다. 일부 시험에는 10 가지의 고유 한 해결책이 있습니다. 그러나 대부분은 "가장 정확한 상황"해결책에 대해 분명히 동의했습니다.
DVK

@DVK, 나는 알고 있지만 디자인 목표에서 그것을보고 있습니다.
Jé Queue

8

Eric S. Raymond가 설명하는 것과 같은 이유로 Python을 좋아하기 시작했습니다. Python으로 프로그램을 작성하는 행위는 개념적으로 내 머리에 코드를 설계하는 행위를 생각하는 것과 매우 유사합니다.

훌륭한 파이썬 프로그래머가되는 법을 배우면 C # 프로그래머 가 훨씬 좋아 졌습니다 . LINQ를 이해하기가 훨씬 쉬워졌습니다. 파이썬에서 클래스와 생성기를 사용하지 않았다면, 같은 유형을 받아들이 Dictionary<string, Func<T>>거나 사용하기 yield return에 편한 적이 없었을 것 입니다. 파이썬 데코레이터를 사용했기 때문에 AOP를 이해하기가 훨씬 쉽습니다. 목록은 계속됩니다.


6

첫째, 파이썬에서 강제 들여 쓰기와 같은 사소한 언어 문제는 언어 자체가 강력하고 표현력 있고 유용하더라도 거의 중요하지 않습니다. 나는 또한 그것으로 인해 처음에는 돌이켜졌지만 곧 언어를 익히는 것을 배웠고 이제는 언어가 훨씬 쉽게 작업 할 수 있기 때문에 그것을 방해하는 느낌조차 느끼지 않습니다. , 그것의 무해한 언어 기발하고 언어에 편안한 사람은 그것에 의해 방해 느끼지 않습니다.

많은 사람들이 파이썬이 훌륭하다고 생각하는 이유를 이해하려면 언어를 배우십시오. 그 이유는 대부분 Perl과 동일합니다. 나는 파이썬의 구문 (예 : 목록 이해, OOP 구문 등)을 좋아하지만 실제로 주관적이며 의견이 다를 수 있습니다. 더 큰 프로젝트에는 Python을 선호하지만 더 작은 스크립트에는 Perl을 사용합니다.

그리고 질문에 대한 답변입니다. Python을 Perl, bash 및 tcl과 비교합니다. 문제는 공정한 비교가 아닙니다. bash와 같은 언어는 일반적인 작업을 자동화하기 위해 작은 스크립트를 작성하도록 설계되었습니다. 어떤 사람들은 코드가 충분히 커지면 펄도 다루기 어려워 진다고 생각한다 (잘 쓰여진 펄은 그렇지 않지만 큰 프로젝트에서는 잘 작성된 코드가 나오기 어렵다). IMHO Python은 다른 '스크립팅'언어와는 다른 대규모 스크립트 및 소규모 일회성 스크립트로 확장 할 수 있다는 점에서 다릅니다. 루비도 같은 품질을 가지고 있다고 생각합니다.


6

자비로운 독재자가 좋은 스타일에 대한 아이디어, 좋은 프로그래밍에 대한 아이디어, 프로그래밍하는 방법에 대한 아이디어를 강제해야한다는 철학은 저를 정기적으로 좌절시킵니다. 나는 반 로섬처럼 생각하지 않습니다. 그러나 그의 언어는 밴이 아닌 Rossum 생각을 표현하려는 시도에 저항한다. 그의 생각은 많은 (대부분의) 프로그래머에게 정말 효과적입니다. 그러나 프로그래밍 방법에 대한 그의 모델에는 맞지 않는 것 같습니다.

그래서 저는 Perl이 우수한 언어라고 믿습니다.

[1] 제거에 대한 그의 블로그를 참조하십시오 reduce.


당신은 사고 과정에 대한 당신의 추론에 대해 설명하고 더 듣고 싶습니다.
Jé Queue

3
@Xepoch-프로그래밍 언어는 표현 수단으로 사용됩니다. 숙어와 사고 스타일은 '맞춤'에서 '매우 딱딱하다'까지 연속 된 사고 방식으로 표현 될 수 있습니다. 예를 들어, 나는 목록 이해의 관점에서 생각하지 않습니다. 그들은 내가 문제 해결책에 대해 어떻게 생각하는지에 대해 외계인입니다. 그러나 Common Lisp의 감소는 내 마음에 큰 어려움없이 흐르는 것입니다. 그러나 반 로섬은 분명히 반대입니다. Java는 모든 것이 객체에 있어야합니다. 따라서 Java에서 객체 지향이 아닌 솔루션을 만드는 것은 매우 어렵습니다. 등등 -
폴 나단

5

OS 커널을 작성하고 싶지 않다면 어느 정도 파이썬이 필요한 프로그래밍 언어라고 생각합니다. 대화 형 사용, 임의의 핵, 시스템 관리, 과학 응용 프로그램, 운영 체제 도구, 웹 응용 프로그램, GUI 응용 프로그램, 임베딩 등에 적합하며 휴대 가능하고 무료이며 널리 사용됩니다. 다른 프로그래밍 언어는 실제로 모든 분야를 다루지는 않습니다. 사람과 회사에있어 정말 좋은 전략적 투자입니다.


4
여기서 파이썬을 의심하지는 않지만 Perl은 위의 설명이 더 좋지 않으면 위의 설명에 잘 맞는다고 생각합니다.
Jé Queue

루비도 이것에 매우 능숙합니다.
ocodo

1
2015 년 현재 Python은 과학 컴퓨팅의 사실상 범용 언어입니다. 다른 모든 것은 고전적인 저수준 물건 (C, C ++, FORTRAN)이며 몇 가지 틈새 시장 (MATLAB, Mathematica, R, Julia, Lua)에서 경쟁력이 있으며 라이브러리 및 인프라 전용 (Java), 무작위 스크립팅 도구 (bash)에 사용됩니다 , Perl) 또는 .... 음 ... 위의 어느 것도 아닙니다.
Paul

5

2004 년부터 파이썬을 사용하여 다음을 개발했습니다.

  • GUI
  • Python에서 C ++로 바인딩하여 광선 추적기 장면 스크립팅
  • 크로스 플랫폼 자동화 빌드 시스템
  • 테스트 스크립트
  • 일상적인 문제를 해결하기위한 범용 도구
  • 웹 사이트 및 웹 앱

파이썬 스크립트는 Windows, Linux 및 Mac에서 거의 수정없이 이식 할 수 있기 때문에 2004 년에 Python이 선택한 언어였습니다.


4
다른 답변에서 한 의견을 인용하자면 : "Python을 의심하지는 않지만, Perl은 당신의 설명이 더 나쁘지 않다면 아주 잘 맞을 것 같습니다."
DVK

4

나에게 파이썬은 사랑하는 친구였습니다. 괜찮은 스크립팅 및 프로토 타입 언어입니다. 내가 생각할 수있는 핵심 사항은 다음과 같습니다.

  • 깔끔한 구문, 매우 단순하고 이해하기 쉬운
  • 다중 패러다임, 명령형 언어로 사용 하시겠습니까? 확실한. OOP? 문제 없어요. 또한 람다, 목록 이해 등과 같은 가벼운 기능적 언어 기능이 있습니다.
  • 기본적인 컴퓨팅 요구를 위해 필수 데이터 구조, 배열, 튜플, 사전 (연관 배열), 세트 등을 기본적으로 지원합니다.
  • 다른 기능은 오리 타이핑, 리플렉션, 메타 프로그래밍, 데코레이터, 생성기 등과 같이 프로그래머를 매우 생산적으로 만들 수 있습니다.
  • 풍부한 라이브러리 지원

람다는 파이썬에서 깨졌습니다.
Paul Nathan

@Paul 그것은 당신의 의견을 뒷받침하는 링크를 제공하는 것이 아프지 않을 것입니다.
Piotr Dobrogost

@Piotr : docs.python.org/reference/expressions.html#lambda 문장을 포함 할 수 없습니다. 이는 익명 함수의 수학적 아이디어를 위반합니다.
Paul Nathan

람다는 깨지지 않았습니까?
rox0r

4

우아하고 배우기 쉬우 며 기본 유형 (특히 목록)에 익숙해지면 생산성에는 제한이 없습니다. 알고리즘을 프로토 타이핑하거나 가상 머신에 직접 넣을 수있는 의사 코드와 같은 언어로 작성하는 데 적합하며, 반복적 인 작업을 수행하거나 파일에서 성가신 작업을 수행하는 스크립팅 언어로 정말 좋습니다. 하위 프로세스가 서로 통신 할 수 있도록 글루 언어로 사용합니다. 쉬운 작업을위한 bash만큼 강력하지는 않지만 한 줄의 코드 이상을 수행해야하는 경우에는 훨씬 쉽습니다.

그리고 그것은 함수와 서브 루틴을 구별하지 않습니다.


3

내가 볼 많은 파이썬 애호가는 C의 환경에서 전환과 같은 재료로 깊은 인상을 받았다 "Hello "+ "World"입니다 "Hello World". 저는 이것이 밀교 / 특정 태그를 수집하지 않고 마른 숲에서 불 같은 순교 한 사람들 사이에 퍼지는 첫 번째 스크립팅 언어라고 말하고 싶습니다. 이렇게 창조 된 패션은 이제 스스로 살아갑니다.


2

나는 조금 덜 피곤하다는 지금 질문에 다시 접근 :

파이썬은 과학적 프로그래밍 작업에 특히 적합한 언어로 인기가 꽤 높아지는 곳 중 하나입니다. 몇 가지 이유 :

  • 상당히 강력한 커뮤니티 지원은 강력한 라이브러리가 있음을 의미하며 Python은 MATLAB 및 해당 분야의 다른 인기있는 언어를 대체 할 수 있습니다.
  • 속도 필요할 때 C와 잘 어울리지 만 종종 속도가 실제로 그렇게 필요한 것은 아니기 때문에 파이썬의 해석 자연은 그다지 중요하지 않습니다.
  • 나는 외부인에게 이상하게 임의의 구문 규칙처럼 느끼는 것이 많지 않으면 상당히 접근하기 쉬운 언어라는 것을 알았습니다. 의사 코드와 파이썬을 번역하는 것은 매우 빠릅니다.
  • "찍거나 OOP로 두십시오". 많은 과학적 프로그래밍 프로젝트는 광범위한 OOP로부터 큰 이익을 얻지 못합니다. 일부는 그렇습니다. 두 언어 사이를 쉽게 이동할 수있는 언어를 사용하는 것이 좋습니다.
  • 강력한 크로스 플랫폼 지원. 특히 내가 사용하는 작업에 GUI가 거의 포함되지 않기 때문에 실행중인 OS에 대해 걱정하지 않고 다른 사람에게 Python 프로그램을 보낼 수 있다는 것에 거의 의지 할 수 있습니다.

그것은 프로그래밍 언어의 전부는 아니지만, "그렇습니다. 아마도 문제가 생길 때마다 해결할 수있는 도구가있을 것입니다."언어는 현재 인기를 누리고있는 이유입니다.


나열된 다른 모든 항목 외에도 가장 중요한 항목 중 하나는 "운영 체제에 대해 걱정하지 않고 다른 사람에게 Python 프로그램을 보낼 수 있다는 것입니다."라고 생각합니다. 운영 체제 유형에 얽매이지 않으려는 경우에도 매우 유리합니다.
Tarik

1

파이썬은 사용 가능한 프레임 워크 (Django, Zope 등)와 쉽게 가져올 수있는 라이브러리에서 모두 '웹비'언어로, 많은 웹 기능을 다시 포함합니다.

HTML, CSS + JS 스킬 셋 (지난 수년 동안 많은 새로운 프로그래머의 소스)에서 벗어나는 웹 개발자들에게는 이것이 매우 매력적인 제안이라고 생각합니다 (디토 루비).

또한 Google은 Microsoft가 아닙니다 ....


Java는 MS가 아니기 때문에 추론이 정확하면 파이썬이 아닌 Java로 이동합니다. 다른 이유가 있어야합니다.
rox0r

0

주된 이유 중 하나는 90 % 구글이 파이썬으로 만들어 졌기 때문이라고 생각합니다.

그러나 파이썬은 배우기 쉽고 강력한 프로그래밍 언어이기도합니다. 효율적인 고수준 데이터 구조와 객체 지향 프로그래밍에 대한 단순하지만 효과적인 접근 방식이 있습니다. 파이썬의 우아한 구문과 동적 타이핑은 해석 된 특성과 함께 대부분의 플랫폼에서 여러 영역에서 스크립팅 및 신속한 응용 프로그램 개발에 이상적인 언어입니다.

Python 인터프리터 및 광범위한 표준 라이브러리는 Python 웹 사이트 ( http://www.python.org/) 에서 모든 주요 플랫폼에 대해 소스 또는 이진 형식으로 무료로 제공되며 자유롭게 배포 할 수 있습니다. 동일한 사이트에는 많은 무료 타사 Python 모듈, 프로그램 및 도구 및 추가 설명서의 배포 및 포인터가 포함되어 있습니다.

Python 인터프리터는 C 또는 C ++ (또는 C에서 호출 가능한 다른 언어)로 구현 된 새로운 함수 및 데이터 유형으로 쉽게 확장됩니다. Python은 또한 사용자 정의 가능한 응용 프로그램의 확장 언어로 적합합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.