언어 사양을 읽을 가치가 있습니까? [닫은]


18

언어 또는 이와 유사한 언어에 대한 컴파일러 / 인터프리터를 작성하지 않을 경우 언어 사양 / 표준 문서 (예 : Java 언어 사양 )를 읽을 가치가 있는지 궁금합니다 . 나는 그러한 책을 읽는 것이 그 누구도 처음으로 언어에 노출되어서는 안된다는 것을 이해하지만, 그 책의 자세한 내용을 배우는 좋은 방법이 될 수 있습니다.

귀찮게 해본 적이 있습니까?


4
언어 사양은 처음부터 끝까지 읽지 말고 단순히 참조 일뿐입니다.
Mahmoud Hossam

답변:


18

기본적으로 하나의 간단한 질문으로 나옵니다. 언어에 대한 권위 있고 자세한 지식을 원하십니까? 아니면 잘 모르는 부분이 있다는 것을 깨닫고 언어를 충분히 사용하는 것을 알고 행복합니까? 당신이 전혀 모르는 부분?

기본적으로 거의 "언어 변호사"인 것처럼 보이는 사람들이 있습니다. 언어에 구석 구석이 있거나 모르는 사람이있는 한 휴식을 취할 수 없습니다. 또는 이해하십시오. 이러한 수준의 세부 사항에서 더 복잡한 언어를 배우는 것은 어느 누구에게는 불가능한 경우가 많기 때문에 이들 중 다수는 비교적 단순한 언어를 선호합니다.

대부분의 프로그래머에게있어 그것은 시간 낭비 일 것입니다. 언어를 (합리적으로) 잘 사용할 수있을만큼 충분한 언어를 아는 것은 매우 행복하고 생산적입니다. 그 외에도 그들은 단순히 신경 쓰지 않습니다. 언어는 도구이며, 도구를 목적에 충분하게 사용할 수있는 한, 모르는 다른 것들이 있다는 사실은 크게 관련이 없습니다.


3
마지막 단락에 +1 그것은 대부분의 프로그래머가 알아야 할 것입니다-John Skeet (C #에 대해서는 모든 것을 알고 있지만 다른 것에 대해서는 아무것도 알지 못합니다-예를 들어 SQL 질문에 대답하지 않은 사람) 또는 많은 다른 기술의 사람이되고 싶습니까? 실습을보다 실용적이고 인생을 더 흥미롭게 만듭니다.

2
@Developer Art : 그러나 Jon Skeet은 신이다;)
Anto

1
@ sbi : 언어 (및 그 복잡성)가 분명히 주요 요인이라는 데 동의합니다. 표준 크기가 반드시 많은 것을 의미하지는 않습니다. 예를 들어, 적절한 언어를 다루는 C ++ 표준 부분의 길이는 ~ 400 페이지에 불과하고 Java 언어 사양은 ~ 500입니다. 실제로 Java가 일부 "청소 된"C ++이라고 생각하는 것은 아니지만 C ++보다 25 % 더 복잡하다고는 생각하지 않습니다.
Jerry Coffin

3
@Developer Art-Jon Skeet에 대해 조금 열악한 그는 모든 것을위한 배지를 받았습니다 (SQL 포함!)
SHug

2
@dietbuddha : 나는 확실히 무지를 용서하는 의미하지 않는다, 그러나 공평하게, 대부분의 사람들은 이하의 질문 여부 그들은보다는 뭔가 배워야 할 것을 그들은 그들의 시간의 학습을 지출해야합니다. 새로운 알고리즘을 배우거나 주어진 매개 변수 집합을 호출하는 오버로드 된 함수를 선택하는 데 사용되는 정확한 규칙을 배우는 것이 C ++ 프로그래머에게 더 도움이 될 것입니까? 그가 일반적으로 치료해야 할 많은 이유가 있다면 어쨌든 과부하를 학대하고 있음을 명심하십시오!
Jerry Coffin

12

하나는해야 결코 언어 사양을 읽을 수 없습니다.

시간 낭비입니다.

훌륭한 프로그래머는 임의의 코드를 입력하고, 스택 오버플로에 대한 질문을하고, IDE를 사용하여 매우 자주 충돌하지 않는 코드를 작성할 수 있습니다.

언어를 이해하는데 시간을 낭비하지 마십시오. 자동 완성 기능이 좋은 훌륭한 IDE를 찾으십시오. 많은 SO 질문을하십시오. 모든 사람이 필요합니다.


3
못? 인터프리터 / 컴파일러를 작성하더라도
greyfade

1
니가 끝냈어! 그것이 작동하는 방식입니다. ;)
x4u

4
@greyfade : 절대. 사실을 신뢰하지 마십시오. 가정을 고수하십시오.
S.Lott

6
그것에 미묘한 것은 무엇입니까?
Aditya P

2
나는 이것이 풍자인지 아닌지 정직하게 말할 수 없었다. : P
greyfade

5

Java의 경우 언어 사양은 주어진 소스 구문의 의미에 대한 질문에 대한 명확한 답변을 제공하기위한 것입니다. 학습자로 읽는 것은 권장되지 않습니다. 대신 좋은 교사는 모든 함정과 실제 의미를 보여줍니다.

숙련 된 개발자에게는 Java Puzzlers가 어두운 구석에 대한 이해를 돕기에 정말 좋습니다.


2

일반적인 대답은 다음과 같습니다. 그렇습니다.

이식 가능한 코드를 작성하려면 필수입니다.

일부 언어의 경우 Ada 또는 perl과 같이 피할 수 없습니다.

또한 코드를 작성하지 않고 다른 코드를 읽을 경우 결국 사양을 참조해야합니다.


2

아마도 그것은 단지 나이지만,이 질문은 의미가 없습니다. 사용하는 도구를 이해하는 것이 전문가의 특징입니다. 이해가 깊을수록 도구 사용 능력이 향상됩니다. 나에게 그것은 dilettante 또는 전문가 사이의 선택입니다.

새로운 언어를 배울 때마다 가장 먼저 찾는 것이 사양입니다.

ANSI C, C ++, Java, Scheme, Python 및 Javascript에 대한 사양을 읽었습니다. 나는 그 언어를 자주 사용하지 않기 때문에 대부분의 C, C ++ 및 Java 세부 사항을 잊어 버렸습니다. 사양을 읽은 후에는 언어를 더 잘 사용하는 방법을 알고 있었기 때문에 더 나은 프로그래머였습니다.


1

일반적으로 지금 당장 접하는 까다로운 순간을 이해하는 것이 유용 할 수 있습니다.

그러나 진지하게, 언어를 습득해야 자세한 사양에 익숙해지면 불행한 언어 일 것입니다. 일반적인 말과 마찬가지로 응용 프로그램에 대한 설명서가 필요하면 제대로 설계되지 않았습니다.


이것이 바로 ECMA-262 사본을 편리하게 유지하는 이유입니다.
greyfade

1

나는 당신이 어떤 순간에 뛰어들 때 유용하다고 생각하지만, 직선 읽기로 유지하기가 어렵다는 것을 알게되었습니다. 그러나 내가 무언가를 이해하지 못하고 사용했을 때 그것은 항상 내 지식을 크게 향상 시켰습니다.


1

만약 당신이 그 언어로 된 하드 코어 프로그래머라면 모든 미묘한 뉘앙스를 짜낼 수 있어야합니다. 이 경우 시간 투자에 대한 확실한 수익이 있습니다 .

그렇지 않으면 아닙니다. 지식을 사용하지 않으면 확실히 당신과 함께하지 않을 것입니다. 언어 사양은 읽을 수있는 가장 둔한 것에 관한 것입니다.


1

나는 보통 표준에 많은 주식을 넣지 않습니다. 간단한 사실은 표준이 예외를 제어 흐름으로 사용하지 말라고 지시하지 않는다는 것입니다. 싱글 톤을 사용하지 말라고 지시하지는 않습니다. 유지 관리 가능한 클래스 인터페이스를 디자인하는 방법은 설명하지 않습니다. 이유를 모르면 왜 응용 프로그램이 충돌하는지 알려주지 않습니다. 당신은 세계에서 가장 잘 정의 된 프로그램을 가질 수 있으며 여전히 끔찍할 것입니다.

제 생각에, 간단한 사실은 대다수의 프로그래밍 문제가 언어를 원하는대로하는 것이 아니라 올바른 것이 무엇인지 아는 것입니다. 기본 언어 기능을 아는 한 중요한 기능을 사용하는 방법이 될 것입니다.


1

읽을 가치가 있습니다. C ++, Java 및 Python과 같은 일부 언어는 언어 사양을 읽음으로써 해당 언어와 모든 멋진 구문 / 의미 적 요령에 대해 많은 것을 배울 수있을 정도로 복잡합니다.

나는 대학에 버스를 타기 위해 Scheme R5RS 언어 사양을 읽었습니다. 짧고 간결했기 때문에 사용 가능한 모든 구문과 기본 기능을 모두 배웠습니다.


0

"언어 참조"라고 표시된 doc.python.org의 일부는 매우 유용합니다. 특히 "데이터 모델"장.


0

나는이 언어로 프로그래밍하는 것이 당신의 일이고 진지하게 일을하고 싶다면 언어 사양을 읽으십시오. 특히 recently많은 언어를 잃어 버렸지 만 Java 언어 사양과 같이 비교적 쉽고 빠르게 읽고 이해 할 때 제네릭을 사용하면 간단합니다.

그러나 아직 모르는 새로운 언어를 배우고 결국 습득 할 계획이라면 시간을 낭비하기 전에 해당 언어의 사양을 읽는 것이 매우 통찰력이있을 수 있습니다. 더 많은 C ++ 개발자가 C ++ Annotated Reference Manual을 읽고 이해하기 전에 많은 사람들이 그것을 사용하기 전에 그것을 이해하려고 시도했을 것이라고 확신합니다.

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