Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

【#100DaysOfCode】補講:プレーンなWindowsに標準搭載されているもの [コンパイラがあった]

Windowsにはコンパイラは入っておらず、gccなどを必要に合わせてインストール(環境構築)して、
プログラミング言語を扱う」と思っていた。
調べたことをメモ


teratail.com


catsforepaw
無理矢理ですが、PowerShellMicrosoft.CSharpアセンブリをロードしてCSharpCodeProviderオブジェクトを作ってC#コンパイラーを準備すれば、C#が使えるようになります。
pngnshny
C#コンパイラを準備というのは、C#コンパイラをダウンロードしてこないといけないということでしょうか…?
catsforepaw
いえ、CSharpCodeProviderオブジェクトを作ったら、アセンブリ情報とかいろいろ設定してC#ソースをコンパイルして実行できるように準備するということです。.NET Frameworkで提供されている機能なので、別途ダウンロードとかはないです。
catsforepaw
ほとんど使うことのない機能なので改めてリファレンスを確認してみましたが、CompilerParametersオブジェクトに各種設定をして指定したファイルやソースコードコンパイルするようです。コンパイルした結果はCompilerResultsオブジェクトに格納されて、クラスをインスタンス化したり、メソッドを呼び出したりできるようです。

YsMana
WSHVBScriptJScriptが使えますね
pngnshny
まさか標準のWindowsJavaScriptに似た言語が使えるとは!しかも正規表現が使えるなんて…!いいことを知りました。ありがとうございました!

Node.jsもスクリプト実行環境
qiita.com

フレームワークとは


アプリケーションを開発するとき、その土台として機能させるソフトウェアのこと。「アプリケーションフレームワーク」とも呼ばれる。「枠組み」「骨組み」「構造」などといった意味があり、土台となるフレームワークに必要な機能を追加し、アプリケーションの開発を進めていくのが一般的。

フレームワークには、Webアプリケーションの作成に利用される「Webアプリケーションフレームワーク」、データのソートや文字列操作、数学関数、テストなどのアプリケーションの機能や性能、操作性を向上させるための「ユーティリティ系フレームワーク」などの種類がある。それぞれ汎用性が高く、機能が充実しているタイプや、軽量で機能が絞り込まれたタイプなど、多種多彩なフレームワークがある。

フレームワークの最大のメリットは、目的のアプリケーションをゼロから開発する必要がないので、開発工程を大幅に短縮できることにある。その反面、フレームワーク特有のコードがあるために、プログラミング言語に加え、そのコードを覚えなければならないという欠点もある。

  • メリット

1.汎用的な機能があらかじめ用意されている
2.複数人で開発するときに、レベルを合わせやすい

  • デメリット

1.オリジナリティの高い処理を行おうとすると、余計に大変
2.フレームワークを使わない場合に比べて、性能面で劣る(場合がある)

www.otsuka-shokai.co.jp

.NET Frameworkとは

Microsoft .NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発・実行環境である。

Windowsアプリケーションだけでなく、XML WebサービスウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。一般に.NETという場合、.NET全体の環境を指す。
.NET Framework - Wikipedia



Windowsでのコンパイル(アセンブラ→実行ファイル)までの流れ

www.toumasu-program.net


C言語コンパイラの大まかな流れ
簡単なプログラムであればgcc test.cだけでコンパイルが可能だが、実際のコンパイルは以下の4つの手順を踏んでいる。

1. プリプロセッサソースコードコンパイラが解釈できるように直す
2. 1で作ったソースコードアセンブラに直す
3. 2のコードをオブジェクトファイル(機械語)に直す
4. 実行ファイルに直す(exeとかoutとか)

Linuxにおけるアセンブラ言語のコンパイル・実行までの流れ

poppycompass.hatenablog.jp

Linuxにおけるアセンブリ言語 GASとNASMの違い


NASM と GAS の最大の違いの 1 つは構文です。GAS は AT&T 構文を使いますが、これは GAS や一部の古いアセンブラーに特有の比較的初期の頃の構文です。一方 NASM は、TASM や MASM など大多数のアセンブラーがサポートする Intel 構文を使います (GAS の最近のバージョンでは、GAS で Intel 構文を使える .intel_syntax というディレクティブをサポートしています)。

www.ibm.com