몇 년 전, 저는 Applesoft Basic을 배웠습니다. 문자열은 항상 접미사가 붙고 $
배열의 접미사는 %
입니다. 그것이 언어가 작동하는 방식입니다. 당신은 무언가를 보았고 그것이 무엇인지 알았습니다. 나는 이것이 왜 그런지 또는 그 결정을 내리게 한 디자인 결정을 이해하기 위해 해석기에 너무 깊이 파고 들지 않았습니다.
PHP의시길은 펄의 영향 ( awk
및에 의해 영향을 받음 sh
) 에서 비롯됩니다 . 펄의시길은 $
많은 다른 유형을 식별 할 수있는 것보다 훨씬 더 많습니다 .
$
스칼라
@
명부
%
해시시
&
코드 블록
*
타입 글로브
시길은보고있는 심볼 테이블 구조의 어떤 부분을 식별합니다. 무대 뒤에서 foo의 기호 테이블 항목 ( *foo
typeglob 를 통해 액세스 )에는 foo 일 수있는 모든 것이 있습니다. 이 $foo
, @foo
, %foo
의 형식 foo
, &foo
, 파일 핸들 foo는, 등 ...
또한 한 변수의 별칭을 다른 변수의 별칭으로 만들 수 있습니다.
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
이것은 인쇄합니다 foo 1 2
-펄로, 이것은시길이 실제로 하는 것입니다. 당신이 이것을 해야하는 것이 아니라 오히려 그들이하는 장면 뒤에 있습니다.
sigils는 가독성을 위해 너무 많은 존재하지 않고, 그래서 하나가 가질 수 $foo
및 @foo
네임 스페이스에서 충돌을하지 않고는 (하나는 모두를 가질 수 없습니다 경우 다른 언어를 비교 int foo; int[] foo;
)
가독성을위한시길은 모든 언어의 일부로 학습되는 것으로 구문을 읽는 것입니다. 가설 적으로 유형 자체 (헝가리어 표기법)를 식별자의 일부로 적용 할 수 있습니다.
lex의 내용은 다음과 같습니다.
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
그리고 당신은 같은 코드를 가질 수 있습니다
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
나는 이것이 좋은 생각이라고 말하지는 않지만 언어에 익숙한 사람은 이것을 기본적으로 읽을 수 있고 언어에 익숙하지 않은 사람은 가독성을 향상시킬 것이라고 생각하지만 언어에 익숙하지 않은 사람은 단지 언어에 많은 소음.
그러나이 방법으로 정의 된 언어로 작업 한 후에는 문제없이 읽을 수 있습니다.
어떤 사람들은 좋아하지만 어떤 사람들은 그렇지 않습니다. 이것을 토론하는 여러 포럼에서 큰 성전이 벌어졌으며 실제로는 얼마나 많이 사용했는지에 달려 있습니다.
시길을 사용하는 프로그래머가 아닌 사람들을 위해 새로운 언어를 설계 할 수 있으며 이전에 프로그래밍을 한 적이없는 사람은 그에 대해 조금도 불평하지 않을 것입니다. 반면에 언어의 일부로 사용할 수는 없으며 루비 또는 펄 프로그래머가 핵심 정보가 누락되었다고 불평하게합니다.
정말 중요하지 않습니다. 중요한 것은시길이 언어를 사용하거나 사용하지 않을 때 언어에 어떻게 적용되는지입니다. 할 수 있기를 원합니까 "123 $foo 456"
아니면해야합니까 "123 " + foo + " 456"
? 여기서 결정을 내려야합니다.