Skip to content

프로그래밍 언어 #

Find similar titles

9회 업데이트 됨.

Edit
  • 최초 작성자
    Hyungyong Kim
  • 최근 업데이트
    jhkim

Structured data

Category
Programming

프로그래밍 언어 정의 #

컴퓨터 과학의 한 분야로 컴퓨터에게 효과적으로 일을 설명하고자 하는 언어. 프로그래밍 언어는 저급언어(Low-level Language)와 고급언어(High-level Language)로 분류하며 저급 언어와 고급 언어 간의 경계는 분명하지 않다. 일반적으로 사용하기 편하고 문법이 자유로운 언어일수록 고급언어라 표현한다.

프로그래밍 언어 분류기준 #

컴퓨터의 CPU(Central Processing Unit, 중앙처리장치)는 몇 개의 간단한 연산을 수행할 수 있는 명령 집합으로 이루어져 있다. CPU에 내장된 기본 연산 명령은 CPU가 직접 해독할 수 있도록 2진 혹은 10진의 기계어 형태로 되어 있으며, 단순한 산술/비교 연산 처리만을 지원하기 때문에, 사람이 원하는 복잡한 연산을 위한 명령을 기계어로 구현하는 것은 매우 어렵다. 프로그래밍 언어는 이러한 CPU의 명령 집합을 사람이 더 편하게 이해하고 읽을 수 있는 형태로 나타낸 것을 말한다.

사용 주체에 따른 분류 #

프로그래밍 언어는 언어 사용 주체에 따라 컴퓨터가 이해하기 쉽게 작성된 저급언어(Low-level Language)와 사람이 이해하기 쉽게 작성된 고급언어(High-level Language)로 분류할 수 있다. 고급언어는 가독성이 높고 사용이 편리하기 때문에 현재 대부분의 프로그래머가 고급언어를 사용하고 있으며, Python, C, C++, 자바, , 루비 등 대부분의 인기 있는 프래그래밍 언어들이 이에 포함된다. 저급언어는 실행 속도가 빠르고 컴퓨터 제어가 가능하다는 장점이 있으나 배우기 어려우며 유지보수가 힘들다는 단점이 있으며, 일반적으로 기계어와 어셈블리어(Assembly Language)를 일컫는다.

저급언어 #

기계어 및 어셈블리 언어와 같은 저수준 언어는 컴퓨터의 하드웨어 아키텍처를 근접하게 표현하며 CPU에서 직접 이해할 수 있다. 이러한 언어는 하드웨어 리소스 및 실행 속도에 대한 정확한 제어를 제공하므로 운영 체제 또는 장치 드라이버와 같이 성능이 중요한 작업에 적합하다. 그러나 복잡한 특성으로 인해 고급 언어에 비해 배우고 유지하기가 더 어렵다.

고급언어 #

프로그래머가 저급언어의 세부 사항에 대해 걱정하지 않고 코드를 더 쉽게 작성할 수 있도록 한다. 추상화를 통해 보다 사용자 친화적으로 설계되었다. 이러한 언어는 인간의 언어에 가깝고 표현력이 풍부하여 프로그래머가 보다 자연스럽고 직관적인 방식으로 코드를 작성할 수 있다. 생산성, 가독성 및 유지 관리성을 향상시켜 대부분의 소프트웨어 개발 작업에서 선호하는 선택이다.

실행에 따른 분류 #

고급언어의 경우 낮은 단계 언어로 번역하고 구동하는 방식에 따라 컴파일(Compile) 언어와 인터프리터(Interpreter) 언어로 다시 구분할 수 있다. 컴퍼일 언어는 컴파일러(Compiler)에 의해 원시코드를 실행 가능한 형태의 기계어로 미리 번역하는 빌드 과정이 있으며, 구동하는 시간이 오래 걸리지만 구동된 이후는 하나의 패키지로 빠르게 작동하는 특징이 있으며, 인터프리터 언어는 구동 단계에 변역기(Interpreter) 에 의해 소스코드를 바로 번역해 실행코드로 변환하기 때문에 실행속도는 느리지만 빌드 과정 없이 바로 실행 가능하다는 특징이 있다. 빌드 과정이 필요한 C, C++, Java 등이 대표적인 컴파일 언어이고, R, Python, Javascript와 같은 스크립트 형태의 언어들이 인터프리터 언어에 속한다.

그 외에도 절차와 활동의 관점에 따라 절차 지향 언어와 객체 지향 언어로 분류할 수 있다.

절차 지향 언어 #

프로그램이 데이터를 조작하는 일련의 절차 또는 루틴으로 구성되는 절차 프로그래밍 패러다임을 따른다. 이러한 언어는 수행할 일련의 단계에 초점을 맞추고 더 작은 작업으로 나눌 수 있는 문제를 해결하는 데 적합하다. 절차 지향 언어의 예로는 C와 Pascal이 있다.

객체 지향 언어 #

데이터와 데이터 사이 작동하는 함수(메서드)와 함께 객체로 캡슐화되는 객체 지향 프로그래밍(OOP) 패러다임을 따른다. OOP는 보다 모듈화되고 조직화된 코드를 허용하고 상속, 다형성 및 캡슐화와 같은 개념을 촉진한다. 널리 사용되는 객체 지향 언어로는 Java, C++ 및 Python이 있다.

프로그래밍 언어의 역사와 전망 #

최초의 프로그래밍 언어를 1940년대 전자식 컴퓨터가 발명되면서 사용되었을 것이라고 오해 할 수 있으나, 놀랍게도 19세기 초에 천공카드를 이용한 계산 장치에서 이미 기계어 형태로 사용되었다고 한다. 최초의 컴퓨터로 알려진 에니악이 개발 된 이후 전자식 프로그래밍 언어가 사용되기 시작하였으며, 1950년대 고급 프로그래밍 언어의 원조 격인 코볼과 포트란이 탄생하면서 이후 군사, 과학, 산업의 특정 분야에 특화된 프로그래밍 언어들이 발명되었다. 1980년 이후 컴퓨터의 보급이 보편화되면서 특정 분야에만 특정되지 않는 범용 소프트웨어를 위한 프로그래밍 언어들이 두루 발명되어 보급되었으며, 1990년 중후반에는 인터넷의 보급과 컴퓨터 성능의 발전으로 비주얼 중심의 언어들이 발명되어 다양한 분야에서 널리 사용되었다. 최근에는 빅데이터와 플랫폼 기반의 소프트웨어 개발을 위한 프로그래밍 언어들이 구글(Google), 아마존(Amazon) 같은 플랫폼 기업을 중심으로 배포되어 다양한 분야에서 사용되고 있다. 미래학자들은 미래에는 인공지능(AI, Artificial Intelligence)의 발전으로 자연어로 명령을 내리면 컴퓨터가 알아서 명령을 이해하고 수행하는 수준으로 발전할 것으로 전망하고 있다.

AI 및 자연어 프로그래밍 #

인공지능(AI) 및 자연어 처리(NLP)의 발전으로 사용자가 자연어를 사용하여 컴퓨터와 상호 작용할 수 있는 프로그래밍 인터페이스 개발에 관한 관심이 높아지고 있다. 목표는 사용자가 인간 언어로 자신의 의도를 표현할 수 있도록 하는 것이며, AI 시스템은 이러한 지침을 실행할 수 있는 코드로 자동 변환한다. 이 분야에서 진전이 있었지만, 완전히 실현된 자연어 프로그래밍은 여전히 복잡한 과제이다. 자연어는 종종 동일한 아이디어를 표현하는 여러 가지 방법을 가지고 있으며 문맥은 문장의 의미를 이해하는 데 중요한 역할을 한다. 게다가 자연어는 언어적 뉘앙스, 숙어, 문화적 참조에 민감하므로 컴퓨터가 정확하게 해석하기 어렵다. 이러한 문제를 해결하기 위해 자연어 프로그래밍 시스템은 정교한 NLP 알고리즘, 기계 학습 모델 및 교육을 위한 대규모 데이터 세트에 의존한다. 이러한 시스템은 정확성과 보안을 유지하면서 문맥을 이해하고, 단어와 구를 명확하게 하고, 동의어를 처리하고, 문장 구조의 변형에 적응해야 한다. 이러한 어려움에도 불구하고 자연어 프로그래밍의 잠재적 영향은 엄청나다. 프로그래밍을 민주화하여 다양한 배경과 산업 분야의 사람들이 더 쉽게 접근할 수 있도록 해야한다. 개발자는 복잡한 아이디어를 보다 자연스럽고 효율적으로 전달하여 생산성을 높이고 소프트웨어 개발을 가속화할 수 있다.

많이 사용되는 프로그래밍 언어 #

구글에서는 내부적으로 3가지 언어를 가장 많이 쓴다고 알려져 있다.

  1. C++
  2. 자바
  3. 파이썬

생물정보학 분야에서 분석과정을 자동화하는데 아래의 언어들을 많이 사용한다.

  1. 파이썬

Incoming Links #

Related People #

Related Data Sciences #

Suggested Pages #

0.0.1_20240318_1_v95