質問: スクリプト言語で、機械語を出力することはできないのでしょうか? スクリプト言語は使いやすいです。例えばCに比べて、 ・文字列型が存在する ・メモリ確保・開放を考えなくてもよい 等、作りたい処理に直接的に関係しない処理の作成に手間をかけずに 済むからです。 各スクリプト言語には、それぞれ各言語の仕様が存在していると思います。 それらの仕様に従って機械語を出力することができれば、簡単な構文で 余計なところに頭を使わずにプログラミングできると思います。 実装の難易度もHaskell等の関数型言語を使うと、ルールを羅列するような プログラムは書きやすいと聞いたことがあるので、それほど難なく実装可能かと 推測します。(自分にはそんなものを作れる能力ありませんが...) 何か、スクリプト言語はインタプリタ実行しなくてはならない理由があるのでしょうか? 例えば、型は実行時に動的に決まるから、コンパイル時に確定できないのだとか。
回答: ・文字列型が存在する ・メモリ確保・開放を考えなくてもよい これなら、コンパイル言語であるgolang(go言語)でもできます。 性能 * 実行速度 cとあまり変わらない速度 cの有名なint型ヒープソート→20万件 22ms golangの自作int型クイックソート→20万件 25ms * メモリ ヒープ領域を自動で確保、解放してくれる c→30万件でスタックオーバーフロー golang→1億件で正常に動作 言語としての特徴 * 文字列型 string, []byte, []runeの三つが主体です。 byteはバイト単位で分割したもの(マルチバイト文字はばらける) runeは文字単位で分割したもの * 強み 並列処理、ネットワーク通信、学習コストの低さ * クロスコンパイル windowsのexeファイルからLinuxの実行ファイルはもちろん、名前の知らないようなOSやその32/64bitまで対応しています。 対応OSやCPUアーキテクチャ詳細 https://golang.org/doc/install/source#environment * 他言語との連携 cgoという仕組みでC言語の関数を呼び出したり、モバイルアプリ開発ではgomobileのbindという仕組みでJavaやObjective-Cから呼び出されるライブラリを生成することができます。 dllという形式のライブラリファイルの関数を簡単に呼び出すことができます。 おすすめ参考サイト * 英語 ダウンロード https://golang.org/dl/ ドキュメント https://godoc.org/ ドキュメント他 https://golang.org/doc/ * 日本語 学習サイト https://go-tour-jp.appspot.com/ 逆引き http://ashitani.jp/golangtips/ > > 何か、スクリプト言語はインタプリタ実行しなくてはならない理由があるのでしょうか? > > > インタプリタの方が実装が簡単です。なので比較的コストを掛けずに作るならインタプリタがいいんでしょう。 golangはスクリプト(動的型付けもする)言語ながらコンパイルが主体なので、インタプリタ実行しなくてはならないというわけではないです。 > > 機械語を出力したい目的は実行速度が速いことです > > > それほど実行速度を求められるプログラムを作ろうとしてるのですか? 差し支えなければ教えていただきたいです。