2009-08-09 3 views
5

각 언어가 가장 적합한 프로그래밍 영역은 무엇입니까?C#/C++을 사용해야하는 경우

저는 C++과 C#이 모두 좋아하지만 .NET 때문에 C#을 사용하는 것을 선호합니다.

내 질문은 언제 C++을 사용하고 C#을 사용합니까?

그래서 회사에 재정 지원을한다면 C#을 사용할 것입니까? (타사 라이브러리를 다운로드하지 않고도 양식을 디자인하고 데이터베이스에 연결하는 것이 쉽습니다. 고급 알고리즘을 만들면 C++을 사용하여 속도를 향상시킬 수 있습니까?

비디오가 @http://www.academicearth.org 인 것을보고 방금 보았습니다. 무엇을 너희들이 생각?이에 대한 업계의 전망은 무엇인가 않는 대학은 예를 들어 기계 학습을위한 C++를 사용하는 것을 선호 것으로 보인다.

.

+0

C# vs C++. NET 또는 C# vs C++ native? – Dykam

+0

C++ 네이티브 :) .. .. ... –

+0

제 질문 편집을 위해 Jalf에게 감사드립니다. 지금은 훨씬 명확합니다. –

답변

12

두 가지를 비교하려고 시도하는 것이 적절하지 않습니다. C++은 요즘 저급 또는 휴대용 고성능 코드가 필요할 때 일반적으로 사용됩니다. 약 10 년 전에도 엔터프라이즈 시스템의 비즈니스 로직을 구현하는 데 거의 사용되지 않았습니다. 정말로 C++을 사용하는 엔터프라이즈 시스템으로 개발을 시작하고 싶지는 않을 것입니다.

그러나 학계에서는 수년 동안 C 및 C++가 사용 되었기 때문에 기계 학습과 같은 것에 C++ 코드의 큰 기반이 있다는 것은 놀라운 일이 아닙니다. C++은 최적화 된 경우 C#보다 더 빠를 수 있습니다. 더 적은 메모리와 더 많은 플랫폼에서 실행할 수 있으며 C#보다 큰 프레임 워크에 대한 종속성이 적습니다.

C#은 메모리 모델을 훨씬 더 용인하며 일반적으로 개발자가 최소한의 개발 노력, 시간 및 비용으로 많은 작업을 수행 할 수있는 Microsoft 또는 Mono의 매우 포괄적 인 프레임 워크에 액세스 할 수 있습니다. Microsoft 플랫폼에서 작업하는 경우 요즘은 표준 언어입니다.

+0

답변 해 주셔서 감사합니다. –

+0

C 및 C++를 같은 범주로 그룹화하는 것과 완전히 일치하지는 않지만 대부분 동의합니다. * 정말로 * 낮은 수준의 항목은 순수한 C 및 C *가 아닌 * C++ (커널, 드라이버 등)에 의해 다뤄집니다. 아마도 C++은 C# 및 기타 유사한 언어의 출현으로 인해 더 이상 존재하지 않는 전력/사용의 격차를 처리합니다. – Noldorin

+0

나는 C# 컴파일러/CLR의 최신 버전에 대한 속도 테스트가 여러 경우에 C++과 일치하거나 심지어 이겼음을 알아야합니다. – Noldorin

2

는 종종 우리가 프런트 엔드 UI 개발을위한 C 번호를 사용합니다, C++ for server-side.이 주된 이유 중 하나는 이식성/속도입니다. 사람들은 Linux/OSX에서 C#이 빠르고 안정적이라고 말하지만 그것이 사실이 아닌 것으로 보았습니다 .YMMV.

+1

Mono는 GTK #을 gui로 사용하고 Windows 형식을 사용하지 않으면 멋지게 작동합니다. IMHO가 그렇게 나쁜 것은 아닙니다. –

+0

오래전에 Monodevelop와 GTK #를 사용했는데, dev 환경은 꽤 좋았지 만, GTK # 코드를 윈도우로 다시 포팅하려고 할 때 어려웠다. 나는 또 다른 기회를 줘야한다. – daed

+0

Gnome-Do는 Mono로 작성되었습니다. 그것이 얼마나 효율적이고 안정적인지보십시오. – Ray

7

항상 비즈니스 솔루션으로 C#을 사용하십시오. 더 진화 된 언어입니다.

저는 PPV에 대한 실시간 인증을 수행하는 회사에서 일했습니다 (예 : WWE 또는 케이블에서 권투를 구입 한 경우). 그들은 사건 직전에 엄청난 권력을 가지고 있습니다. 이 부분을 연구 한 팀은 속도면에서 C++로 작성되어야한다고 주장했습니다.

1 년 동안 논의 끝에 C#으로 프로토 타입 대체품을 마침내 작성했습니다. 교체가 두 배 빨랐다는 것이 밝혀졌습니다.

C#에서는 사용할 수없는 최적화가 필요한 곳이 거의 없지만 C# 코드는 오류가 발생하기 쉽습니다.

+2

+1하면 피할 수없는 하향 어조를 없앨 수 있습니다. 그러나 당신은 절대적으로 옳습니다. –

+0

답장을 보내 주셔서 감사합니다. C# –

+0

에 집중할 수있는 자신감을 갖게 해줍니다. C++ 1 년 된 솔루션은 C# 프로토 타입에 비해 2 대 1의 성능을 보였습니다. 나는 C++ 프로그래밍이 얼마나 약했는지 상상조차 할 수 없다. – rpg

2

내가 C++에서 좋아하는 한 가지 특징은 메모리에 대한 낮은 수준의 액세스와 구조의 메모리 레이아웃에 대한 제어입니다. OpenGL과 같은 더 낮은 수준의 API와 인터페이스하는 경우 일반적으로 float와 같은 기본 데이터 유형의 배열과 상호 작용합니다. C++에서는 Image2D<PixelWithAlphaChannel<float, 4> >과 같은 사용자 정의 유형에 void * 텍스처를 캐스팅 할 수 있으며 그렇지 않은 경우 지정되지 않은 데이터의 덤프를 위해 완전히 객체 지향 인터페이스를 사용할 수 있습니다.

낮은 수준의 API 데이터를 여러 개 보관할 여력이 없다면 C++로 코드를 깨끗하게 유지할 수 있습니다. 그러나이를 위해 많은 개발자 시간을 교환해야합니다. 이론적으로 C++은 더 빠른 코드 (또는 적어도 동일한 속도를 제공하지만 .NET을 C++로 구현할 수는 있지만 그 반대는 아닙니다)가 있지만 Resharper 및 dotTrace와 같은 도구를 사용하면 개발자가 신속하게 성능을 향상시킬 수 있습니다. 따라서 실제로 저비용 API에 의해 제약받지 않는 경우 재무 응용 프로그램과 성능에 중요한 알고리즘 모두에서 C#을 선택합니다.

1

상업적 및 지원 관점에서 볼 때 C#은 여전히 ​​하나의 플랫폼으로 궁금합니다. .NET 런타임을 목표로하지 않는다면 일반적으로 C#을 사용하는 것이 현실적인 선택이 아닙니다.

C++는 임베디드 OS에서 수퍼 컴퓨터에 이르는 다양한 플랫폼에서 지원됩니다.

.NET을 대상으로한다면 C#이 더 적합한 언어 일 것입니다. 실제로 C++에 적합한 바인딩이 아니기 때문에 C++/CLI는 어떤 경우에도 다른 언어 나 확장 언어와 유사합니다.

진정한 선택이있는 경우 가장 우선시되는 고려 사항은 전문 지식이어야합니다. C#으로 개발할 C++ 전문가를 많이 확보하는 것은 기술을 제대로 활용하지 못하는 것입니다. C++ 전문가없이 C++로 시스템을 작성하면 혼란이 초래 될 것입니다.

관련 문제