A. Programming/Common

프로그래밍 언어 종류 - 2

_DK_ 2021. 7. 2. 12:00
반응형
아무도 당신에게 뭔가를 주지 않는다.
당신이 나서서 취해야 한다.
- 마틴 스콜세지 영화 "디파티드" 중


  지난 글에서는 프로그래밍 언어를 기계어, 어셈블리어, 컴파일 언어, 인터프리터 언어와 같이 종류를 나누어보았습니다. 자세한 내용은 아래의 이전 글을 참고해주세요.

[A. Programming/Common] - 프로그래밍 언어 종류 - 1

 

프로그래밍 언어 종류 - 1

시대를 움직이는 것은 원칙이 아니라, 사람들의 다양한 개성이다. - 오스카 와일드 우리의 생각을 말로 하려면 어떤 언어로 할지 정한 후 말을 해야 합니다. 영어만 알아듣고 한국어는 모르는 사

yongbba.tistory.com

 

 

  이번에는 다양한 언어들 중 현재 많이 사용되는 일부 언어들에 대해 조금 더 자세히 알아봄으로써 프로그래밍 언어에 대해 이해를 높여보려고 합니다.

 

 주요 프로그래밍 언어 종류

 

  매우 다양하고 많은 프로그래밍 언어들이 있지만 한 번에 너무 많은 언어들을 이해하기보다는 가장 많이 언급되고 사용되는 언어들 위주로 알아보려고 합니다.

 

 

 C언어

 

  C언어(공식 명칭은 'C'이지만 한국에서는 주로 'C언어'로 불림)는 A(ALGOL60), BCPL, B 등의 과정을 거쳐 개발된 유닉스(Unix) 운영 체제에서 사용하기 위해 개발된 프로그래밍 언어입니다. 유닉스는 어셈블리어로 작성되었었는데 CPU 변경으로 인해 매번 다른 어셈블리어로 개발을 해야 되는 문제점을 해결하기 위한 노력으로 탄생한 것이 C언어입니다.(유닉스는 우리가 흔히 사용하는 Windows나 MAC OS와 같은 운영체제의 한 종류로 여전히 일부 분야에서는 사용되고 있습니다.)

 

  어셈블리어를 대체하기 위한 목적으로 개발되었기 때문에 메모리와 하드웨어를 직접 제어하는데 특화되어 있으며, 임베디드 시스템이나 IoT(Internet of Things)와 같은 분야에서 강점을 가지고 많이 사용되고 있습니다. 이런 점은 C언어의 장점이자 단점이라고 볼 수 있는데, 메모리를 직접 관리함으로써 적은 자원으로도 고성능을 발휘할 수 있지만 다른 언어들에 비해 공부에 어려움이 있을 수 있습니다.(주변에서 프로그래밍 언어를 배우다 가장 많이 포기하는 시점이 C언어 포인터를 다루는 시점이었습니다.)

 

  여전히 가장 많이 사용하는 언어 중 하나이며, C언어를 어느 정도 다룰 수 있게 되면 다른 언어들에 대해서도 쉽게 이해할 수 있다고 생각합니다(현재 사용되는 대부분의 언어는 C언어의 영향을 받아 만들어졌습니다). 하지만 비전공자가 C언어를 독학하는 것은 굉장히 어려울 수 있으니 주의하시기 바랍니다.

 

  C언어는 절차적 프로그래밍(Procedural Programming) 언어인데, 이를 객체지향 프로그래밍(Object Oriented Programming)이 가능한 언어로 발전시킨 언어가 C++입니다(객체지향 프로그래밍과 절차적 프로그래밍의 차이에 대해서는 다른 글에서 한번 비교해보도록 하겠습니다). C++은 C를 포함하며 객체 지향을 지원하는 언어이며, 컴파일러도 C 컴파일을 지원합니다.

 

#include <stdio.h>

void main(int argc, char* argv[])
{
    printf("Hello, World\n");
}

// Hello, World 를 출력해준다.

 

  위의 예제와 같이 프로그래밍 언어는 모두 각각의 정해진 규칙에 따라 코딩이 되어야 합니다. C언어를 이용하여 프로그래밍을 하는 방법은 제 블로그 C 카테고리에서 조금씩 다뤄보도록 하겠습니다.

 

 

 자바(Java)

 

  가장 많이 사용되는 프로그래밍 언어라고 하면 항상 거론이 되는 언어가 자바(JAVA)입니다. 썬(SUN) 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어로 현재는 오라클(Oracle)이 썬 마이크로시스템즈를 인수하면서 오라클이 소유권을 가지고 있습니다. 대표적인 객체지향 프로그래밍 언어로 보통 C와 함께 가장 많이 거론되는 프로그래밍 언어입니다.

 

  아래와 같은 몇 가지들의 특징을 가지고 있으며, 매우 활용성이 높은 프로그래밍 언어입니다.

 

   - 객체지향 언어

   - 높은 이식성 : JRE(Java Runtime Environment)이 설치된 모든 운영체제에서 실행 가능하다.

   - 메모리 관리 효율성 : 가비지 컬렉션(Garbage Collection)을 통해 불필요한 메모리를 자동으로 정리해준다.

 

  이 외에도 다양한 장점들을 가지고 있으며 이런 점들을 바탕으로 2000년대 초반부터 2019년까지 프로그래밍 언어 중 계속 1위를 유지해 왔습니다.(최근에는 파이썬의 급성장으로 순위가 다소 밀렸지만 여전히 3위권에 있습니다.)

 

public class HelloWorld {
    public static void main(String args[]) {
        system.out.println("Hello, World");
    }
}

// Java에서는 class라는 개념이 매우 중요하다

 

  자바에 대해서는 이 정도로만 소개하고 추후 다른 프로그래밍 언어에 대해서 알아보는 과정에서 조금 더 알아보는 기회를 가져보려고 합니다.

 

 

 HTML / CSS

 

  HTML(Hyper Text Mark-up Language)은 웹 페이지의 모습을 기술하기 위한 규약으로 프로그래밍 언어가 아닌 마크업 언어입니다.

 

마크업 언어 : 문서가 화면에 표시되는 형식을 나타내거나 데이터의 논리적인 구조를 명시하기 위한 규칙들을 정의한 언어의 일종이다. 데이터를 기술한 언어라는 점에서 프로그래밍 언어와는 분명한 차이가 있다.
- 나무 위키

 

  데이터를 규칙적으로 기술하는 언어라고 볼 수 있으며, 아래와 같이 간단하게 작성이 가능합니다. 아래의 예제를 example.html과 같이 저장한 후 웹 브라우저에서 열어보면 "Hello, World"가 화면에 나올 것입니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
    </head>
    <body>
        <h1>Hello, World</h1>
    </body>
</html>

 

  HTML은 이처럼 웹 페이지 콘텐츠 안의 꺾쇠괄호(<>)에 둘러싸인 "태그(Tag)"로 되어 있는 HTML 요소로 작성이 됩니다. 이러한 태그들은 정해진 규칙에 따라 작성되어지고 그 태그들의 정보를 바탕으로 웹 브라우저에서 페이지를 나타내게 됩니다.

 

  CSS(Cascading Style Sheet)마크업 언어가 실제 표시되는 방법을 기술하는 언어로 HTML과 함께 주로 쓰입니다. 흔히 HTML은 몸체를 구성하고, CSS는 옷과 액세서리처럼 꾸미는 역할을 담당한다고 볼 수 있습니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <style type="text/css">
            h1 {
                color : red;
            }
        </style>
    </head>
    <body>
        <h1>Hello, World</h1>
    </body>
</html>

 

  두 번째 예제를 실행해보면 "Hello, World"가 빨간색으로 바뀐 것을 확인해 볼 수 있습니다. 여기서는 간단한 예제로 html 파일과 같이 기술하였지만, 보통은 .css 파일로 따로 생성하여 html에서 로딩하여 사용합니다.

 

  프로그래밍 언어가 아님에도 여기에서 이야기 한 이유는 다음에 나오는 자바스크립트에 대한 이해에 도움이 조금 더 되지 않을까 해서 작성해 보았습니다.

 

 

 자바스크립트(JavaScript)

 

  자바스크립트는 프로토타입(Prototype) 기반의 프로그래밍 언어이며, 스크립트(Script) 언어로 웹 브라우저 내에서 주로 사용됩니다. 웹 브라우저에 내장된 인터프리터를 통해 실행이 되며 HTML, CSS와 함께 웹을 구성하는 요소 중 하나입니다.

 

프로토타입 기반 프로그래밍 : 객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고, 클래스 기반 언어에서 상속을 사용하는 것과는 다르게, 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다.
- 위키백과

 

스크립트 언어 : 프로그래밍 언어의 한 종류로, 기존에 이미 존재하는 소프트웨어(애플리케이션)를 제어하기 위한 용도로 쓰이는 언어이다.
- 나무 위키

 

  자바스크립트의 정의에서 알 수 있듯이 스크립트 언어이기 때문에 특별한 개발 환경이 필요하지 않으며, 크롬이나 파이어폭스와 같은 웹 브라우저에서 개발자 도구를 제공하기도 합니다.

 

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
    </head>
    <body>
        <script>
            alert('Hello, World');
        </script>
    </body>
</html>

 

  위의 예제를 example.html로 저장하여 웹 브라우저에서 실행시키면 "Hello, World"가 적힌 팝업창이 생성이 될 것입니다. 여기서는 간단하게 팝업창을 생성해보았지만 자바스크립트의 기능은 HTML과 CSS로 만들어진 웹 페이지를 동적으로 움직일 수 있도록 해주는 것입니다. 보통은 .js 파일로 저장한 후 로딩하여 사용됩니다.

 

  처음 접하는 경우 이름 때문에 자바와 관계가 있는 것으로 생각하는 경우가 많은데, 인도와 인도네시아의 관계처럼 별 관계가 없습니다.(처음 자바스크립트를 만든 당시 자바의 유명세를 이용하기 위해서라는 말이 있습니다.)

 

  티스토리를 꾸미고 하는 과정에서 GitHub 등을 통해서 .js 파일을 받아 적용하는 경우가 있는데 이 파일이 자바스크립트로 만들어진 파일입니다. 앞으로 티스토리를 꾸미는 방법들을 기술하면서 자바스크립트가 필요한 부분이 있으면 함께 기술해 보려고 합니다.

 

 

 파이썬(Python)

 

 

  파이썬은 최근 가장 사랑받고 있는 프로그래밍 언어 중 하나로, 플랫폼에 독립적이며 인터프린터식, 객체지향적 언어입니다. 다양한 라이브러리 등이 존재하며 동적 타이핑(Dynamic typing, 실행 시간에 자료형을 검사한다)의 특성으로 인해 초보자들도 보다 쉽게 접근할 수 있는 장점들이 존재합니다.

 

  대표적인 인터프리터 언어이며, 비교적 쉬운 문법으로 인해 파이썬으로 프로그래밍 공부를 시작하는 사람이 많이 늘어나고 있습니다.(현대의 파이썬은 인터프린터 언어처럼 동작하지만 처음 실행 때 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음 실행 때부터는 빠르게 동작합니다.)

 

print("Hello, World")

 

  이처럼 간단하게 코딩을 할 수 있는 것이 가장 큰 파이썬의 장점입니다. 같은 객체지향 언어인 Java나 C++과 비교해서도 훨씬 간단하고 빠르게 같은 프로그램을 만들어 낼 수 있습니다.(다만 실행 속도의 문제는 존재하지만 하드웨어의 성능 향상과 파이썬 자체의 개선으로 인해 많이 줄었다고 생각합니다.)

 

  또한 최근에는 빅데이터(Big data), 인공지능(AI, Artificial Intelligence) 등의 분야가 중요하게 떠 오르고 있는데, 이 분야에서도 R과 함께 많이 사용되어지고 있습니다.

 

  개인적으로 프로그래밍을 처음 시작하는 사람들에게 가장 추천하는 프로그래밍 언어이며, 독학을 했을 때에도 가장 효율이 높은 언어라고 생각합니다(깊게 들어간다면 오히려 더 어려운 부분도 있다고 생각합니다). 제 블로그에서는 앞으로 파이썬을 이용하여 프로그래밍을 하는 부분에 초점을 맞추어 진행하려고 합니다.

 

 

 이외의 프로그래밍 언어들..


  앞서 언급한 프로그래밍 언어들 외에도 언급하지 못한 매우 다양한 프로그래밍 언어들이 존재하며 꾸준하게 사용되고 있습니다. 많이 접할 수 있는 언어들 위주로 기술하였기 때문에 여기서 이야기하지 않았다고 해서 잘 사용되지 않다거나 중요하지 않다는 뜻은 아닙니다.

 

  프로그래밍 언어에서 절대적인 우위를 가진 언어는 없다고 보며, 어떤 프로그램을 만들 것인지와 어떤 프로그램에서 사용할 것인지에 따라 그리고 개발자의 역량에 따라 언어는 선택되어진다고 생각합니다.

 

  만약 처음 프로그래밍을 하려고 하는 사람이라면 무엇보다도 일단 자신이 가장 흥미를 느끼는 프로그래밍 언어를 선택하여 코딩을 직접 해보는 것이 가장 중요하다고 생각합니다.(영어를 배울 때는 흥미가 너무 없었는데 아직도 발전이 없습니다...)

 

 

 

반응형