태그 보관물: language-agnostic

language-agnostic

스크립팅 언어가 주니어 프로그래머에게 어떤 영향을 미칩니 까? [닫은]

요 전날 선생님 중 한 명과 토론을했습니다.

우리는 파이썬이나 루비와 같은 간단한 스크립팅 언어 가 주니어 프로그래머 에게 미치는 영향에 대해 토론했습니다 .

그는 스크립팅 언어가 초보 코딩 기술을 만들어 낸다고 주장했다. 또한 스크립팅 언어로 인해 프로그래머가 효율성, 메모리 관리, 운영 복잡성 등에 대한 우려를 무시하는 방법에 대한 다른 예를 인용했습니다.

저급 언어는 일부 사람들에게는 너무 많을 수 있으며 프로그래밍에 대한 열정을 개발하기 전에 포기할 수 있다고 주장했습니다. 첫 프로그래밍 언어 (C)를 배우기 시작했을 때, 나는 개념이 너무 어려웠 기 때문에 (포스팅에서는 14 세 밖에되지 않았기 때문에) 포인터를 포기하고 포기했습니다. Java가 아니었다면 프로그래머가 아니었을 것입니다! 더 간단한 언어로 시작한 다음 깊이 파고 들었다면 포기하지 않았으며 C로 시작한 것만큼이나 배웠을 것입니다.

수업은 양쪽이 완전히 탐구되기 전에 끝났습니다.


이 시점에서 저는 초보자가 스크립팅 언어로 시작한 다음 깊이 파고 들도록 설교했습니다. 그러나 그 토론 후에, 나는 이것이 잘못된 생각인지 궁금해하기 시작했다.

그렇다면 스크립팅 언어가 주니어 프로그래머에게 어떤 영향을 미칩니 까?



답변

동의하지 않습니다. 첫째, 스크립팅 언어는 더 높은 수준의 추상화이며 이에 아무런 문제가 없습니다. 처음에는 원칙을 배우려고 노력하고 있습니다. 실제로 저수준 언어를 선택하면 이해하기 전에 일부 세부 사항을 처리해야하므로 잘못된 코딩이 필요할 수 있습니다. 대신 더 간단한 언어로 처음부터 깨끗하고 간결한 코드 작성을 시작할 수 있습니다.

둘째,이 언어들에서 배울 것이 많습니다. 언어를 배우는 한 C는 Python보다 쉽습니다. 포인터를 다루거나 문자열을 처리해야하지만 Python에서 배울 수있는 더 많은 개념이 있습니다. 이해력, 객체 지향성, 반사, 마법 방법, 일급 함수, 람다, 반복자 및 생성기, 메타 클래스 :이 모든 것이 언어의 일부입니다.

파이썬으로 시작하면 프로그래밍과 부드러운 학습 곡선에 대해 훨씬 더 많이 배울 수 있다고 생각합니다. 낮은 수준의 언어는 추상화가 적을 수 있으므로 일반적인 개념은 배우지 않아도되며 초보자도없이 세부 정보를 얻을 수 있습니다.


답변

어디서부터 시작하든 상관 없습니다. 시작한 어디로 가느냐가 중요 합니다.

BASIC은 지구상에서 가장 우아한 언어는 아니지만 절차 적 프로그래밍의 기본 사항을 포함하므로 시작하기에 충분합니다.

나는 BASIC으로 시작했다. 나는 거기에 머물지 않았다 .


답변

선생님은 자신의 결과가 나쁜 것이라고 생각하는 것을 제외하고는 정확합니다.

컴퓨터 학습 방법을 배우기 위해 언어를 순전히 학업 활동으로 본다면, 그는 맞습니다. 당신이 일을 끝내는 방법으로 그것들을 본다면 당신은 맞습니다.


답변

나는 “스크립트 언어”가 끔찍한 단어라고 생각합니다.이 단어는 매우 구식이거나 도메인 특정 언어 클래스에 가장 적합합니다. 선생님은 자신이 이해하지 못하는 모든 것을 악의 축에 맞추는 것뿐입니다.

눈에 띄는 차이점은 고급 언어와 저급 언어 사이 또는 정적으로 동적으로 입력되는 언어 사이에서, 실제로 직교하는 것입니다.

어셈블러는 동적으로 형식이 낮은 하위 수준입니다 (유형을 말하면 어떤 의미가있는 경우). Java는 높거나 낮은 수준의 정적으로 유형이 없으며 C ++은 높고 낮은 수준의 정적으로 유형이 있습니다. 등등.

토론은 엔트리 레벨 프로그래머에게 더 적합한 패러다임 일 수 있습니다.
저수준 프로그래밍은 아마도 하나가 아니라고 확신합니다. 90 년대 초반에는 합당한 시간에 재미있는 결과를 만들어 낼 수 있었을 것입니다.
그러나 프로그래밍은 열정에 의해 촉진됩니다. 열정은 보상으로 영양분을 공급받습니다. 따라서 엔트리 레벨 프로그래머는 보람 도구로 시작해야합니다. 낮은 수준의 도구는 더 이상 보람이 없습니다. 막대한 시간 내에 동일한 결과를 얻을 수있는 광범위한 고급 도구가 있기 때문입니다.

인간의 사고는 추상적입니다. 우리가 세상을 이해하는 것을 배우면서 우리는 매우 거친 추상화로 그렇게하고 필요에 따라 자세하게 설명합니다.
어린이가 환경을 이해하기 위해 수학, 물리, 화학, 생물학, 역사, 사회학 및 철학을 가르치지 않을 것입니다. 젊었을 때 끝까지 다가 가고 나중에 당신의 권위를 완전히 부정 할 때 끝없이 다가오는 질문에 대처하기 위해 오랫동안 세계에 대한 아주 간단한 모형을 제시합니다.

그렇게 생각합니다. 인간의 뇌는 제한된 양의 정보 “단위”만을 처리 할 수 ​​있지만, 추상화 정도는 정보의 양자화에 거의 영향을 미치지 않습니다. 예를 들어, 표현 ’34 * 75 ‘를 계산하는 것이 계산하는 것보다 간단하지만 컴퓨터의 경우 다른 방법입니다. 많은 검은 색 픽셀을 구불 ​​구불 한 선으로 인식 (및 추상화)하여 개별 숫자로 인식 (및 추상화)하는 것은 엄청난 양의 작업입니다.
할머니는 파일을 여는 아이디어를 이해하고 있습니다. 그러나 그녀는 그 수준 아래에 대한 이해가 없습니다. 그리고 솔직히 하드웨어와 운영 시스템의 내부 작업과 그렇지 않은 것을 먼저 연구하여 이것을 배워야한다면 결코 그곳에 도착하지 않았을 것입니다.

명확하고 간결하며 그에 따른 우아한 솔루션이라는 관점에서 생각하는 법을 배운 적이 없었기 때문에 교환 할 수있는 낮은 수준의 세부 사항을 다루고 그에 대한 문제를 해결하는 데 너무 많은 시간을 소비했습니다. 사람들이 컴퓨터처럼 생각하도록 가르치는 것은 프로그래밍에 대한 최악의 접근법입니다.
프로그래밍의 가치는 문제에 대한 해결책을 찾는 데 있습니다. 코드로 코드를 표현하는 것은 실제로 무딘 기계적인 작업 일 뿐이며 어떤 도구를 사용하든 간단하게 수행해야합니다.

아, 포인터를 이해하지 못하는 것에 대해 걱정하지 마십시오. 나는 같은 나이에 같은 문제가 있었다. 여기서 문제는 또한 추상화가 부족하다는 것입니다. 일반적으로 일부 C 책에서 포인터에 대해 배우고 이해하기 위해 고심하는 동안 메모리 할당과 스택 및 힙 메모리 등이 함께 진행됩니다. 포인터 뒤에있는 추상적 인 개념은 간접적입니다. 특정 배열에 인덱스를 보유하는 변수는 (실제로 특정 배열이 주소 공간 인 C에서 동일) 실제로는 포인터 산술이 필요하지 않습니다.
이것은 높은 수준의 추상화를 선택하면 이해하기가 훨씬 쉽다는 것을 보여주기위한 것입니다.

편집 : 입력 할 때 정적으로 입력 된 언어를 선호합니다. 그리고 엔트리 레벨 프로그래머는 타입의 개념 (추상적 인 개념)을 명확하게 이해해야한다고 생각합니다.


답변

파이썬에 대한 간단한 것은 없습니다. 유니 코드 및 메타 프로그래밍을 살펴보십시오.


답변

또 다른 더 깊은 문제가 있습니다.

통일 된 언어는 유형에 대해 생각하고 유형에 대해 생각하도록 강요하지 않습니다. 작은 문자열과 숫자가있는 작은 스크립트가있는 한 잘 알 수 있습니다. 그러나 이것이 깨질 날이 올 것입니다. 갑자기 프로그램이 중단되고 모든 빠른 수정으로 인해 다시 중단됩니다.

또는 초보자 프로그래머가 튜플 목록 대신 목록 튜프가 필요하지만 “이 작업을 수행하는 방법”에 대한 최소한의 아이디어는 없으며, 절대적인 무력감을 보여주는 스택 오버플로에 대한 질문을 할 것입니다.


답변

나는 여전히 공식 교육과 멘토링이 초급 코드 품질에서 언어 선택보다 훨씬 더 큰 요소라고 주장합니다. 그러나 초보자를 위해 모국어를 선택해야한다면 자율적 인 프로그래머에게는 파이썬을, 대학에서는 C ++을 선택합니다.

그 이유는 당신이 유용한 일을하기 전에 몇 년 전에 강력한 이론적 토대를 세우기 위해 작고 사소한 프로그램으로 시작할 수있는 공식적인지도를 통해서입니다. 시간이 여유가 있다면 순서가 이상적이라고 생각하고 C ++은 강의 사이의 컴파일러 오류 및 분할 오류에 대한 많은 도움을 제공하여 기본 사항을 파악하고 있지 않은지 알려줍니다.

이러한 기본 사항 중 일부는 자신의 벨트에서 경험을 얻을 때까지 스스로 배운다면 배우기가 매우 어렵습니다. 또한 가능한 한 빨리 유용한 것을 만들어야하고 필요한 경우 이론적 토대를 얻을 수 있지만이 방법을 사용하면 최소한의 학습 만 할 위험이 없습니다. 그렇기 때문에 필자는 파이썬과 같은 언어를 권장합니다.