본문 바로가기

컴퓨터 과학

프로그래밍 언어

프로그래밍 언어는 어떤 소프트웨어를 작성하기 위한 언어인데 다양한 종류가 있으며 고급언어로 분류될수록 사람이 사용하는 언어와 비슷한 면이 많이 나타난다. 초기의 컴퓨터는 이러한 프로그래밍 언어 없이 개발되었다. 프로그래밍 언어에는 시기별로 세대가 있는데, 1세대 프로그래밍 언어, 2세대 프로그래밍 언어 그리고 1950년대에 3세대 프로그래밍 언어가 작성되었다. 4세대 프로그래밍 언어는 3세대 프로그래밍 언어에 추가로 내부 컴퓨터 하드웨어의 상세한 부분을 더 도급적으로 추상화시키는 것을 목적으로 한다. 5세대 프로그래밍 언어는 프로그래머가 작성한 알고리즘을 이용하지 않고, 프로그램에 주어지는 제약을 사용하여 문제를 해결하는 언어이다.



대표적인 프로그래밍 언어부터 하나씩 살펴보자.

내가 대학교에서 전공을 배우면서 가장 먼저 배운 프로그래밍 언어는 'C언어'였다. 난생처음 접하는 과목이기도 하고 동작하는 원리도 처음에는 이해가 잘 가지 않아 배우는데 애를 좀 먹었다.

C언어는 왜 C언어일까? C에는 어떤 의미를 가지고 있는데, A 순서로 A 언어부터 C언어 순으로 프로그래밍 언어가 발전해 왔다고 한다.

먼저 A 언어는 알고리즘을 의미하는 Algorithm Language의 영문에서 간략하게 정리하여 ALGOL이라고 불렸는데 초기에는 컴퓨터 하면 관련이 깊었던 것이 알고리즘이었기 때문에 이것에서 유래된 것이라 보인다. 현재는 특정 프로그래밍 언어를 지칭하는 것이 아니라, 구조화된 프로그래밍 언어를 지칭하는 용어로 이용한다.

B 언어는 '켄 톰슨'이 PDP-7으로 '유닉스'라는 운영 체제를 만들게 되었는데, 이 운영체제를 이후에 고급언어로 만들기 위해서 '마틴 리처드'의 BCPL(Basic Combined Programming Language)을 바탕으로 B라는 언어를 만들게 되었다. 하지만 B 언어는 그 당시에 자료형이 없었는데 C언어에서 추가가 된다.

C언어가 B 언어에는 없는 데이터 유형 개념을 추가하여 만든 언어인가. 이후 유닉스의 구현언어인 B 언어를 제치고 C언어로 구현된 유닉스가 만들어졌다.



컴퓨터 = 데이터 + 명령어라고 할 수도 있다.

간단한 데이터에 해당하는 부분은 아래와 같이 선언할 수 있다. 여러 가지 자료형이 있지만 일단 간단히 하나만 예시로 들겠다.

int age; // 정수형 데이터

그리고 이러한 데이터는 프로그램을 개발할 때 셀 수 없이 많이 선언되고 사용이 되는데 이러한 것들을 이제 활용하기 위해서는 컴퓨터에서 명령해야 한다. 프로그래머가 상위 레벨 지시문으로 프로그램을 작성한 뒤 컴파일러가 이것을 받아서 컴퓨터가 이해할 수 있는 기계어로 번역한다. 이러한 지시문을 하나의 어떤 형태로 묶어놓은 것을 함수(function)라고 하는데 그 예시는 다음과 같다.

function sum(){

    int a = 1;

    int b = 2;

    return =  a + b;

}

function의 괄호로 묶은 부분이 sum 함수라고 할 수 있다. 위 예시는 간단하게 a라는 변수와 b라는 변수를 덧셈 기능을 가진 함수이다. 함수는 특정한 동작을 하는 일반적인 형태로 정의해 놓은 지시문의 집합이다. 이것을 한번 작성해 놓으면 똑같은 동작이 필요할 때 같은 함수를 호출해서 같은 동작을 하게 할 수 있다. 이것을 보면 인간이 이해할 수 있을 만하게 구문이 작성되어 있는 걸 볼 수 있다. 이처럼 프로그램의 언어가 상위 레벨로 발전될수록 프로그램 언어는 인간의 언어에 가까운 형태가 되며 프로그램 언어의 학습과 프로그램의 구현을 보다 쉽게 할 수 있다. 그리고 함수에 동작마다 다른 입력값을 주어 결괏값을 다르게 출력해 낼 수도 있다. 이때 전달하는 데이터를 매개변수라고 한다. 함수에는 검색, 정렬, 입출력에 관련된 다양한 함수들이 있는데 이것을 표준함수라고 하며 개발자는 이러한 표준함수로 개발을 좀 더 빠르고 쉽게 할 수 있다. 이러한 표준함수들을 모아 놓은 것을 모듈이라고 한다. 그리고 더 나아가 이러한 모듈들을 모아둔 것을 라이브러리라고 하며, 개발자는 이러한 라이브러리를 호출시켜서 그 안에서 필요한 모듈을 불러내고 필요한 동작(함수)을 불러내어 개발하는 데 사용하는 식이다. 프로그래밍 언어 중에 하나의 예로 '자바'에 대해서 알아보도록 하자.



자바는 제임스 고 슬링과 함께 다른 연구원들이 함께 개발한 객차 지향 프로그래밍 언어이다. 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어이다. 이것 외에 모바일 앱을 개발하는 안드로이드 소프트웨어 개발에도 사용되기도 한다.

자바의 핵심 목표는 5가지가 있는데 다음과 같다.

1. 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.

2. 원격 코드를 안전하게 실행할 수 있어야 한다.

3. 네트워크 기능은 기본적으로 접근할 수 있어야 한다.

4. 개발된 같은 프로그램이 여러 운영체제에서 정상적으로 실행되어야 한다.

5. 객체 지향 방법론을 기초로 사용한다.



C언어는 절차적 프로그래밍 언어이고 JAVA는 객체 지향적 프로그래밍 언어다.

C언어는 C 소스 코드와 하위 호환성이 된다. JAVA는 다른 언어와 소스 코드 호환성은 없다.

문법에서의 특징은 C++은 이름 공간 레벨에 상수, 변수, 함수가 있을 수 있다. JAVA에서는 모든 상수, 변수, 함수는 클래스나 인터페이스에 속해 있어야 한다.

C++은 프로그래머가 연산자 오버로딩을 할 수 있지만. 자바는 문자열 연결에 쓰이는 "+"와 "+="만 오버 로딩되어 있다.

자바는 C++에 비해 더 방대한 라이브러리를 가지고 있다. C++의 표준 라이브러리는 문자열, 컨테이너, 입출력 등 비교적 범용적인 요소들만 제공하는데. 자바는 네트워크, 그래픽 사용자 인터페이스, 데이터베이스 접근, 암호학 등 다양한 것을 제공한다.

반응형

'컴퓨터 과학' 카테고리의 다른 글

소프트웨어 공학  (0) 2024.01.18
컴퓨터 해킹에 대하여  (0) 2024.01.15
알고리즘과 자료 구조 - 2  (1) 2024.01.13
알고리즘과 자료구조  (0) 2024.01.11
컴퓨터 과학의 첫 시작  (0) 2024.01.10