- ベストアンサー
C言語の事
OSXを使っています C言語のコードをある程度覚えました ターミナルで簡単なコードを実行しています 話はここからです、コードをある程度覚えたのは良いんですが なにを作れば良いか困っています。 本は簡単すぎて実用的では無いので困っています タイマーなど実用的なアプリを作ってみたいと思っています GUIのアプリではなくCUIのアプリでお願いします cocoaやcarbonではなくC言語で御願いします(CUI) 色々教えて下さい
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
No3です。 >インタープリタを作るにあたって調べたんですが >資料が少ないのと、難しすぎるかもしれません >他に簡単な物は無いのでしょうか? インタープリタ自体の説明があっても独自のインタープリタの 解説サイトは少ないと思いますよ。 そもそも独自のものですから様々ですし、基本的に簡単な物を作るにしてもそれを実行させる上物が必要ですので目的がないと進めないかも しれませんね。 >ファイルコンバーダーってのが気になります ファイルコンバーターっていうのはファイルの形式や内容を変換する ツールという意味で私は回答しました。 例えば wavfile --> mp3fileに変換 ツールを作る上でファイルの扱いは重要になってきますので、 まずある程度のファイルのフォーマットは知っておくのもいいんじゃないですかね。 例えば、いきなり違うファイルの形式に変換する物ではなくて、 「ある形式の画像ファイルをモノクロ画像に変換する」みたいな 簡単な物から初めて対応する形式の画像を増やして行くってのは どうでしょうか?
その他の回答 (8)
- sonetea
- ベストアンサー率26% (9/34)
すみません。 「インタープリンタとファイルコンバーターの作り方」のところにつもりだったのですが、 投稿する場所を間違えてしまいました。
- sonetea
- ベストアンサー率26% (9/34)
前回の質問にも絡めての回答となります。 まずファイルコンバータですが、名前のとおり「ファイルを変換するもの」です。 何のファイルをどう変換するのか、ルールを自分で決めて、 そのルールに従って変換作業を行うプログラムを書きます。 インタプリタに関しては、自分独自の言語を作ろうという発想でいいと思います。 (もちろん既存の言語でも構いませんが) 最初なので、「C言語よりも機能は少ないけれど手軽に記述できる言語」などはどうでしょう? 独自言語の例) a = 1 b = 2 c = a + b print c 実行例) 3 C言語は#includeが必要だったりmainを書いたりしなければいけませんが、 例で挙げた言語では必要ありません。 独自言語のルール ・変数は整数のみで型を宣言する必要はなく、代入と足し算ができます ・printという命令で数値を表示することができます ここから発展させたければ、 ・足し算だけじゃなく四則演算も可能に ・文字列を扱えるように ・条件分岐やループを扱えるように ・独自の関数を定義できるように など、いくらでも考えられます。 > 参考HPなど手順など教えてください とありますが、オリジナルのものなので手順などは自分で考えていくことになります。 インタプリタであればファイルから独自言語のプログラムを読み込み、 1行毎に変数や命令などを解釈して実行していくなど… さて、前の質問では実用的なものを作りたいとのことでしたが、 どの程度まで「実用的」にこだわるのかがポイントになってきます。 実際のところ何か役に立つものを作ろうと思っても既に存在してることが多く、 既存のものより実用的なものを作るのは難しいことです。 ここは割り切って、役に立つか立たないかよりも、 自分のスキルアップに繋がるものを作るというほうが良いかもしれません。
- jacta
- ベストアンサー率26% (845/3158)
質問者さんの実力がいまいち見えてこないのですが... 本に書いてあるような内容は簡単すぎるのですよね。 > ファイルコンバーダーってのが気になります ファイルコンバーターといってもいろいろありますが、多くのものは既存のツールで対応できます。既存ツールより劣るものを作っても、それでは到底実用的といえませんし、既存ツールを超えるとなると、非常に高難度になってしまうでしょう。 例えば、C言語のソースコードの整形であれば、(実用的という観点では)わざわざツールを作らなくてもGNU Indentを使えば十分ですし、それを超えるものを作るのは大変です。 同様に、文字コードの変換ならiconvを使えば済みますし、画像ファイルのフォーマット変換ならそれこそいくらでもツールがあります。
- Trick--o--
- ベストアンサー率20% (413/2034)
使うものを作ればいいんです。 PCを使っていて 「あー、この作業をもっと楽にやりたいなー」 と思ったことはありませんか? それを作ればいいんです。 今、インタープリタを作ろうと思っても 「インタープリタって何?」というところから勉強する必要があります。 教えてくれる場所があればいいのですが、そうもいかないでしょう。 まずは、自分に出来るところからやるのがいいと思いますよ。
- jacta
- ベストアンサー率26% (845/3158)
#1です。 やや説明不足だったこともあり、必要以上に難度が高い印象を与えたようです。 まず、実用的なコンパイラを作成する方法ですが、機械語やアセンブリ言語を直接出力するのは、コンパイラ・ベンダーとかでない限り(多くの場合)無意味です。 ではどうするかですが、C言語のソースコードを出力すればよいのです。つまり、 自作言語のソースコード → C言語のソースコード という変換を行うトランスレータを作成します。 そして、そのトランスレータとCコンパイラを順に実行させるためのコンパイラ・ドライバを作成します。 インチキくさいと思われるかもしれませんが、FortranやAdaのコンパイラは、こういう方式をとることがよくあります。C++も初期のものはこの方式でした。 この方法であれば、ネイティブコードの最適化などは一切考える必要はなく、インタープリタとさほど変わらない難度で実現できます。 GCCなどを使えば、かなり多くのターゲットに対応したクロスコンパイラを実現することもできます。そして、本当にマルチターゲットを実現するには、トランスレートの結果出力するC言語のソースコードは、十分に移植性の高いものでなければならず、その点でもかなり実力の向上が見込めます。 また、これを応用して、C言語ではなく、C#へのトランスレータを作ってやれば.NET対応のコンパイラを作れますし、Javaへのトランスレータを作ってやればJVM対応のコンパイラを作ることができます。
- nerosuke
- ベストアンサー率33% (39/115)
質問者のレベルを額面どおり受け取ったしたなら、簡単なインタープリタくらいなら出来るかもしれませんが、コンパイラは難しいんじゃないでしょうか? 誤解のないように言っておくとNo1さんの言うとおり 実用レベルのコンパイラを作成すればかなりの技術に結びつきます。 私自身独自言語(スクリプト)のコンパイラは作成経験があります。 PG歴11年ですが実用レベル(その言語使用での商品が開発)に至るまで1年程開発にかかりました。 志が高いのは良い事ではあると思いますが、いきなり超えられない壁ではちょっと・・・ まずはファイルコンバーターあたりがいいんじゃないでしょうか?
- yokomaya
- ベストアンサー率40% (147/366)
実用というのは人によって異なると思うのです。あなたにとって一番身近なものを題材にすることがよいのでは?例えばCに一番近しくしているならソースコードの整形フィルターとか。成果が自分でも利用できると感動もひとしおですから。僕の感覚ではコードをある程度覚えた段階でのコンパイラは少しハードルが・・。いえ、それも興味次第なんですけどね。あなたがそれを志向しているならけして不可能ということはないとは思います。
- jacta
- ベストアンサー率26% (845/3158)
勉強のための題材を探していると解釈して回答します。 一気に実力を上げるのであれば、ミニコンパイラかインタープリタを作成することをお勧めします。 最初はかなり敷居が高いと思いますが、負けずにチャレンジしてみてください。どんなにチープなものであろうと、一応動くプログラムが完成したときには、実力は格段に上昇しているはずです。
お礼
インタープリタを作るにあたって調べたんですが 資料が少ないのと、難しすぎるかもしれません 他に簡単な物は無いのでしょうか? C言語のサイトって基礎コードしか無くて困っています ファイルコンバーダーってのが気になります