2009-04-29 6 views
2

좋아요, 그래서 저는 컴퓨터 과학 입문 수업을 들었고 학교의 언어 선택은 자바였습니다 (저는 다형성, 캡슐화 등과 같은 개념에 대한 기본적인 지식을 가지고 있습니다). C++을 배우고 싶습니다. C (C++을 먼저 배우고 C 언어로 가야한다는 말을 듣고 싶습니다). C#이 Java와 C# 간의 언어 유사성으로 인해 멋진 전환 언어인지 궁금합니다. 그렇다면 C#을 처음 배우면 나중에 C++에 대한 더 나은 이해를 얻을 수 있습니까?C/C++로 전환하려면 C#을 배우시겠습니까?

감사합니다. 고맙습니다.

+0

나는 이해하지 못한다. 왜 라틴어 작가를 읽고 싶다면 이탈리아어를 먼저 배우고 라틴어를 배우겠습니까? C++을 배우고 싶다면 C++을 배워보십시오. –

답변

6

다름. C#은 Java보다 훨씬 C++이 아닙니다. 그것은 unsafe 코드의 포인터를 지원하지만, 그 이상으로 나는 Java에서 C++로 특히 좋은 다리를 만들 것이라고는 생각할 수 없다. 또한 그것은 내가 다른 방향에서 오는 개발자들에 의해 더 많이 사용되는 것으로 의심되는 기능입니다. C#을 배우기위한 다른 이유가 있다면, C#으로 전환하는 것이 더 쉽기 때문에 건너 뛰라고 말하고 싶습니다.

+0

좋아요. 방금 Amazon에서 두 권의 책을 주문했습니다. (Buy 1은 반값을 얻습니다.) 첫 번째 책은 Sams Teach Yourself C++ 및 C++ Primer Plus 5th Edition입니다. 귀하의 정보를 보내 주셔서 감사합니다. –

3

이미 Java를 알고 있다면 C#은 이미 알고있는 것보다 C++에 관해 더 많이 가르쳐주지는 않습니다.

+0

나는 그가 C로 전환하고 싶다고 생각했다. C++은 그저 한 발자국이었습니다. –

+0

맞아,하지만 내 의견은 C#을 배우기 전에 C++에 관한 것이었다. 그의 자바 지식으로 그는 C에 가기 전에 C++로 바로 갈 수 있습니다. – CMerat

5

나는 C 및 C++ 자바에서 가장 쉬운 전환이 첫번째 포인터에 대한 느낌을 얻기 C.

로 시작하고 메모리를 관리하지 않는 것입니다 생각합니다.

그런 다음 C 및 C++에서 어려운 항목에 대한 느낌을 얻은 다음 C++로 개체 및 STL을 고정시킵니다.

이것이 제가 배운 방식이며, 저에게는 매우 쉬운 전환이었습니다.

+0

C는 기계에 너무 깊이 파고 들지 않고 실제로 진행되는 것과 더 가깝습니다. 그것을 이해하면 프로그래밍을 이해하는 데 도움이 될 것입니다. – KarlP

+0

다음 몇 가지 계획을 배우고 몇 가지 프롤로그 :-) – KarlP

-1

항상 물건이 발명 된 순서대로 배웠습니다.

EDIT : 처음 C++을 배우라고 조언하면 ... C는 매우 미친 짓입니다 ... C++은 C의 상위 집합이므로 일단 C++을 배웠다면 C++과 비교하여 부족한 부분을 제외하고 C에서 배울 내용이 없습니다. 왜 C++ 기능이 C 언어로 구현되지 않았는 지 추측하기보다는 언어가 진화하면서 왜 물건이 추가되었는지 이해하기가 더 쉽습니다.

+1

-1 설형 문자로 작성하는 학습을 시작 하시겠습니까? –

+0

토마스, 설득력있는 설형 문자와 그 후계자 모두를 배우려고한다면, 그렇다. 마이너스 하나, 똑똑한 바지를 주셔서 감사합니다. – zvolkov

+0

@ 토마스 : 당신이 궁극적으로 /해야 할/배우고 자하는 언어의 의미는 연대순으로 가야한다는 것입니다. –

0

Java는 객체 지향적이며 C++은 객체 지향적이며 C#은 대부분 OOP이지만 그것이 주요 유사점입니다.

C#이 Java에서 많이 변경되었으므로 .NET 1.1에서 C#을 사용하지 않으면 Java와 매우 다른 언어를 배우게되고 목표가 C이면 언어에서 벗어날 것입니다.

C는 구조화 된 언어이므로 더 이상 객체가 없기 때문에 사고 방식이 다른 세 가지와 다르므로 메모리 수집에 대해 걱정할 필요가 없습니다. 가비지 수집이 필요하지 않습니다.

포인터는 C가 쉽다는 것을 알고 나면 배우기에 C에서 가장 힘든 부분이었습니다.

일단 C를 알고 있고 이미 Java를 알고 있다면 C++는 배울 점이 적습니다.

3

관리되지 않는 메모리를 다룰 때 가장 먼저 C를 배우십시오. 그런 다음 C++을 사용하여 객체 지향 개념에 대해 배운 내용을 관리되지 않는 세계에 적용합니다. 가상 메소드, 다중 상속 등과 같은 C++의 차이점을 소개하십시오.

모범 사례에 대한 책을 읽어보십시오. Learning C++만으로는 C++ 개발자가 될 수 없습니다. 연맹의 언어이므로, 그 언어를 어떻게 사용하는지 더 잘 알아야합니다.

2

그냥 배우십시오. "전환"을 걱정하지 마십시오. 당신의 목표가 C를 배우는 것이라면 바로 그것으로 직접 뛰어 오십시오. 자바는 C와의 충분한 구문을 공유하므로 C++에 대해 걱정할 필요가 없다. 당신은 C++로 줄을 선다. C는 "타격을 부드럽게"하려고하지 않고 독자적으로 배우기에 충분합니다.

4

C++을 배우는 데 주로 관심이있는 사람은 표면적으로 매우 유사하지만 실제로는 아주 많이 다르기 때문에 C#을 배우지 마십시오.

관리되는 메모리 시스템을 사용하지 않는 프로그래밍 언어를 배우는 것이 좋습니다. 그 이유는 그러한 언어를 다룰 때 메모리 관리의 복잡함을 스스로 배워야하기 때문입니다. 오브젝트/구조체가 살거나 죽을 때 당신에게 달려 있기 때문에 가비지 컬렉터에 대한 모든 것을 의지 할 수는 없습니다.

C는 매우 작은 언어로 C++보다 배우기가 더 빠르지 만 궁극적으로 현대적인 객체 지향 언어를 사용하고 배우고 싶다면 C에서 나쁜 습관을 찾아 낼 수 있습니다. C를 먼저 배우는 것은 필수 사항이 아닙니다.

내 궁극적 인 권장 사항은 곧바로 C++로 이동하여 느낀다.

나는 D가 C++에 부드러운 전환을 제공 언어 아마 D.

개념을 제외하고, C 거의 유일하다 ++ 생각하지 않습니다

0

:

  • RAII -> 결정권적인 자원 관리는 사용하기에 잘못하고 사소한 것을 사용하기가 어렵습니다. C#이나 C에서는 수동 리소스 관리 만 배울 것입니다.
  • 템플릿 메타 프로그래밍 -> 컴파일시 튜링의 완성도. 대부분의 프로그래머가이 기능을 필요로하지는 않지만 덜 일반적입니다. 대개는 이것을 라이브러리 형태로 찾을 수 있습니다 (가장 눈에 잘 띄는 예제 : 표현식 템플릿)
  • 오리 유형의 일반 프로그래밍 -> C++은 많은 유형 불가지론 알고리즘 및 컨테이너와 함께 제공됩니다. C# 제네릭은 엄격하게 입력되며 클라이언트에 대한 제한이 더 있습니다.
  • 다른 패러다임 : 절차 지향, 객체 지향, 일반 및 기능 프로그래밍 비트. C#, Java 및 C는 그 중 일부만 가르칩니다. C++에서는 가장 적합한시기를 배울 수 있습니다.
  • const 정확도 및 올바른 라이브러리입니다. 그 정말 진짜 차이를 소중히하지 않기 때문에

나는 많은 프로그래머가 에 C 번호에 대한 C의 비교 ++ 또는 C를 감소시키지 좋아한다, "당신도 C#에서 포인터를 가질 수 있습니다."

관련 문제