개요
스트링(string)은 영어 단어 "string"의 한국어 음역어로, 여러 분야에서 다양한 의미로 사용되는 용어이다. 본래의 뜻은 가느다란 끈이나 줄을 가리키며, 이후 컴퓨터 과학, 음악, 물리학 등 여러 학문 분야에서 특화된 의미로 확장되었다.
일반적 의미
영어 "string"은 고대 영어 streng에서 유래하였으며, 이는 게르만 조어 strangiz에서 비롯되었다. 이는 다시 인도유럽조어 어근 strenk- ("꼭, 좁은")에서 파생된 것으로 추정된다. 일반적으로 실(thread)과 코드(cord)의 중간 굵기의 꼰 끈을 의미하며, 신발끈, 기타 줄, 연줄 등이 이에 해당한다. 또한 일련의 연속된 사물이나 사건을 가리키는 의미로도 사용된다(예: a string of victories, a string of pearls).
컴퓨터 과학에서의 스트링
컴퓨터 과학과 프로그래밍에서 스트링(string)은 문자열(文字列)을 의미한다. 이는 문자(character)들이 연속적으로 나열된 데이터로, 텍스트 정보를 표현하고 처리하는 데 사용되는 가장 기본적인 자료형(data type) 중 하나이다.
정의와 특징
스트링은 일반적으로 작은따옴표(' ')나 큰따옴표(" ")와 같은 구분 기호로 감싸서 표현하며, 이를 문자열 리터럴(string literal)이라고 한다. 대부분의 현대 프로그래밍 언어에서 문자열은 불변(immutable) 객체로 구현되는 경우가 많아, 한 번 생성된 문자열의 내용을 변경할 수 없고 모든 수정 연산은 새로운 문자열 객체를 생성한다.
표현 방식
문자열의 내부 저장 방식은 언어에 따라 다르다. C 언어에서는 널 문자('\0')로 종단되는 문자 배열(널 종단 문자열, null-terminated string)을 사용한다. 파스칼 계열 언어에서는 문자열 앞에 길이 정보를 저장하는 길이 접두사(length-prefixed) 방식을 사용한다. 현대의 고급 언어들은 대부분 문자열을 객체로 취급하며 내부적으로 메모리를 관리한다.
문자 인코딩
문자열은 문자 인코딩(character encoding) 방식과 밀접한 관련이 있다. 초기에는 ASCII와 같은 제한된 문자 집합이 사용되었으나, 현재는 전 세계 모든 문자를 표현할 수 있는 유니코드(Unicode)가 표준으로 자리 잡았다. 유니코드의 구체적인 인코딩 방식으로는 UTF-8, UTF-16, UTF-32 등이 있으며, UTF-8은 인터넷과 다양한 시스템에서 사실상의 표준으로 사용된다.
주요 연산
문자열 처리의 기본 연산으로는 연결(concatenation), 부분 문자열 추출(substring), 검색(search), 치환(replace), 분할(split) 등이 있다. 대부분의 프로그래밍 언어는 이러한 연산을 위한 내장 메서드나 함수를 제공한다.
음악에서의 스트링
음악 분야에서 스트링(strings)은 현악기(string instruments)의 줄을 의미하거나, 오케스트라에서 현악기 섹션 전체를 가리키는 용어로 사용된다. 바이올린, 비올라, 첼로, 더블베이스 등의 현악기와 기타, 하프 등의 발현악기가 이에 포함된다. 대중음악에서 "스트링"이라는 표현은 종종 현악기 반주를 지칭하는 데 사용된다.
스포츠에서의 스트링
테니스, 배드민턴, 스쿼시 등의 라켓 스포츠에서 스트링은 라켓의 줄을 의미한다. 라켓의 프레임에 일정한 장력으로 매어진 줄은 공을 타격할 때 반발력을 제공한다. 메이저 브랜드로는 요넥스, 바볼랏, 윌슨 등이 있다.
물리학에서의 스트링
이론 물리학의 끈 이론(string theory)에서 스트링은 점입자(point particle)를 대체하는 기본 구성 요소로 가정된 1차원적인 진동하는 끈을 의미한다. 끈 이론은 모든 기본 입자를 다양한 진동 모드의 끈으로 설명하려는 이론이다.
기타 용법
영어 관용구로는 "no strings attached"(조건 없이, 무조건), "pull strings"(배후에서 조종하다), "have another string to one's bow"(다른 대비책이 있다) 등이 있다. 패션 분야에서는 스트링 비키니(string bikini)와 같이 끈으로 고정하는 의류를 지칭하기도 한다.