on
C++과 JAVA의 차이점 뭘 공부해야될까?
C++과 JAVA의 차이점 뭘 공부해야될까?
C++과 JAVA의 차이점 뭘 공부해야될까?
많은 사람들이 프로그래밍 언어를 처음 공부할 때 C , C++ , Java 많은 종류의 언어를 보고 도대체 뭘 공부해야 하는지 물어보고 고민합니다. 오늘은 C와 C++ 그리고 Java의 차이점에 대해서 간략하게 설명하겠습니다. 우선 가장 쉬운 요약으로는 C는 순차 지향 언어, C++ 객체 지향 언어, 동적 메모리 관리, Java는 객체 지향 언어, 동적 메모리 가비지 컬렉션 관리 이렇게 간단하게 설명이 가능합니다 이게 무슨소리냐면 C++가 C의 대집합에 가깝고 둘 다 빌드 모델과 런 모델이 비슷하다는 점을 제외하면 C와 C++는 다릅니다. C는 절차적 패러다임을 중심으로 한 언어인 것 같습니다. 상대적으로 C++는 C와 거의 동일한 성능을 유지하면서 객체 지향, 범용 프로그래밍 및 메타 프로그래밍과 통합된 방대한 언어입니다. 이전에는 C와 C++ 둘 다 언어 표준에서 다중 스레드를 가지고 있지 않았지만, C++는 원자 및 스레드의 추가와 함께 명시적으로 동시성을 인식하는 언어로 바뀌었다. C++의 목표는 절차적 패러다임 이외의 패러다임을 지원하는 동시에 시스템 소프트웨어를 작성할 수 있는 충분한 성능을 보장하는 한편, 사람들이 보다 복잡한 문제를 해결하고 소프트웨어 관리를 쉽게 관리할 수 있도록 지원하는 것으로 보입니다. "성과를 보장하면서" 모든 종류의 목표를 달성해야 하기 때문에 매우 복잡한 언어라고 생각합니다. 적어도 내가 연주한 7~8개 언어 중에서 가장 복잡하고 마스터하기 어려운 언어이다. C++와 JAVA는 구문적 유사성이 있다는 점을 제외하고는 매우 다릅니다. 가비지 컬렉션의 유무와 중요한 차이이지만, C++에서 스마트 포인터가 기본으로 제공되므로 C++가 메모리 관리를 직접 "해야" 한다고 말하기는 어렵습니다. "할 수 있습니다"는 여전히 유효합니다. OOP도 비슷한 것 같아요. C++ 에는 여러 상속이 있으며 JAVA가 없지만 JAVA는 여러 인터페이스를 상속하고 구현합니다. 하지만 일반적인 프로그래밍과는 조금 다릅니다. JAVA generic은 기본적으로 기본 개체의 메서드 또는 인터페이스만 사용하는 코드를 작성하여 수행됩니다. 이는 컴파일러/런타임이 코드의 모든 메서드를 사용할 수 있다고 가정할 수 있으며 그렇지 않으면 이 일반 메서드 또는 클래스를 인스턴스 화하는 데 클래스 인스턴스를 사용할 수 없음을 의미합니다. C++는 템플릿 코드가 부족하며 인스턴스 화가 되면 컴파일러는 코드의 템플릿 매개 변수(또는 메타 템플릿 매개 변수)에 있는 실제 인수를 대체하고 통과 여부를 결정합니다. 코드가 단순한 한 문제가 되지 않지만, 현실적인 템플릿 구현은 대개 길고 복잡합니다. 템플릿의 템플릿, 템플릿의 템플릿... 또한 템플릿의 템플릿을 템플릿 매개 변수로 입력할 수도 있습니다. 이 경우 클라이언트 코드에 지정된 유형으로 길고 복잡한 코드를 모두 만족시키는 것은 쉽지 않으며, 두 번째 코드가 만족되지 않을 때 컴파일러에서 이해하기 쉬운 오류 메시지를 표시하는 것도 사소한 일이 아닙니다. 매우 간단한 예로, std::vector ving++를 들 수 있으며, 벡터 API를 사용해 보십시오. 제가 알기로는, 자바에는 이러한 프로젝트가 거의 없지만, C++가 컴파일러에서 뱉어낸 템플릿 관련 오류를 사람이 읽을 수 있는 형태로 변환하는 몇몇 심각한 프로젝트들이 있었습니다. 프로그래머 입장에서는 표준 라이브러리의 데이터 구조와 알고리즘을 사용자 정의 형식으로 얼마나 쉽게 확장할 수 있는지와 관련이 있다고 생각합니다. 예를 들어 사용자 지정 클래스를 JAVA의 해시 테이블에 삽입하는 것은 쉽지만 C++에서 사용자 지정 템플릿 클래스를 만들어 stl 컨테이너/알고리즘에 삽입할 때 이상한 오류가 발생하는 경우가 흔합니다. 저는 개인적으로 C++를 JAVA보다 훨씬 더 오래 했고 잘합니다. 마지막으로 C++는 템플릿이 메타프로그래밍을 지원하는 수준에 도달했으며 JAVA 제네릭은 C++ 템플릿의 표현력이 없다고 생각합니다. 그러나 C++는 런타임에 타입 정보를 전달하지 않고 다양한 제한이 있기 때문에 C++ 메타 프로그래밍이 C++ 프로그래밍보다 훨씬 복잡하다고 해도 틀린 말은 아닙니다.
공유하기 글 요소 저작자표시
from http://sayyyy.tistory.com/18 by ccl(A) rewrite - 2021-10-13 23:01:30