범용 프로그래밍 언어

General-purpose programming language

컴퓨터 소프트웨어에서 GPL(General-Purpose Programming Language)은 다양한 응용 프로그램 도메인에서 다수의 하드웨어 구성 및 운영 체제에 걸쳐 소프트웨어를 구축하기 위해 사용하도록 설계된 프로그래밍 언어입니다.이론적으로 GPL 프로그램은 단일 프로세서 또는 네트워크에서 동등하게 실행될 수 있습니다.범용 프로그래밍 언어의 반대는 도메인 고유의 프로그래밍 언어로, 예를 들어 데이터베이스 쿼리 등 특정 영역 내에서 사용하도록 설계되었습니다.예를 들어 SQL은 데이터베이스 쿼리를 위해 설계되었습니다.

역사

초기 프로그래밍 언어는 컴퓨터 하드웨어와 마찬가지로 과학 컴퓨팅(숫자 계산) 또는 상용 데이터 처리를 위해 설계되었습니다.FortranAlgol과 같은 과학 언어는 부동 소수점 계산과 다차원 배열을 지원했고, COBOL과 같은 비즈니스 언어는 고정 필드 파일 형식과 데이터 레코드를 지원했습니다.IPL-VLISP, 문자열 조작용 COMIT, 수치 제어 머신용 APT와 같은 전문 언어가 널리 사용되지 않았습니다.포인터 조작이 필요한 시스템 프로그래밍은 일반적으로 어셈블리 언어로 이루어졌지만, JOVICAL은 일부 군사 애플리케이션에 [1]사용되었습니다.

1964년에 발표된 IBM의 System/360은 과학 및 상업 애플리케이션을 모두 지원하는 통합 하드웨어 아키텍처로 설계되었으며, IBM은 과학, 상업 및 시스템 프로그래밍을 지원하는 단일 범용 언어로 PL/I를 개발했습니다.실제로 PL/I는 Multics 운영 체제의 표준 시스템 프로그래밍 언어로 사용되었습니다.

PL/I 이후 과학용 프로그래밍 언어와 상용 프로그래밍 언어의 차이는 줄어들어 대부분의 언어가 양쪽에서 필요한 기본 기능을 지원하며 특수 파일 형식 처리의 대부분은 전문 데이터베이스 관리 시스템에 위임되었습니다.

1960년대부터 많은 전문 언어들이 개발되었습니다: 개별 이벤트 시뮬레이션을 위한 GPSS와 Simula, 프로그래밍을 가르치는 데 사용되는 MAD, BASIC, 로고 Pascal, 시스템 프로그래밍을 위한 C, [1]대화형 프로그래밍을 위한 JOSS와 APL\360.

GPL과 DSL의 비교

범용 프로그래밍 언어와 도메인별 프로그래밍 언어의 구별이 항상 [2]명확한 것은 아닙니다.프로그래밍 언어는 특정 태스크를 위해 생성될 수 있지만 원래 영역을 넘어 사용되므로 범용 프로그래밍 언어로 간주됩니다.를 들어 COBOL, FortranLisp는 DSL로 생성되었지만(각각 비즈니스 처리, 수치 계산 및 심볼릭 처리를 위해 생성됨), 시간이 지남에 따라 GPL의 것이 되었습니다.반대로 언어는 일반적인 용도로 설계될 수 있지만 실제로는 [3]특정 영역에만 적용됩니다.범용 언어든 DSL이든 문제에 적합한 프로그래밍 언어는 문제 [4]영역 내에서 충분한 표현력을 유지하면서 필요한 세부 수준을 최소화해야 합니다.이름에서 알 수 있듯이 범용 언어는 도메인 고유의 표기법을 지원할 수 없는 반면 DSL은 이 [4]문제를 처리하기 위해 다양한 문제 영역에서 설계될 수 있습니다.DSL 대신 범용 언어가 선호됩니다.특히 애플리케이션 도메인이 자신의 언어를 보증할 만큼 잘 이해되지 않을 때는 더욱 그렇습니다.이 경우 도메인에 적합한 데이터 유형 및 기능의 라이브러리를 갖춘 범용 언어를 [5]대신 사용할 수 있습니다.DSL은 추상표기의 범위가 작다는 점에서 보통 GPL보다 작은 반면, 일부 DSL은 실제로 하위 언어로서 GPL 전체를 포함합니다.이러한 경우 DSL은 GPL의 [6]표현력과 함께 도메인 고유의 표현력을 제공할 수 있습니다.

범용 프로그래밍 언어는 모두 튜링 완전하며, 이는 이론적으로 어떤 계산상의 문제도 해결할 수 있다는 것을 의미합니다.도메인 고유의 언어들은 종종 비슷하게 튜링 완성이지만 전적으로 그렇지 않다.

장점과 단점

범용 프로그래밍 언어는 프로그래머에 의해 더 일반적으로 사용됩니다.연구에 따르면 2021년에 C, Python, Java각각 [7]가장 일반적으로 사용된 프로그래밍 언어였다.도메인 고유의 언어보다 범용 프로그래밍 언어를 사용하는 것에 찬성하는 한 가지 주장은 새로운 언어를 배울 필요성을 극복하고 더 많은 사람들이 이러한 언어에 익숙해질 것이라는 것이다.

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

2010년의 실증적 연구는 GPL(C#)에 익숙하고 DSL(XAML)에 익숙하지 않은 사용자에게 문제를 제시함으로써 GPL과 CSL 사이의 문제 해결과 생산성을 측정하려고 했다.궁극적으로 이 특정 도메인 고유의 언어를 사용하는 사용자는 GPL에 대해 더 잘 알고 있음에도 불구하고 15% 더 나은 성능을 보였습니다.[4]

C

C전신인 B는 주로 시스템 [8]프로그래밍이라는 특정 목적을 위해 개발되었습니다.반면 C는 운영체제, 디바이스 드라이버, 애플리케이션 소프트웨어, 임베디드 시스템 등 다양한 계산 도메인에서 사용되고 있습니다.

C는 범용성이 있기 때문에 다양한 영역에서 사용하기에 적합합니다.표현식, 흐름 제어, 데이터 구조 및 풍부한 연산자 집합의 경제성을 제공하지만 사용자가 하나의 [9]컨텍스트에서 사용하도록 제한하지는 않습니다.그 결과, Unix 운영 [10]체제의 커널을 재작성하기 위해 개발자에 의해 처음 사용되었지만, 애플리케이션 개발, 임베디드 시스템(마이크로프로세서 프로그래밍), 비디오 게임(Doom ) 등에 사용하기 위해 쉽게 조정되었습니다.오늘날 C는 가장 인기 있고 널리 사용되는 프로그래밍 [11]언어 중 하나로 남아 있습니다.

C++

C에 대한 확장으로 간주된 C++는 참조, 연산자 오버로드 및 기본 인수와 같은 기타 편의 기능과 더불어 객체 지향 기능을 도입했습니다.C와 마찬가지로 C++의 범용성으로 인해 다양한 영역에서 사용할 수 있게 되었습니다.C++ 어플리케이션의 핵심 영역은 시스템 프로그래밍이지만(C++는 낮은 수준의 [12]아키텍처에 대한 접근을 허용하는 기능을 갖추고 있기 때문에), 데스크톱 애플리케이션, 비디오 게임, 데이터베이스, 금융 시스템 등을 구축하는 데 광범위하게 사용되고 있습니다.[13]Microsoft, Apple, Bloomberg, Morgan Stanley와 같은 주요 소프트웨어 및 금융 회사는 여전히 사내 [13]및 외부 애플리케이션에서 C++를 널리 사용하고 있습니다.

파이썬

Python은 코드 가독성과 [14][15]확장성을 강조하는 언어로 생각되었습니다.전자는 소프트웨어 엔지니어가 아닌 엔지니어가 컴퓨터 프로그램을 쉽게 학습하고 작성할 수 있도록 했고, 후자는 도메인 전문가가 자신의 사용 사례에 맞는 라이브러리를 쉽게 만들 수 있도록 했습니다.이러한 이유로 Python은 다양한 도메인에서 사용되고 있습니다.

다음은 Python이 [16]사용되는 영역 중 일부입니다.

  • 웹 개발: Django와 Flask와 같은 프레임워크는 웹 개발자들이 더 넓은 Python 생태계를 활용할 수 있는 강력한 웹 서버를 만들 수 있게 해 주었다.
  • 과학 및 학계:SciPy와 Panda와 같은 과학 및 데이터 라이브러리는 Python을 과학 [17]연구에 사용할 수 있게 해 주었습니다.
  • 기계학습: Scikit-learnTensorflow와 같은 라이브러리는 [18]개발자들에게 기계학습의 접근성을 증가시켰습니다.
  • 일반적인 소프트웨어 개발: 사용자 애플리케이션, 웹 스크랩 프로그램, 게임 및 기타 일반적인 소프트웨어 개발

목록.

다음은 범용 프로그래밍 언어입니다.

메모들

  1. ^ a b Jean E. Sammet, "프로그래밍 언어:역사와 미래", ACM 15:7:601-610(1972년 7월) doi:10.1145/361454.361485
  2. ^ "Domain-Specific Languages: An Annotated Bibliography*". webcache.googleusercontent.com. Retrieved 2022-06-03.
  3. ^ Berry, Gerard (May 2006). "Real time programming : special purpose or general purpose languages". HAL Open Science.
  4. ^ a b c d Kosar, Tomaz (May 2010). "Comparing General-Purpose and Domain-Specific Languages: An Empirical Study" (PDF). Computer Science and Information Systems. 7 (2): 247–264. doi:10.2298/CSIS1002247K.
  5. ^ van Deursen, Arie (December 1998). "Little languages: little maintenance?". Journal of Software Maintenance: Research and Practice. 10 (2): 75–92. doi:10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5.
  6. ^ van Deursen, Arie; Klint, Paul; Visser, Joost (June 2000). "Domain-specific languages: an annotated bibliography". ACM SIGPLAN Notices. 35 (6): 26–36. doi:10.1145/352029.352035. ISSN 0362-1340. S2CID 1049872.
  7. ^ "The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data". statisticsanddata.org. Retrieved 2022-06-03.
  8. ^ "Wayback Machine" (PDF). Archived from the original (PDF) on 2015-06-11. Retrieved 2022-06-03.
  9. ^ W., Kernighan, Brian (2016). The C programming language. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413.
  10. ^ Ritchie, Dennis (April 1993). "The development of the C language" (PDF). ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580.
  11. ^ "TIOBE Index". TIOBE. Retrieved 2022-06-03.
  12. ^ Stroustrup, Bjarne (1995). The C++ Programming Language. Addison-Wesley.
  13. ^ a b "C++ Applications". www.stroustrup.com. Retrieved 2022-06-03.
  14. ^ "artima - The Making of Python". www.artima.com. Retrieved 2022-06-03.
  15. ^ "General Python FAQ — Python 3.10.4 documentation". docs.python.org. Retrieved 2022-06-03.
  16. ^ "Applications for Python". Python.org. Retrieved 2022-06-03.
  17. ^ "Programming Languages Popularity in 12,086 Research Papers – Quantifying Health". Retrieved 2022-06-03.
  18. ^ Pedregosa, Fabian (2011). "Scikit-learn: Machine learning in Python" (PDF). The Journal of Machine Learning Research. arXiv:1201.0490.

「 」를 참조해 주세요.