並び順

ブックマーク数

期間指定

  • から
  • まで

121 - 160 件 / 1099件

新着順 人気順

compilerの検索結果121 - 160 件 / 1099件

  • Go でトランザクションをフルスクラッチで実装した - kawasin73のブログ

    一歩ずつ一歩ずつ前へ進んでいく、確実に。どうも、かわしんです。 到底 1 記事に収まるような内容ではなく長いので、トランザクションの作り方に興味のない方は途中の「なぜ Go なのか」まで読んでいただければ嬉しいです。 この記事は、Go2 Advent Calendar 2019 の 7 日目と セキュリティキャンプ 修了生進捗 #seccamp OB/OG Advent Calendar 2019 の 7 日目を兼用しています。 さて、僕の興味は必要になったライブラリやミドルウェアなどを自作して、作りたいプロダクトを完成させることです。必要なコンポーネントがないからといってプロダクトを作るのを諦めたり妥協したりはしたくありません。 多くのアプリケーションではデータベースは重要なコンポーネントです。大抵のアプリケーションは MySQL や Postgres、Redis など既存のデータベース

      Go でトランザクションをフルスクラッチで実装した - kawasin73のブログ
    • Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena

      オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基本要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含

        Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena
      • 「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル - Explore cs in depth!

        目次 目次 概要 本題 私がこの本を購入した理由 数ある言語処理系の技術書でも恐らく最も初歩的 Goは現在恐らく最も可読性が高い言語 何故オススメ? プログラミングの本質が見えるから 単純にコード量が多いのでやってて楽しい テスト駆動開発 読者の為に残された多くの課題 総評 おまけ 概要 ※注意 Go言語でつくるインタプリタ 作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2018/06/16メディア: 単行本(ソフトカバー)この商品を含むブログを見る こちらの本を読み終わりました(付録以外)。 言語処理系に興味を持った衝動で買った本ではありましたが、 今まで読んだ本でもトップレベルで完成度の高いものだったので、 ここで紹介しておきたいと思います。 簡単に良いところをまとめておくと、 プログラミングの抽象的な概念をより深く学べる これは言語処理系

          「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル - Explore cs in depth!
        • WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも

          WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも 「Bytecode Alliance」は、WebAssemblyをWebブラウザだけでなく、デスクトップPCやサーバ、IoTデバイスなどあらゆる環境で、セキュアに実行することを目指している団体です。 Fastly、Mozilla、Arm、Google、マイクロソフト、インテルをはじめとする企業や団体が名前を連ねています。 参考:WebAssemblyをあらゆるプラットフォームでセキュアに実行できるようにする「Bytecode Alliance」発足。インテル、Mozilla、Red Hatなど 同団体は「WASI」と呼ばれる、どのOSやホストシステムでWebAssemblyモジュールが実行されたとしても、安全かつ透過的

            WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも
          • Rust によるデスクトップアプリケーションフレームワーク Tauri | 豆蔵デベロッパーサイト

            Tauri はクロスプラットフォームデスクトップアプリのための Rust によるフレームワークです。Electron と同様 Web 技術でアプリの UI を構築します。 Build smaller, faster, and more secure desktop applications with a web frontend | Tauri Studio 記事執筆時点で v1.0.0-rc.5 (Pre-release)、もうすぐ v1.0 がリリースされそうなところです。 Release v1.0.0-rc.5: Apply Version Updates From Current Changes (#3468) · tauri-apps/tauri Electron と比べて、インストーラーのサイズ、メモリ消費量、起動時間などが圧倒的に小さいと謳われています。 https://gi

            • rust.tokyo のまとめ・感想 - mizchi's blog

              このブログを書いてる経緯 rust.tokyo 楽しみ!絶対行く!といってたのに申込みを忘れたところ、じゃあスタッフとしてブログを書けという話になったので、ブロガー枠?らしく感想を書きます。とはいえ書けるのは見たやつだけです。 https://rust.tokyo/sessions# 前提 自分は低レベルプログラミングは詳しくないです。年に3日ぐらい思い出したように Rust 勉強することがある。 wasm 周りのエコシステムはずっと追ってる。 会場の雰囲気 組み込み勢とブロックチェーン勢が多そうな気配を感じた。 Visualization of mechanical CAD drawings using WebAssembly and WebGL Aki / CADDi (発表資料見つからず) 概要 Computer aided design (CAD) models used in m

                rust.tokyo のまとめ・感想 - mizchi's blog
              • Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ

                Ruby 開発チームに4週間インターン生として参加いたしました、永山 (GitHub: NagayamaRyoga) です。 私は「Ruby中間表現のバイナリ出力の改善」という課題に取り組み、Railsアプリケーションのコンパイルキャッシュのサイズを70%以上削減することに成功しました。以下ではこの課題の概要とその成果について述べたいと思います。 InstructionSequenceの概要 まず、RubyVM 内で実行される命令の中間表現、InstructionSequence (以下 ISeq と省略) について簡単に説明します。 通常の Ruby プログラムは、以下のような手順で実行されます。 ソースコードを構文解析し、抽象構文木を作る。 抽象構文木をコンパイルして、ISeq を作る。 RubyVM (YARV) で ISeq を解釈し、実行する。 ISeq は、このように Ruby

                  Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ
                • Rustソースコードのざっくりとした歩き方 🦀

                  https://techfeed.io/events/techfeed-experts-night-24

                    Rustソースコードのざっくりとした歩き方 🦀
                  • Python 競技プログラミング高速化tips (PythonでAtcoderをやる際に個人的に気を付けてること) - じゅっぴーダイアリー

                    こんにちは。最近やよい軒の彩定食にハマってるじゅっぴーです。 自分の確認と最近Pythonで競技プログラミング始めたよーという人向けを兼ねたPython高速化記事です。 競技プログラミングはAtcoderを想定しています。 はじめに Pypyを使う! みんな一度は通る道 Pypy一択なもの Pypyじゃだめなもの Python定数倍高速化のテクニック 最後に はじめに 今回の今の時点でのA問題の言語別提出コード数、 全体: 7000 C++: 3240 Python3: 2000 って感じで75%くらいがC++とPython3で提出されてる— saba (@saba_kpr) 2019年5月25日 最近PythonでAtcoderをはじめている人がどんどん増えています。 一方で『Pythonの高速化テクニック:C++で書き直す。』というネタがあるほど、Pythonは劇遅です。 競技プログラ

                      Python 競技プログラミング高速化tips (PythonでAtcoderをやる際に個人的に気を付けてること) - じゅっぴーダイアリー
                    • Webassemblyコンパイラを自作しよう

                      この記事はBuild your own WebAssembly Compilerを翻訳・意訳したものです。また独自の説明を加えた部分もあります。 前置き もしあなたがWebAssemblyについて聞いたことがなく、本当に詳しい紹介をしてほしいのであれば、Lin Clark氏のCartoon Guideを読むことをお勧めします。 このブログ記事ではWebAssemblyが「何か」を学ぶことができますが、「なぜ存在するのか」についても簡単に触れておきたいと思います。 私の視点では、この図が非常に簡潔にまとめられています。 上の図は、ブラウザ内での JavaScriptコードの実行を簡略化したタイムラインです。左から右に向かって、コード(一般的にはminifyされた状態で提供されます)は AST に解析され、最初はインタプリタで実行され、徐々に最適化/再最適化されて、最終的には非常に高速に実行さ

                        Webassemblyコンパイラを自作しよう
                      • Rust言語でAndroidはより強固・安全に ~GoogleがOS開発への導入を進める/C/C++コードの完全な置き換えは非現実的だが、新規コードへの活用は不具合の予防に効果あり

                          Rust言語でAndroidはより強固・安全に ~GoogleがOS開発への導入を進める/C/C++コードの完全な置き換えは非現実的だが、新規コードへの活用は不具合の予防に効果あり
                        • POSIXコマンドは「どの環境にもあるコマンド」ではないよという話 - Qiita

                          はじめに POSIX コマンドはどの環境にもある(追加インストールの必要がない)コマンドだと思われがちですがこれは間違いです。POSIX コマンドにどの環境にもあるという性質は有りません。POSIX コマンドの中でどの環境にもあるコマンドは実際には半分程度しかありません。 関連記事 POSIX準拠 とは本当はどういうことなのか?「POSIXで規定されたものだけを使う」ではありません 補足 Linux は POSIX に準拠してないからだという意見もあるかとは思いますが、現実に使われている環境を無視して「どの環境にもある」と主張しても意味はありません。 本当にどの環境にもあるコマンドとは? 全 POSIX コマンドは 160 個 POSIX コマンドは全部で 160 個あります。そのうち 22 個はシェルにビルトインされているコマンドなのでどの環境にもあると言えます。残りは 138 個のコマ

                            POSIXコマンドは「どの環境にもあるコマンド」ではないよという話 - Qiita
                          • A Modern C Development Environment

                            Sometimes, C/C++ projects have a long development cycle. When working on such a project, it can be easy to take our development environment for granted, and forget about the effort invested in its bring-up. The build environment works like magic, the test framework is neatly integrated, and the CI/CD pipeline relieves us of tedious, repetitive tasks. For me, all it took was a simple thought: How d

                              A Modern C Development Environment
                            • マイクロソフト、次の.NET 7にネイティブコンパイラを搭載する見通しを明らかに

                              マイクロソフトは現在開発中のフレームワーク「.NET 7」で、ソースコードからターゲットプラットフォームに対応したネイティブバイナリをコンパイル時に生成するAOT(Ahead of Time)コンパイラを搭載する見通しだと、「Announcing .NET 7 Preview 3」で明らかにしています。 AOTコンパイラ、すなわち事前コンパイラとは、アプリケーションのビルド時にソースコードをコンパイルしてネイティブバイナリを生成する機能を備えています。 一般に「コンパイラ」とはこのAOTコンパイラのことを指すことが多いですが、アプリケーション実行時にソースコードや中間コードから動的にネイティブバイナリを生成するコンパイラのことをJIT(Just-in-Time)コンパイラと呼ぶのに対比して、あえて「AOTコンパイラ」と呼ぶことも最近では増えてきました。 現在、.NET対応のプログラミング言

                                マイクロソフト、次の.NET 7にネイティブコンパイラを搭載する見通しを明らかに
                              • 新しいプログラミング言語を学ぶとき、簡単な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処理系を作るという話
                                • コンパイラのいじめかた / How to fight the compiler

                                  C++MIX #6

                                    コンパイラのいじめかた / How to fight the compiler
                                  • [0.0, 1.0) の乱数を得るための“本当の”方法

                                    レイトレ合宿9(*)のセミナー発表スライドです。 * https://sites.google.com/view/rtcamp9/home - 2023/09/08 “除算法2”追記。(@Reputelessさんありがとうございました)

                                      [0.0, 1.0) の乱数を得るための“本当の”方法
                                    • AWSも支援--プログラミング言語「Rust」人気が拡大

                                      Catalin Cimpanu (Special to ZDNET.com) 翻訳校正: 村上雅章 野崎裕子 編集部 2019-11-04 08:30 AWSによる支援は、Rustチームに「AWSプロモーション・クレジット」を提供するという形態をとる。Rustチームはこのクレジットを用いてAWSのインフラを利用して、同言語を開発していくというわけだ。 RustコアチームのメンバーであるAlex Crichton氏は、「Rustプロジェクトが長年使ってきているAWSによってRustのインフラが支援されるのは、非常に喜ばしいことだ」と述べている。 Crichton氏は「この支援によってRustは、コンパイルした成果物の配布や、crates.ioクレートのダウンロード、すべてのプロセスの結合に必要なプロジェクト内での自動化のために、AWS上でインフラをホストし続けられるようになる。これらのサービ

                                        AWSも支援--プログラミング言語「Rust」人気が拡大
                                      • 「IBM COBOL for Linux on x86」発表。x86サーバ上のRHELやUbuntu Serverでz/OS互換のCOBOLコンパイルや実行を可能に

                                        米IBMはx86サーバ上のLinux環境でCOBOL言語のコンパイルや実行を実現する「IBM COBOL for Linux on x86 1.1」を発表しました。 IBM COBOL for Linux on x86 1.1は、「IBM COBOLコンパイラファミリー」の最新製品として、IBM Enterprise COBOL for z/OSおよびIBM COBOL for AIXとの互換性を備えています。 また、Enterprise COBOL for z/OSと同じ最適化技術がIBM COBOL for Linux on x86 1.1に用いられ、コンパイラの基本的なバックエンドも共有されているため、高速な処理が実現できるとのこと。 TXSeriesのマルチプラットフォームに対応。Db2 for Linux/UNIX/Windowsに対応。Db2ファイルシステムはシーケンシャル、イ

                                          「IBM COBOL for Linux on x86」発表。x86サーバ上のRHELやUbuntu Serverでz/OS互換のCOBOLコンパイルや実行を可能に
                                        • 次期Python、ついにJITコンパイラ搭載の見通し。「copy-and-patch」と呼ばれる新たなJITコンパイラの仕組みとは?

                                          次期Python、ついにJITコンパイラ搭載の見通し。「copy-and-patch」と呼ばれる新たなJITコンパイラの仕組みとは? 機械学習やAI処理の分野を中心に非常に高い人気のプログラミング言語である「Python」の次期バージョンに、処理速度の向上を目指したJITコンパイラが搭載される見通しです。 このJITコンパイラは、PythonコアデベロッパーのBrandt Bucher氏が提案し、実装しています。 そしてPython Software FoundationのフェローであるAnthony Shaw氏がブログ「Python 3.13 gets a JIT」で、このJITコンパイラについて解説しています。 これらの情報を元に、PythonのJITコンパイラがどのように実装されようとしているのか、少し紹介していきましょう。 RubyもJavaScriptもJITが高速化を実現してき

                                            次期Python、ついにJITコンパイラ搭載の見通し。「copy-and-patch」と呼ばれる新たなJITコンパイラの仕組みとは?
                                          • Python を Go に書き換えるとどれくらい速くなる? 7つの言語で Dijkstra の実行速度を比較 - Qiita

                                            Python を Go に書き換えるとどれくらい速くなる? 7つの言語で Dijkstra の実行速度を比較KotlinRustベンチマークJuliaDijkstra これは何 最短経路探索のアルゴリズムを使っていくつかの言語の性能がどれくらい違うかを調べてみました。 Python は手軽に実装できるけど遅い、Go は 早いけど C++ よりは遅い? 本当? のような疑問を一定解消したかったというのが動機です。 前提条件など 対象とする言語 本命 Go, Rust, C++ 興味本位 Julia Python より段違いに早ければもう少し掘ってみたい 興味本位 Kotlin 意外とトップ集団に肉薄するのではないか 参考 Python JavaScript 性能差のイメージとしては Rust == C++ > Go >> Kotlin >>> JavaScript > Python == J

                                              Python を Go に書き換えるとどれくらい速くなる? 7つの言語で Dijkstra の実行速度を比較 - Qiita
                                            • C++ 標準ライブラリ - C++ の歩き方 | cppmap

                                              Home C++ 規格 記事 学習 ライブラリ ツール 貢献 C++ 標準ライブラリ¶ C++ の規格で定められた標準ライブラリに含まれるヘッダの一覧です。 リファレンス Web サイトは en: cppreference.com, jp: cppreference.com (日本語訳) cpprefjp: cpprefjp に対応しています。 標準ライブラリ¶ ヘッダ リファレンス 実装 バージョン

                                              • オブジェクト指向は継承で多態するプログラミング - きしだのHatena

                                                オブジェクト指向って継承による多態があるからこそなんだけど、継承が非推奨になって以降に雰囲気でオブジェクト指向を知った人には、継承はオプションでカプセル化だけでオブジェクト指向って言ってしまいがちに思います。 実際はカプセル化はオブジェクト指向固有じゃなくて、クラスでカプセル化を実現してるだけです。 さまざまな人のオブジェクト指向の定義 本来ならどのように継承こそがオブジェクト指向なのかという説明をするんですが、かなり長くなりそうなので、とりあえずはいろいろな人たちのオブジェクト指向の定義を抜き出してみます。 「ここに挙がってるのはオブジェクト指向の一派にすぎない」というような意見もありますが他の派閥についてまとまって定義され共通認識になっているようなものは見当たらないので、プログラミングの指針には なりづらいと思います。 ストラウストラップ C++を産んだストラウストラップは「C++の設

                                                  オブジェクト指向は継承で多態するプログラミング - きしだのHatena
                                                • ドキュメントベースの型安全なモバイルアプリ行動ログ基盤の構築 - クックパッド開発者ブログ

                                                  こんにちは。PlayStation 5が一向に買えない@giginetです。普段はモバイル基盤部というところでiOSの基盤開発をしています。 皆さん、行動していますか?我々は日々Webサービス上で様々な行動をしています。サービス開発において、改善に活かすための効率的な行動ログの収集方法はしばしば課題になります。 今回は、サービス開発者がモバイルアプリ上で簡単にログを定義し、分析を行えるログ基盤を導入した事例について紹介します。 行動ログとは何か モバイルアプリの行動ログとは、ユーザーのアプリ上の操作や利用状況を取得、集積するためのものです。 例えば、特定の画面を表示したり、特定のボタンをタップしたり、といったユーザー操作を起点として送信されています。 集められたログは、サービス開発のための分析や実態把握に役立てられます。 最近はFirebase Analyticsなど、PaaSの形態で提供

                                                    ドキュメントベースの型安全なモバイルアプリ行動ログ基盤の構築 - クックパッド開発者ブログ
                                                  • 型変換やオブジェクト変換の関数/メソッドに対する習慣や知見

                                                    Noriyuki OHKAWA @notogawa データ型Aとその操作を定義しているモジュールX.Y.Aてよく作ると思うけど,型Bと型Aの間の変換操作をX.Y.A内から露出させるときにfromA/toAはやめてくれー.toB/fromBにして欲しい.import X.Y.A as AでA.toB/A.fromBだから. 2016-11-18 09:52:37 Noriyuki OHKAWA @notogawa データ型Aとその操作を定義しているモジュールX.Y.Aてよく作ると思うけど,型Bと型Aの間の変換操作をX.Y.A内から露出させるときにfromA/toAはやめてくれー.toB/fromBにして欲しい.import X.Y.A as AでA.toB/A.fromBだから. 2016-11-18 09:52:37

                                                      型変換やオブジェクト変換の関数/メソッドに対する習慣や知見
                                                    • C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita

                                                      追記: 本記事は g++ について書かれており、clang については補足で述べる程度でしたが、clang側の検証結果が間違っておりました。 別途 clang++ で検証した記事も書きましたので、ご覧いただけますと幸いです。 本記事の目的 昨日、株式会社フィックスターズの「Fixstars Tech Blog /proc/cpuinfo」に以下の記事が掲載されました。 RustがC++に速度で勝った話 - Fixstars Tech Blog /proc/cpuinfo 本記事では、上記記事の 手元環境における追試 C++の敗因/Rustの勝因分析 条件をある程度統一した際のベンチマーク結果 の3点を行います。 ベンチマーク環境 OS Fedora 30 CPU AMD A6-1450 Memory DDR3-1333 4GB x 1 (4GB) GCC 9.2.1 Rustc 1.39.

                                                        C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita
                                                      • 開発イテレーション偏重 - 兼雑記

                                                        開発イテレーションを早くすれば、かなりの問題が勝手に解決される、と信じています。なんか最近、他の要素を軽視しすぎていたり、特にイテレーション速度に影響しなさそうなことすらしている気がしていて、信仰とかのレベルかもしれない、という気がしてきたので、ちょっと書いてみようかなと。主に C++ の話です。 仕事とかしてると良い判断力が求められたりしますが、判断というのは結構難しいですよね。アプローチ A と B で悩んだ時に、手が速ければ両方できたりします。開発イテレーションを無限に速くすると、必要とされる判断力はゼロに漸近していきます。やったね。 2手で変更の正当性を高速に確認できるようにする make (かその他のビルドコマンド)てやったらビルドができて、 make check (かその他のテストスクリプト)てやったら遅くないテストが全部走る、という体勢が好きです。試すためにはあっちのディレク

                                                          開発イテレーション偏重 - 兼雑記
                                                        • Rust言語でファームウェア、OS、言語処理系を実装して、CSS 2020で発表した - 未完成な論を綴るブログ

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

                                                            Rust言語でファームウェア、OS、言語処理系を実装して、CSS 2020で発表した - 未完成な論を綴るブログ
                                                          • golangではスタックとヒープを気にする必要が無い

                                                            調べようと思ったきっかけは、golang では以下のように ローカル変数のアドレスを戻り値としても問題ないということ。 package main import ( "fmt" ) type Animal struct { Name string Age int } func main() { animal := allocAnimal() fmt.Printf("allocate animal structure %p", animal) } func allocAnimal() *Animal { return &Animal{} } C/C++ ではローカル変数のポインタを戻り値とした場合、 スタック領域のポインタを関数外に渡してしまうため、コンパイル時点で警告が表示されます (なぜエラーにしない) 実行時には最悪、セグメンテーションフォールトで落ちます そのため、malloc や n

                                                              golangではスタックとヒープを気にする必要が無い
                                                            • C++のenumという型の使い方がよくわかりません。 enumを定義した後、その中にある定数はどのように扱うのでしょうか?

                                                              回答 (9件中の1件目) > C++のenumという型の使い方がよくわかりません。 C++に限りませんが、Enumは基本的にはカテゴリ変数を表すために使用します。例えば曜日には月曜日から日曜日の7通りまでしかなく、曜日を表す変数を整数(0-6)や文字列(mon, tue, …, sun)で扱おうとすると関数の引数で与えられたときにその範囲外の値が入ってきたかどうかをいちいちチェックしないといけません。しかし、事前にEnumでMonからSunまでの7つの値しかないDayOfWeekという型を定義しておくと、一度DayOfWeekに変換しておけば以降はもうチェックをする必要が無いことが型レ...

                                                                C++のenumという型の使い方がよくわかりません。 enumを定義した後、その中にある定数はどのように扱うのでしょうか?
                                                              • データベースライブラリTkrzwの初版リリース - 豪鬼メモ

                                                                データベースライブラリであるTkrzwの初版をリリースした。Kyoto Cabinetの正式な後継製品である。本家のサイトはここである。設計目標の通り、高速かつ堅牢で多目的に使える実装になったと思っている。私の下手な英文を読ませるのも忍びないので、ここに概要を書いておこう。 ダウンロードとインストール このディレクトリにソースファイルのパッケージが置いてあるので、ダウンロードする。あとは典型的なインストール手順を踏襲すればよい。 $ tar zxvf tkrzw-0.9.1.tar.gz $ cd tkrzw-0.9.1 $ ./configure $ make $ make check $ sudo make install自分の環境でもテストをしたいという人は以下のコマンドを実行してもよいし、しなくてもよい。テストケースはGoogle Testを使って書かれているので、予めそれをインス

                                                                  データベースライブラリTkrzwの初版リリース - 豪鬼メモ
                                                                • ボレロ村上逝去

                                                                  村上原野 aka ボレロ村上, 中3女子 逝去 ボレロ村上、中3女子ことC++プログラマーで陶芸家の村上原野の訃報が流れている。それによるとどうやら、2月16日未明に、陶芸作品を製作中に倒れ、翌朝に発見されたようだ。 2月15日の21時51分のtweetに体調の変化を示唆する書き込みがある。倒れたのが16日の未明とあるので、そこから6時間後ということになる。 この書き込みから急な脳梗塞ではないかと思われる。体調の変化を感じたら病院に行くべきなのだろう。 首の後頭部の付け根がゴリゴリビキビキして頭までジンジンきてやばい — 狂える中3女子ボレロ村上/陶芸C++er (@bolero_MURAKAMI) February 15, 2020 大一報はおそらく猪風来美術館のFacebookで、これは20日に公開されたとのことだが、我々プログラマーの界隈に知られるまでに9日間を要したようだ。 岡山に

                                                                  • Rustのビルドを高速化する方法 | POSTD

                                                                    Rustコードのコンパイルが遅いことは誰でも知っています。しかし筆者は、世の中のほとんどのRustコードはコンパイルをもっと速くできると強く感じています。 例えば、つい最近の記事にこのように書かれていました。 一方、Rustでは、プロジェクトやCIサーバーの性能にもよりますが、 CIパイプラインの実行に15~45分かかります。 これは筆者には理解できません。GitHub Actions上にあるrust-analyzerのCIの所要時間は8分です。しかも、これは100万行の依存関係に加え、20万行の独自コードが記述されたとても大規模で複雑なプロジェクトでの話です。 確かに、Rustは根本的な部分で非常にコンパイルが遅いのは間違いありません。Rustはジェネリクスのジレンマにおいて「遅いコンパイラ」を選び、全体的な設計思想としてコンパイル時間よりもランタイムを優先しています(この点に関する優れ

                                                                      Rustのビルドを高速化する方法 | POSTD
                                                                    • 今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様

                                                                      はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。本連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし紹介していくことで、今のC++言語の姿を理解していただきます。 対象読者 かつてはC++をたしなんでいたという方 今からC++言語を始めるという方 モダンなプログラミング言語のパラダイムに興味のある方 必要な環境 本記事のサンプルコードは、以下の環境で動作を確認しています。 macOS Sonoma/Windows 11 Xcode Command

                                                                        今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様
                                                                      • 自作したRISC-V向けCコンパイラでセルフホストまでこぎつけた - 詩と創作・思索のひろば

                                                                        低レイヤを知りたい人のためのCコンパイラ作成入門 まさに低レイヤのことが分かっておらず、以前から気になっていたこの本。取り掛かってみたところ思いのほかスイスイ進められて、勢いに乗ってセルフホスト(自分が書いたコンパイラで自分自身をコンパイルするところ)までいけたので記念に書いておく。正確には C コンパイラのサブセットです。 GitHub - motemen/mocc 全体的な進め方は、 上記の本の通りに進めていく。 それ以降は自作の 8queen が普通に書けるように機能を強化。 それ以降はセルフホストを目標に進める。 プリプロセッサやリンカは作らず、C からアセンブリまで。 という感じ。自分は手を動かさないと進んでる気がしないので、まずは書いてみつつわからない所があれば調べる、というスタンスでいく。 あと、せっかくなので RISC-V の勉強もしたかったのでこれ向けに書く。なので実行は

                                                                          自作したRISC-V向けCコンパイラでセルフホストまでこぎつけた - 詩と創作・思索のひろば
                                                                        • ブラウザはCSSのセレクタを右から読む、ほんまか? - Qiita

                                                                          先日、 ブラウザ君「ワイはCSSのセレクタを右から読むんや」 という記事を読みまして、ちょっと気になったので後で確かめようと思っていたのですが、なんとなくそのままになってしまいやや旬を逃した感がありつつ、ツッコミを入れてみようと思います。 なお『ワイ「ほげほげ」』みたいな形式は使いません1。恥ずかしいので。 私は仕事でChromiumのソースコードをよく読んでいるので、ChromiumのソースコードからCSSの処理を見つけて、それを基準にして解説しようと思います2。そのため、他のブラウザのレンダリングエンジンと異なる最適化が施されている可能性があります。また、現在のソースコードがそうでも、将来的に別の方法に変更される可能性もあります。あくまで、ブラウザの処理の一例であることをご了承ください。 ChromiumはC++で開発されていて、私もC++畑の猫ですが、今回の記事は随所にリンクを挿入し

                                                                            ブラウザはCSSのセレクタを右から読む、ほんまか? - Qiita
                                                                          • Nuxt TypeScript

                                                                            Code completion One of the biggest advantages of TypeScript is its code completion and IntelliSense. IntelliSense provides active hints as a code is added. Type safety Types increase your agility when doing refactoring. It’s better for the compiler to catch errors than to have things fail at runtime. Code quality Types have a proven ability to enhance code quality and understandability. Large team

                                                                              Nuxt TypeScript
                                                                            • 開発者から見た V 言語とその(誇大)広告について

                                                                              V 言語について 一時期話題になった V 言語ですが、みなさまは覚えているでしょうか。 Go にインスパイアされたシンプルな構文、NoGC かつ Rust のような難しさもないメモリ管理。小さいバイナリサイズと高速なコンパイル、ホットリロードなど、様々な目玉機能を謳って登場した言語でした。 発表するが公開しない。バイナリは公開するがオープンソースにはしないなど、期待感をあおる情報の出し方をしたのもあって、当初こそそれなりに話題になりましたが、今となっては誰も話題にしなくなった感は否めません。 ところで、会社が消滅して無職になった私は数か月前から V 言語の開発に参加しており、執筆時点では全体で 23番目、直近1か月で 7番目の Contributor です。 私が知る限り、アクティブに活動している日本人の開発者はほとんどいません。 そこで、コミュニティにも慣れ V 言語のことが少しづつわか

                                                                                開発者から見た V 言語とその(誇大)広告について
                                                                              • 2019 Javascript engine 俯瞰 - abcdefGets

                                                                                2019 Javascriptエンジン俯瞰 こんにちは 2019 Javascript Advent Calendarの11日目です 2019はJSエンジンが新たに2つもリリースされた まずFacebook産のhermes もう一つがFFMPEG作者のbellardが実装したquickjs この2つを見ていこうと思う ちなみにhermesは以前にも書いたので正直あまり書くことは無い http://abcdef.gets.b6n.ch/entry/2019/07/22/142510 特徴 hermes C++ FacebookがReact Nativeの高速化用に実装したエンジン レジスタマシンのバイトコードインタプリタを搭載 flowを解釈できる commonjsを解釈して実行できる バイトコードのexportとimportも可能でスタートアップタイムを高速化することが可能 JITはx86

                                                                                  2019 Javascript engine 俯瞰 - abcdefGets
                                                                                • Erlangについて思うところ

                                                                                  職場の今までいた部署が潰れてしまったので、新しい部署で仕事のためにErlangを学んでいる。基礎的な文法については学び終わったので、現時点でのErlangについての雑感を書いておこうと思う。 Erlangは多数派のプログラミング言語とはだいぶ違う文法を持っている。終端記号がドットであることもそうだが、比較演算子もだいぶ違っている。多くの言語が!=を使うなか、Erlangは/=を使っている。Less than or equal toが=<であるのも多数派とは異なっている。ただし、Greater than or equal toは>=だ。一貫性がない。 終端文字はドットだが、関数の中には一つの式しか書くことができない。式はカンマで区切ることができるので、以下のようになる。 func() -> expr1 , % カンマ expr2 , % カンマ expr3 . % ドット このような文法はリ