どのプログラミング言語にも、コードの各層の下に言語が存在します。そして彼は発見されるのを待っています... Medium の Better プログラミング コミュニティのEric Girois による記事の翻訳と改作。 この記事を書いた時点で、「どのプログラミング言語を学べばいいのか」というスタイルの検索クエリ数が5億1,700万件(!)を超えました。検索結果リストの各ページには、他の言語に対する特定の言語の利点が記載されており、90% の場合、Python、JavaSctipt (または、言語の権威ある評価の上位 3 つのうちのもの) など、同じ言語が推奨されます。 7 月の現在の評価は
ここにあります;) 大胆に言っておきますが、5 億 1,700 万件の結果すべてに正式に反対し、最初に学ぶべきプログラミング言語は
ロジックであると言わせてください。コードの書き方を知るだけでは十分ではありません。市場はさまざまなコースの卒業生で溢れかえっているため、ジュニア開発者の地位は事実上存在しなくなっています。このような現実で成功するには、コードを書くだけでなく、論理的な思考も必要です。
私の最初のコンピューターサイエンスの授業
私がコンピューター サイエンスに初めて出会ったのは、10 年生の選択クラスでした。教室に来ると、教室にはアイスクリームの入った箱とシロップの瓶がたくさんあり、とてもうれしい気持ちになりました。
私たちが席に着くと、先生はこう言いました。「今日は日曜日(アイスクリームとシロップで作るデザート - 編集者注)を作ります。」ただし、条件が 1 つあります。デザートの作り方を正確に書き留めておいてください。私はそれに従うということです。」「
疑問はありません」私は「
簡単だろう」と思いました。わずか 1 分で、私は完璧な指示を書き留めました。
カップにラズベリー アイスクリーム 3 杯を入れます。 そのカップにチョコレート シロップを大さじ 2 杯注ぎます。 カップにホイップ クリームを加えます。 サンデーの上部にスプリンクルとチェリーを加えます。 それから私の「コンピュータ」としての教師は、 指示に正確に従って、私がこれまで見た中で最も苛烈なパフォーマンスを披露しました。彼女はアイスクリームの段ボール箱を猛烈に「攻撃」し始めましたが、丈夫な蓋は無傷のままでした。「それでは、まず蓋を外してください」と私はデザートを早く食べたいと思いながら言いました。「あなたは私に代わって指示を正確に書くことができなかったので、残念ながら次の日曜日をあなたのために作ることができませんでした。」
試行 #2 に早送りします
ラズベリーアイスクリームのカートンの蓋を外して開けます ラズベリーアイスクリーム3スクープをカップに入れます チョコレートシロップを開けてそのカップに大さじ2杯を加えます ホイップクリームを開けてカップに加えます スプリンクルとチェリーを上に加えます日曜日の時点で、これは 一度は
成功したと確信していました。先生は蓋を外し、アイスクリームを3杯すくってカップに入れました。
ついに私の日曜日の準備が整いました!それから彼女はチョコレートシロップを開け、カップに大さじ2杯を入れました。ただし、シロップはスプーン2杯ではなく、シロップなしでスプーンだけです。私の指示もまた十分に正確ではありませんでした。すべて終わると、アイスクリーム1杯、金属スプーン2本、ホイップクリーム1トン、スプリンクル約300杯を受け取りました。その瞬間、私にとってすべてが明らかになったように思えます。コンピュータは純粋な論理によって導かれる存在であるということです。彼は文脈を理解しておらず、推測もしません。彼は一連の厳格な指示に従い、それを文字どおり実行します。日曜日を作るための最終的な手順は非常に長かったですが、それは必要でした:
まだ開封していない場合は、次のすべてのアイテムのパッケージを開けます:ラズベリーアイスクリーム、チョコレートシロップ、トッピング、ホイップクリームからカップを取り出します棚に置いて自分の前に置きます。 アイスクリームスクープを取り、一度に 3 杯のアイスクリームをすくってカップに置きます。すべてが終わったら、スプーンをテーブルの上に置きます。チョコレート シロップ スプーンをまだ持っていない場合は、用意してください。次に、スプーン一杯のチョコレートシロップをカップに注ぎます。この操作を 2 回実行します。完成したらチョコレートシロップを棚に置きます。ホイップクリームのボトルを逆さまにし、ボトルの注ぎ口付近のボタンを指で3秒間押し、ボトルを元の位置に戻します。カップの中のアイスクリームとチョコレートシロップの上にスプリンクル40粒をふりかけ、スプリンクルシェーカーを元の位置に戻します。チェリーの瓶からチェリーを 1 つ取り出し、サンデーの上に慎重に置きます。生徒にサンデースプーンとデザートスプーンを渡します。 指示の最後の命令は非常に重要でした。なぜなら、それがなければ、教師は日曜日を自分で食べ始めたからです。 これがプログラミングの現実です。コンピューターに最も正確な指示を与える必要があります。本質的に、すべてのプログラミング言語は命令で構成されています。
ソフトウェア開発のキャリア
ソフトウェア開発は、それを別の業界として語るのは一般的すぎると思われる開発段階にあります。これを考慮すると、「ソフトウェア開発者」という立場は曖昧に聞こえます。異なるスキルセットを持つ 2 人の開発者が、雇用市場で同等に需要がある可能性があります。これは、開発分野で成功するキャリアには、単なるプログラミング スキル以上のものが必要であることを示唆しています。経験豊富な開発者には、プログラミング
ロジックとは別の共通の特徴があります。優秀な開発者は批判的思考が得意です。ほとんどのソフトウェア開発プロジェクトは文書化が不十分なパッチワークの悪夢であるため、これは重要です。すべてのデータを収集してギャップを埋めるには、批判的思考を備えた人が必要です。したがって、事実を単一の全体に結び付けることができない専門家は遅れをとっています。これらすべてが、もう 1 つの非常に重要なステートメントにつながります。
コンピュータ サイエンスの基礎は、現在も将来も重要です。これらはコードを書く能力よりも重要です。 人気のある言語は去来します。フレームワークは時代遅れになりつつあり、企業は使用されているテクノロジーのスタックを組み合わせることによって、変化する市場の需要に
対応しています。何が変わらないのでしょうか?基本中の基本。
論理的思考を養う方法
論理的思考と批判的思考は伸ばすことができますし、そうすべきです。次の点に注意することをお勧めします。
1. ランタイム環境におけるアルゴリズムの有効性を調査する
Big-O 表記法として知られる方法は、アルゴリズムの複雑さを記述するために使用されます。Big O の観点からコードを評価し、実行されたステップ数と費やされた時間を分析できれば、正しい方向への最初の一歩を踏み出したと考えてください。
2. データ構造を学ぶ
データ構造はあらゆる複雑なプログラムの基礎です。どのような場合にどのタイプを使用するのが最適かを知ることは重要なスキルです。間違った構造を選択するとプログラムが停止する可能性があるため、データ構造はアルゴリズムの複雑さに直接関係します。
3.読む/見る/聞く
基本を理解するには、設計概念、ベスト プラクティス、コーディング スタイルに関する本を読んでください。プログラミングを学習している人は、以下を読むことを強くお勧めします。
- 「オブジェクト指向設計手法。デザインパターン』 (E. ガンマ R. ヘルム R. ジョンソン J. ブリシデス)、
- 「リファクタリング。既存のコードの改善」 (M. Fowler)、
- 『パーフェクト・コード』(S・マコーネル)
- 「クリーンコード」(B.マーティン)
- 「実用的なプログラマー」 (E. ハント)
- 「アルゴリズム: 構築と分析」 (T. Cormen、C. Leiserson、R. Rivest、K. Stein)
4. 練習してみよう!
何百時間も練習しなければ優れたチェロ奏者になることはできません。毎日の練習がプログラミングを成功させる鍵です。現在、データ構造とアルゴリズムの理解が必要な何千ものタスクを見つけることができるオンライン プラットフォームが多数あります (HackerRank、LeetCode、CodeWars など)。
Java プログラミングの問題は、単純なものから複雑なものまで、JavaRush で入手できます。コースには 1200 以上のゲームがあり、ミニプロジェクトやタスクゲームもあります。 |
私にとって、このようなプラットフォームを使用する最も効果的な方法は、問題に対する独自のアプローチを考え、その解決策を Github に投稿することです。次に、同様の問題に対する主要な解決策を調べ、他のプログラマのアプローチを分析します。これで最後のヒントが得られます。
5. 他の人のコードを分析する
プログラミング学習時や仕事の初期段階における主な間違いは、自己孤立です。ソフトウェア開発はチームワークに大きく依存する分野です。私たちは一緒に標準を作成し、間違いを犯し、時間をかけて(やはり試行錯誤を通じて)何が最も効果的かを見つけ出します。時間をかけて経験豊富な開発者のコードを読むことは効果があります。コードが実際に適切であることを確認してください。
結論
個人的なアドバイス: 自分が(まだ)知らないことを決して恥じないでください。上で述べたように、この業界は巨大で、言語の数は信じられないほど多く、情報の海があります。少なくともプログラミングの一般的なアイデアを形成するには多くの時間と労力がかかり、経験を積むにはさらに多くの時間と労力がかかり、真のプロになるにはさらに多くの時間と労力がかかります。最終的に成功したら、お知らせします:)
GO TO FULL VERSION