문제

내가 하려고에 대한 더 나은 정말 무엇을 의미하는 언어는"동적".나는 확실히 경험의 비트와 함께 용어, 는 스크립트 언어에 대한 Adobe 는(이전 Macromedia)이사 제품 라인,그리고 나는 단지 궁금하다면 그것은 것으로 간주됩"dynamic 언어"라고 합니다.

의 방법으로 변수를고 목록 처리하는 것이 매우"동적 언어로"-ish to me.

변수와 함께,당신은 단지 작성 foo = 3bar = "Hello World".당신이하지 않으로 변수를 선언 intstring-그것은 인물 그 밖으로 간다.

목록할 수 있습 같은 것을 작성 miscCollection = [3, "Hello World", #helloWorld, ["Embedded List", "Goes Here", 3], [#phrase: "Property List goes here", #value: 3]].이와 유사하지 않는 tuple?

는 이러한 기능을 충분히 받기 위해"동적 언어가"상태?

흥미롭게도,나를 사용하여 C#더 많은 그리고 감독/용어 적은 많이 있지만,모든 통해 흥분을 동적인 언어를 이러한 일이고,내가 실제로습니다.

편집

에 관한 표시 Rushakoff 답변을 아래,여기에도 있는지 여부를 분석하는 용어의 자격으로"동적 사용"이 위키 문서:

  1. Eval -용어가 dovalue 키워드가 있습니다. do 실행됩 전체 명령,예를 들어, do "foo = 23"do "foo = sum(20, 3)". value 도 변환할 문자열에는 숫자이지만,그것은 더 단순한 구문 분석자-그것이 실제로 변환할 문자열 표현을 변수의 번호,예를 들어,가정 foo = 23, 문 value("foo") 을 평가합니다 23.

  2. 높은 기능을 이해하고 있다면이 바로,이것은 기본적으로 무엇을 나는 것"대리인"이라고 함에 있습니다.용어를 지원하지 않는 이 직접 지금까지 내가 알고 있지만,을 만들 수 있습니다형(라"부모 스크립트")가 있는 기능을 통과의 인스턴스는 유형입니다.

  3. 폐쇄-에 대한 지원이하고 있는 것으로 알고 있습니다.

  4. 계속 지원 이로하고 있는 것으로 알고 있습니다.

  5. 반사-에서,그렇습니다.당신은 실제로 새 인스턴스를 만들의 형식 문자열을 사용하여,예를 들어, fooInstance = script("Foo").new(bar).그것은 또한 가능한 변환하의 인스턴스에 입력 문자열이 포함된 이름의 유형(정렬할 수 있도록의 모방 c#'s GetType() 기능).쿼리할 수도 있습니 속성 없이 형식의 이름을 알고의 속성(예를 들어,보여 속성 지수)와의 이름을 찾을 수 있는 속성하여 인덱스입니다.

  6. 매크로로-길 위키 문서에서 설명 매크로, 에,나는 그렇게 생각하지 않습니다.그것은 가능한 스크립트를 편집하는 런타임 시에는,그러나,그래서 어쩌면하라는 것입니다.

그래서,그것은 보인다 용어 점수를 2~3 6 에 동적인 기능을 하지만 난 충분히 명확하지 않에 폐쇄 및 연속 작업하는지 확인 용어를 지원하지 않습니다.난 무엇인지를 결론.댓글을 환영합니다.

도움이 되었습니까?

해결책

"동적은"그 중 하나는 단어의 유행지만,정말 의미는 조금보다 더 많은"무엇 할 멋진"...그것은 없 정확한 정의입니다.

는 말했다,나는 당신의 질문에 대답에 대해 유형,또는 적어도 설명하기 위해 사이의 차이를 입력 및 형식화되지 않은(어떤 사람들은 동적 또는 동적으로 입력)언어 더 낫습니다.

는 입력한 언어 검사는 당신 끝까지 하려 무언가를 가진 변수는 할 수 없 당신은 프로그램을 실행할 수 있습니다.형식화되지 않은 언어는 이것을 하지 않는 체크인-그것은 단순히 희망이 최고의 경우 그 어떤 시점의 값을 갖는 것은 부적합에 대한 필요,오류가 있습니다.

사람들은 두 가지입니다.모든 인생에서 같습 언어 거짓말을 사이에 두는 이론적입니다.그래서 그것은 때로는 힘이라고 말할 언어를 입력하거나 형식화되지 않은-종종 모든 당신이 말할 수 있는가"와 같은 언어가 더 나은 형식 검사 컴파일때보다 언어 Y 기 때문에 이러한 오류에서 잡은 X 지만 Y:...."

주어진 정의를 걱정할 수 있는(1)형식의 언어를 많이 필요 이상의 텍스트 프로그램에서(당신이 필요하기 때문에 무슨 말을 각각 입 값)및(2)에는 입력한 언어로 제한할 수 있습니다 무엇을 할 수 있는 불필요(기 때문에 시스템이 없는 스마트 할 수 있도록 충분히 무언가를 당신이 볼 수 있는 것이 작동하).

두 사람의 수 있는 문제입니다.하지만 그들은 모두의 문제는 점점 더 중요로 입력한 언어습니다.예를 들어 이 같은 코드:

String s = "hello"

할 때 그것은 분명으로

s = "hello"

는"s"문자열이어야 합니다?언어는"스마트"이지 않은 곳에서 무슨 말을 할 필요가 모든 종류가 있습니다,하지만 그들은 여전히 확인는 종종"이라고 들리 Milner"기 때문에 사람들은 사람들이 처음으로 일하는 방법에 대해서는 세부 사항입니다.

그래서 당신이 볼 때 프로그램을 작성한 언어 들리 Milner 유형 시스템의 보일 수 있습니다 그것 같이 없는 형식입니다.하지만 그건 실수이다.그것은 여전히기 전에,프로그램이 실행,무엇을 밖으로 작동하는 모든 종류의 모든 변수해야 하며,확인을 얻을 수 없는 오류를 위해 노력하고 뭔가 잘못된 유형(내 생각에 이것은 놀라운-그것의 종류의 인조인 정보...)

즉 때로는 유일한 방법을 알지 언어를 입력하지 않는 방법을 알고 있습니다.그것은 명확하지 않을 수도 있습에서 찾고 있다.

편집: 나는 그냥 다시 읽기 위고 있었 좀 더 명확하다.의 구별을 만들려고 노력했던 사는 언어 유형 시스템 와 언어에는 하지 않습니다.A 형 시스템 을 포함한 두 가지:유형을 자신하고 논리를 확인하는 유형이 올바른 것입니다.

언어 나가 호출하"형식화되지 않은"(또는 동적으로 입력)하는 형식입니다.Python,예를 들어(는 형식화되지 않은 동적용어),여전히 사이에 차이 문자열 및 정수입니다.하지만 그들은 여분의 논리 검사 프로그램 그것이 실행됩니다.그래서 그것은 좀 더 정확히 말하자면 그들은 형식,그러나 없 유형 시스템.

에 대비"를 입력한"어,내가 말했듯이,할인 프로그램을 실행,그래서이 있어야지 유형이지만,추가 논리를 할 수 있습니다.

다른 팁

유형 추론 (예 : 예제) foo = 3 그리고 bar = "Hello World")는 역동적 인 언어를 암시하지 않습니다. 그만큼 var C#의 키워드는 컴파일 타임에 변수 유형을 유추하고 Haskell은 컴파일 된 프로그램에서도 모든 변수에 암시 적 유형을 사용할 수도 있습니다.

"동적 프로그래밍 언어" 매우 느슨하게 정의 된 용어이지만, 한 예정자로 제한해야한다면 런타임 반사 일 것이라고 생각합니다. 반사를 할 수 있다면 Wikipedia 기사 (Eval, Object Runtime Alteration, Closures, Macros ...)에 나열된 다른 예선을 수행 할 수 있습니다.

나는 링고 언어에 대해 아무것도 모르지만 일반적으로 더 쉽다고 말할 것입니다. 실격 언어보다 역동적 인 언어 자격을 갖추십시오 언어. Lingo는 Wikipedia 기사에서 모든 예선을 수행 할 수 있습니까? 그렇지 않다면 아마도 역동적이지 않을 것입니다. 그 경우 ~할 수 있다 어떤 일을하십시오. 그러면 아마도 적어도 "동적"일 것입니다.

사람들이 "동적"인 프로그래밍 언어에 대해 이야기 할 때 일반적으로 동적 유형 시스템을 지칭합니다. 내가 읽은 동적 유형 시스템이 무엇인지 (그리고 그렇지 않은지)에 대한 가장 좋은 정의는 Chris Smith의 훌륭한 기사입니다. 토론 유형 시스템에 대해 알아야 할 사항.

그 기사를 읽으면 주어진 언어가 정적으로 또는 동적으로 입력 한 것으로 여부에 대한 답을 가져야한다고 생각합니다.

Lingo가 역동적 인 언어임을 보여주고 싶습니다.

나는했다 Lingof Lingo의 기능적 프로그래밍 프레임 워크. 이 프레임 워크는 전적으로 Lingo, XTRA, 낮은 수준의 구성 요소가 사용되지 않으므로 언어가 역동적이지 않은 경우 그러한 프레임 워크를 개발할 수 없습니다.

해당 프레임 워크를 고려할 때, 여기에 Lingo에 대한 동적 언어 평가가 있습니다.

1- 평가 -Lingo Has do 그리고 value 키워드. 또한 실행 시간에 스크립트를 컴파일 할 수 있습니다. Lingof의 기능 "Lingo Expressions"를 참조하십시오.

2- 고차 기능 -Lingof는 Lingo에서 고차 기능을 광범위하게 사용할 수있는 방법을 보여줍니다.

3- 폐쇄 - 다시 Lingof는 Lingo의 폐쇄 작업을 수행 할 수있는 방법을 보여줍니다.

4- 연속 - 구문 조력자는 연속 기술로 정의됩니다. 연속 통과 스타일로 기능을 작성할 수 있습니다. 이것 (Lingof 모듈에서 가져온)을 확인하십시오.

on public_factorialCPS_2
on fac me, n,k
  x = LingoF().var()
  if ( n = 0 ) then return k [1] 
  else return me.factorialCPS[$(#-,n,1) ] [ LingoF().fun(x) [ k [ $(#*,n,x) ]  ] ]
end

5- 반사 - 이미 대답했고 동의합니다. 예를 들어 Lingof Module Manager는 Danm이 언급 한 Lingo의 반사 기능을 사용하여 구현됩니다.

6- 매크로 -이 분야에서 더 많은 연구를해야합니다. 감독은 연결된 스크립트 (외부 텍스트 파일에 저장된 스크립트)를 지원하기 때문에 어떤 종류의 매크로를 구현할 수 있습니다. 어쩌면 매크로 관리자는 같은 일부 이벤트를 가로 채울 수 있습니다 startMovie (확장하기 위해) 및 stopMovie (다시 압축하려면). 또 다른 가능성은 필드를 스크립트로 사용하여 스크립트 멤버로 확장하는 것입니다. 나는 그것이 잘 작동 할 것이라고 확신합니다.

따라서 내 점수는 동적 기능에서 6 점 중 5 ~ 6입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top