HTML은 마크 업 언어이고 C ++은 프로그래밍 언어라고 들었습니다. 그 차이를 어떻게 만들 수 있습니까?


22

저의 프로그래밍 친구들은 항상 HTML은 마크 업 언어이고 C ++는 프로그래밍 언어라고 말합니다. 차이점을 물어 보면 결코 합리적인 대답을하지 않습니다.

C ++를 프로그래밍 언어로, HTML이 아닌 것은 무엇입니까?


5
튜링 완료 이외의 의미입니까?
Manoj R

1
@ManojR 모든 Turing 완성 언어가 프로그래밍 언어로 간주되는 것은 아닙니다 (예 : XSLT).
yannis


1
감사합니다. 질문이 다시 열리고 더 이상 사용되지 않는 주석이 제거되었습니다.
yannis

1
@YannisRizos 방금 OP 제공 한 설명 을 의견에 복사 했습니다 . 왜 그렇게 많은 사용자가 자신의 게시물에 대한 중요한 내용을 편집 대신 댓글에 넣었는지 궁금합니다. 내 거의 항상 그런 경우에 내 게시물을 편집
gnat

답변:


45

프로그래밍 언어는 명령어를 기계에 전달하도록 설계된 표기법입니다. 이 정의에 따르면 C ++과 HTML은 프로그래밍 언어이며, 1801 년에 조셉 마리 자카드 (Joseph Marie Jacquard)가 자신의 직기프로그래밍 하는 데 사용한 표기법과 마찬가지로 프로그래밍 언어 입니다.

그러나 데이터를 구조화 및 / 또는 설명하는 데 사용되는 언어가 확산됨에 따라 프로그래밍 언어의 정의는 알고리즘을 표현할 수있는 언어 만 포함하도록 변경되었습니다. 이것은 오늘날 가장 일반적인 정의이며 HTML 또는 XML과 같은 언어는 제외합니다.

현재 정의의 핵심은 튜링 완전성 의 개념입니다 . 대부분의 프로그래밍 언어는 Turing complete이며 Turing completeness는 프로그래밍 언어를 다른 컴퓨터 언어와 구분하는 중요한 특성으로 종종 인용됩니다. 이것은 일반적으로 일반적으로 충분하지만 완전히 정확하지는 않습니다.

  1. Turing이 아닌 완전한 언어 중 일부는 프로그래밍 언어로 간주됩니다 (예 : Charity) .
  2. 일반적으로 프로그래밍 언어로 간주되지 않는 일부 언어 (예 : XSLT) 는 Turing complete 입니다.
  3. 튜링 완전성만으로는 언어의 유용성에 대해 많은 것을 말하지 않습니다 .

상황에 따라 원하는 정의를 선택할 수 있습니다.

편집하다:

언어의 구현은 언어 자체에 특성을 부여하지 않습니다. 그러나 튜링 완료가 아닌이 구현이 언어 자체가 튜링 완료되지 않았 음을 의미하지는 않습니다 (구현이 적합하지 않음을 의미 함). 언어의 세부 사항과 언어의 특정 구현에 대한 세부 사항은 별도의 것으로 인식되어야하므로 해석되거나 컴파일 된 언어를 호출하는 것이 부정확 한 이유입니다.


6
"프로그래밍 언어로 간주되지 않는 XSLT"에 대해 자세히 설명해 주시겠습니까? 나는 이것을 본 적이 없으며 IMO는 이것을 말할 때 누군가의 지식이나 PL에 대한 역량에 의문을 제기하기까지합니다. XSLT가 PL로 간주되어서는 안되는 이유조차 생각조차 할 수 없습니다 (XSLT는 타르타르의 온화한 경우 일 수 있지만 다른 문제입니다).
bhaak

@bhaak 나는 그것이 프로그래밍 언어로 간주 되어서는 안된다고 말하는 것이 아닙니다 . 데이터 변환 언어는 일반적으로 프로그래밍 언어로 생각되지 않습니다. 프로그래밍 언어는 프로그래밍 언어가 아닌지 전혀 말하지 않습니다. XSLT에서 비즈니스 로직을 보았고 개인적으로 프로그래밍 언어로 생각합니다. 그러나 직장에서 처음 본 적이 없다면 아마 아닐 것입니다. 어쨌든 누가 신경 쓰나요?
yannis

튜링 완료의 의미에 대해 한두 문장을 추가 할 수 있습니다.
phant0m


@ think123 나는 Wikipedia에서보다 간단한 정의를 줄 수 없다고 생각하며 이미 답변의 관련 기사에 링크되어 있습니다.
yannis December

5

"보면 알다" 라는 구절 은 화자가 표현 가능한 사실이나 사건을 분류하려고 시도하는 구어체 표현이지만, 범주는 주관적이거나 명확하게 정의 된 매개 변수가 없습니다. 이 문구는 Jacobellis v. Ohio (1964)의 외설 성에 대한 그의 임계치 테스트를 설명하기 위해 미국 대법원 포터 스튜어트가 유명하게 사용했습니다 .

- "보면 알아요"위키피디아 기사

외설처럼, 우리는 프로그래밍 언어를 볼 때 모두를 알고 있다고 생각합니다. 이미 OP는 C ++을 프로그래밍 언어로, HTML은 언어가 아닌 것으로 판단했기 때문에 분명히 가능합니다.

공식적인 정의를 추구하는 목표는 정확히 무엇입니까? Yannis는 이미 가장 인기있는 정의 인 Turing 완전성에 결함이있는 이유에 대해 설명했습니다. "볼 때 알 수 있음"테스트를 무시하는 분류로 이어집니다.

나는 당신이 생각해 낼 수 있는 모든 정의는 우리 모두가 "프로그래밍" 하지 않다고 생각하는 일부 언어로 이어질 것입니다. 또는 우리 모두 "프로그래밍" 한다고 생각하는 일부 언어 에는 언어가 아닌 것으로 분류됩니다 것으로 .

하지 당신의 창자로 이동? 저는 간단한 휴리스틱을 사용합니다. 프로그래밍 언어는 저의 의견과 관찰에 따르면 프로그램을 작성하는 것이 주된 목적인 언어입니다. 내용을 마크 업하지 않습니다. XML을 변형시키지 마십시오. 범용 프로그램 작성 나는 공식적인 정의를 내리려고 시도하는 것보다 그것을 볼 때 오히려 그것을 알고 싶습니다. 그러한 정의를 시도함으로써 얻을 수있는 진정한 가치는 보지 못합니다.


그러나 이제는 "프로그래밍 언어"를 "범용 프로그래밍 언어"로 제한하고 있습니다. 후자는 사람들이 "프로그래밍 언어"라고 말할 때 일반적으로 의미하는 것이지만, "프로그래밍 언어"의 정의 특성이 무엇인지 정확하게 추구하는 것도 프로그래밍 언어가 무엇인지, 어떻게 작동하는지, 한계가 무엇인지 이해하는 데있어 중요합니다. 예를 들어, 숙련 된 프로그래머는 정지 문제가 발생할 때이를 인식해야하며, 이는 프로그래밍 언어의 이론적 경계를 연구하지 않으면 어려울 수 있습니다.
JesperE

@JesperE : 최소한 "일반적으로 이해하는"프로그래밍 언어로 "내가 알면 판단"을 제한하게되어 기쁩니다. 또한 "숙련 된 프로그래머"는 정지 문제에 대한 지식이 필요하다는 것에 동의하지 않습니다. 저는 공식적인 컴퓨터 과학 교육을 통해 얻은 지식에 대한 지식이 거의 20 년의 전문성 개발과 관련이 없었 음을 알고 있습니다.
Carson63000

1
당신이 그것을 제기하지 않았다면 아마 좋을 것입니다. 그렇다고 아는 것이 중요하지 않다는 의미는 아닙니다. 실제 사용 빈도에 따라 안전 벨트의 품질을 판단하지 않습니까?
JesperE

휴리스틱에 의해 프로그래밍 언어가 생략 되었습니까?
Brian

@ 브라이언 : 흥미로운 것! 필자는 항상 elisp를 Lisp의 구현으로 생각했을 것입니다. Lisp는 분명히 프로그래밍 언어입니다.이 특정 구현은 목적 범위에 훨씬 더 구체적 이지만 말입니다 .
Carson63000

2

마크 업 언어는 주로 정보가 표시되는 방식을 다루며 일반적으로 변수, 수학, 비교, 의사 결정 (있는 경우 ...), 루프 (for, while) 등의 프로그래밍 인프라에서 부족합니다.

HTML 자체는 정적입니다. 즉, 워드 프로세서와 매우 유사하게 정보를 그대로 제시하는 것입니다. HTML 웹 페이지는 일종의 프로그래밍 언어 (일반적으로 JavaScript, PHP 등의 스크립팅 언어)를 추가해야만 "변경되는"내용을 가질 수 있습니다. 스크립팅 언어는 변수, 수학, 비교, 의사 결정, 루프 등으로 "프로그래밍"가능성을 제공합니다.


0

HTML은 선언적인 언어입니다. 자체적으로 많은 작업을 수행하지 않고 문서 및 내용 (의미 적 의미가있는 태그 사용) 만 설명합니다.

반면에 C ++은 무언가를합니다. 함수와 클래스를 정의하지만 이러한 함수의 작동 방식, 입력 및 출력이 의미있는 방식으로 연결되는 방식 및 응용 프로그램 전체를 실행하는 방법도 설명합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.