소스코드

Source code
간단한 C 언어 소스 코드 예시, 절차적 프로그래밍 언어.결과 프로그램은 "안녕, 세상"을 컴퓨터 화면에 출력합니다.C 프로그래밍 언어는 1974년 [1]Bell Laboratories의 Brian Kernighan으로부터 유래된 중요한 책인 The C Programming Language에서 처음 알려진 "Hell world" 토막글입니다.

컴퓨팅에서 소스 코드(source code)는 인간이 읽을 수 있는 프로그래밍 언어(일반적으로 평문)를 사용하여 작성된, 주석이 있든 없든 텍스트의 모음입니다.프로그램의 소스 코드는 주로 소스 코드를 작성함으로써 컴퓨터가 수행할 동작을 지정하는 컴퓨터 프로그래머들의 작업을 용이하게 하도록 특별히 설계되었습니다.

소스 코드는 종종 어셈블러컴파일러에 의해 컴퓨터에 의해 실행될 수 있는 이진 기계 코드로 변환됩니다.기계 코드는 나중에 실행할 수 있습니다.

대부분의 응용 소프트웨어는 실행 파일만을 포함하는 형태로 배포됩니다.소스 코드가 포함되어 있다면 프로그램을 연구하거나 수정하고자 하는 사용자, 프로그래머 또는 시스템 관리자에게 유용할 것입니다.

또는 사용 중인 기술에 따라 소스 코드를 직접 해석하여 실행할 수도 있습니다.

정의들

리처드 스톨먼의 정의1989년 그의 신학교 라이선스에서 공식화되었으며, 소프트웨어가 수정되는 어떤 형태로든 소스 코드를 제안했습니다.

저작물에 대한 "소스 코드"는 저작물을 [2]수정하기 위해 선호되는 저작물 형태를 의미합니다.

일부 고전 소스는 소스 코드를 프로그래밍 언어의 텍스트 형태로 정의합니다.

소스 코드(source code)는 사람이 일반 텍스트(즉, 사람이 읽을 수 있는 영숫자 [3]문자)로 작성한 소프트웨어의 버전입니다.

이는 프로그램 번역이 처음 등장했을 때 소프트웨어 제작의 현대적 형태가 텍스트 프로그래밍 언어였기 때문에 소스 코드는 텍스트 코드였고 머신 코드는 대상 코드였다는 사실에 대한 응답입니다.그러나 프로그래밍 파이프라인이 소스 또는 대상이 될 수 있는 자바스크립트와 같은 언어에서 더 많은 중간 형태를 포함하기 시작하면서 텍스트 코드는 소스 코드와 동의어가 되지 않게 되었습니다.

따라서 스톨만의 정의는 자바스크립트와 HTML의 소스-타겟 양가성을 고려하고 시각적 프로그래밍 언어나 [4][5]머신 러닝의 데이터셋과 같은 미래 형태의 소프트웨어 제작을 고려합니다.

그러나 다른 광범위한 해석에서는 소스 코드를 생성하는 모든 고급 언어와 함께 머신 코드를 포함하는 것으로 간주하며, 이 정의는 프로그램 변환의 각 단계를 소스 코드로 간주하여 원래의 머신/텍스트 구별을 취소합니다.

명확한 설명을 위해 "소스 코드"는 소프트웨어 시스템에 대한 완전히 실행 가능한 설명을 의미합니다.따라서 기계 코드, 매우 높은 수준의 언어 및 실행 가능한 시스템의 그래픽 표현을 포함하는 것으로 해석됩니다.

이 접근 방식은 시스템 분석에 있어서 훨씬 더 유연한 접근을 가능하게 하며, 이해와 수정을 위한 편리한 양식을 발표함으로써 디자이너가 협업해야 할 필요를 없애줍니다.DNA와 같이 디자이너가 필요하지 않은 시나리오에도 적용할 수 있습니다.그러나 이러한 형태의 분석은 인간 대 기계 코드 분석보다 더 많은 비용이 드는 기계 대 기계 코드 분석을 고려하지 않습니다.

역사

저장된 프로그램 컴퓨터의 초기 프로그램은 컴퓨터의 전면 패널 스위치를 통해 이진법으로 입력되었습니다.1세대 프로그래밍 언어는 소스 코드와 머신 코드의 구분이 없었습니다.

IBM이 처음 자사의 기계와 함께 작동할 수 있는 소프트웨어를 제공했을 때 소스 코드는 추가 비용 없이 제공되었습니다.당시 소프트웨어 개발 및 지원 비용은 하드웨어 가격에 포함되어 있었습니다.IBM은 [8]1983년까지 수십 년 동안 소프트웨어 제품 라이센스와 함께 소스 코드를 배포했습니다.

대부분의 초기 컴퓨터 잡지들은 소스 코드를 타자 프로그램으로 발행했습니다.

때때로 큰 프로그램의 전체 소스 코드가 컴퓨터유형 설정과 같은 하드백 북으로 출판되기도 합니다.B: TeX, The Program by Donald Knuth, PGP Source Code and Internals by Philip Zimmermann, PC SpeedScript by Randy Thompson, 그리고 The Real-Time Kernel by Jean Labrosse.

조직

프로그램을 구성하는 소스 코드는 일반적으로 컴퓨터의 하드 디스크에 저장된 하나 이상의 텍스트 파일에 저장됩니다. 보통 이러한 파일은 소스 트리로 알려진 디렉토리 트리에 신중하게 배열됩니다.소스 코드는 (저장된 프로시저의 일반적인 경우와 마찬가지로) 데이터베이스에 저장하거나 다른 곳에 저장할 수도 있습니다.

좀 더 복잡한 Java 소스 코드 예제입니다.객체 지향 프로그래밍 방식으로 작성되어 보일러 플레이트 코드를 보여줍니다.프롤로그 주석은 빨간색, 인라인 주석은 녹색, 프로그램 주석은 파란색으로 표시됩니다.

특정 소프트웨어의 소스 코드는 단일 파일 또는 다수의 파일에 포함될 수 있습니다.이 관행은 흔하지 않지만 프로그램의 소스 코드는 다른 프로그래밍 [9]언어로 작성될 수 있습니다.예를 들어, 주로 C 프로그래밍 언어로 작성된 프로그램은 최적화를 위해 어셈블리 언어로 작성된 부분이 있을 수 있습니다.소프트웨어의 일부 구성 요소가 임의의 프로그래밍 언어로 별도로 작성되고 컴파일된 후 나중에 라이브러리 링크라는 기술을 사용하여 소프트웨어에 통합되는 것도 가능합니다.Java와 같은 일부 언어에서는 런타임에 이 작업을 수행할 수 있습니다(각 클래스는 런타임에 인터프리터에 의해 연결되는 별도의 파일로 컴파일됨).

그러나 또 다른 방법은 메인 프로그램을 프로그래밍 [10]언어를 위한 인터프리터로 만드는 것으로, 문제의 응용 프로그램을 위해 특별히 설계되거나 범용으로 설계된 다음 실제 사용자 기능의 대부분을 매크로 또는 다른 형태의 애드인으로 이 언어로 작성하는 것입니다. 예를 들어 GNU Emacs 텍스트 편집기가 취하는 접근 방식입니다.

컴퓨터 프로그래밍 프로젝트의 코드 베이스는 프로젝트를 구성하는 모든 컴퓨터 프로그램의 소스 코드를 더 많이 모은 것입니다.버전 제어 시스템에서 코드 베이스를 유지하는 것이 일반적인 관례가 되었습니다.보통 복잡한 소프트웨어는 여러 개, 때로는 수십 개 또는 수백 개의 서로 다른 소스 코드 파일을 컴파일하거나 조합해야 합니다.이 경우 Makefile과 같은 컴파일에 대한 지침이 소스 코드에 포함되어 있습니다.여기에는 소스 코드 파일 간의 프로그래밍 관계를 설명하고 컴파일 방법에 대한 정보가 포함되어 있습니다.

목적들

소스 코드는 주로 실행 가능한 프로그램을 생성하는 프로세스(즉, 컴파일되거나 해석됨)에 대한 입력으로 사용됩니다.또한 사람 간의 알고리즘(예:[11] 책의 코드 조각)을 전달하는 방법으로도 사용됩니다.

컴퓨터 프로그래머들은 프로그래밍 [11]기술에 대해 배우기 위해 기존 소스 코드를 검토하는 것이 종종 도움이 된다고 생각합니다.개발자들 간의 소스 코드 공유는 개발자들의 프로그래밍 [11]능력의 성숙에 기여하는 요인으로 자주 언급됩니다.어떤 사람들은 소스코드를 표현적인 예술적 [12]매체라고 생각합니다.

소프트웨어를 다른 컴퓨터 플랫폼으로 포팅하는 은 소스 코드 없이는 보통 엄청나게 어렵습니다.특정 소프트웨어에 대한 소스 코드가 없으면 휴대성은 일반적으로 계산 비용이 [13]많이 듭니다.가능한 포팅 옵션에는 이진 변환 및 원래 플랫폼의 에뮬레이션이 포함됩니다.

실행 프로그램의 디컴파일은 어셈블리 코드 또는 고급 언어소스 코드를 생성하는 데 사용될 수 있습니다.

프로그래머들은 다른 프로젝트에 사용하기 위해 하나의 소프트웨어에서 소스 코드를 자주 조정합니다. 소프트웨어 재사용성이라고 알려진 개념입니다.

법률적 측면

상황은 전 세계적으로 다양하지만 1974년 이전의 미국에서는 소프트웨어와 소스 코드가 저작권이 없으므로 항상 퍼블릭 도메인 [14]소프트웨어를 사용할 수 없습니다.

1974년 미국 저작권 저작물 신기술 이용 위원회(CONTU)는 "컴퓨터 프로그램은 저자의 독창적인 창작물을 구현하는 정도에서 [15][16]저작권의 적절한 주제"라고 결정했습니다.

1983년 미국 법원의 Apple v. Franklin 사건에서 객체 코드에도 동일하게 적용되고 저작권법은 컴퓨터 프로그램에 문학 작품의 저작권 지위를 부여한다는 판결을 받았습니다.

1999년, 미국 법원의 Bernstein United States 사건에서 소스코드는 헌법적으로 보호된 표현의 형태로 간주될 수 있다는 판결이 추가로 나왔습니다.자유 언론의 지지자들은 소스 코드가 프로그래머들에게 정보를 전달하고, 언어로 쓰여지고, 유머와 다른 예술적인 활동을 공유하는 데 사용될 수 있기 때문에, 소스 코드는 보호된 형태의 [17][18][19]의사소통이라고 주장했습니다.

라이센싱

저작권 고지 예:[20]

Copyright [yyyy] [저작권자 이름]

Apache License 버전 2.0("라이센스")에 따라 라이센스가 부여되며, 라이센스를 준수하지 않는 한 이 파일을 사용할 수 없습니다.다음 사이트에서 라이센스 사본을 얻을 수 있습니다.

http://www.apache.org/licenses/LICENSE-2.0

해당 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 본 라이선스에 따라 배포되는 소프트웨어는 명시적이거나 묵시적인 어떤 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다.라이센스 아래의 권한 및 제한을 관리하는 특정 언어에 대해서는 라이센스를 참조하십시오.

소프트웨어와 [16]같은 사소하지 않은 저작물의 저작자는 몇 가지 배타적 권리를 가지며, 그 중에서 소스 코드와 객체 [21]코드에 대한 저작권이 있습니다.작성자는 자신의 소프트웨어 고객과 사용자에게 소프트웨어 라이센스 형식으로 독점적 권한을 일부 부여할 권리와 가능성이 있습니다.소프트웨어 및 이에 수반되는 소스 코드는 여러 라이센스 패러다임과 관련될 수 있습니다. 가장 중요한 구분은 자유 소프트웨어와 독점 소프트웨어입니다.이는 라이선스 조건을 선언하는 저작권 고지를 포함하여 수행됩니다.알림을 찾을 수 없는 경우 All rights reserved의 기본값이 암시됩니다.

일반적으로 소프트웨어는 사용자가 자유롭게 소프트웨어를 사용하고 소스 코드를 연구 및 변경하며 정확한 복사본을 주거나 판매하고 수정된 복사본을 주거나 판매한다면 자유 소프트웨어입니다.소프트웨어는 소스 코드가 비밀로 유지되는 동안 배포되거나 개인 소유 및 제한되는 경우 독점적입니다.1989년 GNU General Public License가 최초로 공개되었으며 이러한 자유를 명시적으로 부여한 소프트웨어 라이선스 중 하나이며, BSD 라이선스는 1990년의 또 다른 초기 사례입니다.

독점 소프트웨어의 경우, 다양한 저작권법, 영업 비밀 특허의 조항을 사용하여 소스 코드를 비공개로 유지합니다.또한 많은 소매 소프트웨어에는 EULA(End-User License Agreement)가 포함되어 있는데, EULA(End-User License Agreement)는 일반적으로 디컴파일링, 리버스 엔지니어링, 분석, 수정 또는 복사 방지금지합니다.소스 코드 보호의 유형으로는 기존의 컴파일에서 객체 코드로 변환하는 것을 넘어 코드 암호화, 코드 난독화, 코드 모핑 등이 있습니다.

퀄리티

프로그램이 작성되는 방식은 유지 관리자에게 중요한 결과를 가져올 수 있습니다.가독성과 일부 언어별 규칙을 강조하는 코딩 규칙은 디버깅과 업데이트수반하는 소프트웨어 소스 코드의 유지보수를 목적으로 합니다.프로그램의 실행 속도나 여러 아키텍처에 대한 프로그램 컴파일 능력과 같은 다른 우선순위는 코드 품질이 일반적으로 목적에 따라 달라지기 때문에 코드 가독성을 덜 중요한 고려 사항으로 만드는 경우가 많습니다.

참고 항목

참고문헌

  1. ^ "Programming in C: A Tutorial" (PDF). Archived from the original (PDF) on 23 February 2015.
  2. ^ Richard Stallman - 1989 - GNU Bulletin을 통해 발표되고 GNU 소프트웨어로 출판됨 - https://www.gnu.org/licenses/gpl-3.0.html
  3. ^ 리눅스 정보 프로젝트."소스 코드 정의" 2017년 10월 3일 웨이백 머신에서 보관됨
  4. ^ "gnu.org". www.gnu.org. Archived from the original on 3 July 2017. Retrieved 12 December 2015.
  5. ^ Stallman, Richard (15 November 2017). "The JavaScript Trap - GNU Project - Free Software Foundation". Gnu.org. Retrieved 20 July 2022.
  6. ^ Mark Harman, 제10회 IEEE Source Code Analysis and Manipulation 국제 작업 회의(SCAM 2010)에서 Source Code Analysis and Manipulation이 항상 중요한 이유티미소아라, 루마니아, 2010년 9월 12일~13일.
  7. ^ 스캠 워킹 컨퍼런스 2017년 9월 29일 웨이백 머신에서 아카이브, 2001-2010.
  8. ^ Martin Goetz (8 February 1988). "Object-code only: Is IBM playing fair?". Computerworld. Vol. 22, no. 6. p. 59. It was in 1983 that IBM reversed its 20-year-old policy of distributing source code with its software product licenses.
  9. ^ "Extending and Embedding the Python Interpreter". docs.python.org. Archived from the original on 3 October 2012. Retrieved 17 August 2014.
  10. ^ "Interpreter Method - Techopedia". Techopedia.com. Retrieved 4 August 2022.
  11. ^ a b c 스피넬리스, D: 코드 판독: 오픈 소스 관점.애디슨-웨슬리 프로페셔널, 2003.ISBN 0-201-79940-5
  12. ^ "예술과 컴퓨터 프로그래밍" ONLamp.com Wayback Machine에서 2018년 2월 20일 아카이브, (2005)
  13. ^ "Software Portability - CodeProject". www.codeproject.com. Retrieved 4 August 2022.
  14. ^ P., Liu, Joseph; L., Dogan, Stacey (2005). "Copyright Law and Subject Matter Specificity: The Case of Computer Software". New York University Annual Survey of American Law. 61 (2).{{cite journal}}: CS1 유지 : 여러 이름 : 저자 목록 (링크)
  15. ^ Apple Computer, Inc. v. Franklin Computer Corporation, Byte Back to Copyright Protection for Computer Programs Archived 2017년 5월 7일 Golden Gate University Law Review 14권, 2호, Jan L. 3조.누스바움 (1984년 1월)
  16. ^ a b 렘리, 메넬, 머제스, 새뮤얼슨.소프트웨어와 인터넷 법, 페이지 34.
  17. ^ "Info" (PDF). cr.yp.to. Archived (PDF) from the original on 7 June 2011. Retrieved 27 December 2019.
  18. ^ Bernstein 대 미국 법무부 2018년 4월 4일 Wayback Machine on eff.org 에 보관
  19. ^ 25세의 EFF: Code as Speech Archived를 확립한 사례를 기억하기 Alison Dame-Boyle(2015년 4월 16일)에 의해 2018년 1월 5일 Wayback Machine on EFF.org 에서 보관됨
  20. ^ "License". www.apache.org. Archived from the original on 23 September 2015. Retrieved 27 December 2019.
  21. ^ Hancock, Terry (29 August 2008). "What if copyright didn't apply to binary executables?". Free Software Magazine. Archived from the original on 25 January 2016. Retrieved 25 January 2016.

원천

외부 링크