コマンドラインコードと高度な言語コードはどのような関係がありますか?

コマンドラインコードと高度な言語コードはどのような関係がありますか?

私はUbuntu 14.04でターミナルを使用し、シェルでコマンドラインコードを実行して(私が言ったことはターミナルの中にある)プログラムをインストールする方法を学んでいます。ただし、シェルでNode.jsサーバーを起動し、ターミナルでJavaScriptコードを実行することもできます。変数に保存した値を追跡し、関数を作成して使用することもできます。しかし、もはやOSの特定のフォルダにないという点でモードを変更しているようですが、もはやシェルにいないのでしょうか?

だから私はシェルコマンドを調べ始めました。

「コマンド」とは何ですか?

~によるとhttp://linuxcommand.org/lc3_lts0060.phpコマンドは4つのタイプのうちの1つです。

  1. 実行可能プログラム/usr/bin のすべてのファイルと同じです。このカテゴリでは、CおよびC ++で書かれたプログラム、またはシェル、Perl、Python、Rubyなどのスクリプト言語で書かれたプログラムなどのプログラムをバイナリにコンパイルできます。

  2. コマンドケーシング自体に組み込まれています。 bashは内部的にシェル組み込みと呼ばれるいくつかのコマンドを提供します。たとえば、cd コマンドはシェル組み込みコマンドです。

  3. シェル関数。これは環境に統合された小さなシェルスクリプトです。

  4. ニックネーム。他のコマンドに基づいて独自の定義済みコマンドを作成できます。

これは、プログラムを起動するたびにシェルの助けを借りて、ファイル(xphp、x.js x.css x.htmlファイルなど)でより高いレベルのコードを実行することを意味しますか?それとも、コマンドラインを使用してプログラムを起動し、他の場所で実行できることを意味しますか?

これらのさまざまな種類のコード/言語間の相互作用をどのようにマスターしますか?

たとえば、これらすべてをコマンドラインに入力されたコードと考えることができますか?一部の言語は、他の言語を1行ずつ呼び出してから呼び出し元に制御を返すなどの操作を実行します。それとも、何が起こっているのかを理解するためにどのような精神モデルが役に立ちますか?

ベストアンサー1

私は複雑なシステムの精神的モデルを開発するためにボトムアップ学習以外に役立つことを決して見つけませんでした。

いくつかのアセンブリ言語を学びます。多くではなく、数字の追加サブルーチンを作成するのに十分です。ウォッチは、デバッガを段階的に実行してタスクを実行します。ポインタはマシンアドレスに過ぎませんが、文字列は実際にその中のセルで終わるメモリセルのシーケンスであることを発見しました0(免責事項:一部言語)。

これがわかったら、高度な言語で書くときに覚えておくことは、システム全体の一貫した画像を得るためにできる最善の方法です。何が他のものよりも遅い理由と他のものは、より多くのメモリが必要な理由をすぐに理解するでしょう。

プログラミング言語を理解したら、次のことをすばやく見てください。実装するコマンドシェル。繰り返しますが、入力と出力が次のようであることを除いて、他のプログラムと同じプログラムであることがわかるほど長くはありません。その他のコマンド。コマンドラインを解析するのを見ると、空白のあるファイル名がなぜそれほど多くの問題を引き起こすのかがわかります。

あるいは、現代のシステムの起動デーモンの内部を見て、これがシェルスクリプト、プログラム、およびシステムコールを使用して特定の機能を達成する方法を確認してください(どれだけ揺れているのか見て驚かないでください)。

少し時間がかかりますが、私はあなたを信じています。できない現代のコンピュータのような複雑なシステムを理解するために多くの時間を費やす必要はない。もっと一般的なのは、半分の偽で誤解を招く精神モデルを使用することです(技術サポートの分野で一日を過ごしたことがある人に尋ねてください)。また、スタックのすべての内容を理解できないかもしれませんが、大丈夫です。誰も今日何でも計算するために使用されるスタック全体を学びます。人間の脳は、そのようなスタントを再試行するには遅すぎると非常に貴重です。

おすすめ記事