새로운 프로그래머가 컴파일러 오류 메시지 / 런타임 예외 메시지를 무시하는 이유는 무엇입니까? [닫은]


27

우리 모두 이걸 본 것 같아 초보자는 기본 개요를 따르는 스택 오버플로에 대해 질문합니다 ...

나는 노력하고 있지만 (목표에 대한 아주 모호한 설명) 작동하지 않습니다 / 오류 / 예외가 발생합니다. 도와주세요!

많은 사람들이 오류 메시지를 붙여 넣을 필요가 없다고 생각하는 것이 이상하지 않습니까?

이것의 심리가 무엇인지 궁금합니다. 사람들이 처음에는 그들이 쓸모없고주의를 기울일 가치가 없다고 가정하게 만드는 오류 메시지는 무엇입니까?

내가 찾고있는 대답은 "오류 메시지를 이해하지 못합니다" 는 것이 아닙니다 . 그것은 그들이 그것을 이해할 수있는 다른 사람에게 말하는 것을 고려하지 않는 이유를 설명하지 않습니다.

답변:


21

진정한 이유는 일반 컴퓨터 사용자는 프로그래머가 되더라도 오류에 대해 아무것도 할 수 없다고 생각하기 때문입니다. 생각 해봐 비 프로그래머 유형은 암호 오류 메시지 *가 표시 될 때 무엇을합니까? 그들은 그것을 읽을지도 모르지만 10 명 중 9 번은 단순히 그것을 무시하고 다시 시도 할 것입니다. 지속적으로 실패하는 경우에만 검색합니다.

따라서 프로그래밍 방법을 배우기 시작할 때 사람들 자신이 겪고있는 오류에 문제를 해결하는 방법에 대한 유용한 정보가 포함되어 있음을 즉시 인식 하지 못합니다 . 물론, 숙련 된 전문가조차도 컴파일러 오류를 읽을 수는 없지만 (C ++ 템플릿 메타 프로그래밍을보고 있음) 적어도 일반적인 시작점을 제공하며 두 번 같은 오류가 발생하면 , 원인을 파악하기 위해 무엇을했는지 항상 알 수 있습니다.

* 정말로, 대부분의 오류 메시지는 Joe Average에 "오류 X2412 : 엽 동적 상호 플랫폼 동글 대시를 설정할 수 없습니다 : 밴더 스내치 설정을 확인하거나 시스템 관리자에게 문의하십시오"와 같이 나타납니다.


6
소프트웨어에서 해당 오류 메시지를 사용해도 될까요?
I.devries

12

나는 그것이 진정한 초보자라면 전혀 오류 메시지가 있다는 것을 알지 못할 가능성이 높다고 생각합니다. 그들은 그것이 실행되지 않고 오류가 있음을 알고 있습니다. 예를 들어 Visual Studio에서는 화면의 해당 부분을 보지 못할 수 있습니다.

기본적으로 그들은 그들이 이용할 수있는 정보의 어느 부분이 문제가 무엇인지 알아내는 데 유용하다는 것을 모른다. 그들이 더 나은 기회를 가졌다면 그들은 스스로 그것을 고칠 수 있고 처음에는 그것에 대해 묻지 않을 수 있습니다.


그것은 좋은 생각이지만, 실제로 그러한 질문의 많은 부분을 설명합니까?
Timwi

@Timwi : 적절한 오류 정보로 비교적 적은 양의 질문을 설명 할 수 있습니다. 나쁜 질문의 절대량은 커뮤니티 규모와 관련이 있습니다.
Brian R. Bondy

6

질문을하고 문제를 해결하는 것은 배워야 할 기술이며, 전문 개발자에게는 종종 충분히 배우지 못하는 중요한 기술이라고 생각합니다.

이 직업에서 처음 시작할 때 작성하는 코드가 오늘날 작성하는 코드와 비교할 때 끔찍한 것처럼, 요청하는 질문은 오늘날 요청하는 방식에 비해 끔찍할 것입니다.

시작할 때 배우고있는 모든 정보에 압도 당하기 쉽고 계획을 세우지 않을 때는 어떤 정보가 관련이 있고 어떤 정보가 관련이 없는지 알기가 어렵습니다. 이것은 초보자가 처음부터 스스로 문제를 해결할 수없는 이유의 큰 부분입니다!


5

이는 스택 오버플로와 같은 온라인 웹 사이트보다 IRC에 더 많이 적용되며 훨씬 더 드 rare니다.

나는 사람들이 특히 자신의 문제에 관심이 있고 기꺼이 도와주고 싶어한다는 사실을 알게되면 기분이 나아 진다고 생각합니다. 따라서 그들은 문제가 있다고 말하면서 시작하지만, 누군가가 질문을하기 전까지는 세부적인 내용을 다루지 않습니다.

때때로 (컴파일러 오류가 아닌 경우)이 동작은 실제로 의미가 있습니다. 내가 큰 복잡한 문제를 겪고 있다면 아무도 읽을 수 없다는 긴 설명을 작성하기 전에 먼저 듣고있는 사람이 있는지 확인합니다.


신들, 나는 그것이 여전히 SO보다 IRC에 더 많이 적용되기를 바란다 ...
Félix Gagnon-Grenier

3

컴파일러 오류 / 예외는이를 해결하기 위해 무엇을 잘못하고 있는지 알아야합니다. 그것들은 이해하지 못하는 사람들이 아니라 물건을 간과하는 프로그래머를위한 것입니다.

그들은 또한 항상 가장 명백한 것은 아닙니다. "예기치 않은 경우"와 같은 오류는 그렇게 직관적이지 않습니다. "그러나 거기에 있어야한다면"은 초보자의 반응입니다. 보다 숙련 된 프로그래머는 이것이 선행 라인 에서 세미콜론을 잊어 버렸다는 것을 알고 있습니다.


물론-무언가가 비밀스럽고 쓸모가 없다고 생각하는 것에는 차이가 있습니다.
David Thornley

1
@David : 암호 오류 메시지의 용도는 무엇입니까?
Morgan Herlocker 2016 년

1
@ Irontool : 그렇게 요청할 때 인용하십시오. 잘라내어 웹 검색에 붙여 넣습니다. 이해가 안 되더라도 마술 쿠키의 역할을 할 수 있습니다.
David Thornley

2

나는 그것이 초보자 일 뿐이라고 생각하지 않습니다. 나는 컴파일러 오류가 발생했을 때만 줄 번호를보고 나서 나머지를 알아 내려고 노력하는 동료들과 함께했습니다. 두 문장으로 ").

저의 의심은 이것이 언어의 규칙에 대한 깊은 이해가 없기 때문에 발생한다는 것입니다. 따라서 오류에 대한 일반적으로 조밀 한 설명은 의미가 없습니다. lvalueexpression must be a modifiable lvalue무엇인지 정말로 모른다면 꽤 쓸모없는 정보처럼 보입니다 .


필자의 경험에 따르면 코드를 보면 구문 오류에 적합합니다. 컴파일러 메시지는 종종 원래 오류로 인해 간접적으로 발생하는 오류에 관한 것이기 때문입니다. 예제와 같이 의미 상 오류의 경우 오류 메시지는 일반적으로 필수적입니다.
코드 InChaos

1

사람들이 처음에는 그들이 쓸모없고주의를 기울일 가치가 없다고 가정하게 만드는 오류 메시지는 무엇입니까?

글쎄, 그것은 약 150 줄의 16 진수로 끝나는 완전히 뚫을 수없는 오류 메시지가있는 충돌하는 Windows 95 소프트웨어로 가득 찬 젊은이였습니다.

나는 40 줄의 컴파일러 쓰레기와 최대 절전 모드 오류를 포함하는 멋진 암호화 된 Java 스택 추적을 얻을 때마다 동일한 경험을 재현하며, 그중에서도 내 응용 프로그램의 오류에 대한 실제 참조가 잘 숨겨져 있습니다.

사람들이 오류 메시지와 스택 추적을 무시하는 이유는 종종 오류 메시지와 스택 추적이 문제의 복잡성에 비해 불균형 적으로 복잡하기 때문입니다. 세미콜론을 놓치면 화면을 통해 150 줄의 쓰레기를 플러시 할 이유가 없습니다.


2
잘 숨겨져 있습니까? 패키지 이름을 검색하십시오.
바트 반 Heukelom

1

Junior Sysadmins를위한 Linux와 PHP 및 Mysql을 이용한 프로그래밍에 관한 강의를하고 있습니다. PHP를 사용하는 대다수의 학생들은 화면에 못생긴 메시지가 표시되므로 오류가 있음을 알고 있습니다. 그러나 그들은 그것을 읽을 수없는 것 같습니다. 일반적으로 나는 그들이 작동하지 않는다고 말하면 화면으로 이동합니다. 화면에서 오류를 읽고, 오류를 읽고, 오류에 표시된 파일과 줄을 강조하고, 거기에서 보라고 지시합니다. 그들은 오류를 수정하지만 다른 오류가 나타나면 동일한 절차가 적용됩니다 ... 한숨 ...

Linux 과정의 경우 때로는 오류를 인식하지 못합니다. 명령을 입력하면 일부 줄이 화면에 나타나고 다음 명령을 계속합니다. 나중에 일부 명령이 마지막에 무언가 작동하지 않고 손을 들어 올리면 콘솔을 위로 스크롤하여 잘못된 매개 변수 또는 기타로 인해 오류가 발생한 명령을 가리 킵니다. 그들의 얼굴 : 놀라움. 그래서 내 리눅스 학생들에게 쉬운 부분은 오류가 발생했을 때 알 수있게하는 것이 었습니다 . 이와 같은 오류가 나타날 때 bash 프롬프트를 약간 수정하여 bash 프롬프트를 수정하십시오 . 이제 오류 메시지가 표시되면 PHP 학생들과 같은 다른 전투입니다.


0

나는 그것들이 오류 코드에 대해 생각하는 데 익숙하지 않다고 생각하며, 그들이 줄 수있는 곳에 도달 할 때까지, 그들은 이미 문제를 완전히 설명 한 것처럼 느낍니다. 추가 정보를 제공해야합니다.

질문은 몇 단계로 이루어지며, 가장 논리적으로 다음 순서로 배열됩니다.

  1. 당신이하고있는 일을 설명해야합니다
  2. 어떻게했는지 설명해야합니다
  3. 실패했을 때 무슨 일이 일어 났는지 (또는 어떻게 실패했는지) 설명해야합니다.
  4. 당신은 사후 보고서를 제공해야합니다

사후 보고서는 오류 메시지가있는 위치이며 마지막에 있습니다. 초보자가이 시점에 도달 할 때까지는 문제를 설명해야하는 정신적 도전이 끝나고 무언가를 놓칠 가능성이 더 높습니다 (초보자에게는 정보 과부하 문제가 있음). 또한이 시점에서 그들은 이미 문제의 모든 측면을 설명 한 것처럼 느끼고 오류 코드에 대해 기억하지 못하게하는 습관을 가지고 있습니다. 결국 다른 삶의 분야에는 오류 코드가 없으므로 사용되지 않습니다. 그들에 대해 생각하십시오.

또한 오류 코드를 기억하더라도 실제 사용하기에는 너무 비싸게 보일 수 있습니다. 034982 오류는 무엇입니까? 이것이 실제로 누구에게도 의미가 있습니까? 그리고 그것은 내가하고있는 일, 어떻게하고 있었는지, 어떻게 실패했는지에 대한 상세한 설명에 실제로 무언가를 추가합니까? 분명히이 정보 자체를 나타냅니다.


순전히 숫자 오류 코드가있는 환경 / 컴파일러 / 프레임 워크를 사용하고 있습니까? oO
Timwi

그런 IDE를 사용하고 있지 않습니다. 오류 메시지 자체는 암호화 된 (유용하지 않은) 것으로 간주되거나, 위의 설명을 설명하는 것처럼 들릴 수 있습니다 (정보를 추가하지 않음).
EpsilonVector

0

대부분의 언어에서 대부분의 컴파일러 / 런타임 메시지는 의미가 없습니다. (특히 C ++과 Java를보고 있습니다!) 오류를 올바르게 처리하는 것은 언어 디자이너의 우선 순위 목록에서 다소 낮은 경향이 있습니다. 올바르게 작동하는 것을 얻는 것이 일반적으로 더 큰 우선 순위이며, 많은 시간이 작은 세부 사항을 연마하는 데 신경 쓰지 않습니다.

이것이 제가 델파이에서 일하는 것을 즐기는 이유 중 하나입니다. 전체 언어는 오류를 포함하여 작은 세부 사항에주의를 기울입니다. 컴파일러 메시지는 의미가 있습니다. 런타임 오류 메시지가 의미가 있습니다. 스택 추적이 의미가 있습니다. 지금까지 내가 작업했던 것 중 가장 쉬운 언어로 디버깅 할 수있는 것 중 하나입니다.

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