카테고리 보관물: Software

Software

오늘날 C ++의 역할은 무엇입니까? C ++을 배우는

현재 저는 IT 학생이며 오늘날 C ++에서 여전히 중요한 것이 무엇인지 궁금합니다. 어떤 용도로 사용됩니까? 대학에서 기본 C ++ 과정을 수료했지만 지식을 어디에서 사용할 수 있고 C ++을 배우는 방향을 상상할 수 없습니다.

다시 말해 성공적인 C ++ 프로그래머가되기 위해 무엇을 배워야합니까?

현재 C ++이 어떤 영역에서 유용 할 수 있는지 명확하게 알지 못하기 때문에 Java를 배우고 있지만 Java 프로그래머로 어떤 종류의 작업을 수행 할 것인지 분명히 알고 있습니다. 그러나 여전히 C ++이 죽지 않기를 바랍니다.



답변

C ++의 킬러 기능은 범위 제한 리소스 관리 , SBRM (일반적으로 ” RAII “라고 함)입니다. 이 개념을 기반으로 하는 유일한 산업용 프로그래밍 언어입니다. C ++에서 모든 객체의 수명은 정확히 알려져 있으며 (잘 작성된) C ++ 프로그램은 리소스가 완전히 결정적인 방식으로 수집 및 해제되도록 보장합니다. 이에 비해 가비지 수집 또는 관리 언어는 그러한 보증을 제공하지 않습니다. 실제로 해당 언어의 객체는 수명이 다한 후에도 지속될 수 있습니다.

이것이 C ++이 금융, 비디오 게임, 고성능 임베디드 및 실시간 시스템, 운송, 제조 및 결정론과 정밀도가 중요한 기타 산업에서 사용되는 이유입니다. 대안이 없습니다.

물론, 이것보다 많은 작업에 사용되었으며 이러한 작업은 C # 및 Python 및 기타 더 적합한 언어로 손실되지만 핵심 틈새에는 영향을 미치지 않습니다.


답변

C와 C ++에는 몇 가지 시장이 있습니다 (제한적인 이해는 있지만)

  1. 기존 코드 C와 C ++에는 가장 큰 기존 코드베이스가 있습니다. 이 크기의 코드는 단순히 “다음으로 새로운 언어”가 등장했기 때문에 그냥 버릴 수 없습니다. C 바인딩은 대부분의 플랫폼에서 언어 간 상호 작용의 표준과 거의 비슷하므로 C 또는 C ++에서 랩퍼 라이브러리를 작성하는 것이 유용합니다.
  2. 고성능 애플리케이션 (예 : 고주파 금융). C 및 C ++는 여전히 대부분의 다른 프로그래밍 언어보다 전반적인 성능을 향상시킵니다. C ++에서 가장 중요한 것은 템플릿과 같은 컴파일러 전용 항목으로 추상화를 작성하는 경우가 많으며 런타임에서 컴파일 시간으로 계산을 이동하여 전반적인 응용 프로그램을 더 빠르게 만듭니다.
  3. (2와 유사) 낮은 대기 시간 응용 프로그램. 예를 들어 CLR 또는 JVM에서 실행되는 언어는 응용 프로그램에 따라 C ++만큼 빠를 수 있지만 프로그램을 실행하려면 먼저 CLR 또는 JVM을 메모리에로드해야합니다. 하드 시작 요구 사항이있는 경우 중요합니다. 주석 편집 : 그 문제에 대한 모든 설명의 하드 대기 시간 요구 사항은 여기에주의하십시오. 가비지 수집을 실행하는 것이 결정적인 프로세스가 아니기 때문에 가상 컴퓨터에서 실행되는 언어는 어려운 시간 제한을 거의 제공하지 않습니다.
  4. 임베디드 시스템. 일부 임베디드 시스템에는 JVM (Google의 Android (실제로 JVM은 아니지만 가깝습니다), RIM의 Blackberry) 또는 CLR (Windows Phone)과 같이 실행할 하드웨어가 있지만 대부분의 임베디드 시스템에는 전원이 공급되지 않습니다. C 또는 C ++에 필요한 것보다 더 많은 런타임 지원이 필요한 언어를 실행하십시오 (런타임 지원이 전혀 없음).
  5. 배포가 제한된 응용 프로그램. 전체 프로그램이 수백 KB에 불과한 경우 JVM 또는 CLR 설치가 필요한 경우가 있습니다. (예를 들어 내가 작업하는 대부분의 프로그램 .EXE 어떤 종류의 설치 프로그램이나 그와 유사한 것없이 단일 파일 로 배포 해야합니다 .이를위한 대안은 없습니다)

답변

C ++은 여전히 ​​매우 유용하며 결코 죽지 않았습니다. 다른 프로그래밍 언어들 사이의 심각한 비교를 읽으려면 C, C ++, Java, Perl, Python, Rexx 및 Tcl의 실험적 비교를 확인하십시오 . 가장 업데이트되지는 않았지만 대부분의 일이 여전히 남아 있다고 생각합니다.


답변