엔트리 레벨 프로그래밍 언어로 파이썬이 권장되는 이유는 무엇입니까? [닫은]


16

초보자 프로그래머가 Python을 첫 번째 프로그래밍 언어로 선택하도록 조언하는 더 많은 질문을 P.SE에서 읽었습니다.

내가 틀리지 마, 나는 파이썬을 좋아한다. 나는 그것을 많이 좋아! 그러나 그 철학은 "우리 모두는 여기에 동의하는 성인입니다"에 관한 것입니다.

경험 / 지식의 관점에서 초보자 프로그래머는 성인이 아닙니다. 그러면 발에서 자신을 쏘고 상처에서 살아남더라도 나쁜 습관을들이는 것이 더 쉽다는 것을 의미합니다.

"보다 정적 인"언어에서는 발이 더 제한적이기 때문에 발로 자신을 쏠 기가 더 어렵다고 생각합니다.

내 질문으로 돌아 가기 엔트리 레벨 프로그래밍 언어로 파이썬이 권장되는 이유는 무엇입니까?

프로그래밍 언어 교육에 도움이되는 요점은 무엇입니까? 아니면 ... 고문의 개인적인 취향입니까?


17
I'm thinking that in a "more static" language it would be harder to shoot yourself in the foot-C와 C ++는 정적으로 타입이 정해져 있으며, 그것들을 사용하여 발을 날려 버릴 수있는 방법이 얼마나 많은지보고 놀랄 것입니다 ...
Péter Török

@Peter Török : 그렇습니다. 발 전체가 멀어집니다 (c ++ : D). 나는 "정적"이라고 말한 것 같은 ... 화염 전쟁을 피하려고 ... 나는 몰라 ... Java?!?! ... 학교 / 대학에서 생각하고 사람들이 그것에서 무서 워 ...
JohnDoDo

1
C ++은 다른 언어로 된 것들을 더 잘 이해하는 데 도움이 되었기 때문에 더 나은 시작 언어라고 생각합니다.
systemovich

1
파이썬을 사용하는 첫 학기 프로그래밍 수업을 마친 후 시작 언어로 파이썬으로 쇠고기를 먹었습니다. 학생들은 종종 '유형'을 이해하지 못했으며 공백 의존성이 그들을 죽였습니다. 그들은 또한 '자기'를 참조하여 객체를 이해하는 데 어려움을 겪었습니다. 그것은 장점이 있지만 분명히 혼란스러워합니다.
Rig

2
@MahmoudHossam 동의합니다. 나는 단지 내 경험에서 몇 가지 고집 포인트를 강조하고있었습니다. Java, C #, Lisp 등에는 모두 문제가 있습니다. 이것들은 프로그래머에게 처음으로 파이썬을 가르치는 데 직면 한 주요 문제였습니다.
Rig

답변:


30

엔트리 레벨 언어로 파이썬을 대표하는 가장 두드러진 점인 IMO는 다음과 같습니다.

  • 학습 곡선얕습니다. 아무것도 아닌 것에서 "Hello world"로가는 것이 대부분의 다른 언어보다 훨씬 빠릅니다.
  • 그것은이다 직관적 인 구문이 적어도 놀라움의 원칙을 따르도록 설계되었습니다, 그것은 (불행하게도, 표준 라이브러리는 항상 일관성을 따르지 않는) 전반적으로 매우 일치한다 -
  • 아주 작은 상용구 가 필요합니다 . 전형적인 "Hello world"는 한 줄의 코드이며, 함수 선언 키워드, import 문, 클래스 구성, 전 처리기 지시문, 설명과 같은 추가 배경 잡음없이 간단한 프로그램을 작성할 수 있습니다. 기타.)
  • 파이썬 코드, 특히 대화식 인터프리터와 함께 작동하는 훌륭하고 간단한 도구 가 있습니다. 빌드 시스템, IDE, 특수 텍스트 편집기 또는 파이썬 사용을 시작하기 위해 명령 프롬프트, 대화식 편집기 및 간단한 텍스트 편집기 등을 배울 필요가 없습니다.
  • 동적 타이핑을 사용 하지만 다른 동적 유형 언어와 달리 유형은 투명하며 유형 관련 함정은 거의 없습니다.

언어 의 직관성 을 강조하고 싶을뿐입니다 . 프로그래밍 경험이 0 인 사람들이 파이썬을 빨리 배우는 것을 보았습니다. 이것은 주로 구문 / 문법이 영어와 매우 유사하기 때문입니다.
Stephen Gross

12
마지막 시점 : 사람들은 종종 타이핑을 약한 타이핑과 혼합합니다. 파이썬은 동적으로 타입이 지정되지만 (변수 대신 값과 관련된 타입) 강력하게 타입이 지정됩니다 (따라서 변환 오류를 자동으로 삼키는 대신 프로그램이 충돌 함)
hugomg

@missingo I 초-독수리 눈;)
yati sagade

@ missingno : 차이점을 알고 있습니다. 투명하지 않은 유형의 예는 PHP의 배열 키입니다. 배열은 정수 유형에 대해 다른 유형과 다르게 작동합니다. 충분히 큰 정수 두 개를 추가하면 실수로 끝날 수 있습니다. 그리고 그것은 단지 하나의 예입니다-특히 PHP와 자바 스크립트 (웹 개발에서 가장 인기있는 두 가지 동적 언어)는 모호한 타이핑 사례로 가득합니다.
tdammers

당신의 의견에서 판단 할 때, "유형은 투명하다"는 것은 유형을 지배하는 규칙을 이해하기 쉽다는 것을 의미합니까? 정확히 무엇을 말하려고 했습니까?
phant0m

8

파이썬의 안녕하세요 세계 :

 print "Hi there"

자바의 안녕하세요 세계 :

 class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    }
  }

C의 안녕하세요 세계 :

  #include<stdio.h>
  int main(int argc, char** argv)
  {
    printf("Hello World");
   }

다른 두 가지에 대한 컴파일에 대해 이야기해야합니다. 파이썬은 훨씬 간단합니다. 내가보고 싶은 단일 아이디어에 대해서만 이야기하면됩니다. 문제를 복잡하게하는 모든 기계는 파이썬에서 사라집니다. 모듈에 대해 이야기 할 준비가 될 때까지 기다릴 수 있으며 간단한 프로그램을 위해 stdio.h를 얻기 위해 서두를 필요가 없습니다. 수업과 같은 주제에 대한 준비가 될 때까지 기다렸다가 첫 프로그램을 위해 서두를 필요가 없습니다. 명령 줄에서 장난을하기위한 REPL이 있습니다. 파이썬은 개념적으로 최소한의 능력을 가지고 있습니다. 초보자가 당면한 과제에 집중하는 데 도움이되기 때문에 좋은 일입니다.


15
"return 0;"을 잊어 버렸습니다. C 구현에 대한 진술 :) 컴파일러 경고!
Stephen Gross

2
이것이 바로 BASIC이 처음에 존재했던 이유입니다. 10 인쇄 "Hello World!" 20 END 추가 크레딧으로 인해 Python 프로그램은 " 'Hello World!'라고 말했습니까?" 단위 테스트 :-)
로스 패터슨

3
F #에서와 동일 : printfn "Hello World!". 예, F #은 초보자에게 좋습니다!
Den

7

특이한 관점입니다.

동의하는 성인은 파이썬 철학의 아주 작은 부분입니다. 그것은 분명히 그 주위를 "회전"하지 않습니다. import this인터프리터에서 할 때 얻는 "파이썬 젠 (Zen of Python)"의 일부도 아닙니다 .

"명시적인 것이 암시적인 것보다 낫다", "단순한 것이 복잡한 것보다 낫다", "가독성 수"와 같은 다른 것들이 파이썬의 중심에 훨씬 더 가깝고 왜 파이썬이 제 1 언어가 좋은지를 보여줍니다.

어쨌든, "성인 합의"는 실제로 파이썬에 전용 객체가 없다는 것입니다. 내 의견으로는 초보자에게 왜 좋은지에 대한 또 다른 표시는 무엇입니까? 막 시작했을 때 인터페이스와 같은 것에 대해 걱정할 필요가 없습니다.


1
그렇습니다. 그러나 "비공개"부분에 대해서는 액세스 할 수 있기 때문에 더 잘 알지 못하는 일부 해결 방법 / 바로 가기를 해킹하고 싶을 수도 있습니다.
JohnDoDo

@JohnDoDo C # 또는 Java에서 private필드 public를 해킹으로 변환하기로 결정한 경우 어떤 차이가 있습니까? BTW, 파이썬에서는 속성을 접두어로 밑줄로
붙여서

4

두 가지 다른 점이 있습니다. 아이를 키울 때 안전한 물건 만 담은 거품에 넣어야합니까, 아니면 아이들이 넘어져 넘어 질 수있는 마당에서 놀아 주어야합니까?

거품 안에있는 것은 매우 제한적입니다. 코드를 실행하려면 매우 구체적인 방식으로 코드를 작성해야합니다. 사람들이 처음 시작할 때, 그 사람이 원하는 것을하기 위해 거기에없는 것은 낭비입니다. 이것은 또한 "그 이유가 무엇인지 모르겠지만 누군가가 필요하다고 말 했어요."

파이썬에서는 존재하지 않습니다. 당신이 "안녕하세요"를 말하고 싶은 경우에, 당신 단지 print "Hello World". 파이썬을 엔트리 포인트로 사용하면 누군가가 처음부터 뛰어서 원하는 것을 수행하는 데 필요한 코드를 작성할 수 있습니다. 프로그래머는 프로그래밍의 기본 사항을 이해하기 전에 캡슐화의 가치를 이해할 수 없습니다.

또한 작은 프로그램에서 형식 안전성은 큰 문제가 아닙니다. 초보 개발자가 작성하는 모든 코드는 작고 포함됩니다. 코드 레이어가 더 커질 때까지는 추상화 계층으로 사용하는 섹션이 많고 적극적으로 생각하지 않는 경우가 있습니다. 유형 안전성이 필요할 때 필요한 작업을 수행하면 이점이 있습니다. 모든 코드가 같은 파일에 있으면 함수를보고 잘못한 것을 보는 것이 더 쉽습니다.

다른 이익:

  • 많은 일을하는 많은 라이브러리
  • 하나는 다른 하나를 수행하도록 설계된 언어에 맞도록 강요된 것처럼 보이지 않고 객체 지향 및 기능 프로그래밍 기술을 모두 가르치는 유연성.

3
반 추론 : 불장난에 대해 자녀를 가르치십시오. 1) 그에게 말을 걸고, 불이 무엇인지, 불이 무엇인지 설명하고, PowerPoint 슬라이드를 보여주십시오. 또는 2) 불을 가지고 놀면서 화상을 입을 수 있습니다. 두 번째 방법은 훨씬 더 효율적입니다. 내가 관심이있는 것은 그가 집을 불에 태우거나 좋아할 수도 있고 안전 조치가 취해지지 않았기 때문에 pyromaniac가 될 가능성입니다. 극단적 인 상황이지만 실제로는 말로 표현할 수 없습니다.
JohnDoDo

1
@ JohnDoDo-그래서 그를 태워 보자 ... 그것은 최고의 학교이고 누가 어린 시절 경기에서 태워지지 않았습니까? 그것은 그를 죽일 수 없습니다 ...
Rook

1
@JohnDoDo : 언어가 불을 가지고 놀 수 있다고해서 교사가 불이 매우 위험하다는 것을 지적하지 않고 그것을 피하는 방법을 설명하지는 않습니다. 나는 당신이 누락 된 다른 것은 누군가가 언어에 묶여 있지 않다고 생각합니다. 프로그래밍에 대한 기본 지식을 얻은 후에 는 다른 언어를 사용하여 건물을 태우지 않는 것과 같은 더 큰 개념을 배울 있습니다.
unholysampler

3

파이썬은 초보자에게는 훌륭한 언어입니다. 간단한 것을 단순화하면서도 복잡한 것을 쓸모없는 장난감 언어로 간주 할 수 없으며 고급 프로그래머조차도 일부 직업에 적합한 도구라고 생각하기 때문입니다. 구체적으로 다음과 같은 것들이 있습니다.

  • 간단한 프로그램을위한 최소 상용구 코드.

  • 가비지 콜렉션.

  • 동적 타이핑.

  • 깨끗하고 간단한 구문.

예를 들어 Java 또는 C ++과 "Hello, world"프로그램과 관련된 모든 개념을 설명하기가 어렵다는 점과 비교하십시오. 복잡한 것은 다음과 같습니다.

  • 내성 (파이썬은 리플렉션과 동일합니다).

  • 원숭이 패치.

  • 거대한 표준 라이브러리로 수행 할 수있는 작업.

즉, 파이썬 만 아는 사람은 훌륭한 프로그래머가 아닙니다. 한 언어 나 한 가지 스타일의 언어 만 아는 사람은 훌륭한 프로그래머가 아니기 때문입니다. 프로그래밍에 대한 심각한 누군가는해야 결국 그냥 그 동안 / 그녀는 여전히 흐름 제어, 재귀 및 기타 기초를 grok 수하려고, 뭔가 낮은 수준을 배웁니다.


2

나는 파이썬을 좋은 선택으로 본다. 일반적으로 "엔트리"레벨 프로그래밍의 경우 단순하지만 생산적인 것을 원합니다. 빠른 피드백을 받으면 동기 부여와 학습 속도를 모두 지원합니다. 나는 그것이 "올바른 길"을 배우는 것이 아니라 "삶에 대한 프로그래밍에 매료되어 사랑에 ​​빠진다"고 감히 말한다. 나머지는 경험, 중등 교육을 통해 나중에 나올 것입니다.


1

IMHO는 사람들에게 "안전한"언어로 코딩하도록 가르치는 것은 매우 나쁜 생각입니다. 사람들은 모든 것이 쉽다고 가정하고 코드 레이어와 레이어를 추가하는 것에 대해서만 생각합니다. 문제가 발생할 때 디버깅 / 수정할 수있는 기회를 잃어 버립니다.

훌륭한 프로그래머는 반드시 C / C ++ 또는 어셈블리를 알아야합니다. 그리고 그들의 사고 방식도 그 측면에서 나와야합니다. 그리고- "아, GC, 그것은 우리가 멋지다 Magic (tm)을하고, C ++에 GC가없는 이유는 어리 석다." 태도.


1

초보자 프로그래머에게는 정적 유형이 없다는 것이 버그가 아닌 기능입니다!

프로그래밍하는 법을 배울 때 가장 분명한 것조차 이해하기 어려울 수 있습니다. 다이나믹 타입 시스템은 매우 간단하며 모듈화, 제어 흐름 등과 같은 입문 과정에서 더 긴급한 주제를 피할 수 있습니다.

교육 환경에서 동적 입력에 대한 몇 가지 개념적 이점도 있습니다.

  1. 유형은 변수가 아니라 값과 연결됩니다. 이것은 프로그램이 실제로 충돌하는 이유를 반영하기 때문에 더 직관적입니다.

  2. 오류 메시지는 훨씬 즉각적이고 구체적입니다. 파이썬에서는 멋진 스택 추적과 실제로 무엇이 잘못되었는지를 나타내는 메시지가 나타납니다. 정적으로 입력 된 언어에서는 무엇이 잘못 것인지를 알리는 컴파일러 경고가 표시 됩니다.

    컴파일러로 작업하는 학생들은 자신이 이해할 수없는 컴파일 오류에 직면하지 않도록 완전히 이해 한 프로그램에서만 작업 할 수 있습니다.

  3. 런타임 오류 검사를 통해 불완전한 프로그램을 실행할 수 있습니다. 이를 통해 학생은 먼저 프로그램 시작을 올바르게하고 걱정 만 할 수있는보다 점진적인 프로그램이 가능합니다.

  4. 파라 메트릭 다형성 및 오리 입력과 같은 일부 중요한 개념은 동적 언어에서는 무료로 제공되지만 정적 언어에서는 더 복잡한 유형 시스템이 필요합니다.

마지막으로 여전히 동일한 복잡성을 처리해야하지만 프로그래밍을 시작할 때 정적 입력의 이점을 모두 얻을 수있는 것은 아닙니다.

  • 초급 프로그램은 작고 코드 경로가 많지 않으므로 거의 액세스하지 않는 코드의 유형 버그에 대해 걱정할 필요가 없습니다.

  • 초급 프로그램은 높은 수준의 인터페이스와 기능을 많이 사용하지 않으므로 "형식 시스템을 사용하여 프로그램을 디자인"부서에서 얻을 수있는 것이 많지 않습니다.


1

매우, 매우 , 매우 하나가 유효한 들여 쓰기를 강제 : 모든 사람이 보인다 프로그래머를 시작 파이썬에 대한 중요한 것은 간과 할 수는.

다른 논평가들과 마찬가지로, 나는 몇 년 동안 초보자를 가르쳤다. 다음과 같은 것들을 보는 것이 무의미했습니다.

#include <stdio.h>

int main(char *args[])
                                                                     {
   int A = 1, B = 1, C;
for (int X = 0;X < 20;X++)
{
   printf("%d\n", A);
C = B + A;
      A = B;  B = C;
}
        }

이제 약 100 줄의 코드에 대한이 끔찍한 불일치가 있다고 상상해보십시오. 일부 학생들에게는 모든 프로젝트 전체가 다음과 같이 보입니다.

나는 그들이 어떻게 관리했는지 전혀 알지 못하며 결코 귀찮게하지 않았습니다. 내가 요청할 때마다 그들의 응답은 "음, 컴파일러가 알아낼 것이기 때문에 중요하지 않습니다."와 같은 것이 었습니다. 들여 쓰기를 수정하여 명백한 버그를 보여도 여전히 단서가 없습니다.

파이썬에서 이러한 유형의 들여 쓰기는 단지 유효하지 않습니다. 조금 일관성이 없어도 읽을 수있는 것을 사용해야합니다. 희망은 결국 다른 언어를 배우면 계속 될 수있는 습관을줍니다.


0

파이썬은 위에서 언급 한 대부분의 이유로 훌륭한 첫 번째 언어입니다. 특히, 제 1 언어의 한 가지 요구 사항은 파이썬이 가지고있는 부드러운 학습 곡선입니다. 예를 들어, 시작하기 위해 클래스에 대해 모두 알 필요는 없습니다. 이와 관련하여 우리 중 많은 사람들이 시작한 기본과 조금 비슷합니다.

지금까지 강조 되지 않은 것 중 하나 는 많은 언어가 학습 곡선이 완만하지만보다 고급적인 작업을 수행하려고 할 때 벽돌 벽에 빠르게 닿는다는 것입니다. 올드 스쿨 기본이 좋은 예입니다. 파이썬을 사용하면 다른 언어가 더 나은 선택이라고 생각하기 전에 고급 기능을 사용할 수 있습니다.

그 때까지 초보자는 선택과 절충에 대해 더 많이 이해할 수 있으며 C / C ++, Java, Assembler, Prolog, Lisp 등을 사용할 준비가되었습니다. 실제로 Lisp는 다소 모국어이지만 좋은 첫 번째 언어 일 수도 있습니다. !


-1

파이썬을 모국어로 사용하는 주요 문제는 동적 타이핑과 변수 선언 부족입니다. IMHO는 언어의 유일한 주요 문제입니다.

변수 foo에만 문자열을 저장하겠다고 말하는 줄을 추가하면 프로그래머, 개발 환경 및 언어를 사용할 수 있습니다 (그리고 "전문적인 코드"의 경우 추위에 와서 나중에 지원 해야하는 가난한 바보) 함께 일하기 위해. 일반 개발자와 초보자에게는 특히 둘 이상의 유형에 변수를 사용하는 것이 적합하지 않습니다. 드문 경우이지만 동적 타이핑을 허용하는 명시 적 var / object 유형을 사용하는 것이 이치에 맞습니다.

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