Perl 용어집
Perl 용어집 (perlglossary)
Perl 문서에 나오는 용어(기술 용어든 아니든)를 모아 둔 용어집이에요. 《Programming Perl》 제4판의 용어집에서 가져온 것이에요. 굵게 표시된 단어나 구절은 이 용어집의 다른 곳에서 정의되어 있어요.
다른 유용한 자료로는 유니코드 용어집 http://unicode.org/glossary/, Free On-Line Dictionary of Computing http://foldoc.org/, Jargon File http://catb.org/~esr/jargon/, 그리고 Wikipedia http://www.wikipedia.org/가 있어요.
A
accessor methods (접근자 메서드)
객체의 상태(그 인스턴스 변수)를 간접적으로 검사하거나 갱신하는 데 쓰는 메서드예요.
actual arguments (실인자)
함수나 서브루틴을 호출할 때 공급하는 스칼라 값들이에요. 예를 들어 power("puff")를 호출하면 문자열 "puff"가 실인자예요. argument와 formal arguments도 참고하세요.
address operator (주소 연산자)
어떤 언어는 값의 메모리 주소를 직접 다루는데, 이는 불장난과 같을 수 있어요. Perl은 모든 메모리 관리를 위한 석면 장갑 한 벌을 제공해요. Perl에서 주소 연산자에 가장 가까운 것은 백슬래시 연산자지만, 그것은 메모리 주소보다 훨씬 안전한 하드 참조(hard reference)를 줘요.
algorithm (알고리즘)
명확하게 정의된 단계의 수열로, 컴퓨터조차 할 수 있을 만큼 분명하게 설명된 것이에요.
alias (앨리어스)
무언가의 별명으로, 원래 이름 대신 별명을 쓴 것처럼 모든 면에서 동작해요. 임시 앨리어스는 foreach 루프의 루프 변수, map이나 grep 연산자의 $_ 변수, sort의 비교 함수 동안의 $a와 $b, 그리고 서브루틴 호출의 실인자의 @_ 각 요소에 암시적으로 생성돼요. 영구 앨리어스는 심볼을 임포트하거나 typeglob에 할당함으로써 패키지 안에 명시적으로 생성돼요. 패키지 변수의 어휘 스코프 앨리어스는 our 선언으로 명시적으로 생성돼요.
alphabetic (알파벳 문자)
우리가 단어를 만들 때 쓰는 종류의 문자예요. 유니코드에서 이는 모든 문자(모든 이데오그래프와 특정 분음 부호 포함), 로마 숫자 같은 문자 숫자, 그리고 다양한 결합 마크를 포함해요.
alternatives (대안)
하나만 선택할 수 있는 가능한 선택 목록이에요. "문 A, B, C 중 어느 것을 원하세요?"처럼요. 정규식에서 대안은 단일 세로 막대로 구분돼요: |. 일반 Perl 표현식의 대안은 이중 세로 막대로 구분돼요: ||. 불리언 표현식의 논리적 대안은 ||나 or로 구분돼요.
anonymous (익명)
이름 있는 변수를 통해 직접 접근할 수 없는 참조 대상(referent)을 설명하는 데 쓰여요. 그런 참조 대상은 적어도 하나의 하드 참조를 통해 간접적으로 접근돼야 해요. 마지막 하드 참조가 사라지면 익명 참조 대상은 봐주지 않고 파괴돼요.
application (애플리케이션)
더 크고 더 화려한 종류의 프로그램으로, 이름이 더 화려해서 사람들이 프로그램을 쓰고 있다는 걸 깨닫지 못하게 하는 것이에요.
architecture (아키텍처)
지금 작업하는 컴퓨터의 종류예요. 여기서 "컴퓨터의 종류"란 호환되는 기계어를 공유하는 모든 컴퓨터를 뜻해요. Perl 프로그램은 (전형적으로) 단순한 텍스트 파일이지 실행 이미지가 아니므로, Perl 프로그램은 C처럼 기계어로 컴파일되는 다른 언어의 프로그램보다 실행되는 아키텍처에 훨씬 덜 민감해요. platform과 operating system도 참고하세요.
argument (인자)
프로그램, 서브루틴, 함수, 메서드에 공급되어 무엇을 해야 하는지 알려주는 데이터 조각이에요. '파라미터(parameter)'라고도 불러요.
ARGV
커맨드 라인의 인자 벡터를 담고 있는 배열의 이름이에요. 빈 <> 연산자를 쓰면 ARGV는 인자를 순회하는 데 쓰는 파일핸들의 이름이자 현재 입력 파일의 이름을 담고 있는 스칼라의 이름이에요.
arithmetical operator (산술 연산자)
+나 / 같은, Perl에게 초등학교 때 배워야 했던 산수를 하라고 지시하는 기호예요.
array (배열)
값들의 정렬된 수열로, 정수 첨자(subscript)로 수열에서 값의 오프셋을 지정해 어떤 값이든 쉽게 접근할 수 있게 저장돼 있어요.
array context (배열 맥락)
더 정확히는 리스트 맥락이라고 불리는 것의 옛 표현이에요.
Artistic License (아티스틱 라이선스)
Larry Wall이 Perl을 위해 만든 오픈 소스 라이선스로, Perl의 유용성·가용성·수정 가능성을 극대화해요. 현재 버전은 2예요. (http://www.opensource.org/licenses/artistic-license.php)
ASCII
American Standard Code for Information Interchange(7비트 문자 집합으로, 영어 텍스트를 제대로 표현하기에도 부족해요). 느슨하게는 다양한 ISO-8859-X 문자 집합의 가장 낮은 128개 값을 설명하는 데 자주 쓰이는데, 이는 반쪽짜리 ASCII라고 부르기 좋은 상호 호환되지 않는 8비트 코드들의 묶음이에요. Unicode도 참고하세요.
assertion (어서션)
정규식의 구성 요소로, 패턴이 일치하려면 참이어야 하지만 그 자체로 문자를 일치시킬 필요는 없어요. 보통 0-폭 어서션(zero-width assertion)을 구체적으로 뜻해요.
assignment (할당)
변수의 값을 바꾸는 것이 인생의 사명인 연산자예요.
assignment operator (할당 연산자)
일반 할당, 또는 보통 할당과 다른 연산자로 구성된 복합 연산자로, 변수의 값을 그 자리에서 바꿔요. 즉 이전 값에 상대적으로요. 예를 들어 $a += 2는 $a에 2를 더해요.
associative array (연관 배열)
hash를 보세요. 부탁해요. 연관 배열이라는 용어는 해시를 가리키는 옛 Perl 4 용어예요. 어떤 언어는 그것을 사전(dictionary)이라고 불러요.
associativity (결합성)
"A operator B operator C"가 있고 두 연산자가 같은 우선순위일 때, 왼쪽 연산자를 먼저 할지 오른쪽 연산자를 먼저 할지를 결정해요. + 같은 연산자는 왼쪽 결합이고, ** 같은 연산자는 오른쪽 결합이에요. 연산자와 그 결합성 목록은 Camel 3장 "Unary and Binary Operators"를 참고하세요.
asynchronous (비동기)
너무 많은 일이 동시에 진행되어 상대적 시간 순서가 결정 불가능한 사건이나 활동을 말해요. 따라서 비동기 사건은 언제 올지 알 수 없었던 사건이에요.
atom (원자)
정규식 구성 요소로, 하나 이상의 문자를 포함하는 하위 문자열과 잠재적으로 일치하며 뒤따르는 어떤 수량자에 의해 분할 불가능한 구문 단위로 취급돼요. (0-폭 무언가에 일치하고 수량화되지 않을 수 있는 어서션과 대조돼요.)
atomic operation (원자적 연산)
Democritus가 "atom"이라는 단어를 분할 불가능한 물질 조각에 줄 때, 그는 말 그대로 절단될 수 없는 것을 의미했어요: ἀ-(아님) + -τομος(절단 가능). 원자적 연산은 중단될 수 없는 행동이에요. 비핵 지대에서 금지된 것이 아니고요.
attribute (속성)
sub foo : locked method처럼 수식자와 함께 변수와 서브루틴의 선언을 허용하는 새 기능이에요. 또한 객체의 인스턴스 변수의 다른 이름이에요.
autogeneration (자동 생성)
객체의 연산자 오버로딩 기능으로, 특정 연산자의 동작이 더 기본적인 연산자를 사용해 합리적으로 추론될 수 있게 해요. 오버로드된 연산자가 보통 연산자와 같은 관계를 자주 가질 것이라고 가정해요. Camel 13장 "Overloading" 참고.
autoincrement (자동 증가)
무언가에 자동으로 1을 더하는 것으로, 그래서 ++ 연산자의 이름이에요. 대신 자동으로 1을 빼는 것은 '자동 감소(autodecrement)'라고 불러요.
autoload
요구 시 로드하는 것. (또한 'lazy(지연)' 로딩이라고도 불러요.) 구체적으로, 정의되지 않은 서브루틴을 대신해 AUTOLOAD 서브루틴을 호출하는 것이에요.
autosplit
–a 스위치가 –p나 –n 아래에서 실행될 때 awk를 모방하기 위해 하는 것처럼, 문자열을 자동으로 분할하는 것. (AutoSplit 모듈도 참고하세요. 이 모듈은 –a 스위치와는 아무 관련이 없지만 autoloading과는 관련이 많아요.)
autovivification (자동 활성화)
"스스로 생명을 불어넣다"는 뜻의 그리스-로마 어휘이에요. Perl에서 저장 위치(lvalue)가 필요에 따라 스스로 생성되는데, 다음 저장 수준을 가리키는 하드 참조 값의 생성을 포함해요. 할당 $a[5][5][5][5][5] = "quintet"은 잠재적으로 다섯 개의 스칼라 저장 위치와, 네 개의 새 익명 배열을 가리키는 네 개의 참조(처음 네 개의 스칼라 위치에)를 만들어요. 하지만 autovivification의 요점은 그것을 신경 쓸 필요가 없다는 거예요.
AV
"array value"의 약자로, 배열을 담고 있는 Perl 내부 데이터 타입 중 하나를 가리켜요. AV 타입은 SV의 하위 클래스예요.
awk
설명적인 편집 용어로, "awkward(어색한)"의 줄임말이에요. 우연히도 Perl이 고수준 아이디어 중 일부를 빌린, 유서 깊은 텍스트 처리 언어를 가리키기도 해요.
B
backreference (역참조)
정규식에서 꾸밈없는 괄호 안의 하위 패턴이 캡처한 하위 문자열이에요. 같은 패턴의 나중 부분에 나오는 백슬래시 10진 숫자(\1, \2 등)는 현재 일치에서 해당 하위 패턴을 다시 가리켜요. 패턴 밖에서는, 패턴이 현재 동적 스코프의 마지막 성공적 일치였기만 하면 번호 변수($1, $2 등)가 이 같은 값들을 계속 가리켜요.
backtracking (백트래킹)
"만약 다시 한다면 다르게 하겠다"고 말하고, 실제로 돌아가 다르게 다시 하는 관행이에요. 수학적으로 말하면 가능성의 트리에서 실패한 재귀에서 돌아오는 것이에요. Perl은 정규식으로 패턴을 일치시키려 시도할 때, 그리고 이전 시도가 잘되지 않을 때 백트랙해요. Camel 5장 "Pattern Matching"의 "The Little Engine That /Couldn(n't)" 절을 참고하세요.
backward compatibility (하위 호환성)
우리가 당신이 의존하던 기능이나 버그를 깨뜨리지 않았기 때문에 여전히 옛 프로그램을 실행할 수 있다는 뜻이에요.
bareword (베어워드)
use strict 'subs' 아래에서 불법으로 간주될 만큼 충분히 모호한 단어예요. 그 엄격함이 없으면, bareword는 주위에 따옴표가 있는 것처럼 취급돼요.
base class (기본 클래스)
일반적인 객체 타입, 즉 다른 더 구체적인 클래스들이 상속으로 유전적으로 파생되는 클래스예요. 조상을 존중하는 사람들은 '슈퍼클래스(superclass)'라고도 불러요.
big-endian (빅엔디언)
Swift에서: 달걀의 큰 쪽부터 먹는 사람. 단어의 가장 중요한 바이트를 가장 덜 중요한 바이트보다 낮은 바이트 주소에 저장하는 컴퓨터를 가리키기도 해요. 종종 little-endian 기계보다 우월한 것으로 여겨져요. little-endian도 참고하세요.
binary (이진)
밑수 2로 표현되는 숫자에 관한 것. 기본적으로 두 숫자, 0과 1만 있다는 뜻이에요. "비텍스트" 파일을 설명하는 데도 쓰이는데, 그런 파일이 바이트의 모든 비트를 전부 사용하기 때문일 거예요. 유니코드의 등장으로, 이미 의심스러웠던 이 구분은 더욱 의미를 잃어요.
binary operator (이항 연산자)
두 개의 피연산자를 취하는 연산자예요.
bind (바인드)
특정 네트워크 주소를 소켓에 할당하는 것.
bit (비트)
0에서 1까지(포함)의 정수. 정보 저장의 가능한 가장 작은 단위. 바이트의 8분의 1, 또는 달러의 8분의 1. ("Pieces of Eight"라는 용어는 옛 스페인 달러를 8비트로 나눌 수 있고, 각각이 여전히 돈으로 쳤다는 데서 나왔어요. 그게 오늘날 25센트 조각이 여전히 "two bits"인 이유예요.)
bit shift (비트 시프트)
컴퓨터 단어에서 비트를 왼쪽이나 오른쪽으로 이동하는 것으로, 2의 거듭제곱으로 곱하거나 나누는 효과가 있어요.
bit string (비트 문자열)
이번에는 정말로 비트의 수열로서 생각되고 있는 비트의 수열이에요.
bless
기업 생활에서, 사물에 공식 승인을 부여하는 것. "엔지니어링 부사장이 우리 WebCruncher 프로젝트를 bless했어요."처럼요. 비슷하게 Perl에서도 어떤 참조 대상이 WebCruncher 객체 같은 객체로 기능할 수 있도록 공식 승인을 부여하는 것이에요. Camel 27장 "Functions"의 bless 함수 참고.
block (블록)
프로세스가 무언가를 기다려야 할 때 하는 것: "내 프로세스가 디스크를 기다리며 blocked됐어요." 무관한 명사로는, 운영체제가 다루기 좋아하는 크기(보통 512나 8192 같은 2의 거듭제곱)의 큰 데이터 덩어리를 가리켜요. 보통 디스크 파일에서 오거나 디스크 파일로 가는 데이터 덩어리를 뜻해요.
BLOCK
중괄호로 구분된 일련의 Perl 문장으로 구성된 구문 구조예요. 예를 들어 if와 while 문장은 BLOCK에 관해 정의돼 있어요. 때로는 '블록'이라고 하면서 어휘 스코프를 의미하기도 해요. 즉 eval이나 파일 안에서처럼 문장이 중괄호로 구분되지는 않지만 BLOCK처럼 동작하는 문장의 수열이에요.
block buffering (블록 버퍼링)
한 번에 블록 하나를 전달해 입력·출력을 효율적으로 만드는 방법이에요. 기본적으로 Perl은 디스크 파일에 블록 버퍼링을 해요. buffer와 command buffering 참고.
Boolean (불리언)
참이거나 거짓인 값.
Boolean context (불리언 맥락)
스칼라 맥락의 특별한 종류로, 조건문에서 표현식이 반환한 스칼라 값이 참인지 거짓인지 결정하는 데 쓰여요. 문자열이나 숫자로 평가하지 않아요. context 참고.
breakpoint (중단점)
중단점은 디버거에게 실행을 멈추라고 말한 프로그램의 자리로, 그래서 여기저기 살펴보고 아직 문제가 없는지 볼 수 있어요.
broadcast (브로드캐스트)
여러 목적지에 동시에 데이터그램을 보내는 것.
BSD
'80년대에 유행한 향정신성 약물로, 아마 UC 버클리나 그 근처에서 개발됐을 거예요. 'System V'라고 불리는 처방전 전용 약물과 여러 면에서 비슷하지만, 무한히 더 유용해요. (아니면 적어도 더 재미있고요.) 전체 화학명은 'Berkeley Standard Distribution'이에요.
bucket (버킷)
해시 테이블 안의 위치로, 그 해시 함수에 따라 키가 같은 해시 값으로 "해시"되는 (잠재적으로 여러 개의) 항목을 담아요. (내부 정책으로서, 내부나 정책에 관심이 없으면 신경 쓸 필요가 없어요.)
buffer (버퍼)
데이터를 위한 임시 보관 위치. 데이터가 블록 버퍼링되면 버퍼가 가득 찰 때마다 목적지로 전달돼요. 라인 버퍼링이면 완전한 라인이 수신될 때마다 전달돼요. 명령 버퍼링이면 print 명령(또는 그에 상당하는 것)을 할 때마다 전달돼요. 출력이 버퍼되지 않으면 시스템이 보관 영역 없이 한 번에 한 바이트씩 처리해요. 이는 꽤 비효율적일 수 있어요.
built-in (내장)
언어에 미리 정의된 함수. 오버라이딩으로 숨겨져 있어도 CORE:: 의사패키지로 이름을 한정하면 항상 내장 함수에 접근할 수 있어요.
bundle (번들)
CPAN에서 관련된 모듈들의 그룹. (때로는 하나의 스위치 클러스터로 묶인 커맨드-라인 스위치 그룹을 가리키기도 해요.)
byte (바이트)
대부분의 곳에서 8비트의 가치가 있는 데이터 조각.
bytecode (바이트코드)
'droids가 자신의 방향(endian 참고)을 드러내고 싶지 않을 때 쓰는 피진 같은 말투예요. 20세기 후반에 컴파일러와 인터프리터 사이에서 (비슷한 이유로) 말해진 비슷한 언어들에서 이름을 따왔어요. 이 언어들은 모든 것을 아키텍처에 의존하지 않는 바이트의 수열로 표현하는 것이 특징이에요.
C
C
안에서 문 밖의 타입 정의, 난해한 우선순위 규칙, 그리고 함수 호출 메커니즘의 무거운 오버로딩으로 많은 사람이 사랑하는 언어. (사실 사람들은 소문자 식별자를 대문자보다 읽기 쉽다고 찾았기 때문에 처음에 C로 전환했어요.) Perl은 C로 작성돼서, Perl이 C에서 몇 가지 아이디어를 빌린 것은 놀랄 일이 아니에요.
cache (캐시)
데이터 저장소. 값비싼 답을 여러 번 계산하는 대신, 한 번 계산하고 결과를 저장해요.
callback (콜백)
프로그램의 다른 부분에 등록하는 핸들러로, 관심 있는 어떤 사건이 발생하면 프로그램의 그 부분이 핸들러를 트리거해 주기를 바라는 것이에요.
call by reference (참조 호출)
형식 인자가 실인자를 직접 가리키고, 서브루틴이 형식 인자를 바꿔 실인자를 바꿀 수 있는 인자 전달 메커니즘이에요. 즉 형식 인자는 실인자의 앨리어스예요. call by value도 참고하세요.
call by value (값 호출)
형식 인자가 실인자의 복사본을 가리키고, 서브루틴이 형식 인자를 바꾸어도 실인자를 바꿀 수 없는 인자 전달 메커니즘이에요. call by reference도 참고하세요.
canonical (정규)
비교를 용이하게 하기 위해 표준 형태로 축소된 것.
capture variables (캡처 변수)
$1, $2, %+, %– 같은, 패턴 일치에서 기억된 텍스트를 담고 있는 변수들. Camel 5장 "Pattern Matching" 참고.
capturing (캡처링)
정규식에서 하위 패턴 주위에 괄호를 사용해 일치된 하위 문자열을 역참조로 저장하는 것. (캡처된 문자열은 리스트 맥락에서 목록으로도 반환돼요.) Camel 5장 "Pattern Matching" 참고.
cargo cult (카고 컬트)
이해하지 않고 코드를 복사·붙여넣기하면서, 미신적으로 그 가치를 믿는 것. 이 용어는 기술적으로 진보된 문화의 탐험가와 식민자의 잔해를 다루는 산업화 이전 문화에서 유래했어요. 《신이 미치기 전에》를 보세요.
case (대소문자)
특정 문자의 속성. 원래 식자공은 대문자를 두 개의 케이스 중 위쪽에, 소문자를 아래쪽에 보관했어요. 유니코드는 세 가지 대소문자를 인식해요: lowercase(소문자, 문자 속성 \p{lower}), titlecase(타이틀케이스, \p{title}), uppercase(대문자, \p{upper}). foldcase라고 불리는 네 번째 대소문자 매핑은 그 자체로 별개의 대소문자는 아니지만, casefolding을 구현하는 데 내부적으로 사용돼요. 모든 문자가 대소문자를 가지는 것은 아니고, 어떤 비-문자도 대소문자를 가져요.
casefolding (대소문자 접기)
문자열을 대소문자 무시로 비교하거나 일치시키는 것. Perl에서는 /i 패턴 수정자, fc 함수, \F 이중 따옴표 변환 이스케이프로 구현돼요.
casemapping (대소문자 매핑)
문자열을 네 가지 유니코드 casemap 중 하나로 변환하는 과정. Perl에서는 fc, lc, ucfirst, uc 함수로 구현돼요.
character (문자)
문자열의 가장 작은 개별 요소. 컴퓨터는 문자를 정수로 저장하지만, Perl은 그것을 텍스트로 조작하게 해 줘요. 특정 문자를 나타내는 데 쓰이는 정수를 그 문자의 codepoint(코드 포인트)라고 해요.
character class (문자 클래스)
정규식에서 쓰이는 대괄호로 둘러싼 문자 목록으로, 그 지점에 집합의 어떤 문자든 올 수 있음을 나타내요. 느슨하게는, 그렇게 쓰이는 미리 정의된 문자 집합.
character property (문자 속성)
\p나 \P 메타심볼로 일치시킬 수 있는 미리 정의된 문자 클래스. 유니코드는 모든 가능한 코드 포인트에 대해 수백 개의 표준 속성을 정의하고, Perl도 몇 가지 자체 속성을 정의해요.
circumfix operator (순환 접두 연산자)
앵글 연산자, 괄호, 또는 포옹처럼 피연산자를 둘러싸는 연산자.
class (클래스)
사용자 정의 타입. Perl에서는 (직접이든 상속으로든) 클래스의 인스턴스(그 객체)를 다루는 메서드(즉 서브루틴)를 제공하는 패키지를 통해 구현돼요. inheritance도 참고하세요.
class method (클래스 메서드)
호출 대상(invocant)이 객체 참조가 아니라 패키지 이름인 메서드. 클래스 전체와 연관된 메서드. instance method도 참고하세요.
client (클라이언트)
네트워킹에서, 데이터를 교환하고 아마 서비스를 받기 위해 서버 프로세스와 접촉을 시작하는 프로세스.
closure (클로저)
런타임에 참조가 생성될 때, 외부에서 보이는 어휘 변수의 정체를, 그 어휘 변수들이 이미 스코프 밖으로 나갔다고 여겨진 후에도 추적하는 익명 서브루틴. 이런 종류의 동작이 수학자들에게 closure(폐포)의 느낌을 주기 때문에 'closure'라고 불러요.
cluster (클러스터)
정규식의 부분을 하나의 원자로 묶는 데 쓰는 괄호로 둘러싼 하위 패턴.
CODE
서브루틴에 대한 참조에 ref 함수를 적용했을 때 반환되는 단어. CV도 참고하세요.
code generator (코드 생성기)
컴파일러의 백엔드를 구현하는 코드 같은, 저수준 언어로 여러분을 위해 코드를 작성하는 시스템. program generator 참고.
codepoint (코드 포인트)
주어진 문자를 나타내는 데 컴퓨터가 사용하는 정수. ASCII 코드 포인트는 0에서 127 범위, 유니코드 코드 포인트는 0에서 0x10_FFFF 범위, Perl 코드 포인트는 네이티브 정수 크기에 따라 0에서 2³²−1 또는 0에서 2⁶⁴−1 범위예요. Perl 문화에서 때로 '서수(ordinal)'라고 불러요.
code subpattern (코드 하위 패턴)
실제 목적이 어떤 Perl 코드를 실행하는 것인 정규식 하위 패턴. 예를 들어 (?{...})와 (??{...}) 하위 패턴.
collating sequence (정렬 순서)
문자가 정렬되는 순서. 이는 문자열 비교 루틴이, 예를 들어 이 용어집의 어디에 "collating sequence"를 놓을지 결정하는 데 쓰여요.
co-maintainer (공동 관리자)
PAUSE에서 네임스페이스를 인덱싱할 권한이 있는 사람. 누구나 어떤 네임스페이스든 업로드할 수 있지만, primary 관리자와 co-maintainer만 그 기여가 인덱싱돼요.
combining character (결합 문자)
일반 범주가 Combining Mark(\p{GC=M})인 문자로, 스페이싱이거나 논스페이싱일 수 있어요. 어떤 것은 심지어 보이지 않아요. grapheme 기본 문자 뒤에 오는 결합 문자 수열은 함께 grapheme이라고 불리는 하나의 사용자-보이는 문자를 구성해요. 대부분(전부는 아니지만)의 분음 부호는 결합 문자이고, 그 반대도 마찬가지예요.
command (명령)
셸 프로그래밍에서, 프로그램 이름과 그 인자의 구문적 결합. 더 느슨하게는, 어떤 일을 시작하게 하기 위해 셸(명령 해석기)에 타이핑하는 모든 것. 훨씬 더 느슨하게는, 레이블로 시작하고 보통 세미콜론으로 끝나는 Perl 문장.
command buffering (명령 버퍼링)
Perl에서 각 Perl 명령의 출력을 저장해 두었다가 운영체제에 대한 단일 요청으로 내보내게 해 주는 메커니즘. $|($AUTOFLUSH) 변수를 참 값으로 설정해 활성화해요. 데이터가 제자리로 가지 않고 놓여 있는 것을 원하지 않을 때 쓰는데, 파일이나 파이프의 기본값이 블록 버퍼링을 쓰기 때문에 그런 일이 생길 수 있어요.
command-line arguments (커맨드-라인 인자)
셸에 명령을 실행하라고 말할 때 프로그램 이름과 함께 공급하는 값들. 이 값들은 @ARGV를 통해 Perl 프로그램에 전달돼요.
command name (명령 이름)
커맨드 라인에 타이핑된 대로 현재 실행 중인 프로그램의 이름. C에서는 명령 이름이 첫 번째 커맨드-라인 인자로 프로그램에 전달돼요. Perl에서는 $0으로 따로 들어와요.
comment (주석)
프로그램의 의미에 영향을 주지 않는 언급. Perl에서 주석은 # 문자로 시작해 줄 끝까지 계속돼요.
compilation unit (컴파일 단위)
현재 컴파일되고 있는 파일(또는 eval의 경우 문자열).
compile (컴파일)
소스 코드를 기계가 사용할 수 있는 형태로 바꾸는 과정. compile phase 참고.
compile phase (컴파일 단계)
Perl이 메인 프로그램 실행을 시작하기 전의 어떤 때. run phase도 참고하세요. 컴파일 단계는 대부분 컴파일 타임에 보내지만, BEGIN 블록, use나 no 선언, 상수 부분 표현식이 평가되는 동안에는 런타임에 보내질 수도 있어요. 어떤 use 선언의 시작과 임포트 코드도 컴파일 단계 동안 실행돼요.
compiler (컴파일러)
엄밀히 말하면, 다른 프로그램을 씹어서 그 프로그램을 "더 실행 가능한" 형태(보통 네이티브 기계 명령을 담는)로 담고 있는 또 다른 파일을 뱉어내는 프로그램. 이 정의에 따르면 perl 프로그램은 컴파일러가 아니지만, perl 프로세스 자신 안에서 프로그램을 더 실행 가능한 형태(구문 트리)로 바꾸는 일종의 컴파일러를 담고 있고, 인터프리터가 이를 해석해요. 하지만 Perl이 더 "진짜" 컴파일러처럼 동작하게 하는 확장 모듈이 있어요. Camel 16장 "Compiling" 참고.
compile time (컴파일 타임)
Perl이 코드를 이해하려 애쓰는 때. 코드가 무엇을 의미하는지 안다고 생각하고 코드가 말하는 대로 하려고 애쓰는 때(그것이 런타임)와 대조돼요.
composer (컴포저)
익명 배열이나 해시(또는 소나타)처럼 정말 객체가 아닌 참조 대상에 대한 "생성자". 예를 들어 중괄호 한 쌍은 해시의 컴포저로, 대괄호 한 쌍은 배열의 컴포저로 동작해요. Camel 8장 "References"의 "Creating References" 절 참고.
concatenation (이어붙이기)
한 고양이의 코를 다른 고양이의 꼬리에 붙이는 과정. 두 문자열에 대한 비슷한 연산이기도 해요.
conditional (조건부)
"애매한(iffy)" 무언가. Boolean context 참고.
connection (연결)
전화에서, 발신자와 수신자 전화 사이의 일시적 전기 회로. 네트워킹에서, 클라이언트와 서버 사이의 같은 종류의 일시적 회로.
construct (구성, 구성하다)
명사로는, 더 작은 조각들로 만들어진 구문 조각. 타동사로는, 생성자를 사용해 객체를 만드는 것.
constructor (생성자)
객체를 구성하고, 초기화하고, bless하고, 반환하는 어떤 클래스 메서드, 인스턴스, 서브루틴. 때로는 컴포저를 의미하기도 느슨하게 써요.
context (맥락)
주변 또는 환경. 둘러싼 코드가 주는 맥락은 특정 표현식이 어떤 종류의 데이터를 반환할 것으로 예상되는지 결정해요. 세 가지 주요 맥락은 리스트 맥락, 스칼라 맥락, void 맥락이에요. 스칼라 맥락은 때로 불리언 맥락, 숫자 맥락, 문자열 맥락, void 맥락으로 세분돼요. '신경 안 씀' 맥락도 있어요(신경 쓴다면 Camel 2장 "Bits and Pieces"에서 다뤄요).
continuation (연속)
하나 이상의 물리적 줄을 하나의 논리적 줄로 취급하는 것. Makefile 줄은 개행 앞에 백슬래시를 넣어 계속돼요. RFC 822가 정의한 메일 헤더는 개행 뒤에 공백이나 탭을 넣어 계속돼요. 일반적으로 Perl의 줄은 어떤 형태의 연속 표시도 필요 없어요. 공백(개행 포함)이 즐겁게 무시되거든요. 대체로요.
core dump (코어 덤프)
프로세스의 시체로, 보통 특정 종류의 치명적 오류의 결과로 프로세스의 작업 디렉터리에 남겨진 파일 형태예요.
CPAN
Comprehensive Perl Archive Network(포괄적 Perl 아카이브 네트워크). (자세한 내용은 Camel 서문과 Camel 19장 "CPAN" 참고.)
C preprocessor (C 전처리기)
전형적인 C 컴파일러의 첫 번째 패스로, #로 시작하는 줄을 조건부 컴파일과 매크로 정의용으로 처리하고, 현재 정의에 기반해 프로그램 텍스트에 여러 조작을 수행해요. cpp(1)로도 알려져 있어요.
cracker (크래커)
컴퓨터 시스템의 보안을 깨뜨리는 사람. 크래커는 진짜 해커일 수도, 그냥 스크립트 기디(script kiddie)일 수도 있어요.
currently selected output channel (현재 선택된 출력 채널)
select(FILEHANDLE)로 지정된 마지막 파일핸들. 파일핸들이 선택되지 않았다면 STDOUT.
current package (현재 패키지)
현재 문장이 컴파일되는 패키지. 프로그램 텍스트에서 현재 어휘 스코프나 감싸는 어휘 스코프를 통해 거꾸로 스캔하여 package 선언을 찾아요. 그것이 현재 패키지 이름이에요.
current working directory (현재 작업 디렉터리)
working directory 참고.
CV
학계에서, curriculum vitæ, 화려한 종류의 이력서. Perl에서, 서브루틴을 담고 있는 내부 '코드 값' typedef. CV 타입은 SV의 하위 클래스예요.
D
dangling statement (매달린 문장)
중괄호 없이 if나 while 조건에 매달린 맨몸의 단일 문장. C는 그것을 허용해요. Perl은 허용하지 않아요.
datagram (데이터그램)
UDP 메시지 같은 데이터 패킷으로, (관여된 프로그램의 관점에서) 네트워크를 통해 독립적으로 보낼 수 있어요. (사실 모든 패킷은 IP 수준에서 독립적으로 보내지지만, TCP 같은 스트림 프로토콜은 이것을 프로그램에게 숨겨요.)
data structure (데이터 구조)
여러 데이터 조각들이 서로 어떻게 관련되고, 모두 합쳤을 때 어떤 모양을 이루는지. 직사각형 테이블이나 삼각형 트리처럼요.
data type (데이터 타입)
가능한 값의 집합과, 그 값들을 다루는 법을 아는 모든 연산. 예를 들어 숫자 데이터 타입은 작업할 수 있는 특정 숫자 집합과, 숫자에 수행할 수 있지만 "Kilroy" 같은 문자열에는 말이 안 되는 다양한 수학 연산을 가져요. 문자열은 이어붙이기 같은 자기 연산이 있어요. 더 작은 조각 여러 개로 만들어진 복합 타입은 보통 그것들을 구성하고 분해하고 어쩌면 재배열하는 연산을 가져요. 현실 세계의 사물을 모델링하는 객체는 실제 활동에 대응하는 연산을 자주 가져요. 예를 들어 엘리베이터를 모델링한다면 엘리베이터 객체에 open_door 메서드가 있을 수 있어요.
DBM
"Database Management" 루틴의 약자로, 디스크 파일을 사용해 연관 배열을 에뮬레이트하는 일련의 루틴. 그 루틴은 동적 해싱 방식을 사용해 두 번의 디스크 접근만으로 어떤 항목이든 찾아요. DBM 파일은 Perl 프로그램이 여러 호출에 걸쳐 영속적 해시를 유지하게 해 줘요. 해시 변수를 다양한 DBM 구현에 tie할 수 있어요.
declaration (선언)
무언가가 존재한다고 말하고 어쩌면 어떤 모습인지 설명하지만, 언제 어디서 쓸지에 대한 어떤 약속도 하지 않는 어서션. 선언은 레시피에서 "밀가루 두 컵, 큰 달걀 하나, 올챙이 네댓 마리..."라고 말하는 부분과 같아요. 반대말은 statement 참고. 어떤 선언은 문장으로도 기능한다는 점을 주목하세요. 서브루틴 선언은 본문이 제공되면 정의로도 동작해요.
declarator (선언자)
프로그램에게 어떤 종류의 변수를 원하는지 알려주는 것. Perl은 변수를 선언하도록 요구하지 않지만, 기본과 다른 무언가를 원한다는 뜻으로 my, our, state를 쓸 수 있어요.
decrement (감소)
변수에서 값을 빼는 것. "'$x'를 decrement하세요"(값에서 1을 제거한다는 뜻)나 "$x를 3만큼 decrement하세요"처럼.
default (기본값)
직접 값을 공급하지 않으면 여러분을 위해 선택된 값.
defined (정의됨)
의미를 가짐. Perl은 사람들이 시도하는 것 중 일부는 의미가 없다고 생각해요. 특히 값을 한 번도 주지 않은 변수를 사용하는 것과, 존재하지 않는 데이터에 대해 특정 연산을 수행하는 것. 예를 들어 파일 끝을 지나 데이터를 읽으려 하면 Perl은 정의되지 않은 값을 돌려줘요. false와 Camel 27장 "Functions"의 defined 항목도 참고하세요.
delimiter (구분자)
임의 크기의 텍스트 객체에 경계를 설정하는 문자나 문자열로, separator나 terminator와 혼동해서는 안 돼요. "delimit(구분하다)"은 실제로 "둘러싸다(surround)" 또는 "감싸다(enclose)"를 뜻해요(이 괄호가 하는 것처럼).
dereference (역참조)
"참조를 따라가 그것이 가리키는 것에 도달하는 것"을 뜻하는 멋진 컴퓨터 과학 용어. "de" 부분은 간접성(인다이렉션)의 한 수준을 제거한다는 사실을 가리켜요.
derived class (파생 클래스)
메서드 중 일부를 기본 클래스라고 불리는 더 일반적인 클래스에 관해 정의하는 클래스. 클래스가 기본 클래스나 파생 클래스로만 배타적으로 분류되는 것은 아니라는 점을 주목하세요. 클래스는 동시에 파생 클래스이자 기본 클래스로 기능할 수 있는데, 꽤 클래스답죠.
descriptor (디스크립터)
file descriptor 참고.
destroy (파괴)
참조 대상의 메모리를 할당 해제하는 것(그것이 있으면 먼저 DESTROY 메서드를 트리거하며).
destructor (소멸자)
객체가 스스로를 파괴하려고 생각할 때 호출되는 특별한 메서드. Perl 프로그램의 DESTROY 메서드는 실제 파괴를 하지 않아요. Perl은 클래스가 관련 정리를 하고 싶어할 경우를 대비해 메서드만 트리거해요.
device (장치)
컴퓨터에 연결된 멋진 하드웨어 기기(디스크나 테이프 드라이브, 모뎀, 조이스틱, 마우스 같은)로, 운영체제가 파일(또는 파일 무리)처럼 보이게 만들려고 해요. Unix에서 이런 가짜 파일은 /dev 디렉터리에 사는 경향이 있어요.
directive (지시어)
pod 지시어. Camel 23장 "Plain Old Documentation" 참고.
directory (디렉터리)
다른 파일을 포함하는 특별한 파일. 어떤 운영체제는 이것을 '폴더', '서랍', '카탈로그'라고 불러요.
directory handle (디렉터리 핸들)
읽기 위해 디렉터리를 여는 특정 인스턴스를, 닫을 때까지 나타내는 이름. opendir 함수 참고.
discipline (디시플린)
어떤 사람은 필요해 하고 어떤 사람은 피해요. Perl에서는 I/O 레이어를 말하는 옛 방식이에요.
dispatch (디스패치)
무언가를 올바른 목적지로 보내는 것. 종종 알고리즘적으로 선택된 목적지로 프로그램 제어를 전송하는 것을 나타내는 은유로 쓰이는데, 함수 참조 테이블에서 찾거나, 객체 메서드의 경우 상속 트리를 횡단하며 메서드에 대한 가장 구체적인 정의를 찾는 식이에요.
distribution (배포판)
소프트웨어 시스템의 표준적인, 묶인 릴리스. 기본 용법은 소스 코드가 포함된다는 뜻이에요. 그렇지 않으면 '바이너리 전용' 배포판이라고 불러요.
dual-lived (이중 생명)
어떤 모듈은 표준 라이브러리와 CPAN 둘 다에 살아요. 이런 모듈은 사람들이 어느 한 버전을 수정하면서 두 트랙에서 개발될 수 있어요. 현재 추세는 이런 상황을 풀어내는 것이에요.
dweomer (드워머)
매혹, 환각, 환영, 요술. Perl의 마법 같은 dwimmer 효과가 기대한 대로 되지 않고 오히려 난해한 dweomercraft, 요술, 경이의 산물인 것처럼 보일 때 말해요. [중세 영어에서.]
dwimmer
DWIM은 "Do What I Mean"의 두문자어로, 어떤 것이 과도한 소란 없이 원하는 대로 해야 한다는 원칙이에요. "dwimming"을 하는 코드 조각은 "dwimmer"예요. Dwimming은 많은 뒤에서 벌어지는 마법을 요구할 수 있는데, (제대로 뒤에 숨지 않으면) 대신 dweomer라고 불러요.
dynamic scoping (동적 스코핑)
동적 스코프 위에서 작동하며, 변수를 처음 사용되는 블록의 나머지와, 블록의 나머지가 호출하는 어떤 서브루틴에서 볼 수 있게 만들어요. 동적 스코프 변수는 local 연산자로 값을 일시적으로 바꿀 수 있어요(나중에 암시적으로 복원됨). (lexical scoping과 비교.) 더 느슨하게는, 다른 서브루틴을 호출하는 중간에 있는 서브루틴이 런타임에 그 서브루틴을 어떻게 "포함"하는지를 의미하기도 해요.
E
eclectic (절충적)
많은 출처에서 파생됨. 어떤 사람은 너무 많다고 말할 거예요.
element (요소)
기본 구성 요소. 배열에 관해 말할 때, 배열을 구성하는 항목 중 하나예요.
embedding (임베딩)
무언가가 다른 것에 포함될 때, 특히 놀라운 것으로 간주될 수 있을 때: "내 에디터에 완전한 Perl 인터프리터를 임베드했어요!"
empty subclass test (빈 하위 클래스 테스트)
빈 파생 클래스는 기본 클래스와 정확히 동일하게 동작해야 한다는 개념.
encapsulation (캡슐화)
인터페이스를 구현으로부터 분리하는 추상화의 베일로(강제든 아니든), 객체 상태에 대한 모든 접근이 오직 메서드를 통해서만 이루어져야 한다는 것을 명령해요.
endian (엔디언)
little-endian과 big-endian 참고.
en passant (앤 파상)
값이 복사되는 동안 그 값을 바꿀 때. [프랑스어 "지나가며"에서, 체스의 이국적인 폰 잡기 동작처럼.]
environment (환경)
프로세스가 부모로부터 상속하는 환경 변수의 집합 전체. %ENV를 통해 접근돼요.
environment variable (환경 변수)
사용자 같은 어떤 고수준 에이전트가 자신의 선호를 미래의 후손(자식 프로세스, 손자 프로세스, 증손자 프로세스 등)에게 전달할 수 있게 하는 메커니즘. 각 환경 변수는 해시의 한 항목처럼 키/값 쌍이에요.
EOF
End of File(파일 끝). here 문서의 종결 문자열을 가리키는 은유로 쓰이기도 해요.
errno
시스템 콜이 실패할 때 반환하는 오류 번호. Perl은 $!이름으로 그 오류를 가리켜요(English 모듈을 쓰면 $OS_ERROR).
error (오류)
exception 또는 fatal error 참고.
escape sequence (이스케이프 시퀀스)
metasymbol 참고.
exception (예외)
오류를 뜻하는 화려한 용어. fatal error 참고.
exception handling (예외 처리)
프로그램이 오류에 응답하는 방식. Perl의 예외 처리 메커니즘은 eval 연산자예요.
exec
현재 프로세스의 프로그램을 버리고, 프로세스를 종료하거나 보유한 어떤 자원(옛 메모리 이미지 제외)을 포기하지 않고 다른 것으로 교체하는 것.
executable file (실행 파일)
이 파일을 프로그램으로 실행해도 된다는 것을 운영체제에 알려주도록 특별히 표시된 파일. 보통 'executable'로 줄여 불러요.
execute (실행)
프로그램이나 서브루틴을 실행하는 것. (kill 내장과는 아무 관련이 없어요. 신호 핸들러를 실행하려는 게 아니라면요.)
execute bit (실행 비트)
운영체제에 이 프로그램을 실행할 수 있다고 알려주는 특별한 표시. Unix에는 실제로 실행 비트가 세 개 있고, 어느 비트가 쓰이는지는 파일을 단독으로, 공동으로, 아예 소유하지 않는지에 따라 달라져요.
exit status (종료 상태)
status 참고.
exploit (익스플로잇)
이 경우 명사로 쓰여, 프로그램을 손상시켜 작성자가 의도하지 않은 일을 하게 하는 알려진 방법을 가리켜요. 여러분의 임무는 익스플로잇할 수 없는 프로그램을 쓰는 것이에요.
export (익스포트)
모듈의 심볼을 다른 모듈이 임포트할 수 있게 만드는 것.
expression (표현식)
값이 필요한 자리에서 합법적으로 말할 수 있는 모든 것. 보통 리터럴, 변수, 연산자, 함수, 서브루틴 호출로 구성되지요, 반드시 그 순서일 필요는 없어요.
extension (확장)
컴파일된 C나 C++ 코드도 끌어들이는 Perl 모듈. 더 일반적으로, 멀티스레딩처럼 Perl로 컴파일될 수 있는 실험적 옵션.
F
false (거짓)
Perl에서, 문자열 맥락에서 평가되면 "" 또는 "0"처럼 보일 어떤 값. 정의되지 않은 값은 ""로 평가되므로 모든 정의되지 않은 값은 거짓이지만, 모든 거짓 값이 정의되지 않은 것은 아니에요.
FAQ
Frequently Asked Question(자주 묻는 질문). (반드시 자주 답해지진 않지만요, 특히 답이 Perl과 함께 표준으로 제공되는 Perl FAQ에 나올 때요.)
fatal error (치명적 오류)
잡히지 않은 예외로, 표준 오류 스트림에 메시지를 출력한 후 프로세스의 종료를 초래해요. eval 안에서 일어난 오류는 치명적이지 않아요. 대신 eval이 예외 메시지를 $@($EVAL_ERROR) 변수에 넣은 후 종료돼요. die 연산자로 치명적 오류를 유발할 수 있어요(예외를 던지거나 올리는 것으로 알려진), 하지만 이것은 동적으로 감싸는 eval이 잡을 수 있어요. 잡히지 않으면 die는 치명적 오류가 돼요.
feeping creaturism (피핑 크리처리즘)
"creeping featurism"의 말 퍼뜨린 말(spoonerism)로, 프로그램에 기능 하나를 더 추가하려는 생물학적 충동을 지적해요.
field (필드)
더 긴 문자열, 레코드, 라인의 일부인 단일 숫자 또는 문자열 데이터 조각. 가변-폭 필드는 보통 구분자로 나뉘어요(그래서 필드를 추출하려면 split을 쓰고), 고정-폭 필드는 보통 고정 위치에 있어요(그래서 unpack을 써요). 인스턴스 변수는 '필드'로도 알려져요.
FIFO
First In, First Out(선입선출). LIFO도 참고. 이름 있는 파이프(named pipe)의 별명이기도 해요.
file (파일)
데이터의 이름 있는 모음으로, 보통 파일 시스템의 디렉터리에 디스크에 저장돼요. 사무 용어를 좋아한다면 문서에 대략 비슷해요. 현대 파일 시스템에서는 실제로 파일에 하나 이상의 이름을 줄 수 있어요. 디렉터리와 장치처럼 특별한 속성을 가진 파일도 있어요.
file descriptor (파일 디스크립터)
운영체제가 어느 열린 파일에 대해 말하고 있는지 추적하는 데 쓰는 작은 숫자. Perl은 파일 디스크립터를 표준 I/O 스트림 안에 숨기고 그 스트림을 파일핸들에 붙여요.
fileglob
파일 이름에 대한 "와일드카드" 일치. glob 함수 참고.
filehandle (파일핸들)
(파일의 실제 이름과 관련될 필요가 없는) 식별자로, 닫을 때까지 파일을 여는 특정 인스턴스를 나타내요. 여러 다른 파일을 연달아 열고 닫을 예정이라면 각각을 같은 파일핸들로 여는 것이 좋아요. 각 파일을 처리하는 별도 코드를 쓸 필요가 없으니까요.
filename (파일 이름)
파일의 이름 하나. 이 이름은 디렉터리에 나열돼요. open에서 어느 파일을 정확히 열고 싶은지 운영체제에 알리고, 그 파일을 파일핸들과 연관시키는 데 쓸 수 있어요. 파일핸들은 닫을 때까지 프로그램에서 그 파일의 이후 정체성을 지녀요.
filesystem (파일 시스템)
디스크의 한 파티션에 있는 디렉터리와 파일의 집합. 때로 '파티션'으로 알려져요. 적어도 Unix에서는 파일 자체를 실제로 옮기지 않고도 파일 시스템 안에서 파일 이름을 바꾸거나 디렉터리에서 디렉터리로 파일을 옮길 수 있어요.
file test operator (파일 검사 연산자)
파일에 대해 어떤 것이 참인지 판단하는 데 쓰는 내장 단항 연산자. –o $filename처럼 파일의 소유자인지 검사하는 데요.
filter (필터)
입력 스트림을 받아 출력 스트림으로 변환하도록 설계된 프로그램.
first-come (선착)
네임스페이스를 처음 업로드한 PAUSE 저자는 자동으로 그 네임스페이스의 primary 관리자가 돼요. '선착' 권한은 그 역할이 할당된 primary 관리자와 자동으로 받은 관리자를 구분해요.
flag (플래그)
이 용어는 너무 많은 것을 뜻하기 때문에 피하는 경향이 있어요. 인자를 스스로 취하지 않는 커맨드-라인 스위치(Perl의 –n과 –p 플래그 같은)를 뜻할 수도 있고, 덜 빈번하게는 단일 비트 표시(sysopen에서 쓰이는 O_CREAT, O_EXCL 플래그 같은)를 뜻할 수도 있어요. 때로 비공식적으로 특정 regex 수정자를 가리키는 데 쓰여요.
floating point (부동소수점)
숫자를 "과학적 표기법"으로 저장하는 방법으로, 숫자의 정밀도가 그 크기와 무관하게 돼요(소수점이 "뜬다"). Perl은 정수를 써서 모면할 수 없을 때 숫자 작업에 부동소수점 숫자(때로 'float'라고 불러요)를 사용해요. 부동소수점 숫자는 실수의 단순한 근사치예요.
flush (플러시)
버퍼를 비우는 행위, 종종 가득 차기 전에.
FMTEYEWTK
Far More Than Everything You Ever Wanted To Know(원했던 것보다 훨씬 더 많은 것). 하나의 좁은 주제에 대한 철저한 논문으로, 일종의 슈퍼-FAQ. 더 많은 것은 Tom에게 물어보세요.
foldcase (폴드케이스)
대소문자에 무관하게 비교하거나 일치시킬 때 유니코드에서 쓰는 casemap. 유니코드의 복잡한 일-대-다 대소문자 매핑 때문에 lowercase, titlecase, uppercase 비교는 모두 신뢰할 수 없어요. Foldcase는 (특정 코드 포인트에 대해 부분적으로 분해된 정규화 형태를 사용하는) 소문자 변형으로, 이 문제를 해결하기 위해 특별히 만들어졌어요.
fork
부모 프로세스와 동일한 자식 프로세스를, 잉태되는 순간에 만드는 것. 적어도 자기 생각을 가지기 전까지는요. 보호된 메모리를 가진 스레드.
formal arguments (형식 인자)
서브루틴이 자신의 인자를 알게 되는 일반 이름. 많은 언어에서 형식 인자는 항상 개별 이름이 주어지지만, Perl에서 형식 인자는 그저 배열의 요소들이에요. Perl 프로그램의 형식 인자는 $ARGV[0], $ARGV[1] 등이에요. 마찬가지로 Perl 서브루틴의 형식 인자는 $_[0], $_[1] 등이에요. 값들을 my 목록에 할당해 인자에 개별 이름을 줄 수 있어요. actual arguments도 참고하세요.
format (형식)
무언가를 인쇄할 때 예쁘고 멋지게 나오도록 어디에 몇 개의 공백과 숫자 등을 놓을지에 대한 명세.
freely available (자유 이용 가능)
그것을 얻기 위해 돈을 내지 않아도 된다는 뜻이지만, 저작권은 여전히 다른 사람(Larry 같은)에게 속할 수 있어요.
freely redistributable (자유 재배포 가능)
그것의 불법 복사본을 친구에게 주는 것이 들켜도 법적 문제가 없다는 뜻. 사실 우리는 당신이 모든 친구에게 복사본을 주길 바래요.
freeware (프리웨어)
역사적으로, 나눠 주는 어떤 소프트웨어든, 특히 소스 코드도 함께 제공하는 경우. 지금은 종종 오픈 소스 소프트웨어라고 불러요. 최근에는 이 용어를 오픈 소스 소프트웨어와 대비해, Free Software Foundation의 GPL(General Public License)로 출시된 자유 소프트웨어만 가리키는 데 쓰는 추세가 있지만, 어원적으로 정당화하기 어려워요.
function (함수)
수학적으로, 입력 값 집합의 각각을 특정 출력 값에 매핑하는 것. 컴퓨터에서는 값을 반환하는 서브루틴이나 연산자를 가리켜요. 입력 값(인자라고 불리는)을 가질 수도 있고 아닐 수도 있어요.
funny character (펀니 문자)
Larry 같은 사람, 또는 그의 특이한 친구 중 하나. 또한 Perl이 변수의 명사 표시로 요구하는 이상한 접두사를 가리키기도 해요.
G
garbage collection (가비지 컬렉션)
잘못 이름 지어진 기능—'엄마가 뒤를 치워주길 기대하기'라고 불러야 해요. 엄밀히 말하면 Perl은 이것을 하지 않고, 참조 카운팅 메커니즘에 의존해 사물을 정돈해요. 하지만 우리는 좀처럼 엄밀하게 말하지 않고, 참조 카운팅 방식을 가비지 컬렉션의 한 형태로 자주 부를 거예요. (위안이 된다면, 인터프리터가 종료될 때 순환 참조 같은 것으로 지저분하게 만들었다면 모든 것이 정리되는지 확인하기 위해 "진짜" 가비지 컬렉터가 실행돼요.)
GID
Group ID—Unix에서, 운영체제가 당신과 당신 그룹의 멤버를 식별하는 데 쓰는 숫자 그룹 ID.
glob
엄밀히, 파일 이름 목록을 만들려 할 때 "glob"의 문자들과 일치할 셸의 * 문자. 느슨하게, glob과 비슷한 기호를 사용해 패턴 매칭을 하는 행위. fileglob과 typeglob도 참고하세요.
global (전역)
어디서나 볼 수 있는 것. 보통 프로그램 어디서나 보이는 변수와 서브루틴에 대해 쓰여요. Perl에서 오직 특정 특별한 변수만이 진정한 전역이에요—대부분의 변수(그리고 모든 서브루틴)는 현재 패키지에만 존재해요. 전역 변수는 our로 선언할 수 있어요. Camel 4장 "Statements and Declarations"의 "Global Declarations" 참고.
global destruction (전역 파괴)
Perl 인터프리터가 종료될 때 일어나는 전역의 가비지 컬렉션(및 관련 객체 소멸자 실행). 전역 파괴는 종말(Apocalypse)과 혼동해서는 안 돼요, 혼동해야 할 때 빼고요.
glue language (접착 언어)
함께 묶일 의도가 없는 것들을 묶는 데 뛰어난 Perl 같은 언어.
granularity (세분성)
정신적으로 다루는 조각의 크기.
grapheme (그래핌)
graphene은 한 원자 두께의 육각형 결정 격자로 배열된 탄소의 동소체예요. grapheme, 더 완전히는 grapheme cluster string은 하나의 사용자-보이는 문자로, 차례로 여러 문자(코드 포인트) 길이일 수 있어요. 예를 들어 캐리지 리턴과 라인 피드의 결합은 단일 grapheme이지만 두 문자이며, "ȫ"는 단일 grapheme이지만 정규화에 따라 하나, 둘, 또는 셋의 문자가 돼요.
greedy (탐욕스러운)
수량자가 가능한 한 많은 것을 일치시키려는 하위 패턴.
grep
원래 옛 Unix 에디터 명령 "Globally search for a Regular Expression and Print it"에서 왔고, 이제는 어떤 종류의 검색, 특히 텍스트 검색의 일반적 의미로 쓰여요. Perl에는 주어진 어떤 기준과 일치하는 요소를 목록에서 검색하는 내장 grep 함수가 있지만, grep(1) 프로그램은 하나 이상의 파일에서 정규식과 일치하는 줄을 검색해요.
group (그룹)
당신이 멤버인 사용자 집합. 어떤 운영체제(Unix 같은)에서는 특정 파일 접근 권한을 당신 그룹의 다른 멤버에게 줄 수 있어요.
GV
typeglob을 담고 있는 내부 'glob 값' typedef. GV 타입은 SV의 하위 클래스예요.
H
hacker (해커)
골프를 하든, 오크와 싸우든, 프로그래밍을 하든 기술 문제를 해결하는 데 멋지게 집요한 사람. 해커는 도덕적으로 중립적인 용어예요. 좋은 해커를 사악한 크래커나 배경지식 없는 스크립트 기디와 혼동해서는 안 돼요. 혼동한다면, 당신이 사악하거나 배경지식이 없다고 추정할 거예요.
handler (핸들러)
프로그램이 신호 같은 어떤 내부 사건, 또는 연산자 오버로딩의 대상인 연산자와의 조우에 응답해야 할 때 Perl이 호출하는 서브루틴이나 메서드. callback도 참고하세요.
hard reference (하드 참조)
참조 대상의 실제 주소를 담고 있어 참조 대상의 참조 카운트가 그것을 계산에 넣게 하는 스칼라 값. (어떤 하드 참조는 내부에 보유되는데, typeglob의 변수 슬롯 중 하나에서 해당 참조 대상으로의 암시적 참조 같은 게 그래요.) 하드 참조는 심볼릭 참조와 달라요.
hash (해시)
키/값 쌍의 순서 없는 연관 관계로, 문자열 키로 연관된 데이터 값을 쉽게 찾을 수 있게 저장돼 있어요. 이 용어집은 해시와 같아요—정의될 단어가 키이고 정의가 값이죠. 해시는 때로 7음절로 '연관 배열(associative array)'이라고도 불리는데, 그냥 'hash'라고 부를 꽤 좋은 이유예요.
hash table (해시 테이블)
Perl이 연관 배열(해시)을 효율적으로 구현하기 위해 내부적으로 쓰는 데이터 구조. bucket도 참고하세요.
header file (헤더 파일)
특정 난해한 연산을 하기 위해 프로그램의 나머지 "앞에(ahead)" 포함해야 하는 필수 정의를 담고 있는 파일. C 헤더 파일은 .h 확장자를 가져요. Perl은 정말로 헤더 파일이 없지만, 역사적으로 Perl은 때로 .ph 확장자를 가진 번역된 .h 파일을 썼어요. Camel 27장 "Functions"의 require 참고. (헤더 파일은 모듈 메커니즘으로 대체됐어요.)
here document (히어 문서)
셸의 비슷한 구조에서 이름을 따왔는데, 그 구조는 명령 뒤의 줄들이 그 명령에 공급될, 종결 문자열까지의 별도 파일인 척해요. 하지만 Perl에서는 그것은 그냥 화려한 형태의 따옴표예요.
hexadecimal (16진수)
밑수 16의 숫자, 짧게 "hex". 10부터 15까지의 숫자는 관례상 문자 a부터 f로 표현돼요. Perl의 16진 상수는 0x로 시작해요. Camel 27장 "Functions"의 hex 함수도 참고하세요.
home directory (홈 디렉터리)
로그인할 때 들어가는 디렉터리. Unix 시스템에서 이름은 종종 로그인에 의해 $ENV{HOME}이나 $ENV{LOGDIR}에 놓이지만, (getpwuid($<))[7]로 찾을 수도 있어요. (어떤 플랫폼은 홈 디렉터리 개념이 없어요.)
host (호스트)
프로그램이나 다른 데이터가 있는 컴퓨터.
hubris (휴브리스)
과도한 자만심. Zeus가 당신을 번개로 치는 종류의 것. 또한 다른 사람들이 나쁘게 말하고 싶지 않을 프로그램을 쓰고(유지하고) 만들게 하는 특성. 그래서 프로그래머의 세 번째 위대한 덕목이에요. laziness와 impatience도 참고하세요.
HV
Perl의 해시에 대한 내부 표현을 담고 있는 'hash value' typedef의 약자. HV 타입은 SV의 하위 클래스예요.
I
identifier (식별자)
컴퓨터 프로그램이 관심을 가질 대부분의 것에 대한 합법적으로 형성된 이름. 많은 언어(Perl 포함)는 식별자가 알파벳 문자로 시작한 후 알파벳과 숫자를 담도록 허용해요. Perl은 또한 알파벳을 허용하는 곳 어디든 밑줄 같은 연결 구두점을 허용해요. (Perl은 한정된 이름 같은 더 복잡한 이름도 가져요.)
impatience (조바심)
컴퓨터가 게으를 때 느끼는 분노. 이것은 당신의 필요에 반응만 하지 않고 실제로 예상하는 프로그램을 쓰게 해요. 아니면 적어도 그런 척하는 프로그램을. 그래서 프로그래머의 두 번째 위대한 덕목이에요. laziness와 hubris도 참고하세요.
implementation (구현)
코드 조각이 실제로 그 일을 처리하는 방식. 코드 사용자는 구현 세부사항이 공개된 인터페이스의 일부가 아닌 한 그대로 유지될 것이라고 기대해서는 안 돼요.
import (임포트)
다른 모듈에서 익스포트된 심볼에 대한 접근을 얻는 것. Camel 27장 "Functions"의 use 참고.
increment (증가)
무언가의 값을 1만큼(또는 지정되었다면 다른 숫자만큼) 증가시키는 것.
indexing (인덱싱)
옛날에는 실제 색인(전화번호부 같은)에서 키를 찾는 행위. 하지만 지금은 단지 어떤 종류의 키나 위치를 사용해 해당 값을 찾는 행위일 뿐이에요, 실제 인덱스가 없더라도요. 사물이 퇴화해서 Perl의 index 함수는 그저 한 문자열의 다른 문자열 내 위치(인덱스)를 찾을 뿐이에요.
indirect filehandle (간접 파일핸들)
파일핸들로 쓸 수 있는 무언가로 평가되는 표현식: 문자열(파일핸들 이름), typeglob, typeglob 참조, 또는 저수준 IO 객체.
indirection (간접성)
프로그램의 무언가가 찾던 값이 아니라 값이 어디에 있는지 나타내면, 그것이 간접성이에요. 이것은 심볼릭 참조나 하드 참조로 할 수 있어요.
indirect object (간접 객체)
영어 문법에서, 동사와 직접 목적어 사이의 짧은 명사구로, 행동의 수혜자나 수령자를 나타내요. Perl에서 print STDOUT "$foo\n";는 "동사 간접-객체 객체"로 이해될 수 있어요. STDOUT이 print 행동의 수령자이고 "$foo"가 인쇄되는 객체예요. 비슷하게 메서드를 호출할 때 메서드와 그 인자 사이의 여격 자리에 호출 대상을 놓을 수 있어요:
$gollum = new Pathetic::Creature "Sméagol";
give $gollum "Fisssssh!";
give $gollum "Precious!";
indirect object slot (간접 객체 슬롯)
간접 객체 호출 문법을 쓸 때 메서드 호출과 그 인자 사이에 오는 구문 위치. (슬롯은 그것과 다음 인자 사이에 쉼표가 없다는 것으로 구별돼요.) STDERR이 여기 간접 객체 슬롯에 있어요:
print STDERR "Awake! Awake! Fear, Fire, Foes! Awake!\n";
infix (인픽스)
24 * 7의 곱셈처럼 피연산자들 사이에 오는 연산자.
inheritance (상속)
조상으로부터 받는 것, 유전적으로든 아니든. 당신이 우연히 클래스라면 조상은 기본 클래스라 부르고 후손은 파생 클래스라 불러요. single inheritance와 multiple inheritance 참고.
instance (인스턴스)
"클래스의 인스턴스"의 줄임말로, 그 클래스의 객체를 뜻해요.
instance data (인스턴스 데이터)
instance variable 참고.
instance method (인스턴스 메서드)
클래스 메서드와 대비되는 객체의 메서드.
호출 대상이 패키지 이름이 아니라 객체인 메서드. 클래스의 모든 객체는 그 클래스의 모든 메서드를 공유하므로, 인스턴스 메서드는 특정 인스턴스에 적용되는 것이 아니라 클래스의 모든 인스턴스에 적용돼요. class method도 참고하세요.
instance variable (인스턴스 변수)
객체의 속성. 클래스 전체가 아니라 특정 객체와 함께 저장된 데이터.
integer (정수)
분수(10진) 부분이 없는 숫자. 1, 2, 3처럼 세는 숫자이지만 0과 음수도 포함해요.
interface (인터페이스)
코드 조각이 영원히 제공하겠다고 약속하는 서비스. 마음대로 바꿔도 된다고 느끼는 구현과 대조돼요.
interpolation (보간)
스칼라나 리스트 값을 다른 값의 중간 어딘가에 삽입하는 것으로, 원래부터 거기 있었던 것처럼 보이게 해요. Perl에서 변수 보간은 이중 따옴표 문자열과 패턴에서 일어나고, 리스트 보간은 리스트 연산자나 LIST를 취하는 다른 그런 구성에 전달할 값 목록을 만들 때 일어나요.
interpreter (인터프리터)
엄밀히, 두 번째 프로그램을 읽고, 컴파일러가 하듯 프로그램을 먼저 다른 형태로 바꾸지 않고 두 번째 프로그램이 말하는 대로 직접 하는 프로그램. 이 정의에 따르면 Perl은 인터프리터가 아니에요. 프로그램을 perl 프로세스 자신 안에서 더 실행 가능한 형태(구문 트리)로 바꾸는 일종의 컴파일러를 담고 있고, Perl 런타임 시스템이 이를 해석하니까요.
invocant (호출 대상)
메서드가 대신 호출되는 주체. 클래스 메서드에서 호출 대상은 패키지 이름이에요. 인스턴스 메서드에서 호출 대상은 객체 참조예요.
invocation (호출)
신, 악마, 프로그램, 메서드, 서브루틴, 함수를 불러내 원한다고 생각하는 것을 하게 하는 행위. 우리는 보통 서브루틴을 "호출(call)"하지만 메서드는 "호출(invoke)"해요. 더 멋져 보이니까요.
I/O
파일이나 장치로부터의 입력 또는 그로의 출력.
IO
내부 I/O 객체. 간접 객체(indirect object)를 뜻할 수도 있어요.
I/O layer (I/O 레이어)
데이터와 입력으로 받는 것 또는 출력으로 끝나는 것 사이의 필터 중 하나.
IPA
India Pale Ale. 또한 International Phonetic Alphabet(국제 음성 기호), 전 세계 음성 표기법에 쓰이는 표준 알파벳. 많은 결합 문자를 포함해 유니코드를 크게 활용해요.
IP
Internet Protocol(인터넷 프로토콜), 또는 Intellectual Property(지적 재산).
IPC
Interprocess Communication(프로세스 간 통신).
is-a
한 객체가 다른 일반 객체의 더 구체적인 버전으로 간주되는 두 객체 사이의 관계: "낙타는 포유류다." 일반 객체는 플라톤적 의미에서만 존재하기 때문에, 우리는 보통 객체 개념에 약간의 추상화를 더해 그 관계를 일반 기본 클래스와 특정 파생 클래스 사이의 관계로 생각해요. 이상하게도 플라톤적 클래스가 항상 플라톤적 관계를 가지는 것은 아니에요—inheritance 참고.
iteration (반복)
무언가를 반복적으로 하는 것.
iterator (이터레이터)
반복하려는 무언가에서 어디에 있는지 추적하는 특별한 프로그래밍 장치. Perl의 foreach 루프는 이터레이터를 담고 있어요. 해시도 담고 있어서 each로 훑을 수 있어요.
IV
정수 4, Tom이 가장 좋아하는 에디터인 6과 혼동하지 마세요. IV는 또한 스칼라가 담을 수 있는 타입의 내부 Integer Value(정수 값)를 뜻하며, NV와 혼동하지 마세요.
J
JAPH
"Just Another Perl Hacker"로, 실행되면 그 문자열로 평가되는 영리하지만 난해한 Perl 코드 조각. 종종 특정 Perl 기능을 설명하는 데 쓰이고, USENET 서명에서 보이는 진행 중인 난해한 Perl 대회의 뭔가예요.
K
key (키)
해시에 대한 문자열 인덱스로, 그 키와 연관된 값을 찾는 데 쓰여요.
keyword (키워드)
reserved words 참고.
L
label (레이블)
문장에 주는 이름으로, 프로그램 다른 곳에서 그 문장에 대해 말할 수 있게 해 줘요.
laziness (나태)
전체 에너지 소비를 줄이기 위해 큰 노력을 들이게 하는 특성. 다른 사람들이 유용하다고 여길 노동 절약 프로그램을 쓰고, 그로 인해 답해야 할 질문이 많지 않도록 쓴 것을 문서화하게 해요. 그래서 프로그래머의 첫 번째 위대한 덕목이에요. 또한 이 책의 이유이기도 해요. impatience와 hubris도 참고하세요.
leftmost longest (가장 왼쪽 가장 긴)
정규식 엔진이 패턴의 가장 왼쪽 발생을 일치시키는 것을 선호하고, 그다음 일치가 일어날 위치가 주어지면 (탐욕 수량자를 쓴다고 가정하고) 가장 긴 일치를 선호하는 것. more on this subject는 Camel 5장 "Pattern Matching" 참고.
left shift (왼쪽 시프트)
숫자를 2의 어떤 거듭제곱으로 곱하는 비트 시프트.
lexeme (렉심)
토큰의 화려한 용어.
lexer (렉서)
토크나이저의 화려한 용어.
lexical analysis (어휘 분석)
토큰화의 화려한 용어.
lexical scoping (어휘 스코핑)
현미경으로 옥스포드 영어 사전을 보는 것. (사전이 아주 빨리 변하지 않기 때문에 정적 스코핑이라고도 알려져 있어요.) 비슷하게, 각 스코프에 대한 사적 사전(네임스페이스)에 저장된 변수를 보는 것. 그 변수들은 선언된 지점부터 선언된 어휘 스코프의 끝까지 볼 수 있어요. —동의어: static scoping. —반대어: dynamic scoping.
lexical variable (어휘 변수)
my로 선언된, 어휘 스코핑의 대상이 되는 변수. 종종 그냥 'lexical'이라고 불러요. (our 선언은 전역 변수에 대한 어휘 스코프 이름을 선언하며, 이는 그 자체로 어휘 변수가 아니에요.)
library (라이브러리)
일반적으로, 프로시저의 모음. 옛날에는 .pl 파일의 서브루틴 모음을 가리켰어요. 현대에는 시스템의 Perl 모듈 전체 모음을 더 자주 가리켜요.
LIFO
Last In, First Out(후입선출). FIFO도 참고. LIFO는 보통 스택이라고 불러요.
line (라인)
Unix에서, 개행 문자로 종결되는 0개 이상의 비개행 문자의 수열. 비-Unix 기계에서는 기본 운영체제가 다른 생각을 가지고 있어도 C 라이브러리가 이것을 에뮬레이트해요.
linebreak (라인브레이크)
캐리지 리턴 뒤에 라인 피드가 오는 것, 또는 유니코드 Vertical Space 문자 속성을 가진 어떤 문자로 구성된 그래핌.
line buffering (라인 버퍼링)
매 개행 후 버퍼를 플러시하는 표준 I/O 출력 스트림이 사용하는 것. 많은 표준 I/O 라이브러리는 터미널로 가는 출력에 라인 버퍼링을 자동으로 설정해요.
line number (라인 번호)
이것보다 앞서 읽은 줄 수에 1을 더한 것. Perl은 여는 각 원본 파일이나 입력 파일에 대해 별도의 라인 번호를 유지해요. 현재 원본 파일의 라인 번호는 __LINE__으로 표현돼요. 현재 입력 라인 번호(<FH>로 가장 최근에 읽은 파일에 대한)는 $.($INPUT_LINE_NUMBER) 변수로 표현돼요. 많은 오류 메시지가 가능하면 두 값을 모두 보고해요.
link (링크)
명사로 쓰이면, 파일을 나타내는 디렉터리의 이름. 주어진 파일은 그것에 대한 여러 링크를 가질 수 있어요. 전화번호부에 다른 이름으로 같은 전화번호가 나열된 것과 같아요. 동사로는, 부분적으로 컴파일된 파일의 미해결 심볼을 (거의) 실행 가능한 이미지로 해석하는 것. 링킹은 일반적으로 정적이거나 동적일 수 있는데, 이는 정적/동적 스코핑과는 아무 관련이 없어요.
LIST
쉼표로 구분된 표현식 목록을 나타내는 구문 구조로, 리스트 값을 생성하기 위해 평가돼요. LIST의 각 표현식은 리스트 맥락에서 평가되고 리스트 값으로 보간돼요.
list (리스트)
스칼라 값의 정렬된 집합.
list context (리스트 맥락)
표현식이 주변(호출하는 코드)에 의해 단일 값이 아니라 값 목록을 반환할 것으로 예상되는 상황. LIST의 인자를 원하는 함수는 그 인자들에게 리스트 값을 생성해야 한다고 말해요. context도 참고하세요.
list operator (리스트 연산자)
join이나 grep처럼 값 목록으로 무언가를 하는 연산자. 보통 print, unlink, system 같은, 인자 목록 주위에 괄호가 필요 없는 이름 있는 내장 연산자에 쓰여요.
list value (리스트 값)
프로그램 안에서 어떤 리스트-생성 함수에서 리스트 맥락을 제공하는 어떤 함수나 구성으로 전달될 수 있는 임시 스칼라 값의 이름 없는 목록.
literal (리터럴)
숫자나 문자열 같은 프로그래밍 언어의 토큰으로, 변수가 하듯 가능한 값을 나타내기만 하는 대신 실제 값을 줘요.
little-endian (리틀엔디언)
Swift에서: 달걀의 작은 쪽부터 먹는 사람. 단어의 가장 덜 중요한 바이트를 가장 중요한 바이트보다 낮은 바이트 주소에 저장하는 컴퓨터를 가리키기도 해요. 종종 big-endian 기계보다 우월한 것으로 여겨져요. big-endian도 참고하세요.
local (로컬)
어디서나 같은 것을 의미하지 않음. Perl의 전역 변수는 local 연산자를 통해 동적 스코프 안에서 지역화될 수 있어요.
logical operator (논리 연산자)
"and", "or", "xor", "not" 개념을 나타내는 기호.
lookahead (전방 탐색)
현재 일치 위치의 오른쪽 문자열을 엿보는 어서션.
lookbehind (후방 탐색)
현재 일치 위치의 왼쪽 문자열을 엿보는 어서션.
loop (루프)
롤러코스터처럼 무언가를 반복적으로 수행하는 구성.
loop control statement (루프 제어 문장)
루프 본문 안에서 루프가 일찍 멈추게 하거나 반복을 건너뛰게 할 수 있는 어떤 문장. 일반적으로 롤러코스터에서 이것을 시도해서는 안 돼요.
loop label (루프 레이블)
루프(또는 롤러코스터)에 붙은 일종의 키나 이름으로, 루프 제어 문장이 어느 루프를 제어하고 싶은지 말할 수 있게 해 줘요.
lowercase (소문자)
유니코드에서, Lowercase Letter 일반 범주의 문자뿐 아니라 Lowercase 속성을 가진 어떤 문자든, Modifier Letter, Letter Number, 일부 Other Symbol, 하나의 Combining Mark를 포함해요.
lvaluable
lvalue로 기능할 수 있는.
lvalue
언어 법률가들이 새 값을 할당할 수 있는 저장 위치(변수나 배열의 요소 같은)에 쓰는 용어. "l"은 "left"의 줄임말로, 할당의 왼쪽처럼 lvalue의 전형적인 위치를 말해요. lvaluable 함수나 표현식은 pos($x) = 10처럼 값이 할당될 수 있는 것.
lvalue modifier (lvalue 수식자)
어떤 선언적 방식으로 lvalue의 의미를 왜곡하는 형용사적 의사함수. 현재 세 개의 lvalue 수식자가 있어요: my, our, local.
M
magic (매직)
기술적으로, $!, $0, %ENV, %SIG 같은 변수나 어떤 tie된 변수에 붙은 어떤 추가 의미론. 그 변수들을 만지작거리면 마법 같은 일이 일어나요.
magical increment (마법의 증가)
숫자뿐 아니라 ASCII 알파벳도 올릴 줄 아는 증가 연산자.
magical variables (마법의 변수)
접근하거나 할당할 때 부작용이 있는 특별한 변수. 예를 들어 Perl에서 %ENV 배열의 요소를 바꾸면 하위 프로세스가 사용할 해당 환경 변수도 바뀌어요. $! 변수를 읽으면 현재 시스템 오류 번호나 메시지를 줘요.
Makefile
프로그램 컴파일을 제어하는 파일. Perl 프로그램은 보통 Makefile이 필요 없어요. Perl 컴파일러가 충분한 자제력을 갖고 있으니까요.
man
온라인 문서(매뉴얼 페이지)를 표시해 주는 Unix 프로그램.
manpage (맨페이지)
매뉴얼의 "페이지"로, 보통 man(1) 명령으로 접근해요. 맨페이지에는 SYNOPSIS, DESCRIPTION, BUGS 목록 등이 담겨 있고 보통 페이지보다 길어요. 명령, 시스템 콜, 라이브러리 함수, 장치, 프로토콜, 파일 등을 문서화하는 맨페이지가 있어요. 이 책에서 우리는 perlop이나 perldelta 같은 표준 Perl 문서 조각을, 시스템에 어떤 형식으로 설치되든 맨페이지라고 불러요.
matching (일치)
pattern matching 참고.
member data (멤버 데이터)
instance variable 참고.
memory (메모리)
이것은 항상 메인 메모리를 뜻하지 디스크를 뜻하지 않아요. 기계가 가상 메모리를 구현할 수 있다는 사실이 상황을 흐리는데, 즉 실제보다 더 많은 메모리가 있는 척하고 비활성 비트를 담기 위해 디스크 공간을 사용해요. 이 때문에 실제보다 조금 더 많은 메모리가 있는 것처럼 보일 수 있지만, 진짜 메모리의 대체물은 아니에요. 가상 메모리에 대해 말할 수 있는 최선의 것은, 진짜 메모리가 바닥났을 때 성능이 갑자기가 아니라 점진적으로 저하되게 한다는 거예요. 하지만 가상 메모리가 바닥나도 프로그램은 죽을 수 있어요—먼저 디스크를 두드려 패지 않았다면요.
metacharacter (메타문자)
정상적으로 취급되지 않아야 하는 문자. 어떤 문자가 메타문자로 특별히 취급되는지는 상황에 따라 크게 달라져요. 여러분의 셸은 특정 메타문자를 가질 것이고, 이중 따옴표 Perl 문자열은 다른 메타문자를 가지며, 정규식 패턴은 모든 이중 따옴표 메타문자에 더해 자체의 몇 가지 추가 메타문자를 가져요.
metasymbol (메타심볼)
메타문자라고 부를 만한 것이지만 하나 이상의 문자 수열이라서 그래요. 일반적으로 수열의 첫 번째 문자가 진짜 메타문자여야 나머지 문자들이 그것과 함께 이상하게 행동하게 해요.
method (메서드)
객체가 요청받으면 취할 수 있는 행동의 한 종류. Camel 12장 "Objects" 참고.
method resolution order (메서드 해석 순서)
Perl이 @INC를 거치는 경로. 기본적으로 이중 깊이 우선 검색으로, 한 번은 정의된 메서드를, 한 번은 AUTOLOAD를 찾아요. 하지만 Perl은 mro로 이것을 구성할 수 있게 해 줘요.
minicpan
각 배포판의 최신 버전만 포함하는 CPAN 미러로, 아마 CPAN::Mini로 만들어졌을 거예요. Camel 19장 "CPAN" 참고.
minimalism (미니멀리즘)
"작은 것이 아름답다"는 믿음. 역설적으로, 작은 언어로 무언가를 말하면 크게 나오고, 큰 언어로 말하면 작게 나와요. 헤아려 보세요.
mode (모드)
stat(2) 시스템 콜의 맥락에서, 권한 비트와 파일 타입을 담고 있는 필드를 가리켜요.
modifier (수식자)
statement modifier, regular expression, lvalue를 참고하세요. 반드시 그 순서는 아닙니다.
module (모듈)
(거의) 같은 이름의 패키지를 정의하는 파일로, 심볼을 익스포트하거나 객체 클래스로 기능할 수 있어요. (모듈의 주 .pm 파일은 모듈을 지원하는 다른 파일을 로드할 수도 있어요.) use 내장 참고.
modulus (나머지)
몫이 아니라 나머지에 관심이 있을 때의 정수 제수.
mojibake (모지바케)
당신이 한 언어를 말하는데 컴퓨터가 다른 언어를 말한다고 생각할 때. 예를 들어 UTF-8을 보내는데 컴퓨터는 Latin-1을 보냈다고 생각해, 온갖 이상한 문자를 대신 보여줘요. 이 용어는 일본어로 「文字化け」라고 쓰며 "문자 썩음"을 뜻하는데, 적절한 표현이에요. 표준 IPA 음성 표기로 [modʑibake]로 발음되거나, 대략 "모지바케"로 발음돼요.
monger (몽거)
Perl mongers, Perl 공급자의 한 멤버의 줄임말.
mortal (모탈)
현재 문장이 끝나면 죽을 예정인 임시 값.
mro
method resolution order 참고.
multidimensional array (다차원 배열)
단일 요소를 찾기 위해 여러 첨자를 가진 배열. Perl은 참조를 사용해 이것을 구현해요—Camel 9장 "Data Structures" 참고.
multiple inheritance (다중 상속)
아버지와 어머니에게서 받은 특성이 예측 불가능하게 섞인 것. (inheritance와 single inheritance도 참고하세요.) 컴퓨터 언어(Perl 포함)에서, 주어진 클래스가 여러 직접 조상 또는 기본 클래스를 가질 수 있다는 개념.
N
named pipe (이름 있는 파이프)
파일 시스템에 이름이 박혀 있어 두 무관한 프로세스가 접근할 수 있는 파이프.
namespace (네임스페이스)
이름의 영역. 한 영역의 이름이 다른 영역에서 사용됐는지 걱정할 필요가 없어요. package 참고.
NaN
Not a number(숫자가 아님). Perl이 특정 무효하거나 표현할 수 없는 부동소수점 연산에 사용하는 값.
network address (네트워크 주소)
소켓의 가장 중요한 속성. 당신 전화기의 전화번호처럼요. 보통 IP 주소예요. port도 참고하세요.
newline (개행)
줄의 끝을 나타내는 단일 문자로, Unix에서는 ASCII 값 012(8진)이고(Mac에서는 015), Perl 문자열에서 \n으로 표현돼요. Windows 기계가 텍스트 파일을 쓰거나 터미널 같은 특정 물리적 장치에서는, 단일 개행이 C 라이브러리에 의해 라인 피드와 캐리지 리턴으로 자동 변환되지만, 보통은 변환이 이루어지지 않아요.
NFS
Network File System, 원격 파일 시스템을 마치 로컬인 것처럼 마운트하게 해 줘요.
normalization (정규화)
텍스트 문자열을 대안이지만 동등한 정규(또는 호환) 표현으로 변환하는 것으로, 그 후 동등성을 비교할 수 있어요. 유니코드는 네 가지 정규화 형태를 인식해요: NFD, NFC, NFKD, NFKC.
null character (널 문자)
숫자 값이 0인 문자. C가 문자열을 종결하는 데 쓰지만, Perl은 문자열이 널을 포함하는 것을 허용해요.
null list (널 리스트)
요소가 0개인 리스트 값. Perl에서 ()로 표현돼요.
null string (널 문자열)
문자를 포함하지 않는 문자열. 양의 길이와 참 값을 가지는 널 문자를 포함한 문자열과 혼동하지 마세요.
numeric context (숫자 맥락)
표현식이 주변(호출하는 코드)에 의해 숫자를 반환할 것으로 예상되는 상황. context와 string context도 참고하세요.
numification (numification)
(때로 nummification과 nummify로 철자됨.) Perl의 숫자로의 암시적 변환 전문 용어. 관련 동사는 numify예요. Numification은 mummification과 운율을 맞추려는 의도이고, numify는 mummify와요. 영어의 numen, numina, numinous와는 무관해요. 우리는 오래전에 추가 m을 잊어버렸고, 어떤 사람들은 우리의 재미있는 철자에 익숙해졌으며, 그래서 HTTP_REFERER의 빠진 글자처럼 우리의 이상한 철자가 남아 있어요.
NV
Nevada의 약자로, 그 어떤 부분도 문명과 혼동되지 않을 거예요. NV는 또한 스칼라가 담을 수 있는 타입의 내부 부동소수점 Numeric Value를 뜻하며, IV와 혼동하지 마세요.
nybble (니블)
바이트의 절반, 하나의 16진 숫자에 해당하며 4비트의 가치가 있어요.
O
object (객체)
클래스의 인스턴스. 자기가 어떤 사용자 정의 타입(클래스)인지, 그리고 어떤 클래스이기 때문에 무엇을 할 수 있는지 "아는" 것. 프로그램은 객체에 일을 요청할 수 있지만, 객체는 그것을 하고 싶은지 아닌지 결정하게 돼요. 어떤 객체는 다른 것보다 더 협조적이에요.
octal (8진수)
밑수 8의 숫자. 오직 0부터 7까지의 숫자만 허용돼요. Perl의 8진 상수는 013처럼 0으로 시작해요. oct 함수도 참고하세요.
offset (오프셋)
문자열이나 배열의 시작에서 그 안의 특정 위치로 이동할 때 건너뛰어야 하는 것의 수. 따라서 최소 오프셋은 1이 아니라 0이에요. 첫 항목에 도달하기 위해 아무것도 건너뛰지 않으니까요.
one-liner (원라이너)
한 줄의 텍스트에 몰아넣은 완전한 컴퓨터 프로그램.
open source software (오픈 소스 소프트웨어)
소스 코드가 자유롭게 이용 가능하고 자유롭게 재배포 가능하며 상업적 제약이 없는 프로그램. 더 자세한 정의는 http://www.opensource.org/osd.html 참고.
operand (피연산자)
연산자가 작동하는 값을 산출하는 표현식. precedence도 참고하세요.
operating system (운영체제)
베어 머신에서 실행되고 프로세스와 장치를 관리하는 끔찍한 세부사항을 숨기는 특별한 프로그램. 보통은 특정 프로그래밍 문화를 나타내는 더 느슨한 의미로 쓰여요. 느슨한 의미는 다양한 특정성 수준에서 쓸 수 있어요. 한 극단에서, 모든 Unix 버전과 Unix 흉내 코드가 같은 운영체제라고 말할 수 있어요(많은 사람, 특히 변호사와 다른 옹호자를 화나게 하며). 다른 극단에서, 이 특정 벤더의 이 특정 운영체제 버전은 이 벤더나 다른 벤더의 이 운영체제의 다른 어떤 버전과도 다르다고 말할 수 있어요. Perl은 다른 많은 언어보다 운영체제를 가로질러 훨씬 더 이식 가능해요. architecture와 platform도 참고하세요.
operator (연산자)
입력 값 몇 개를 출력 값 몇 개로 변환하는 장치로, 종종 특별한 문법이나 기호로 언어에 내장돼 있어요. 주어진 연산자는 인자(피연산자)로 주는 데이터 타입과 그것에서 원하는 데이터 타입에 대한 특정 기대를 가질 수 있어요.
operator overloading (연산자 오버로딩)
내장 연산자에 대해 할 수 있는 일종의 오버로딩으로, 객체를 보통 스칼라 값인 것처럼 연산자가 작동하게 하되 실제 의미론은 객체 클래스가 공급하게 해요. 이는 overload 프라그마로 설정돼요—Camel 13장 "Overloading" 참고.
options (옵션)
switches 또는 regular expression modifiers를 참고하세요.
ordinal (서수)
추상 문자의 정수 값. codepoint와 같은 것.
overloading (오버로딩)
심볼이나 구성에 추가 의미를 주는 것. 사실 모든 언어가 어느 정도 오버로딩을 해요. 사람들은 맥락에서 사물을 알아내는 데 능숙하니까요.
overriding (오버라이딩)
같은 이름의 어떤 다른 정의를 숨기거나 무효화하는 것. (다른 방식으로 구분되어야 하는 정의를 추가하는 오버로딩과 혼동하지 마세요.) 문제를 더 혼란스럽게 하기 위해, 우리는 두 개의 오버로드된 정의로 이 단어를 써요: 같은 이름의 내장 함수를 숨기도록 자신의 서브루틴을 정의하는 방법(Camel 11장 "Modules"의 "Overriding Built-in Functions" 절 참고)과, 기본 클래스의 같은 이름 메서드를 숨기도록 파생 클래스에서 대체 메서드를 정의하는 방법(Camel 12장 "Objects" 참고)을 설명하는 데요.
owner (소유자)
(슈퍼유저 외에) 파일에 대한 절대적 통제권을 가진 한 사용자. 파일은 또한 진짜 소유자가 허용하면 공동 소유권을 행사할 수 있는 사용자 그룹을 가질 수 있어요. permission bits 참고.
P
package (패키지)
전역 변수, 서브루틴 등을 위한 네임스페이스로, 다른 네임스페이스의 같은 이름의 심볼과 분리되어 있게 해 줘요. 어떤 의미에서 패키지만이 전역이에요. 패키지의 심볼 테이블의 심볼은 패키지 이름을 명명해야만 패키지 밖에서 컴파일된 코드가 접근할 수 있으니까요. 하지만 다른 의미에서 모든 패키지 심볼도 전역이에요—그저 잘 정리된 전역일 뿐이에요.
pad
scratchpad의 줄임말.
parameter (파라미터)
argument 참고.
parent class (부모 클래스)
base class 참고.
parse tree (파스 트리)
syntax tree 참고.
parsing (파싱)
아마도 잘못된 형태의 프로그램을 유효한 구문 트리로 바꾸려 시도하는, 미묘하지만 때로 잔인한 예술.
patch (패치)
하나를 적용해 고치는 것. 해커 세계에서, 버그를 고치거나 옛 버전을 업그레이드하고 싶을 때 patch(1) 프로그램이 적용할 수 있는 프로그램의 두 버전 사이의 차이 목록.
PATH
실행하려는 프로그램을 찾기 위해 시스템이 검색하는 디렉터리 목록. 목록은 환경 변수 중 하나로 저장되며, Perl에서 $ENV{PATH}로 접근할 수 있어요.
pathname (경로 이름)
/usr/bin/perl 같은 완전히 한정된 파일 이름. 때로 PATH와 혼동돼요.
pattern (패턴)
패턴 매칭에 쓰이는 템플릿.
pattern matching (패턴 매칭)
패턴, 보통 정규식을 가져와 문자열에 다양한 방식으로 시도해 맞출 방법이 있는지 보는 것. 종종 파일에서 흥미로운 토막을 뽑아내는 데 쓰여요.
PAUSE
The Perl Authors Upload SErver(http://pause.perl.org), CPAN으로 가는 모듈의 관문.
Perl mongers (Perl 몽거스)
Perl 사용자 그룹으로, 그 이름의 형태를 최초의 Perl 사용자 그룹인 New York Perl mongers에서 따왔어요. 가까운 곳을 http://www.pm.org에서 찾으세요.
permission bits (권한 비트)
파일의 소유자가 다른 사람의 접근을 허용하거나 금지하도록 설정하거나 해제하는 비트. 이 플래그 비트는 파일에 대해 물을 때 stat 내장이 반환하는 mode 단어의 일부예요. Unix 시스템에서는 ls(1) 맨페이지에서 더 많은 정보를 확인할 수 있어요.
Pern
Perl++을 두 번 하면 얻는 것. 한 번만 하면 머리카락이 곱슬거릴 거예요. 머리를 감으려면 여덟 번 증가시켜야 해요. 거품 내고, 헹구고, 반복해요.
phaser (페이저)
프로그램의 수명(실행 타임라인)은 단계로 나뉘어요. 페이저는 특정 실행 단계 동안 호출되는 코드 블록이에요.
pipe (파이프)
중간 임시 파일 없이 한 프로세스의 출력을 다른 프로세스의 입력으로 운반하는 직접 연결. 파이프가 설정되면, 관련된 두 프로세스는 몇 가지 주의사항과 함께 보통 파일에 말하듯 읽고 쓸 수 있어요.
pipeline (파이프라인)
파이프로 연결된 일렬의 프로세스들로, 각각이 자신의 출력 스트림을 다음 것으로 전달해요.
platform (플랫폼)
프로그램이 실행되는 전체 하드웨어·소프트웨어 맥락. 플랫폼 의존 언어로 작성된 프로그램은 머신, 운영체제, 라이브러리, 컴파일러, 시스템 구성 중 어느 하나라도 바꾸면 깨질 수 있어요. perl 인터프리터는 C로 구현돼 있으므로 각 플랫폼마다 다르게 컴파일돼야 하지만, Perl 언어로 작성된 프로그램은 크게 플랫폼 독립적이에요.
pod
Perl 코드에 문서를 임베드하는 데 쓰이는 마크업. Pod는 "Plain old documentation"의 약자예요. Camel 23장 "Plain Old Documentation" 참고.
pod command (pod 명령)
=head1 같은, pod 절의 시작을 나타내는 수열.
Q
qualified (한정된)
완전한 이름을 가짐. 심볼 $Ent::moot은 한정됐고, $moot은 한정되지 않았어요. 완전히 한정된 파일 이름은 최상위 디렉터리부터 지정돼요.
quantifier (수량자)
앞의 원자가 몇 번 발생할 수 있는지 지정하는 정규식 구성 요소.
R
race condition (경쟁 조건)
여러 상호 관련 사건의 결과가 그 사건들의 순서에 의존하지만, 비결정적 타이밍 효과 때문에 그 순서를 보장할 수 없을 때 경쟁 조건이 존재해요. 두 개 이상의 프로그램, 또는 같은 프로그램의 일부가 같은 사건 수열을 통과하려 하면, 하나가 다른 것의 작업을 방해할 수 있어요. 이것은 익스플로잇을 찾는 좋은 방법이에요.
readable (읽을 수 있는)
파일에 관해서는, 파일에 접근하게 해 주는 적절한 권한 비트가 설정된 것. 컴퓨터 프로그램에 관해서는, 누군가 그것이 하려는 것을 알아낼 기회가 있을 만큼 잘 쓰인 것.
reaping (거둠)
부모 프로세스가 죽은 자식 프로세스를 대신해 행하는 마지막 의식으로, 그것이 좀비로 남지 않게 해 줘요. wait와 waitpid 함수 호출 참고.
record (레코드)
파일이나 스트림의 관련 데이터 값 집합으로, 종종 고유한 키 필드와 연관돼요. Unix에서 종종 라인, 또는 빈 라인으로 종결된 라인 집합("문단")과 일치해요. /etc/passwd 파일의 각 라인은 로그인 이름을 키로 한 레코드로, 그 사용자에 대한 정보를 담고 있어요.
recursion (재귀)
무언가를 (적어도 부분적으로) 그 자체로 정의하는 예술. 사전에서는 나쁜 금지 사항이지만, 영원히 재귀하지 않도록 조심하면(무한 루프와 비슷하지만 더 화려한 실패 모드를 가짐) 컴퓨터 프로그램에서는 종종 잘 작동해요.
reference (참조)
다른 곳의 정보에 대한 포인터를 찾기 위해 보는 곳. (indirection 참고.) 참조는 두 가지 맛이 있어요: 심볼릭 참조와 하드 참조.
referent (참조 대상)
참조가 가리키는 것. 이름을 가질 수도 있고 아닐 수도 있어요. 흔한 참조 대상 유형은 스칼라, 배열, 해시, 서브루틴이에요.
regex
regular expression 참고.
regular expression (정규식)
코끼리처럼 다양한 해석을 가진 단일 개체. 컴퓨터 과학자에게는, 어떤 문자열은 합법이고 다른 것은 아닌 작은 언어를 위한 문법이에요. 일반인에게는, 사물이 경우마다 다를 때 찾는 것을 찾는 데 쓸 수 있는 패턴이에요. Perl의 정규식은 이론적 의미에서 '정규'와는 매우 다르지만, 정규 사용에서는 아주 잘 작동해요. 여기 정규식이 하나 있어요: /Oh s.*t./. 이것은 "Oh say can you see by the dawn's early light"나 "Oh sit!" 같은 문자열과 일치해요. Camel 5장 "Pattern Matching" 참고.
regular expression modifier (정규식 수정자)
패턴이 대소문자를 무시하게 만드는 /i 같은, 패턴이나 치환의 옵션.
regular file (일반 파일)
디렉터리, 장치, 이름 있는 파이프나 소켓, 심볼릭 링크가 아닌 파일. Perl은 일반 파일을 식별하는 데 –f 파일 검사 연산자를 써요. 때로 '평범한(plain)' 파일이라고 불러요.
relational operator (관계 연산자)
특정 순서 관계가 피연산자 쌍에 대해 참인지 말하는 연산자. Perl은 숫자 관계 연산자와 문자열 관계 연산자를 둘 다 가져요. collating sequence 참고.
reserved words (예약어)
if나 delete처럼 컴파일러에게 특정하고 내장된 의미를 가진 단어. 많은 언어(Perl은 아님)에서 다른 무엇을 이름 짓는 데 예약어를 쓰는 것은 불법이에요. (그래서 어쨌든 예약된 거죠.) Perl에서는 레이블이나 파일핸들을 이름 짓는 데 쓸 수 없을 뿐이에요. '키워드'라고도 불러요.
return value (반환 값)
평가될 때 서브루틴이나 표현식이 산출하는 값. Perl에서 반환 값은 리스트나 스칼라일 수 있어요.
RFC
Request For Comment, 소심한 함의에도 불구하고 중요한 표준 문서 시리즈의 이름이에요.
right shift (오른쪽 시프트)
숫자를 2의 어떤 거듭제곱으로 나누는 비트 시프트.
role (역할)
구체적인 행동 집합에 대한 이름. 역할은 상속 없이 클래스에 행동을 추가하는 방법이에요.
root (루트)
슈퍼유저(UID == 0). 또한 파일 시스템의 최상위 디렉터리.
RTFM
누군가가 당신이 Fine Manual을 읽어야 한다고 생각할 때 들려주는 말.
run phase (실행 단계)
Perl이 메인 프로그램 실행을 시작한 후의 어떤 때. compile phase도 참고하세요. 실행 단계는 대부분 런타임에 보내지만, require, do FILE, eval STRING 연산자가 실행되거나 치환이 /ee 수정자를 쓸 때는 컴파일 타임에 보내지기도 해요.
runtime (런타임)
Perl이 실제로 코드가 말하는 대로 하는 때. 앞서, 코드가 전혀 말이 되는지 알아내려고 애쓰던 때(컴파일 타임)와 대조돼요.
runtime pattern (런타임 패턴)
패턴을 정규식으로 파싱하기 전에 보간될 하나 이상의 변수를 담고 있어, 컴파일 타임에 분석될 수 없고 패턴 일치 연산자가 평가될 때마다 다시 분석돼야 하는 패턴. 런타임 패턴은 유용하지만 비싸요.
RV
레크리에이션 차량(Recreational Vehicle)으로, 차량 레크리에이션과 혼동하지 마세요. RV는 또한 스칼라가 담을 수 있는 타입의 내부 Reference Value(참조 값)를 뜻해요. 아직 혼동되지 않았다면 IV와 NV도 참고하세요.
rvalue
할당의 오른쪽에서 찾을 수 있는 값. lvalue도 참고하세요.
S
sandbox (샌드박스)
담 밖에 영향을 주지 않아야 하는 담으로 둘러싸인 영역. 길에서 뛰는 대신 아이들을 샌드박스에서 놀게 해요. Camel 20장 "Security" 참고.
scalar (스칼라)
단순하고 단일한 값; 숫자, 문자열 또는 참조.
scalar context (스칼라 맥락)
표현식이 주변(호출하는 코드)에 의해 값 목록이 아니라 단일 값을 반환할 것으로 예상되는 상황. context와 list context도 참고하세요. 스칼라 맥락은 때로 반환 값에 추가 제약을 부과해요—string context와 numeric context 참고. 때로 조건문 안에서 불리언 맥락에 대해 말하지만, 이것은 추가 제약을 부과하지 않아요. 숫자든 문자열이든 어떤 스칼라 값도 이미 참이거나 거짓이니까요.
scalar literal (스칼라 리터럴)
숫자나 따옴표 문자열—변수가 아니라 프로그램 텍스트의 실제 값.
scalar value (스칼라 값)
리스트가 아니라 스칼라인 값.
scalar variable (스칼라 변수)
$가 접두된, 단일 값을 담는 변수.
scope (스코프)
변수를, 하나를 통해 보면서 얼마나 멀리서 볼 수 있는지. Perl은 두 가지 가시성 메커니즘을 가져요. local 변수의 동적 스코핑을 해서, 블록의 나머지와 블록의 나머지가 호출하는 어떤 서브루틴이 블록에 로컬한 변수를 볼 수 있어요. Perl은 my 변수의 어휘 스코핑을 해서, 블록의 나머지는 변수를 볼 수 있지만 블록이 호출하는 다른 서브루틴은 변수를 볼 수 없어요.
scratchpad (스크래치패드)
특정 파일이나 서브루틴의 특정 호출이 임시 값 중 일부(어휘 스코프 변수 포함)를 보관하는 영역.
script (스크립트)
실행 전에 다른 형태의 파일로 컴파일되는 대신 직접 실행되도록 의도된 프로그램인 텍스트 파일.
또한 유니코드의 맥락에서, 그리스어, 벵골어, 텡과르 같은 특정 언어 또는 언어 그룹을 위한 문자 체계.
script kiddie (스크립트 기디)
해커는 아니지만 캔드 스크립트를 실행할 만큼만 아는 크래커. 카고 컬트 프로그래머.
sed
Perl이 아이디어 중 일부를 파생한 유서 깊은 Stream EDitor.
semaphore (세마포어)
여러 스레드나 프로세스가 동시에 같은 자원을 다 써버리는 것을 막는 화려한 종류의 인터록.
separator (구분자)
두 둘러싸는 문자열이 서로 혼동되지 않게 하는 문자나 문자열. split 함수는 구분자에서 동작해요. delimiter나 terminator와 혼동하지 마세요. 이전 문장의 "or"이 두 대안을 분리했어요.
serialization (직렬화)
화려한 데이터 구조를 선형 순서로 놓아 디스크 파일이나 데이터베이스에 문자열로 저장하거나 파이프를 통해 보낼 수 있게 하는 것. 마샬링(marshalling)이라고도 불러요.
server (서버)
네트워킹에서, 서비스를 광고하거나 알려진 위치에 그냥 머물면서 서비스가 필요한 클라이언트가 연락하기를 기다리는 프로세스.
service (서비스)
다른 사람을 행복하게 하기 위해 해 주는 것, 하루의 시간(또는 인생의 시간)을 주는 것처럼. 어떤 기계에서는 잘 알려진 서비스가 getservent 함수로 나열돼요.
setgid
setuid와 같지만, 그룹 권한을 나눠주는 것과 관련이 있다는 점만 달라요.
setuid
(보통의 경우처럼) 실행하는 사람의 권한이 아니라 소유자의 권한으로 실행되는 프로그램에 대해 말해요. 또한 그 기능을 제어하는 mode 단어(권한 비트)의 비트를 설명해요. 이 비트는 이 기능을 활성화하도록 소유자가 명시적으로 설정해야 하고, 프로그램은 있어야 할 것보다 더 많은 권한을 나눠주지 않도록 주의깊게 작성되어야 해요.
shared memory (공유 메모리)
그렇지 않으면 서로의 메모리를 보지 못할 두 다른 프로세스가 접근할 수 있는 메모리 조각.
shebang (시방)
아일랜드어로는 전체 McGillicuddy. Perl 문화에서, "sharp"과 "bang"의 혼성어로, 시스템에 인터프리터를 어디서 찾을지 알려주는 #! 수열을 뜻해요.
shell (셸)
커맨드-라인 인터프리터. 대화식으로 프롬프트를 주고, 입력 한 줄 이상을 받고, 당신이 언급한 프로그램을 각각에 적절한 인자와 입력 데이터를 공급하며 실행하는 프로그램. 셸은 그런 명령을 담은 스크립트도 실행할 수 있어요. Unix에서 전형적인 셸은 Bourne shell(/bin/sh), C shell(/bin/csh), Korn shell(/bin/ksh)을 포함해요. Perl은 대화식이 아니므로 엄밀히 말하면 셸이 아니에요(Perl 프로그램이 대화식일 수는 있지만요).
side effects (부작용)
표현식을 평가할 때 일어나는 추가적인 것. 요즘은 거의 무엇이든 가리킬 수 있어요. 예를 들어 단순 할당 문장을 평가하는 것은 전형적으로 변수에 값을 할당하는 "부작용"을 가져요. (그리고 당신은 그 값 할당이 원래 주요 의도였다고 생각했겠죠!) 마찬가지로 특별 변수 $|($AUTOFLUSH)에 값을 할당하는 것은 현재 선택된 파일핸들의 매 write나 print 후 플러시를 강제하는 부작용을 가져요.
sigil (시길)
마법에 쓰이는 글리프. 또는 Perl에서는, 변수 이름 앞의 $, @, % 같은 기호.
signal (신호)
갑작스러운 충격. 즉, 아마도 가장 예상하지 못할 때 운영체제가 트리거하는 사건.
signal handler (신호 핸들러)
보통 방식으로 호출되는 것에 만족하는 대신, 실행을 내려주기 전에 갑작스러운 충격을 기다리며 앉아 있는 서브루틴. Perl에서 갑작스러운 충격은 신호라고 불리고, kill 내장으로 보내요. Camel 25장 "Special Names"의 %SIG 해시와 Camel 15장 "Interprocess Communication"의 "Signals" 절 참고.
single inheritance (단일 상속)
어머니에게서 받은 특성. 아버지가 없다고 말했다면요. (inheritance와 multiple inheritance도 참고하세요.) 컴퓨터 언어에서, 클래스가 무성 생식하여 주어진 클래스가 하나의 직접 조상 또는 기본 클래스만 가질 수 있다는 개념. Perl은 그런 제약을 두지 않지만, 원한다면 그렇게 Perl로 프로그래밍할 수 있어요.
slice (슬라이스)
리스트, 배열, 해시에서 임의 개수의 요소를 선택한 것.
slurp
한 연산으로 전체 파일을 문자열로 읽는 것.
socket (소켓)
여러 프로세스 사이의 네트워크 통신을 위한 종단점으로, 전화나 우체국 사서함과 매우 비슷하게 작동해요. 소켓의 가장 중요한 것은 그 네트워크 주소(전화번호 같은)예요. 서로 다른 종류의 소켓은 서로 다른 종류의 주소를 가져요—어떤 것은 파일 이름처럼 보이고, 어떤 것은 그렇지 않아요.
soft reference (소프트 참조)
symbolic reference 참고.
source filter (소스 필터)
스크립트가 토크나이저에 도달하기 직전에 전처리를 하는 특별한 종류의 모듈.
stack (스택)
위에 올려놓고, 나중에 넣은 반대 순서로 꺼낼 수 있는 장치. LIFO 참고.
standard (표준)
공식 Perl 배포판에 포함된 것. 표준 모듈, 표준 도구, 표준 Perl 맨페이지처럼.
standard error (표준 오류)
표준 출력에 속하지 않는 지저분한 언급을 위한 기본 출력 스트림. Perl 프로그램 안에서 출력 파일핸들 STDERR로 표현돼요. 이 스트림을 명시적으로 쓸 수 있지만, die와 warn 내장은 (덫에 걸리거나 가로채지지 않는 한) 자동으로 표준 오류 스트림에 써요.
standard input (표준 입력)
프로그램의 기본 입력 스트림으로, 가능하다면 데이터가 어디서 오는지 신경 쓰지 않아야 해요. Perl 프로그램 안에서 파일핸들 STDIN으로 표현돼요.
standard I/O (표준 I/O)
운영체제로의 버퍼된 입력·출력을 위한 표준 C 라이브러리. (표준 I/O의 "표준"은 표준 입력·출력의 "표준"과 기껏해야 겉핥기로 관련돼 있어요.) 일반적으로 Perl은 주어진 운영체제가 공급하는 어떤 표준 I/O 구현이든 의존하므로, 한 기계에서 Perl 프로그램의 버퍼링 특성이 다른 기계와 정확히 일치하지 않을 수 있어요. 보통 이것은 의미론이 아니라 효율성에만 영향을 줘요. 표준 I/O 패키지가 블록 버퍼링을 하고 있고 더 자주 버퍼를 플러시하길 원한다면, $| 변수를 참 값으로 설정하세요.
Standard Library (표준 라이브러리)
공식 perl 배포판과 함께 오는 모든 것. 어떤 벤더 버전의 perl은 배포판을 바꿔 일부를 빼거나 여분을 포함해요. dual-lived도 참고하세요.
standard output (표준 출력)
프로그램의 기본 출력 스트림으로, 가능하다면 데이터가 어디로 가는지 신경 쓰지 않아야 해요. Perl 프로그램 안에서 파일핸들 STDOUT으로 표현돼요.
statement (문장)
다음에 무엇을 할지 컴퓨터에 대한 명령. 레시피의 한 단계처럼: "배터에 마멀레이드를 넣고 섞일 때까지 저어라." 문장은 아무것도 하지 말고 그냥 무엇을 배우라고 컴퓨터에 말하는 선언(declaration)과 구별돼요.
statement modifier (문장 수정자)
무슨 뜻인지 안다면, 문장 앞이 아니라 뒤에 두는 조건문이나 루프.
static (정적)
다른 것에 비해 천천히 변하는 것. (안타깝게도, 특정 소립자를 빼면 모든 것이 다른 것에 비해 상대적으로 안정적이고, 그것들에 대해서도 확실하지 않아요.) 사물이 빠르게 변하기로 되어 있는 컴퓨터에서는 "static"은 약간 역기능적인 변수, 서브루틴, 메서드를 나타내는 경멸적 함의를 가져요. Perl 문화에서는 그 단어를 정중하게 피해요.
C나 C++ 프로그래머라면 Perl의 state 키워드를 찾고 있을지도 몰라요.
static method (정적 메서드)
그런 것은 없어요. class method 참고.
static scoping (정적 스코핑)
그런 것은 없어요. lexical scoping 참고.
static variable (정적 변수)
그런 것은 없어요. 서브루틴보다 큰 스코프의 어휘 변수를 쓰거나, my 대신 state로 선언하세요.
stat structure (stat 구조)
Perl이 정보를 요청한 마지막 파일에 대한 정보를 보관하는 특별한 내부 위치.
status (상태)
자식 프로세스 중 하나가 죽을 때 부모 프로세스에 반환되는 값. 이 값은 특별 변수 $?에 놓여요. 그 위쪽 8비트는 죽은 프로세스의 종료 상태이고, 아래쪽 8비트는 프로세스가 죽은 신호(있다면)를 식별해요. Unix 시스템에서 이 상태 값은 wait(2)가 반환하는 상태 단어와 같아요. Camel 27장 "Functions"의 system 참고.
STDERR
standard error 참고.
STDIN
standard input 참고.
STDIO
standard I/O 참고.
STDOUT
standard output 참고.
stream (스트림)
패킷으로 나뉘어 보이지 않는, 바이트나 문자의 꾸준한 수열로서 프로세스로 들어오거나 나가는 데이터의 흐름. 이것은 일종의 인터페이스예요—기본 구현은 배달을 위해 데이터를 패킷으로 쪼갤 수 있지만, 이것은 당신에게 숨겨져 있어요.
string (문자열)
"He said !@#&%@#?!" 같은 문자의 수열. 문자열이 전부 인쇄 가능할 필요는 없어요.
string context (문자열 맥락)
표현식이 주변(호출하는 코드)에 의해 문자열을 반환할 것으로 예상되는 상황. context와 numeric context도 참고하세요.
stringification (문자열화)
추상 객체의 문자열 표현을 만드는 과정.
struct
구조 정의나 이름을 도입하는 C 키워드.
structure (구조)
data structure 참고.
subclass (하위 클래스)
derived class 참고.
subpattern (하위 패턴)
정규식 패턴의 구성 요소.
subroutine (서브루틴)
프로그램의 어떤 하위 목표를 달성하기 위해 프로그램 다른 곳에서 호출될 수 있는, 이름 있는 또는 달리 접근 가능한 프로그램 조각. 서브루틴은 종종 입력 인자에 따라 다르지만 관련된 일을 달성하도록 파라미터화돼요. 서브루틴이 의미 있는 값을 반환하면 함수라고도 불러요.
subscript (첨자)
배열에서 특정 배열 요소의 위치를 나타내는 값.
substitution (치환)
/s/// 연산자를 통해 문자열의 부분을 바꾸는 것. (이 용어가 변수 보간을 뜻하는 데는 쓰지 않아요.)
substring (하위 문자열)
특정 문자 위치(오프셋)에서 시작해 특정 개수의 문자만큼 진행하는 문자열의 일부.
superclass (슈퍼클래스)
base class 참고.
superuser (슈퍼유저)
운영체제가 거의 무엇이든 하게 해 줄 사람. 보통 시스템 관리자나 시스템 관리자인 척하는 사람. Unix 시스템에서는 root 사용자. Windows 시스템에서는 보통 Administrator 사용자.
SV
"scalar value"의 줄임말. 하지만 Perl 인터프리터 안에서, 모든 참조 대상은 SV에서 파생된 클래스의 멤버로, 객체 지향적 방식으로 취급돼요. Perl 안의 모든 값은 C 언어 SV* 포인터로 전달돼요. SV 구조는 자신의 "참조 대상 타입"을 알고, 코드는 서브루틴에 해시 함수를 호출하려 하지 않을 만큼 똑똑해요(희망적으로).
switch (스위치)
프로그램 동작에 영향 주기 위해 커맨드 라인에 주는 옵션으로, 보통 마이너스 부호로 도입돼요. 이 단어는 switch 문의 별명으로도 쓰여요.
switch cluster (스위치 클러스터)
여러 커맨드-라인 스위치(예: –a –b –c)를 하나의 스위치(예: –abc)로 결합한 것. 추가 인자를 가진 스위치는 클러스터의 마지막 스위치여야 해요.
switch statement (switch 문)
표현식을 평가한 다음, 표현식의 값에 기반해 그 값에 대한 적절한 코드 조각으로 다중 분기하는 프로그램 기법. 비슷한 Pascal 구성에서 이름을 따서 'case 구조'라고도 불러요. Perl에서 대부분의 switch 문은 given으로 철자가 쓰여요. Camel 4장 "Statements and Declarations"의 "The given statement" 참고.
given, when 키워드와 smartmatch(~~) 연산자는 Perl 5.42에서 제거될 거예요.
symbol (심볼)
일반적으로, 어떤 토큰이나 메타심볼. 종종 심볼 테이블에서 찾을 수 있는 종류의 이름을 더 구체적으로 뜻해요.
symbolic debugger (심볼릭 디버거)
프로그램 실행을 단계별로 밟게 해 주고, 여기저기서 멈추거나 출력해 무언가 잘못됐는지, 그리고 그렇다면 무엇이 잘못됐는지 보게 하는 프로그램. "심볼릭" 부분은 프로그램이 쓰인 것과 같은 심볼로 디버거와 대화할 수 있다는 뜻일 뿐이에요.
symbolic link (심볼릭 링크)
진짜 파일 이름을 가리키는 대체 파일 이름으로, 그 이름은 차례로 진짜 파일을 가리켜요. 운영체제가 심볼릭 링크를 포함한 경로 이름을 파싱하려 할 때마다, 단순히 새 이름으로 대체하고 파싱을 계속해요.
symbolic reference (심볼릭 참조)
값이 다른 변수나 서브루틴의 이름인 변수. 첫 번째 변수를 역참조하면 두 번째에 도달할 수 있어요. 심볼릭 참조는 use strict "refs" 아래에서 불법이에요.
symbol table (심볼 테이블)
컴파일러가 심볼을 기억하는 곳. Perl 같은 프로그램은 당신이 사용한 모든 변수, 파일핸들, 서브루틴의 이름을 어떻게든 기억해야 해요. 이름을 심볼 테이블에 넣어 이 일을 하는데, Perl에서는 해시 테이블로 구현돼요. 각 패키지가 자신의 네임스페이스를 갖도록 패키지마다 별도의 심볼 테이블이 있어요.
synchronous (동기)
사건의 질서 정연한 수열이 결정될 수 있는 프로그래밍. 즉 사물이 동시가 아니라 하나씩 차례로 일어날 때.
syntactic sugar (문법 설탕)
무언가를 더 쉽게 쓰는 대안적 방법; 지름길.
syntax (문법)
그리스어 σύνταξις, "함께-배열"에서. 사물(특히 심볼)이 서로 어떻게 놓이는지.
syntax tree (구문 트리)
저수준 구성이 그것들을 감싸는 고수준 구성에 매달려 있는 프로그램의 내부 표현.
syscall (시스템 콜)
운영체제에 대한 직접 함수 호출. 당신이 쓰는 많은 중요한 서브루틴과 함수는 직접 시스템 호출이 아니라 시스템 콜 수준 위의 하나 이상의 레이어로 구성돼 있어요. 일반적으로 Perl 프로그래머는 그 구분을 걱정할 필요가 없어요. 하지만 어떤 Perl 함수가 정말 시스템 콜인지 안다면, 실패 시 어떤 것이 $!($ERRNO) 변수를 설정할지 예측할 수 있어요. 안타깝게도 초보 프로그래머는 Perl system 함수를 호출할 때 일어나는 것을 가리켜 "system call"이라는 용어를 혼란스럽게 쓰는데, 그것은 실제로 많은 시스템 콜을 포함해요. 혼동을 피하기 위해 우리는 Perl의 syscall 함수로 간접 호출할 수 있는 것에 대해선 거의 항상 "syscall"이라 하고, Perl의 system 함수로 호출할 것에 대해선 결코 그렇게 말하지 않아요.
T
taint checks (테인트 검사)
Perl이 외부 데이터의 흐름을 프로그램을 통해 추적하고 시스템 명령에서 그 사용을 금지하기 위해 하는 특별한 부기.
tainted (테인트됨)
사용자의 꼬질꼬질한 손에서 파생된 데이터여서 안전한 프로그램이 의존하기에 안전하지 않다고 말해지는 것. setuid(또는 setgid) 프로그램을 실행하거나 –T 스위치를 쓰면 Perl은 테인트 검사를 해요.
taint mode (테인트 모드)
–T 스위치 아래에서 실행하여 모든 외부 데이터를 의심스러운 것으로 표시하고 시스템 명령에 쓰기를 거부하는 것. Camel 20장 "Security" 참고.
TCP
Transmission Control Protocol의 줄임말. 신뢰할 수 없는 패킷 전송 메커니즘을 애플리케이션 프로그램에 신뢰할 수 있는 바이트 스트림으로 보이게 하기 위해 인터넷 프로토콜을 감싸는 프로토콜. (보통은요.)
term (텀)
"terminal"의 줄임말—즉 구문 트리의 잎 노드. 표현식의 연산자에 대한 피연산자로 문법적으로 기능하는 것.
terminator (종결자)
다른 문자열의 끝을 표시하는 문자나 문자열. $/ 변수는 readline 연산을 종결하는 문자열을 포함하고, chomp가 끝에서 삭제해요. delimiter나 separator와 혼동하지 마세요. 이 문장 끝의 마침표는 종결자예요.
ternary (삼항)
세 개의 피연산자를 취하는 연산자. 때로 trinary로 발음돼요.
text (텍스트)
주로 인쇄 가능한 문자를 포함하는 문자열이나 파일.
thread (스레드)
fork된 프로세스와 같지만, fork의 고유한 메모리 보호가 없어요. 스레드는 완전한 프로세스보다 가볍고, 한 프로세스가 그 안에서 여러 스레드를 돌릴 수 있으며, 스레드를 서로 보호하기 위한 조치를 취하지 않으면 모두 같은 프로세스의 메모리 공간을 두고 싸우게 돼요.
tie
마법의 변수와 그것의 구현 클래스 사이의 결합. Camel 27장 "Functions"의 tie 함수와 Camel 14장 "Tied Variables" 참고.
titlecase (타이틀케이스)
더 많은 대문자 대신 소문자가 뒤따르는 대문자에 쓰이는 대소문자. 때로 문장 케이스나 헤드라인 케이스라고 불러요. 영어는 유니코드 타이틀케이스를 쓰지 않지만, 영어 제목의 대소문자 규칙은 각 단어의 첫 문자를 대문자화하는 것보다 더 복잡해요.
TMTOWTDI
There's More Than One Way To Do It, Perl의 좌우명. 맥락에서 프로그래밍 문제를 해결하는 데 하나 이상의 유효한 경로가 있을 수 있다는 개념. (이것은 더 많은 방식이 항상 더 낫거나 모든 가능한 경로가 똑같이 바람직하다는 뜻이 아니에요—단지 유일한 올바른 방법(One True Way)이 꼭 필요하지는 않다는 것뿐이에요.)
token (토큰)
프로그래밍 언어의 형태소, 의미적 중요성을 가진 텍스트의 가장 작은 단위.
tokener (토크나이저)
파서가 나중에 분석하기 위해 프로그램 텍스트를 토큰의 수열로 쪼개는 모듈.
tokenizing (토큰화)
프로그램 텍스트를 토큰으로 나누는 것. "lexing"으로도 알려져 있고, 그 경우 토큰 대신 "렉심"을 얻어요.
toolbox approach (도구 상자 접근)
함께 잘 작동하는 완전한 단순 도구 집합으로 거의 원하는 무엇이든 만들 수 있다는 개념. 삼륜차를 조립한다면 괜찮지만, defranishizing comboflux regurgalator를 만든다면 특별 도구를 만들 자신만의 기계 공방이 정말 원할 거예요. Perl은 일종의 기계 공방이에요.
topic (주제)
작업 중인 것. while(<>), for, foreach, given 같은 구조가 $_(기본, 주제 변수)에 할당함으로써 주제를 설정해요.
transliterate (자소 변환)
원본 문자열의 각 문자를 결과 문자열의 해당 문자에 매핑함으로써 하나의 문자열 표현을 다른 것으로 바꾸는 것. 번역(translation)과 혼동하지 마세요: 예를 들어 그리스어 πολύχρωμος는 polychromos로 자소 변환되지만 many-colored로 번역돼요. Camel 5장 "Pattern Matching"의 tr/// 연산자 참고.
trigger (트리거)
핸들러가 실행되게 하는 사건.
trinary (트라이너리)
별 세 개의 항성계가 아니라, 세 개의 피연산자를 취하는 연산자. 때로 ternary로 발음돼요.
troff
Perl이 $% 변수의 이름을 파생한 유서 깊은 식자 언어로, Camel 책 제작에 비밀리에 쓰여요.
true (참)
0이나 ""로 평가되지 않는 어떤 스칼라 값.
truncating (절단)
파일의 기존 내용을 비우는 것, 쓰기 위해 파일을 열 때 자동으로, 또는 truncate 함수로 명시적으로.
type (타입)
data type과 class 참고.
type casting (타입 캐스팅)
데이터를 한 타입에서 다른 타입으로 변환하는 것. C는 이것을 허용해요. Perl은 그것을 필요로 하지 않아요. 원하지도 않아요.
typedef
C와 C++ 언어의 타입 정의.
typed lexical (타입 지정 어휘)
클래스 타입으로 선언된 어휘 변수: my Pony $bill.
typeglob (타입글로브)
*가 접두된 단일 식별자의 사용. 예를 들어 *name은 $name, @name, %name, &name, 또는 그냥 name 중 일부나 전부를 나타내요. 어떻게 쓰느냐에 따라 전부로 해석되거나 하나만으로 해석되는지 결정돼요. Camel 2장 "Bits and Pieces"의 "Typeglobs and Filehandles" 참고.
typemap (타입맵)
XS로 작성된 확장 모듈 안에서 C 타입이 Perl 타입으로, 그리고 그 반대로 어떻게 변환될 수 있는지에 대한 설명.
U
UDP
User Datagram Protocol, 인터넷을 통해 데이터그램을 보내는 전형적인 방법.
UID
user ID. 종종 파일이나 프로세스 소유권의 맥락에서 쓰여요.
umask
파일이나 디렉터리를 만들 때 강제로 꺼야 하는 권한 비트의 마스크로, 보통 누구에게 접근을 거부할지에 대한 정책을 세우기 위한 것. umask 함수 참고.
unary operator (단항 연산자)
!이나 chdir처럼 피연산자가 하나뿐인 연산자. 단항 연산자는 보통 접두 연산자, 즉 피연산자 앞에 온다. ++와 –– 연산자는 접두나 접미일 수 있어요. (그 위치는 의미를 바꿔요.)
Unicode (유니코드)
세계의 모든 주요 문자 집합을, 대략, 포함하는 문자 집합. http://www.unicode.org 참고.
Unix
매우 크고 끊임없이 진화하는 언어로, 여러 대안적이고 대체로 호환되지 않는 문법을 가지며, 누구나 무엇이든 원하는 방식으로 정의할 수 있고 보통 그렇게 해요. 이 언어의 화자는 자기의 목적에 너무 쉽게 꼬여서 배우기 쉽다고 생각하지만, 방언 차이가 부족 간 상호 소통을 거의 불가능하게 하고, 여행자는 종종 피진 같은 언어의 하위 집합으로 전락해요. 보편적으로 이해되려면 Unix 셸 프로그래머는 수년의 연구를 예술에 쏟아야 해요. 많은 사람이 이 훈련을 포기하고 이제 Perl이라는 에스페란토 같은 언어로 소통해요.
고대에는 Unix가 다른 아무것도 별로 하고 있지 않던 PDP-7 컴퓨터를 활용하려고 벨 연구소의 몇몇 사람이 쓴 어떤 코드를 가리키는 데도 쓰였어요.
uppercase (대문자)
유니코드에서, Uppercase Letter 일반 범주의 문자뿐 아니라 Uppercase 속성을 가진 어떤 문자든, 일부 Letter Number와 Symbol을 포함해요. titlecase와 혼동하지 마세요.
UTF-8 string (UTF-8 문자열)
서수가 유효한 UTF-8 바이트의 수열을 나타내는 "문자열". 때로 "UTF-8 인코딩 문자열"이라고 불러요.
(중요: 이것은 Perl의 내부 "UTF8 flag"와는 무관해요. 그 플래그는 보통 Perl 자신만 신경 써야 해요. UTF-8 문자열은 그 플래그가 설정되거나 설정되지 않을 수 있어요.)
V
value (값)
실제 데이터 조각. 값에 접근하는 데 필요한 모든 변수, 참조, 키, 인덱스, 연산자와 대조돼요.
variable (변수)
프로그램이 보기에 적합한 다양한 종류의 값을 담을 수 있는 이름 있는 저장 위치.
variable interpolation (변수 보간)
스칼라나 배열 변수를 문자열로 보간하는 것.
variadic (가변 인자)
기꺼이 결정되지 않은 개수의 실인자를 받는 함수에 대해 말해요.
vector (벡터)
스칼라 값 목록의 수학적 전문 용어.
virtual (가상)
실체 없이 겉모습을 제공하는 것. 가상 메모리는 실제 메모리가 아니듯이. (memory도 참고하세요.) "virtual"의 반대는 "transparent(투명)"인데, 이는 겉모습 없이 실체를 제공하는 것을 뜻해요. Perl이 가변 길이의 UTF-8 문자 인코딩을 투명하게 처리하듯이.
void context (void 맥락)
표현식이 어떤 값도 반환할 것으로 예상되지 않고 부작용만을 위해 평가되는 스칼라 맥락의 한 형태.
v-string (v 문자열)
v 뒤에 점 표기법의 일련의 10진 정수로 지정되는 "빌전" 또는 "벡터" 문자열. 예를 들어 v1.20.300.4000. 각 숫자는 지정된 서수 값을 가진 문자로 바뀌어요. (적어도 세 개의 정수가 있으면 v는 선택 사항이에요.)
W
warning (경고)
무언가가 잘못됐을 수도 있지만 폭발할 가치는 없다는 취지의, STDERR 스트림에 출력되는 메시지. Camel 27장 "Functions"의 warn과 Camel 28장 "Pragmantic Modules"의 warnings 프라그마 참고.
watch expression (감시 표현식)
값이 변할 때 Perl 디버거에서 중단점을 일으키는 표현식.
weak reference (약한 참조)
정상적으로 카운트되지 않는 참조. 데이터에 대한 모든 정상 참조가 사라지면 데이터도 사라져요. 이것은 그렇지 않으면 결코 사라지지 않을 순환 참조에 유용해요.
whitespace (공백)
커서를 움직이지만 화면에 다른 것을 올려놓지 않는 문자. 보통 다음 중 어떤 것이든 가리켜요: 공백, 탭, 라인 피드, 캐리지 리턴, 폼 피드. 유니코드에서는 유니코드가 공백으로 간주하는 많은 다른 문자와 일치해요.
word (단어)
보통의 "컴퓨터 용어"에서, 컴퓨터가 가장 효율적으로 처리하는 크기의 데이터 조각으로, 보통 32비트 정도이며 2의 거듭제곱 몇을 더하거나 빼요. Perl 문화에서는 알파벳·숫자 식별자(밑줄 포함)를 더 자주 가리키거나, 공백이나 문자열 경계로 경계 지어진 비공백 문자의 문자열을 가리켜요.
working directory (작업 디렉터리)
운영체제가 상대 경로 이름을 해석하는 현재 디렉터리. 운영체제는 당신이 chdir로 말했거나, 부모 프로세스가 당신을 낳았을 때 그 자리에서 시작했기 때문에 현재 디렉터리를 알아요.
wrapper (래퍼)
다른 프로그램이나 서브루틴을 당신을 위해 실행하고, 그 입력이나 출력 중 일부를 당신의 목적에 더 잘 맞게 수정하는 프로그램이나 서브루틴.
WYSIWYG
What You See Is What You Get(보는 것이 얻는 것이다). 보통 화면에 나타나는 것이 결국 어떻게 보일지와 일치할 때, Perl의 format 선언처럼 쓰여요. 또한 모든 것이 나타난 대로 정확히 작동하기 때문에 magic의 반대를 의미하는 데도 쓰여요, 세-인자 형태의 open처럼.
X
XS
비범하게 익스포트되고(extraordinarily exported), 신속히 훌륭하며(expeditiously excellent), 명백히 외부(explicitly eXternal) 서브루틴으로, 기존의 C나 C++에서 실행되거나 (짜증나게도) XS라고 불리는 흥미로운 확장 언어에서 실행돼요.
XSUB
XS에서 정의된 외부 서브루틴.
Y
yacc
Yet Another Compiler Compiler. Perl이 아마 존재하지 않았을 파서 생성기. Perl 소스 배포판의 perly.y 파일을 보세요.
Z
zero width (0 폭)
문자 사이의 널 문자열에 일치하는 하위 패턴 어서션.
zombie (좀비)
죽었지만(종료했지만) 부모가 wait나 waitpid를 호출함으로써 아직 적절히 사망 통지를 받지 못한 프로세스. fork했다면 자식 프로세스가 종료할 때 청소해야 해요. 그렇지 않으면 프로세스 테이블이 가득 차고 시스템 관리자가 당신에게 화낼 거예요.
더 알아보기 (Learn more)
- perlunitut
- perluniintro
- Programming Perl, Fourth Edition 용어집
- Unicode Glossary
- Free On-Line Dictionary of Computing
- Jargon File
- Wikipedia
이 문서는 Tom Christiansen, brian d foy, Larry Wall, Jon Orwant가 쓴 《Programming Perl》 제4판의 용어집에 기반해요. Copyright (c) 2000, 1996, 1991, 2012 O'Reilly Media, Inc. 이 문서는 Perl 자체와 같은 조건으로 배포될 수 있어요.