2011-08-01 5 views
0

일부 언어 (가장 잘 알려진 예제는 javascript)에서 변수는 기본적으로 전역 유효 범위입니다. 즉, 지역 변수를 선언하려면 var, local, my 또는 그 무엇이든 작성해야합니다.기본적으로 로컬 범위 구현 비용

나는이 구현 비용에 대해서는 생각해 본 적이 없지만 단지 전통의 문제가 아닐 수 있습니다. 예를 들어, this 링크를 확인하십시오. 내 질문은 - 기본적으로 로컬 범위 기준 아키텍처보다 글로벌 범위보다 더 비싸다는 것입니다. 그냥 일종의, 잘 모르겠지만, 선택 정렬 사전에 그런 식으로 "사전에"bubblesorts보다 적은 스왑이 필요합니다.

게다가, 누군가 적절한 태그를 추가하기 위해이 질문을 편집하면 감사하겠습니다. 나는 여기에 어느 것이 더 잘 맞는지 모른다.

+0

"알고있는 한 대부분의 언어에서"기본적으로 전체 범위가 사용되지 않습니다 *; 그들 중 일부에서만. – kikito

+0

@kikito - 그런 의미에서 그런 명시적인 문장을 만드는 동안 조심해야한다는 말이 맞습니다. 나는 그 질문을 편집했다. – shabunc

답변

3

루아 어 언어의 경우 (로컬 별 기본값 또는 전역 기본값) 더 좋은 점에 대한 요약은 on this wiki page입니다. 아마 어느 별 기본은 가장 좋은 대답은, 그러나 우리 프로그래머는 어떤 입력을 저장하려는) 위키 페이지에서

일부 인용 :.

  • "기본적으로 지방이 잘못 기본적으로 어쩌면 전역 또한 잘못되었지만 해결책은 기본적으로 로컬이 아닙니다. " (Roberto Ierusalimschy, 루아의 아키텍트)
  • "[현재 로컬 변수 범위 지정 규칙]은 Ruby에서 가장 큰 디자인 결함입니다." (Yukihiro Matsumoto, Ruby designer)
  • "나는 렉시 칼의 암시 적 선언을 싫어한다. 왜냐하면 그것들의 주요 사용을 무력화시키기 때문이다. 즉, 오타를 잡는 경향이있다. 선언은 선언처럼 보일 것이다. 나는 은 제대로 허프만 인코딩됩니다. " (Larry Wall, Perl Designer)
+1

Ruby 인용 문맥이 맥락에서 벗어난 것이 나중에 지적됩니다. Matz는 루비의 로컬 변수 범위 지정 규칙에 만족합니다. 블록과 로컬 변수와 관련된 딱한 사례가 하나 있습니다. – kikito

2

컴파일 타임에 기본값에 의한 비용과 기본값에 의한 글로벌 비용은 동일합니다. 아직 보이지 않는 이름을 발견하면 모든 활성 지역 변수 목록을 완전히 조사해야합니다. 런타임에는 지역 변수가 대개 액세스가 빠릅니다.