프로그래밍 언어가 장황하거나 간결한 지 확인하는 방법은 무엇입니까?


17

프로그래밍 언어는 종종 verbose 또는 terse 로 설명 될 수 있습니다 .

내 이해로, 장황한 언어는 읽고 이해하기 쉽지만 간결한 언어는 간결하고 깔끔하지만 읽기는 더 어렵습니다. 정의에 고려해야 할 사항이 있습니까?

오늘날 널리 사용되는 프로그래밍 언어는 대부분 장황한 것으로 보이며,이 두 용어는 다른 언어에 비해 언어를 설명하는 데만 사용됩니다.

프로그래밍 언어가 다른 언어보다 더 장황하고 간결한 지 어떻게 알 수 있습니까?

예 : C #이 Java보다 더 장황합니까?

답변:


30

내 이해로, 장황한 언어는 읽고 이해하기 쉽지만 간결한 언어는 간결하고 깔끔하지만 읽기는 더 어렵습니다.

이것은 거짓입니다. 상세는 많은 기호를 의미합니다. 간결함은 더 적은 기호를 의미합니다.

이것은 읽기 쉬움이나 이해하기 쉬움과 관련없습니다 .

어떤 사람들은 장황한 COBOL을 쉽게 읽을 수 있고 다른 사람들은 그렇게하기 위해 많은 기호가 필요하기 때문에 혼란스러워합니다.

일부 사람들은 프로그램이 매우 짧기 때문에 간결한 I / J / K 및 APL을 읽기 쉽다고 생각합니다. 다른 사람들은 기호가 모호하기 때문에 읽기가 어렵다고 생각합니다.

Terse / Verbose는 읽기 또는 이해하기 쉬운 관계가 없습니다.

정의에 고려해야 할 사항이 있습니까?

아니요. 간결하고 자세하게 정의하면 좋습니다.

중요한 것은 이러한 정의는 "읽기 쉽고 이해하기"와 아무 관련이 없다는 것입니다.

오늘날 널리 사용되는 프로그래밍 언어는 대부분 장황한 것 같습니다.

정말?

프로그래밍 언어가 다른 언어보다 더 장황하고 간결한 지 어떻게 알 수 있습니까?

무언가를 달성하기 위해 토큰을 세십시오.

Add 2 TO A GIVING B.

토큰 7 개

b = a + 2;

토큰 6 개

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse


5
"Terse / Verbose는 읽기 또는 이해하기 쉬운 관계가 없습니다."+1 나는 항상 올바르게 수행하면 상당히 조밀하지만 여전히 읽기 쉬운 수학적 표기법을 생각합니다.
Frank Shearar

5
@sunpech : 영어 단어의 의미입니다. "자세한"은 많은 단어를 의미합니다. "terse"는 더 적은 단어를 의미합니다. 가독성과 관련이 없습니다. 단순히 단어 수. 내가 한 것은 "word"를 "token"으로 바꾸는 것이었다. 영어 일뿐 특별하지 않습니다.
S.Lott

1
토큰의 길이를 고려할 수도 있습니다. Common Lisp은 많은 키워드가 길고 COBOL의 장황함을 더하기 때문에 어려워 보입니다.
David Thornley

1
@Frank Shearar : 사실이 아닙니다. 학생들이 수학을 배우는 데 걸리는 시간에 대해 생각하십시오. 읽을 수없는만큼 (심각한 수학), 6 년간의 중등 교육 후에도 대다수는 여전히 심각하게 읽을 수 없습니다. 읽을 수없는 것은 나쁜 일이 아닙니다! 그러나 수학은 읽을 수있는 표기법이라는 말은 근시안적인 의견이다.
David Mulder

2
@DavidMulder : 수학적 표기법은 크게 다르기 때문에 우리 모두 쌍곡선의 죄를 짓고 있다고 생각합니다. 대 수법, 이론, 기본 미적분학의 표기법을 투명하게 생각하십니까? 다른 한편으로, 나는 텐서들의 추상 표기법을 읽을 수없는 말이 아닌 것으로 간주한다. (그러나, 나는 또한 표기법을 제대로 배우는 데 시간이 걸리지 않았습니다.)
Frank Shearar

6

프로그래밍 언어가 다른 언어보다 더 장황하고 간결한 지 어떻게 알 수 있습니까?

동등하거나 유사한 언어 구성을 비교함으로써, 구체적으로 동일하거나 동등한 작업을 한 언어에서 다른 언어로 어떻게 해결할 수 있는지.

C #이 Java보다 더 장황합니까?

Java는 일반적으로 C #보다 더 장황합니다. 가장 분명한 차이점은 델리게이트 및 람다 식입니다. 여기에서 Java는 C #에서 단일 람다 식을 사용하여 수행 할 수있는 작업을 수행하기 위해 고유 한 인터페이스를 정의, 서브 클래 싱 및 인스턴스화해야합니다.


1
Java는 이제 Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/… )을 사용 하여 람다 식을 지원합니다.
shanraisshan

1
@shanraisshan : 예, 시간이 지남에 따라 더 좋아졌지만 AFAIK Java는 여전히 조금 더 장황합니다. 예를 들어, 연결된 문서에서 코드에는 많은 p.getAge()명령문이 포함됩니다. C #에서는 속성을 작성 Age하여 멤버 함수와 동일한 수준의 캡슐화를 제공 getAge하지만 p.Age대신 작성할 수 있습니다 .
Doc Brown

1
또한 Java는 개선되었지만 C #은 정적 대상이 아닙니다 ... 생성기 함수 및 async / await와 같은이 답변 이후의 새로운 기능은 C # 코드가 Java에 비해 짧을 수 있도록합니다.
Jules

3

프로그래머가 아닌 사람에게 코드 스 니펫을 제공하고 해당 스 니펫이 무엇을 시도하는지 설명하도록 요청하십시오. 가장 가까운 대답을 얻으면 자세한 정보입니다. WTF 표현을 얻는다면 간결합니다.


2

측정을 언어의 표현성 이라고 합니다. 이에 대한 일반적인 메트릭은 동일한 기능을 구현하는 데 필요한 표준화 된 코드 줄 또는 명령문을 측정하는 것입니다.

Wiki의 일부 값-하나의 명령문 / 라인의 하나의 기능을 구현하는 데 C 코드의 명령문 / 라인 수는 다음과 같습니다.

  • C-진술 : 1 줄 : 1
  • C ++-문장 : 2.5 줄 : 1
  • 포트란-진술 : 2.5 줄 : 0.8
  • 자바-문장 : 2.5 줄 : 1.5
  • 펄-진술 : 6 줄 : 6
  • 스몰 토크-진술 : 6 줄 : 6.25
  • 파이썬-문장 : 6 줄 : 6.5

이러한 측정 중 하나가 FORTRAN이 C보다 약간 마진 (!)으로 더 표현 적이며 다른 하나는 C ++가 C (!!)로 동일하게 표현된다고 언급하면서 이와 같은 "메트릭스 ".
Jules
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.