C # 경험이 C ++로 잘 번역됩니까? [닫은]


13

학교에서 쓰는 프로그래밍 수업은 C ++이지만 지난 몇 년간 C #을하는 일을 끝냈습니다. C ++에서 1 년 또는 2 년의 경험이 필요하다고 생각되는 입장이 있다면 C #에 대한 나의 경험을 고려할 가치가 있습니까? 그런 입장에서 얼마나 효과적 일 수 있습니까? 필요한 경험을 얻으려면 엔트리 레벨 C ++ 프로그래머로 시작해야합니까?


4
가장 어려운 부분은 C ++의 관용구와 일을하는 "올바른"방법을 배우는 것입니다. C #에서 메모리 관리 및 범위 검사와 같은 것은 언어와 프레임 워크로 구워집니다. C ++에는 발로 자신을 쏠 수있는 더 많은 방법이 있습니다.
Robert Harvey

1
@RobertHarvey : 스마트 포인터에 대해 들어 본 적이없는 경우에만. 또는 용기.
DeadMG

11
@DeadMG : 그게 무슨 뜻인지 모르겠습니다. 당신이 그들에 대해 들었더라도, 당신은 여전히 ​​그들을 배워야합니다.
Robert Harvey

2
효과적인 C ++ 시리즈는 효과적인 C # 시리즈보다 훨씬 더 마음을 굽 힙니다.
Job

@Robert : 음, 컨테이너와 스마트 포인터를 사용하면 메모리를 관리 할 필요가 없습니다. 그리고 그것들을 배우는 것은 C ++ 101입니다.
DeadMG

답변:


13

여기서 문제는 C ++과 C #은 근본적으로 많은 문제에 대한 다른 접근 방식을 가진 매우 다른 언어라는 것입니다. "OO 언어"로 묶는 것은 쉽지만 간단한 사실은 많은 C # 관용구가 C ++에서 매우 나쁜 코드로 간주된다는 것입니다 (그 반대도 마찬가지).

실제로 차이점과 C ++ 숙어가 어떻게 보이는지 잘 모르겠다면 아무런 이유가 없습니다.


5

나는 약 2 년 전에 같은 배에있었습니다. c #이 ac # 작업을위한 것만 큼 c # 작업에 대한 가치는 아마 C ++ 작업에 적합하지 않을 것입니다. 즉, C #이 실제로 어떻게 작동하는지 알고 (아주 적은 C # 프로그래머가 실제로하는 일) C ++을 잘 배웠다면 C ++은 문제가되지 않습니다. 문제는 C ++에 비해 너무 높은 특정 디자인 패턴에 익숙해 져있는 방식입니다.

예를 들어 멋진 ADO.NET 데이터 액세스 모델에서 mysql 액세스를 위해 cppcon을 사용하고 System.Collections.Generic을 stl, 다중 상속, 가비지 수집을 사용하여 소멸자에서 메모리를 정리하는 등 힘든 전환이 될 수 있습니다. C ++는 문제가되지 않습니다. libs를 배우고, 디자인 패턴을 사용하는 방법은 도전 과제입니다. 대부분의 채용 담당자는 이것을 인식하지 못합니다. 기본 디자인을 할 수 있고 실제로 사용되는 c ++ 기능을 사용할 수 있다면 인터뷰에서 괜찮을 것입니다.

그러나 직업 준비는 다른 이야기입니다. 재미있는 도전이지만 모든 것이 잘되기를 바랍니다.


내가 보는 모든 C ++ 작업은 C ++에서 2-3 년의 경험을 원하지만 내 C는 C #입니다. 이것은 정말 실망 스럽습니다 .C ++을하고 싶습니다! 당신은 채용 담당자에 대해 맞습니다. 그들은 나를 쓰러 뜨 렸습니다. 아무도 시도하지 않으면 어떻게이 경험을 할 수 있습니까? 누군가 내가 문으로 들어 오면 빨리 배울 수 있다고 확신합니다.
MetaGuru

나는 현재 직장에서 C ++ 프로젝트로 뛰어 들었다. 아마도 가장 좋은 방법 일 것입니다. 또는 항상 c ++로 된 오픈 소스 프로젝트를 이용할 수 있습니다.
Jonathan Henson

@Ryan Jonathan이 말했듯이 C ++을 경험할 수있는 방법이 많이 있습니다. 내가 왔던 곳에서, 당신은 당신이 경험을 가지고 있음을 증명해야합니다. 이것은 두 가지 방식으로 작동합니다. "종이"경험이없는 사람도 자신을 증명할 수 있습니다. 시도하기 전에 실제로 C ++을 알고 있는지 확인하십시오!
Max

3

나는 모든 고용주를 위해 말할 수는 없지만 개인적으로 프로그래밍을 기술 및 언어 특성으로 보는 것이 좋습니다. 주요 기술이 아닌 다른 프로그래밍 작업에 고용하는 것은 여전히 ​​가능합니다.

매우 가능성이 낮다고 말하면서, 내가 고용하고있는 언어에 대해 전혀 경험이없는 사람을 고용 할 것입니다. 몇 주간의 주말 학습과 CV 강화를위한 몇 가지 애완 동물 프로젝트가 있습니다. 작은 것조차도 당신이 배우고 예리한 능력을 가지고 있음을 증명합니다.


3

당신은 내가 4 년 전과 똑같은 상황에 처해 있습니다.

공부하는 동안 C ++을했지만 싫어했습니다. 나는 여가 시간에 많은 분야의 웹 개발을했고 그 분야에서 일자리를 얻었습니다.

이사했을 때 2 년 동안 C ++ 경력을 가진 C ++ 직업을 신청했습니다. 글쎄, 나는 인터뷰 전에 C ++ 기억을 새로 고쳤고 테스트를위한 시간이 왔을 때 나는 내가 잘하고 있는지 잘 모르겠다.

그러나 대부분의 인터뷰는 문제 해결 및 창의적인 솔루션에 관한 것이 었으며 C ++은 그저 사소한 요소였습니다.

따라서 기회는 실제로 고용주와 직위에 달려 있습니다.

채용 대행사를 거치는 경우 프로필이 일치하지 않는다고 "아마도"알려줍니다. 그러나 실제 고용주가 있으면 필요한 것을 실제로 알면 기회가 더 좋아집니다.


1
가상 소멸자가 무엇인지 알고 전화 화면을지나도록하십시오.
Kevin

2
다른 사람들이 말했듯이 C ++에서 메모리 관리의 몇 가지 기본 사항을 기억해야합니다. 근본적인 차이점입니다. 라이브러리 및 프레임 워크와 관련하여 대부분의 (대규모) 회사에는 자체 라이브러리와 래퍼가 있으므로 구현을 알 필요가 없습니다. 반대로 대부분의 상위 수준 라이브러리가 .net 프레임 워크에 백업되는 C #과 관련이 있으며 해당 위치와 관련된 라이브러리 세트를 알아야합니다.
코요테

그래서 직업을 얻었습니까? C ++로 옮기고 싶지만 문서화 된 경험이 부족하여 문을 닫는 것입니다.
MetaGuru

네 ... 3 년간 일했습니다. 좋은 경험 이었지만 처음 몇 달 동안 C ++의 특성을 따라 잡아야했습니다.
코요테

1

때에 따라 다르지. 포인터와 같은 기본적인 인터뷰 질문에 대답 할 수 있다면 괜찮을 것입니다.

C ++ 템플릿과 .NET 제네릭의 차이점을 나열 할 수 있으면 도움이됩니다.

그 외에는 나머지를 따라가는 것이 매우 쉽습니다.


1

예. C ++ 경험만큼 관련이 없을 수도 있지만 좋습니다.

좋은 고용주는 당신이 몇 년 동안 특정 언어를 가지고 있는지보다 당신의 생각에 관심 을 가질 것입니다.

엔트리 레벨 C ++ 위치는 훌륭합니다. 빠르게 배울 수 있고 훌륭한 일을 할 수 있습니다. 좋은 회사는 성장할 수있는 많은 기회를 제공 할 것입니다. 그렇지 않다면 다른 곳으로 가서 C #과 C ++ 경험을 모두 가질 수 있습니다.


0

그것은 당신이 적용하는 사업의 본질에 달려 있습니다. 좋은 OO 기반 프로그래밍 및 아키텍처 기술을 가진 사람을 찾고 있다면 C #은 다음 것만 큼 좋습니다.

그들이 소프트웨어의 속도 / 응답성에 자부심을 가지고 있다면, 마이크로 최적화보다 중요한 알고리즘 인 알고리즘을 알아야 할 것입니다-해시 테이블 대 선형 조회 등. 예를 들어, ngen.exe에 대해 모든 사람이 아는 것은 아닙니다.

이들이 임베디드 / 모바일 및 / 또는 비가 비지 수집 환경에 있다면 메모리를 효과적으로 관리하는 방법에 대해 알아야합니다. @DeadMG가 지적했듯이 스마트 포인터가 핵심이지만 메모리 할당 프로파일을 이해하는 것입니다. 게임 프로그래머는 종종 메모리 요구 사항을 미리 알고 프레임 당 미지수를 줄이기 위해 큰 객체 배열을 미리 할당하고 재활용합니다. 이것은 iOS의 스크롤 TableView에서 사용되는 기술이기도합니다.

통합 작업이있는 경우 언어 간 데이터 마샬링 (P / Invoke 등)과 관련하여 C 수준의 전문 지식이 필요하지만 이러한 데이터 구조가 어떻게 사용되는지에 대한 바이트 수준의 이해도 필요합니다. 내 경험에 C #.

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