学生プログラマーなら誰でもこれを知っています。

簡単な紹介



この記事では、CS Talmudsで何百回も説明されていること、一般に受け入れられているコーディングスタイル、コードのドキュメント化、単体テストなどについて説明します。 これは、小学校のIT学生向けのヒントの小さなコレクションです。 混oticとしたテキストと繰り返しは、素材をよりよく噛むために必要です。



この記事は、初心者の学生プログラマを対象としています。





1プログラムが正しい結果を生成した場合、作業は完了です



生徒としての教師の資格と関心に応じて、そのようなルールは次のことを意味する場合があります。

  1. すべてのコードはメイン関数で記述されます。
  2. 変数名は、「文字が少ないほど良い」というルールに基づいて選択されます(特に上級プログラマーは音訳を使用します)。
  3. コードにしっかりとシールできるすべてのデータは、しっかりシールされます。
  4. 間違った値、nullなどをチェックします...それは何ですか?
あなたのコードに対するこの態度が、プログラミングを始めたばかりの学生の間でそれほど一般的であるのはなぜですか? 実際、この結果は非常に簡単に説明できます。大学で教えられている技術分野の主要部分では、カリキュラムは長い間開発され、何世代にもわたってテストされてきました。結成する時間がありませんでした(海軍で勉強しているなら、おめでとうございます)。 したがって、生徒は、教師によって受け入れられた課題は通常、生徒がトピックを学習したことを意味するという事実に慣れています。



学生がTMMのコースまたは妥協のタスクを完了した場合、おそらく何かを知っています。 プログラミングでは、そうではありません。 このようにC ++で再帰を使用してフィボナッチ数列のn番目のメンバーを計算する関数を作成した場合、何もわかりません。 先生があなたからこの愚かさを受け入れなかったならあなたは幸運ですが、本当にそのような先生はほとんどいません。 さらに、「再帰を使用してフィボナッチ数列のn番目のメンバーを計算する機能を実装する」タスクが与えられる場合があります。



結論:
  1. IT分野の最初のコースの学生は、規律を守る必要があります。教師が与え、要求するのは、ジュニアプログラマーの立場での実際の仕事に必要な知識のほんの一部です。
  2. あなたが経験しているトピック、および関連するトピックに関する本や記事を必ず読んでください。
  3. 何が起こっているかの本質を掘り下げます-あなたはあなたのプログラムが起動の瞬間から最後までどのように機能するかを理解しなければなりません;
  4. 少し鼻の完璧主義者のリファクタリングを自分で育てます(大学を卒業した後、それを飼いならすことを忘れないでください)。
  5. プログラミングの知識をすでにお持ちの場合は、オープンソースプロジェクトに参加してください(初心者の場合は、実際のプロジェクトのコードに慣れるだけで、後で独自のプログラムを作成できます)。
実際のプロジェクトの「ベストプラクティス」の多くと、学生向けの経験豊富なプログラマーのアドバイスは有害であることに注意する必要があります。標準ライブラリの既製のソート機能を使用する必要はありません。



2なぜここに関数/クラス/メソッドを書くのですか? 簡単にできます!



研究室の将来のプログラマー/大学のコースワークのタスクの主な欠点は、その合成的な性質です。 この状況は、年を経るごとに良くなりますが、共学生を観察した経験によると、実際の課題は遅すぎます-学生はすでに「ただ通過する」コードを書くことに慣れています。通常、それは悪いコードです。



結局のところ、結果を出力するために別の関数を作成し、値として取得するために別の関数を作成するのはなぜですか? 通常、このような機能は2〜3行で取得されます。 答えは簡単です。コードの書き方を学ぶことです。 プログラム全体に対して関数を1回呼び出すようになりました。実際のプロジェクトでは、これはサポート、デバッグ、コードの再利用などの容易さによって正当化されます。



生徒が悪臭コードを渡す可能性があるのはなぜですか? 答えは見かけほど単純ではありません。 教師はグループ全体を一度に教え、生徒の知識の平均レベルに基づいて作業を受け入れます。 グループ全体を追加の不合理な仕事に動機付けることは、教師の仕事であり、多くの人が対処することはできません。 これに加えて、「予備的な最適化は悪」であり、この追加のリファクタリングは誰も必要としないことを思い出すことができます-コードを使用しません。 したがって、多くの場合教師である実用的なプログラマーの目には、そのような作業もあまり正当化されません。



結論:
  1. 「注意してください。」 課題として課題を検討してください。 自分が好きになるようにタスクを完了して、結果を友人に見せたり、オープンアクセスにしたりできるようにしてください。 一見でたらめなコースワークを実行している場合は、コースワークのトピックに関する小さなプロジェクトを自分で作成し、パブリックドメインに入れて、友人にリンクを張ってください。 このような経験は有益であると確信しています。
  2. 時間と手紙を節約しないでください。 もちろん、夜の最後の瞬間にすべてのラボを行うことができますが、そのような短距離の走行から利益を得ることはできません。
  3. 将来使用する補助ライブラリを作成します-単純な関数があるかもしれませんが、そのような経験は役に立つでしょう。 「独自の方法で」コードの再利用とそのサポートについて理解します。


3 C言語は必要ありません。誰もがJava / C#/ PHP /などで記述します



こうした声明は大学の廊下でよく聞くことができます。 これらは根拠のない発言であるとは言えません-現実世界では、プログラマーはお金のために働いて、一般的に言って、ユビキタスマネージャーによって販売されているプロジェクトを作ります。 会社の仕事は利益を上げることであり、コスト(コスト)を削減することで市場での利益を増やすことができます。 経済学者は私を許しますが、簡単に言えば。 したがって、最も一般的なのは、コードをより速く、より明確に書くことができる言語とフレームワークです。



私がCとPHPを同じ行に置いたり、さらには同じことをすることを気にしないでください。 それは範囲についてではなく、ペアで受け取る知識の関連性についての学生の疑問についてです。



Cを学ぶ価値があるのはなぜですか? 「低レベルで何が起きているのかを理解する」から「どこで多く使われているので、この知識は職場でも役立つ」など、多くの答えを見つけることができると思います。 そのような答えは正解であり、おそらく学生の革命精神を落ち着かせますが、実際には、答えは言語応用の分野ではなく、大学教育の詳細にあります。 つまり、Pascalのような優れた言語であり、大学の学問分野の理論的コースの多くを説明することができます。 大学が基本的な知識を与える(与えるべき)ことを思い出させてください。実際の理論を実証し、この知識を統合するためには、学習プロセスにおける言語の研究が必要です。



結論:
  1. 我慢してください。 今後10〜15年以内にあなたが何をするかについて、まだ明確な考えをお持ちでないと思います。 現在得られた知識は、後で必要になる場合があります。
  2. プログラミング言語またはテクノロジが気に入った場合は、「テーブルの上で」落書きをする場合でも、必要な言語とこの言語の両方でタスクを完了してください。 もちろん、教師に見せて、特定の解決策が課題により適している理由を議論する方が良いです。
  3. 言語、技術、および教育プログラムに必要なトピックに関するブログと記事を読んでください。 したがって、実際のプロジェクトにおけるこれらのテクノロジーの適用の範囲と境界について多くを学ぶことができます。


4あなたのプロジェクト? なんで? 問題を解決するための多くの既成の方法があります。



奇妙なことに、そのような声明は最初の年ではなく、2年目以降に聞こえ始めます。 私の経験では、プロジェクトの作成を作業プログラムに追加しようとすると、教師の受動性に直面しました。 もちろん、技術的な考え方は特別であり、トレーニング、練習、後続の作業の過程で形成されることを理解する必要があり、明らかな最終結果(トレーニングプロジェクトなど)のない事業は異端の言葉遣いと見なされることがよくあります。 幸いなことに、自分の部署や近隣の部署では、ボサボサの創造的な心を見つけることができます。



例として、私は人生の事例を想像することができます。 初年度、私たちのグループは、創造的思考の大学院生であり、「グループサイトを作成する」というタスクを与えられました。タスクは2-3-4人のグループで実行されました。 仲間のメンバーから、彼らが仕事のために自分のCMSを書くつもりだと聞いたとき、私はほとんど沈殿物に陥り、そのアイデアは本質的に狂っていると説明しようとしました。 私は彼らを確信させました。 最近、これらのフェローは部門に通い、数十台のコンピューターにソフトウェアをインストールしていることがわかりました。 この退屈な作業を自動化しないのではないかという質問に対して、答えが得られました。 とにかく、私たちはそれほど悪くない、私たちは急いでいない。」



結論:
  1. おそらく、あなたの部署はプログラミングに携わっているので、あなたの立候補を提案してください。 最初は、そのような仕事はあまり面白くないように思えるかもしれませんが、チームで実際のタスクを多少経験することになるでしょう。これは、自宅で座ってプログラミングフォーラムでチャットするよりも優れています。
  2. 学部のリーダーシップとの良好な関係を確立し、大学院生と知り合いになります。 これは、カリキュラムで独自の何かを促進したい場合、またはサークル/選択科目を整理したい場合に役立ちます。
  3. あなた自身のために小さなものをプログラムし、無料でアクセスできるようにして、友達と共有しましょう。 あなたは上級コースで、そして仕事の後や仕事で利益を感じるでしょう。


5 VCS? 単体テスト? ドキュメント? 私は自分の小さな研究室/授業で一人で働いています。これはすべて必要ではありません



この問題は学生に直接当てはまるのではなく、より広範な問題です。 したがって、テーマフォーラム、「なぜこれが必要なのか」シリーズの記事を紹介します。



実際、学生はそのような技術をすべて知る必要があります。なぜなら、 このツールを正しく使用できるかどうかは、多くの場合試行錯誤による経験のみです。 仕事を始めた後ではなく、雇用主と会う前にすべての不備を埋めるべきです。 同時に、作業で使用されるツールの知識がこの仕事を得る可能性を高めることを理解する必要があります。



おわりに



次の理由で、私はさらに書かれたものをすべて削除することにしました(さらにいくつかのヒント):この記事は、ITに関連する専門技術に関する学生生活で発生する可能性がある現象の説明として考案されたため、プログラミングに関する優れた教科書、または「初心者向け」の記事は、このメモの形式には収まらないと思います。



したがって、読み、検索し、実験し、困難にとどまらず、最終的にオープンソースライセンスで独自の小さなプロジェクトを作成してください!



All Articles