並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 623件

新着順 人気順

コンパイラの検索結果161 - 200 件 / 623件

  • 「a=10とb=5の平均は7.5です」をmain関数なしで表示する - ぬいぐるみライフ?

    発端 どなたかc言語プログラミングが得意な方、いらっしゃいましたら教えていただきたいです。 簡単な問いでお恥ずかしいのですが、画像の問いの答えを教えていただきたいです。 int型どうしの演算で少数の出し方が分からないです。#c言語 #プログラミング #プログラミング初心者 #プログラミング学習 pic.twitter.com/kLlE8C7eMT— おりがー@ (@takakiriba825) 2019年7月9日 課題 Int a=10; Int b=5; と代入し平均を表示する 「a=10とb=5の平均は7.5です」と画面に表示する 考察 「Int」と書いてあるがこれはtypedef int Int;が必要?とりあえず普通のintでもよいと解釈する。 「Int a=10; Int b=5; と代入し」と言っているが、「代入後aとbを使わなければならない」とは言っていない。 「平均を表示す

      「a=10とb=5の平均は7.5です」をmain関数なしで表示する - ぬいぐるみライフ?
    • 【C】srand(time(NULL))をしても同じ乱数が生成される

      C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

        【C】srand(time(NULL))をしても同じ乱数が生成される
      • ソフトウェア・エンジニアのためのFPGA入門(1) どうしていまFPGAなのか、そしてFPGAとは何か?

        IoTやAIといったテクノロジーの進歩とともに、最近では、これまでハードウェアに触れてこなかったソフトウェア・エンジニアもFPGAを知る必要がある……、としばし論じられるようになってきた。そうした現状を踏まえ、この連載では、なぜソフトウェア・エンジニアがFPGAを学ぶ必要があるのか、FPGAとは何か、またその基本的な仕組みや構造を3回に分けて紹介する。 なぜソフトウェアのエンジニアがFPGAを学ぶ必要があるのか? ソフトウェア・エンジニアがいまからFPGAを学ぶ必要性について定量的に論じることは難しい。FPGAの設計手法やコンパイラ(※1)は日々進歩しており、既存のソフトウェア(※2)をそのままFPGA用にコンパイルできるケースも増えてきた。CPU(※3)とFPGAが搭載されたシステム上で、どのプログラムをどちらのハードウェアで実行するかを最適化する研究も以前から行われており、近い将来、多

          ソフトウェア・エンジニアのためのFPGA入門(1) どうしていまFPGAなのか、そしてFPGAとは何か?
        • プログラミング言語Rustになぜ注目するのか - Qiita

          この記事は NTTコムウェア AdventCalendar 2023 5日目の記事です。 自己紹介&動機 高鶴と申します。NTTコムウェア コーポレート革新本部で、プログラム設計~コーディング~ユニットテストにかかわる技術の社内標準化をやっております。 プログラムの静的な解析で早期にバグを発見・修正することで、後工程でのバグ対処コスト削減(ウォーターフォール開発の場合)や、技術的負債の早期解消(アジャイル開発の場合)を目指す、というのが私のチームの仕事の大きな一部となっています。 静的な解析で早期にバグを発見するツールには、オープンソースでも商用でも様々なものがあります。しかし、ソフトウェアの品質をより抜本的に良くしていこうと思うと、「プログラミング言語を何とかする」というところを考えたくなってきます。 Rustであれば、そのような期待に応えてくれるのではないかと期待し、調査・検証を始めま

            プログラミング言語Rustになぜ注目するのか - Qiita
          • C++23発表:新しいC++標準の登場

            8月6日、C++23はC++20の次の標準として発表されました。 C++23はC++の進化の一環として重要な役割を果たし、C++の機能を改善することを目的としています。 C++23はC++98やC++03ほどの大きな変更はなく、C++17の伝統に則ったものです。 本日、C++コミュニティが待望の次期C++標準、「C++23」を発表した。C++は長い歴史を誇るプログラミング言語であり、C++23はその進化の中でも特に重要な節目となる。C++23はC++98やC++11、C++20ほどの大規模な変更は見られないが、C++17の伝統を継承している。 C++の歴史的進化 C++は1980年代末にBjarne Stroustrup氏とMargaret A. Ellis氏によって執筆された「Annotated C++ Reference Manual (ARM)」によって誕生した。この書籍は当時多数存

              C++23発表:新しいC++標準の登場
            • 自作プログラミング言語と WebAssembly コンパイラ

              Photo by Lukas Tennie from unsplashはじめにこのエントリでは、僕が趣味で作っている PicoML という自作プログラミング言語の話を書こうと思う。 作ってから半年くらい経っているのだけれど、如何せん自作言語という無用の長物であり、登壇などでコイツの話をすることもないため、ある種の供養みたいなものだと思ってもらって構わない。 PicoML の概要まずは実装した言語の紹介から。ざっくり以下の特徴を備えた言語である。 ML ベースの文法による関数型言語単純 let 多相型推論による型チェックCLI として、Node.js 上での即時評価器(REPL)と WebAssembly をターゲットにしたコンパイラの双方を提供REPL やコンパイラの実装は TypeScript で行っている。自分の勉強が主目的であったため、REPL やコンパイラの CLI を動作させるの

                自作プログラミング言語と WebAssembly コンパイラ
              • C言語で0からニューラルネットワークを自作してみた - Qiita

                2023/06/23追記: 頂いたコメントを元にコードを修正しました。主に直した点は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1.静的なメモリを用いることでMNIST全てを用いて学習が行えるようにしました。 (通常のメモリだとオーバーフローしてしまいますが、静的にメモリを取ることで大容量のデータを扱えるようになりました) 2.変数の初期化を明示しました。 3.正解率の求め方を改めました(間違った計算をしていました) その他軽微なミスを修正しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー こんにちにゃんです。 水色桜(みずいろさくら)です。 今回はC言語を用いてニューラルネットワークを自作して、MNISTを分類してみようと思います。 今回作成したモデルの精度を以下に示します。 10回の学習で55.0%の精度を達

                  C言語で0からニューラルネットワークを自作してみた - Qiita
                • C++コンパイラはあなたよりも良いコードを書く - Qiita

                  最適化 皆さんご存じの通りC++という言語は速度しか取り柄がありません。複雑怪奇な構文、異常量のコンパイルエラー、何が起きるかわからない未定義動作たち、、、それでもなお私たちがC++を使い続けるのは、そう、極めて速いからです。ちょっと前に流行ったD言語や最近流行りのRustが速いという噂ですが、結局ほとんどの場面で速度においてC++に勝ててはいません。個人的な偏見ですがC++のように速度のみを重視し、安全性を捨てない限りRustに未来はないでしょう。まあ、人から聞いた噂によるとRustの標準ライブラリの中身はunsafeなコードが敷き詰められているらしく、なかなか速いようですが。いずれRustが廃れてUnsafe Rustの方が人気が出たりするかもしれませんね。とりあえず、最も速度面で優れている言語はC++といっても過言ではないでしょう。 そして、その圧倒的な速度を支えるのが何といってもC

                    C++コンパイラはあなたよりも良いコードを書く - Qiita
                  • TypeScript Compiler APIを使って型を中心に実装を自動生成する - ドワンゴ教育サービス開発者ブログ

                    この記事は、ドワンゴアドベントカレンダー2020の10日目の記事です。 qiita.com はじめに ベルリシア(@berlysia) という名前で活動しています。Webが好きです。ドワンゴでは、N予備校をはじめとする教育事業のWebフロントエンド開発をしています。 この記事では、Webフロントエンドチームの実際の開発で用いた、TypeScript Compiler APIを使っての型を中心とした実装の自動生成事例を紹介します。考察パートが中心で、コードはほぼ出てきません。 状況説明 管理画面の開発です。検索と結果一覧とCRUD操作が中心で、多くの画面が定型的な実装です。画面数が多いため、いかにこうした定型的な画面を効率よく開発して複雑なところに注力するかが、この開発を成功させるカギとなります。また、人員的にもある程度の並列性を確保している状態です。 APIはOpenAPIで仕様が提供され

                      TypeScript Compiler APIを使って型を中心に実装を自動生成する - ドワンゴ教育サービス開発者ブログ
                    • 自作コンパイラ基盤の話 - Qiita

                      これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下

                        自作コンパイラ基盤の話 - Qiita
                      • Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ - Techtouch Developers Blog

                        はじめに インライン展開 インライン展開とは 高階関数のパフォーマンスが落ちる例 インライン展開の制約 エスケープ解析 エスケープ解析とは 高階関数のパフォーマンスが落ちる例 さいごに 参考文献 はじめに 先々月にも Go コンパイラの最適化に関するブログ記事を書いたのですが、多くのブックマークを頂けて感謝です! SRE の izzii です。 github.com 上のドキュメントを参考にしつつ Go コンパイラの最適化に関する記事を連載していきます。本記事は 2 本目です。 [第 1 回] Goコンパイラのお勉強(1)~ゼロ幅の型によるメモリ利用の最適化と未定義動作~ [本記事] Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ [第 3 回] Goコンパイラのお勉強(3)~配列の効率的な操作に関する最適化~ 文字数の関係でタイトルでは高階関数という言葉を

                          Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ - Techtouch Developers Blog
                        • TypeScriptコンパイラの読み方

                          TypeScriptコンパイラリーディングをする上で、目当てのコードに辿りつくまでの手間を短縮するためのメモ書きです。コードリーディングの一般論や、TypeScriptコンパイラから読み取れる個別事象については極力省略しています。 TypeScriptの主要な処理系 多くのJavaScriptパーサーが拡張としてTypeScriptを読めるようになっています。また抽象構文木のフォーマットに事実上の標準があり、各パーサーはそれに従っています。AST Explorerでこれらのパーサーの出力を調べることができます。特に重要なのが以下の2つの処理系です。 TypeScript TypeScriptの型推論・リント・トランスパイル・モジュールバンドリング等ができる。 Babel TypeScriptのトランスパイルができる。 TypeScriptコンパイラの構成 libに標準ライブラリ (型定義フ

                            TypeScriptコンパイラの読み方
                          • Sorbet Compiler: An experimental, ahead-of-time compiler for Ruby · Sorbet

                            For the past year, the Sorbet team has been working on an experimental, ahead-of-time compiler for Ruby, powered by Sorbet and LLVM. Today we’re sharing the source code for it. It lives alongside the existing code for Sorbet on GitHub, mostly in the compiler/ folder: → https://github.com/sorbet/sorbet/tree/master/compiler/ We want to be clear up front: the code is nowhere near ready for external u

                              Sorbet Compiler: An experimental, ahead-of-time compiler for Ruby · Sorbet
                            • さらばAPI、Twitter専用ガジェット「TW BOY」を作って遊ぶ|fabcross

                              2023年2月、Twitter APIの有料化が発表された。私も個人制作者としてTwitter APIを使ったサービスを作っていたことがあるので、一時代の終わりを感じて、しみじみとした気分になってしまった。 有料化されるまでは、まだ少し時間があるようだ。最後にTwitter APIを使った何かを作ってみたい。せっかくなので、個人でしか作れないようなものがいい。専用ガジェットなんてどうだろうか? Twitter専用ガジェットを作る Twitter APIみたいなWeb APIは、いきなり仕様が変わることがあるのでガジェットとの相性が悪い(ファームウェア更新が必要になる)。かつてタカラトミーから「ついまる」という、ツイートを音声で読み上げるおもちゃが発売されていたけれど、これも現在では使用不可能になっている。 だがここで、あえて専用ガジェットである。単に私の趣味の問題でもあるのだけど、「それし

                                さらばAPI、Twitter専用ガジェット「TW BOY」を作って遊ぶ|fabcross
                              • 【寄稿】独自言語のコンパイラをLLVM backendを用いて作る「ミニキャン言語を作ってみよう!」講義録 - Flatt Security Blog

                                はじめに 弊社Flatt Securityでは学生の学びを支援したいという想いから今回少額ではありますが高橋さんの留学を支援させていただき、そのご縁で弊社のYONEUCHI, Takashi (@lmt_swallow) | Twitterもスタッフを務めるセキュリティミニキャンプにおける素晴らしい講義の内容をテックブログに書いていただけることになりました。以下本文になります。 @00_ です。今年の夏のUC Berkeleyへの留学費用をFlatt Securityさんに支援して頂いた経緯で、セキュリティミニキャンプの講義内容についてテックブログで書くことになりました。 2019/09/28-2019/09/29 のセキュリティミニキャンプ山梨で「ミニキャン言語を作ってみよう!」の講座を行いました。この講座では、「ミニキャン言語(MC言語)」という独自言語のコンパイラを、自分がコミッタで

                                  【寄稿】独自言語のコンパイラをLLVM backendを用いて作る「ミニキャン言語を作ってみよう!」講義録 - Flatt Security Blog
                                • Facebook、プログラムコードを別のプログラミング言語に翻訳する「TransCoder AI」を開発 - BRIDGE(ブリッジ)テクノロジー&スタートアップ情報

                                  FacebookはC++、Java、Pythonなどの高水準言語で書かれたプログラムコードを別のプログラミング言語に変換するニューラルトランスコンパイラを開発したという。このシステムは教師なし学習を採用しており、同社は従来よりもかなり効率が改善したとしている。 既存のプログラムコードを別の言語に移行するには、両方の言語について専門的な知識が必要な上、コストがかかってしまいがちだ。たとえばオーストラリアのコモンウェルス銀行はプラットフォームをCOBOLからJavaに移行するために5年の歳月と約7億5,000万米ドルを費やした。 Facebookは教師なし学習というアプローチ法に取り組み、C++、Java、Python間でソースコードを変換することができる「TransCoder」を開発した。トレーニングには280万件以上のオープンソースリポジトリからなるGitHubコーパスを使用した。Tran

                                    Facebook、プログラムコードを別のプログラミング言語に翻訳する「TransCoder AI」を開発 - BRIDGE(ブリッジ)テクノロジー&スタートアップ情報
                                  • Gradle/Kotlinで開発する私的ベストプラクティス2022 - Kengo's blog

                                    こちらのエントリーが素敵だなと思ったので、最近書いてるKotlinプロジェクトのベストプラクティスをまとめてみます。一部はJavaプロジェクトにおいても利用できるはずです。 zenn.dev 基本方針 参加障壁を下げる。OSSプロジェクトでもプロプライエタリ・ソフトウェアプロジェクトでも、新しい開発者が参加するコストを下げることには大きな意義がある。 環境差異を吸収する。javaにPATHが通ってさえいればOSに関係なくビルドが通るようにする。 プロジェクト固有ルールを作らない。Conventional CommitsやKeep a changelogなど、ひろく世に使われているルールを採用する。 Gradleを設定する Spotlessを使う コードのフォーマットはformatterに任せて人間は細かいことを考えない、というのが不特定多数が参加するソフトウェアプロジェクトのあるべき姿だと

                                      Gradle/Kotlinで開発する私的ベストプラクティス2022 - Kengo's blog
                                    • アメリカに留学に来て1年が経った - pco2699’s blog

                                      アメリカに来て1年が経ったので、1年で思い出深かったことなどをざっと振り返ろうかと思う。 2023春 2023夏 これから アメリカに来た過去の経緯などは以下を参照。 blog.pco2699.net blog.pco2699.net 2023春 2023春は今振り返っても「コンパイラデザイン」という授業が地獄だった、という記憶しかない。 www.cs.cmu.edu コンパイラデザインはCMUの中でOSと双璧をなす、課題がエグい授業として有名なのだが、噂通りであった。 www.quora.com The work is spread fairly evenly throughout the semester; each assignment is similarly sized, and they all have the same amount of time, roughly. It

                                        アメリカに留学に来て1年が経った - pco2699’s blog
                                      • RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog

                                        RubyKaigi 2023でRuby JIT Hacking Guideというタイトルで発表してきた。 speakerdeck.com JITコンパイラを書くチュートリアル 今回の発表ではJITコンパイラが書ける人間を増やすことをゴールにしていたが、 30分という短い発表枠内では雰囲気を知ってもらうことにフォーカスし、 実際に手を動かしたい人たちにはそれ用のチュートリアルを触ってもらう形を取った。 github.com JITコンパイラは実は初心者向き 独学でコンパイラの作り方を学ぶ人は、Cコンパイラなどを実装することが多いように思う。 C言語は実装対象として一見シンプルそうに見えて実は結構機能が多いので、C11をゴールに始めてもC89の範囲すら実装しきらないままエターなる人も多いのではないか。 そんな僕みたいな堕落した人間にお勧めなのがJITコンパイラ。 インタプリタと併走する特性上、

                                          RubyKaigiでJITコンパイラの書き方について発表した - k0kubun's blog
                                        • Rustとアセンブリで実装された新たなRuby処理系 JITコンパイルをサポートして速く動く「monoruby」

                                          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」
                                          • 静的型付きスクリプト言語 Cotowali

                                            この記事は未踏2021採択者アドカレ! の 23 日目の記事です。 Cotowali について Cotowali は、2021年度未踏に「シェルスクリプトへのコンパイルを行う静的型付けスクリプト言語の開発」のテーマで採択され、現在開発中のスクリプト言語です[1] Cotowali コンパイラは V言語で記述されています。Vコミュニティ公式ではないプロジェクトとしては規模が大きく、V言語コンパイラのバグ発見にも貢献しています[2]。 コンセプト POSIX 準拠シェルスクリプトへのトランスパイル シェルスクリプトの機能を取り入れながらも、一般的な言語に近く理解しやすい文法 シンプルな静的型付け ちなみに、Cotowali はあくまでシェルスクリプトをバックエンドに使う新規のスクリプト言語であり、シェルスクリプトに型をつけるものではありません。 静的型付けではありますが、型システムはごく簡易な

                                              静的型付きスクリプト言語 Cotowali
                                            • MLIR がもたらす新たな中間表現の可能性

                                              はじめに 半導体の微細化が鈍化し、ハードウェアによる高速化が困難になっている現状において、ソフトウェアによる計算の高速化が喫緊の課題となっています。この状況において、特定のドメインの問題を解くことに最適化された言語であるドメイン固有言語と、そのコンパイラであるドメイン固有コンパイラの活用が望まれています。 ドメイン固有コンパイラの構築の際には、開発を容易にするために、既存のコンパイラ基盤であるLLVMを活用することが考えられます。しかし、LLVM はドメイン固有コンパイラの構築にはあまり向きません。この理由は、LLVM の成功と表裏一体の関係にあります。 LLVM が成功した理由は、コンパイラの処理を適切に分割し、独立したモジュールとして機能させたことにあります。このモジュール化において中心的な役割を果たしているのが、LLVM で用いられる中間表現(Intermediate Represe

                                                MLIR がもたらす新たな中間表現の可能性
                                              • moldを使うとRustのビルドが速くなる | κeenのHappy Hacκing Blog

                                                このエントリはRust Advent Calendarの2日目の記事です。 空いてる日を埋める担当のκeenです。2日目が空いてたので遡って記事を投稿します。 最近v1.0.0がリリースされたリンカ、moldを使うとビルドが高速化するよというお話です。 Rustのビルド、特にインクリメンタルビルドにおいてはRustコンパイラの速さと同じくらいリンカの速度がコンパイル時間に影響します。 この最後のバイナリを作る時間は意外と効いてきます。 具体例としてActix Webにあるexample、 basic をインクリメンタルビルドする例をみてみましょう。 この basic はたった42行の小さなアプリケーションです。 ただし、依存に Actix Webという巨大なライブラリを使っているので最終的なバイナリには非常に多くのコードが含まれます。フレームワークを使ってアプリケーションを開発してるときに

                                                  moldを使うとRustのビルドが速くなる | κeenのHappy Hacκing Blog
                                                • 23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。PCについては何も分かりません。始めたC言語も難しいです。一日中勉強すべきですか?何から始めればいいですか…諦めた方がいいですか?

                                                  回答 (16件中の1件目) いろいろ気になった質問だったので、回答したいと思います。(長文となりますこと、ご容赦ください。) 「23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。」とありますが、23歳でそのような気持ちになられたことが素晴らしいです。(私はその当時はただ流されるまま就職できるところに就職して、ただ会社員になってましたので。。。) なので、今更ではないと思いますので、頑張ってください。 あと、「諦めた方がいいですか?」という質問には、きっと誰も回答してくれないと思いますし、書かないほうが良いと思います。 なぜなら、その人がどのような職につきたいのか...

                                                    23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。PCについては何も分かりません。始めたC言語も難しいです。一日中勉強すべきですか?何から始めればいいですか…諦めた方がいいですか?
                                                  • mold: modern linker

                                                    mold: modern linker Rui Ueyama

                                                      mold: modern linker
                                                    • 人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】

                                                        人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】
                                                      • 「Chromium開発に興味あるエンジニア探してます」ブラウザ開発の仕事ってどんな感じか聞いてみた

                                                        テックカンパニーをテックカンパニーたらしめているものはなにか?技術か、人か、それともチームなのか。 連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。 様々なデバイス上で動くブラウザを開発するのが仕事です 白石: 本日はよろしくお願いします。自己紹介からお願いできますでしょうか? 梅田: 梅田と申します。株式会社ACCESSで、webブラウザ開発事業のマネージャーを担当しています。 白石: ブラウザ開発を生業にしている、ってすごいですよね。珍しいというか。 梅田: はい、日本だと唯一…かどうかはわかりませんが、相当珍しいと思います(笑) 白石: それで上場までされているというのもすごい

                                                          「Chromium開発に興味あるエンジニア探してます」ブラウザ開発の仕事ってどんな感じか聞いてみた
                                                        • Javaに革命を起こすGraalVM Native Image

                                                          Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                                            Javaに革命を起こすGraalVM Native Image
                                                          • Rust + LLVMでプログラミング言語を自作してセルフホスティングした話

                                                            llrlは自作のプログラミング言語です。大きな特徴が2つあります。 Hindley-Milnerベースの型推論による静的型付け (+型クラス) Lisp-likeなS式によるシンタックスとLLVM JITによるマクロ この言語の処理系をRustとLLVMを用いて実装し、それをllrl上に移植してセルフホスティングを試みました。無事セルフホスティングを達成したので、取り組んだことやモチベーションなどを順に振り返りたいと思います。 LLVMについては、フロントエンド側・バックエンド側ともに既にいくらかの解説記事が見られるため、概要は省略します。今回は新たなプログラミング言語のバックエンドとしてLLVMを用いるので、LLVMのフロントエンド側の実装がメインとなります。 事の発端: LLVM Kaleidoscopeチュートリアル Kaleidoscopeは、LLVMのチュートリアルにおいて実装す

                                                              Rust + LLVMでプログラミング言語を自作してセルフホスティングした話
                                                            • C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog

                                                              先に概要を書くと caseの値は連番かつ昇順(上から小さい数で下に行くほど増えていく)となるように心がける。ある程度caseが多ければあとは勝手にコンパイラがテーブルジャンプ最適化を行う。 goto文やreturn文などでswitch文途中から抜けないようにする。あるとテーブルジャンプ最適化が行われない。 MSVC(Visual Studio)でコンパイルする場合、default:の箇所に__assume(0);と記述すれば上記二つを無視して強制的にテーブルジャンプ最適化が行われる。ただし、goto・return等でのswitch抜けがあるまま実行すると例外エラーが発生する。 追記:上記の__assume(0)はC++23から「std::unreachable()」で標準化 FM TOWNSエミュレータ「津軽」を弄っていて、どうもエミュレーターの実行速度が既にあるTOWNSエミュレータの「

                                                                C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog
                                                              • Pythonを高速化する「Codon」コンパイラを使ってみた | DevelopersIO

                                                                データアナリティクス事業本部のueharaです。 今回は、Pythonの実行がシングルスレッドで従来の10~100倍以上高速化すると言われている「Codon」というコンパイラを使ってみたいと思います。 Codonの概要 Pythonは世界的にも広く使われている言語であり、シンプルでわかりやすい文法や豊富なライブラリ、拡張性など、多くの利点があります。 しかし、その一方で、Pythonの実行速度に課題があるという指摘は皆さんも一度は耳にしたことがあるかと思います。 この課題を解決すべく、MITの研究者らが開発した「Codon」について紹介したいと思います。 Codonは、ランタイムのオーバーヘッドなしで Pythonのコードをネイティブなマシン語にコンパイルする高性能なPythonコンパイラです。 Codonを使うとシングルスレッドでも十分な高速化を行うことができますが、マルチスレッドもサポ

                                                                  Pythonを高速化する「Codon」コンパイラを使ってみた | DevelopersIO
                                                                • YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022

                                                                  Rust.Tokyo 2022

                                                                    YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022
                                                                  • Introducing Ezno

                                                                    Introducing EznoPublished on Thursday 22nd September 2022 Ezno is an experimental compiler I have been working on and off for a while. In short, it is a JavaScript compiler featuring checking, correctness and performance for building full-stack (rendering on the client and server) websites. This post is just an overview of some of the features I have been working on which I think are quite cool as

                                                                      Introducing Ezno
                                                                    • Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に

                                                                      性能テストの標準化団体の1つで、公平なベンチマークを行うために設立された非営利組織・SPECが、「Intelが自社プロセッサのベンチマーク結果を水増しするために特定のベンチマークのスコアを向上させるような最適化を行い、スコアを最大で9%水増ししていた」として、Intelプロセッサのベンチマーク結果2600件以上を事実上無効化しました。 Targeted Intel oneAPI DPC++ Compiler Optimization Rules Out 2k+ SPEC CPU Submissions - Phoronix https://www.phoronix.com/news/oneAPI-DPC-Compiler-Cheat-SPEC Impact of Intel Compiler Optimizations on SPEC CPU2017 Example https://www

                                                                        Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に
                                                                      • 次期C標準 (C23) の内容が固まったらしい

                                                                        C23については最近のC言語と、次期C標準(C23)でも軽く紹介しました。 今回、C23入りする内容が大体固まったようなので改めて紹介します。 この記事を書いている時点での最新の公開されたWorking Draftは N2912 N3047 N3054 N3096です。ただし、C2y向けの最初のドラフトN3220もあり、そちらの方が実際の内容に近いかもしれません。 内容については会議参加者の投稿も参考にしています: https://twitter.com/rcs/status/1550526425211584512 C23 now finalized! : C_Programming というわけで、C23に入る主な機能はこちらです: C23に入る主な機能 POSIXの機能の取り込み: strdup, strndup, memccpy, gmtime_r, localtime_r C++の機

                                                                          次期C標準 (C23) の内容が固まったらしい
                                                                        • Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング

                                                                          この記事は、Merpay Tech Openness Month 2023 の2日目の記事です。 メルペイFrontendエンジニアの@togami2864です。普段はPartner Platformというチームで加盟店申込みフォームや審査・管理を行うためのMerchant Supportツールの開発・運用を担当しています。 本記事ではRust製TypeScriptコンパイラであるstcについて筆者の観測範囲での概要、開発状況、課題等を紹介します。なお、内容は全て2023年5月時点のものです。また、本記事の一部は Node学園 41時限目 書籍について で発表したものと重複していることをご了承ください。 概要 stcは2022年10月にオープンソース化されたRust製のTypeScriptコンパイラです。 https://github.com/dudykr/stc 製作者はRust製のトラ

                                                                            Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング
                                                                          • MIR: A lightweight JIT compiler project | Red Hat Developer

                                                                            For the past three years, I've been participating in adding just-in-time compilation (JIT) to CRuby. Now, CRuby has the method-based just-in-time compiler (MJIT), which improves performance for non-input/output-bound programs. The most popular approach to implementing a JIT is to use LLVM or GCC JIT interfaces, like ORC or LibGCCJIT. GCC and LLVM developers spend huge effort to implement the optim

                                                                              MIR: A lightweight JIT compiler project | Red Hat Developer
                                                                            • Nimを知ってほしい - Qiita

                                                                              なんでこんなのを書いているのか Nimを趣味で使っているのですが、「Nim?なにそれ?」みたいな話を何度もするのが疲れたのでURL投げつければ済むようにしたいからです。 F#を知ってほしいに敬意を。 ※Nim使いの人もマサカリ(というかアドバイス)とかあればください。 ※Nimの概説が面倒なときに参照先として使ってください。 ※medyさんの記事Nimを知ってほしい2022もオススメです。 Nimとは, なぜNimなのか ざっくりと説明すると、 静的型付けで型安全な上にPythonっぽい構文でコード量も少なく済む「効率的、表現力豊か、エレガント」なプログラミング言語です。 コンパイラが優秀すぎて、勝手に最適化して実行バイナリのサイズを小さくしてくれるし速い。 誤解を恐れずに表現するなら「Pythonの皮を被ったC/C++」。 詳細はWikipedia読んだほうがいいです。引用(https:

                                                                                Nimを知ってほしい - Qiita
                                                                              • モダンJSの一時代を築いたBabelから学ぶトランスパイル

                                                                                はじめに 今回この記事を書こうと思ったのは、JavaScriptのパーサ関連の記事が定期的に投稿される中で、 ESTreeの話はよく出てきていて反響がありそうだけれど、それを利用したツールは実際にどのようにコードを解析しているかが詳しく書かれている記事が少ないなあと思ったためです。 この記事では、トランスパイラとしてモダンJSの一時代を築いたBabelを例にトランスパイルについて、詳しく解説できたらと思います。 詳しい仕様などは日本語訳がされたハンドブック もありますが、 あいまいな訳になっているため、英語版のハンドブックをわたしはお勧めします。 記事の対象者 JavaScriptやTypeScriptを利用している JavaScriptなどのコードは書けても実際にブラウザでどのように実行されているか気になる JavaScriptなどのパーサや言語処理、トランスパイラ、コンパイラに興味があ

                                                                                  モダンJSの一時代を築いたBabelから学ぶトランスパイル
                                                                                • 書籍「コンパイラ 作りながら学ぶ」を読みながら JavaScript でコンパイラを実装してみた - Qiita

                                                                                  はじめに この記事では、中田育男著「コンパイラ 作りながら学ぶ」(オーム社) に出てくるプログラミング言語 PL/0' を JavaScript で実装します。 コンパイラ 作りながら学ぶ この書籍ではシンプルなプログラミング言語 PL/0' コンパイラをC言語で実装したソースコードが巻末に掲載されており、それをもとにコンパイラの理論が説明されています。書籍では完成系のコードが一度に示されていますが、この記事では最小限のサブセットを設定して、徐々に拡張していきながら処理系を完成させます。 対象読者 この記事は以下のような人をターゲットに書かれています。 「コンパイラ 作りながら学ぶ」の本文を一通り読んだ上で、巻末のコードを理解しようとしたものの途中で挫折した人 「コンパイラ 作りながら学ぶ」はもともと1995年に「コンパイラ」というタイトルで出版されていた本の改訂版です。私は改訂前の本を高

                                                                                    書籍「コンパイラ 作りながら学ぶ」を読みながら JavaScript でコンパイラを実装してみた - Qiita