hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
최적성 이론 예시
이 도표는 상당수의 서열은 원하는 출력형을 예상하기 위해 없어서는 안된다는 것을 보여준다.  첫 번째 열은 아무것도 말을 하지 않는다.  즉, 첫 번째 열에는 패자로 선호된(loser-preferring) 어떠한 비교도 없다는 것이다.  두 번째 열은 후보 fishiz 와 후보 fishz와의 비교에 기인하여, 제약 *SS나 제약 Agree나 반드시 제약 Dep를 지배한 다는 것을 드러낸다.  세 번째 열은 제약 Max는 반드시 제약 Dep를 지배한다는 것을 보여준다.  마지막 열은 제약 *SS나 제약 Ident는 반드시 제약 Dep를 지배한다는 것을 보여준다.  cat + z 도표에서, 제약 Dep은 제약 Ident를 지배한다는 것이 평가되었다.  즉, 제약 *SS는 제약 Dep을 반드시 지배한다.
지금까지, 다음과 같은 서열이 필요하다는 것을 보여주었다.:
제약 Agree가 제약 Dep을 지배한다는 것이 가능하다는 것을 하더라도 필연적이다.  즉, 위의 서열은 나타나기 위한 후보 fishiz에서 관찰되는데 충분하다.
도표들의 서열을 종합할 때, 다음과 같이 요약할 수 있다.:
선형적으로 서열을 적을 때 제약 Agree를 놓을 두 가지의 가능한 공간이 있다.  즉, 진짜 한치의 오차가 없는 것은 아니다.  첫 번째는 제약 *SS와 제약 Max는 제약 Agree를 반드시 지배하고 두 번째는 제약 Agree가 제약 Dep를 반드시 지배한다는 것을 포함한다.  이러한 것들이 선형 방식에서 서열을 상세히 쓰는 것에서의 하강에서 사실적인 것은 아니다.  이 문제의 요소들은 대부분의 언어학자들이 필요하고 충분한 서열을 나타내는 데 격자 그래프를 이용하는 이유이다.  그 그래프는 하세 도표 형식으로 제약의 필요한 서열을 나타낸다.
최적성 이론 비판
최적성 이론은 통사론이나 다른 분야들보다 음운론에서 많은 비판을 불러왔다.
최적성 이론을 제안한 이들에 따르면, 많은 비판론자들은 이 이론이 어떻게 일으키는지에 대한 기본적인 오해에서 기초한다.  잘 알려진 예는 촘스키가 1995년에 주장한 것인데, 최적성 이론은 하나의 최상 음절로 줄어드는 모든 어휘적 입력형을 예상 할 것이라는 주장이다.  사실상, 이러한 종류의 보편적인 중화(neutralization)는 충실성 제약이 없다면 단지 예상되는 것이었다.  어떤 점에서는, 아주 비판적인 반대 성질은 "모든 언어에서의 음운론적인 존재는 충실성은 잘하지 않고도 할 수 있는 효과가 없는 원리라는 것을 보여준다." 라고 말하는 할레의 1995년 연구에서 온 것이다.  '음운론'으로, 할레는 입력형과 출력형에서 불일치를 명확하게 의미하였다.  프린스의 2007년도 연구에 의하면, 최적성 이론은 유표성 제약이 없다면 이러한 불일치를 예상을 하지 못할 것이라고 하였다.  입출력형 불일치는 정상적으로 유표성 제약의 결과는 충실성 제약을 넘어서는 서열(M >> F)로 집계될 것이라고 하였다.
최적성 이론 비판
최적성 이론에서의 다른 반대 이론은 반증 가능성이 있는 예상을 이루지 못한다는 점에서 전문적인 이론은 아니라는 문제 제기이다.  이 논쟁의 근원은 용어학이다.  즉, '이론(theory)'이라는 용어는 물리학이나 화학, 아니면 다른 과학에서보다 용어학에서 다르게 사용되었다.  최적성 이론에서의 특정한 증명은 다른 언어 틀이 할 수 있는 범위에서의 특정한 제안과 같은 방법으로 반증 가능성이 있는 예상을 만들 것이다.  예상이 만들어지고, 분석 가능한 것은 개별 제안의 특성에 달려 있다.  따라서 최적성 이론은 과학적인 페러다임으로서 틀이 잘 설명된 것이다.
윌리엄 이드살디의 2000년 연구에 의하면, 최적성 이론에서의 더욱 중요한 반대 의견은 음운론적 불투명에서 묘사할 수 없다는 문제 제기이다.  파생적인 음운론 영향은 표면 단계가 아닌 '불투명(opaque)' 규칙순에서 해석될 수 있는 것에서 설명될 수 없다고 보인다.  그러나 작용하는 규칙에서 중간 단계가 없는 최적성 이론에서 이러한 영향은 설명하기 어렵다.
최적성 이론 비판
캐나다의 퀘벡에서 사용되는 프랑스어를 예로 들면,  전설고모음은 /t/의 파찰음을 유발하나, 표면 단계에서 확인할 수 있는 고모음 상실 현상은 식별할 수 있는 근원이 없이 파찰 현상을 남긴다.  파생적인 음운론에서는 이러한 현상을 모음 소실(vowel syncope)이 된 역출혈(counterbleeding) 파찰음 현상으로 인한 것이라고 설명할 수 있다.  이것은, 모음 소실 발생과 출혈(bleeding)을 대신하여, 파찰음은 모음 소실현상 전에 적용되며, 그러므로 고모음은 제거되고 파찰음을 유발하는 환경은 없어질 수 있다고 말할 수 있다.  그러한 역출혈(counterbleeding)규칙순은 표면 단계에서 영향을 보이지 않기 때문에 불투명 조건이다.
최적성 이론 비판
이러한 현상의 불투명은 중간 단계가 접근할 수 없기 때문에 최적성 이론에서의 직접적인 설명이 없다는 것을 발견한다.  몇몇 제안은 그러한 것을 설명하는 목적을 품지만, 대부분의 제안은 최적성 이론의 기초적인 양식을 두드러지게 변경하고, 따라서 높게 논쟁하기 쉽다.  종종, 그같은 변경은 새로운 제약의 형태를 추가하거나 생성부나 평가부의 고유의 특징을 변경한다.  잘 알려진 그러한 예들 중 몇몇은 존 매카시의 공감 이론과 후보 연쇄 이론을 포함하고 다른 것들도 많이 있다.
관련된 논쟁은 순환적인 연쇄 체계(chain shift)의 존재이다.  예를 들면, 입력형 /X/는 출력형 [Y]로 측정되나, 입력형 /Y/는 출력형 [X]로 측정된다.  엘리엇 모어톤의 2004년 연구나 알란 프린스의 2007년 연구에서 나온 것처럼, 최적성 이론의 많은 설명은 이러한 것이 불가능하다고 예측한다. 이러한 종류의 형태가 자연 언어를 발생하는지 않는지에 대해서는 확실하지가 않다.
최적성 이론은 언어 생산이나 인지에서 불가능한 방식이 되는 것에서도 비판받았다. 가능한 후보의 무한한 수를 평가하고 비교하는 것은 처리하는 데에 끝도 없이 긴 시간이 소요될 것이다.  윌리엄 이드살디의 2006년 연구에서는, 안드레아 코르나이나 제프리 헤인즈, 그레그 코벨, 그리고 제이슨 리글과 같은 다른 언어학자들이 이러한 문제 제기에 대해 그가 제약 집단과 후보에 관한 이유없는 가설을 만들어 내고 최적성 이론에서의 적당한 증명이 표시하지 않는다고 바로 논쟁을 걸었음에도 불구, 이러한 처리에 대해 논쟁하였다.  최적성 이론에서 또 다른 반박은 틀이 단순히 구상적이라는 것이다.  이러한 관점에서, 최적성 이론은 언어능력(linguistic competence)의 표본으로 간주되지, 언어수행(linguistic performance)의 특징으로 설명되지는 않는다.
최적성 이론 최적성 이론 범위내의 이론
실제로, 최적성 이론의 완성은 종종 음절이론(Syllable theory)이나, 운율 이론(Moraic theory), 아니면 자질 기하학(Feature Geometry)과 같은 관련된 이론에서 나타낸다.  이러한 이론들과 대조적으로, 잠재적 충실성 이론(positional faithfulness theory)이나 조화 이론(Correspondence Theory), 그리고 공감 이론(Sympathy Theory)과 같은 최적성 이론 범위내에서 완전히 제안된 보조 이론과 배우기 쉬운 몇몇 이론이 있다.  또한 최적성 이론에 관한 명확한 이론의 범위가 있다.  이러한 것은 제약의 가능한 공식화와 정밀한 지배와 다른 제약 상호작용과 같은 논쟁과 관련이 있다.
에이다 (프로그래밍 언어)
에이다(Ada)는 구조화되고, 정적인 형태를 가지고, 명령적이며, 객체 지향적인 고급 컴퓨터 프로그래밍 언어이다. 처음에는 1977년에서 1983년까지 수백 개의 프로그래밍 언어를 대신할 목적으로 CII 허니웰 벌의 진 이히비아가 주도한 팀에서 고안된 것이다. 에이다는 C나 C++와 몇 가지 작업이 같지만, 매우 강력한 유형 시스템의 언어이다.
에이다는 컴퓨터 프로그래밍을 발명하는 데 공헌한 에이다 러브레이스(1815~1852년)의 이름을 딴 것이다.
에이다 (프로그래밍 언어) 역사
1970년대에 에이다(Ada)는 미국 국방성(Department of Defence: DoD)을 위해서 개발되었고, DoD의 컴퓨터 응용 분야의 대부분이 임베디드 프로그램이었다. 하드웨어에 의존성 때문에 각기 다른 언어를 설계해서 사용되었다. 소프트웨어의 재사용성은 거의 없었다. 소프트웨어의 복잡성의 증가와 표준화되지 않은 언어들로 인하여 소프트웨어 개발 비용이 급증한다. 이러한 이유 때문에 1974년에 미국의 육, 해, 공군은 각기 독립적으로 운영되던 내장 시스템을 단일한 언어로 개발하기 위해 고급언어의 개발을 제안한다.
에이다 (프로그래밍 언어) 예
언어의 구문의 일상적인 예로 들 수 있는 헬로 월드 프로그램:
자료형 체계
컴퓨터 과학에서 자료형 체계(type system)는 값, 표현식, 함수, 모듈 등을 분류하는 규칙의 집합이다. 보다 형식적으로는 “계산될 값을 분류하여 특정한 종류의 프로그램 오류가 일어나지 않음을 증명하는 계산 가능한 방법”으로 정의된다.
자료형 체계에서 각각의 계산된 값은 자료형을 갖는다. 자료형 체계는 프로그램 안에서 값의 흐름을 검토하여 자료형에 맞지 않는 값이 할당되는 것을 막는다. 자료형에 맞지 않는 값이 할당되는 것을 자료형 오류라고 부른다. 논리적으로 맞지 않는 자료형 사이의 연산이나 잘못된 메모리에 접근하는 경우가 이에 해당한다. 구체적으로 어떤 연산이 자료형 오류인지는 자료형 체계에 따라 다르다.
컴파일러는 정적 자료형을 통해 각 변수에 필요한 저장 용량과 연산 알고리즘을 최적화할 수 있다. 예를 들어 다수의 C 컴파일러의 "부동소수점" 자료형은, 단일 정밀도 부동소수점 숫자에 대한 IEEE 표준에 따라 64 비트로 표시된다. 따라서 C 컴파일러는 부동소수점 자료형을 갖는 변수의 연산에는 그에 맞는 기계어 명령을 사용할 수 있다.
자료형 체계
형식 제약의 깊이와 그 평가의 방법은 언어의 정형(typing)에 영향을 미친다. 프로그래밍 언어 추가 자료형 다형성의 경우 각 자료형에 대한 다양한 구체적인 알고리즘과 함께 작업을 연결할 수 있다. 유형 이론은 컴퓨터 아키텍처, 컴파일러 구현 및 언어 디자인의 실용적인 문제에서 발생하는 자료형 체계의 연구이다.
자료형 체계 기본
값에 자료형을 할당하는 것을 정형(typing)이라고 한다. 정형은 메모리 상의 비트의 나열에 의미를 부여한다. 컴퓨터 상에서 모든 값은 단순히 비트 나열로 구성되어 있기 때문에 하드웨어는 메모리 주소, 명령어 코드, 문자, 정수, 부동소수점을 서로 구분할 수 없다. 나열된 비트들과 형을 연결해줌으로써 프로그래머는 프로그램이 어떻게 이 비트의 순서를 이해해야 하는지 알려준다.
자료형 체계가 제공하는 주 기능은 다음과 같다:
안전 – 자료형의 사용은 컴파일러가 무의미하거나 잘못될 가능성이 있는 코드를 감지할 수 있게 도와준다. 예를 들어, 산술의 규칙에서 정수를 문자열로 나눗셈을 하는 방법이 없기 때문에, 우리는 3 / "Hello, World" 와 같은 표현식이 잘못된 것을 확인할 수 있다. 강력한 정형은 더 안전한 프로그래밍을 돕지만, 일반적으로 완벽한 안전을 보장하지 않는다(자료형 안전문서 참조).
자료형 체계 기본
추상화 (또는 모듈화) – 자료형은 프로그래머들이 비트 또는 바이트보다 높은 수준에서 프로그램에 대해 생각하고, 낮은 수준의 구현에 대해서는 잊어버릴 수 있게 해준다. 예를 들어, 프로그래머는 바이트의 단순한 배열 대신 문자 값의 모음으로 문자열을 생각할 수 있다. 또는, 자료형은 프로그래머가 두 하위 체계 사이의 인터페이스를 표현할 수 있게 해 준다. 이것은 하위 체계의 상호 운용에 필요한 정의를 배치하는 데 도와주고 불일치하면 그 하위 체계 사이의 통신을 허용하지 않게 도와준다.
자료형 체계 자료형 검사
프로그램이 자료형의 제약 조건을 지키는지 검증하는 것을 자료형 검사라고 한다. 자료형 검사는 컴파일 타임(정적 검사) 또는 런타임(동적 검사)에 실행될 수 있다. 만약 언어 명세가 엄격한 분류 규칙을 요구할 경우(즉, 더 많거나 적은 정보를 잃지 않는 것만 자동 자료형 전환을 허용한다.) 강력한 정형으로, 그렇지 않다면 약한 정형으로 분류할 수 있다. 그러나 이 분류는 학술적으로 엄격한 분류는 아니다.
자료형 검사가 실행 시간이 아닌 컴파일 타임 동안 수행될 경우, 이를 정적 정형이라고 한다. 정적으로 정형된 언어는 액션스크립트 3, 에이다, C, C++, C#, D, Eiffel, F#, 포트란, Go, 하스켈, JADE, 자바, ML, 오브젝티브-C, OCaml, 파스칼, 펄(스칼라, 배열, 해시 및 서브루틴의 구별에 대하여) 그리고 스칼라 등이 있다.
자료형 체계 자료형 검사
정적 정형은 프로그램 검증의 제한된 형태이다.(형 안전 참조) 따라서 많은 자료형 오류가 개발주기의 초기에 잡힐 수 있다. 정적 형 검사기는 오직 컴파일 타임에 결정될 수 있는 자료형 정보만을 평가하지만 프로그램의 가능한 모든 입력에 대해 검사 조건을 확인할 수 있고 프로그램이 실행될 때마다 매번 자료형 검사를 반복할 필요가 없다. 또한 정적 형 검사가 이루어질 경우 실행 자료형 검사를 생략하고 다른 최적화를 수행할 수 있어, 프로그램 실행도 보다 효율적으로 (즉, 빠르게 또는 감소된 메모리를 사용) 만들 수 있다.
어떤 자료형 정보는 오직 실행 시간에만 정해지기 때문에 정적 형 검사기는 보수적이다. 실행 시간에는 자료형 오류가 일어나지 않는 일부 프로그램이 정적 형 검사기에서는 거부될 수 있다. 예를 들어 표현식 <complex test>가 항상 실행 시간에서 true를 평가한다고 할 경우:
if <complex test> then 42 else <type error>
자료형 체계 자료형 검사
는 자료형 오류를 일으키며 거부될 것이다. 왜냐하면 정적 분석은 else 분기가 실행되지 않는다는 사실을 확인할 수 없기 때문이다. 반면 정적 형 검사기의 보수적인 동작은 가끔씩 <complex test>를 false로 평가할 때 유익하다. 정적 자료형 검사기는 드물게 사용되는 코드 경로에서 자료형 오류를 감지할 수 있다. 정적 형 검사를 하지 않을 경우 코드 범위 테스트는 100% 범위에서도 이러한 자료형 오류를 발견하지 못할 수 있다.
자료형 검사의 대부분이 컴파일 타임이 아닌 실행 시간에 수행될 경우 동적 정형이라고 한다. 동적 정형에서, 값은 자료형을 가지고 있지만 변수는 그렇지 않다. 즉, 변수는 모든 자료형의 값을 가질 수 있다. 동적으로 정형된 언어로는 APL, 얼랭, 그루비, 자바스크립트, 리스프, 루아, MATLAB/GNU 옥타브, 펄 (사용자 정의를 위한 자료형이지만 기본이 아닌 자료형), PHP, 프롤로그, 파이썬, 자이썬, 루비, 스몰토크, 클로저 그리고 Tcl 등이 있다.
자료형 체계 자료형 검사
동적으로 정형된 언어는 일반적으로 모든 런타임 개체가 자료형 정보를 함께 갖고 있다. 이런 런타임 자료형 정보는 함수 오버로드, 동적 디스패치, 게으른 바인딩, 다운캐스팅 등에도 사용될 수 있다.
자료형 체계 자료형 검사
더 넓게, 아래에서 설명한 것처럼, 동적 정형은 동적 프로그래밍 언어 기능에 대한 지원을 향상시킬 수 있고, 런타임 데이터를 기반으로 한 기능과 자료형을 창출하는 것 등이 있다. (그럼에도 불구하고, 동적으로 정형된 언어는 일부 또는 전부 같은 기능을 지원하지 않아도, 일부 동적 프로그래밍 언어는 정적으로 정형되어 있다.) 한편, 동적 정형은 적은 선천적 보장을 제공한다: 동적으로 정형된 언어는 정적 자료형 검사기에 의해 무효로 지배될 일부 프로그램을 실행하려고 허용 및 시도하는데, 프로그램의 오류 때문이거나 정적 자료형 검사가 너무 보수적으로 되기 때문이다. 동적 정형은 런타임 자료형 오류가 발생할 수 있다—즉, 런타임에서, 값은 예상치 못한 유형이 있을 수 있고, 그 자료형에 대한 무의미한 작업이 적용된다. 이런 오류가 프로그래밍 실수 구문에서 오랜 시간 후에 발생할 수 있다—즉, 데이터의 잘못된 자료형의 장소로 전달되는 구문은 작성하지 않아야 한다. 이것은 버그를 찾기 어려울 수도 있다.
자료형 체계 자료형 검사
동적 정형 언어 체계들의 런타임 검사는 잠재적으로 정적으로 정형된 언어의 경우보다 더 정교할 수 있고, 그들은 동적인 정보뿐만 아니라 소스 코드로부터 정보를 사용할 수 있다. 한편, 런타임 검사는 오직 프로그램의 특정 실행에서 조건을 잡는 것을 주장하고, 검사는 매번 프로그램을 실행하는 동안 반복된다.
동적으로 정형된 언어의 개발은 자주 단위 테스트와 같은 프로그래밍 정책에 의해 지원된다. 테스트는 전문 소프트웨어 개발에서 핵심 방법이고, 동적으로 정형된 언어의 경우에 특히 중요하다. 실제로, 올바른 프로그램이 작동을 보장하기 위해 했던 테스트는 정적 자료형 검사보다 훨씬 넓은 오류 범위를 감지할 수 있지만, 반대로 정적 자료형 검사가 감지할 수 있는 오류를 종합적으로 검색할 수 없다.
자료형 체계 자료형 검사
프로그래밍 언어의 정적 정형의 존재는 반드시 모든 동적 정형 구조가 없는 상태를 의미하는 것은 아니다. 예를 들어, 자바와 다른 표면에서 정적으로 정형된 언어의 경우, 하위 형변환 및 런타임 자료형 검사에 따라 다른 종류의 작업을, 동적 정형의 형태로 지원한다. 더 일반적으로, 대부분의 프로그래밍 언어는 데이터를 서로 다른 '종류'를 통해, 서로소 합집합과, 변형 자료형 및 다형성 개체와 같은 파견에 대한 방식을 포함한다: 자료형 주석 또는 자료형 검사와 상호 작용조차 하지 않을 때 이러한 방식은 동적 정형 구현에서 실질적으로 유사하다. 정적 및 동적 정형 사이의 상호 작용에 대한 자세한 내용을 보려면 프로그래밍 언어를 참조한다.
특정 언어, 예를 들어 클로슈어는, 기본적으로는 동적으로 정하지만, 이 동작을 허용하는 것은 정적 정형에서의 결과로 명시적인 자료형의 사용 힌트를 통해 무시한다. 이러한 힌트를 사용하는 이유 중 하나는 코드의 성능에 민감한 부분에서 정적 정형의 성능 이점을 달성하는 것이다.
자료형 체계 자료형 검사
4.0의 출시로, 닷넷 프레임워크 '동적' 자료형의 '정적' 개체는 개체 참조를 해결하기 위해 동적 설비를 심문하는 닷넷 런타임에 대한 자리표시자에 의하여 System.Dynamic 이름공간 을 통해 동적 정형의 정의 변종을 지원한다.
정적 및 동적 정형 사이의 선택은 트레이드오프를 필요로 한다.
정적 정형은 컴파일 타임에 안정적으로 자료형 오류를 찾을 수 있다. 이것은 제공되는 프로그램의 신뢰성이 증가할 것이다. 그러나, 프로그래머는 일반적으로 자료형 오류가 발생하는 방법을 통해 반대하고, 따라서 적절하게 코드에서 설계된 자료형을 대표해서 잡은 것으로 코딩한 이 버그의 비율을 통해 반대한다. 정적 정형 지지자들은 자료형 검사가 잘 되어있을 때 프로그램이 더 신뢰할 수 있다고 믿고, 동적 정형 지지자들은 안정적이고 작은 데이터베이스 버그가 증명된 배포 코드를 가리킨다. 자료형 체계의 강도가 증가된 다음에 정적 정형의 값은 아마도 증가할 것이다. 만약 프로그램에 사용되는 자료형이 프로그래머에 의해 제대로 선언되거나 정확하게 컴파일러에 유추되는 경우, 이러한 종속 ML과 에피그램으로 의존적으로 정형된 언어의 지지자들은 거의 모든 버그가 자료형 오류로 간주될 수 있는 제안을 한다.
정적 정형은 보통 더 빠르게 실행하는 컴파일된 코드에서 발생한다. 컴파일러가 사용하는 정확한 자료형을 알고있을 때, 그것은 최적화된 기계 코드를 생성할 수 있다. 더 나아가, 정적으로 정형된 언어를 위한 컴파일러는 어셈블러보다 쉽게 단축키를 찾을 수 있다. 일부 동적으로 정형된 언어와 같은 커먼 리스프는 매우 합리적인 최적화를 위한 옵션 정형을 허용한다. 정적 정형은 이것을 보급한다. 최적화를 참조한다.
반대로, 동적 정형은 컴파일러가 더 빠르게 실행할 것과 인터프리터가 동적으로 새로운 코드를 불러오는 것을 허용할 수 있고, 동적으로 정형된 언어에서의 소스 코드에 대한 변경 사항 때문에 수행하기 위해 덜 검사한 것과 코드를 되짚는 것에서 발생할 수 있다. 이것도 편집 - 컴파일 - 테스트 - 디버그 주기를 줄일 수 있다.
정적으로 정형된 언어의 경우 부족한 자료형 추론 (예: C와 Java 등)은 프로그래머들이 메서드나 함수를 사용하고자 하는 자료형을 선언할 것을 요구한다. 이것은 어느 컴파일러가 프로그래머가 동기화 중에 표류할 것을 무시하거나 허용하도록 허가하지 않을 것을 프로그램을 위한 추가 문서로 검색할 수 있다. 그러나, 언어는 정적으로 자료형 선언 없이 정형될 수 있다 (예시는 하스켈, 스칼라 그리고 낮은 정도의 C#를 포함한다), 그래서 명시적인 자료형 선언은 모든 언어에서 정적 정형을 위한 요구 사항을 필요로 하지 않는다.
동적 정형은 몇몇 정적 자료형 검사가 불법으로 거부할 것이라는 구조를 허용한다. 예를 들어, 코드로 임의의 데이터를 실행하는 eval 함수가 가능하게 된다. eval 함수는 정적 자료형으로 가능하지만, 고급 대수적 데이터 자료형의 사용이 필요하다. 또한, 동적 정형이 자리 표시자 데이터 구조 본격적인 자료 구조 (보통 실험 및 시험의 목적) 대신에 투명하게 사용된 (모의 객체)를 허용하는 등의 방법들이 전환 코드와 프로토 타입을 수용하는 것보다 낫다.
값 (컴퓨터 과학)
컴퓨터 과학에서 값은 더 이상 평가될 수 없는 하나의 식이다. 한 형의 멤버들은 그 형의 값들이다. 예를 들어, 식 "1 + 2"는 표현 "3"으로 축약될 수 있기 때문에 값이 아니다. "3"은 더 이상 축약될 수 없으므로 하나의 값이다.
"한 변수의 값"은 그 환경에서의 상응되는 매핑에 의해 주어진다. 할당 가능한 변수들을 갖는 언어들에서, 이는 R-값(내용)과 L-값(위치)을 구분하기 위해 중요해진다.
선언형 (고수준) 언어에서, 값들은 참조적으로 투명해야 한다. 이것은 그 결과값이 그 값을 계산하기 위해 필요한 (하위)식이 저장되는 위치와 독립적이라는 것을 의미하며, 오직 그 위치의 내용들 (0 또는 1의 bit들)과 해석만이 중요하다.
또한 "값"은 일부 자료형에 따라 해석되는 비트의 연속이다. 뜻을 해석하는 데에 쓰이는 형에 따라 같은 연속의 비트들이 다른 값을 가질 가능성이 있다. 이를테면, 값은 정수나, 부동소수점 값, 또는 문자열이 될 수 있다.
어떠한 종류의 값은 대부분의 프로그래밍 언어에 흔하다. (이를테면, 다양한 종류의 수식) 반면 파스칼과 같은 다른 언어들은 이를 잘 지원하지 않는다.
식 (프로그래밍)
식(式, 영어: Expression)은 프로그래밍 언어에서 값, 변수, 연산자, 함수의 모임이다. 값을 결정하기 위해 평가될 수 있는 프로그래밍 언어의 구문 엔티티이다. 식은 부작용이 있을 수도 있고 없을 수도 있다. 보통 부작용이 있는 식은 참조 투명성의 속성을 가지지 않는다.
식 (프로그래밍) 결과 타입으로서의 Void
C와 대부분의 C 파생 언어들에서 void 반환 타입이 있는 함수에 대한 호출은 void 타입의 유효한 식이다. void 타입의 값들은 사용할 수 없기 때문에 이러한 식의 값은 무조건 버려진다.
노드 형제단
노드 형제단(Brotherhood of Nod)은 종종 노드(Nod)나 형제단으로 불리며, 웨스트우드 스튜디오의 커맨드 앤 컨커 시리즈에 등장하는 비밀결사 집단이다. 노드 형제단은 설립된 연대는 정확하지 않지만(일부에서는 기원전 1800년에 설립되었다고 함) 그들이 문명의 역사가 시작된 이래로 가장 오래된 비밀 집단이라 주장하고 있다. 노드 형제단은 타이베리움이 유독하면서도 가치가 있으며 지구 방위 기구가 유일한 악이라고 주장하는 케인이라는 수수께끼의 사나이를 따르고 있다. 노드 형제단의 상징은 모서리가 깎인 삼각형 안에 전갈 꼬리가 웅크리고 있는 것으로, 검은색과 붉은색이 주가 된다.
자료형
자료형(資料型) 또는 데이터 타입(영어: data type)은 컴퓨터 과학과 프로그래밍 언어에서 실수치, 정수, 불린 자료형 따위의 여러 종류의 데이터를 식별하는 분류로서, 더 나아가 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정한다.
자료형 개요
자료형은 컴퓨터 기억 장치에 저장된 값, 객체의 표현, 해석, 구조를 설명하면서 자료형 체계 안의 데이터의 해석에 사용된다. 여러 종류의 자료형 체계들은 다양한 범위의 자료형 안전을 보증하며, 자료형 정보를 사용하여 데이터에 접근하고 데이터를 이용하는 컴퓨터 프로그램의 유효성을 확인한다. 자료형은 "프로그램을 실행하지 않고도 결정할 수 있는 프로그램의 특성"으로 정의할 수 있다.
거의 모든 프로그래밍 언어들은 명시적으로 자료형의 개념을 포함하지만 다른 언어들은 다른 용어를 사용할 수도 있다. 일반적으로 다음을 포함한다.
자료형 개요
자료형은 자료의 한 속성으로써 컴퓨터와 프로그래머에게 어떤 종류의 자료를 다루고 있는지 알려준다. 이는 그 자료가 어떤 값을 가질 수 있는지 또는 그 자료에 어떤 연산을 할 수 있는지를 제한한다. 이를테면, 자바 프로그래밍 언어에서 "int" 형은 값 -2,147,483,648에서 2,147,483,647 까지의 32 비트 정수 범위와, 정수를 가지고 수행할 수 있는 더하기, 빼기, 나누기, 곱하기와 같은 연산들을 표현한다. 또 다른 예로 "Colors"는 각각 빨간색, 녹색, 파란색의 양을 표시하는 세 바이트, 색깔의 이름을 가지고 있는 문자열 하나, 그리고 덧셈, 뺄셈(하지만 곱셈은 없음) 등을 포함하는 여러 연산들로 표현된다.
프로그래밍 언어마다 저마다 다른 용어를 사용하지만 거의 모든 프로그래밍 언어는 자료형의 개념을 가지고 있다. 일반 자료형은 프로그래밍 언어에서 정수, 부동소수점 숫자, 문자를 표현하는 것들을 포함하고 있으며 언어는 이에 대해 더 많은 것들을 지원할 수 있다. 대부분의 프로그래밍 언어들은 또한 프로그래머가 추가적인 자료형을 정의할 수 있도록 한다. (여러 개의 다른 형 요소를 합치고 새로운 자료형의 올바른 연산을 정의하는 식으로) 이를테면, 프로그래머는 "사람이 탄생일과 이름을 포함하고 있다"라고 해석되는 데이터를 지정한 새로운 자료형 "사람"을 만들 수 있다.
자료형 관련 문헌
Parnas, David L.; Shore, John E.; Weiss, David (1976). “Abstract types defined as classes of variables”. 《Proceedings of the 1976 conference on Data : Abstraction, definition and structure》: 149–154. doi:10.1145/800237.807133.
Cardelli, Luca; Wegner, Peter (December 1985). “On Understanding Types, Data Abstraction, and Polymorphism” (PDF). 《ACM Computing Surveys》 (New York, NY, USA: ACM) 17 (4): 471–523. doi:10.1145/6041.6042. ISSN 0360-0300.
물리 주소 확장
물리 주소 확장(物理住所擴張, 영어: Physical Address Extension, PAE)은 컴퓨팅에서 4 기비바이트 이상의 물리 메모리를 32 비트 시스템에서 사용할 수 있도록 만들어 주는 x86, x86-64 프로세서의 기능이다. 이 기능을 사용하려면, 먼저 운영 체제에서도 지원되는지 확인해 보아야 한다. PAE는 인텔 펜티엄 프로 이후의 CPU에서 제공하는 기능이다. (400 MHz 버스의 펜티엄 M을 제외한 펜티엄 이후 계열의 프로세서를 모두 가리킨다. AMD 호환 프로세서에서도 마찬가지이다.)
물리 주소 확장 운영 체제 지원
FreeBSD는 4.x 시리즈의 경우 4.9부터, 5.x 시리즈의 경우 5.1부터, 또 6.x 이후의 버전에서 PAE를 지원한다. 커널 PAE 구성 옵션이 요구된다. 로더블 커널 모듈은 모듈이 "PAE 사용" 옵션을 켜 둔 상태에서 빌드된 경우에만 PAE를 커널로 불러들일 수 있다. FreeBSD 배포판의 이진 모듈들은 PAE와 더불어 빌드되지는 않으며, 이러한 까닭에 PAE 커널로 불러들이지 못한다. 모든 드라이버가 4 기비바이트 이상의 물리 메모리를 지원하는 것이 아니다. 이러한 드라이버들은 PAE를 사용하는 시스템에서 정상 동작을 보장하지 않는다.
리눅스 커널은 2.6부터 PAE를 지원하기 시작한다. PAE를 완전하게 지원하는데, 다시 말해 32비트 컴퓨터에서 최대 64기비바이트 메모리에 접근할 수 있다. PAE를 사용하는 리눅스 커널은 PAE 기능이 없는 CPU에서 동작하지 않는다.
물리 주소 확장 운영 체제 지원
솔라리스 운영 체제는 솔라리스 7부터 PAE를 지원한다. 모든 서드파티 드라이버가 4기비바이트 이상의 물리 메모리를 지원하는 것은 아니다. 이러한 드라이버들은 PAE를 사용하는 시스템에서 정상 동작을 보장하지 않는다.
PAE는 다음의 32비트 버전의 윈도우에서 지원된다:
NX 기능이 있는 프로세서를 사용하는 경우, 윈도우 XP 서비스팩 2 이후에서는 기본적으로 PAE를 사용하여 NX를 활성화시키지만, 드라이버 호환 문제로 인해 물리 메모리 공간을 32비트로 제한한다. PAE가 정상적으로 동작하지 않는다면 윈도 서버에서 다음의 호환성 핵을 사용하지 않게 하여 해결할 수도 있다. 를 참조하라.
미래에셋그룹
미래에셋그룹은 금융업 중심으로 구성된 글로벌 투자전문 그룹이다.
미래에셋그룹 혁신
2017년 대한민국의 대표적인 금융 혁신사례로 미래에셋 케이스가 세계적 학술 기관인 더 케이스 센터에 등재되었다. 미래에셋은 2010년 하버드 대학교 비즈니스스쿨에서도 케이스 스터디로 채택되었다.
미래에셋그룹 사회공헌
"미래에셋은 젊은이의 희망이 되겠습니다"라는 비전으로 2000년 3월 28일 박현주 회장이 설립하였다. 현재 장학사업, 사회복지사업, 나눔문화사업 등 사회공헌사업을 전개하고 있다.
구문 강조
구문 강조(構文強調, syntax highlighting)는 문자열(특히 소스 코드)을 형식의 틀에 따라 여러 가지 색과 글꼴로 다르게 보여 주는 문서 편집기의 기능이다. 이러한 기능은 프로그래밍 언어나 마크업 언어와 같은 구조화 언어로 프로그램을 짜기 쉽게 해 주며, 구문 오류와 구조가 눈에 더 잘 들어오게 만든다. 일부 편집기들은 또한 구문 강조 외에 다른 기능들을 포함하고 있는데, 이를테면 코드 폴딩과 맞춤법 검사기가 있다.
구문 강조 역사
문법 강조의 개념은 구조 편집기의 개념과 상당 부분 겹친다. 코드를 위한 최초의 편집기 가운데 하나는 Wilfred Hansen의 1969년 코드 편집기 에밀리(Emily)이다. 고급 언어 독립 코드 완성 기능을 제공하였지만, 문법 강조 기능이 있는 현대의 편집기들과는 다르게 문법적으로 유효하지 않은 프로그램들을 작성하는 것은 불가능했다.
1985년 벤 슈나이더맨은 "의미를 제시하는 텍스트 문자열의 코드 규칙"을 제안하였다.
구문 강조 문법 요소
아래는 C 코드 부분을 비교한 것이다:
아래는 문법이 강조된 C++ 코드 중 일부를 발췌한 것이다:
문 (프로그래밍)
컴퓨터 프로그래밍에서 문(文, 영어: Statement)은 명령형 프로그래밍 언어의 가장 작은 독립 요소이다. 프로그램은 하나 이상의 문이 연결되어 형성된다. 문은 식(영어: Expression)과 같은 내부 요소를 포함할 수 있다.
C를 포함한 많은 프로그래밍 언어는 실행 코드와 정의를 포함하는 문과 더불어 문과 정의 사이에 구별을 둔다. 단순 문과 복합 문 사이에 구별을 둘 수 있다. 뒤에 나오는 것은 구성 요소로서의 문을 포함한다.
서비스 팩
서비스 팩(Service pack, SP)은 단일 설치본 형식의 소프트웨어 프로그램에 대한 업데이트, 수정 사항, 개선 사항의 모임이다. 마이크로소프트, 오토데스크와 같은 많은 회사들이 개별 패치의 수에 어느 정도 제한이 있다고 판단될 때 보통 서비스 팩을 공개한다. 서비스 팩을 설치하는 것은 쉽고 수많은 패치를 개별적으로 설치하는 것보다 오류가 일어날 가능성이 더 낮다.
서비스 팩 용어
서비스 팩은 보통 SP1, SP2와 같이 짧게 줄여서 숫자가 붙는다. 이를테면 윈도우 XP의 서비스팩 2도 마찬가지이다. 대한민국의 인터넷 문화에서는 "서팩"으로 줄여 말하기도 한다.
갈루아 이론
추상대수학에서 갈루아 이론(Galois理論, 영어: Galois theory)은 체의 확대를 그 자기동형군을 통해 연구하는 이론이다. 체의 확대 가운데 갈루아 확대들은 그 자기동형군에 의하여 완전히 결정되며, 이 경우 자기동형군을 갈루아 군이라고 한다.
갈루아 이론 전개
갈루아 이론은 체 의 갈루아 확대를 다룬다. 가장 큰 갈루아 확대는 분해 가능 폐포 이며, 모든 갈루아 확대는 의 부분 확대이다.
갈루아 확대 에 대하여, 그 부분 확대들의 격자  및 갈루아 부분 확대들의 격자
를 정의할 수 있다. 또한, 갈루아 군 는 사유한군
이므로, 사유한 위상을 주어 위상군으로 만들 수 있다. 갈루아 군의 사유한 위상을 크룰 위상(영어: Krull topology)이라고 한다. 그렇다면, 의 닫힌 부분군들의  격자
및 닫힌 정규 부분군들의 격자
를 정의할 수 있다.
갈루아 이론의 기본 정리(영어: fundamental theorem of Galois theory)에 따르면, 다음과 같은 격자의 동형이 존재한다.
또한, 둘째 동형사상은 첫째 동형사상의 국한이다. 이 동형사상을 갈루아 접속(영어: Galois connection)이라고 하며, 구체적으로
에 의하여 주어진다. 또한, 모든 에 대하여
이다.
모든 갈루아 확대는 분해 가능 폐포 의 부분 확대이므로, 모든 갈루아 군은 분해 가능 폐포의 갈루아 군
의 부분군이다. 이를 절대 갈루아 군(영어: absolute Galois group)이라고 한다.
갈루아 이론 예
유리수체의 갈루아 확대 을 생각해 보자. 이 확대의 갈루아 군은 클라인 4원군이다.
이 경우, 두 생성원 는 에 다음과 같이 작용한다.
이 경우, 부분 확대들의 격자와 갈루아 군의 부분군의 반대 격자는 다음과 같다. 두 격자가 서로 동형인 것을 알 수 있다.
갈루아 군이 아벨 군이 아닌 가장 단순한 경우는 다음과 같다. 이며 이라고 하자. 그렇다면 갈루아 확대 의 갈루아 군은 3차 대칭군과 동형이며, 다음과 같다.
이 경우, 두 생성원의 작용은 다음과 같다.
이 경우, 부분 확대들의 격자와 갈루아 군의 부분군의 반대 격자는 다음과 같다.
여기서 갈루아 확대들은 , , 이며, 이들은 갈루아 군의 정규 부분군에 대응한다. 나머지 확대들은 분해 가능 확대이지만 정규 확대가 아니므로 갈루아 확대가 아니며, 이에 대응하는 부분군들은 정규 부분군이 아닌 부분군이다.
갈루아 이론 응용
갈루아 이론을 통해, 방정식을 거듭 제곱근만을 사용하여 풀 수 있는지 결정할 수 있다. 역사적으로, 갈루아 이론은 이 문제를 해결하기 위해 도입되었다.
유리수체에 대한 다항식 을 풀 수 있는지 여부는 그 분해체 의 구조를 분석하여 알 수 있다. 체 에 거듭 제곱근 를 추가하여 확장시키는 경우, 그 갈루아 군은 순환군 이다. 즉, 거듭 제곱근을 계속하여 추가하여 얻는 체의 확대는 그 갈루아 군을 일련의 아벨 군들로 분해할 수 있는 경우다. 이렇게, 아벨 군들로 분해할 수 있는 군을 가해군이라고 하며, 다항식의 근을 거듭 제곱근으로 나타낼 수 있는지 여부는 그 다항식이 가해군인지와 동치이다.
유리수체에 대하여, 일반적인 (즉, 해가 겹치지 않는) 차 다항식의 분해체의 갈루아 군은 차 대칭군 이다. 일 경우 은 가해군이지만, 일 경우 은 가해군이 아니다. 즉, 일반적인 5차 이상의 방정식의 근은 거듭제곱근만으로 나타낼 수 없다. 이를 아벨-루피니 정리(영어: Abel–Ruffini theorem)라고 한다. 그러나 특수한 5차 이상 방정식의 경우 그 분해체의 갈루아 군이 가해군일 수 있으며, 이 경우 거듭제곱근으로 풀 수 있다.
갈루아 이론 응용
고전 기하학의 작도는 오직 직선과 원만을 사용한다. 원은 이차 곡선이므로, 이는 이차 방정식을 푸는 것과 같다. 기약 이차 방정식의 근을 추가하는 확대는 차수가 2인 확대이므로, 고전적 작도로서 작도할 수 있는 두 선분의 길이의 비는 항상 유리수체의 이차 확대들
가운데 하나에 속해야 한다. 이러한 수를 작도 가능한 수라고 한다.
이를 사용하여, 여러 고전적 작도 문제의 (불)가능성을 쉽게 보일 수 있다. 예를 들어, 입방 배적 문제는 가 작도 가능한지 여부인데,
이므로
이며, 따라서 는 작도할 수 없다.
마찬가지로, 원적 문제는 가 작도 가능한지 여부를 묻는다. 원주율은 초월수이므로,  역시 초월수이다. (이는 두 대수적 수의 곱은 대수적 수이기 때문이다.) 따라서 원적 문제는 풀 수 없다.
갈루아 이론 응용
각의 3등분 문제 역시 3차 방정식의 근이 필요하므로 풀 수 없다. 구체적으로, 60도 각은 작도 가능하지만, 그 3등분인 20도 각은 작도 가능하지 않다. 이는 가 작도 가능한 수가 아니라고 말하는 것과 같다. 구체적으로, 삼각 함수의 세배각 공식
을 생각하자. 여기에 를 대입하면
을 얻는다. 즉, 는 3차 방정식 의 해이다. 이는 기약 3차 방정식이다. 실제로, 와 같이 치환하면 이는 이 되는데, 아이젠슈타인 판정법에 의하여 좌변은 기약 다항식이다. 즉,
이다.
갈루아 이론 역사
프랑스의 수학자 에바리스트 갈루아가 제창하였다. 갈루아는 유한 차수 갈루아 확대의 경우, 치환군을 이용해서 주어진 방정식의 다양한 해들이 서로 어떻게 대응되는가를 기술하였고, 이 과정에서 군의 개념을 도입하였다.
이후 갈루아 이론은 리하르트 데데킨트, 레오폴트 크로네커, 에밀 아르틴 등에 의해 추상화되었고, 무한한 차수의 갈루아 확대의 경우가 사유한군 이론의 도입으로 완성되었다. 알렉산더 그로텐디크는 갈루아 이론을 대수기하학을 사용하여 임의의 스킴의 에탈 기본군에 대한 이론으로 일반화시켰다.
하이브리드 드라이브
하이브리드 드라이브(hybrid drive)는 버퍼가 큰 컴퓨터 디스크 드라이브의 한 형태이다. 솔리드 스테이트 하이브리드 드라이브(solid state hybrid drive, SSHD)라고도 한다. 표준 드라이브와의 차이점은 용량이 큰 비휘발성 플래시 메모리를 이용하고 있다는 것에 있다. 이로써 일반 용도에서 데이터를 캐시로 처리할 수 있다. 일반 하드 드라이브의 플래터는 계속 회전하는 반면 비휘발성 데이터 기억 장치의 대용량 버퍼를 사용함으로써 하드 드라이브의 플래터는 대부분의 시간에 유휴 상태에 있을 수 있다. 수많은 이익이 있는데, 주로 빠른 속도를 들 수 있고, 전력 소비를 낮추며, 신뢰성을 개선하고 더 빠른 시동 과정을 거칠 수 있게 한다.
하이브리드 드라이브
하이브리드 드라이브는 2007년 초에 노트북 컴퓨터를 중심으로 처음 개발되었다. 삼성이 처음 새로운 드라이브를 시장에 내 놓았고 최초의 하이브리드 드라이브를 2007년 3월에 OEM에 공개하였다.
잠시 동안, 윈도우 비스타 운영 체제와 완전히 호환되는 것으로 알려져 있고, 마이크로소프트는 레디드라이브라는 이름을 사용하여 이러한 기술에 대한 소프트웨어의 측면을 서술하고 있다.
명령 인터페이스는 8 번째 버전의 ATA로 표준화되어 있다.
반도체 메모리
반도체 메모리(semiconductor memory, 문화어: 반도체 기억기)는 컴퓨터 메모리와 같이 디지털 데이터 저장에 사용되는 디지털 전자 반도체 소자이다. 일반적으로 규소 집적 회로 메모리 칩의 금속 산화물 반도체 (MOS) 메모리 셀 내에 데이터가 저장되는 소자를 지칭한다. 다양한 반도체 기술을 사용하는 수많은 종류가 존재한다. 랜덤 액세스 메모리 (RAM)의 두 가지 주요 유형은 메모리 셀당 여러 트랜지스터를 사용하는 정적 램 (SRAM)과 셀당 트랜지스터 하나와 MOS 캐패시터를 사용하는 동적 램 (DRAM)이다. 비휘발성 메모리 (EPROM, EEPROM, 플래시 메모리 등)는 셀당 단일 플로팅 게이트 트랜지스터로 구성된 플로팅 게이트 메모리 셀을 사용한다.
반도체 메모리
대부분의 반도체 메모리 유형은 임의 접근 속성을 가지고 있다. 이는 어떤 메모리 위치에 접근하더라도 동일한 시간이 걸리므로, 데이터를 어떤 임의의 순서로든 효율적으로 접근할 수 있음을 의미한다. 이는 데이터를 순차적으로 읽고 쓰는 CD와 같은 데이터 저장 매체와는 대조적이며, 따라서 데이터는 기록된 순서와 동일하게만 접근할 수 있다. 반도체 메모리는 다른 종류의 데이터 저장 장치보다 훨씬 빠른 액세스 타임을 가지고 있다. 바이트 단위의 데이터는 몇 나노초 내에 반도체 메모리에 쓰거나 읽을 수 있지만, 하드 디스크와 같은 회전식 저장 장치의 접근 시간은 밀리초 범위이다. 이러한 이유로 반도체 메모리는 컴퓨터가 현재 작업 중인 프로그램과 데이터를 저장하는 주기억장치로 사용되는 등 다양한 용도로 활용된다.
2017년 기준, 반도체 메모리 칩 판매액은 연간 $124 billion로, 반도체 산업의 30%를 차지한다. 시프트 레지스터, 프로세서 레지스터, 데이터 버퍼 및 기타 메모리 주소 디코딩 메커니즘이 없는 작은 디지털 레지스터는 디지털 데이터를 저장하지만 일반적으로 메모리라고 불리지 않는다.
반도체 메모리 설명
반도체 메모리 칩에서 각 비트의 이진 데이터는 하나에서 여러 개의 트랜지스터로 구성된 메모리 셀이라는 작은 회로에 저장된다. 메모리 셀은 칩 표면에 직사각형 배열로 배치된다. 1비트 메모리 셀은 워드라고 불리는 작은 단위로 그룹화되며, 단일 메모리 주소로 함께 접근된다. 메모리는 일반적으로 2의 거듭제곱으로, 일반적으로 N=1, 2, 4 또는 8비트의 워드 길이로 제조된다.
반도체 메모리 설명
데이터는 칩의 주소 핀에 적용되는 메모리 주소라는 이진수를 통해 접근되며, 이는 칩 내에서 어떤 워드에 접근할지 지정한다. 메모리 주소가 M비트로 구성되면 칩의 주소 수는 2M이 되고, 각 주소에는 N비트 워드가 포함된다. 따라서 각 칩에 저장되는 데이터 양은 N2M 비트이다. M개의 주소 라인에 대한 메모리 저장 용량은 2M으로 주어지며, 이는 일반적으로 2의 거듭제곱(2, 4, 8, 16, 32, 64, 128, 256, 512)이며, 킬로비트, 메가비트, 기가비트, 테라비트 등으로 측정된다. 2014 년 기준 가장 큰 반도체 메모리 칩은 몇 기가비트의 데이터를 저장하지만, 더 높은 용량의 메모리가 지속적으로 개발되고 있다. 여러 집적 회로를 결합함으로써, 각 칩이 제공하는 것보다 더 큰 워드 길이 및 주소 공간으로 메모리를 구성할 수 있으며, 이는 종종 2의 거듭제곱이다. 반드시 그럴 필요는 없다.
메모리 칩이 수행하는 두 가지 기본 작업은 메모리 워드의 데이터 내용을 읽어내는 "읽기" (비파괴적)와 메모리 워드에 데이터를 저장하여 이전에 저장된 모든 데이터를 대체하는 "쓰기"이다. 데이터 전송률을 높이기 위해 DDR SDRAM과 같은 최신 유형의 메모리 칩에서는 각 읽기 또는 쓰기 작업으로 여러 워드에 접근한다.
독립형 메모리 칩 외에도 반도체 메모리 블록은 많은 컴퓨터 및 데이터 처리 집적 회로의 필수적인 부분이다. 예를 들어, 컴퓨터를 실행하는 마이크로프로세서 칩에는 실행을 기다리는 명령어를 저장하기 위한 캐시 메모리가 포함되어 있다.
반도체 메모리 종류
휘발성 메모리는 메모리 칩의 전원이 꺼지면 저장된 데이터를 잃는다. 그러나 비휘발성 메모리보다 빠르고 저렴할 수 있다. 이 유형은 컴퓨터가 꺼져 있을 때 데이터가 하드 디스크에 저장되므로 대부분의 컴퓨터에서 주 메모리로 사용된다. 주요 유형은 다음과 같다.
RAM (랜덤 액세스 메모리) – 읽기만 가능한 ROM(아래)과 달리, 쓰기도 가능한 모든 반도체 메모리에 대한 일반적인 용어가 되었다. RAM뿐만 아니라 모든 반도체 메모리는 임의 접근 속성을 가지고 있다.
반도체 메모리 종류
DRAM (동적 램) – 각 비트를 저장하기 위해 하나의 MOSFET (MOS 전계 효과 트랜지스터)와 하나의 MOS 캐패시터로 구성된 메모리 셀을 사용한다. 이 RAM 유형은 가장 저렴하고 밀도가 높아 컴퓨터의 주 메모리로 사용된다. 그러나 메모리 셀에 데이터를 저장하는 전하가 천천히 누출되므로 메모리 셀을 주기적으로 재생 (다시 쓰기)해야 하며, 이는 추가 회로를 필요로 한다. 재생 과정은 컴퓨터 내부에서 처리되며 사용자에게는 투명하다.
FPM DRAM (고속 페이지 모드 DRAM) – 이전 유형보다 개선된 비동기 DRAM으로, 단일 "페이지" 메모리에 대한 반복적인 접근을 더 빠른 속도로 허용한다. 1990년대 중반에 사용되었다.
EDO DRAM (확장 데이터 출력 DRAM) – 이전 접근에서 데이터가 여전히 전송되는 동안 새로운 메모리 접근을 시작할 수 있어 이전 유형보다 접근 시간이 빨랐던 구형 비동기 DRAM이다. 1990년대 후반에 사용되었다.
VRAM (비디오 랜덤 액세스 메모리) – 비디오 어댑터 (비디오 카드)의 프레임버퍼에 한때 사용되었던 구형 듀얼 포트 메모리이다.
반도체 메모리 종류
SDRAM (동기 동적 랜덤 액세스 메모리) – 컴퓨터의 메모리 버스에 추가된 클록 신호와 모든 작업을 동기화하는 회로를 DRAM 칩에 추가했다. 이를 통해 칩은 파이프라인을 사용하여 여러 메모리 요청을 동시에 처리하여 속도를 높일 수 있었다. 칩의 데이터는 또한 각각 메모리 작업을 동시에 수행할 수 있는 뱅크로 나뉜다. 이 유형은 약 2000년경에 지배적인 컴퓨터 메모리 유형이 되었다.
DDR SDRAM (더블 데이터 레이트 SDRAM) – 더블 펌핑 (클록 펄스의 상승 및 하강 에지 모두에서 데이터를 전송)을 통해 각 클록 주기당 두 배의 데이터 (두 개의 연속 워드)를 전송할 수 있었다. 이 아이디어의 확장은 메모리 접근 속도와 처리량을 높이는 데 사용되는 현재 (2012년) 기술이다. 메모리 칩의 내부 클록 속도를 더 높이는 것이 어렵다는 것이 입증되었기 때문에, 이 칩들은 각 클록 주기당 더 많은 데이터 워드를 전송하여 전송 속도를 높인다.
DDR2 SDRAM – 내부 클록 주기당 4개의 연속 워드를 전송한다.
DDR3 SDRAM – 내부 클록 주기당 8개의 연속 워드를 전송한다.
반도체 메모리 종류
DDR4 SDRAM – 내부 클록 주기당 16개의 연속 워드를 전송한다.
RDRAM (램버스 DRAM) – 일부 인텔 시스템에서 사용되었지만 궁극적으로 DDR SDRAM에 패배한 대체 더블 데이터 레이트 메모리 표준이다.
XDR DRAM (익스트림 데이터 레이트 DRAM)
SGRAM (동기 그래픽스 RAM) – 그래픽 카드 (비디오 카드)용으로 만들어진 특수 SDRAM 유형이다. 비트 마스킹 및 블록 쓰기와 같은 그래픽 관련 작업을 수행할 수 있으며, 두 페이지의 메모리를 동시에 열 수 있다.
GDDR SDRAM (그래픽스 DDR SDRAM)
GDDR2
GDDR3 SDRAM
GDDR4 SDRAM
GDDR5 SDRAM
GDDR6 SDRAM
HBM (고대역 메모리) – 그래픽 카드에서 사용되는 SDRAM의 발전형으로, 더 빠른 속도로 데이터를 전송할 수 있다. 여러 개의 메모리 칩이 서로 겹쳐져 쌓여 있으며, 더 넓은 데이터 버스를 가지고 있다.
반도체 메모리 종류
PSRAM (의사 정적 RAM) – 칩에서 메모리 재생을 수행하는 회로가 있는 DRAM으로, SRAM처럼 작동하여 외부 메모리 컨트롤러를 종료하여 에너지를 절약할 수 있도록 한다. Wii와 같은 일부 비디오 게임 콘솔에서 사용된다.
비휘발성 메모리 (NVM)는 칩에 전원이 꺼진 동안에도 저장된 데이터를 보존한다. 따라서 디스크가 없는 휴대용 장치의 메모리와 이동식 메모리 카드 등에 사용된다. 주요 유형은 다음과 같다.
반도체 메모리 종류
ROM (고정 기억 장치) – 영구적인 데이터를 저장하도록 설계되었으며, 정상 작동 시에는 쓰기 없이 읽기만 한다. 많은 유형이 쓰기가 가능하지만, 쓰기 과정이 느리고 일반적으로 칩의 모든 데이터를 한 번에 다시 써야 한다. 컴퓨터를 시작하는 바이오스 프로그램과 마이크로컨트롤러와 같은 휴대용 장치 및 임베디드 컴퓨터용 소프트웨어 (마이크로코드)와 같이 컴퓨터에서 즉시 접근할 수 있어야 하는 시스템 소프트웨어를 저장하는 데 주로 사용된다.
MROM (마스크 프로그램 ROM 또는 마스크 ROM) – 이 유형은 칩이 제조될 때 데이터가 칩에 프로그램되므로 대량 생산에만 사용된다. 새로운 데이터로 다시 쓸 수 없다.
PROM (프로그래밍 가능 읽기 전용 메모리) – 이 유형은 회로에 설치하기 전에 기존 PROM 칩에 데이터가 쓰이지만, 한 번만 쓸 수 있다. 데이터는 PROM 프로그래머라고 불리는 장치에 칩을 꽂아 쓴다.
EPROM (삭제 가능 프로그래밍 가능 읽기 전용 메모리 또는 UVEPROM) – 이 유형은 회로 기판에서 칩을 제거하고 자외선에 노출시켜 기존 데이터를 지우고 PROM 프로그래머에 꽂아 데이터를 다시 쓸 수 있다. IC 패키지 상단에는 UV 빛을 통과시키는 작은 투명한 "창"이 있다. 프로그램이 공장에서 변경되어야 할 수 있는 프로토타입 및 소량 생산 장치에 자주 사용된다. 4M EPROM, 칩을 지우는 데 사용되는 투명 창을 보여준다.
EEPROM (전기적 삭제 가능 프로그래밍 가능 읽기 전용 메모리) – 이 유형은 칩이 회로 기판에 있는 동안 전기적으로 데이터를 다시 쓸 수 있지만, 쓰기 과정이 느리다. 이 유형은 하드웨어 장치를 실행하는 저수준 마이크로코드인 펌웨어를 저장하는 데 사용되며, 대부분의 컴퓨터에서 바이오스 프로그램을 업데이트할 수 있도록 한다.
플래시 메모리 – 이 유형은 EEPROM과 RAM 메모리 사이의 중간 속도로 쓰기 과정이 진행된다. 쓰기는 가능하지만 주 메모리로 사용할 만큼 빠르지는 않다. 하드 디스크의 반도체 버전으로 파일을 저장하는 데 자주 사용된다. PDA, USB 플래시 드라이브, 디지털 카메라 및 휴대전화에 사용되는 이동식 메모리 카드와 같은 휴대용 장치에 사용된다.