Perl, Awk, Bash, PHP 등과 같은 많은 스크립팅 언어는 식별자 이름 앞에 $ 기호를 사용합니다. 이유를 찾으려고 노력했지만 만족스러운 답변을 얻지 못했습니다.
Perl, Awk, Bash, PHP 등과 같은 많은 스크립팅 언어는 식별자 이름 앞에 $ 기호를 사용합니다. 이유를 찾으려고 노력했지만 만족스러운 답변을 얻지 못했습니다.
답변:
Bourne 쉘 또는 그 전신은 아마도 컨벤션의 기원 일 것입니다. 쉘은 $foo
쉘 변수 또는 환경 변수를 참조 하는 데 사용 되는 반면 foo
리터럴 문자열 (명령 이름, 파일 이름 또는 다른 명령에 전달 될 단어 일 수 있음)로 간주됩니다.
입력해야하는 양을 최소화하는 것이 중요합니다. 대부분의 프로그래밍 언어에서 입력하는 대부분은 키워드 (작은 고정 집합의)와 선언 된 이름입니다. 그것들의 이름 만 사용하는 것이 합리적입니다. 문자열 리터럴은 구문 상 구별하기 위해 따옴표 (싱글 또는 더블)로 묶습니다.
대화식 셸에서 입력하는 대부분의 항목은 명령 이름과 파일 이름이므로 장식되지 않은 형식이 적합합니다. 변수 이름은 자주 사용되지 않으므로 앞에 오는 것이 변수 $
를 구별하는 간단한 방법입니다.
후행 $
(숫자 변수 반대) 몇 가지 기본 문자열 변수에 사용하는 아마뿐만 아니라 영감을했다.
$
스칼라 변수에 사용 하기위한 Perl의 선택 은 의심 할 여지없이 Bourne 쉘과 같은 쉘에서 영감을 얻었으며, Perl의 초기 버전은 일반적으로 베어 워드를 문자열 리터럴 ( print FOO
및 print "FOO"
동등)로 처리했습니다. 이와 같은 베어 워드 사용은 최신 버전의 Perl에서 더 이상 사용되지 않지만시길은 그대로 유지되며 대부분 다른 종류 의 변수 를 구별하는 데 사용됩니다 . 아마도 Perl이 처음부터 설계 되었다면, 스칼라 변수는 "빈시길"로 표시 될 수 있지만, 그런 일은 일어나지 않았습니다.
. (BTW, awk는 그것은 가지고 sigils을 사용하지 않고 $
구하지만 필드 번호를 지칭한다. NF
필드의 수이며, $NF
마지막 (는 IS NF
) 번째 필드).
변수 이름의 $ 기호는 "Sigil" 의 특수한 경우 입니다. BASIC 초기 (1964 정도)에서 $는 문자열 변수 이름을 나타내는 데 사용되었습니다. 내 생각에 컴파일러가 기호를 사용하여 나머지 문법과 변수 이름을 쉽게 분리 할 수 있기 때문에 기본에 공통적이기 때문에 사용법이 진행되었습니다. 그러나 이것이 유일하게 사용 된 것은 아닙니다.
$
for 문자열 (및 %
정수)은 접두어가 아닌 접미사였습니다. 적어도 내가 비표준 (비표준) 변형에서 사용했습니다. 물론 컴파일러와 어휘 분석에 관한 한 접미사 대 접두사는 상당히 피상적입니다. 가독성 측면에서 약간의 차이가있을 수 있습니다.
이는 $ 접미사가 문자열 변수를 나타내며 "문자열"로 발음되는 BASIC에서 시작된 것으로 보입니다. 예를 들어, INKEY $ 는 "in key string"으로 발음됩니다.
그러나 왜 달러 기호입니까? 글쎄, $는 문자열의 S와 약간 비슷합니다. 그리고 Wikipedia 에 따르면 :
달러 기호는 컴퓨터 문자 집합에 거의 보편적으로 존재하는 몇 가지 기호 중 하나이지만 컴퓨터 소프트웨어에서 문자 그대로의 의미에는 거의 필요하지 않으므로 $ 문자는 컴퓨터에서 사용되었습니다 많은 목적을 위해 돈과 관련이 없습니다.
(적절하게는, 몇 달러를 더 입력하면이 정보를 얻을 수 있습니다.)