프로그래머가 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.