APIドキュメントなしでプログラミングするのに本当に必要なスキルですか?[閉まっている]


22

今日、私はJavaプログラミング試験にほとんど合格しませんでした。スレッド化に関するいくつかの一般的な質問によく答えたので、それよりも少しだけスレッド化されたプログラムを書く必要がありました。私はラップトップをプロジェクターのスクリーンに接続し、すぐにプログラムを書く必要がありました。私の最初の試みは匿名クラスを使用することでしたが、正確な構文を忘れていました。たぶん、いくつかの興奮のためか、最後の2週間はほとんどphpでコーディングしていたためかもしれません。次に、APIドキュメントの使用を許可するかどうかを尋ねました。答えは「いいえ」でした。それで、私は別の方法を試すことにし、Runnableを実装しました。プログラムは、最後に要求されたことを実行していました。もちろん、試験官は私の最初の失敗に気付き、それが私のスコアに大きな影響を与えました。APIドキュメントの使用が許可されていないことに驚きました。

だから、私の質問は次のとおりです。APIドキュメントなしで完璧にコーディングできることは本当に重要ですか?このスキルを開発する必要がありますか?それは現実の世界と作業環境で本当に重要ですか?プログラミングコースでは、学習パターン、優れたデザインアプリケーションを作成するスキル、APIを使用して必要な情報をすばやく見つけるスキルの開発に焦点を当てました。APIドキュメントなしでプログラミングする方法を学ぼうとしていませんでした。就職の面接(API文書なしのコーディング)中に必須アイテムですか?


2
彼はドキュメント、特にAPIリファレンスについて尋ねていると思います。

3
@bancer-ネイティブJavaクラスを使用できないことは意味がありません。試験の準備ができていないようです。
ラムハウンド

27
現実の世界では、常にドキュメントにアクセスできます。私はひどい記憶を持っており、アプリケーションの一般的なロジックに集中し、簡単に調べることができるものの無意味な暗記で頭をいっぱいにしないようにします。残念ながら、学問の世界(および認定の世界)は多少異なり、無意味な暗記に重点が置かれていることがよくあります。私の学部での研究はほとんど数学と物理学でしたが、多くの式などを覚えなければならなかったことを覚えています。時間の無駄です。
Antonio2011a

11
@ Antonio2011a-使用している言語のAPIを知ることは「無意味な暗記」ではありません。ソリューションに適したクラスとメソッドを選択するため、APIをよく理解すればするほど、プログラムを作成できるようになります。それらが存在することを知らない場合、それらを選択することはできません。もちろん、Java API全体を知っている人はいません。大きすぎます。しかし、管理できる限り多くのことを知ることは常に良いことです。
ダウッドは、モニカを復活させると

9
@DavidWallaceたぶんはっきりしなかった。もちろん、APIに精通する必要がないと言っているわけではありません!! クラスの正確な名前、メソッド、パラメーターの順序、その他の心の麻痺する詳細を覚える必要はありません!本当に知っておく必要があるのは、それが存在し、それがどのように役立つかということだけです。その後、コーディング中に詳細を調べることができます。私の記憶がひどい前に言ったように、正直なところ1時間前にクラスを使うことができたでしょう。
Antonio2011a

回答:


39

Real Life™では、このスキルを「持っているのがいい」と評価しますが、必須ではありません。ただし、大学の環境では異なります。

ドキュメントなしでコーディングする機能は、学生が主題に精通していることを間接的に示すものとして使用できます。ある意味では、ドキュメントに触れることなく何かをコーディングするのを見れば、宿題やその他の割り当てをしたり、自分で楽しんでプログラミングしたりして、以前にAPIを使用したことを教授に伝えることができます。問題のAPIのぞんざいな理解を持つスマートな人がすることができるはずですドキュメントを見て、ほぼすべてのJava APIを自分で理解してください。これは偶然ではありません。プログラマーは仕事で学ぶことを期待されることが多く、Javaを含む一般的なプログラミングシステムのAPIドキュメントは、プログラマーが素早く学習できるように構成されています。多くの場合、ドキュメントには短い自己完結型の例が含まれており、概念を簡潔かつ簡潔に示しています。

これは、(あなたがどれだけ賢いかを測定するのではなく)対象の知識を測定するという教授の目標に直接反します。したがって、ドキュメントを見ずにコードを尋ねることは不合理ではありません。

注:質問の編集に応じて、この回答を編集しました。


2
私の読書から、審査官はAPIドキュメントを記憶する彼の能力を見ていました。彼は何をすべきかを知っていましたが、構文を覚えていませんでした。
ポール

@ポール編集を読んで、答えを変えました。OPはまったく違うことを求めていたと思いました。ありがとう!
dasblinkenlight

2
ここで実際の問題を識別するための+1。就職面接の場合、面接官は問題の解決方法に興味を持ち、ホワイトボードに構文の最適な近似を書くだけでよいでしょう。過去3か月間、特定の教材を学習し、その特定の教材でテストされている場合、「オープンインターネット」ポリシーを持たないのが合理的です。
StriplingWarrior

@Paul:あなたは正しいです
bancer

21

かつて彼のコードに小さなバグがあった人がいたので、彼はそれをStackOverflowに持って行き、助けを求めました。StackOverflow:Java(繰り返しなしで数値を生成)。私は彼のコードを見て、彼のHashSetが常に値で満たされているが、それがクリアされなかったことを彼に指摘しました。それで、彼は私に尋ねました:「どうやってそれをクリアしますか?」私が与えた答えを特に誇りに思っていないことを認めなければなりません。

あなたは絶対にあなたが毎日使用する基本的なものを知る必要があります。それらすべてを知る必要があり、それらをよく知る必要があります。しかし、基本的なものだけです。

他のすべてにとって、重要なことは、あなたが望むことをする何かがそこにあることを知ることです。正確にどのクラスを使用する必要があるか、正確にどのメソッドを呼び出す必要があるか、そして正確にどのパラメーターを渡す必要があるかは、脳の貴重なニューロンを占有する必要はありません。それがドキュメントの目的であり、それがオートコンプリートを備えたIDEが発明された理由です。そして、プッシュが突き出た場合、常にStackOverflowとより大きなinterwebzがあります。

プログラマに心からAPIを知ってもらうことは、弁護士に法的なコードとすべての先例を心から知るように頼むことに似ています。無意味です。無益の練習。


+1:サイズが大きいため、Javaのような大きなライブラリのAPI全体を学ぶことは非常に困難です。そして、いくつかのコア施設(例えば、javax.imageioでは、私が今までそれを使用しましたではないことを、高度な画像処理を提供)ものの、一般的な機能をパッケージで提供されているものを知ることは簡単です必要があります学んだこと。特に、java.langとjava.utilは、事実上すべてのJavaプログラムで使用される予定です。
ドナルドフェローズ

9

APIドキュメントなしでプログラミングするのに本当に必要なスキルですか?

私はそれが必要だとは言いませんが、そうです

非常に望ましいスキル

私は

私はここ数ヶ月、私よりもAPIをよく知っている人と密接に協力してコーディングをしました。彼は非常に生産的です-単に彼が私をそらす APIドキュメントチェックをスキップできるからです。


ここでは、流さについて話しています。何かができるだけなく流fluent あることについて。

流fluentであることを知っていますか?それはあなたを見ている人にとっては、あなたがタイプするときにコードを書くかのように見えるときです...

  • ...適切なコードが指から画面に単純に流れるように。APIドキュメント、チュートリアル、マニュアルをチェックしていないかのように。実際には、すべてをチェックしますが、それはすべてあなたの頭の中にあるので目に見えません。必要なすべての知識を脳内ですぐに使用できます-充電さ​​れ、ロードされ、すぐに使用できます。

...それは流な知識です。それは、初心者に1時間かかることを行うのに1分かかるときです。本当に努力する価値があります。勝利の匂いがする。

ある APIの流encyさを習得し、どのように感じるかを適切に記憶している場合、このメモリは他のAPI で最も生産的に機能する方法をさらにガイドします。


彼の質問は、最終的にドキュメンテーションを知っておくべきかどうかではなく、試験のようにドキュメンテーションを覚えるべきかどうかだとは思いません。
宮坂

@ReiMiyasakaは、冗長な試験をスキップした場合これに気付くかもしれません:「だから、私の質問は:APIドキュメントなしで完璧にコーディングできることは本当に重要ですか?このスキルを開発する必要がありますか?現実の世界では本当に重要ですか?そして職場環境で?」。質問のこの部分に焦点を当てたのは、最近の経験から、それは必須ではない基本的な回答飛ぶことができるという考えについて非常に不快に感じたからです。けっこうだ?
グナット

2
参照ドキュメントへのコンテキスト切り替えのコストを賄うために+1。すべてのステップを検索する必要があるため、物事がクロールしにくくなります。
ワイアットバーネット

8

いいえ。APIドキュメントから検索する機能がなければ死んでしまいます。持っていないのは、ドキュメントにアクセスできない場所でデバッグしようとしているときだけです。次に、必要に応じてAPIとカットアンドペーストを「リバースエンジニア」します。

APIが何であり、どの部分を使用するのが最適であるかをよく理解することが重要ですが、メソッド名、変数名を知っている必要はありません。


3

仕事では、ドキュメントにアクセスできない状況はありませんでした。一方で、文章の質の悪い文書を解釈できるように読解力と一般的な理解を持たせることは、いつでも役に立ちます。

最終的には、APIのパターンと構造を知る必要がありますが、すべてが正確にどこにあるかを正確に知ることは特に有用ではありません。

SFU Computing Scienceでは、非公開の試験が学年の70%〜100%を占めています。理論は、試験ではコース教材と適応性の理解度をテストするというものです。実際には、実際にテストされるのは、あなたの神経、睡眠の質/持続時間、機知、暗記の暗記技術だけです。これらはいずれも学術的にもソフトウェア業界の典型的な仕事にも必要ありません。


2

最後の質問を除いて、APIドキュメントの百科事典的な知識は重要ではありません。すべてのクラスのすべてのメソッドのすべての詳細を知っていれば、明らかに高速にプログラムできますが、それは合理的な期待ではありません。

あなたの最後の質問:APIドキュメントなしでいくつかのクラスの詳細を知ることが期待されるかもしれません。インタビューに参加する前にテストされることを知っている場合、またはジョブが非常に集中している場合(つまり、1日中スレッドを行う場合)、関連するクラスを詳細に知る必要があることを合理的に期待できます。


補遺:教授/インストラクターとの試験の前に、提供される資料と持参する資料を正確に明確にする必要があります。明示的に同意していないものは許可されていないと仮定します。ライティングの基礎だけを持ち込めるコース、希望する本を持ち込めるコース、好きなものが載っている両面シートを1枚だけ持てるコースがあります。試験は通常、許可されている材料を中心に構成されます。


2

APIドキュメント!=言語構文。

誰かがさまざまなJavaクラスとそのメソッドの正確な名前を知らないときを理解できます。私はそれらを知らず、毎日Javaでコーディングしています。特に変数/クラス/メソッド名の冗長性でよく知られているJava標準APIに関しては、ドキュメントも万能のIDE自動補完もなければ失われます。

しかし、あなたが自分自身で言ったように、それはあなたが覚えていない文書に通常見られるものではありません。これは内部クラスの構文です-これは言語自体の機能であり、ドキュメントから覚えておくべきものではありません。

学生が(多くの場合)標準APIのドキュメントの使用を許可されるべきだと思う限り、プログラミング試験に合格したい人は言語構文を知っているべきだと思います。そして、私は言語デザイナーだけが知っている気まぐれなエッジケースではなく、あなたの例のような標準的なものだけを意味します。


2
構文を覚える価値もないと思います。機能とパターンと落とし穴、はい、しかし構文、いいえ。私はあまりにも多くの言語を使って仕事をしているので、意味のあるものになり、ほとんどの開発者にも当てはまると思います。
宮坂

@ReiMiyasaka:言語仕様全体を覚える必要はないと思いますが、いつでも基本的な構文を知っておく必要があります。あなたの言語でループを書く方法をドキュメントで調べていますか?または、コーディングするだけですか?
ゴランジョヴィック

実際、私はかなりの数の言語で作業しており、基本的なことでも正確な構文を忘れることがよくあります!! そのため、ドキュメントを常に参照する必要があります。
Antonio2011a

@ Antonio2011a:あまり一般的ではない言語を使用する場合は特に、自分でそれを行うことを認めています。しかし、多くの学生にとって、学習されている言語は史上初のプログラミング言語です。生徒が構文を学習していなかった場合、試験の準備方法について良いことは何も言いません。
ゴランジョヴィック

@Goran実際には、2つの理由で必ずしもそうとは限りません。1。バックグラウンドコンパイルは、構文が間違っていることを知らせてくれます。言語はあなたが考えるよりも多様です。私はほとんどの時間をF#でコーディングしていて、Haskellを漠然としか覚えていませんが、Haskellのコードをうまく理解でき、意味の違いに注意することを忘れないでください。一方で、私は第一言語を徹底的に学ぶことは非常に重要であり、しばしば無視されることに同意します。
宮坂

2

Eclipseではobj.、Ctrl キーを押しながらスペースキーを押して押すと、指定されたオブジェクトのすべてのメソッドオプションを指定して自動補完を試みます。何らかの理由でそれが失敗した場合、Java APIには残りの答えがあります。Googleが何かをする方法をGoogleに教えなかった日を考えるのは難しいでしょう。

学校はまったく別の話です。


2

私見、アカデミアは通常、優れたソフトウェアエンジニアの育成に悪臭を放ちます。レッスンの後に楽しみのためにコーディングする人だけが、現実世界のプロジェクトで何かを達成する機会を持ちます。

学問は開発者を生み出すことではなく、世界全体が抽象的な問題を解決し、研究を行う方法にあります。ほとんどの場合、実用化からはほど遠い。また、研究者は必ずしも優れたコーダーではありません。

そして、APIを心から学ぶことは悪臭を放ちます。autocomplete / google / msdn / javadocsがあり、すべての隅々を検索します。なぜ誰もがすべてを常に脳内に保持したいのでしょうか?数週間/月で学習する最も一般的な機能。構文、構造、一般的なアイデアを知っていれば、他のすべてを数秒で調べることができます。

繰り返しになりますが、一部の人々はまだテキストエディターでコーディングし、関数名を暗記していますが、それは必ずしも間違っているわけではありませんが、それについて熱狂的であれば、あなたはあなたの教授を得ました。

さらに、関数名とパラメーターを暗記していても、最新のAPIドキュメントでそれらを検証することをお勧めします。strtokは10年前のシングルスレッドシナリオでは問題ありませんでしたが、最近では問題ありません。名前とパラメータを覚えるだけでは、機能が非推奨になったり、より優れた代替案が発明されたりすることは決してありません。

言語は変化するので、言語を変更する必要があります。1つの真の方法を覚えているのは良くありません。


1

遅かれ早かれAPIを使用して短時間でプロジェクトを開始すると、そのAPIを非常によく学習できます。これはまったく不要なスキルだと思います。ドキュメント(msdn、manページなど)を見たことがない人は誰も知らないからです。

ただし、大学はまったく別の宇宙ですので、たとえばCreateWindowExの10.番目のパラメーターのtypedef名がわからないために失敗しても驚かないでください。


私の大学での経験と一致していません。どちらかといえば、彼らは理論に夢中になりがちであり、細部への注意が欠けていました。または、職業訓練校のレベルに落ちましたか?
AProgrammer

私は1つの大学について話しているのではなく、これはあなたが世界のどこかの大学で目にするかもしれないもののほんの一例です。ご存知のように、それらはすべて同じではありません
ハイリウグールコルトゥック

2
大学は常にある程度の記憶と調整を行ってきました。積分テーブルを記憶する代わりにCRCブックが利用可能だったら、計算を先送りしていました。
Blrfl

1

人間の脳がそれほど多くの情報を記憶することは物理的に不可能ですが、覚える必要のあるものはあまり多くないので、基本的なことや最もよく使われることを知る必要があります。 。そうしないと、Javaにあるすべてのものを記憶することは不可能です。

また、教師が生徒にすべてを知ってもらいたい、またはあなたが割り当てた演習やプロジェクトに加えて、言語を使ってプログラムしているかどうかを知るためにそれを使用するのは不公平です。私にとっては、学校に行っていないときや関連する仕事をしているときに何をするのか知りたいと思うようなものです。

編集:明らかに、教師があなたに求めることは彼に依存します。一部の教師は理論をより重視し、他の教師は練習を重視し、すべてを理解しなくても気にしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.