CS(ComputerScience)/프로그래밍언어

Fortran부터 C#까지 찾아나가는 여정(프로그래밍 언어의 역사4)

susong 2022. 11. 1. 22:07
728x90

C++

C++는 C에 증감연산자 ++가 붙은 친구로, 'C에서 기능 하나 더 하겠다!'라는 뜻이다.

그렇다면 도대체 무슨 기능을 더 구현했을까?

 

1985년 Bell Labdml Bjarne Stroustrup에 의해 제작된 언어 C++는 기존의 C 언어에 Simula67의 아이디어(OOP개념)을 포함하여 만들어졌다.

 

Simula 67이란?

노르웨이의 Kristen Nygaar)과 Ole-Johan Dahl가 1962년부터 1967년에 걸쳐 개발한 언어로 Algol 60의 확장판으로 제작되었다. 알골을 시뮬레이션에 사용하기 위하여 확장한 언어로 단어의 어원은 SIMUlation LAnguage이다.

 

기존의 C언어는 잘 작동했으나, 복잡한 사회문제를 해결하기 위해서 C가 가지고 있는 데이터 개념은 한계를 가질 수 밖에 없었고,

그래서 복잡한 사회문제를 효과적으로 해결할 수 있으며! 큰 프로그램 제작도 가능한 언어를 만들 필요가 생겼다.

C++는 실제문제를 해결하기 위해 만든 언어다!

 

C++는 세가지로 설명할 수 있는데

1. C언어에서 계승된 절차적 프로그래밍

2. Simula로부터 얻어온 객체지향 프로그래밍

3. 템플릿을 통한 일반화 프로그램이

 

대표적인 특징을 꼽으면 아래와 같다.

1. 다중 상속 

   - 저 친구도 인간이고, 나도 인간이니 둘 다 Human을 상속받자!

   - 혹은 나는 학생이며 인간이니 두 클래스를 상속받자!

2. 템플릿 : 두번 작성하지 않아도 되는 편안함

3. 연산자 오버로드 : 당신이 아는 +가 다른 의미일 수 있습니다! < 도요!

4. 예외 처리

5. 실행시 형 식별 : auto!

 

이렇게 설명하니까 머리가 아픈가?

실제로 배워보면 더욱 아프다. (혹시 배우고자하는 사람을 위한 링크1 링크2)


C #

C#은 C++++으로 불리기도 하는데, 말그대로 C++에서 하나 더 넣은 친구다

??? : 그만해

 

2000년 MS사에서 JAVA에 대응하기 위해서 만든 언어로, 원래는 MS에서 자바 확장언어를 만들다가 JVM 관련되어 특허권 분쟁으로 인해 만들게 된 언어이다.

(여담으로 원래 만들던 확장 언어의 이름은 J++이었다)

 

JAVA에 대응하며 나오다보니 JAVA가 제공하는 강력한 기반(JVM)과 유사한 기능을 가지고 있다.

그것이 바로 .NET이다. 이 친구도 가상머신 위에서 돌아가는데 덕분에 어떤 플랫폼이든 작동할 수 있는 큰 장점이 있다.

(하지만 이 때문에 조금 느리다, 물론 C++ / C에 비해서)

 

JAVA와 대응하기에 당연히 실행방식도 하이브리드 방식이다.

 

하이브리드 방식이란?

세상에는 크게 2가지 방식의 실행방법이 있다.

컴파일 방식과 인터프리터 방식!

컴파일 방식 : 컴파일러가 실행가능한 프로그램으로 바꾼 후! 실행한다.

예) 시험 전에 미리 다 공부해놓고 시험날 쭉쭉 문제풀기

대표 언어 : C, C++

인터프리터 방식 : 읽을 때마다 하나하나 보면서 실행시킨다.

예) 시험전까지 열심히 놀고 대충 봐놓고, 시험때 오픈북으로 열심히 찾으며 답쓰기 

대표 언어 : LISP, Prolog, Python

 

그런데, 왜 이렇게만 해야되는가? 둘의 장점만 조합하면 안될까? 싶어서 나온 것이 바로! 하이브리드 방식(JAVA, C# 같은 5세대 방식 채택)이다.

 

하이브리드 방식 : 많이 실행하는 부분은 JIT 컴파일러로 컴파일 해놓고 한두번만 실행되는 녀석들은 인터프리터로 실행하기!

예) 답안지에 10번 이상 써야되는 개념은 확실히 외워놓고 나머지는 그 자리에서 오픈북하자!

대표 언어 : JAVA, C#

 

* PPT 출처 : 한성대학교 김성동 교수님 <프로그래밍 언어론>

 

이렇게 만들어진 C#은 유니티 엔진 개발의 주 언어로 사용되면서, 그래픽으로 우리의 눈을 호강시켜주는데 큰 역할을 하고 있다.

 


이렇게 Fortran 부터 시작된 대장정이 막을 내렸다.

 

현대에 나온 다른 언어들도 다뤄보면 좋겠지만, 이번 시리즈는 여기에서 마치고 나중에 기회가 된다면 다뤄보고싶다.

 

[레퍼런스]

1. https://learn.saylor.org/mod/page/view.php?id=22022

2. https://www.computer.org/publications/tech-news/insider-membership-news/timeline-of-programming-languages

3. http://m.unhas.ac.id/rhiza/arsip/kuliah/Komputasi-dan-Pemrograman/history-prog-lang.pdf

4. https://redirect.cs.umbc.edu/courses/pub/WWW/courses/undergraduate/CMSC331/fall08/0101/notes/02/02history.pdf

5. https://www.academia.edu/26133559/History_of_Programming_Languages

6. https://www.hp.com/us-en/shop/tech-takes/computer-history-programming-languages

7. https://www.bocasay.com/evolutions-trends-programming-languages/

[강의]

1. 한성대학교 김성동 교수 "프로그래밍 언어론"

2. 국민대학교 강승식 교수 "프로그래밍언어론"

728x90