5

많은 프로그래밍 언어가 일반적이고 심지어 보편적 인 기능을 공유합니다. 예를 들어 Java, VB6, .NET, PHP, Python을 비교하면 제어 구조, 숫자 및 문자열 조작 등과 같은 공통 기능을 찾을 수 있습니다.언어에 대한 범용 모델이 있습니까?

메타에서 이러한 기능을 정의하기 위해 수행 된 작업 - 언어 (또는 언어에 구애받지 않는) 수준?

UML은 모든면에서 소프트웨어에 대한 설명을 제공하지만 실제로는 데이터 프로세스 인 것처럼 보입니다. UML과 관련이 있습니까?

"현재의 과다를 대체하는 단일 언어가없는 이유는 무엇입니까?" 우리는 많은 다른 도구가 필요합니다 (적어도이 시대에는).

모든 언어가 템플릿에 어울리는 지 묻지 않습니다. 어셈블리 언어와 컴파일 된 언어는 충분히 다를 수 있습니다 (일부 사람들은 HTML을 언어라고 부릅니다.). 모든 시도는 적절히 협소 한 범위에서부터 시작됩니다. 이것과 일치하여, 나는 모델이 완전한 유효성을 가진 작은 선택을 커버 할 것으로 기대하지 않을 것이다.

그러나 나는 그런 모델이 한 언어에서 다른 언어로 옮겨가는 데 사용될 수 있다고 기대할 것입니다.

+0

UML은 "언어에 대한 범용 모델"이 아니며 "모델링을위한 범용 언어"입니다. 모델을 프로그램으로 바꾸는 것은 개발자에게 달려 있습니다 (또는 UML 도구가 코드를 생성하는 경우). –

답변

3

설명하는 내용은 formal semantics of programming languages과 같습니다. 다양한 접근 방식이 있으며 각각은 프로그래밍 언어에서 프로그램의 의미를 공식적으로 지정하는 방법을 제공합니다.경우에 따라이 사양은 본질적으로 람다 미적분과 같은 다른 언어로의 변환이거나 SECD와 같이 공식적으로 지정된 추상 기계에 대한 컴파일입니다.

여기서는 너무 많은 작업으로 특정 참조를 선택하기가 어렵습니다. 그러나 검색을 계속하기 위해 유용한 키워드를 제공해주기를 바랍니다.

+0

이것은 지금까지 7 가지 답변 중 가장 좋은 것으로 보입니다. 그리고 다른 사람들의 대부분처럼 위압적입니다 - 링크 된 기사를 스캔 할 때 엄청난 영향을 미칩니다. – Smandoli

+0

나는 this 책을 집에 가지고 있습니다. 나이가 들어서 조금 오래되었지만, 거기에있는 서류 들보 다 조금 무서운 것 같습니다. 특정 언어의 예제를 통해 자세히 작업합니다. 예를 들어 Prolog의 (서브 세트의) Algol-68 로의 완전한 번역은 Algol-68이 다른 언어를 나타 내기 위해 보편적 인 언어로 사용되는 방법을 보여줍니다. – sigfpe

0

UML은 일반적으로 실제 코드로 이동하기 전에 간단한 용어로 알고리즘/코드를 정의하는 데 사용됩니다.

귀하의 질문에 대한 추측을하기 위해 언어의 필수 부분 집합이 이미 정의되어 있습니다. 그럴 경우, 다른 경우 ... 이것은 표준으로 설정되거나 기본으로 설정됩니까? 모든 언어에서 사용되는 라이브러리 : 아니요, 다른 언어 개발자가 직접 해보기를 원하기 때문입니다.

+0

"필요한 부분이 이미 정의되어 있습니다."- 그 비트에 대한 더 많은 정보를 찾고 있다고 가정합니다. – Smandoli

+0

Romain Hippeau의 튜링 완성도에 대한 대답을 풀려면 가장 원시적 인 것처럼 보일 것입니다. if, goto 및 메모리 할당이 필요합니다. 함수, 루프 및 데이터 유형과 같은 고급 기능은 세 가지 기본적인 아이디어로 구성됩니다. – aepheus

4

많은 시도가 있었지만 아무 것도 성공하지 못했습니다. 내가 알고있는 가장 초기의 것은 약 50 년 전에 UNCOL입니다.

꽤 유사하기 때문에 공통점이 많은 언어 목록을 제공했습니다. 공통 뿌리 및 일부 OO 확장이 포함 된 모든 절차 언어이므로 너무 놀랍지 않습니다. LISP, haskell, erlang, prolog 또는 심지어 SQL과 같은 다른 언어를 살펴보기 시작하면 매우 다른 것을 보게됩니다.

+0

나는 그 큰 관점을 갖고 싶다. 나는 작은 광산이 얼마나 더 좋은지에 대해 배울 수있어서 기쁩니다. SQL의 경우, "언어"라는 용어가 부적절하거나 애매한 단어의 다른 예입니다 (적어도 나를 사용하는 경우). 더 풍부한 어휘가 필요해. – Smandoli

+0

UNCOL 참조 주셔서 감사합니다. Wikipedia : "UNCOL은 1960 년대 초반 야심 찬 노력을 기울 였지만 컴파일러 작성 문제를 해결하기위한 시도는 언어 및 컴파일러 기술이 아직 성숙하지 않았기 때문에 궁극적으로 실패했습니다. "그래서 ... 정말 바뀌 었습니다. 성숙이 더 많으면 다양성이 줄어들지 않습니다. – Smandoli

0

실용적인 목적으로는별로 유용하지 않은 튜링 기계가 일반성을 잃지 않고 가장 가까이에있을 수 있다고 생각합니다. 그러나 Turing 기계 언어가 "레이블이 지정되고"재사용되도록 허용하는 경우 저수준에서 고수준으로 작업하면서 필요한 개념을 구축 할 수 있습니다.

+0

누군가의 졸업 논문이어야합니다. 그렇죠? – Smandoli

+1

@ 스만도 리, 아마도 사람들의 대학원 논문의 * 많은 *입니다! – tloflin

+1

글쎄, 그 결과가 괜찮은 게임을 할 수있는 무언가가있는 한. – Smandoli

0

MOF는 보편적 인 언어라고 생각합니다. 예를 들어 UML 메타 모델을 통해 MOF에서 UML 다이어그램을 만들 수 있습니다. 이 메타 모델 정보를 xmi에 저장하면 원하는 정보를 원하는 언어로 저장할 수 있습니다. XMI 의미론은 너무 풍부하여 사용에 제한이 없습니다. 메타 모델 상단의 xmi에 UML을 매핑하면 MOF와 실시간으로 동기화됩니다.이 언어는 보편적 인 언어입니다.

0

Pattern Calculus의 저자는 이러한 보편적 인 모델을 제안하는 것으로 보입니다. 보편적 인 모델을 정의하려는 이전의 시도, 즉 부분적으로는 좋지만 마지막 단어에는 적합하지 않은 것처럼 유용 할 것으로 기대합니다.