SO에 대한 또 다른 숙제 질문 후에 . 대다수의 학생들은 디버거가 무엇인지 또는 어떻게 사용하는지 전혀 모릅니다. 디버거를 사용하는 방법을 아는 것이 프로그래밍의 다른 기본 요소만큼이나 중요하다고 생각합니다.
- 문제는 디버깅해서는 안되며 최신 디버깅 도구를 사용하는 방법은 프로그래밍 기본 사항과 함께 가르쳐야합니까? 그렇지 않은 경우
SO에 대한 또 다른 숙제 질문 후에 . 대다수의 학생들은 디버거가 무엇인지 또는 어떻게 사용하는지 전혀 모릅니다. 디버거를 사용하는 방법을 아는 것이 프로그래밍의 다른 기본 요소만큼이나 중요하다고 생각합니다.
답변:
가르치는 데 필요한 디버거 를 사용 하는 것이 아니라 일반적인 디버깅 기술이 필요합니다 . 여기에는 물론 디버거를 사용하는 방법을 가르치는 것뿐만 아니라 다양한 다른 중요한 기술, 예를 들어
추가적인 이점으로, 프로그래밍 이외의 영역에서 문제 해결에 많은 기술을 적용 할 수도 있습니다.
이 모든 주제에 대한 좋은 책이 있습니다. 모든 학부생과 프로그래밍의 기본 사항을 배우는 사람 은 David J Agans의 디버깅 이 필요할 것 입니다.
고등 컴퓨터 과학 과정은 학생들이 프로그래밍 기본 사항 을 가르치는 데 적합합니다. 이러한 개념은 학생들이 필요한 개념을 익히고 더 넓은 범위의 프로그래밍 언어 및 문제 세트에 적용하기를 희망하여 학생들에게 가르쳐집니다 .
반면에 디버깅 도구는 구현 영역 의 하위 집합입니다 . 개념이 동일하더라도 각 도구는 언어마다 다릅니다. 우리는 디버깅 도구에 노출되었지만 실제로는 깊이 다루지 않았습니다. 우리가 툴 디버깅에 일주일 이상을 보낸다면, 뒤돌아 보면 시간 낭비라고 생각합니다. 차라리 BigO 표기법이나 다형성에 대해 배우고 싶습니다. 그러나 디버깅 도구의 힘이 학생들에게 (성공적으로) 전달되지 않았다면 그것은 필요하지 않을 것입니다.
대부분의 초급 프로그래밍 과정에서 프로그램 상태는 몇 가지 인쇄 설명으로 버그를 제거 할 수있을 정도로 간단합니다. 학생들이 직접 수작업을하도록 강요하는 문제가있을 수 있으므로 코드에서 특정 유형의 버그가 발생하는 방식과 장소를 파악할 수 있습니다. 어디를 볼지 모른다면 디버거는 쓸모가 없습니다.
grep
작업을 수행합니다. 스테핑, 조건부 중단 점 없음-grep 만 가능합니다.
그렇게 중요하지 않습니다. 나는 거의 하나도 사용하지 않으며 결코 가지고 있지 않습니다. 코드를 디버깅하는 가장 좋은 방법은 다음과 같습니다.
또한 최신 멀티 스레드 소프트웨어의 경우 디버거는 버그를 발견하지 않고 숨기는 효과가 있습니다. 그리고 그들은 학위 수준에서 분명히 "학습"되어서는 안됩니다. 워드 프로세서를 사용하는 방법을 가르치는 사람은 누구보다 많습니다.
학생들은 인간이고 인간은 모든 종류의 실수를 저지르기 때문에 디버깅을 배워야합니다. 그 중 일부는 주어진 실수에 대한 깨달음이 발생하기 전에 실험 데이터 (디버깅 정보)를 얻어야합니다.
프로그램에 의해 설계가 정확해야한다는 전제 (수학 부서에서 상속 받았을 수도 있음) 때문에 디버깅은 가르치지 않습니다. 따라서 학생들은 프로그래밍을 올바르게 "실험"해서는 안됩니다. 그러나 이것은 불완전한 인간이 일정 압력 등에서 변화하는 사양에 소프트웨어를 크랭크하는 실제 제조 과정을 무시합니다.
스스로 알아 내십시오
교수 나 TA가 시간을 내어 쉽게 알아낼 수 있는 것을 가르치는 것을 필요로하지 않았으며 원하지도 않았습니다 . 저에게 어려운 개념을 가르치고 학습을 안내하기 위해 있습니다. 그들은 아니고 안 당신이 RTFM하지 않아도이있을 수.
배우는 방법 배우기
대학은 당신이 모르는 모든 주제를 통해 손을 잡는 것이 아니라 배우는 법을 배우는 것에 관한 것이어야합니다. 이 과정을 통해 끊임없이 손을 잡고 있다면 현실 세계에서 비참하게 실패 할 것입니다.
눈을 통한 오르막 길
내가 학교에 갔을 때 그들은 당신에게 언어를 가르치는 것을 귀찮게하지 않았습니다. 당신은 당신의 자신의 시간에 그것을 픽업 것으로 예상되었다. 그들은 당신에게 프로젝트와 시설을 줄 것입니다. 구현을 완료하고 작업 프로그램을 제출하기 위해 필요한 정보를 추적하는 것은 사용자의 책임입니다. 근무 시간을 제외하고는 실제 세계와 매우 유사합니다.