Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 43件

新着順 人気順

処理系の検索結果1 - 40 件 / 43件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

処理系に関するエントリは43件あります。 programming言語プログラミング などが関連タグです。 人気エントリには 『新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話』などがあります。
  • 新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話

    私は新たにプログラミング言語を学ぶとき、しばしば簡単なLisp処理系を作ってみます。いくつかの言語で取り組んでいるうちに、このLisp処理系群に小さな共通基盤も出来上がったりしているので、これを紹介しつつ、Lisp処理系の実装がプログラミング言語の学習にどう丁度いいのかを紹介します。 Rosetta Lisp 自作のLisp処理系群を、ロゼッタ・ストーンから名を借りてRosetta Lispと呼んでいます。Rosetta Lispは以下のような特徴を持ちます。 一定の共通した言語仕様・VMの仕様に基づいて動作する Rosetta Lispは (Rosetta Lispに準拠するLisp処理系群は)、いずれも共通した命令セットのVM上でLispプログラムを実行するように実装されています。 Lispの簡単な実装では、よくインタプリタ形式が採用されます。kanaka/malやrui314/min

      新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話
    • Rust言語でファームウェア、OS、言語処理系を実装して、CSS 2020で発表した - 未完成な論を綴るブログ

      先月、国内最大のセキュリティ研究会であるコンピュータセキュリティシンポジウム 2020(CSS 2020)が開催され、そこで、Rust言語を用いてファームウェア、OS、言語処理系を設計・実装した話を発表しました。本来、CSS 2020はリアルで開催されるはずでしたが、コロナ禍の影響でオンライン開催となり発表動画作成が求められました。せっかく作った動画をこのまま捨て置くのももったいないと思い、ここで供養したいと思います。 www.youtube.com 概要 内容は、Rust言語を用いて、AArch64のセキュアワールド内で動作するファームウェア、OS、プログラミング言語処理系を実装した話となります。と言っても、まだまだ基本的な部分しか実装しておらず、実現目標に対して2〜3割と言ったところですが、どうぞご笑覧ください。 ブート部分は多少アセンブリ言語を使っていますが、その他の部分はRustで

        Rust言語でファームウェア、OS、言語処理系を実装して、CSS 2020で発表した - 未完成な論を綴るブログ
      • シェルスクリプトでLISP処理系を作ってみた

        【2022-01-22追記】簡易版のLISP処理系をPOSIX準拠シェル(+sed)で作成する様子の動画を作成してみました. この記事は,筆者がシェルスクリプトで簡易実装している純LISP処理系の開発についてまとめたものです.『PureLISP.sh』と呼んでおり,次のGitHubリポジトリでパブリックドメインとして開発・公開しています. 基本的には,上記リポジトリのREADMEの内容を記事として膨らませたような構成です.このことから,今回の記事内容に関するコメント等だけでなく,『PureLISP.sh』そのものへの御意見等(GitHubのIssues/Forkを含む)も受け付けます.ただし,開発の経緯・目的から,次の3点は維持します. 最低限必要な要素で構成されたLISP処理系を志向すること POSIX準拠のシェルスクリプトで実装すること パブリックドメインにて開発・公開すること なお,

          シェルスクリプトでLISP処理系を作ってみた
        • 「プログラミングが他の分野に比べて独学が比較的容易であるのは処理系があるためだ」という意見を見て、なるほどと思った話→様々な反応が集まる

          ロボ太 @kaityo256 「プログラミングが他の分野に比べて独学が比較的容易であるのは処理系があるためだ」という意見を見てなるほど、と思った。学習において重要なのは自分の理解が正しいかを確認し、間違っていたら修正するというループをいかに早く回すかなんだけど、処理系があるとそれがかなり早く回る。 2024-12-30 23:48:36 ロボ太 @kaityo256 これ、例えば数学とかでは、適切な問題を解いて、その答え合わせをすることでループさせるわけだけど、「自分が間違っている」ということに向き合うのって結構きつい。でも、プログラムを実行してエラーが出たり思うような動作にならなかったら100%自分が悪い。その修正ループがかなり短期間で回る。 2024-12-30 23:51:56 ロボ太 @kaityo256 この「処理系」を、別の分野でAIが代替できるか、という話だけど、例えば英会話

            「プログラミングが他の分野に比べて独学が比較的容易であるのは処理系があるためだ」という意見を見て、なるほどと思った話→様々な反応が集まる
          • PPLサマースクール2021 「JavaScript処理系とChromeブラウザの実装技術」 - 日本ソフトウェア科学会 プログラミング論研究会 (JSSST-SIGPPL) (Special Interest Group on Programming and Programming Languages)

            ニュース † Web ページを公開しました (6/29) 無事終了しました。講演資料へのリンクを追記しました (9/1) ↑ 概要 † JavaScript は世界でもっとも利用されている重要なプログラミング言語の一つであり、ウェブブラウザで利用可能なほぼ唯一のプログラミング言語という特徴から、ウェブアプリケーション開発で広く利用されています。 この重要性から、JavaScript処理系の性能改善に関する研究開発が活発に行われてきました。JavaScriptの性能改善は、動的な言語ながらの困難さも知られています。今年のサマースクールでは、鵜川さん(東京大学)にJavaScriptの実装技術について、その困難さをどう克服するか、基本的なところからご紹介いただきます。 JavaScriptを動作させるソフトウェアとして、Google が開発を主導するV8処理系、およびそれを利用するGoogle

            • Rustとアセンブリで実装された新たなRuby処理系 JITコンパイルをサポートして速く動く「monoruby」 | ログミーBusiness

              Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。monochrome氏は、Ruby処理系「monoruby」について発表しました。 高速な実行が可能なRuby処理系「monoruby」monochrome氏(以下、monochrome):monochromeといいます。今日は「機械語で書くRuby処理系のその後」ということで、前回の発表のその後を報告いたします。 自己紹介です。monochromeといいます。(スライドを示して)Twitterはこれです。最近、Twitterは治安が悪いので、Mastodonにアカウントを作りました。RustでRubyの処理系を作っています。プログラミング処理系、言語処理系が好きな人の集まりのSlackとか、最近はこの「Zulip」というアプリに移動して、こち

                Rustとアセンブリで実装された新たなRuby処理系 JITコンパイルをサポートして速く動く「monoruby」 | ログミーBusiness
              • 2020年における各Python処理系の状況 - Qiita

                Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 2020年1月1日をもってPython2系列のサポートが終了しました(一部の長期サポート環境を除く)。Pythonは完全にPython3時代に移行し、安定期を迎えているように思います。しかしながら、Pythonは何もCPythonだけではありません。JythonやIronPythonといった他の処理系の現状はいったいどうなっているのでしょうか。気になったので少しだけ調べてみました。 CPython 公式サイト リポジトリ 言わずと知れた、オリジナルにして最も有名なPython処理系です。C言語で実装されています。 2020年1月1日にP

                  2020年における各Python処理系の状況 - Qiita
                • 機械語手書きから言語処理系をブートストラップする - Qiita

                  この記事は言語実装のカレンダー | Advent Calendar 2021 - Qiita https://qiita.com/advent-calendar/2021/lang_dev の4日目の記事です。 はじめに 昔、アセンブリ言語のみから出発し、GC・継続・オブジェクトシステムなどを持つ比較的高級な言語までブートストラップするということをやりました。いつか再挑戦してみたいと思っていて、正月休みにやりましたら思いのほか動くものになりましたが、死蔵させたまま1年経ってしまいました。勿体無いのでこの機会に紹介して供養します。 前回作ったAmberという処理系はこちら - リポジトリ: https://github.com/nineties/amber 今回はアセンブリ言語じゃなく ELFファイルの手書き から出発してみたいと思います。ただのお遊びで、そんなことしても役には立ちません。が

                    機械語手書きから言語処理系をブートストラップする - Qiita
                  • AIと一緒に新しい言語処理系を作ってみた|shi3z

                    Claude-3 Sonnetがだいぶ良いので、前々から考えていた、「Lispっぽい記法で書けるけど他の言語に慣れた人にも使える言語」の処理系を作ってみた。仮にEasyLispという名前にした。 この言語ではこんな感じでプログラムが書ける (define person (object)) (set! person.name "Alice") (set! person.age 30) (print person.name)personというオブジェクトのプロパティをnameやageがあって、これをドット記法で指定するとpersonオブジェクトのプロパティにアクセスできる。 同じことをCommon-Lispでやろうとするとこうなる (defun example () (let ((person (make-object :name "Alice" :age 30))) (format t "N

                      AIと一緒に新しい言語処理系を作ってみた|shi3z
                    • Language Server Protocol に対応したミニ言語処理系を作る

                      自作プログラミング言語でコード補完やタグジャンプをしたり、ソースコードに色をつけたりする。

                        Language Server Protocol に対応したミニ言語処理系を作る
                      • Big Sky :: Go言語で Lisp 処理系を作った。

                        1週間ほど前の深夜、ふと Go で連結リスト構造を書いていたら次第に car/cdr 形式になってしまい、気付いたら手が滑って Lisp 処理系を作り始めてしまいました。 なぜかこんな時間から突然 lisp を書き始めてしまった。 — mattn (@mattn_jp) March 26, 2020 初日は深夜だったのでパーサを書いた所で終了。次の日の夕方には四則演算と FizzBuzz が動きました。実は Lisp 処理系を書くのは人生でたぶん4回目くらいで、前回はC言語で書きました。 GitHub - mattn/cisp: Minimal Lisp Interpreter https://github.com/mattn/cisp 今回のルールとして「過去の自分の実装や他の実装は見ない」というオレオレルールを作ってしまったので幾分時間が掛かってしまった様に思います。テストコードはさす

                          Big Sky :: Go言語で Lisp 処理系を作った。
                        • 自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう / Let's Measure the Performance of Packet Processing System with Python Tools.

                          Pycon APAC 2023で登壇した時の資料です。 https://pretalx.com/pyconapac2023/talk/G3LDSG/ https://2023-apac.pycon.jp/timetable?id=G3LDSG

                            自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう / Let's Measure the Performance of Packet Processing System with Python Tools.
                          • Claude Projectsを活用して、Deno / TypeScriptで言語処理系を書いてみた話

                            背景 Claude Projectsをもっと活用できるようになりたい Deno / TypeScriptで何か作りたい という理由で、なんとなく「プログラミング言語的なものをClaudeと一緒に作ってみるか」と思いつきました。作業ログや学び的なものをせっかくなので残しておきます。 作成したのは以下: 基本的に私は指示役の男としてClaudeにコードを書かせることに徹しています。また、また今回ChatGPT、Cursorなどその他の生成AI系サービスは一切使っておりません。 開発方針 今回、言語をリッチに作り込むことが目的ではないため、比較的言語仕様がシンプルなGo言語を極限まで劣化させた言語を作ることとします。名前はpoor-go と名付けました。コマンドや拡張子は pgoとします。 最小ゴールとして、以下の hello-world.pgo がコンパイルでき、実行すると hello wor

                              Claude Projectsを活用して、Deno / TypeScriptで言語処理系を書いてみた話
                            • JITコンパイルをサポートした新たなRuby処理系をRustとアセンブリで書いている話 - Qiita

                              CRuby(3.2.0-preview3)およびCRubyの新しいJITコンパイラ・モジュールであるYJITを有効にした場合と、monoruby(JITあり・なし)の単位時間当たりの実行回数をbenchmark-driver.gem を用いて比較しています。数字が大きい方が速いです。ベンチマークの種類によりますが、YJITと比較しても高速、特に浮動小数点演算を多数実行するso_mandelbrotやso_nbody、app_aobenchでは数倍高速となっています。インタプリタもCRuby(JITなし)と遜色ない速度になっています。 以下、設計と実装について紹介していきますが、その前に必要な基礎知識をおさらいしておきます。 基礎知識 JITコンパイラは実行時に対象言語のプログラムを機械語へコンパイルするモジュールですが、一般的な実装ではインタプリタと並存して動きます。プログラムは抽象構文木

                                JITコンパイルをサポートした新たなRuby処理系をRustとアセンブリで書いている話 - Qiita
                              • 言語処理系にSIMD命令を実装することについて(主にx86向け)

                                私は最近、Haskell処理系であるGHCのx86 NCG (native code generator) にSIMDプリミティブを実装する作業をやっています。LLVMなんかはSIMDに対するいい感じの抽象化を提供しているのですが、それを自前でやろうというわけです。 この記事は、x86のSSE等の命令を使ってSIMDプリミティブを実装する際に使う命令などに関するメモです。「SIMD命令比較」も参考になるかもしれません。 この記事では基本的に128ビット幅のベクトルを想定します。shuffle以外は256ビット幅や512ビット幅に応用するのは難しくないと思います。というか、256ビットとかだとAVXを仮定できるので色々楽だと思います。 基本:GCCやClangの出力を確認する 基本的な方針として、既存のコンパイラーの出力するアセンブリコードを参考にすると良いでしょう。 GCCでは型に __a

                                  言語処理系にSIMD命令を実装することについて(主にx86向け)
                                • 継続を扱えるLispの簡易的な処理系をRubyで実装 - Qiita

                                  プログラミング言語の処理系を実装してみたく思い、LispのようなS式を実行する簡易的な処理系を書いてみました。 「第一級の継続(call/cc)を実装する」というのが一番の目標でした。 ひとまずは動くものができた(と思う)ので、実装するにあたって考えたこと、試したことなどを書き残しておこうと思います。 ソースコードはこちらにあります。 言語を軽く説明 Rubyで実装したS式の簡単な処理系です。 VM(バーチャルマシン)実行方式を採用しました。ソースコードを独自のバイトコードに変換して、それを独自のVMで実行します 扱える値は整数と文字列くらいです。組み込みの関数名などは若干Rubyに寄せています。if、while、変数などは実装してあって、こんなコードが動きます。 (= a 5) (= sum 0) (while (!= a 0) (= sum (+ sum a)) (= a (- a 1

                                    継続を扱えるLispの簡易的な処理系をRubyで実装 - Qiita
                                  • 処理系フレンドリーコードによる「フロントエンド」のコードベース改善のアプローチ — HACK The Nikkei

                                    この記事はNikkei Advent Calendar 2023の 20 日目の記事です. こんにちは. 林仁(Shinyaigeek)と申します. 2022 年に日本経済新聞社に新卒入社して, 今ですと日経電子版 Web 開発チーム全体の開発生産性などの向上のため, フロントエンド基盤の足回りの改善や電子版全体の信頼性向上のために CDN の改善などを担当しています. 本稿では処理系フレンドリーなコードとそのためのガードレールを敷くことによりコードベースを改善するアプローチと, 実際に日経電子版 Web の開発基盤である, k2 で行われた処理系フレンドリーなコードによってフロントエンドのコードベースを改善した事例についてご紹介します. フロントエンド開発における処理系 まずそもそも, ここで言う処理系とは何を指しているのでしょうか?本稿ではフロントエンド開発におけるコードの処理系をスコ

                                      処理系フレンドリーコードによる「フロントエンド」のコードベース改善のアプローチ — HACK The Nikkei
                                    • 【Ruby1.8以前から】Rubyの処理系とJIT【Ruby3.2のYJITまで】 - Qiita

                                      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Ruby3.2 で YJIT がついに実用段階になりました! なので YJIT について理解するために、JIT 導入前の Ruby、MJIT、そして YJIT についてそれぞれどんな特徴があるのか簡単に調べてみました。 Rubyの処理系 最初に Ruby の処理系についてです。処理系、特に 言語処理系 と呼ばれるものは、何らかのプログラミング言語を処理して実行可能にするためのソフトウェアです。Rubyの代表的な処理系は MRI (Matz's Ruby Interpreter) です。C言語で書かれた Ruby なので CRu

                                        【Ruby1.8以前から】Rubyの処理系とJIT【Ruby3.2のYJITまで】 - Qiita
                                      • 数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization

                                        2. 自己紹介 ▪ プログラミング言語処理系の最先端実装技術 inliningとdevirtualization / Kazuaki Ishizaki 2 石崎 一明(いしざき かずあき) http://ibm.biz/ishizaki 1992年3月 早稲田大学理工学研究科修士課程電気工学専攻を修了。 1992年4月 日本アイ・ビー・エム(株)入社、東京基礎研究所勤務。以来、並列化コンパイラ、動的コン パイラ、アプリケーション最適化、などの研究に従事。最近は、AIプロセッサのソフトウェ アスタックの研究開発に従事。現在、同研究所シニア・テクニカル・スタッフ・メンバー 2002年12月 早稲田大学理工学研究科にて、博士(情報科学)を取得。 2008年から2009年まで、IBMワトソン研究所に滞在。 2004年に情報処理学会業績賞受賞。ACM Distinguished Member、情報処

                                          数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization
                                        • 週刊Railsウォッチ(20210209後編)Rubyでミニ言語処理系を作る、Kernel#getsの意外な機能、CSSのcontent-visibilityほか|TechRacho by BPS株式会社

                                          週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙇 TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) 🔗Ruby 🔗 Rubyでミニ言語処理系を作る 元記事: RubyでオレオレVMとアセンブラとコード生成器を2週間で作ってライフゲームを動かした話 -

                                            週刊Railsウォッチ(20210209後編)Rubyでミニ言語処理系を作る、Kernel#getsの意外な機能、CSSのcontent-visibilityほか|TechRacho by BPS株式会社
                                          • usagimaru ⌘ on Twitter: "日本人が想像するよりかなり広い範囲で日本語文字が中華フォント化している現象。CJK処理系における日本語の扱いに対する問題としてそろそろ何とかしていかないと、ソフトウェアの中の日本語が死んでいく危機感がある。そもそもなんでChine… https://t.co/c0smuwwwrG"

                                            日本人が想像するよりかなり広い範囲で日本語文字が中華フォント化している現象。CJK処理系における日本語の扱いに対する問題としてそろそろ何とかしていかないと、ソフトウェアの中の日本語が死んでいく危機感がある。そもそもなんでChine… https://t.co/c0smuwwwrG

                                              usagimaru ⌘ on Twitter: "日本人が想像するよりかなり広い範囲で日本語文字が中華フォント化している現象。CJK処理系における日本語の扱いに対する問題としてそろそろ何とかしていかないと、ソフトウェアの中の日本語が死んでいく危機感がある。そもそもなんでChine… https://t.co/c0smuwwwrG"
                                            • Apache Beamが多言語・多バックエンド処理系を実現する仕組み

                                              ストリーム処理とバッチ処理を統合して扱えるプログラミングモデル(あるいはデータ処理のフロントエンド)である Apache Beam が、特にGoogle Cloud DataflowやApache Flinkからの利用を背景にシェアを伸ばしています。 Apache Beamの特色として、複数のプログラミング言語のSDKを持つこと・複数のバックエンド処理系(Flinkなどを指す)を持つことが挙げられますが、これがどう実現されているのかをまとめます。 目次 前提知識: Beam入門 Exampleコードからざっくり理解 Beamのプログラミング体験 Beamのコードを見てみる Beamにおけるパイプライン実行 Beamのプログラミングモデルをちゃんと理解 前提知識: Beamでは複数種類のバックエンドが使える 前提知識: Beamプログラムは多言語で記述できる 多言語・他バックエンド対応の課題

                                              • プログラミング言語処理系が好きな人の集まり

                                                ようこそ プログラミング言語処理系が好きな人の集まりは、言語処理系に関する話題ならなんでもありな Zulip コミュニティです。 参加したい方へ まずは覗いてみよう Zulip のリンクから中を覗けます。 メンバーとして参加される際はZulip の招待リンクから登録してください。 次は自己紹介 #general で自己紹介をすると良いです。 参加した目的を簡単にまとめれば、他の人がぴったりのストリームを紹介してくれるかもしれません。 ストリーム紹介 #general のほか、#雑談 #質問 #言語 #進捗 #meetup などのストリームがあります。 Scrapbox 情報をまとめるために Scrapbox を開設しました。 定期ミートアップ 有志による定期ミートアップを2週に1回程度開催しています。詳細はこちら 日程や参加の方法などは Zulip の#meetup で告知しています。 過

                                                • 2025年のCommon Lispの処理系はこれだ!

                                                  もともとQiitaで書いていた記事ですが、Qiitaを退会したところすべて消えてしまいました。 あのまとめどこいったの?と訊ねられるので、Zennで復活 SBCL (これがおすすめだ!) 2025年もSBCLが充実の一年ではないでしょうか(2015年から変化なし) 大体月に一度リリースしていますが、途切れることもなく安定しています。 Common Lisp Community Survey 2024では実に全体の87.67%がSBCLユーザーでした。 Common Lisp Community Survey 2024 Results その他の処理系 LispWorks ネイティブコンパイラで速度も高速。周辺ライブラリや処理系の機能は充実しています。 コンパイル速度は、CCLと同等かそれ以上です(cl-bench比較) 日本国内ではマイナーですが、ヨーロッパなどを中心に、マルチプラットフォー

                                                    2025年のCommon Lispの処理系はこれだ!
                                                  • 並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用

                                                    近年ではIoTでエッジ/フォグ・コンピューティングを行う事例が増えてきており,IoTにも計算パワーが求められるようになってきている.そこで,近年,アメリカを中心に注目を集めている開発プラットフォームNervesと,我々が研究開発を進めている並列処理ネイティブコード生成系である Pelemay Super…

                                                      並列プログラミング処理系Pelemayの
ARMアーキテクチャと
IoTプラットフォームNervesへの適用
                                                    • LispKit Lisp処理系の実装 序 - Arantium Maestum

                                                      純粋関数型Lisp方言であるLispKit LispのインタプリタとSECD抽象機械の機械語へのコンパイラを作成する。 タネ本はHendersonの「Functional Programming - Application & Interpretation」で、この本に載っているISWIMやPASCALのコードを大体なぞるようにPythonで書いていく。(最近出た「コンパイラー原理と構造ー」でもSECDマシンへのコンパイルの話題が出ているらしいがまだ届いていないので未確認・・・) 例によって長くなるので複数の記事に分ける。 流れとしては以下のようになる: LispKit Lispの紹介 (本記事) パーサとAST インタプリタ 前編 後編 SECD抽象機械の実装 1 2 3 SECD機械語へのコンパイラ SECD抽象機械ガベージコレクション LispKit Lisp LispKit Lis

                                                        LispKit Lisp処理系の実装 序 - Arantium Maestum
                                                      • Ruby処理系自作入門 - Qiita

                                                        はじめに この記事はRuby Advent Calendar 2020 22日目の記事です。遅刻して申し訳ありません。 Rustという言語でrurubyというRuby処理系の独自実装を作っており、今回はその紹介をします。RustでRubyということでrurubyという安直なネーミングにしましたが、発音しずらい上に本家Rubyと紛らわしく恐れ多いので後悔しております。もう少し技術的なポエムを言語実装Advent Calendar 2020に書きましたので、興味のある方はそちらもご参照頂ければ。 Rustについて Rustは比較的新しいプログラミング言語で、C言語と同様の静的型付け言語です。最新の研究成果を取り入れた柔軟で堅固な型システムと型推論機構を持ち、高速かつメモリ安全・スレッド安全な言語となっています。また、高度な抽象化機能を実行速度を犠牲にしないやり方でうまく取り入れていて、言語処理

                                                          Ruby処理系自作入門 - Qiita
                                                        • RubyKaigi のセッションを楽しむための予習会をした - Ruby 処理系の基礎知識編

                                                          Leaner 開発チームの黒曜(@kokuyouwind)です。 明後日には RubyKaigi 2023 が始まりますね!自分は LT を採択してもらえて 2 番手で話すので、ぜひ聴きに来てください! 前回記事 で紹介したとおり、弊社には今回始めて RubyKaigi に参加するメンバーも数名いるため、社内で RubyKaigi の予習会を行いました。 今回はこのときに話した内容のうち、「Ruby 処理系の基礎知識」の部分を記事にまとめます。 Ruby 処理系の種類 Ruby のソースコードを実行するには Ruby 処理系を利用します。Ruby 処理系にはいくつかの種類があり、それぞれに開発が行われています。 以下に、 RubyKaigi で触れられることの多い処理系をいくつか紹介します。 MRI(CRuby) MRI(CRuby とも呼ばれる)は、 C 言語で実装された、公式の Rub

                                                            RubyKaigi のセッションを楽しむための予習会をした - Ruby 処理系の基礎知識編
                                                          • バッチ処理系の刷新とArgo Workflow移行

                                                            これはPTAアドベントカレンダーの7日目の記事です。 5年間運用されてきたバッチ処理系を刷新し、Argo Workflowを用いたバッチ処理系に移行したのでその紹介記事です。 背景 GKE上でバッチ処理のワークロードを実行しており、ワークフローエンジンとしてDigdagを採用していました。ユースケースとしては定期実行のバッチ処理、ETL、機械学習等。 Digdagを用いたワークフロー定義はシンプルかつ運用に必要な機能を提供してくれています。実際のワークフロー内部の処理としては、ワークフローの各タスクにおいては基本的にはロジックは持たずKubernetes Jobの実行のみを行います。そのためにDigdagとKubernetes Job間で協調動作するための仕組みが独自で用意されていました。このようなバッチ処理系が約5年程運用されてきました。 この仕組で今まで元気に動いてはいたのですが次のよ

                                                              バッチ処理系の刷新とArgo Workflow移行
                                                            • Rubyアソシエーション、Ruby処理系の改善や開発支援ツールなどをテーマにしたプロジェクトを公募、採択されると助成金50万円を支給

                                                              Rubyアソシエーション、Ruby処理系の改善や開発支援ツールなどをテーマにしたプロジェクトを公募、採択されると助成金50万円を支給 プログラミング言語Rubyの普及と発展のための非営利団体であるRubyアソシエーションは、Rubyの処理系やライブラリなどを改善する開発プロジェクトに助成金を提供する「Rubyアソシエーション 開発助成金2024」の公募開始を発表しました。 開発助成金2024の公募を開始しましたhttps://t.co/YTiMYbW9Gn — Ruby Association (@rubyassociation) August 21, 2024 募集する開発テーマは以下のように設定されており、任意の個人や団体が応募できます。 Ruby処理系の改善(高速化、省メモリ化等) 科学技術計算分野におけるライブラリ等 Ruby開発支援ツール(デバッガ、プロファイラ、静的コード解析ツ

                                                                Rubyアソシエーション、Ruby処理系の改善や開発支援ツールなどをテーマにしたプロジェクトを公募、採択されると助成金50万円を支給
                                                              • Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ

                                                                この記事は CAMPHOR- Advent Calendar 2018 4日目の記事です. 1. はじめに プログラミング言語 Python は汎用の動的型付き言語で,機械学習や Web 開発を中心に幅広く使われています.特にここ数年の Python 人気は凄まじいものがあり,某大学生協の本屋では,プログラミング系の平積みコーナーが一面Python 関連書籍で埋め尽くされています.所属しているコミュニティの関係でプログラミング初心者の学生にもよく会うのですが,第一言語が Python という方が非常に多く,まさに猫も杓子も Python といった状況です. そんなわけで,人々がこぞって Python でプログラムを書いているわけですが,「Python 自体がプログラムである」という事実に目を向けたことのある人は非常に少ないと思います.みなさんが Python のプログラムを書いて実行する時

                                                                  Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ
                                                                • 言語処理系がLLVMに依存することの良し悪し | 雑記帳

                                                                  最近のプログラミング言語処理系を見ていると、バックエンドをLLVMに任せているものがちょいちょいあります。Rust, Swift, Juliaなどは一例に過ぎません。 私もプログラミング言語処理系の開発者として、LLVMを使うコンパイラーを触ったりしています。GHCのLLVMバックエンドを触ったり、SML#をAArch64に対応させたり、HaskellからLLVMを呼び出してJITコンパイルしたり、です。 LLVMは強力で便利なのですが、依存することのデメリットも感じるようになってきました。 LLVMに依存することのデメリットその1:追従の手間 LLVMは今も活発に開発が続いているソフトウェアです。半年に一回くらいのペースで新しいメジャーバージョンがリリースされているようです。 LLVMのバージョンが変わると微妙に非互換があったりするので、利用者は特定のバージョンのLLVMを念頭に置いて言

                                                                  • Language Client を作る|Language Server Protocol に対応したミニ言語処理系を作る

                                                                      Language Client を作る|Language Server Protocol に対応したミニ言語処理系を作る
                                                                    • プログラミング言語処理系の作り方 (競プロer向け) - うさぎ小屋

                                                                      TL;DR プログラミング言語処理系は競プロerならパソコン知識がなくてもやるだけで作れる (ただし面倒ではある) はじめに 最近、競プロ界隈で言語処理系の製作が流行っている気がします。 LayCurse さんの cLay は古くからありますが、最近新しく niuez さんの Niu や colun さんの mmlang などが登場しました。 私も Jikka という処理系を作っています。 他にも、まだ未公開のようですが、言語処理系を作っているらしき人を何人か見かけています。 しかし「処理系はどのようにすれば作れるか」や「処理系はどの部分がどのくらい難しいのか」についてはほとんど知られていないように見えます。 たとえば、純粋培養の競プロerにとっては「web アプリを作る」よりも「言語処理系を作る」ことの方がはるかに簡単だと私は思っているのですが、そのように理解している競プロerは少ないよ

                                                                      • RubyによるBrainf**k処理系を1行で! - Qiita

                                                                        概要 Rubyで一行で書くという縛りで、Brainf**kの処理系を書いてみました! n番煎じの極みのような気がしないでもないですが、まあゆるしてちょ。 もっと改善できる余地があるかもしれないですが、もう見たくないです。 ※ 作業環境のRubyのバージョンは以下のとおりです。 Ruby入ってなかったので、とりあえずその時の最新版入れました。 require('io/console');require('optparse');->o,s:((o['s'].nil?)?((!o['f'].nil?)?(File.read(o['f'])):gets(nil)):o['s']),step:o['step']{->t:'><+-.,[]'.split('').zip([*1..8]).to_h,b:(s.split(/\R/).join.split('').each_with_index.redu

                                                                          RubyによるBrainf**k処理系を1行で! - Qiita
                                                                        • 言語処理系コミュニティーでの協働の在り方 | 雑記帳

                                                                          プログラミング言語処理系が好きな人の集まりというコミュニティーがあります。ここは言語処理系を作っている人が多く集まっています。自作言語界隈とも言えます。そこでの話題について、色々と思うところがあったので、記事を書いてみます。 まず、「オレオレ言語界隈も標準化委員会を作って統一した言語を作ってみてはどうですかね?」という意見について。 https://prog-lang-sys-ja.zulipchat.com/#narrow/stream/343500-.E9.9B.91.E8.AB.87/topic/.E3.82.AA.E3.83.AC.E3.82.AA.E3.83.AC.E8.A8.80.E8.AA.9E.E3.81.AE.E6.A8.99.E6.BA.96.E5.8C.96/near/329319086 私としては統一言語はいい考えとは思えません。独自の言語を作る人は、学習用のものを

                                                                          • Goで簡素な Lisp処理系を書いた - Shohei Yoshida's Diary

                                                                            github.com 最近 Goに触れていなかったので復習も兼ねて. 内容としては下記の本に載っている Common Lisp風の簡易 Lisp. 本では Common Lispで書いているので read周りとか楽にできる部分があるのだけれど, Lisp系言語以外だとそんなわけにはいかないのでそこは地道に書いた. あとオブジェクト指向というかクラス継承を使って書かれていた部分を Goっぽく(?)落とし込んで書いた. その他の方針などはだいたい本のまま. 以前もっと簡単なものを Cで書いたことはあったけど, それよりは幾分進んだ内容で適度にいい刺激にはなったかと思いました. 対話によるCommon Lisp入門 作者:栗原 正仁メディア: 単行本

                                                                              Goで簡素な Lisp処理系を書いた - Shohei Yoshida's Diary
                                                                            • 機械語で書くRuby処理系

                                                                              このブラウザ バージョンのサポートは終了しました。サポートされているブラウザにアップグレードしてください。

                                                                                機械語で書くRuby処理系
                                                                              • 画像処理系だと特徴マッチングのSIFTアルゴリズムは特許のせいでようやく最..

                                                                                画像処理系だと特徴マッチングのSIFTアルゴリズムは特許のせいでようやく最近公開になってそれまでオープンソースのライブラリにすら入ってなかったんだよね。まあ類似アルゴリズムあったけどあれコードの中身見れないから研究の妨げだよなあと思った

                                                                                  画像処理系だと特徴マッチングのSIFTアルゴリズムは特許のせいでようやく最..
                                                                                • はじめに|Language Server Protocol に対応したミニ言語処理系を作る

                                                                                    はじめに|Language Server Protocol に対応したミニ言語処理系を作る

                                                                                  新着記事