タグ

Goに関するkenyuyのブックマーク (8)

  • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

    GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) にわせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

    アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • DBMSをGoで実装してみた - Sansan Tech Blog

    こんにちは。プロダクト開発部の荒川 id:ad-sho-loko です。突然ですが、皆さんはこんな疑問を持ったことはありませんか? データベースの内部実装はどうなっているのか? トランザクションとはどのようなアルゴリズムで実現されているのか? NoSQLが遅いのはなぜか? 古典的なデータベースとは内部的にどのように違うの? データベースを何かしらの形で利用しているのにも関わらず、意外と内部の仕組みを理解していない場合が多いかと思います。僕もそうです。*1 しかし、エンジニアたるもの、その仕組みを知ることは非常に重要です。僕もデータベースについて勉強しようといくつかのやサイトを調べていたのですが、なかでもCMU(カーネギーメロン大学)のDatabase System Groupがアップロードしている講義が最も勉強になりました。 www.youtube.com そしてブログでは、上記の講義

    DBMSをGoで実装してみた - Sansan Tech Blog
  • ゲームボーイエミュレータをGo言語で書いた - undefined

    概要 Goはこれまで量を書いたことがなかったので入門にゲームボーイエミュレータを書いてみることにした。ゲームボーイである理由はたまたまよくできたゲームボーイの資料(http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf)を見つけてしまったため。 成果物 github.com まだ基的なカートリッジタイプしか実装できていないがそこそこ動き始めたので公開することにした。直近は対応カートリッジを増やしながらWebAssemblyを吐けるようにしたい。 ゲームボーイの基仕様 項目 概要 CPU LR35902 4.19MHz 8bit RAM 8kB VRAM 8KB ROM 256k~32MBit Display 4階調モノクロ、160×144ドット スプライト 8×8 最大40個表示 / 1ライン上に 最大10個表示 背景 256×256ドット ウィン

    ゲームボーイエミュレータをGo言語で書いた - undefined
  • Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita

    Go言語コンパイラをスクラッチから書いてセルフホストを達成しました。 Goコンパイラの実装はほとんど見ずに、ほぼ 8cc というCコンパイラから学んだ知識のみで作りました。 特徴 コンパイルするとアセンブリを吐きます 字句解析・構文解析は手書きです。yacc/lex などのツールは使っていません 標準ライブラリも自作です コード行数はテストをのぞくと 9,152行でした。 セルフホストに必要な機能しかないので、Go言語の全機能は網羅していません。 例えば以下の機能は未実装です。 ガベージコレクション go routineとchannel 浮動小数点 設計 70%くらいは 8cc の設計をそのまま引き継いでいます。 残り25%(map,slice,interface,method,型推論等)が自分のオリジナル、残り5%が9cc、くらいな感じです。 かかった期間 2018/10/7に着手し

    Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita
  • 第1回 型にはまらない型の話、Perl to Go | gihyo.jp

    3年半ぶり、そして、リブート後初となる東京開催のYAPC 2019年1月26日、東京にYAPCが返ってきました。3年半ぶり、そして、リブート後・新体制初となる東京開催です。今回から4回にわたって、筆者と編集部がピックアップしたセッションの様子をお届けします。 イベント当日。朝一のセッションから多数の参加者が集まりました 弾さんと対話しながら型を学ぶ 3FのRoom 1で最初に登壇されたのは、Perl界のご意見番とも言えるDan Kogaiこと小飼弾さん。「⁠肩のこらない型の話」と題して、最近、軽量プログラミング言語においてよく話題となる、型についてお話されました。 身振り手振りでプレゼンをする弾さん そもそも、型とはどのようなものなのでしょうか。"YAPCASIA"という文字列は64個の0と1の列で表現されますが、このデータは数字としてもメモリ内のある場所を指し示すアドレスとしても解釈する

    第1回 型にはまらない型の話、Perl to Go | gihyo.jp
  • PythonによるBrandSafe はてなのリニューアル - Hatena Developer Blog

    こんにちは、アプリケーションエンジニアの id:skozawa です。 先日、BrandSafe はてなの裏側をリニューアルしました。リニューアルにあたり、アーキテクチャや開発言語を改めて検討しなおし、その結果、新たにPythonを使って開発を行いました。そこで、検討したことや新言語での開発で気を付けたことなどを簡単に振り返りたいと思います。 BrandSafe はてなとは アドベリフィケーションサービスであるBrandSafe はてなでは、はてなブックマークやはてなキーワードの情報を活用し、URL単位でWebページの解析をします。アダルトサイトや2ちゃんねるまとめといったサイトかどうか判定することで、特定の内容のページには広告を出稿しないようにするためのサービスです。 hatenacorp.jp リニューアルの経緯 現在、長年の開発により蓄積した技術的負債を減らすために、はてなブックマー

    PythonによるBrandSafe はてなのリニューアル - Hatena Developer Blog
  • Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ

    この記事ははてなエンジニアアドベントカレンダー2014の8日目です。 今回は、Go言語でサーバ管理ツール Mackerel のコマンドラインツールmkr を作るときに調べたこと、考えたこと、やったことについて紹介します。(mkr は現時点では開発版での提供になります。) コマンドラインツールについて コマンドラインツールを作るにあたって、@deeeet さんの YAPC Asia 2014 での発表資料が非常に参考になります。 書籍 UNIXという考え方ーその思想と哲学 の内容をベースに、コマンドラインツールはどうあるべきかということが丁寧に説明されています。 上記資料から引用させていただくと、コマンドラインツールにおいて重要なポイントは以下の7つであるとされています。 1つのことに集中している 直感的に使える 他のツールと連携できる 利用を助けてくれる 適切なデフォルト値を持ち設定もでき

    Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ
    kenyuy
    kenyuy 2014/12/08
  • 1