왜 대학에서 C ++가 첫 번째 언어를 가르치는가? [닫은]


12

우리 학교는 C ++ 프로그래밍 과정으로 컴퓨터 과학 커리큘럼을 시작합니다. 이는 많은 학생들이 배우는 첫 번째 언어입니다.

많은 사람들이 C ++을 싫어한다는 것을 알았으며 그 이유는 다양합니다. C ++이 좋은 언어가 아니라는 것이 대중의 의견 인 것 같습니다. 내가 인상을받을 것이 아니에요 아주 같은 일부 StackExchange에 대한 질문뿐만 아니라 게시물을 기반으로 좋아 :
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/

(참고 : C ++이 나쁜 언어라는 것은 내 의견이 아닙니다. 실제로는 내가 사용하는 주요 언어이지만 인터넷과 일부 교수는 인터넷에서 널리 사용되는 언어가 아니라는 인상을주었습니다. , 교수 중 한 명이 끊임없이 C ++에 푹 빠져 있지만 여전히 대학에서 시작하는 언어입니다!)

그 점을 염두에두고 왜 이것이 많은 학교에서 처음으로 가르치는 언어입니까? C ++로 프로그래밍 커리큘럼을 시작하는 이유는 무엇입니까?

참고 :이 질문은 "C ++가 제 1 언어로 적합합니까?"와 비슷하지만, 그것이 적합한 지 여부에 관심이 없지만 왜 선택되었는지에 대해서는 조금 다릅니다.


6
어느 학교와 어디? 내 근처에있는 모든 사람들 (마을에 3 명, 몇 시간 안에 운전할 수있는 몇 명)은 Java를 모국어로 가르치고 있습니다. C ++는 작년 또는 2 년에 시작합니다 (학생이 수강하는 과정에 따라 다름). 적어도 지난 10 년 동안 그렇게되었습니다.
FrustratedWithFormsDesigner

7
교수들은 다른 프로그래머들과 마찬가지로 합리적으로 좋아하는 것과 싫어하는 것을 좋아합니다. 동시에 그들은 경험이 부족한 학생들과 같습니다.
Mike Dunlavey 1

@Casey C ++은 싫어하지만 타당성이 없다는 주장 만 제공했기 때문에 다른 사용자와 마찰을 일으킬 수 있습니다. 대학에서 C ++을 선택한 이유를 찾는 데 중점을 두는 경우 실제 질문과 크게 관련이 없기 때문에 좋아하거나 싫어하는 참조를 편집하는 것이 좋습니다.
Adam Lear

4
첫해에는 겨와 밀을 분리하는 것이 중요합니다.
Steven Evers

2
그것은 것입니다 얼마나 많은 대학에 대한 몇 가지 통계가 재미있을 / 대학은 입문 과정에 대한 어떤 언어를 사용합니다.
Jerry Coffin

답변:


25

모든 단일 언어에는 연인과 증오가 모두 숭배되어 있습니다. 이것은 C ++, Java, C #, Haskell, Objective-C에 관계없이 적용됩니다.

언어를 좋아하거나 싫어하는 데에는 여러 가지 유효한 이유가 있습니다.

결국 C ++이 대학에서 주로 가르치는 데는 몇 가지 이유가 있습니다.

  • C를 기반으로합니다. 따라서 C에서 C ++ 로의 전환은 그리 고통스럽지 않습니다. 상당수의 대학이 C ++보다 C를 가르치기 때문에 IMO에 많은 의미가 있습니다.

  • 그것은 업계에서 가장 인기있는 언어 중 하나입니다 (Java, 모바일 개발, 웹 개발 등으로 바뀌기 시작했지만 여전히 거기에 있습니다)

  • 그것은 한 언어의 학문 (즉 연구) 목적, 학술에 의해 작성 ; 따라서 많은 교수들이이 도구를 매일 사용하고 있으며 매우 익숙하므로 강의 내용에 대한 확실한 선택입니다.

언어를 "나쁜"언어로 무시하는 데 너무 성급하지 마십시오. 나는 그것을 배우고, 실제로 배우고, 그것을 사용하여 중소 규모의 프로젝트를 구축하는 것이 좋습니다. 그런 다음 다른 언어와 동일하게 수행하십시오. 이 시점에서 "X, Y, Z 때문에 C ++가 나쁘다고 생각합니다"또는 "Java에없는 A, B, C 때문에 C ++가 좋다고 생각합니다"라는 충분한 경험과 통찰력을 갖게됩니다.

당신은 여전히 ​​많은 배울 것이 있습니다, 젊은 메뚜기.


2
"나쁜 주관적"철학으로 올라가면 "나쁜"언어가 아닐 수도 있지만, 사실상 모든 기술적 문제의 조합에는보다 생산적이고 안전한 언어가 있습니다. 제 생각에 C ++이 가르치는 이유는 사람들이 사용하는 것이기 때문이며 사람들이 알고 있기 때문에 사람들이 사용하는 것이기 때문입니다. 대학이 가르치기 때문에 사람들이 알고있는 것입니다. C ++은 인기를 제외하고는 볼 수있는 실질적인 장점이 없으며 전문적으로 프로그래밍합니다.
weberc2 2016 년

13

간단히 말해, 손을 잡지 않기 때문에 매우 훌륭한 교수 언어입니다. 수동 변속기를 운전하는 법을 배우는 사람들은 자동으로 처음으로 거의 문제가 없지만 그 반대는 아닙니다. 배우는 데 시간이 오래 걸리지 만 대학에서는 유용한 것을 만들기 전에 연습해야 할 장난감 프로그램이 4 년 있습니다.


9
이 잘못된 비유가 많은 찬사를 받았다는 사실이 걱정됩니다. 이것은 학습이 작동하는 방식이 아닙니다. 교훈의 많은 오해 중 하나.
Konrad Rudolph

12
C++ isn't that bad. 

학교에서 가르치는 것은 일반적으로 교수들이 알고있는 것과 업계에서 사용되고 있고 당시 인기가 있었던 것에 의해 주도됩니다.

학교를 과거의 타임 캡슐로 생각하십시오. :)

나는 그것이 다른 방향으로 있었으면 좋겠다.


매우 합리적인 지점! 대학에서 스마트 포인터 나 RTTI 또는 RAII에 대한 연습을받지 못했습니다. WTF!
Chani

12

영어는 또한 정말로 나쁘고, 해킹되고, 일관성이없는 언어로 묘사되어 왔지만, 여기 주변의 많은 사람들이 그 언어를 알고 있기 때문에 부모님과 선생님들은 나에게 영어를 가르치는 것이 좋은 생각이라고 결정했습니다.

C ++과 동일하다고 생각합니다. 많은 사람들이 알고있는 언어이므로 기본적인 유창함을 얻는 것이 좋습니다.

또한 하드웨어 수준에서 무슨 일이 일어나고 있는지 실제로 느낄 수있을 정도로 낮은 수준이라는 장점이 있습니다.

마지막으로 Java-Oracle 또는 .NET-MS와 같은 다른 언어의 "상업적"문제는 없습니다. 많은 대학이 특정 회사의 제품을 다른 회사보다 가르치는 것으로 비난 받고 싶지 않다는 것을 알고 있습니다.


1
상용 언어가 아닌 c ++의 경우 +1 정치와 사업 전술을 걱정하지 않고 언어를 배우는 것이 좋습니다. <예를 들어 Linux에 Java7 설치>
Chani

5

C ++가 너무 나쁘면 일상 생활에서 사용하는 대부분의 소프트웨어 제품이 C ++로 작성되었다고 어떻게 설명합니까?

첫 해부 터 대학에서 C ++을 배우는 데는 몇 가지 이유가있을 수 있습니다.

  • 많이 사용됩니다. 기존 코드베이스는 방대한 규모이며 이제는 Ruby, Python 또는 C #과 같은 언어가 있으므로 웹 사이트를 포함하여 처음부터 응용 프로그램을 만들 때도 C ++이 여전히 많이 사용됩니다. 이 경우 C ++를 배우는 것이 좋습니다. 우주선에 대한 응용 프로그램을 개발하지 않는 한 Ada를 배우는 데 2 ​​년을 소비하는 것보다 적어도 더 좋습니다.

  • 너무 추상적이지 않습니다. 예를 들어, C # 또는 Java 만 배운 경우 포인터가 무엇인지 학생들에게 어떻게 설명 할 수 있습니까?

  • 예를 들어, PHP에 비해 충분히 어렵습니다. 이는 프로그래밍을하지 않은 학생들은 곧 떠나게 될 것입니다. 그렇게 나쁘지는 않으며 학생이 소프트웨어 개발이 자신을위한 것이 아니라는 것을 이해하기 전에 2-3 년을 낭비하지 않아야합니다.

따라서 C ++이 Ada, Java 또는 PHP보다 적합합니다.


1
C가 두 번째 두 가지 점에서 더 좋을 것 같습니다. 에이다를 가르치는 학교가 있습니까? 나는 분명히 C ++보다 그것을 취할 것이지만 다시 나는 이상하다!
Jetti

C ++은 기술적 인 문제가 아니라 더 많은 사람들이 알고 있기 때문에 상용 제품으로 선택됩니다. C ++은 많은 현대 언어에 비해 안전하지 않고 사용하기 어려운 언어입니다. 언어는 장점에 따라 선택되지 않지만 인기가 있기 때문에 선택됩니다.
weberc2

또한 Ada가 C ++보다 나쁜 많은 것을 생각할 수 없으며 C ++보다 내 코드를 훨씬 많이 사용하고 싶습니다 (어쨌든 코드는 더 간단하고 안전합니다). 전문적으로 C ++로 프로그래밍합니다! 학생들에게 포인터에 대해 가르치기 위해 항상 Ada, Go 또는 여러 가지 제정신이 있습니다. 마지막으로 C ++은 불필요하게 어렵습니다. C ++ 프로그래머가 겪고있는 많은 문제는 프로그래밍과 관련이 없지만 C ++ 극복과 관련이 있습니다. 모든 수준의 프로그래밍은 제정신의 언어로 매우 간단합니다.
weberc2

5

일반적으로 C ++을 배우고 습득 할 수 있다면 다른 언어를 배우고 습득 할 수 있습니다. 싫어하는 이유는 능숙하고 빠른 릴리스 시간을 갖기 위해서는 언어와 표준 라이브러리에 대해 잘 알고 있어야하기 때문입니다.

그러나 Java와 같은 언어에서는 언어 / 표준 라이브러리의 기능에 대한 고급 지식만으로도 빠른 배포 시간을 가질 수 있습니다. 지옥, 나는 자바 표준 라이브러리에서 다섯 가지만을 알고 있습니다 (물론 컬렉션과 같은 기본 사항은 제외).

즉, C ++은 속도와 객체 지향 방법론이 잘 조합되어 있기 때문에 여전히 널리 사용되는 언어입니다. 많은 사람들이 그것이 완전한 OOP는 아니라고 생각하지만, 나는 그것이 완전히 광신자가 될 필요없이 OOP의 유연성을 최대한 제공한다고 믿습니다. 대부분의 컴파일러에서는 순수한 C를 작성할 수 있습니다.

내가 선택할 수 있다면 언젠가 C ++을 Java보다 가져갈 것이다. 그러나 그것은 단지 팬보이 일 뿐이다. 일반적으로 Java는 Java 인터프리터가 내장 된 거의 모든 아키텍처에서 실행되므로 유용합니다. 따라서 여러 플랫폼에서 지원해야하는 클라이언트 응용 프로그램의 경우 작업에 가장 적합한 도구로 간주되며 작성된 대부분의 새 응용 프로그램은 웹 기반입니다.


객체 코드는 사실이 아니지만 C ++을 포함한 C 언어의 약속은 거의 모든 플랫폼에 대한 컴파일러가 있으므로 동일한 소스 코드를 사용하여 다양한 플랫폼의 응용 프로그램을 컴파일 할 수 있다는 것입니다.
JohnFx

사실입니다. 대부분의 * NIX 플랫폼에는 컴파일러가 내장되어 있으며, "대부분, 나는 그 컴파일러를 다운로드 할 수 있지만 이것이 내 OS와 함께 제공되므로 반드시 최고가되어야합니다"와 같은 형식으로 대부분의 사람들에게 심리적 영향을주는 경향이 있습니다.

Java 이외의 다른 언어를 시도해야합니다. 두 세계를 모두 능가하는 대안이 있습니다. 예를 들어 Go는 속도, 이식성 및 단순성을 제공 하며 동시성을 산들 바람으로 만듭니다.
weberc2

4

저의 교수들 중 일부가 저에게 말했듯이 바닥에서 시작하거나 낮은 수준에서 시작한 다음 작업을 진행하는 것이 더 쉽습니다. C ++과 같은 언어는 컴퓨터 과학자가 실제로 무엇인지에 대한 훌륭한 소개를 제공합니다. Java, Python, Ruby 등과 같은 매력적인 언어는 아니지만 포인터 및 메모리 관리와 같은 중요한 프로그램 기능에 대한 핵심 지식을 얻을 수 있습니다. 당신이 계획하거나 평생 동안 사용하고 싶은 언어가 아니더라도, 원하는 프로그래밍 경로를 찾기 시작할 때 앞으로 몇 년 동안 감사하게 될 것입니다.


이것은 C ++가 아닌 Ada에 대한 논쟁처럼 들린다.
weberc2

3

C ++은 초보자 수준 콘솔 프로그램에서 가장 간단한 언어 중 하나 일 수 있습니다. 언어는 복잡하지만 절차 하위 집합에 집중할 수 있습니다. 포인터의 존재를 오랫동안 무시할 수 있습니다. 간단하게 시작한 다음 빌드 할 수 있습니다.

java 또는 C #에 비해 초기 "hello world"프로그램을 시작하고 실행하기위한 "fluff"구문이 적습니다. 초보자가 hello world 앱에 대해 "정적"이라는 단어를보아야합니까? 자바 / C #에서는 그렇게합니다.


3

컴퓨터 과학을 공부했을 때, Java는 처음에는 힘들었지 만 지금은 대학에서 계산 언어 학자에게 첫 언어와 C ++ 두 가지 언어를 가르치고 있습니다.

C ++은 적어도 다음과 같은 이유로 배웁니다.

  • 범용 언어이므로 많은 컴파일러가 있기 때문에 모든 운영 체제에 맞는 소프트웨어를 작성할 수 있습니다. 우수한 프로덕션 언어로 설계되어 프로그램 부품을 쉽게 재사용하고 실제 하드웨어 및 소프트웨어 등과 상호 운용 할 수 있습니다.

  • 정말 빠릅니다. 거대한 데이터 세트 를 처리하는 데 Python, Scheme 또는 Prolog를 사용할 수 없습니다 . 수백만 개의 노드가있는 그래프 알고리즘을 생각해보십시오. (컴퓨터 게임이 보통 C ++로 작성되는 이유이기도합니다.)

  • 학생들은 컴파일러가하는 일을 배울 수 있습니다. 실제로, 나는 고등학교를 시작으로 Java를 배우는 한 컴파일러의 작업은 항상 마술처럼 보였다. Java 초보자로서 스택 및 힙, 전체 정적 및 동적 연결 등에 대해 배우지 않습니다. C ++는 전체 컴퓨터를 미 신화합니다.

  • 그것이 할 수있는 일에 대해서는 학습 시간에 괜찮습니다 (실제로 파헤 치면 아마도 가장 복잡한 언어 중 하나 일 것입니다). 원활한 학습 곡선을 돕는 멋진 라이브러리를 제공합니다. (그러나 그것에 대한 다른 접근 방식이 있습니다. 우리 대학에서는 라이브러리를 사용하기 전에 자체 문자열 클래스와 스마트 포인터를 작성하는 방법을 배웠습니다 .C ++의 발명가 인 Bjarne Stroustrup은 반대 순서를 권장합니다.)


예를 들어, Ada가 왜 모국어로 가르치지 않는지 설명하지 않습니다.
weberc2

2

C / C ++는 실제로 대부분의 다른 언어보다 나은 언어입니다. 첫째, 잘못된 보안 감각을 추가하지 않기 때문입니다. 두 번째로 당신이하고있는 일을 알기 때문입니다.

나는 실제로 언어를 좋아하며 대부분의 언어보다 우월하다고 생각합니다.

또한 다른 언어와 마찬가지로 생산성이 높으며 수행중인 작업을 알고 있으면 무작위 코덱을 복사하기 전에 생각하면 "무서워"가 아닙니다.

또한 잘 읽어보십시오-http: //www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

그러나 C ++의 일부 예외 (예 : 예외) 및 직관적이지 않은 오버 헤드가있는 경우가 있습니다. 이것이 바로 Linus가 인용 한 게시물에서 그것에 대해 부정적인 이유입니다.

관련 주제 중 하나를 다루는 좋은 기사-http : //blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx


3
이 답변은 완전히 잘못되었습니다. "C / C ++"라는 언어가 없기 때문에 무엇보다도.
Konrad Rudolph

1
  1. 교수진은 새로운 과정을 준비하는 것을 좋아하지 않으며 제공 할 수있는 금액에 제한이 있습니다.
  2. 언어가왔다 갔다해서 최첨단을 유지하려고 포기했습니다 (1 번 참조)
  3. 기술 학교가 아닌 대학입니다. 직업 훈련보다 기초를 제공하는 데 더 중점을 둡니다.
  4. 서버, 데스크탑, 임베디드, UNIX, Windows 등 광범위한 프로그래밍을 포괄합니다.
  5. 그들은 그것을 잡초 과정으로 사용합니다. 모든 주요 연구 영역에는 최소한 하나가 있습니다.

1

이전에는 파스칼이 있었고, 파스칼 이전에는 기본과 비슷한 것이있었습니다. 흥미로운 부분은 다음은 무엇입니까? 어쩌면 아무것도 아닙니다. 나는 왜 "왜 C ++"인가에 대해있다. 어렵지만 똑같이 힘들지 않기 때문입니다. 아니요, 저는 C ++이 시스템 프로그래밍에 적합한 언어라는 것을 잘 알고 있습니다. C ++로 코딩 된 많은 프로젝트가 있고 수많은 라이브러리가있어 학생들이 모든 것을 만들 수 있다는 것을 알고 있습니다. 그러나 우리는 학생들과 논리를 만들고 시스템을 이해하는 그들의 가능성에 대해 이야기하고 있습니다. 간단한 논리를 만들 수없고 시스템 작동 방식을 이해할 수 없다면 이것이 좋은 C ++ 코더가 될 수 없습니다. 이것이 제 의견으로는 주된 이유입니다. 그리고 또 다른 간단한 이유는 안정적인 경력 시작입니다.

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