장기적으로 가장 좋은 방법은 무엇입니까?C, 오브젝티브 C, 아니면 C++?[닫은]

StackOverflow https://stackoverflow.com/questions/109937

  •  02-07-2019
  •  | 
  •  

문제

제가 정말로 다시 시작하고 싶었던 것은 C++ 프로그래밍이었습니다. 하지만 C++(기본적인 콘솔 프로그래밍 지식이 있음)로 돌아가야 할지 아니면 C나 Objective C를 살펴봐야 할지 잘 모르겠습니다.나는 장기적으로 좋은 편집기, 컴파일러 등과 같은 코딩의 용이성과 설정 및 실행이 가장 빠른 방법을 찾고 있습니다.

이에 맞춰 제안된 언어로 작업하기 위해 어떤 소프트웨어를 제안하시겠습니까?

[편집하다]

어떤 분들은 제가 하고 있는 일을 모르면 제안하기 어렵다고 하더군요.현재로서는 특별히 염두에 두고 있는 프로그램은 없습니다. 단지 장기적인 투자와 업무를 위해 또는 다른 분야로의 도약을 위해 이 세 가지 언어 중 하나로 시작하려고 합니다.

도움이 되었습니까?

해결책

저는 실제로 C와 C++에 대해서만 이야기할 수 있습니다.너무 많은 레거시 코드가 C와 C++에 있다는 유일한 이유라면 둘 중 하나를 배우는 것도 나쁘지 않을 것입니다.

Pure C는 운영 체제, 드라이버 개발 또는 임베디드 개발 환경을 위한 유일한 옵션인 경우가 많습니다.다른 용도로는 성능이 매우 중요한 경우, 즉 가능한 한 기계 내부에 "가까이" 있기를 원하는 경우가 있습니다.C의 이러한 응용 프로그램이 곧 사라질 것 같지 않기 때문에 C를 아는 것은 결코 나쁠 것이 없습니다.C는 또한 많은 *nix 애플리케이션의 "언어"이기도 합니다.따라서 많은 오픈 소스 프로젝트(apache/svn/cvs/etc)에 기여하려면 C를 아는 것이 필수 사항입니다.

내 경험에 따르면 C++는 C를 코딩할 때처럼 "기계에 가깝고" 싶지만 일부 OOP를 통해 더 높은 수준의 추상화를 포함하는 옵션을 원할 때 사용됩니다.C++의 가장 큰 강점이자 가장 큰 약점은 다중 패러다임이라는 것입니다.C에서 수행할 수 있는 거의 모든 작업과 다양한 객체 지향 기능을 제공합니다.예를 들어, 클래스를 생성하고 상속/다형성을 수행하는 동안 필요에 따라 "객체 지향"을 원하는 만큼 많이 최적화된 C 코드를 재사용할 수 있습니다.함수형 프로그래밍을 혼합하는 방법도 있습니다.

C++는 종종 너무 많은 사람들에게 너무 많은 것을 제공하려고 한다는 비판을 받습니다.비평가들은 모든 것을 다 하려는 시도로서 어느 것 하나도 잘하지 못한다고 말합니다.C++는 데스크톱 애플리케이션의 "언어"였지만 Java와 .Net은 실제로 많은 기업 사용자를 앗아갔습니다.그럼에도 불구하고 성능과 C++에서만 사용할 수 있는 추가적이고 유용하며 일반적으로 목적에 맞는 기능을 모두 사용하는 많은 응용 프로그램에서는 C++를 선택합니다.

다른 팁

주로 Windows에서 작업한다면 C++를 추천합니다.Microsoft는 새로운 C++/CLI와 기본 C++ 컴파일러를 개발하기 위해 많은 노력을 기울이고 있습니다.새로운 TR1 및 C++0X 추가를 통해 과거에 존재했던 많은 문제가 해결되었습니다.

나는 말하고 싶습니다 - 당신이 좋아하는 언어를 선택하고 한동안 그것을 고수하십시오.그 동안에는 알고리즘에 집중하세요.이는 프로그램의 구성 요소입니다.언어는 언어일 뿐입니다.

하나를 배웠거나 마스터한 경우 다른 언어로 전환하는 데 몇 주가 소요됩니다. 특히 동일한 언어 계열(예:C, C++, 오브젝티브 C, 자바, C# 등..)

언젠가 애플이 세상을 지배할 것이라고 생각한다면 Objective C.

지금은 iPhone Cocoa 개발이 제자리라고 생각합니다.개인적으로 Obj-C입니다.

실제로 무엇을 할 것인지 먼저 묻지 않은 답변은 무시할 수 있습니다.해당 정보가 없으면 대답은 틀렸거나 오해의 소지가 있거나 단순히 관련이 없습니다.

내 의견:

표시된 세 가지 선택 중에서 가장 좋은 초기 베팅은 아마도 C일 것입니다.C를 알고 그 단점을 이해하고 능숙하게 사용하게 되면 C++ 또는 Objective-C를 배우는 것이 매우 쉬울 것입니다.(가장 어려운 점은 객체 지향 측면에 있을 것입니다.)

현재는 Objective-C를 사용하고 있습니다. 가장 자주 하지만 Objective-C용 GNU 도구가 존재하고 GNUStep에서도 지원된다는 사실을 잊어버리는 사람들이 있습니다.(현재 Mac OS X는 이전 NextSTEP에 크게 기반을 두고 있으며 GNUStep은 거의 복제품입니다.) 그러나 Objective-C의 문제는 이 두 환경 외부에서는 널리 사용되지 않는다는 것입니다. 좁은 환경.(그리고 다른 최신 OO 언어와 마찬가지로 Obj-C를 사용하면 실제 기본 구문/어휘 규칙보다 프레임워크 클래스를 배우는 데 훨씬 더 많은 시간을 할애하게 됩니다.)

저는 주로 C# 개발자입니다.그것은 내 청구서를 지불하고 아주 훌륭하게 수행합니다.C#은 목록에 없었는데 그 이유를 알 것 같습니다.금속에 더 가깝고 덜 추상적인 느낌을 원하는 것 같습니다.나는 그것을 이해합니다. 그리고 그것이 장기적인 경력 성장을 위한 올바른 선택이라고 생각합니다.나는 내 코드와 상자 사이의 수많은 추상화(처음에는 전문적으로 Java, 다음에는 VB6, 그 다음에는 .NET)로 시작했고, 그 결과 지금은 여가 시간에 나머지 부분을 "따라잡기" 위해 열심히 일하고 있습니다. 세계 -- 저는 현재 이런 일을 겪고 있습니다. K&R 도서.물론, 나는 금속에 그렇게 가까이 접근할 전문적인 필요는 없습니다. 그러나 나는 가능한 한 최선을 다해 기계를 이해해야 할 개인적 필요성을 느낍니다.

(게다가 아이러니하게도 저는 Objective-C를 통해 Cocoa 개발로 돌아가려고 합니다.나는 몇 년 전에 그것을 퍼팅하곤 했는데 지금은 그것을 "얻을" 수 있는 더 나은 위치에 있다고 생각합니다.나는 개인적으로 C에 대한 사전 지식이 Objective-C로의 전환을 훨씬 더 쉽고 원활하게 만들고 내 코드에 메모리 관련 버그가 발생할 가능성을 줄여줄 것이라고 생각합니다!)

결국, C에 대한 기존 지식을 갖고 있는 것은(분명히 나에게는 필요하지 않았지만) 매우 좋은 일이며 아마도 시간이 지남에 따라 다른 언어로 이동하게 될 것입니다. ~ 할 것이다 OS, 드라이버 또는 임베디드 작업을 수행하지 않는 한) 더 쉽고 원활하게 수행하십시오.나는 "당신은 그것 없이는 살아갈 수 없다"고 말하는 것이 아니라 당신의 질문이 표현된 방식에 기초하여 말하는 것입니다 ...나는 그것이 그 시나리오에 대한 정답이라고 생각합니다.

나는 귀하의 질문을 약간 다르게 보고 궁극적으로 Objective-C를 배울 것을 제안합니다.여기에는 몇 가지 이유가 있습니다.

첫째, Obj-C는 일반적으로 C++와 같은 언어로 구현되므로 OO 모델을 보는 매우 다른 방식을 가지고 있습니다.Obj-C는 Smalltalk를 기반으로 하며 모든 "메서드 호출"은 적절한 객체로 전송되는 메시지로 구현됩니다.이 프로그래머 덕분에 이것을 매우 흥미롭고 강력한 기술로 확장할 수 있었습니다.새로운 언어를 배우는 이유 중 하나는 항상 사물이 어떻게 작동하는지에 대한 관점을 확장하는 것입니다. Obj-C는 이 점에서 C나 C++보다 훨씬 더 많은 잠재력을 가지고 있습니다.

둘째, 적어도 Mac의 Obj-C는 탁월한 툴체인을 갖춘 매우 강력한 프레임워크를 갖추고 있습니다.C와 C++는 실제로 모든 플랫폼에서 동일한 응집력 있는 프레임워크를 갖고 있지 않습니다. 하지만 Microsoft는 아마도 구현에 있어서는 근접할 것입니다.Cocoa로 작업하는 것만으로도 Obj-C가 훌륭한 언어라는 것을 확신할 수 있었습니다.도서관은 정말 세심하게 계획되어 있고 매일 그 도서관을 사용하는 사람들을 부러워하게 만듭니다.

셋째, Obj-C는 C의 상위 집합이므로 이를 학습하면 이미 C의 구문에 익숙해질 것입니다.또한 C 표준 라이브러리는 매우 빈약하며 매우 빠르게 배울 수 있습니다.C++는 약간 더 좋습니다. 부스트를 사용할 수 있지만 부스트는 코코아만큼 응집력이 없습니다.

궁극적으로 우선순위가 무엇인지 결정해야 합니다.새로운 것을 배우고 싶다면 Obj-C를 선택하세요.

당신이하고있는 일에 따라 다릅니다.하나를 선택해야 한다면 C++를 선택하겠습니다.Obj-C보다 크로스 플랫폼이 더 많고 C보다 고통이 적습니다.하지만 Mac 프로그래밍을 하고 있다면 Objective-C를 알고 싶을 것입니다.임베디드 프로그래밍이나 커널 해킹을 하고 있다면 아마도 C를 사용하고 싶을 것입니다.

C++를 사용하지 않고 대신 C나 Objective C를 사용하는 이유가 있나요?C++는 현재 단연 가장 광범위한 커뮤니티와 가장 큰 기존 코드베이스를 보유하고 있으며 세 가지 기능 모두에서 가장 뛰어난 기능을 갖추고 있습니다.그것이 사실이 아니라고 생각한다면 명확히 해주십시오(진지하게, 저는 정말 관심이 있습니다).

게다가 C++는 .NET 측면에서 MS가 지원하는 유일한 것입니다(물론 언젠가 .NET으로 마이그레이션할 계획이라면).

C로 시작한 다음 객체 지향이 필요한 경우 지식을 C++로 확장할 수도 있습니다.Objective C는 Apple 개발자들만 들어본 적이 있는 Apple Script와 같은 모호한 것입니다. 해당 언어를 사용하면 멀리 가지 못할 것입니다(해당 언어 팬에게 불쾌감을 주지 않습니다).

C는 C++에 비해 배우기 매우 쉬우며 나중에 배우고 싶은 다른 언어(특히 C++)에 대한 기초 지식도 풍부합니다.

Loren Segal의 답변과 관련하여 C와 C++ 중 하나를 선택하려는 경우 원하는 작업은 중요하지 않습니다.그것은 단지 선호의 문제입니다.둘 다 모든 것을 위한 라이브러리를 가지고 있으며(C++ 라이브러리는 종종 C 라이브러리를 둘러싼 객체 지향 래퍼이기 때문에) 둘 다 거대한 커뮤니티, 안정적인 IDE 및 컴파일러를 가지고 있습니다.

인텔은 프로세서에 대해 실행하기 위해 C++ 라이브러리에 많은 투자를 하고 있습니다.최근에는 인텔이 PC 프로세서 세계를 장악하고 있는 것 같으니 괜찮은 선택인 것 같습니다.

Pure C는 당신이 집중하는 다른 프로그래밍 언어에 상관없이 가지고 있는 좋은 기본입니다.특히 Objective-C는 잡담 아이디어가 위에 뿌려진 기본적인 C 코드입니다.C++가 C와는 거리가 먼 모험을 시도하더라도 내 생각에는 C가 알아야 할 가장 유용한 언어라는 점은 여전히 ​​분명합니다.Objective-C에서는 종종 C로 드롭다운됩니다.Ruby, Python, Erlang 및 수많은 다른 언어에서도 C 모드로 전환되는 경우가 많습니다.이는 또한 여러분이 터치하는 모든 컴퓨터에서 항상 사용할 수 있다고 믿을 수 있는 언어이기도 합니다.

따라서 모든 프로그래머는 C를 알아야 한다는 것이 내 개인적인 견해입니다.적어도 조금.

저는 10년 정도 C++ 개발자로 일한 후 최근에 Objective-C(Cocoa를 가지고 놀기 시작했기 때문에)를 배웠습니다.

실제 프로젝트에서는 Objective-C를 사용하지 않을지라도 C++와 함께 Objective-C를 배우는 경험이 매우 유익하다는 것을 알았습니다.

Objective-C와 C++ 모두 C 위에 객체 지향 프로그래밍 계층을 추가합니다.그러나 그들은 거의 완전히 반대되는 방식으로 이를 수행합니다.C++가 하나의 디자인 결정을 내릴 때마다 Objective-C는 반대의 선택을 한 것 같습니다.예를 들어 C++에서는 정적 타이핑을 사용하는 반면, Objective-C에서는 동적 타이핑을 사용합니다.또는 (최근) Objective-C는 C++에서 사용하지 않는 가비지 수집을 사용합니다.

이를 통해 저는 객체 지향 프로그래밍의 개념과 이와 관련된 디자인 선택을 훨씬 더 나은 방식으로 이해하게 되었습니다.

Windows 운영 체제에만 집중하고 싶다면 다음으로 직접 시작하는 것이 좋습니다. C#(.Net 프레임워크)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top