プログラミング:コンピューターの心理学

私たちは皆、ユーザーとして、管理者として、プログラマー自身として、プログラミングと密接に関係していますが、最終的には、長年にわたって私たちの生活とより関連性のあるものになるでしょう。

記事上で (私が作成する予定の小さなシリーズの始まり)、私が何年にもわたってプログラミングについて発見してきたことについてのいくつかの概念をあなたと共有したいと思います。 過度に技術的なふりをすることはありません。理由については後で説明します。 しかし、私が意図しているのは、彼らに私の目で世界を見てもらうことです。彼らがその見た目を気に入ったら、少し掘り下げてみましょう🙂

詳細に入る前に、まず最も単純な点を攻撃します。

なぜ私は技術的な投稿をしないのですか?

さて、私の投稿を読んだ人のために 最高のlinuxコマンド、あなたはこの焦点の原因について少し知っているでしょう。 テクノロジーは常に変化しており、今日何かを書いた場合、その投稿が好評であれば、常に情報を更新する必要があります。 今日の最も一般的な言語では、唯一確実なことは変更です。 これはつまり(プログラマーは私が正しいことを証明できます)フレームワークは常に成長し、コアから変更されています。これは、エラーが発生するためです。一部は単純と見なすことができます。 バグ、他の人は 脆弱性。 これが、今日、特定の言語に関する投稿を書くことで、おそらく数か月、最良の場合はXNUMX、XNUMX年の有用性が保証される理由ですが、それは考えではありません。

電気は重要です

最も低いソフトウェアプログラミング言語について少し研究したことがある人は、それがすべて電気にまでさかのぼることを知っているでしょう。 以前は、プログラミングはハードウェアレベルで行われていました。つまり、これらの古い時計、計算機、およびその他の多くのデバイスは、 ハードウェア.

問題

ハードウェアプログラミングの変更は費用がかかり、複雑です🙂(少なくともそれは彼らが私に言ったことです🙂 )。 これがプロセッサが登場した理由です。プロセッサは実際にそのハードウェア層を抽象化して、ハードウェアを介して可能なすべてを実行できるようにするいくつかのコマンドを提供しますが、現在はハードウェア層でのみです。 ソフトウェア。

プロセッサー

今日のプロセッサには、と呼ばれる限られた数の機能があります 指示 多くの本で。 これらにより、ハードウェアが実行できる最も基本的な機能を実行し、コンピューターのメモリーを介して情報を動員することができます。

レジスタ

レジスターは、プロセッサーがカーネル上で作業を実行できるようにするための情報を格納するスペースです。アーキテクチャーによっては、サイズと順序が異なる場合がありますが、簡単に言えば、レジ​​スターの機能は、プロセッサーに次のいずれかを通知するデータを格納することです。次の種類の作業: データの移動、算術と論理、および フロー。 これらのタイプの機能にすべてを要約できます。

ビナリオ

プロセッサはバイナリレベルで動作します。つまり、プロセッサは理解するだけです。 0sy 1はい🙂。 ここで奇妙な事実😀GNU / Linuxの権限を覚えていますか? 上手、 プロセッサが実際にこれらの権限をどのように認識するのか疑問に思ったことはありませんか? シンプルな🙂バイナリ。 最も低いレベルでは、プロセッサはパーミッションを0と1の連続として理解します。これが、形成するオクタルに値がある理由です。 実行のために、 2 読み取り用と4書き込み用。 バイナリを読むことができる人にとって、彼らはそれを理解するでしょう:

111100101111

グループの読み取り、書き込み、実行の権限を設定します 他人 グループの実行と読み取りをしながら グループ ファイル所有者専用です。 最も好奇心が強いのは、最後の1つのXNUMXが setguid, setuid Y·エル sticky bit。 このバイナリが何であるかわからない場合は、別の投稿で説明できます。setuid、setgid、およびスティッキービットについてわからない場合は、タスクとしてお任せします😉が、必要に応じて他の場所でも説明できます。

好奇心が呼ぶとき...

さて、あなたがここで私をフォローしているなら、あなたの好奇心は多くのことを尋ね始めるはずです、私が最初に答えたいもの(そしておそらく私がすでにたくさん書いているのでこの投稿が私に許可する唯一のもの)は: 呼び出しが同じである場合、なぜプログラムはそれほど異なるのですか?

心理学

プログラミングは心を読むことを学ぶ芸術です🙂私はずっと前に読んだ引用からこのセクションを始めたいと、EdsgerDijkstraは言いました:

デバッグがデバッグのプロセスである場合、プログラミングはそれらを導入するプロセスでなければなりません

そして、私はこれらすべてを説明するためのより良い方法を見つけることができません🙂なぜエラーを導入する技術をプログラミングするのですか? この時点で、複数の人が疑問に思うでしょう。 答えは簡単です。なぜなら、私たちの心は人間であり、人間は間違いを犯すからです🙂それは私たちの本質であり、人間が地球上に存在する限りそれは続くでしょう。

コンピューターは間違っていません

私たちは間違いを犯します。チームは常に私たちが言ったことを再現することに制限します。彼らは何も想定せず、何も解釈せず、何にも反対せず、ただ読んで行動します。 したがって、別のCの本で、私は次のようなものを読んだことがあります。

Cは大まかな言語であり、それを使って多くのことを行うことができますが、それをやりたいのであれば、足で自分を撃つのを止めることは決してありません。

これはかなり奇妙な真実です🙂このような低レベルで作業している場合、実行される多くの操作が破壊的である可能性があるため、エラー防止レイヤーのため、わずかに高いレベルの言語では発生しません彼らは年上です。

すべてが心理学です

すべての言語、フレームワーク、プログラマーは、ある種の哲学を尊重し、それに従います。そうでない場合、それは非常に有望な未来を持っていません。 UNIXとその派生物に取り組んでいる私たちの人々は、おそらく古いフレーズを知っているでしょう。

一つのことをしなさい、そしてそれをとてもうまくやりなさい。

この哲学は、カーネルのようないくつかのプロジェクトが従うものであり、XNUMXつのことだけを実行する非常に小さな関数ですが、可能な限り最善を尽くします。

他の言語に行くと、それぞれに機能と目的があり、寛容なものと制限的なものがありますが、すべて独自の考え方に従います。

心を読むことを学ぶ

同じ問題を解決する方法は何百もあるという、プログラマーの間でかなり一般的なことわざがあります。 これは真実ですが、この側面についてはもっと深いことがあります。 ソースコードを読むことで、心を読むことができます-心だけでなく、それを書いたプログラマー(または複数のプログラマー)の心も読むことができます。 これは一種の仮想的で深い日記です🙂これにより、開発者の心を深く知ることができ、大規模なプロジェクトの場合、論理的で批判的な考え方が時間の経過とともにどのように成長したかを確認できます。 彼らを発見しなければならなかった人々の最良の道を知ることができるので、特別な何かとそれは最年少の心を大いに養います🙂

一貫している

多くのプログラマーやスペシャリストは、私たちが私たちから抜け出さなければならないと言います 安全地帯、そしてそれは真実ですが、特定のプロセスとフォーマットを維持することも必要以上のものです。 これは簡単に説明できます。私たちの心は反復的で構造を尊重しています。毎日同じ方法でコードを書くと、短時間でフォームについて考えるのをやめ、それに集中できるようになります。 FONDO。 これにより、 ロジック の代わりにプログラムの 言語構文。 そして、これが私がその学習を考える理由です コンセプト 学習よりも常に重要になります フォーム。 これは個人的な意見ですが、これをすべて読んだ後、なぜ私がそれをそのように考えるのかを理解できることを願っています🙂C、Java、Javascript、Python、Ruby、PHPなどでプログラミングしなければならなかった人からも言われました🙂コンセプトにより、コードを簡単に作成できます。

要約で

さて、これはシリーズの最初のステップであり、プログラミングの芸術について異なる考え方をするのに役立つことを願っています。おそらく何百回も書いたコードを実行できるようにする概念を掘り下げてみることもできます。しかし、彼らはそれが実際に何をしているのかを考えるのをやめませんでした。 そして、プログラミングを始めていないが、知っておくべき本当に重要なことについて少し優先順位を付けられるようにしたい人のために🙂ご挨拶


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

5コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ハビエルG.デルガド

    プログラミングが(この場合は)おそらくより深くプログラミングする新しい言語で議論されている非常に良心的な記事ですが、私のサポートは次のとおりです。

    1.    クリスADR

      こんにちはハビエル、ありがとうございました🙂彼らはいつも私にコードを再現することだけを教えたいと思っていたので、これは非常に重要だと思います、有名なCtrl + C ... Ctrl +V🙂しかし、それが世界で最も単純な問題であっても、私はこれに引きずられることはありません他の人からコピーするよりも書きたいので、自分の作品のように感じます。
      よろしく

  2.   バルア

    すでに次の章を待っていたので、ずっと前にプログラミングをやめました。この章では帽子を脱いでいるので、後の章で自分の決断の原因を見つけることができると思います。

  3.   クリスADR

    こんにちはバルア🙂
    さて、次の何かを考えます。 どの投稿からでもスレッドをフォローできるようにすべてを注文するのは少し複雑ですが、私はこれ(および私に尋ねた他のいくつか)をすぐに入手しようとします。 ご意見をありがとうございます。 乾杯

  4.   アンダース

    記事の逸品!、次のことを願っています...