0

을 끌 프로그래밍 할 수 몇몇 언어에 표준으로. 기본적으로 모든 기능으로 시작되는 고급 언어를 만들 수 있으며 프로그램이 실행되면 의 기능을 선택하거나 격리 된 코드 섹션을 선택할 수 있습니다. 그래서 그들은 이러한 기능을 사용하지 않습니다. 아마도 동적 대신에 추상 구문 트리의 브랜치를 정적으로 유형을 수정하도록 수정할 것입니다. 컴파일 된 대신 해석됩니다.왜 프로그래밍 년 <em>진화으로 언어</em>, 점점 더 많은 기능 <em>(가비지 컬렉션, 예외, 동적 타이핑)</em>이 추가되었습니다 (높은 수준의 언어 어셈블러에서) 선택 "기능"

동적 인 및 정적으로 사용할 수있는 프로그래밍 언어가 있으며 가비지 수집을 선택적으로 돌릴 수 있으며 사용 된 개체를 해제하거나 심지어 예외 처리를 사용하지 않도록 설정하여 실행 시간이 구성되는 지점까지 갈 수 있습니다 단지 C와 같은 구조체 또는 위에서 언급 한 어떤 것인가?

+0

언어는 단지 언어입니다. 그것의 구현은 그것이 어떻게 동작하는지 또는 행동하지 못하게 지시한다. 인용 된 파이썬이 잘 보여 주므로 동일한 언어가 해석되거나 * 컴파일 될 수 있습니다. 파이썬은 또한 정적 타입 검사, 그리고 본질적으로 정적 타이핑에 사용될 수있는 임의의 주석을 지원합니다. – deceze

+0

나를 위해 언어는 구문, 구현 (기능), 커뮤니티 (얼마나 많은 공유 리소스와 코드가 있는지)와 같은 많은 것들로 구성됩니다. 나를위한 컴파일러는 기능의 일부입니다. – RFVenter

답변

1

당신이 원하는 언어를 구현하려면 두 가지 대안 (가비지 수집 및 수동 메모리 관리 또는 정적 및 동적 입력)을 지원하고 두 세계를 상호 운용하도록 만들어야합니다.

다른 말로하면, 단지 "끄기"라고 말하는 것은 실제로 "디자인 A, 디자인 B, A와 B 사이를 전환하는 디자인"입니다. 따라서이 작업을 수행하는 것은 상당한 양의 추가 설계 및 구현 작업이 될 수 있으며, 언어가 복잡해지고 언어가 "최악의 경우"로 끝날 수도 있습니다. 이제

, 제한된 형태로, 당신이 존재 언급 한 기능을 모두 조합을 지원 언어 :

  • C 번호는 일반적으로 정적으로 입력 된 언어이지만 그것은 또한 dynamic 키워드를 가지고, 당신을 수 있습니다 특정 변수에 대한 동적 타이핑으로 전환 할 수 있습니다. 이것은 주로 동적 언어와의 상호 운용을위한 것이 었으며 실제로 사용되지 않았습니다.

  • C++/CLI 모두 수동 관리 메모리 (* 포인터 new은 할당 및 할당 해제하는 delete) 및 가비지 수집 메모리 (^ 포인터 gcnew가 할당)를 지원하는 언어이다. 주로 C++ 코드와 .Net 코드 간의 상호 운용을위한 것이므로 실제로 널리 사용되지는 않습니다.

여기에서 테마를 발견했을 것입니다. 두 경우 모두 기능/언어가 두 세계를 연결하기 위해 만들어졌지만 많은 관심을받지 못했습니다.