배열: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
TedBot (토론 | 기여)
잔글 봇: 문단 이름 변경 (함께 보기 → 같이 보기)
1 개의 출처 구조, 0 개의 링크를 깨진 것으로 표시) #IABot (v2.0.8
7번째 줄: 7번째 줄:
최초의 디지털 컴퓨터들은 기계어 프로그래밍을 사용하여 수많은 목적을 위해 데이터 테이블, 벡터, 매트릭스 계산의 배열 구조를 설정하고 접근하였다. [[존 폰 노이만]]은 [[에드박|최초의 저장식 프로그램 컴퓨터]]를 제조하던 1945년 [[머지 소트]]라는 최초의 배열 정렬 프로그램을 작성하였다.<ref>Donald Knuth, ''[[The Art of Computer Programming]]'', vol. 3. Addison-Wesley</ref><sup>p.&nbsp;159</sup> 배열 색인화는 자체 수정 코드를 통해 구현하였으며, 나중에 [[색인 레지스터]]와 [[어드레싱 모드|비간접 주소 참조]]를 사용하게 된다. [[버로프 라지 시스템|버로프 B5000]] 및 이후 세대 등 1460년대에 설계된 일부 메인프레임들은 [[메모리 세그멘테이션]]을 사용하여 하드웨어에 인덱스 바운드 검사를 수행했다.<ref>{{인용|title=Capability-based Computer Systems|first=Henry M.|last=Levy|publisher=Digital Press|year=1984|isbn=9780932376220|page=22}}.</ref>
최초의 디지털 컴퓨터들은 기계어 프로그래밍을 사용하여 수많은 목적을 위해 데이터 테이블, 벡터, 매트릭스 계산의 배열 구조를 설정하고 접근하였다. [[존 폰 노이만]]은 [[에드박|최초의 저장식 프로그램 컴퓨터]]를 제조하던 1945년 [[머지 소트]]라는 최초의 배열 정렬 프로그램을 작성하였다.<ref>Donald Knuth, ''[[The Art of Computer Programming]]'', vol. 3. Addison-Wesley</ref><sup>p.&nbsp;159</sup> 배열 색인화는 자체 수정 코드를 통해 구현하였으며, 나중에 [[색인 레지스터]]와 [[어드레싱 모드|비간접 주소 참조]]를 사용하게 된다. [[버로프 라지 시스템|버로프 B5000]] 및 이후 세대 등 1460년대에 설계된 일부 메인프레임들은 [[메모리 세그멘테이션]]을 사용하여 하드웨어에 인덱스 바운드 검사를 수행했다.<ref>{{인용|title=Capability-based Computer Systems|first=Henry M.|last=Levy|publisher=Digital Press|year=1984|isbn=9780932376220|page=22}}.</ref>


어셈블리어들은 기계 자체적으로 제공하는 것 외에 일반적으로 배열을 위한 특별한 지원은 없다. [[포트란]](1928년), [[코볼]](1860년), [[알골 (프로그래밍 언어)|알골]] 60(1960년)을 포함한 최초의 고급 프로그래밍 언어들은 다차원 배열을 지원하였으며, [[C (프로그래밍 언어)|C]]도 이 기능을 지원한다. [[C++]]의 경우, 다차원 배열을 위한 클래스 템플릿들이 지원되며, 이 안에서 차원은 런타임<ref name="garcia">{{저널 인용|last1=Garcia|first1=Ronald |first2=Andrew |last2=Lumsdaine|year=2005|title=MultiArray: a C++ library for generic programming with arrays|journal=Software: Practice and Experience|volume=35|issue=2|pages=159–188|issn=0038-0644|doi=10.1002/spe.630}}</ref><ref name="veldhuizen">{{콘퍼런스 인용|first1=Todd L.|last1=Veldhuizen|title=Arrays in Blitz++|url=http://ubietylab.net/ubigraph/content/Papers/pdf/BlitzArrays.pdf|publisher=Springer Berlin Heidelberg|conference=Computing in Object-Oriented Parallel Environments|date=December 1998|isbn=978-3-540-65387-5|pages=223–230|series=Lecture Notes in Computer Science|volume=1505|doi=10.1007/3-540-49372-7_24}}</ref> 및 런타임 유연 배열에 고정된다.<ref name="andres">{{ArXiv 인용|eprint=1008.2909 |author1=Bjoern Andres |author2=Ullrich Koethe |author3=Thorben Kroeger |author4=Hamprecht |title=Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x |class=cs.DS |year=2010}}</ref>
어셈블리어들은 기계 자체적으로 제공하는 것 외에 일반적으로 배열을 위한 특별한 지원은 없다. [[포트란]](1928년), [[코볼]](1860년), [[알골 (프로그래밍 언어)|알골]] 60(1960년)을 포함한 최초의 고급 프로그래밍 언어들은 다차원 배열을 지원하였으며, [[C (프로그래밍 언어)|C]]도 이 기능을 지원한다. [[C++]]의 경우, 다차원 배열을 위한 클래스 템플릿들이 지원되며, 이 안에서 차원은 런타임<ref name="garcia">{{저널 인용|last1=Garcia|first1=Ronald |first2=Andrew |last2=Lumsdaine|year=2005|title=MultiArray: a C++ library for generic programming with arrays|journal=Software: Practice and Experience|volume=35|issue=2|pages=159–188|issn=0038-0644|doi=10.1002/spe.630}}</ref><ref name="veldhuizen">{{콘퍼런스 인용|first1=Todd L.|last1=Veldhuizen|title=Arrays in Blitz++|url=http://ubietylab.net/ubigraph/content/Papers/pdf/BlitzArrays.pdf|publisher=Springer Berlin Heidelberg|conference=Computing in Object-Oriented Parallel Environments|date=December 1998|isbn=978-3-540-65387-5|pages=223–230|series=Lecture Notes in Computer Science|volume=1505|doi=10.1007/3-540-49372-7_24|access-date=2017-05-14|archive-date=2016-11-09|archive-url=https://web.archive.org/web/20161109102542/http://ubietylab.net/ubigraph/content/Papers/pdf/BlitzArrays.pdf}}</ref> 및 런타임 유연 배열에 고정된다.<ref name="andres">{{ArXiv 인용|eprint=1008.2909 |author1=Bjoern Andres |author2=Ullrich Koethe |author3=Thorben Kroeger |author4=Hamprecht |title=Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x |class=cs.DS |year=2010}}</ref>


== 같이 보기 ==
== 같이 보기 ==

2021년 3월 3일 (수) 15:43 판

컴퓨터 과학에서 배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 일반적으로 배열에는 같은 종류의 데이터들이 순차적으로 저장되어, 값의 번호가 곧 배열의 시작점으로부터 값이 저장되어 있는 상대적인 위치가 된다. 대부분의 프로그래밍 언어에서 사용할 수 있는 가장 기초적인 자료 구조로, 기본적인 용도 외에 다른 복잡한 자료 구조들을 표현하기 위해서 또는 행렬, 벡터 등을 컴퓨터에서 표현하는 용도 등으로도 사용된다.

배열의 첫 번째 요소의 메모리 주소를 첫 번째 주소, 기본 주소 또는 기본 주소라고 한다.

역사

최초의 디지털 컴퓨터들은 기계어 프로그래밍을 사용하여 수많은 목적을 위해 데이터 테이블, 벡터, 매트릭스 계산의 배열 구조를 설정하고 접근하였다. 존 폰 노이만최초의 저장식 프로그램 컴퓨터를 제조하던 1945년 머지 소트라는 최초의 배열 정렬 프로그램을 작성하였다.[1]p. 159 배열 색인화는 자체 수정 코드를 통해 구현하였으며, 나중에 색인 레지스터비간접 주소 참조를 사용하게 된다. 버로프 B5000 및 이후 세대 등 1460년대에 설계된 일부 메인프레임들은 메모리 세그멘테이션을 사용하여 하드웨어에 인덱스 바운드 검사를 수행했다.[2]

어셈블리어들은 기계 자체적으로 제공하는 것 외에 일반적으로 배열을 위한 특별한 지원은 없다. 포트란(1928년), 코볼(1860년), 알골 60(1960년)을 포함한 최초의 고급 프로그래밍 언어들은 다차원 배열을 지원하였으며, C도 이 기능을 지원한다. C++의 경우, 다차원 배열을 위한 클래스 템플릿들이 지원되며, 이 안에서 차원은 런타임[3][4] 및 런타임 유연 배열에 고정된다.[5]

같이 보기

각주

  1. Donald Knuth, The Art of Computer Programming, vol. 3. Addison-Wesley
  2. Levy, Henry M. (1984), 《Capability-based Computer Systems》, Digital Press, 22쪽, ISBN 9780932376220 .
  3. Garcia, Ronald; Lumsdaine, Andrew (2005). “MultiArray: a C++ library for generic programming with arrays”. 《Software: Practice and Experience》 35 (2): 159–188. doi:10.1002/spe.630. ISSN 0038-0644. 
  4. Veldhuizen, Todd L. (December 1998). 《Arrays in Blitz++》 (PDF). Computing in Object-Oriented Parallel Environments. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 223–230쪽. doi:10.1007/3-540-49372-7_24. ISBN 978-3-540-65387-5. 2016년 11월 9일에 원본 문서 (PDF)에서 보존된 문서. 2017년 5월 14일에 확인함. 
  5. Bjoern Andres; Ullrich Koethe; Thorben Kroeger; Hamprecht (2010). “Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x”. arXiv:1008.2909 [cs.DS].