API 문서없이 프로그래밍하는 것이 정말로 필요한 기술입니까? [닫은]


22

오늘 Java 프로그래밍 시험을 거의 통과하지 못했습니다. 나는 내가 잘 한 스레딩에 관한 일반적인 질문에 대답하고 더 나쁜 작은 스레드 프로그램을 작성해야했습니다. 랩탑을 프로젝터 스크린에 연결하고 바로 프로그램을 작성해야했습니다. 첫 번째 시도는 익명 클래스를 사용하는 것이었지만 정확한 구문을 잊었습니다. 어쩌면 약간의 흥분 때문에 또는 지난 2 주 동안 나는 주로 PHP로 코딩했습니다. 그런 다음 API 문서를 사용할 수 있는지 묻습니다. 대답은 "아니오"였습니다. 그래서 다른 길을 가기로 결정하고 Runnable을 구현했습니다. 프로그램이 마지막에 요청한 것을 수행하고있었습니다. 물론 시험관은 나의 첫 번째 실패를 알게되었고 그것은 내 점수에 큰 영향을 미쳤다. API 문서를 사용할 수 없다는 것에 놀랐습니다.

내 질문은 : API 문서없이 완벽하게 코딩 할 수 있어야하는 것이 정말로 중요합니까? 이 기술을 개발해야합니까? 현실과 작업 환경에서 정말 중요합니까? 프로그래밍 과정에서 나는 학습 패턴, 좋은 디자인 응용 프로그램을 작성하는 기술 개발, API를 사용하고 필요한 정보를 빨리 찾는 기술에 중점을 두었습니다. API 문서없이 프로그래밍하는 방법을 배우려고하지 않았습니다. 면접 중 API 문서없이 코딩해야합니까?


2
나는 그가 문서 , 특히 API 참조 에 대해 묻고 있다고 생각 합니다.

3
@bancer-네이티브 Java 클래스를 사용할 수 없다는 것은 말이되지 않습니다. 시험 준비를 마치지 않은 것 같습니다.
Ramhound

27
실제 환경에서는 항상 설명서에 액세스 할 수 있습니다. 나는 끔찍한 기억력을 가지고 있으며 내 응용 프로그램의 일반적인 논리에 집중하고 쉽게 찾을 수있는 것들에 대한 무의미한 암기로 내 마음을 채우지 않습니다. 불행히도 학계와 (인증의 세계)는 다소 다르며 무의미한 암기를 강조하는 경우가 많습니다. 저의 학부 연구는 주로 수학과 물리학에 관한 것이었지만 많은 공식 등을 외우는 것을 기억합니다. 시간 낭비입니다.
Antonio2011a

11
@ Antonio2011a-사용하는 언어의 API를 아는 것은 "무의미한 암기"가 아닙니다. API에 대해 잘 알수록 솔루션에 적합한 클래스와 메소드를 선택하므로 더 잘 프로그래밍 할 수 있습니다. 그것들이 존재하는지 모른다면 선택할 수 없습니다. 물론 전체 Java API를 아는 사람은 없습니다. 너무 커. 그러나 관리 할 수있는 한 많은 정보를 아는 것이 좋습니다.
Dawood는 모니카 복원

9
@DavidWallace 어쩌면 나는 분명하지 않았다. 물론 나는 당신이 API에 익숙 할 필요가 없다고 말하는 것은 아닙니다! 클래스의 정확한 이름, 메소드, 매개 변수 순서 및 기타 마비 된 세부 사항을 기억할 필요는 없습니다. 당신이 정말로 알아야 할 것은 그것이 존재하고 그것이 어떻게 유용하다는 것입니다. 그러면 코딩하는 동안 세부 사항을 찾을 수 있습니다. 기억이 끔찍하기 전에 말했듯이 정직하게 한 시간 전에 수업을 사용할 수 있었고, 빈 종이를 주면 정확한 세부 사항을 기억할 수 없었습니다.
Antonio2011a

답변:


39

Real Life ™에서는이 기술을 "좋은"것으로 평가하지만 전혀 필요하지는 않습니다. 그러나 대학 환경에서는 다릅니다.

문서화없이 코딩하는 능력 은 과목에 대한 학생의 친숙 함을 간접적으로 나타내는 데 사용될 수 있습니다 . 어떤 의미에서, 당신이 문서를 건드리지 않고 무언가를 코딩하는 것을 본다면 교수는 당신이 숙제와 다른 과제를 수행하거나, 심지어 혼자서 재미를 위해 프로그래밍함으로써 API를 사용해 본 적이 있다고 알려줍니다. 문제 되는 API를 이해하는 현명한 사람은설명서를보고 거의 모든 Java API를 파악하십시오. 이것은 우연의 일치가 아닙니다. 프로그래머는 종종 직업을 배우게 될 것으로 예상되며, Java를 포함한 널리 사용되는 프로그래밍 시스템에 대한 API 문서는 프로그래머가 빠르게 배울 수 있도록 구성되었습니다. 문서는 종종 간결하고 간결한 개념을 보여주는 짧고 독립적 인 예제를 제공합니다.

이것은 당신이 주제에 대한 지식을 측정하려는 교수의 목표와 직접적으로 작동합니다 (당신이 얼마나 똑똑한지를 측정하는 것과 대조적으로). 따라서 설명서를 보지 않고 코드를 요청하는 것은 무리가 없습니다.

참고 : 질문 편집에 대한 응답으로이 답변을 편집했습니다.


2
내가 읽은 내용에서 시험관은 API 문서를 암기하는 능력을보고있었습니다. 그는해야 할 일을 알고 있었지만 구문을 기억하지 못했습니다.
Paul

@Paul 편집 내용을 읽고 답변을 변경했습니다. OP가 완전히 다른 것을 요구한다고 생각했습니다. 감사!
dasblinkenlight

2
여기에서 실제 문제를 식별하기위한 +1 면접이라면 면접관이 문제 해결 방법에 더 관심이 있고 화이트 보드에 구문의 가장 근사치를 적을 수 있습니다. 지난 3 개월 동안 특정 자료를 배우고 특정 자료에 대해 테스트를받는 경우 "공개 인터넷"정책이없는 것이 합리적입니다.
StriplingWarrior

@Paul : 당신 말이 맞아요.
bancer

21

코드에 약간의 버그가있는 사람이 있었으므로 StackOverflow에 가져 와서 도움을 요청했습니다. StackOverflow의 : 자바 (반복없이와 생성 번호) . 나는 그의 코드를보고 그의 HashSet이 영구적으로 값으로 채워지고 있지만 결코 지워지지 않았다고 지적했다. 그래서 그는 나에게 물었다 : "어떻게 지워?" 나는 내가 준 답을 특별히 자랑스럽게 생각하지 않는다는 것을 인정해야한다.

매일 사용하는 기본 사항을 알아야합니다. 그들 모두를 알아야하고 잘 알아야합니다. 그러나 기본적인 것들만.

다른 모든 것의 중요한 것은 당신이 원하는 것을하는 무언가가 있다는 것을 아는 것입니다. 정확히 어떤 클래스를 사용해야하는지, 어떤 메소드를 호출해야하는지, 그리고 정확히 전달해야하는 파라미터는 두뇌의 귀중한 뉴런을 유지할 필요가없는 것입니다. 이것이 바로 문서의 내용이며, 자동 완성 기능이있는 IDE가 발명 된 이유입니다. 푸시가 발생하면 항상 StackOverflow가 있고 더 큰 웹 간이 있습니다.

프로그래머에게 마음의 API를 알도록 요청하는 것은 변호사에게 법률 코드와 모든 선례를 마음에 알도록 요청하는 것과 유사합니다. 무의미합니다. 무익한 운동.


+1 : 크기가 크기 때문에 Java와 같은 큰 라이브러리의 전체 API를 배우는 것은 매우 어렵습니다. 패키지가 제공하는 일반적인 기능을 아는 것이 더 쉽지만 (예 : javax.imageio는 내가 사용한 것이 아니라 고급 이미지 처리 기능을 제공함) 일부 핵심 기능 익혀야합니다. 특히 java.lang과 java.util은 거의 모든 Java 프로그램에서 사용될 것입니다.
Donal Fellows

9

API 문서없이 프로그래밍하는 것이 정말로 필요한 기술입니까?

나는 그것이 필요 하다고 말하지는 않지만

매우 바람직한 기술

imNSho.

나는 최근 몇 달 동안 API를 나보다 잘 아는 사람과 긴밀한 협력으로 코딩을 보냈습니다. 그는 훨씬 더 생산적입니다. 단순히 나를 방해 하는 API 문서 검사를 건너 뛸 수 있기 때문 입니다.


나는 유창함에 대해 이야기하고 있습니다. 다만 것에 대해 할 수있는 일이지만 유창한.

유창한 것이 무엇인지 아십니까? 그것은 당신을 보는 누군가가 입력 할 때 코딩하는 것처럼 나타납니다 ...

  • ... 올바른 코드가 손가락에서 화면으로 흘러가는 것처럼. API 문서, 튜토리얼 및 매뉴얼을 확인하지 않는 것처럼. 실제로, 당신 그들 모두를 확인하지만, 그것은 모두 당신의 머리에 있기 때문에 보이지 않습니다. 당신은 당신의 두뇌에 필요한 모든 지식을 가지고 있습니다-충전, 적재 및 사용 준비.

유창한 지식입니다. 한 시간 동안 초보자가 필요한 일을하는 데 1 분이 걸립니다. 정말 노력할 가치가 있습니다. 승리 냄새가나요

당신이 마스터 유창하면 일부 API와 제대로이 같은 기분이 어떻게 기억 경우,이 메모리가 추가로 가장 생산적인 작업이 될하는 방법에를 통해 여러분을 안내 할 것입니다 어떤 다른 API.


그의 질문은 결국 문서를 알아야 하는지 아닌지, 시험처럼 마치 문서를 암기 해야하는지의 여부에 대한 것이 아니라고 생각 합니다.
Rey Miyasaka

@ReiMiyasaka 당신이 자세한 시험을 건너 뛰면 잘 알 수 있습니다 : "그래서 내 질문은 : API 문서없이 완벽하게 코딩 할 수 있습니까?이 기술을 개발해야합니까? 실제 세계에서 정말로 중요합니까? "작업 환경에서?" . 나는 최근의 경험으로 인해 기본 답변 이 필요하지 않다는 생각에 대해 불편 함을 느꼈기 때문에 질문 의이 부분에 집중했습니다 . 충분합니까?
gnat

2
참조 문서로의 컨텍스트 전환 비용을 충당하기 위해 +1 모든 단계를 찾아야 만 크롤링 속도가 느려집니다.
Wyatt Barnett

8

아니요. API 설명서를 찾을 수 없으면 죽을 것입니다. 내가 가지고 있지 않은 유일한 시간은 문서에 액세스 할 수없는 무언가를 디버깅하려고 할 때입니다. 그런 다음 필요에 따라 api 및 cut-n-paste 조각을 "역 엔지니어링"합니다.

API가 무엇인지, 어떤 부분을 사용하는 것이 가장 좋은지 잘 알고 있지만 메소드 이름, 변수 이름을 아는 것은 실제로 필요하지는 않습니다.


3

직장에서 문서에 접근 할 수없는 상황은 없었습니다. 반면에, 잘 작성된 문서를 해석 할 수있는 독해력과 전반적인 이해력은 항상 유용합니다.

결국 API의 패턴과 구조를 알아야하지만 모든 것이 어디에 유용한 지 정확히 아는 것은 특히 유용하지 않습니다.

SFU Computing Science에서 닫힌 책 시험은 우리 학년의 70 %에서 100 % 사이입니다. 이론은 시험이 과정 자료에 대한 이해와 적응성을 테스트한다는 것입니다. 실제로, 실제로 테스트하는 것은 신경, 수면의 질 / 지속력, 재치, 그리고 암기하는 기술입니다. 학문적으로나 소프트웨어 산업의 일반적인 직업에는 필요하지 않습니다.


2

마지막 질문을 제외하고는 모든 API 문서에 대한 백과 사전 지식은 중요하지 않습니다. 모든 클래스의 모든 방법에 대한 모든 세부 사항을 알고 있으면 분명히 더 빠르게 프로그래밍 할 수 있지만 합리적인 기대는 아닙니다.

마지막 질문 : API 문서없이 일부 클래스의 세부 사항을 알아야 할 수도 있습니다. 면접을 보러 가기 전에 시험을 받거나 업무에 매우 중점을 둔 경우 (예 : 하루 종일 스레딩을 할 경우) 관련 수업을 자세히 알아야 할 수 있습니다.


부록 : 교수 / 강사와 함께 시험을하기 전에 어떤 자료가 제공되며 어떤 자료를 가져갈 수 있는지 명확히해야합니다. 그들이 명시 적으로 동의하지 않은 것은 허용되지 않는다고 가정하십시오. 나는 글쓰기를위한 기초 만 가지고, 내가 원하는 책을 가져올 수있는 곳, 그리고 내가 원하는 것을 가지고 정확히 하나의 양면 시트를 가져올 수있는 과정을 가졌습니다. 시험은 일반적으로 허용되는 자료를 중심으로 구성됩니다.


2

API 문서! = 언어 구문.

누군가가 다양한 Java 클래스와 메소드의 정확한 이름을 모르는 경우 이해할 수 있습니다. 나는 그것들을 모르고 매일 Java로 코딩합니다. 나는 문서 나 전능 한 IDE 자동 완성없이 길을 잃었습니다. 특히 변수 / 클래스 / 메서드 이름의 장황한 것으로 잘 알려진 Java 표준 API에 관해서는 특히 그렇습니다.

그러나 자신이 말한 것처럼 일반적으로 문서에서 발견하지 못했던 것은 아닙니다. 내부 클래스의 구문입니다. 이것은 언어 자체 의 기능으로 문서에서 기억할 것이 아닙니다.

학생들이 표준 API에 대해 문서를 사용할 수 있어야한다고 생각하는 한 프로그래밍 프로그래밍에 합격하려는 사람은 언어 구문을 알아야한다고 생각합니다. 그리고 저는 언어 디자이너들만이 알고있는 이상한 사례를 의미하지는 않습니다. 예를 들어, 표준과 같은 표준 사례 만 있습니다.


2
구문을 암기 할 가치가 있다고 생각하지 않습니다. 특징과 패턴과 단점, 예. 그러나 구문은 아닙니다. 나는 너무 많은 언어를 사용하여 의미를 가지기 위해 노력하고 있으며, 대부분의 개발자들에게도 마찬가지라고 생각합니다.
Rey Miyasaka

@ReiMiyasaka : 전체 언어 사양을 암기해야한다고 생각하지는 않지만 언제든지 기본 구문을 알아야합니다. 문서에서 언어로 루프를 작성하는 방법을 찾으십니까? 아니면 그냥 코딩합니까?
Goran Jovic

사실 나는 꽤 많은 언어로 작업하고 있으며 기본 사항조차도 정확한 구문을 잊어 버립니다. 그래서 나는 항상 문서를 참조해야한다는 것을 알았습니다.
Antonio2011a

@ Antonio2011a : 특히 덜 일반적인 언어를 사용하는 경우에는 직접 그렇게한다는 것을 인정합니다. 그러나 많은 학생들에게 학습 언어는 최초의 프로그래밍 언어입니다. 학생이 구문을 배우지 못하면 시험 준비 방법에 대해 아무 말도하지 않습니다.
Goran Jovic

@Goran 실제로 두 가지 이유로 반드시 그런 것은 아닙니다 : 1. 백그라운드 컴파일은 구문이 잘못되었을 때 알려줍니다. 그리고 2. 루프는 Haskell 및 ML과 같은 언어에서 보조적입니다 (거의 존재하지 않음). 생각보다 언어가 더 다양합니다. F #으로 코딩하는 데 대부분의 시간을 소비하고 Haskell 만 모호하게 기억하지만, 의미 적 차이를 기억하면서 Haskell 코드를 잘 이해할 수 있습니다. 반면에, 제 1 외국어 를 배우는 것은 매우 중요하며 너무 자주 무시 되는 것에 동의합니다 .
Rey Miyasaka

2

Eclipse에서 obj.ctrl + space를 작성 하고 누르면 주어진 오브젝트에 대한 모든 메소드 옵션을 제공하여 자동 완성을 시도합니다. 어떤 이유로 든 실패하면 Java API 에 나머지 답변이 있습니다. Google에서 무언가를 수행하는 방법을 생각하지 않은 날을 생각하기가 어려웠습니다.

학교는 완전히 다른 이야기입니다.


2

IMHO, 학계는 대개 훌륭한 소프트웨어 엔지니어를 생산하는 데 악취가납니다. 수업 후 재미를 위해 코딩하는 사람들 만이 실제 프로젝트에서 무언가를 달성 할 수있는 기회를 갖습니다.

다시, 학계는 개발자를 생산하는 것이 아니라 전 세계가 추상적 문제를 해결하고 연구하는 방법에 관한 것입니다. 대부분의 경우 실제 적용과는 거리가 멀다. 그리고 연구원들이 반드시 좋은 코더 일 필요는 없습니다.

그리고 심장 마비에 의한 API 학습. 모든 구석과 크 랭킹을 찾아 볼 수있는 autocomplete / google / msdn / javadocs가 있습니다. 왜 누군가가 항상 두뇌에 모든 것을 유지하고 싶습니까? 몇 주 / 월에 배우는 가장 일반적인 기능은 구문, 구조 및 일반적인 아이디어를 알고 있으면 몇 초 만에 찾을 수 있습니다.

다시 말하지만 일부 사람들은 여전히 ​​텍스트 편집기로 코드를 작성하고 함수 이름을 기억합니다. 반드시 틀린 것은 아니지만, 그것에 대해 열광적이라면 교수님이 있습니다.

또한 함수 이름과 매개 변수를 알고 있더라도 최신 API 문서에서 확인하는 것이 좋습니다. strtok은 10 년 전 단일 스레드 시나리오에서 훌륭했지만 현재는 좋지 않습니다. 이름과 매개 변수를 배우면 기능이 더 이상 사용되지 않거나 더 나은 대안이 발명 될 수 있다는 것을 결코 알 수 없습니다.

언어는 변하기 때문에 언어를 바꾸어야합니다. 한 가지 진정한 방법을 기억하는 것은 좋지 않습니다.


1

api를 사용하여 짧은 시간 동안 프로젝트를 시작하면 조만간 그 API를 배울 수 있습니다. 나는 문서 (msdn, man pages 등)를 한번도 보지 않은 사람을 모르기 때문에 이것은 완전히 불필요한 기술이라고 믿습니다.

그러나 대학은 완전히 다른 우주이므로 예를 들어 CreateWindowEx의 10 번째 매개 변수 인 typedef 이름을 모르므로 놀라지 마십시오.


대학 경험과 일치하지 않습니다. 무엇이든, 그들은 이론에 사로 잡히고 세부 사항에주의를 기울이지 않았습니다. 아니면 직업 학교 중 한 곳으로 수준이 떨어 졌습니까?
AProgrammer

나는 하나의 대학에 대해 이야기하고 있지 않으며, 이것은 당신이 일부 대학에서 세계 어딘가에 볼 수있는 것의 예일뿐입니다. 아시다시피, 그들은 모두 동일하지 않습니다
Hayri Uğur Koltuk

2
대학은 항상 어느 정도의 암기 및 역류를 가졌습니다. 통합 테이블을 암기하는 대신 CRC 서적을 사용할 수 있다면 미적분학을했을 것입니다.
Blrfl

1

인간의 두뇌가 많은 정보를 암기하는 것은 물리적으로 불가능하지만, 암기 할 것이 많지 않기 때문에 기본이나 가장 많이 사용되는 것을 알아야합니다. . 그렇지 않으면 Java에있는 모든 것을 기억하는 것은 불가능합니다.

또한 교사가 학생들에게 모든 것을 알기를 원하거나 학생이 할당 한 연습이나 프로젝트 외에 언어를 사용하여 프로그래밍하는지 알기 위해 불공평합니다. 저에게는 학교에 있지 않거나 관련 업무를 수행 할 때 무엇을하는지 알고 싶어합니다.

편집 : 분명히, 교사가 당신에게 요구하는 것은 그에게 달려 있으며, 일부 교사는 이론을 더 중요하게 생각하고 다른 교사는 연습을 가치있게 생각하고 모든 것을 이해하지 못하는 경우 신경 쓰지 않습니다.

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