C ++의 모든 주요 측면을 익히고 언어의 기초를 잘 아는 사람이 다른 언어 (예 : Python, Perl, Java)를 더 빠르고 쉽게 배울 수있는 가능성이 있습니까?
C ++의 모든 주요 측면을 익히고 언어의 기초를 잘 아는 사람이 다른 언어 (예 : Python, Perl, Java)를 더 빠르고 쉽게 배울 수있는 가능성이 있습니까?
답변:
프로그래밍 언어에 대한 깊은 지식은 다른 언어를 더 빨리 선택하는 데 도움이 될 것입니다. 프로그래밍이 구문을 배우는 것보다 더 생각하는 방식 이기 때문에 부분적으로 그렇게 됩니다. 대부분의 프로그래밍 실습은 대부분의 다른 프로그래밍 언어에 해당됩니다. 그렇기 때문에 사람들은 항상 두 번째 프로그래밍 언어를 첫 번째보다 빨리 배우게됩니다.
C ++은 다른 언어보다 훨씬 큰 '제어'를 허용하는 언어입니다. 이것은 좋고 나쁠 수 있습니다. 예를 들어, 실제 총은 숲에 갈 때 공기총보다 낫지 만 (실제로 무언가를 격추 할 수 있기 때문에) 자신과 주변 사람들에게 더 위험합니다. C ++에는 메모리 관리와 같은 개념이 있으며 대부분의 다른 언어에서는 걱정할 필요가 없습니다. 그러나 자동 메모리 관리 언어로 작업 할 때도 이러한 개념을 확실히 이해하는 것은 의미가 없습니다. C ++과 같은 언어를 사용하여 비트 단위 연산을 수행하고 '금속'으로 내려갈 수도 있습니다. 이러한 영역에 대한 기본적인 이해조차도 모든 언어의 프로그래머로서 많은 도움이 될 수 있습니다.
C ++을 배우기 전에 거의 3 년 동안 Java를 개인적으로 배웠으며 후회한다고 말해야합니다 (단일 코스 ...). 이것은 C ++ (나는 여전히 배우고 있습니다- '심오한'지식과는 거리가 멀다 : D)는 내가 원하는만큼 간단하지 않습니다. 내가 다른 방법으로 그것을했다면 나는 그것이 훨씬 쉬울 것이라고 말할 것입니다. 특히 WHY 를 알고있을 때 특정 방식으로 무언가가 이루어지고 언어의 자동 마법에 대해 안심할 수는 없습니다. 의견을 제시 할 수 있다면 C (기본 및 범용 프로그래밍 패러다임의 경우)-> C ++ (메모리 관리와 함께 OOP의 기본 이해를 위해)-> 다음과 같이 '실제'OOP 언어로 갈 수 있습니다 좋은 기초 또는 C ++의 고급 주제를 계속 사용할 수 있습니다.
OR와AND
불행하게도. 프로그래밍 클래스, 특히 초보자 수준의 클래스에서 C ++을 가르치는 경우 실제로 큰 문제입니다. 한 학기 수업의 범위!
C ++에서 시도 된 많은 것들이 결국 관성 관성을 통해 언어에서 관용적이되었으며, 그 이후로 거의 모든 다른 언어는 큰 실수로 밝혀 졌기 때문에보고 거부했습니다. 주요한 것은 C ++의 템플릿과 C ++의 객체 모델입니다 (값 유형으로서의 객체는 Liskov 대체 및 수천 개의 OOP 자체를 손상시키기 때문에 결코 좋은 것은 아닙니다).
따라서 C ++에 대한 깊은 지식을 얻은 다음 다른 프로그래밍 언어를 배우고 싶다면 다른 프로그래밍 언어에서 효과적이기 위해서는 배우지 말아야 할 많은 해롭고 비생산적인 크루 드가 있습니다.
아니요. C ++을 잘 알고 있으면 C ++과 같은 다른 언어를 더 쉽게 배울 수 있습니다. 그러나 그것은 지루할 것입니다. 왜 같은 두 언어를 알고 싶습니까? 그것은 당신에게 아무것도 사지 않습니다. (이것은 C ++에만 국한되지 않습니다. 모든 언어에 적용됩니다. 자연어와 비교 : 이탈리아어를 배우면 다른 언어를 배우기가 쉽지 않습니다. 스페인어, 프랑스어 또는 포르투갈어를 배우고 3 가지를 배우기가 쉬워집니다. 이 중 네 번째는 쉽게 배울 수 있지만 모든 로맨스 언어를 배우더라도 핀란드어, 중국어, 힌디어, 히브리어, 아랍어, 파슈 투어, 그리스어 등을 배우는 데 도움이되지는 않습니다.)
프로그래밍 언어는 패러다임을 구현합니다. Peter van Roy는 34 가지 주요 프로그래밍 패러다임의 포스터를 수집 했습니다 .
패러다임은 개념으로 구성됩니다. 이 포스터에는 약 18 개의 개념이 나와 있습니다.
모든 패러다임 (또는 적어도 포스터에있는 패러다임)은 이러한 개념으로 구성됩니다. 모든 언어는 이러한 개념으로 구성된 하나 이상의 패러다임을 구현합니다. 따라서 이러한 개념을 배우면 어떤 의미에서든 모든 프로그래밍 언어를 한 번에 배울 수 있습니다.
물론 여전히 많은 언어 별 특징이 있습니다 (구문 중 구문). 또한, 그 포스터는 타이핑을 완전히 무시하고 , 의존형 시스템 은 물론 System F <: ω 스타일 타입 시스템, 스칼라 스타일 타입 시스템 또는 동적 오리 타입 타입 시스템 사이에는 상당한 차이가 있습니다. à la Idris, Agda, Coq, Guru 또는 ATS.
프로그래밍 언어를 깊이 아는 것은 다른 가족, 적어도 같은 가족에 속한 다른 언어를 배우는 데 도움이 될 것입니다. 예를 들어, C ++ 지식은 LISP 나 Haskell에 큰 도움이되지 않지만 객체 지향 절차 언어의 경우에는 도움이됩니다. 저의 접근 방식은 언어의 각기 다른 가족 (절차, 기능, 객체 지향 등)에서 언어를 잘 배우려고 노력한 다음 지식이 그 가족의 다른 언어로 이어질 수 있다는 것입니다. 반면에 APL에 대한 깊은 지식은 다른 어떤 것도 도움이되지 않습니다 ...
나는 여기서 다른 해석을 할 것입니다.
C ++는 메모리 및 데이터 구조에 대해 배우기에 좋은 언어입니다. 객체 소유권 및 수명과 같은 개념에 대해 신중하게 생각해야하기 때문입니다. 또한 메모리 및 데이터 구조에 대한 학습은 모든 소프트웨어 엔지니어링 커리큘럼의 필수 부분 중 하나입니다.
그러나 데이터 구조에 대해 배워야합니다. "C ++을 배우기"만하면 실제로 많은 것을 얻지 못하고 단기적으로 다른 언어를 배우는 과정이 느려질 수 있습니다.
내가 대학에있을 때, Data Structures는 CS1 (수업 중 절반 이상이 배제) 이후에 요구되는 신입생 수준의 과정이었습니다. 그거 어려웠 어. 이 과정의 형식은 기본적으로 "[예 : 좌파 힙 ] 이전에는 본 적이없는 데이터 구조 입니다. 일주일 안에 C ++로 구현하고 출력을 예상 출력과 정확히 바이트 단위로 맞 춥니 다. 따라서 자동으로 등급을 매길 수 있습니다. " 다음 주에는 새로운 데이터 구조와 새로운 과제가 주어집니다. 다른 코스를 합친 것보다 한 코스에서 더 많은 것을 배웠을 것입니다.
이것이 C ++을 소중하게 만들기 위해 필요한 학습입니다.
아니요. C 또는 "기본적으로 C"인 C ++의 하위 집합에 대한 깊은 지식은 다른 언어를 학습 할 때, 적어도 구현이 수행해야 할 작업을 파악할 때 도움이됩니다. 반면에 C ++에 대한 깊은 지식은 다른 언어를 배울 때 혼란 스럽거나 관련이없는 정보 일 것입니다. 예를 들어 Perl / Python / Ruby로 이동할 때 C ++의 객체 방향을 표면 수준 이상으로 배우면 해당 언어의 객체가 완전히 다른 방법C ++보다. 대부분의 다른 언어와 다른 언어 기능 (예를 들어, C ++ 템플릿과 Haskell 다형성은 완전히 다른 구현으로 기본적으로 동일한 기능 임)에 대해서도 마찬가지입니다. 따라서 C ++에 대한 깊은 지식은 대부분 C ++에 따라 다릅니다.