본문 바로가기
IT만들기/Java

C#, C, C++ 프로그램 언어의 차이점

by 커피향처럼 2021. 7. 22.

자바 카테고리에 다른 프로그램 언어 글을 포스팅하는 이유는?
타 컴퓨터 랭귀지에 대한 카테고리가 없기 때문입니다. ^^
프로그램 언어에 대해 계속적으로 포스팅 할게 아니라서 그냥 이 카테고리에 포스팅하게 되었습니다.

프로그래밍 언어의 기원

유명한 프로그램 언어의 탄생을 간략하게 설명하면 1940년대에는 컴퓨터의 탄생과 함께 에니악 코딩 시스템 등의 기초적인 프로그램 언어가 탄생하였으며 1950년대에 컴퓨터 공학자라면 누구나 알고 있는(컴퓨터 공학자가 아니더라도) 포트란, 리스프, 코볼 등의 컴퓨터 역사에서 빠질 수 없는 유명한 언어들이 탄생합니다.
그리고 이제 설명하고자 하는 C 언어는 1972년  켄 톰슨과 데니스 리치가 AT&T 벨 연구소에서 만들었습니다.

C언어의 족보에 대해 짧게 설명하자면 1967년에 BCPL이라는 언어가 만들어 졌으며 이 언어를 계승하여 AT&T 벨 연구소에서 B 언어가 만들어집니다. B 언어를 보완, 발전시켜 C 언어가 탄생합니다.
C언어를 진화시킨 AT&T 벨 연구소의 비야네 스트롭스트룹가 C++ 언어를 1980년에 발표합니다.  
2000년도에 누구나 알고 있는 마이크로소프트웨어에서 C#(한국어: 시 샤프)을 만듭니다. C#은 C++과 JAVA 두 가지 언어의 장점을 모두 가지고 있는 언어입니다.

오래전 탄생한 C는 파이썬(python), PHP, 자바(java), 자바스크립트(javascript) 등 수많은 언어의 기반이 된 정말 중요한 프로그래밍 언어입니다.
여기까지 간략하게 C 언어의 족보를 살펴보았습니다.

C 언어와 C++ 언어의 차이

그럼 C 시리즈 3가지 언어, C, C++, C#의 각기 다른 차임점에 대해 알아보도록 할게요.

C는 절차지향언어로 함수형 언어라고 하며 C++는 객체지향적 언어입니다.
C는 순서에 입각해서 절차 되로 프로그래밍을 하며 함수를 만들어서 참조(연결) 시키기도 하면서 프로그래밍합니다.
함수를 사용하기 때문에 부분적으로는 모듈화가 되기도 합니다.
이렇게 절차되로 프로그래밍을 하게 되면 코드의 양도 많아지고 프로그램이 거대해지면서 관리가 어렵게 되어 이를 보완하고자 객체지향이라는 개념을 도입하여 C++ 이 탄생합니다.

객체지향이란 무엇인가?

객체지향의 특징은 캡슐화, 상속, 다향성입니다.

캡슐화

객체지향은 클래스 구현으로 어떤 특정 로직들을 캡슐화합니다. 
객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉합니다.

상속

이미 만들어진 캡슐화된 클래스를 가져다가 그 기능에 없는 기능을 추가하여 더 나은 로직을 만듭니다.
이미 만들어진 기본 기능에 살을 덧붙여 만듬으로 비용과 시간을 절감 할 수 있습니다.
각각 모듈로 만들어진 기능들을 가져다 사용함으로 재사용성 높아집니다.

다향성

동일한 객체지만 조건에 따라 다르게 동작하는 것을 말합니다.
예를 들어 "plus(a, b)"라는 함수를 만들었을 경우 a, b 입력 값이 숫자이면 a+b를 산출하게 되며 a와 b에 문자가 입력되면 "ab"라는 문자열로 결과를 리턴하는 등 같은 객체가 입력 값에 따라 다른 결과를 만들어되는 것을 의미합니다. 
C++ 언어로 함수형 언어처럼 프로그래밍을 할 수도 있습니다. C++은 C의 모든 개념을 가지고 있기 때문이죠. 하지만 C++을 사용하는 이유가 객체지향적 프로그래밍인데 함수형처럼 사용을 할 필요는 없겠죠. 절차 지향적 언어를 찾는 다면 C++ 이 아닌 C 언어나 러스트(Rust)와 같은 함수형 언어를 사용하는 게 나을 겁니다.

여기까지 보면 C와 같은 함수형 언어보다 C++ 같은 객체지향형 언어가 좋아보이지만 함수형 언어와 객체지향형 언어는 서로 장단점이 있습니다. 다음에 함수형 언어와 객체지향형 언어의 장단점에 대해 포스팅을 해봐야겠군요.
최근에도 새로운 함수형 컴퓨터 언어가 만들어지거나 계속 사용되고 있습니다.
순수 함수형 언어는 아니지만 파이썬은 함수형 언어에 가까운 프로그램 언어입니다.

C#은 C, C++과 다른 새로운 생태계

c#은 마이크로소프트가 심혈을 기울여 만든 닷넷 생태계의 주요 언어입니다.
C#은 C, C++과 다른 엔터프라이즈를 위한 언어이며 DBMS의 대표적인 오라클, 게임 등을 제외한 국내 모든 언어를 잠식한 JAVA와 같은 기업용 언어입니다. 
대부분의 국가 기관 시스템은 JAVA로 만들어져 있습니다. 해외에서는 C#, 닷넷과 다른 컴퓨터 언어가 주로 사용되지만 한국에서만큼은 업무용 프로그램의 90% 정도(어떤 자료에서 본듯하지만 정확한 비율은 아님, 게임 등이 아닌 업무용 프로그램의 비율임)로 사용되고 있습니다. 

JAVA에 대한 잡담

만약 프로그래밍에 관심이 있고 어떤 특정한 게임 등의 프로그램을 만들어 보겠다 하는 것이 아니면 삼성멀티캠퍼스, 비트소프트 등의 커리큘럼이 좋고 유명한 교육 기관에서 JAVA를 수료하면 많은 일자리를 찾을 수 있습니다.
저는 프리랜서로 일하고 있지 않지만 3년 정도 경력이 도어 프리랜서가 된다면 450만원 부터 받을 수 있습니다.
초급, 중급, 고급, 특급 기술자로 분류 되는데 정보처리기사를 취득하고 4년 정도 되면 중급 개발자로 500만 원 이상의 월급을 받을 수 있습니다. 
여담이지만 김대중, 노무현 시절 전자정부로 인해 공공 개발의 문턱이 낮아져 능력이 정말 너무 없구나 싶은 막말로 개나 소나 진입하게 되도록 되어 아무나 대충 해도 높은 임금을 받을 수 있는 구조가 되었습니다.
모든 산업기사, 기사 등의 국가 공인 자격증은 특정한 대학 과목 몇 가지를 이수해야 하는 등 전문성이 있고 시험도 어려운 편이나  그에 비해 정보처리기사 자격증은 그런 제한이 없고 타 시험에 비해 쉬운 편이기에 진입 장벽이 타 전문 업종에 비해 낮으며 그로 인해 시스템의 퀄리티가 현저히 떨어지는 상황입니다.

댓글