인터뷰 중에 C와 C ++의 차이점을 알고 있는지 묻습니다.
왜 그런 질문을하는지 궁금했습니다.
인터뷰 중에 C와 C ++의 차이점을 알고 있는지 묻습니다.
왜 그런 질문을하는지 궁금했습니다.
답변:
어떤 사람들은 코드를 전혀 쓸 수없는 엄청난 양의 프로그래밍 직업 지원자 가 있음을 관찰했습니다 . 따라서 "분명한"질문을하는 것은 완벽합니다.
그것들이 많이 있습니다. C-문자열과 가르 칠 바보 강사있는 사람들의 무한있다 new
그리고 delete
두 사람이 아주 가까이 생각 "C ++"실제로 C를 배우고, 또는 오래된 튜토리얼 나쁜 책은.
물론, 당신이 고용주라면, 그들이 같거나 비슷하다고 말하는 것은 큰 경고 표시입니다.
C를 배우기 전에 C ++을 배운 사람 (예 : 저)도 있습니다.
나는 당신이 차이점을 알고 있다고 확신하지만, C 클래스가 아닌 C ++ 클래스 만 가지고있는 학생이라면 C 호환되지 않는 C ++ 부분은 분명하지 않습니다.
내가 배운 더 명백한 차이점 중 일부 (처음 목록이 아님) ( ) 구조체 데이터 형식은 원래 함수를 포함 할 수 없으며 개인 멤버를 가질 수 없으므로 추상 데이터 형식의 유효성 규칙을 적용하기가 매우 어렵습니다. C에서 ( ) 클래스는 C에서 지원되지 않습니다 . 앰퍼샌드를 사용하여 참조로 전달되는 C ( ) 연산자는 C ++ 에만 적용됩니다. C ++
불행히도, 점점 더 일반화되고 있다고 생각합니다.
나는 기술 학교를 갓 졸업 한 젊은 프로그래머 (또는 기술을 배우는 곳)는 단순히 C, C ++, Lisp, OCaml 등과 같은 오래된 언어를 배우지 않는다고 생각합니다. 그들은 단순히 "c # 프로그래머"또는 "자바 프로그래머"로 나옵니다. 등을 구할 때 다른 언어를 배우는 데 어려움을 겪지 않습니다.
물론 할 일이 있지만, 제가 함께 일한 사람들로부터 젊은 프로그래머들이이 패턴을 따르는 경향이 있습니다.
면책 조항 : 교육에 대해 이야기하고 있기 때문에 교육에서 강조되는 사항에 대해 국가마다 차이가있을 수 있습니다.
문자 그대로 C ++과 C가 동일하고 동일하다고 생각한다는 것이 아니라 C ++의 다른 기능을 진정으로 이해하고 사용할 수 있다는 점에서 가능합니다.
주요 원인은 이력서 / CV에 언어 / 도구를 나열하는 이진 특성입니다. 기본적으로 언어로 컴파일하고 실행하기 위해 "Hello World"를 사용하는 경우 이력서 / CV에 표시하는 것보다 괜찮습니다.
"Hello, World!"의 C 버전 또한 C ++에서 컴파일하고 실행합니다. 따라서 다른 정보가 없으면 이력서에서 "C ++"를 보는 것은이 사람이 "Hello, World!"를 얻을 수있는 충분한 C를 알고 있다는 것입니다. 대부분의 C 프로그램이 C ++로 컴파일된다는 것을 알고 있습니다.
그 점을 감안할 때 인터뷰에서 조금 조사해야 할 것입니다. 아마 "예 / 아니오"라고 물어 보면 "차이를 아십니까?" 즉, "올바른"대답이 분명하기 때문입니다. 나는 아마도 후보자에게 그녀가 어떤 언어를 더 좋아하는지, 왜, 그리고 그녀가 선택하지 않은 언어에 어떤 이점이 있는지 물을 것입니다.
대답
그렇습니다. 본인, 동료 또는 제 3 자 라이브러리 코드 중 하나 인이 상황을 보았습니다.
예를 들어, 나 자신은 때때로 다른 프로그래밍 언어 또는 프로그래밍 프레임 워크와 함께 작동하며 "pure c"또는 "c ++"라이브러리에 연결하거나 업데이트해야합니다.
방금 "Pure C"코드를 수정하는 데 문제가있었습니다. "new"& "delete"메모리 할당 함수를 사용하면 "c ++"입니다. 나머지 코드는 객체 지향적이지 않았습니다.
컴파일러는 C ++입니다. 나중에 다른 컴파일러를 고소하고 오류를 발견했습니다.
보너스
어떤 사람이 구두, 서면 또는 웹 온라인 시험을하는 경우 :
"C 또는 C ++의 차이점을 알고 있습니까?"
그리고 "예"또는 "아니오"라고 대답합니다.
그들은 정말로 의미합니다 :
"만약 당신이 말하면 C 또는 C ++의 차이점을 알고 있습니까?"
따라서 대답해야합니다.
"예. C ++와 객체 지향의 차이점은 있지만 C ++ 프로그램 내에서 이전 버전과의 호환성을 위해 Pure C를 사용할 수 있습니다."
때때로, 그들은 "당신이 저에게 말 해주세요"라고 묻지 않을 것이고, 그들은 당신이 모르는 것으로 가정 할 것입니다. "예"또는 "아니오"라고 대답하지 마십시오.
편집하다
우선,이 답변은 차이점이 없음을 선언하거나 차이점을 알고 있다고 공언하거나 C 또는 C ++에서 "Hello World"보다 알고 있음을 선언하기위한 것이 아닙니다. 그것은 많은 사람들이 기본적인 차이점을 알고 있고 (예를 들어 하나는 +
그 이름에 일부 문자가 있음) 거의 또는 거의 대부분의 차이를 아는 사람이 거의 없다는 것을 지적하면서, 용어를 구상함으로써 질문에 대한 답입니다 .
그것은 '프로그래머'의 의미와 '차이'의 의미에 달려 있습니다.
나는 '프로그래머'이고 (나 자신을 개발자라고 부를지라도) C와 C ++ 사이에 실질적인 차이를주기 위해 고군분투했다. 누르면 C ++은 네임 스페이스와 상속을 가진 C의 슈퍼 세트라고 말할 것입니다. 기억을 다루는 다른 방법. 버그를 패치하거나 기존 프로그램을 변경하기에 충분하지만 C 또는 C ++에서 간단한 유틸리티 이상의 것을 작성하는 것을 상상할 수 없습니다. 나는 지나갈만큼 충분히 알고 있지만, 나는 그 언어들 중 어느 하나를 "알고있는"것으로 스스로를 그리는 것은 아니다.
Java와 FORTRAN 또는 Javascript와 Pascal의 차이점을 알려주지 않는 다른 '프로그래머'(개발자)도 알고 있습니다. 그들은 자신이하는 일에 능숙하며 절차 적 언어를 사용하지 않습니다.
그런 다음 매일 사용하는 단일 언어를 거의 아는 수백만 명의 평범한 프로그래머가 있습니다.
'차이'라는 용어는 모호합니다. 위의 몇 가지 차이점으로 내가 본 것을 지적했지만 그것들이 결정적이고 완전하지 않다는 것을 알고 있습니다. 거의 모든 사람들이 모든 차이점을 알 것입니다. 더 많은 사람들이 객체 지향에 대해 (있는 것처럼) 모호한 답변을 줄 수 있습니다.
프로그래머가 C와 C ++의 차이점을 모르는 것이 일반적입니까?
이십년 전에? 예.
오늘? 별로.
프로그래밍 환경이 크게 바뀌었기 때문입니다. 오늘날의 많은 프로그램은 웹 기반입니다. 데스크탑 용으로 작성된 프로그램조차도 C 또는 C ++보다 고급 언어로 작성 될 수 있습니다. 따라서 OS 코드를 작성하는 프로그래머가 아닌 경우 두 언어 중 하나에 대해 잘 모를 수 있습니다.
면접관은 면접에서이 질문을하여 프로그래밍 기초에 대해 얼마나 많이 알고 있는지 측정 할 수 있습니다. C와 C ++의 차이점을 알고 있다면 객체 지향 프로그래밍이 무엇인지, 아마도 라이브러리와 컴파일러를 이해하고, 메모리 함수, 참조, 포인터를 이해해야합니다 .... 오늘날 프로그래밍 언어에 영향을 준 많은 것들 . 나는 C ++을 많이 사용하지 않으며 (내가 어떤 언어로도 훌륭한 프로그래머라고 말할 수는 없지만 지혜는 시간이 갈 것이다) C ++에 대한 나의 경험이 확실히 더 나은 프로그래머가되었다고 말할 수있다.