프로그래머가 C와 C ++의 차이점을 모르는 것이 일반적입니까? [닫은]


16

인터뷰 중에 C와 C ++의 차이점을 알고 있는지 묻습니다.

왜 그런 질문을하는지 궁금했습니다.


11
지난 몇 주 동안 내가 본 C 질문의 수가 C ++ 태그로 지정되어있어 매우 중요한 질문이라고 할 수 있습니다.
— 로봇 고트

13
"C / C ++"가 얼마나 자주 표시되는지를 판단하면 매우 일반적이라고 할 수 있습니다.
— user16764

6
무엇에 대답 했습니까?
— Dima

8
프로그래밍 작업 신청자 가 전혀 알지 못하는 것이 일반적입니다 . 그러나 나는 그 사람을 프로그래머라고 부르지 않을 것이다.
— vartec

6
@Tjaart-바이트가 8 비트가 아닌 시스템이 있다는 것을 알고 있습니까?
— Ramhound 2016 년

답변:


25

"C와 C ++의 차이점을 알고 있습니까?" "예"라고 대답하면 혼란 스러울 수 있지만 실제로 "C와 C ++의 차이점은 무엇입니까?" 더 개방적인 답변이 예상되었는데, 그들이 말하는대로 합법적 인 "문의 수단"으로 볼 수 있습니다.

예를 들어, C로만 코딩하고 C ++로 코딩 한 적이 없어도 "C ++는 객체 지향 코딩을 지원합니까?"라는 막연한 대답을 거의 할 수 없었습니다.


40

어떤 사람들은 코드를 전혀 쓸 수없는 엄청난 양의 프로그래밍 직업 지원자 가 있음을 관찰했습니다 . 따라서 "분명한"질문을하는 것은 완벽합니다.


7
이것은 내 대답이 될 것입니다. 프로그래밍 위치에 대해 사람들을 인터뷰 한 후, 분명한 질문을 통해 많은 수의 후보자를 매우 쉽게 삭감 할 수 있다고 말할 수 있습니다.
— Tyanna 2016 년

백만 명이 당신을 위해 투표합니다. 초급 질문에 놀라워 많은 인터뷰 대상자가 대답 할 수 없습니다.
— HLGEM

1
그런 다음 다시 25 년 동안 프로그래밍을 해왔으며 더 이상 대답 할 수없는 초보자 수준의 질문이 있습니다 (정의를 요청하면 악화됨). 나는이 답변에 연결된 기사를보고 있었고 "음, 그래 잠시 생각해 보자"와 같았지만 직장에서는 다소 복잡한 시스템을 구현하기 위해 노력하고 일반적으로 솔루션을 만드는 데 많은 어려움이 없습니다. 그 작은 질문 중 일부는 멀티 티어 시스템보다 더 무서워하며 멀티 스레드 기능을 사용하여 쓰레기를 던집니다.
— MetalMikester 2018 년

1
과연. 다른 P.SE 스레드에서 논의했듯이 인터뷰를 위해 나는 엄청나게 명백한 질문 ( "JS에서 변수를 어떻게 선언합니까?", "Java에서 1 int의 바이트 수?", ")으로 시작하는 습관을 들었습니다. 포인터 란 무엇입니까? "등 ...). 나는 첫 번째 오류를 신경 쓰지 않습니다 (스트레스는 긴장을 풀기 위해 대화와의 인터뷰를 시작하더라도 요소가됩니다). 그러나 보통 괜찮은 질문에 도달하기 전에 3 번의 타격을받을 수 있다면, 나가지 않고 전화를 끊는 것이 완벽하게 허용되는 것으로 간주합니다 더 또는 그들을 쫓아. 바보 같은 질문을하는 데 걸리는 5 분은 시간을 절약 할 가치가 있습니다.
— haylem

3
사실, 나는 숙련 된 지원자들이 그들에게 이상한 생각을하지 않기를 원하거나 내가 진지하게 받아들이지 않고 여기에 속하지 않는 것처럼 느끼기 때문에 첫 번째 질문을하기 전에 사과 하기까지합니다.
— haylem

8

그것들이 많이 있습니다. C-문자열과 가르 칠 바보 강사있는 사람들의 무한있다 new그리고 delete두 사람이 아주 가까이 생각 "C ++"실제로 C를 배우고, 또는 오래된 튜토리얼 나쁜 책은.

물론, 당신이 고용주라면, 그들이 같거나 비슷하다고 말하는 것은 큰 경고 표시입니다.


2
이것은 아주 좋은 지적입니다. C를 가르치는 것이 가능하지만 C ++ 컴파일러를 사용하는 것이 일반적 일 수도 있습니다. 이것은 물론 C와 C ++ 사이의 큰 차이점을 배우지 못한 학생들에 의한 혼란을 초래합니다. 나는 동일한 개정판의 주요 차이점에 대해서만 이야기하고 있습니다.
— Ramhound 2016 년

4
@Ramhound : 그것은 허용되지이다 전혀 . 일반적인 사실은 직교입니다.
— DeadMG

1
슬픈 사실은 C와 C ++가 거의 보편적으로 잘못 배운다는 것입니다. SO로 이동하여 C 및 C ++ 태그를 살펴보면 동일한 오해, 동일한 잘못된 해석, 반복되는 반복되는 동일한 나쁜 관행을 볼 수 있습니다. 이들은 같은 실수를하는 사람들이 아닙니다. 그들은 이러한 실수를하는 방법을 배웠다 . "나의 교수님은 ..."는 거의 보편적으로 지금 저에게 붉은 깃발입니다.
— John Bode 2016 년

5

C를 배우기 전에 C ++을 배운 사람 (예 : 저)도 있습니다.

나는 당신이 차이점을 알고 있다고 확신하지만, C 클래스가 아닌 C ++ 클래스 만 가지고있는 학생이라면 C 호환되지 않는 C ++ 부분은 분명하지 않습니다.

내가 배운 더 명백한 차이점 중 일부 (처음 목록이 아님) ( ) 구조체 데이터 형식은 원래 함수를 포함 할 수 없으며 개인 멤버를 가질 수 없으므로 추상 데이터 형식의 유효성 규칙을 적용하기가 매우 어렵습니다. C에서 ( ) 클래스는 C에서 지원되지 않습니다 . 앰퍼샌드를 사용하여 참조로 전달되는 C ( ) 연산자는 C ++ 에만 적용됩니다. C ++


2
나는 이것이 중요한 통찰력이라고 생각합니다 ... 옛날에는 C 컴파일러가 있었고 C ++이 왔으므로 차이점을 배웠습니다. 이제 C / C ++ 컴파일러가 있고 C ++을 명시 적으로 배운다면 C가 무엇인지, "Object Oriented stuff"를 넘어서 C ++이 무엇인지 아는 것은 불가능합니다. 또한 C / C ++가 가장 일반적이라는 것은 확실하지 않습니다. 분노에서 배우는 언어 (?)
— Al Biglan

1
"C ++로 변환 된"C 프로그래머는 종종 매우 나쁜 C ++ 프로그래머 이기 때문에 백분율이 작지 않기를 바랍니다 .
— sbi 2016 년

1

불행히도, 점점 더 일반화되고 있다고 생각합니다.

나는 기술 학교를 갓 졸업 한 젊은 프로그래머 (또는 기술을 배우는 곳)는 단순히 C, C ++, Lisp, OCaml 등과 같은 오래된 언어를 배우지 않는다고 생각합니다. 그들은 단순히 "c # 프로그래머"또는 "자바 프로그래머"로 나옵니다. 등을 구할 때 다른 언어를 배우는 데 어려움을 겪지 않습니다.

물론 할 일이 있지만, 제가 함께 일한 사람들로부터 젊은 프로그래머들이이 패턴을 따르는 경향이 있습니다.

면책 조항 : 교육에 대해 이야기하고 있기 때문에 교육에서 강조되는 사항에 대해 국가마다 차이가있을 수 있습니다.


어떤 대학에 대해 이야기하고 있습니까? "아케인"언어? 나는 ... 로마의 대학에서 MIPS 조립 배워야했다
— Виталий Олегович에게

일반적으로 제가 만난 "젊은"프로그래머는 공학 학위를 받았습니다. 제가 생각하는 거의 모든 프로그래머들은 저를 포함한 공학 학위를 가지고 있습니다.
— Pete

1
C와 C ++는 여전히 학교에서 가르치고 있습니다. 문제는 대부분 동일한 컴파일러가 두 가지를 가르치는 데 사용되는 경우입니다. 이것은 그들이 두 언어의 차이점을 실제로 배우지 않는다는 것을 의미합니다.
— Ramhound 2016 년

@Pete 만약 'C # 프로그래머'로 나왔다면 C 나 C ++를 '다른 언어'로 배우는 것을 상상할 수 없습니다. 분명히 Ruby, Haskell, Javascript, Python을 원합니다. C 계열 언어는 하나를 아는 것으로 충분할 정도로 가깝습니다.
— 커크 브로드 허스트

0

문자 그대로 C ++과 C가 동일하고 동일하다고 생각한다는 것이 아니라 C ++의 다른 기능을 진정으로 이해하고 사용할 수 있다는 점에서 가능합니다.

주요 원인은 이력서 / CV에 언어 / 도구를 나열하는 이진 특성입니다. 기본적으로 언어로 컴파일하고 실행하기 위해 "Hello World"를 사용하는 경우 이력서 / CV에 표시하는 것보다 괜찮습니다.

"Hello, World!"의 C 버전 또한 C ++에서 컴파일하고 실행합니다. 따라서 다른 정보가 없으면 이력서에서 "C ++"를 보는 것은이 사람이 "Hello, World!"를 얻을 수있는 충분한 C를 알고 있다는 것입니다. 대부분의 C 프로그램이 C ++로 컴파일된다는 것을 알고 있습니다.

그 점을 감안할 때 인터뷰에서 조금 조사해야 할 것입니다. 아마 "예 / 아니오"라고 물어 보면 "차이를 아십니까?" 즉, "올바른"대답이 분명하기 때문입니다. 나는 아마도 후보자에게 그녀가 어떤 언어를 더 좋아하는지, 왜, 그리고 그녀가 선택하지 않은 언어에 어떤 이점이 있는지 물을 것입니다.


0

대답

그렇습니다. 본인, 동료 또는 제 3 자 라이브러리 코드 중 하나 인이 상황을 보았습니다.

예를 들어, 나 자신은 때때로 다른 프로그래밍 언어 또는 프로그래밍 프레임 워크와 함께 작동하며 "pure c"또는 "c ++"라이브러리에 연결하거나 업데이트해야합니다.

방금 "Pure C"코드를 수정하는 데 문제가있었습니다. "new"& "delete"메모리 할당 함수를 사용하면 "c ++"입니다. 나머지 코드는 객체 지향적이지 않았습니다.

컴파일러는 C ++입니다. 나중에 다른 컴파일러를 고소하고 오류를 발견했습니다.

보너스

어떤 사람이 구두, 서면 또는 웹 온라인 시험을하는 경우 :

"C 또는 C ++의 차이점을 알고 있습니까?"

그리고 "예"또는 "아니오"라고 대답합니다.

그들은 정말로 의미합니다 :

"만약 당신이 말하면 C 또는 C ++의 차이점을 알고 있습니까?"

따라서 대답해야합니다.

"예. C ++와 객체 지향의 차이점은 있지만 C ++ 프로그램 내에서 이전 버전과의 호환성을 위해 Pure C를 사용할 수 있습니다."

때때로, 그들은 "당신이 저에게 말 해주세요"라고 묻지 않을 것이고, 그들은 당신이 모르는 것으로 가정 할 것입니다. "예"또는 "아니오"라고 대답하지 마십시오.


2
글쎄, 나는 대답이 전적으로 옳다고 생각하지 않습니다. 정답은 C ++이 객체 지향 코드를 강력하게 지원한다는 것입니다. 필요하지 않습니다. (처음에이 혼란의 근원은 어느 것입니까?)
— 로봇 Gort 로봇

또한 "C ++ 프로그램에서 Pure C를 사용할 수 있습니다"는 "C ++는 C의 상위 세트입니다. 즉, C 유효한 프로그램도 유효한 C ++ 프로그램입니다"(잘못된)와 같은 의미 일 수 있습니다. 또는 "C ++ 프로그램을 C 라이브러리에 링크 할 수 있습니다"라는 의미 일 수 있습니다 (그러나 대부분의 언어는 C 라이브러리에 어떤 방식 으로든 링크 할 수 있습니다). 실제 인터뷰에서 훨씬 더 정확해야합니다.
— nikie

-2

편집하다

우선,이 답변은 차이점이 없음을 선언하거나 차이점을 알고 있다고 공언하거나 C 또는 C ++에서 "Hello World"보다 알고 있음을 선언하기위한 것이 아닙니다. 그것은 많은 사람들이 기본적인 차이점을 알고 있고 (예를 들어 하나는 +그 이름에 일부 문자가 있음) 거의 또는 거의 대부분의 차이를 아는 사람이 거의 없다는 것을 지적하면서, 용어를 구상함으로써 질문에 대한 답입니다 .


그것은 '프로그래머'의 의미와 '차이'의 의미에 달려 있습니다.

나는 '프로그래머'이고 (나 자신을 개발자라고 부를지라도) C와 C ++ 사이에 실질적인 차이를주기 위해 고군분투했다. 누르면 C ++은 네임 스페이스와 상속을 가진 C의 슈퍼 세트라고 말할 것입니다. 기억을 다루는 다른 방법. 버그를 패치하거나 기존 프로그램을 변경하기에 충분하지만 C 또는 C ++에서 간단한 유틸리티 이상의 것을 작성하는 것을 상상할 수 없습니다. 나는 지나갈만큼 충분히 알고 있지만, 나는 그 언어들 중 어느 하나를 "알고있는"것으로 스스로를 그리는 것은 아니다.

Java와 FORTRAN 또는 Javascript와 Pascal의 차이점을 알려주지 않는 다른 '프로그래머'(개발자)도 알고 있습니다. 그들은 자신이하는 일에 능숙하며 절차 적 언어를 사용하지 않습니다.

그런 다음 매일 사용하는 단일 언어를 거의 아는 수백만 명의 평범한 프로그래머가 있습니다.

'차이'라는 용어는 모호합니다. 위의 몇 가지 차이점으로 내가 본 것을 지적했지만 그것들이 결정적이고 완전하지 않다는 것을 알고 있습니다. 거의 모든 사람들이 모든 차이점을 알 것입니다. 더 많은 사람들이 객체 지향에 대해 (있는 것처럼) 모호한 답변을 줄 수 있습니다.


5
"저는 C와 C ++ 사이에 실질적인 차이를주기 위해 고심하고 있습니다." 당신은 확실히 C ++ 프로그래머가 아닙니다. 부디?
— sbi 2016 년

2
C와 C ++는 매우 다른 언어로, 엄청나게 다른 방식으로 코딩되어 있습니다. 당신은 분명히 그들을 모른다.
— DeadMG

@sbi "저는 그 언어들 중 어느 하나를"알고있는 "것으로 자신을 그리는 것이 아닙니다." 스스로 결정하도록하겠습니다.
— Kirk Broadhurst

다운 보트에 대한 의견이 있으십니까? 둘 사이의 차이점을 모르기 때문입니까? 나는 그 질문에 대답하지 못한다고 생각하지 않습니다.
— Kirk Broadhurst

1
@ KirkBroadhurst : 나는 당신의 대답의 어느 부분이 다운 투표하기에 충분히 싫어했는지 지적했으며 그 의견은 그 이후로 당신이 downvoted 된 것보다 5 배 자주 upvoted되었으므로 당신이 어떤 설명을했는지 확실하지 않습니다. 그러나 C와 C ++는 표면적 인 구문 적 유사성 만 공유하고 다른 언어 는 매우 다르기 때문에 여기서는 "차이"라는 용어로 충분 합니다. 자격에 관해서 : 나는 여기에 대답하는 데 필요한 자격이 있다고 생각하지 않지만, 이것에 대한 답변이 명백히 잘못되면 자격과 무관하게 하향 조정됩니다.
— sbi

-3

프로그래머가 C와 C ++의 차이점을 모르는 것이 일반적입니까?

이십년 전에? 예.

오늘? 별로.

프로그래밍 환경이 크게 바뀌었기 때문입니다. 오늘날의 많은 프로그램은 웹 기반입니다. 데스크탑 용으로 작성된 프로그램조차도 C 또는 C ++보다 고급 언어로 작성 될 수 있습니다. 따라서 OS 코드를 작성하는 프로그래머가 아닌 경우 두 언어 중 하나에 대해 잘 모를 수 있습니다.

면접관은 면접에서이 질문을하여 프로그래밍 기초에 대해 얼마나 많이 알고 있는지 측정 할 수 있습니다. C와 C ++의 차이점을 알고 있다면 객체 지향 프로그래밍이 무엇인지, 아마도 라이브러리와 컴파일러를 이해하고, 메모리 함수, 참조, 포인터를 이해해야합니다 .... 오늘날 프로그래밍 언어에 영향을 준 많은 것들 . 나는 C ++을 많이 사용하지 않으며 (내가 어떤 언어로도 훌륭한 프로그래머라고 말할 수는 없지만 지혜는 시간이 갈 것이다) C ++에 대한 나의 경험이 확실히 더 나은 프로그래머가되었다고 말할 수있다.


8
다른 방법으로 말했을 것입니다. 나는 5-10 년 전보다 지금 더 혼란스러운 사람들을 본다.
— haylem

@Haylem 되돌아 보면, 나는 다른 방향으로 말하려고했다고 생각합니다.
— lunchmeat317
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.