프로그래밍 언어의 자세한 표현에 대해 불평하는 사람들이 많이있었습니다. 일부 범위 내에서 프로그래밍 언어가 더 장황할수록 이해하는 것이 좋습니다. 또한 자세한 내용은 API
해당 언어에 대한 명확한 글쓰기를 강화한다고 생각합니다 .
내가 생각할 수있는 유일한 단점은 더 많이 입력한다는 것입니다.하지만 대부분의 사람들은 모든 작업을 수행하는 IDE를 사용합니다.
그렇다면 장황한 프로그래밍 언어의 가능한 단점은 무엇입니까?
프로그래밍 언어의 자세한 표현에 대해 불평하는 사람들이 많이있었습니다. 일부 범위 내에서 프로그래밍 언어가 더 장황할수록 이해하는 것이 좋습니다. 또한 자세한 내용은 API
해당 언어에 대한 명확한 글쓰기를 강화한다고 생각합니다 .
내가 생각할 수있는 유일한 단점은 더 많이 입력한다는 것입니다.하지만 대부분의 사람들은 모든 작업을 수행하는 IDE를 사용합니다.
그렇다면 장황한 프로그래밍 언어의 가능한 단점은 무엇입니까?
답변:
"Verbose"는 "너무 많은 단어를 사용합니다"를 의미합니다. 문제는 "너무 많은"것입니다.
좋은 코드는 한 눈에 이해하기 쉬워야합니다. 대부분의 문자 가 코드의 목적을 직접 제공하는 경우 더 쉽습니다 .
경우 언어가 장황, 코드의 더 많은 소음입니다. Java의 "Hello World"를 비교하십시오 .
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
... 루비와 함께 :
print "Hello World!"
소음은 정신 에너지를 낭비합니다.
다른 한편으로, 언어의 과도한 간결함 은 정신 에너지를 요합니다. Common Lisp의 다음 두 예제를 비교하십시오 .
(car '(1 2 3)) # 3 characters whose meaning must be memorized
# vs
(first '(1 2 3)) # 5 characters whose meaning is obvious
한 눈에보고 파싱 할 수있는 코드의 양에 영향을줍니다.
x++
오히려 set(x,Integeradd(get(x),1))
추신. 코드를 읽는 것만이 아닙니다. 40x25의 화면에서 APL 유형 언어 또는 Perl은 Cobol 또는 Fortran보다 읽기 / 페이지 수있는 코드 양에 유용했습니다. 그러나 이제는 자신의 내부 캐시에 관한 것입니다. 문에 단일 연산자가 있으면 3 개의 기호와 4 개의 함수 호출을 가진 하나보다 노화 두뇌가 구문 분석하기가 더 쉽습니다.
set
여기서 방법은 무엇 입니까? 실제로 무언가를 설정합니까 (예 : 첫 번째 x
매개 변수), 무언가를 반환 x
합니까 (예 : 호출 후 할당 )? 자세한 예제에서 이상한 복제가 진행되고 있다고 말할 것입니다.
+
보다 더 의미가 plus
있습니다. =
보다 낫다 equals
. 이것은 물론 너무 멀리 갈 수 있고 (여러 언어로도 사용 가능) 적당히 사용될 때 매우 강력합니다.
언어의 세부 정보가 코드 가독성을 떨어 뜨리면 좋지 않습니다.
일부 언어에는 코드 의 의미 를 이해하는 데 시간이 오래 걸리는 자세한 구문이 있습니다 (VB.NET과 C #에 대해 생각하고 있습니다).
If something Then
End If
if(something)
{}
실제로 코더가 친숙하고 편안한 것으로 요약합니다.
If .. Then .. End If
중요한 것을 읽습니다.
현재 생각할 수있는 가장 장황한 언어 중 하나 인 AppleScript를 살펴보고 , 부족한 것을 작성 하고, 되돌아 와서 자세한 내용이 언어에서 좋은 특성이라고 주장하십시오.
매일 키워드를 사용하지 않으면 키워드의 위치와 키워드의 의미를 모두 기억하는 것이 쉽지 않습니다.
이 간단한 예 에서 모든 키워드 노이즈 를 살펴보십시오 .
tell application "Finder"
if folder "Applications" of startup disk exists then
return count files in folder "Applications" of startup disk
else
return 0
end if
end tell
bash
전통적인 유닉스 도구와 동일한 것을 인정하면 간결하지만 대부분의 OSX 사용자에게는 암호가 될 수 있으므로 균형을 맞춰야합니다.
return the 0
입력 할 때 원하지 않습니까? AppleScript는 내가 아는 유일한 언어로 상대방에게 키워드 애도를 허용합니다. 동료를 의미합니다.
나는 당신이 머리에 질문을 켜고 질문해야한다고 생각합니다 : 왜 어떤 사람들은 간결한 코드가 좋다고 생각합니까?
내 대답은 두 가지 기본 이유가 있다는 것입니다.
간결이 더 좋은 이유
여기에는 짧은 문장이 꽃이 많고 장황한 문장보다 더 이해하기 쉬운 방식으로 더 읽기 쉬워집니다. 종종 영어 문법을 모방하려고 시도하는 프로그래밍 언어는 끔찍하게 길어지기 때문에 가장 간단한 작업을 수행하기 위해 엄청난 양의 코드가 필요합니다. 종종 언어가 서면 언어를 에뮬레이트할수록 논리적으로 복잡한 작업을 수행하기 위해 언어를 동축하기가 더 어렵다는 것을 알게 될 것입니다.
간결한 것이 더 나쁜 이유
어떤 언어들 (그리고 나는 Perl을 생각하고있다)은 이상한 상징들의 배열을 사용하는데, 그것들은 구문의 일부로 거의 임의로 선택된 것처럼 보인다. 이 상형 문자에 익숙하지 않은 사람에게는 언어가 뚫을 수 없게됩니다. 쉽게 볼 수없는 오타를 쉽게 만들 수 있습니다. 정규 표현은 아마도 이런 종류의 간결함을 보여줄 것입니다.
또한 어떤 사람들은 간결한 코드를 작성하여 자신을 영리하게 보이게하기 때문에 과시하기를 좋아합니다. 때때로 사람들이 가독성을 희생하면서 매우 컴팩트 한 답변을 제출하는 StackOverflow에서이 사실을 알 수 있습니다. 이것은 당신이 철학을 얼마나 많이 알고 있는지에 대한 일종의 "동료들에게 감동을주는 것"이지만, 훌륭한 프로그래머들은 " 코드 골프 "가 유지 보수 가능한 소프트웨어를 만드는 방법이 아니라는 것을 알고 있습니다.
terse
반의어 가 아닙니다 verbose
. / ducks
@frowing에서, 자세한 문제를 보는 한 가지 방법은 프로그래밍이 항상 솔루션을 찾고 표현하는 두 가지 스타일의 혼합이라는 것을 깨닫는 것입니다.
첫 번째로 더 장황한 스타일은 언어 지향적 (언어 적) 프로그래밍입니다. 이 스타일은 문장과 유사한 구조 내에서 명사와 같은 단어와 동사와 같은 단어를 결합하며 잘 작성된 단락과 거의 같은 방식으로 읽고 이해하도록 의도되었습니다. 언어 자체는 보편적이기 때문에 언어 적 프로그래밍은 가장 보편적 인 프로그래밍 스타일입니다. 같은 이유로, 장기 프로그램 지원에는 항상 강력한 언어 구성 요소가 필요합니다. 새로운 프로그래머가 가장 먼저 찾는 것은 수행되는 작업에 대한 개념적인 이해이기 때문입니다. 일반적으로 프로그램을 작성하는 맥락에서 멀어 질수록 언어 적 프로그래밍 스타일이 더 중요 할 것입니다. 언어적인 프로그래밍 스타일은 코드를 이해하려는 다음 사람이 가정과 개념을 오해하지 않도록하는 것입니다. .
두 번째로 간결한 스타일은 수학 중심 (수학) 프로그래밍입니다. 예를 들어 변수는 명사 및 연산자와 동사와 유사하기 때문에 이러한 추론 스타일은 언어에 의존합니다. 그러나 수학적 추론은 우리 뇌의 놀랍고 평행 한 능력을 활용하여 우리의 시야 내에있는 물체에 대해 복잡한 공간 변형을 수행합니다. 명사와 동사를 작고 독특한 상징으로 표현함으로써, 잘 짜여진 가상의 물체 (방정식)로 배열 될 수 있으며, 고도의 평행 한 시각적 기능을 사용하여이 가상의 회전, 교체, 이동, 반전 및 기타 변형을 수행 할 수 있습니다. 사물. 각 심볼은 밀접하게 관련된 객체의 전체 클래스를 나타낼 수 있기 때문에 결과적으로 한 번에 처리 할 수있는 사례 수를 크게 증폭 할 수 있습니다.
시각적 처리를 효과적으로 적용하려면 가상 객체를 가능한 한 크기와 기능을 실제 객체와 비슷하게 유지해야합니다. 필요한 시야가 너무 넓어 지거나 기호를 물체의 움직일 수있는 표시처럼 사용할 수 없거나“문자를 읽고”단어로 변환해야하는 경우 복잡한 변환을 안정적으로 수행하는 능력이 떨어집니다 아주 좋은 수학자에게도
그렇기 때문에 수학의 프로그래밍 스타일에 깊이 빠져있는 사람들은 방정식이 널리 퍼져서 "자세한"언어 적 스타일로 표현 될 경우 심각하게 불행해질 수 있습니다. 방정식이 크게 바뀌었기 때문이 아니라 시각적으로 이해하는 스타일을 적용하는 것을 거의 불가능하게 만들 수 있기 때문입니다. 그러나 동시에 짧은 기호에 익숙하지 않은 새로운 프로그래머는 코드의 기능을 처음 이해하기 위해보다 언어적인 정보를 제공하는보다 자세한 버전을 선호 할 것입니다.
그래서 내가 무엇을 추천할까요?
두 스타일을 모두 사용하되 각 스타일을 사용 하는 이유에 주의를 기울이십시오 .
예를 들어, 외부 세계와 인터페이스 할 가능성이있는 것은 코드와 혼합 된 인라인 주석의 형식으로되어 있어도 어느 정도 집중적으로 자세해야하며 올바른 사용법에 대한 자동 검사도 포함해야합니다. 암묵적이고 특히 불완전하게 정의 된 표기법은 그러한 인터페이스에서 아무런 의미가 없습니다. 화성 기후 Obiter 1999 손실 때문에 소프트웨어 인터페이스 유닛 파운드 뉴턴으로 표현되었는지를 인식하는 실패는 소프트웨어 또는 하드웨어 인터페이스에 원료 수에 의존 너무 부담의 위험 특히 지적 된 예이다.
반대로, 깊이 알고리즘적이고 수학적인 모든 형태의 프로그래밍은 수학적 스타일의 추론을 지원하는 훌륭한 간결한 프로그래밍입니다. 새로운 사람이 그러한 코드를 유지해야한다면, 코드를 좀 더 장황한 형태로 변환하는 대신 수학적 표기법을 배우는 것이 일반적으로 더 좋습니다. 물론 그러한 개발자가 사용할 수있는 수학적 부분을 수학 부분을 설명하기 위해 쉽게 구할 수있는 문서가 항상 있어야하지만 그것은 별도의 문제입니다.
이러한 극단 사이에는 프로그래머가 상당한 재량권을 가지고있는 경우가 많습니다. 코드를 장기적으로 유지 관리하는 방법을 살펴보고 장기적으로 코드를 유지 관리 할 가능성이 가장 높은 사람들의 요구를 수용하려고합니다.
많은 사람들이 아마도 명시 적으로 언급해야 할 내용을 암시했습니다.
자세한 표현은 미시적 수준의 이해를 선호하는 경향이 있습니다. 일반적으로 개별 진술을 읽고 이해하기 쉽습니다. 자세한 표현은 또한 언어를 이해하는 데 필요한 언어에 대한 친숙 함 정도 (적어도 어느 정도까지)를 줄이는 경향이 있습니다. 가장 장황한 언어 (예 : COBOL)는 완전한 프로그래머가 아닌 사람이라도 읽을 수 있습니다.
결정은 반대 방향으로 향합니다. 거시적 수준에서, 특히 해당 언어에 가장 친숙한 프로그래머가 이해하는 데 도움이됩니다. 동시에, 특정 언어에 대한 지식이 부족하면 숙련 된 프로그래머조차도 초보적인 이해조차 할 수 없습니다.
따라서 가독성은 대상 사용자에 따라 크게 다릅니다. 한편으로, 거의 독점적으로 해당 프로젝트를 수행하는 사람들이 작성하고 관리하는 크고 복잡한 프로젝트를 고려하십시오. 대부분은 상당한 프로그래밍 배경과 교육을받은 사람들입니다 (예 : 많은 박사 학위). 이것은 더 간결한 언어를 선호하는 경향이 있습니다.
그 반대의 극단에서, 소프트웨어 자체보다는 소프트웨어와 관련된 비즈니스를 전문으로하는 사람들이 주로 유지하는 상당히 단순한 프로젝트 (아마도 여전히 큰 프로젝트)를 고려하십시오. 이것은 훨씬 더 장황한 언어를 선호 할 것입니다.
기술 서적 을 보지 않고 Strunk and White 의 Elements of Style *로 되돌아갑니다 . 기본 개념은 "정확하다"와 "필요 이상으로 말하지 말라"입니다. 다른 모든 것은 주석입니다.
프로그래밍에 적용하면 매우 정확하지만 불필요한 보풀이 없습니다. 여분의 보풀은 구문 일 수 있지만 의미를 전달하는 데 필요한 것보다 많은 단어 일 수도 있습니다. (물론 모호성을 허용하기에는 너무 적지 않습니다)
하루가 끝나면 '다른'것이 있으면 사람들이 울부 짖을 것입니다. 나는 C 스타일 구문에 익숙하기 때문에 비슷한 구문 (C ++, Java, C #)을 공유하는 다른 언어에서도 괜찮습니다. 그래서 나는이 특정 스타일을 선호하는 경향이 있습니다.
언어는 설명 적이면서도 장황하지 않은 균형을 찾는 경향이 있습니다.
펄은 매우 간결한 코드를 작성할 수있는 예제입니다. 처음에는 Perl 닌자가 작성한 코드가 마법에 불과합니다.
COBOL은 너무 자세한 예입니다.
한때 어딘가에서 읽은 많은 논쟁이 새로운 프로그래머와 노인의 손에서 비롯됩니다. 사용 된 비유는 우리가 새로운 것을 배울 때, 우리가 스스로 그것을 극복 할 "이야기"(HS에서 대수학을 언제 배웠는지 생각하는 것)를 말합니다. 경험을 쌓으면서 개별 구성 요소를 설명하는 이야기의 필요성을 넘어서 더 많은 것을 이해합니다. 우리의 코드는 코드가 말하는 것을 반복하는 대신 필요한 항목만을 설명하는 주석과 함께 더 조밀하고 간결 해집니다.
나는 이것이 나와 동료 사이에 사실이라는 것을 알았습니다. 그녀는 코드 줄이 무엇인지 설명하고 많은 공백이있는 주석을 많이 사용하여 코드를 작성합니다. 그것을 읽고 있다면, 이것 때문에 한 화면에 몇 줄의 코드 만 넣을 수 있다는 것을 알았습니다. 각 개별 라인을 이해하는 것이 훨씬 쉬워 지지만 전체 기능을 이해하는 것이 훨씬 어려워집니다.
여분의 공백이나 주석없이 코드를 작성하는 경향이 있습니다. 이렇게하면 전체를 훨씬 쉽게 볼 수 있지만 개별 코드 "단어"를 간단히 "가져올"수 있어야합니다. 각 단어가 고유 한 줄에 있고 공백 / 주석 / 추가 언어가 많은이 대답을 읽으려고하면 각 개별 단어를 이해하는 것이 훨씬 쉽지만 전체를 이해하는 것이 훨씬 어렵습니다.
i++; //this is adding one to var i
경우에는 중복됩니다.
아인슈타인은 "가급적 단순하지만 단순하지는 않다"고했다.
이것은 코드에도 적용됩니다. 반복적이고 불필요하게 장황한 요소를 제거하여 코드를 단순화 할 수 있다면 좋습니다.
또한 일부 사례 연구는 코드 라인에서 측정 된 프로그래머 생산성이 다소 일정하다는 것을 시사합니다. LOC 당 버그 수도 마찬가지입니다. 따라서 다른 모든 사항이 동일하게 유지되면 코드 라인 당 더 많은 작업을 수행 할 수있는 언어로 전환하는 것이 생산성 향상으로 간주 될 수 있습니다.
즉,이 업계에서는 간단한 일을 과도하게 엔지니어링하고 복잡하게 만드는 경향이 있습니다. 관계형 데이터베이스에서 연락처 세부 정보를 채우는 것과 같은 간단한 것. 특정 문제에 대해 엄청나게 복잡하고 잘못된 해결책 ( 기침 MDA)을 보았습니다 . 스칼라와 루비와 같은 언어는 특정 개인의 손에 이해하기 어렵고 지나치게 복잡하며 관리하기 어려운 코드를 생성하는 강력한 도구의 좋은 예입니다. 몇 번의 키 스트로크로 여러 수준의 간접 지시를 사용할 수 있다고해서 특정 망치로 모든 못을보아야하는 것은 아닙니다.
올바르게 사용하면 짧고 이해하기 쉬운 깔끔한 코드를 얻을 수 있습니다. 잘못 사용하면 문제의 개인이 시각적 손상이나 비슷한 언어를 사용하여 더 이상의 피해를 입히지 않는 것이 좋습니다.
진정한 기술은 복잡한 것을 단순한 방식으로 만드는 것이 아니라 단순한 방식으로 복잡한 것을 만드는 데 있습니다.
다른 사람이 맞지 않은 것은 한 화면에 맞는 코드의 양입니다. 몇 가지 이유로 도움이됩니다.
더 많은 코드는 더 많은 개발 시간과 더 많은 버그를 의미하기 때문입니다.
300 줄의 코드가 아닌 100 줄의 코드를 작성하는 경우 즉, 거의 1/3의 개발 시간과 1/3의 잠재적 버그가 발생할 수 있습니다.
적은 코드를 작성하면 기계가 더 많은 일을해야하고 효율성이 떨어지기 때문에 대부분의 경우 효율성과 간결함의 균형을 유지해야합니다.
일반적으로 사람들은 가독성이 높고 간결한 언어보다 읽기 쉽고 자세한 언어를 선호합니다. 그러나, 나는 대부분의 사람들이 "verbosity"를 "clutter"로 동화했다고 생각합니다.
예를 들어 : while(<>){print if($.==2 || $& && !$x++); $.=0 if (/^--+$/)}
매우 간결한 진술입니다. 알고 싶은 모든 것이 포함되어 있습니다. 그러나 간결하기 때문에 이해하기가 어렵습니다. 반면에 같은 프로그램의 좀 더 장황한 버전은 더 읽기 쉽기 때문에 이해하기가 쉽습니다. 이것은 물론 언어 자체의 속성은 아니지만 일부 언어는 더 장황한 반면 다른 언어는 프로그래밍 방식이 더 간결한 경향이 있습니다.
다른 극단적 인 표현으로는 http://en.wikipedia.org/wiki/Literate_programming 입니다. 저는 꽤 흥미로운 개념이라고 생각합니다.
다른 측면은 "클러 터"라고도하는 "원치 않는 상세"입니다. 기술적 이유, 구문 설탕 부족, 부풀린 API 등으로 인해 추가해야 할 사항
나는 명확하고 직관적 인 구문이 매우 중요하다고 생각합니다. 또한 쉽게 읽을 수 있도록 충분히 장황해야합니다. 너무 많은 논리로 채워진 너무 짧은 문장은 종종 약간 더 긴 문장보다 더 많은 시간을 해독 할 수 있습니다. 다른 한편으로, 아주 간단한 것을하기 위해 상용구 라인으로 가득 찬 쓸모없는 bloated 코드는 마찬가지로 귀찮은 일입니다.
자세한 표현은 방대한 양의 텍스트를 사용하는 경향이 있으며, 아주 작은 텍스트 사용은 간결합니다 ...
자세한 내용은 다음과 같은 이유로 나쁩니다.
명확성을 위해서는 특정 레벨의 세부 정보가 필수적입니다.
다음과 같은 이유로 최소 레벨의 상세가 좋습니다.
많은 사람들이 지나치게 간결한 명령의 몇 가지 훌륭한 예는 옛 BASIC 대기 상태를 포함 val(x$)
, str$(x)
그리고 chr$(x)
... 그 문자열 표현에서 숫자를 반환 번호에 대한 문자열을 반환하고, 문자열로 단일 문자 가진 아스키 x 값을 반환합니다.
또는 C / C ++ 포인터와 참조 연산자 &
및 *
BASIC byref
키워드를 기준으로 합니다. C / C ++에서 변수 X를 가질 수 있고 해당 변수에 대한 포인터를 전달할 수 있지만 포인터가 무엇인지, "포인터가 가리키는 변수로 포인터 사용"을 기억해야합니다. 기본적으로 함수 호출에서 byref 키워드로 참조를 전달하면 더 명확하지만 덜 유연합니다.
def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)
이 코드에서 x의 내용은 byref 플래그로 인해 수정됩니다. 일부 풍미는 호출시 반품을 허용하고 다른 풍미는 정의 중 일부를 허용합니다.
일반 프로그래머가 기호를 더 쉽게 사용할 수 있도록하려면 자세한 정보가 중요합니다. BASIC 또는 python은 C / C ++보다 인간이 읽기 쉽고 더 장황하므로 일반 프로그래머에게는 훨씬 유용합니다. C / C ++의 간결함은 한 화면에서 더 많은 코드와 더 복잡한 코드를 볼 필요가 있지만 다양한 상징적 구조 규칙을 배워야하는 숙련 된 프로그래머에게는 훨씬 더 좋습니다. 맨 끝에는 거의 완전히 인간이 읽을 수없는 APL이 있습니다.
친밀하게 관련된 문제는 명확성입니다. 간결한 코드는 종종 불분명하며 지나치게 자세한 코드 (AppleScript에서와 같이)는 불분명 할 수 있습니다. 주어진 언어에 익숙하면 해당 언어 내에서 간결한 코드의 선명도가 높아집니다. C ++ 코드에 직면 한 초보자는 수식 만 구문 분석 할 수있을뿐만 아니라 기능적인 BASIC 또는 Python 코드도 이해하기에는 너무 간결합니다. 일반적으로 언어 사전에 의존하지 않고 당황합니다. 의도적 인 난독 화없이 내가 만난 가장 분명한 것은 Inform 7입니다 ...
옛날에
과거에 또 다른 중요한 고려 사항 이었지만 더 이상 취미 코더에 중요하지 않은 사항은 작업 및 저장 공간입니다. (여전히 여전히 중요하다.) 많은 언어, 특히 베이직 풍미가 해석되었고, 더 많은 런타임이 컴파일되었다는 점을 명심하라. 특히 디스크는 128KiB 만 보유하고 개별 펀치 카드는 80B 만있을 때 코드 공간이 중요했다.
몇 가지 솔루션이 존재했습니다. 토큰 화는 BASIC에서 매우 일반적이었습니다. 개별 언어 키워드는 상위 128 자 또는 제어 문자 공간에서 1 또는 2 바이트 단어로 줄었습니다. 토큰 화는 Inform 및 Z-Machine에서와 같이 바이트 코드 컴파일로 이어집니다.
공간 제한을 극복하기 위해 다중 오브젝트 파일 컴파일 및 링크도 사용되었습니다. 100KiB 파스칼 코드 섹션은 5KiB로만 컴파일 될 수 있습니다. 여러 개의 컴파일 된 파일을 연결함으로써 대형 드라이브에 액세스하지 않고도 방대한 응용 프로그램을 구축 할 수 있습니다 (10MiB가 엄청나게 큰 것을 기억하고 새 차를 사십시오).
그러나 더 간결한 언어는 디스크와 램의 주어진 덩어리에 더 많은 코드를 가져 와서 한 번에 더 큰 덩어리를 컴파일했습니다. 명심하십시오 : 1970 년대 초의 "미니 컴퓨터"는 단지 64KiB의 램을 가질 수 있습니다 (Honeywell 800은 각각 8 개의 2048 워드의 4 개의 뱅크를 설치했습니다). APL 및 이와 유사한 기호 언어는 명령어 당 피연산자에 비해 훨씬 큰 3B-10B와 비교하여 명령어 당 1B에 접근했습니다. (심볼은 기본적으로 타입 볼의 글꼴이었고 많은 카드 펀치에는 키에 심볼이 없었기 때문에 펀치 카드에 타이핑하는 것은 악몽이었습니다.)
또한 카드를 지울 수 없으며 많은 프로그램이 카드에 입력되었습니다. 개별적으로 비싸지는 않지만, 코드가 코드에 압축 될수록 필요한 용량은 줄어들고 프로그램의 규모는 커지거나 비용은 줄어 듭니다. 이것이 베이직이 대부분의 맛에서 한 줄에 여러 명령을 연결하는 이유의 일부입니다. 펀치 카드를 절약하기 위해 도입되었습니다. (또는 Vax Basic 프로그래밍 텍스트라고도합니다.) 카드 리더를 위해 프로그래밍하지는 않았지만 FORTRAN, BASIC, APL 및 기타 상징적 인 언어로 Honeywell 800의 카드 펀칭을 수행했습니다.
많은 것들과 마찬가지로, 그 대답은 "verbosity"의 구체적인 정의에 달려 있습니다. 그 정의가 상세가 중복성을 의미한다면, 나는 항상 나쁘다고 주장 할 것입니다. 이러한 정의를 통해 자주 인용되는 Java hello world 프로그램은 "verbose"자격을 갖추지 못합니다 . 중복되는 것은 없기 때문입니다.
프로그래머는 작은 코드로 자주 수행해야하는 간단한 작업을 코딩 할 수 있으므로 표현력이 뛰어난 언어를 선호하는 경향이 있습니다. 장황한 언어는 여러 줄의 코드를 사용하여 동일한 작업을 반복해서 수행해야 함을 의미합니다. 그러나 표현력이 높은 언어로는 더 간단한 고급 언어를 실행하는 것만 큼 빠르지 않기 때문에 가격이 책정 될 수 있습니다. C와 C ++의 대조적 인 예를들 수 있다면. C ++는 코드 작성자에게보다 표현력을 제공합니다. 실제 객체의 개념을 클래스로 캡슐화 할 수 있습니다. C 프로그래머는 동일한 것을 달성 할 수 있지만 클래스 구성의 표현력은이를 도와 줄 수 있습니다. 따라서 종종 더 길고 더 복잡한 (이해하기 위해) 코드를 작성해야합니다. 그러나 C ++의 "late binding"(즉, 런타임 리팩토링)을 사용하여 코드를 실행하지 않기 때문에이 코드는 더 빠르게 실행될 수 있습니다 (컴파일러 품질 등에 크게 의존하지만). C는 컴파일되고 연결된 코드를 실행하기 만하면 C ++은 어떤 코드를 실행할지에 대해 런타임에 결정해야합니다 (특정 상황에서).
: 나는 거기 일기 좋게보다 더 근본적이고 이론적 인 문제에 뿌리를두고 질문에 대한 답변이며,이 답변은 그레고리 차이 틴에 의해 설립 된 알고리즘 정보 이론과 관련이 있다고 생각 http://en.wikipedia.org/wiki/Algorithmic_information_theory . 몇 마디로 말하면, "문자열의 정보 내용은 해당 문자열의 가능한 가장 짧은 자체 포함 표현의 길이와 동일합니다", 이것은 주어진 문제를 밀접하게 해결하는 가장 짧은 프로그램 (즉, 사전 길이)으로 암시합니다. 는 해결책을 제시하는 문제의 본질적 복잡성과 일치하므로 문제의 본질에 의존하고 문제의 표현에 덜 의존합니다.