あなたにとってプログラミングとは何ですか?
私の観察によると、多くの人々は、プログラミングはコンピューター言語でプログラムをコンパイルすることだと考えています。 しかし、プログラミングは、まず第一に、ある種の「ビーズゲーム」である抽象的なエンティティを念頭に置いて考え、操作する方法であるように思えます。 プログラマーは、命令型プログラミングや関数型プログラミングなどのさまざまなモデルや概念を使用して、または最近多くの論争を引き起こしているオブジェクト指向アプローチを使用して、心の中に複雑な構造を作成します。 最も才能のある人が独自のモデルを作成し、動的型付けまたはNOSQLデータベースの長所と短所について説明し始めます。
言及された概念は、プログラミング言語に直接関係していません。 優れたプログラマーは言語に限定されず、関連する概念を含む任意の言語で自分の考えを表現できます。 質問が発生する可能性があります:この言語ではどのようにループが形成されますか? この言語は高階関数をサポートしていますか? 複数の実装継承を使用できますか?
プログラミング言語は、構文レベルで高階関数をサポートしない場合があります。 ただし、これにより、プログラマーが関数をパラメーターとして渡すことを妨げることはほとんどありません。 このアイデアを実装するために、さまざまな手段を使用できます(ただし、必ずしもエレガントではありません)。 しかし、これはプログラミングのアイデアや概念と比較して、二次言語の事実を強調するだけです。
プログラミング言語は、プログラマーがアイデアを実現する方法です。 この言語にはいくつかの概念が組み込まれています。新しいプログラミング言語の研究は、プログラマーが「内部言語」を拡張し、仕事で新しい概念を使用するのに役立ちます。
抽象化を使用する方法と方法が開発されるにつれて、プログラミング言語が開発されます。 新しいモデル、アルゴリズム、アイデアが登場し、日常業務の解決を簡素化する方法が見つかりました。 より高いレベルの抽象化の言語と既製のソリューションのライブラリが表示されます。 これは自然なことです。 高レベルの言語、ライブラリ、およびフレームワークの存在により、プログラマは、日常的な問題の解決に時間を無駄にすることなく、重要な問題の解決に集中できます。 理想的には、これは、より短時間でより複雑で、より効果的で、より便利なプログラムを作成できる可能性を意味します。 定性的に異なるレベルへのアクセス 。
ただし、この現象のいくつかの副作用を見てみましょう。
15〜20年前に戻りましょう。 現在の状況と比較すると、すべてのプログラミング言語は非常に低レベルです。 使用するのは非常に難しく、公共図書館はほとんどありません。 これは、職業に入るための高い閾値の形成につながります。 プログラマーになるには、標準のアルゴリズムからオペレーティングシステムを操作するためのツールまで、多くのことを学ぶ必要があります。 つまり、プログラマーはプログラミングの方法を知っている専門家であり、アルゴリズムの仕組みを知っており、複雑なプログラムを書くことができ、ライブラリーに機能がなければ、自分でそれを書きます。
私たちは今日帰ってきました。 そして、私の意見では、怪しい状況が見られます! コンピューター用のプログラムを作成するには、プログラムを作成する必要はありません! 単純なコンストラクターを折りたたんで何かをするプログラムを取得できれば十分です。 これらのデザインパターンとは何ですか? これらはすべて過去のナンセンスで残党です。 ここはあなたのためのサイトです、それは動作します、写真は美しいです、他に何が必要ですか? アーキテクチャは悪いですか? しかし、私は超近代的なエンジンでそれをしました! そしてわずか30分で!
高度な言語とフレームワークは、人間の脳が操作できる設計の複雑さに制限があるため、それらなしではできなかった質的に複雑なプログラムを作成できるようにするために作成されました。 しかし、そのようなプログラムを作成するには、プログラムできる必要があります 。 フレームワークが提供する基盤に依存して、心の中にエンティティとアルゴリズムを絡み合わせます。 前世紀のプログラマーはこれを行うことができました。これがなければ彼は仕事を始めることさえできなかったからです。 最新の開発ツールの抽象化レベルにより、プログラミングについてほとんど知識がなくてもプログラムを作成できます。 そして、多くの人がこれで十分だと信じています。 プログラミングフォーラムのメッセージから判断すると、何が足りないのかさえ知らないプログラマーの世代全体が現在成長しています。
雇用主:
-このようなデータ構造、配列、リストがあります。
あなたのプログラムで使用するのに最適なものは何だと思いますか?
応募者:
-まあ、リストは確かに優れています!
個人面接の経験から。
ご注意
私の大きな幸福に、この現象は広まっていますが、まだ普遍的ではありません。
結論として。
ほとんどすべてのアプリケーションタスクを解決する最新の開発ツール、フレームワーク、スクリプト言語、および多くのアクセス可能なライブラリは、間違いなく使用する必要がある奇跡だと思います。 しかし同時に、プログラマーに連れて行かれたとしても、決してプログラミングの楽しさを奪ってはいけません 。