タグ

コンパイラに関するytkibkのブックマーク (6)

  • 副作用から考える並行処理とアクターモデル - えちょ記

    相変わらずいきなり仕事が忙しくなっているので、また関数言語の話。 「関数言語は副作用が無いから並行処理に向いている」とよく言われます。ですが、そもそも副作用ってなんなんだ?という質的なところで理解できないことが多いんじゃないかなーと。そもそも私もその辺分かっているのか疑問なので、ちょっと考察してみる試みを。 副作用とは プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、それ以降で得られる結果に影響を与えることをいう。(Wikipediaより) これは多分逆に考えたほうが分かりやすい。「副作用が無い」というのは、同じ仕事をさせたら、いつも同じ成果を出すクールなやつということ。私のようにそのときの気分でやることが変わるのでは駄目なのです。 厳密には、以下の二つの条件、 「同じ条件を与えれば必ず同じ結果が得られる」 「他のいかなる機能の結果にも

    副作用から考える並行処理とアクターモデル - えちょ記
  • CPU実験でコアつくってOS動かしたまとめ - wasabizの日記

    2015-03-22 CPU実験でコアつくってOS動かしたまとめ 東大IS名物のCPU実験が3/17に最終発表を迎えて無事終了しました。半年のCPU実験を始めるにあたって初めにお世話になったのが先輩たちのブログだったりするので、恩返しの意味で僕もここに記録を残して置きたいと思います。基的に今後ISでCPU実験を行う人々に向けた記事なので関係ない人が読んでも面白くないかもしれません…(OBが酒の摘みにニヤニヤしながら眺めるのはアリかも)。 CPU実験復習 CPU実験といえば 情報科学科の専門課程に入って1年しか経ってないぺーぺーの学部3年生に 半年間でCPUとコンパイラをゼロから自作させて 最終発表会でその性能を競う という知る人ぞ知る超鬼畜演習です。CPU・コンパイラの「性能」はmin-rtという共通のレイトレーサープログラムを動かすことで計測します。FPUは自作することが要求されます。

    CPU実験でコアつくってOS動かしたまとめ - wasabizの日記
  • コンピュータシステムの理論と実装

    コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。書では、これらコンピュータの構成要素をひとつずつ組み立てます。具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、オペレーティングシステム、コンパイラ、バーチャルマシンなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。実行環境はJavaMacWindowsLinuxで動作)。 ● 書のサポートサイト ● 書で使用するツール「Nand2tetris Software Suite」 ● 「Nand2tetris Software Suite」のチュートリアル 目次 賞賛の声 訳者まえがき:NANDからテトリスへ まえがき イント

    コンピュータシステムの理論と実装
  • わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ

    Cコンパイラといえばとてつもなく複雑なプログラムというイメージがあります。ところが、このCコンパイラを(サブセットとはいえ)わずか500行ほどのCのソースコードで実現した「CC500」名付けられたプログラムが公開されています。 ソースコードは可読性を維持するためにつけられた空行やコメントを含めると、実際は750行ほどになるそうですが、それでもこれだけコンパクトなソースコードで実行可能なELFバイナリ(Linux用のバイナリ)を生成できるのは興味深いのではないでしょうか。 以下実際にLinuxでコンパイルしてみました。 自己コンパイルできる このコンパイラはC言語のサブセットで、自分自身のソースコードをコンパイルできるところがおもしろいところです。まず「cc500_1」という実行ファイルを生成します。 gcc cc500.c -o cc500_1 生成された実行ファイル「cc500_1」を使

    わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ
  • MSの今回の発表で何が起こるのか、の私的感想 - 亀岡的プログラマ日記

    さて、まさかのMSの大鉈連発に、TL大騒ぎでございます。まさかOSS化まで入ってるとは僕も思ってなかった。MSクラスタですらもざわざわである。 んで、今回の決定が意味することをちょっと考察してみたいなーと。備忘録的にね。 あくまで 私的感想です。鵜呑みにしないように。 何が起こったのか 11/12日(米国現地時間),Microsoft Connect();というイベントの中での発表でございました。 詳しくは、Public Keyさんを参照するのが良いと思います。 [速報]マイクロソフト、サーバサイドの「.NET Core Rutime」と「.NET Framework」のオープンソース化を発表。C#コンパイラやASP.NETなど [速報]マイクロソフト、「.NET server framework」のLinuxMacOS X用オフィシャルディストリビューションを発表。.NETアプリケーシ

    MSの今回の発表で何が起こるのか、の私的感想 - 亀岡的プログラマ日記
  • Cコンパイラをスクラッチから開発してみた(日記)

    以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか

    Cコンパイラをスクラッチから開発してみた(日記)
  • 1