맨위로가기

범용 프로그래밍 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

범용 프로그래밍 언어는 다양한 종류의 작업을 수행하도록 설계된 프로그래밍 언어이다. 초기 프로그래밍 언어는 과학적 계산이나 상업적 데이터 처리를 위해 개발되었지만, IBM의 PL/I 이후로 과학 및 상업 프로그래밍 언어 간의 차이는 줄어들었다. 범용 프로그래밍 언어는 튜링 완전성을 가지며, C, C++, 파이썬 등이 대표적이다. 범용 언어는 광범위한 라이브러리를 활용할 수 있다는 장점이 있지만, 도메인 특화 언어에 비해 특정 작업에서 효율성이 떨어질 수 있다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 - 다중 패러다임 프로그래밍 언어
    다중 패러다임 프로그래밍 언어는 둘 이상의 프로그래밍 패러다임을 지원하며, 다양한 프로그래밍 스타일을 혼합하여 사용할 수 있도록 설계되었다.
  • 프로그래밍 언어 - 모조 (프로그래밍 언어)
    모조는 모듈러사에서 개발한 파이썬과 유사한 구문의 고성능 프로그래밍 언어로, AI 애플리케이션 개발에 초점을 맞추고 러스트의 영향을 받은 메모리 안전성을 제공하며 향후 오픈 소스로 전환될 예정이다.
범용 프로그래밍 언어
지도
기본 정보
유형프로그래밍 언어
특징광범위한 응용 분야에서 사용 가능
목적특정 작업에 국한되지 않고 다양한 프로그래밍 작업 수행 가능
설계 목표다양한 문제를 해결할 수 있는 능력
높은 수준의 추상화 지원
특정 하드웨어나 환경에 종속되지 않는 이식성
활용 분야
웹 개발웹 서버클라이언트 개발에 사용
소프트웨어 개발운영 체제, 게임, 응용 프로그램 등 다양한 소프트웨어 개발
과학 및 공학과학 계산, 데이터 분석, 시뮬레이션 등 복잡한 문제 해결
교육프로그래밍 학습에 사용
임베디드 시스템마이크로컨트롤러임베디드 시스템 제어
기타데이터베이스 관리, 네트워크 프로그래밍 등 다양한 분야에서 활용
예시
인기 있는 범용 프로그래밍 언어C
C++
Java
JavaScript
Python
Go
C#
PHP
Ruby
Swift
장점
유연성다양한 종류의 프로그램 개발 가능
이식성여러 운영 체제에서 실행 가능
생산성높은 수준의 추상화로 개발 시간 단축 가능
단점
성능특정 목적 언어에 비해 성능이 떨어질 수 있음
복잡성언어 자체의 복잡성으로 학습에 어려움이 있을 수 있음
특징 비교
특정 목적 언어특정 분야에 특화된 기능을 제공하며 성능 면에서 유리
스크립트 언어가벼운 코딩 및 빠른 개발에 초점, 인터프리터 방식으로 실행
컴파일 언어실행 전 기계어로 변환, 실행 속도가 빠름
역사
초기포트란
코볼
알골 등이 초기 범용 언어
발전C가 다양한 분야에서 사용되며 범용 언어의 표준으로 자리 잡음
객체 지향 프로그래밍 개념 도입 후 C++와 Java 등장
현재Python, JavaScript 등 다양한 범용 언어들이 웹, 데이터 과학, 인공지능 등 다양한 분야에서 활발하게 사용
참고 자료
참고 자료위키백과 (영문)
위키백과 (일본어)

2. 역사

초기 프로그래밍 언어는 컴퓨터 하드웨어와 마찬가지로 과학적 계산(수치 계산) 또는 상업적 데이터 처리를 위해 설계되었다.[1] 포트란(Fortran)과 알골(ALGOL)과 같은 과학용 언어는 부동소수점 계산과 다차원 배열을 지원했고, 코볼(COBOL)과 같은 비즈니스 언어는 고정 필드 파일 형식과 데이터 레코드를 지원했다.[1] IPL-V와 리스프(LISP)과 같이 기호 리스트 처리를 위한 언어, 문자열 조작을 위한 코밋(COMIT), 수치 제어 기계를 위한 APT 등의 특수 언어는 훨씬 덜 사용되었다.[1] 포인터 조작이 필요한 시스템 프로그래밍은 일반적으로 어셈블리어로 수행되었지만, 일부 군사 응용 프로그램에는 조비알(JOVIAL)이 사용되었다.[1]

1964년에 발표된 IBM의 시스템/360은 과학 및 상업 응용 프로그램을 모두 지원하는 통합 하드웨어 아키텍처로 설계되었으며, IBM은 과학, 상업 및 시스템 프로그래밍을 지원하는 단일 범용 언어로 PL/I를 개발했다.

PL/I 이후로 과학적 프로그래밍 언어와 상업적 프로그래밍 언어 간의 차이점은 줄어들었으며, 대부분의 언어는 두 가지 모두에 필요한 기본 기능을 지원하고, 특수 파일 형식 처리는 전문화된 데이터베이스 관리 시스템에 위임되었다.

1960년대부터 많은 특수 언어도 개발되었다.[1] 이산 사건 시뮬레이션을 위한 GPSS와 시뮬라(Simula), 프로그래밍 교육을 위한 MAD, 베이직(BASIC), 로고, 파스칼, 시스템 프로그래밍을 위한 C, 대화형 프로그래밍을 위한 조스(JOSS)와 APL/360 등이다.[1]

3. 범용 프로그래밍 언어 vs. 도메인 특화 언어

범용 프로그래밍 언어와 도메인 특화 언어(DSL)의 구분은 항상 명확하지 않다.[2] 특정 작업을 위해 만들어진 프로그래밍 언어가 원래 도메인을 넘어 사용되면서 범용 프로그래밍 언어로 간주될 수 있다. 예를 들어, 코볼(COBOL), 포트란(Fortran), 리스프는 (업무 처리, 수치 계산 및 기호 처리를 위해) DSL로 만들어졌지만 시간이 지나면서 GPL이 되었다. 반대로, 일반적인 용도로 설계된 언어가 실제로는 특정 영역에만 적용될 수 있다.[3] 범용 언어이든 DSL이든 문제에 적합한 프로그래밍 언어는 문제 영역에서 충분히 표현력이 있으면서도 필요한 세부 정보의 수준을 최소화해야 한다.[4] 범용 언어는 도메인 특정 표기법을 지원할 수 없는 반면 DSL은 다양한 문제 영역에서 이 문제를 처리하도록 설계될 수 있다는 점에서 "일반적"이다.[4] 애플리케이션 도메인이 자체 언어를 정당화할 만큼 충분히 이해되지 않은 경우에는 DSL보다 범용 언어가 선호된다. 이 경우, 해당 도메인에 적합한 데이터 유형 및 함수 라이브러리를 갖춘 범용 언어를 대신 사용할 수 있다.[5] DSL은 일반적으로 GPL보다 작은 범위의 추상화 표기법을 제공하지만, 일부 DSL에는 전체 GPL이 하위 언어로 포함되어 있다. 이러한 경우 DSL은 GPL의 표현력과 함께 도메인 특정 표현력을 제공할 수 있다.[6]

범용 프로그래밍 언어는 모두 튜링 완전하며, 이는 이론적으로 모든 계산 문제를 해결할 수 있음을 의미한다. 도메인 특화 언어는 종종 마찬가지로 튜링 완전하지만 그렇지 않은 경우도 있다.

3. 1. 장점과 단점

범용 프로그래밍 언어는 프로그래머들이 더 일반적으로 사용하는 언어이다. 2021년 연구에 따르면 가장 많이 사용된 프로그래밍 언어는 C, Python, 그리고 Java였다.[7] 범용 프로그래밍 언어를 사용하는 데 유리한 점 중 하나는 더 많은 사람들이 이러한 언어에 익숙하여 새로운 언어를 배울 필요가 없다는 것이다.

또한, 통계 분석, 기계 학습 등 많은 작업에는 광범위하게 테스트되고 최적화된 라이브러리가 존재한다. 이론적으로 이러한 라이브러리의 존재는 범용 언어와 도메인 특화 언어 간의 격차를 해소해야 한다.[4]

2010년의 실증 연구에서는 C#에는 익숙하지만 XAML에는 익숙하지 않은 사용자에게 문제를 제시하여 범용 프로그래밍 언어(GPL)와 도메인 특화 언어(DSL) 간의 문제 해결 및 생산성을 측정했다. 이 특정 도메인 특화 언어 사용자는 GPL에 더 익숙했음에도 불구하고 15% 더 나은 성능을 보여 추가 연구가 필요함을 시사했다.[4]

4. 주요 범용 프로그래밍 언어 예시

4. 1. C

C의 전신인 B는 주로 시스템 프로그래밍을 위해 개발되었다.[8] 반대로 C는 운영 체제, 장치 드라이버, 응용 프로그램, 임베디드 시스템 등 다양한 컴퓨팅 분야에서 사용되고 있다.

C는 표현의 간결성, 흐름 제어, 데이터 구조 및 풍부한 연산자 집합을 제공하지만 사용자가 특정 맥락에서만 사용하도록 제한하지 않는다.[9] 처음에는 유닉스 운영 체제의 커널을 다시 작성하는 데 사용되었지만,[10] 응용 프로그램 개발, 임베디드 시스템(예: 마이크로프로세서 프로그래밍), 비디오 게임(예: 둠) 등에 쉽게 적용되었다. 오늘날 C는 여전히 가장 인기 있고 널리 사용되는 프로그래밍 언어 중 하나이다.[11]

4. 2. C++

C++는 C의 확장으로 구상되었으며, 객체 지향 기능과 참조, 연산자 오버로딩, 기본 인수와 같은 편의 기능을 도입했다.[12] C와 마찬가지로 C++는 일반적인 특성 덕분에 광범위한 영역에서 사용될 수 있었다. C++의 주요 응용 분야는 시스템 프로그래밍이지만,[12] 데스크톱 응용 프로그램, 비디오 게임, 데이터베이스, 금융 시스템 등을 구축하는 데도 광범위하게 사용되었다.[13] 마이크로소프트(Microsoft), 애플(Apple Inc.), 블룸버그, 모건 스탠리(Morgan Stanley)와 같은 주요 소프트웨어 및 금융 회사들은 여전히 내부 및 외부 응용 프로그램에서 C++를 널리 사용하고 있다.[13]

4. 3. 파이썬(Python)

파이썬은 코드 가독성과 확장성을 강조한 언어로 고안되었다.[14][15] 비소프트웨어 엔지니어들이 쉽게 컴퓨터 프로그램을 배우고 작성할 수 있게 해주었고, 도메인 전문가들이 자신들의 사용 사례에 맞는 라이브러리를 쉽게 만들 수 있게 해주었다.[14][15] 이러한 이유로 파이썬은 광범위한 분야에서 사용되어 왔다.[16]

파이썬은 웹 개발, 과학 및 학계, 머신 러닝, 일반 소프트웨어 개발 등 다양한 분야에서 활용된다.[16] 예를 들어 장고플라스크 같은 프레임워크는 웹 개발에,[16] SciPy와 판다스는 과학 연구에,[17] scikit-learn과 텐서플로우는 머신 러닝 분야에서 사용된다.[18]

5. 범용 프로그래밍 언어 목록

다음은 몇 가지 범용 프로그래밍 언어이다.

참조

[1] 논문 Programming Languages: History and Future 1972-07-01
[2] 논문 Domain-Specific Languages: An Annotated Bibliography 2000-01-01
[3] 논문 Real time programming: special purpose or general purpose languages https://hal.inria.fr[...] 2006-05-01
[4] 논문 Comparing General-Purpose and Domain-Specific Languages: An Empirical Study http://www.doiserbia[...] 2010-05-01
[5] 논문 Little languages: little maintenance? https://onlinelibrar[...] 1998-12-01
[6] 논문 Domain-specific languages: an annotated bibliography https://dl.acm.org/d[...] 2000-06-01
[7] 웹사이트 The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data https://statisticsan[...] 2022-06-03
[8] 웹사이트 Cover sheet for technical memorandum https://www.bell-lab[...] Bell Telephone Laboratories 2022-06-03
[9] 서적 The C programming language http://worldcat.org/[...] Prentice Hall 2016-01-01
[10] 논문 The development of the C language https://www.bell-lab[...] 1993-04-01
[11] 웹사이트 TIOBE Index https://www.tiobe.co[...] 2022-06-03
[12] 서적 The C++ Programming Language Addison-Wesley 1995-01-01
[13] 웹사이트 C++ Applications https://www.stroustr[...] 2022-06-03
[14] 웹사이트 artima - The Making of Python https://www.artima.c[...] 2022-06-03
[15] 웹사이트 General Python FAQ — Python 3.10.4 documentation https://docs.python.[...] 2022-06-03
[16] 웹사이트 Applications for Python https://www.python.o[...] 2022-06-03
[17] 웹사이트 Programming Languages Popularity in 12,086 Research Papers – Quantifying Health https://quantifyingh[...] 2022-06-03
[18] 논문 Scikit-learn: Machine learning in Python https://www.jmlr.org[...] 2011-01-01
[19] 웹사이트 http://www-sop.inria[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com