並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 85件

新着順 人気順

C言語の検索結果41 - 80 件 / 85件

  • 【ABA Games】インディーゲーム制作歴40年。PC黎明期から生成AI時代まで折れずに続ける理由

    【ABA Games】インディーゲーム制作歴40年。PC黎明期から生成AI時代まで折れずに続ける理由 2024年3月25日 インディーゲーム開発者 長 健太 早稲田大学でコンピュータサイエンスを学び、学士号・修士号・博士号を取得。メーカー就職後はITの研究職を経て、現在はマネジャーとしてシステム開発に携わる傍ら、大学時代から一貫してインディーゲーム開発者としての顔を持ち続けている X ABA Games GitHub Blog -ABAの日誌- シューティングゲームを中心にこれまで400作以上もの作品を生み出し、インディーゲーム界の第一人者として国内外で知られる「ABA Games」こと長健太氏。 2023年9月に公開した「小さなゲーム開発の楽しみ」という電子冊子も話題となり、開発の楽しさを心から味わっている様子がうかがえます。 今回は長きに渡りインディーゲーム業界を牽引してきた長さんにイ

      【ABA Games】インディーゲーム制作歴40年。PC黎明期から生成AI時代まで折れずに続ける理由
    • 金子勇さんのED法を実装してMNISTを学習させてみた - Qiita

      追記:続きを書きました。 はじめに 先日以下の記事が投稿され、その斬新な考え方に個人的ながら衝撃を受けました。 内容をざっくり言うと、ニューラルネットワークの学習を現在の主流であるBP法(誤差逆伝播法)ではなく、ED法(誤差拡散法)という新しい学習手法を提案しているものです。 もし記事の内容が本当ならニューラルネットワークの学習がO(1)でできてしまう事になり、まさしく革命が起きてしまいます。 (結論からいうと速度面はそこまででもなかったです(それでも早くなる可能性あり)) (ただこの新手法のポテンシャルは革命を起こす可能性は秘めているといっても過言ではありません) ED法に関してネットを探すとインターネットアーカイブに情報が少し残っていました。 このページですがED法のサンプルプログラム(C言語)が残っており、このサンプルプログラムをベースにpythonで書き起こしたものが本記事となりま

        金子勇さんのED法を実装してMNISTを学習させてみた - Qiita
      • 今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様

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

          今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様
        • スマホアプリの脆弱性診断って何するの?(iOS編) - STORES Product Blog

          *本記事は STORES Advent Calendar 2023 6日目の記事です こんにちは。セキュリティ本部のsohです。 現在、弊社ではスマホアプリ診断内製化の準備を進めています。 同じようにスマホアプリの脆弱性診断を内製化したい、というニーズがある会社は多く存在しますが、実際のところ、スマホアプリを対象とした脆弱性診断士の確保は困難であり、外部ベンダーの方にすべてお願いせざるを得ないケースも多いかと思います。 また、その情報の少なさから、スマホアプリ診断を実施したいと考えている開発者や脆弱性診断士にとっても、「何をやればいいのか」「何から始めればいいのか」がわからないものである場合は多いかと思います。 そこで、この記事では「スマホアプリ診断って実際何をしているのか」と疑問を持つ方をターゲットとして、一般的なスマホアプリ診断の検証要件や検証方法について解説します。 要件とガイドライ

            スマホアプリの脆弱性診断って何するの?(iOS編) - STORES Product Blog
          • より高速なRubyのWebAssembly実装「Ruvy」、Shopifyがオープンソースで公開。Ruby仮想マシンとRubyアプリを組み合わせてビルド

            より高速なRubyのWebAssembly実装「Ruvy」、Shopifyがオープンソースで公開。Ruby仮想マシンとRubyアプリを組み合わせてビルド 昨年(2023年)12月にリリースされた「Ruby 3.2」では、WebAssemblyによって実装されたRubyランタイム「Ruby.wasm」が正式版となりました。これによりWebブラウザや単体のWebAssemblyランタイムの上でRubyランタイムを実行し、Rubyプログラムを実行できるようになりました。 このRuby.wasmをベースに、さらに高速なRubyのWebAssembly実装となる「Ruvy」が、Shopifyからオープンソースとして公開されました。 Calling all #Ruby developers! Explore a new tool for leveraging Ruby to create #WebAs

              より高速なRubyのWebAssembly実装「Ruvy」、Shopifyがオープンソースで公開。Ruby仮想マシンとRubyアプリを組み合わせてビルド
            • WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)

              WebブラウザでOS動かしてどうすんだよ という根源的な疑問に回答が無いままとりあえずできちゃった。。 ※ コマンドが終了してもプロンプトが出ません。Enterを空打ちする必要があります (バグ) WasmLinuxは、WebAssembly "ネイティブ" なLinux環境です。カーネルもユーザーランドも、WebAssemblyのツールチェインでコンパイルされたWebAssemblyモジュール(をwasm2cでCにしたもの)です。 前回はカーネルしか動いていなかったんですが、今回はブラウザ上で ifconfig lo up して ping 127.0.0.1 したり top したり vi したりできます。BusyBox入ってるので。 ただしまだ実用性は皆無 です。Proof of Conceptって奴ですね。 前回の記事: 今回はMUSL libcを移植してBusyBoxが動くようになっ

                WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)
              • Mojoプログラミング言語の特徴とは?将来性は?よく分かる入門資料まとめ

                2023年5月に発表された新しいプログラミング言語「Mojo」が世間で注目を浴びています。 PythonをベースにしたAI向きの言語であるということで、どんな言語なのか気になっている方も多いのではないでしょうか? この記事では、Mojoの特徴や機能、今後の将来性について解説します。Mojoを学んでみたい方向けの学習方法もまとめているので、これからMojoを勉強すべきか検討している方は、ぜひご一読ください。 レバテックフリーランスはITエンジニア専門の フリーランスエージェントです案件を探してみる 注目のプログラミング言語「Mojo」とは? プログラミング言語「Mojo」とは、どのような目的で作られ、他の言語と比べて何が新しいのでしょうか。まずはMojoの概要と特徴についてチェックしていきます。 Mojoプログラミング言語の概要 「Mojo(モジョ)」とは、Modular社が2023年5月に

                • Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita

                  はじめに 30年以上もの長い間 UNIX を支えてきた Bourne シェルも UNIX のサポート終了とともに消え去ろうとしています。みなさん、他のシェルへの移行はお済みでしょうか? 残り一年、まだ移行が済んでいないという人のために、移行のための簡単なガイドラインと各シェルの特徴をまとめました。 sh は昔は Bourne シェルのことでしたがそれも過去の話です。今どき「Bourne シェル」を解説している記事や sh のことを Bourne シェルと呼んでいる記事は情報が古い(大学関係に多い)、または古い情報を元にして書かれたか、シェルのことを正しく理解してない不正確な記事なので参考になりません。分かりやすい基準ですね。 関連記事 シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 残り1年というのはどういうこと? Bourne シェルは POSIX に

                    Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita
                  • Rust言語を、人命に関わるような決定的に安全性が重要なシステムに使用することをサポートする「Safety-Critical Rust Consortium」設立

                    Rust言語を、人命に関わるような決定的に安全性が重要なシステムに使用することをサポートする「Safety-Critical Rust Consortium」設立 Rust言語を推進する「The Rust Foundation」は、人命や財産に関わるような安全性が決定的に重要になるシステムのためにRust言語を責任を持ってサポートするためのコンソーシアム「Safety-Critical Rust Consortium」の設立を発表しました。 Rust言語は、C言語のように低レイヤのシステム開発向けに作られたプログラミング言語です。 不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理や、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点などの特長を備えているため、安全かつ高速なアプリケーション開発を実現します。 セーフティ・クリティカルとは? 「セーフティ

                      Rust言語を、人命に関わるような決定的に安全性が重要なシステムに使用することをサポートする「Safety-Critical Rust Consortium」設立
                    • 「第4のブラウザ言語」WebAssemblyが変えるフロントエンド開発 | レバテックラボ(レバテックLAB)

                      執筆 山内 直 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)に所属するテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。著書に『Bootstrap 5 フロントエンド開発の教科書』、『作って学べるHTML+JavaScriptの基本』など。 監修 山田 祥寛 静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「独習」シリーズ、「これからはじめるReact実践入門」、「改訂3版 JavaScript本格入門」他、

                        「第4のブラウザ言語」WebAssemblyが変えるフロントエンド開発 | レバテックラボ(レバテックLAB)
                      • これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」

                        二項しいぷ @BinomialSheep C++の「す、すげーー!!そんなことすなーっ!!!!!!」シリーズ 『プログラミング言語C++ 第4版/ストラウストラップ』 pic.twitter.com/KjiDaXe0tj x.com/winter_kyopro/… 2024-06-21 23:42:32

                          これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」
                        • プロと読み解くRuby 3.3 NEWS - STORES Product Blog

                          テクノロジー部門CTO室の笹田(ko1)と遠藤(mame)です。今年の 9 月から STORES 株式会社で Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています(Rubyのこれからを STORES で作る。Rubyコミッター笹田さん、遠藤さんにCTOがきく「Fun」|STORES People )。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、恒例のクリスマスリリースとして、Ruby 3.3.0 がリリースされました(Ruby 3.3.0 リリース)。クックパッド開発者ブログで連載していたように、今年も STORES Product Blog にて Ruby 3.3 の NEWS.md ファイルの解説をします(ちなみに、STORES Advent Calendar

                            プロと読み解くRuby 3.3 NEWS - STORES Product Blog
                          • Rustで作るLinuxデバイスドライバ

                            だれでもできるシリーズとして、Rustでカーネルモジュールを実装しながら学んできましたが(役に立たないキャラクタデバイスドライバなど)、そろそろ実際に使える機能を実装したいころですよね! 今回は、筆者が実装したネットワークPHYドライバが、Rustで実装された初めてのデバイスドライバとしてLinuxカーネルに採用された話を紹介します。 誤解:LinuxカーネルがRustをサポート「LinuxカーネルがRustをサポートした」というニュースを見て、Rustのコードがどんどん採用されていると誤解している方もいるようです。このニュースは、「LinuxカーネルをRustでも書けるようになりましたが、実際に何かを実装するかどうかは未定」という意味です。Linuxカーネルは、メモリマネージメント、ネットワーク、暗号など、数多くのサブシステムで構成されており、それぞれのメンテナが、コードの採否を判断しま

                              Rustで作るLinuxデバイスドライバ
                            • 祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita

                              FreeBSD では 2024-05-31 に 200112 から 200809 への変更がようやく行われました(一度間違えて 200808 と書いてしまっていますが)。 https://cgit.freebsd.org/src/commit/?id=2e30926a68 https://cgit.freebsd.org/src/commit/?id=6e0278408e macOS は FreeBSD のユーザーランドのコマンドを使用しているため、そのせいで 200112 のままだった可能性も考えられますが、シェルやカーネルは FreeBSD のものではないため、FreeBSD が変更になったからと言って macOS が更新されるとは限らないでしょう。Solaris 10 と 11 ではディレクトリごとに準拠バージョンが異なるバイナリが配置されており以下のようになります。Solaris

                                祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita
                              • WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現

                                WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現 WebAssembly関連仕様の標準化を行っているW3C WebAssembly Community GroupのWASI Subgroupミーティングにおいて、2024年1月25日に行われた投票で「WASI Preview 2」(もしくはWASI 0.2.0)仕様が承認され、安定版に到達したことが明らかになりました。 WASI Preview 2では、WebAssemblyアプリケーションがOSなどのプラットフォームに依存せず、さまざまなプログラミング言語で開発したWebAssemblyコンポーネントを組み合わせて開発できるように、「コンポーネントモデル」とそのインターフェイスを記述するIDL(Interface Definition Language)であ

                                  WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現
                                • C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。

                                  はじめに C言語でコルーチンを扱う方法は色々ありますが、専用の命令を専用の記述方法で実装しなければならなかったりなど、あまりとっつきやすいものではありませんでした。 今日 X/Twitter のタイムラインで見付けた neco はまさにそんな悩みを解消できる物でした。 neco とは neco はコルーチンを使った非同期 I/O ライブラリです。 コルーチン: 開始、スリープ、一時停止、再開、移譲、および結合。 同期: チャネル、ジェネレータ、ミューテックス、条件変数、および待機グループ。 デッドラインとキャンセルのサポート。 ファイルディスクリプタを使った Posix フレンドリーなインターフェース。 ネットワーク、シグナル、ランダムデータ、ストリーム、およびバッファ付き I/O の追加 API。 公正かつ決定論的なスケジューラを備えた軽量ランタイム。 高速なユーザースペースのコンテキス

                                    C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。
                                  • すべての開発者が知っておくべきメモリ管理についての知識

                                    プログラミングにおいてメモリ管理は重要な要素の一つですが、その重要性を見過ごされがちなものです。メモリ管理の高レベルな抽象化について、「すべての開発者が知っておくべき要素」としてプログラマーのザカリー・リー氏が解説しています。 Memory Management Every Developer Should Know https://webdeveloper.beehiiv.com/p/memory-management-every-programmer-know メモリは「スタック」と「ヒープ」という2つの領域に分かれています。 ・スタック スタックは「先入れ後出し」という特徴を持つデータ構造で、プログラムの関数呼び出しを記録するのに非常に適しています。例えば下図のように「test()」と「main()」という2つの関数があり、main()からtest()を呼び出す場合を考えてみます。

                                      すべての開発者が知っておくべきメモリ管理についての知識
                                    • 巨大なタスクに圧倒されそうな時は“分割統治”で征服せよ ゴールまで走り続けるために有効な考え方

                                      大きな問題も分割すればなんとかなる まつもとゆきひろ氏:次のことわざにいきましょうね。4番目は、これもことわざじゃないと言われちゃうんですが、「分割統治」という言葉です。英語だと「Divide and Conquer」。「分割して征服せよ」という感じです。大きな問題もね、分割すればなんとかなるというやつですね。 (スライドを示して)これは最近見た漫画です。巨大なタスクが存在して、圧倒されそうな気持ちになった時には、タスクを取り上げて細かく分解すると、細かく分解されたタスクは無視しやすいので、タスクは片づかなくても気分は楽になるという漫画なんですけども(笑)、実際、そういうところもあるんですよね。 非常に巨大なことをしろと言われると大変なんだけど、手に負える範囲に分割して1つ1つ話をしていくと問題を解決できるというのは、どこにおいても応用可能な原則だと思います。 クイックソートは一応現時点で

                                        巨大なタスクに圧倒されそうな時は“分割統治”で征服せよ ゴールまで走り続けるために有効な考え方
                                      • Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog

                                        Development Division/Repro Team/Feature 1 Unit の Watsonです。Feature 1 Unit は Repro Tool の機能開発と保守を担っています。 弊社でも利用している Oj gem のパフォーマンス改善 PR を送った話と、その PR の内容について共有します。 ことのはじまり 以前、同僚が Ruby on Rails で JSON を返す REST API を作成した際、JSON のエンコード部分のパフォーマンス計測をしていました。JSON のエンコード方法は JSON.generate、ActiveSupport::JSON.encode、Oj gem を利用する方法など色々ありますが、私としては Oj gemの ほうがパフォーマンス的にいいだろうからそちらを利用したほうが良いのではと思っておりました。 計測結果を拝見したら確

                                          Ruby の JSON ライブラリ Oj のパフォーマンス改善を行いました - Repro Tech Blog
                                        • Rustで有名アルゴリズムに挑戦(18) Rustでライフゲームを作ってみよう

                                          C言語に代わってOS開発に採用されているRust。本連載では、Rustで有名アルゴリズムを実装して、Rustについての理解を深めています。今回扱うのは、生物の栄枯盛衰をシミュレーションするライフゲームです。 コンウェイのライフゲームで生物のシミュレーションをしよう コンウェイのライフゲームとは? 「ライフゲーム(Life Game)」は、イギリスの数学者コンウェイによって考案されたもので、簡単な配列操作によって実装できる簡単な生物のシミュレーションです。次のように動きます。 コンウェイのライフゲームを動かしているところ 見た目が面白いのに加えて、プログラミング言語の性質や特徴を知るのにもってこいの題材であるため、次の姉妹連載でも何度か紹介しています。ぜひ、今回のRust版と見比べてみてください。 - Python連載9回目(https://news.mynavi.jp/techplus/a

                                            Rustで有名アルゴリズムに挑戦(18) Rustでライフゲームを作ってみよう
                                          • Pythonが遅い理由とその対策 - Qiita

                                            はじめに Pythonは柔軟性が高く、初心者にも適したプログラミング言語ですが、その一方で速度面では他の言語に劣るとされています。本記事では、先月ピッツバーグで開催されたPyCon US 2024で紹介されたPythonの高速化技術について詳しく解説します。 Pythonの速度問題 「Pythonはランタイムにコストを払う」という古い格言が示す通り、Pythonは解釈型言語であり、実行時に多くの処理を行うため速度が遅くなることがあります。Pythonはソースコードを効率的なバイトコードに変換し、それを直接実行することで動作します。このプロセスには多くの間接処理が含まれ、単純な命令でさえも多数のCPU指示に分解されます。例えば、二つの数値を足すだけでも500以上の命令が実行されることがあります。 高速化のためのコンパイル技術 Cythonによる最適化 PyCon 2024でのSaksham

                                              Pythonが遅い理由とその対策 - Qiita
                                            • ChatGPT/Co-Pilotで改めてわかる「プログラミング」とはどんな作業だったのか|shi3z

                                              最初にプログラミングを始めた時は、学校にリファレンスマニュアルを持って行って全てのページを丸暗記した。丸暗記が目的だったわけではなく、読んで知識を吸収していくのが楽しくてしょうがなかった。 PC-9801のN88-BASICリファレンスマニュアルは、読み物としてとても良くできていた。各ステートメントの紹介があり、パラメータの説明があり、ごく簡単なサンプルコードも書いてあった。大体見開き一ページで一つのステートメントの説明なので読みやすかったし、ベーマガかなんかで読む呪文のようなコマンドの意味を詳細まで知れて楽しかった。 だがこれを「楽しい」と思う人は少数派のようだった。 僕のクラスメートのうち、相当数の人が親にパソコンを買ってもらい、BASICに挑戦したが、全くその世界に馴染めず結局ゲーム機になって行った。僕も親父がゲームなんかを買ってきたら話は変わっていたかもしれないが、親父の教育方針で

                                                ChatGPT/Co-Pilotで改めてわかる「プログラミング」とはどんな作業だったのか|shi3z
                                              • GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに

                                                GoogleやMistral AIなどからプログラミングに特化したAIツールが登場しており、大手テクノロジー企業のCEOが「AIがコードを書くのでもうプログラミングを学ぶ必要はない」と発言するなど、AIによるプログラミングは注目を集めています。そんなAIによるプログラミング能力を分析した研究が公開されており、AIモデルがトレーニングされたタイミングによっては困難に直面することがあることが判明しました。 No Need to Lift a Finger Anymore? Assessing the Quality of Code Generation by ChatGPT | IEEE Journals & Magazine | IEEE Xplore https://ieeexplore.ieee.org/document/10507163 ChatGPT Code: Is the AI

                                                  GPT-3.5ベースのChatGPTのコーディング能力は「古い問題には有効も新しい問題では困難に直面する」ことが明らかに
                                                • Java Champion・谷本心が3段階の技術レベルに合わせて読んでほしいJava本6選

                                                  谷本 心 EverforthとAcroquestの2社で正社員として働くエンジニア。仕事のかたわらでコミュニティ活動も行っており、日本Javaユーザーグループの代表を務めるほか、アメリカで開催されたJavaOneやSpringOneなど国内外のイベントで登壇。その実績から日本で3人目の「Java Champion」に任命された。著書に『Java本格入門』(技術評論社)。趣味は対戦格闘ゲームと、BABYMETALを追いかけて世界中を旅すること。 X: @cero_t Blog: https://cero-t.hatenadiary.jp/ 1. 『Java本格入門~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで』(谷本心、阪本雄一郎、岡田拓也、秋葉誠、村田賢一郎 著) 2. 『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』(きしだなおき

                                                    Java Champion・谷本心が3段階の技術レベルに合わせて読んでほしいJava本6選
                                                  • 難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita

                                                    TL; DR こちらが難解プログラミング言語 Malbolge で HelloWorld を行うプログラムになります。プログラムとはいったい・・・ (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm Malbolge Malbolge は 1998 年 Ben Olmstead により開発された難解プログラミング言語です。オリジナルのホームページはとっくに消滅していますが、幸いにもアーカイブは残っていました。 Malbolge は難解プログラミング言語の中でも特に難解であること自体を目的に開発された、文字通り地獄みたいな言語です。 Malbolge was truly created with the i

                                                      難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita
                                                    • C言語でWASMインタプリタを実装した話

                                                      概要 公式のcore testが全て(UTF8, WAT, SIMD関連のものは除く)通るWASMインタプリタをC言語でフルスクラッチで実装した。自作WASMランタイムで省略されがちなValidation Stageも実装した。この記事はWebAssembly Advent Calendar 2023の三日目の記事である。 目的 このWASMランタイムを実装するにあたり、「できるだけ仕様に従って実装する」ことを心掛けた。WASMの仕様書は以下のissueが立つほど読みにくいものとなっているが、ランタイムをどのように実装すべきかが詳しく書いてあり、一応仕様書を頑張って読めばランタイムが作れるようになっている。 この自作WASMランタイムの目的は、できるだけ仕様に従った実装を与えることで、仕様の理解を助けることである。早さや効率性よりも分かりやすさを優先しているため、実用には向かない。仕様書を

                                                        C言語でWASMインタプリタを実装した話
                                                      • LINEヤフー Tech Blog コード品質向上のテクニック: 第 1 回

                                                        こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 私達は、高い開発生産性を維持するために、コード品質と開発文化の改善に注力しています。 そのために様々な取り組みを行っているのですが、その 1 つとして Review Committee の活動があります。 Review Committee では、マージ済みのコードを再度レビューし、レビューアとオーサーにフィードバックしたり、レビューで集めた知見を Weekly Report と称して毎週共有したりしています。 この Weekly Report で共有される話題は、Android や iOS といったプラットフォームや、Kotlin や Swift 言語固有の注意点も含まれるのですが、多くの場合はプログラミング一般に適用できるものになるように配慮しています。(ただし、説明のために使うコードは Ko

                                                          LINEヤフー Tech Blog コード品質向上のテクニック: 第 1 回
                                                        • 注目の日本語大規模モデルLLM-JP 13Bを試す(JSON吐けた)|shi3z

                                                          国立情報学研究所が作ったLLM-JP 13Bが公開されていたので早速試してみた。色々なモデルが公開されているが、全部盛りっぽい 「llm-jp/llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0」を試す。 マシンはもちろんドスパラ製Memeplexマシン(A6000x2)だ。 import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-13b-instruct-full-jaster-dolly-oasst-v1.0") model = AutoModelForCausalLM.from_pretrained("llm-jp/llm-jp-13b

                                                            注目の日本語大規模モデルLLM-JP 13Bを試す(JSON吐けた)|shi3z
                                                          • プログラミング言語Rustになぜ注目するのか - Qiita

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

                                                              プログラミング言語Rustになぜ注目するのか - Qiita
                                                            • WebAssemblyへのコンパイルだけに特化した新言語「Onyx」登場

                                                              米Wasmer社が、WebAssemblyへのコンパイルだけに特化した新しいプログラミング言語「Onyx」をブログで紹介しています。 Onyxは(Wasmer社ではなく)Brendan Hansen氏が開発に3年を費やしたプログラミング言語です。 (2023/12/13 お詫びと訂正。当初OnyxをWasmer社が開発したと紹介していましたが、Wasmer社とは直接関係のないBrendan Hansen氏が開発した者でした。お詫びして訂正します。タイトルと本文の一部を修正しました) We're so excited about Onyx . A new programming language which solely compiles to #WebAssembly. Read all about it in our new blogpost:https://t.co/L6yZ9Ls5Q

                                                                WebAssemblyへのコンパイルだけに特化した新言語「Onyx」登場
                                                              • シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita

                                                                はじめに シェルスクリプトの世界は今後 10 年で大きく変化します。10 年という数字は切りが良い数字を持ってきただけで根拠はありません。これより長い時間がかかるかもしれませんし、もしかしたら短くなるかもしれません。しかし確実によりよい方向に変わっていくでしょう。Unix/Linux の標準コマンドはさまざまな問題を抱えています。Unix/Linux の標準コマンドに依存している限りシェルスクリプトに大きな改善はありません。これからのシェルスクリプトの世界は Unix/Linux の標準コマンドに依存しない世界です。それがどういうものになるのかをこの記事で解説しています。この記事は私の予言であり目標です。 シェルスクリプトの失われた30年の進化を取り戻す! 残念なことに、シェルスクリプトの世界は 30 年前から大きく変わっていません。それまでの間、プログラミング言語の世界、ソフトウェア開発

                                                                  シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita
                                                                • OS徒然草 (1) - VA Linux エンジニアブログ

                                                                  はじめに コンピュータのアーキテクチャ プログラムの構造 あとがき 執筆者 : 小田 逸郎 はじめに 筆者は自分のことを OS 開発者 (OS屋) だと思ってます。最近は、OSにあまり深く関われていないのですが、筆者が若かりし頃に情熱を注いだものであり、筆者の基盤をなしているものであることには間違いないです。 筆者が OS (UNIX) の開発に携わり始めたのは、1986年のことなので、もう40年近く経ってしまいました。その間に OS の規模も随分大きくなってしまったようです。 筆者が始めた頃の UNIX は、デバイスドライバを除くと、20K行くらいだったと記憶しています。 全コードをラインプリンタで出力、コピー、製本し、皆で読み合わせて、勉強会をしたりしていました。そんなことができる分量だったのです。 今の Linux の規模はどれくらいでしょうか。筆者たちが「Linuxカーネル 2.6

                                                                    OS徒然草 (1) - VA Linux エンジニアブログ
                                                                  • 最終出社日でした - @watson1978 の日記

                                                                    今日はReproでの最終出社日。思い返せば 30 歳も過ぎてから Ruby とどう関わっていくかという人生だった。 MacRuby (2010年~) 暇つぶしに Mac OS X のアプリを作ってみようかと思い立った時に出会ったプロジェクトだった。 今のように Swift や clang というコンパイラもなく、 Objective-C 言語というとにかく [] を書きまくらないとならずどうにもなじめなかった。もともと趣味で Ruby はさわっていたのでそれでアプリが作れたら良いのにと思っていたところで、渡りに船的にさわり始めたのがきっかけだった。 私がさわり始めたころはちょっとしたコードを書いてもすぐにクラッシュするような感じで、ちまちま「こういうコードを書くとクラッシュするんだけど何でだろう?」とプロジェクトの issue に書き連ね、気がついたら「こういう風に直すと動くようになるんだ

                                                                      最終出社日でした - @watson1978 の日記
                                                                    • 第822回 CLIだけでUbuntuを使いたい人向けのUbuntuサーバー講座2024 | gihyo.jp

                                                                      前々回の第820回では「改めてUbuntuに入門したい人向けのUbuntuサーバー講座2024」と題してUbuntu 24.04 LTSのサーバー版のインストール方法を紹介しました。もちろんUbuntuはインストールしただけで終わりではありません。豊富なパッケージ資産の利用や、自分なりの環境のカスタマイズなどを行って初めて、「⁠Ubuntuを使う」状態になるのです。そこで今回は、Ubuntuサーバーを使い始めてまず実施するであろう定番の作業をいくつか紹介しましょう。 UbuntuのCLIを使えるようになると、他のLinuxディストリビューションやWSL、Raspberry Pi OSなど他の環境におけるハードルもぐっと下がります。その人の使い方に合うか合わないかは別にして、一度は経験しておくことをおすすめします。 図1 fastfetchでUbuntuの情報を表示した様子 SSHサーバーの

                                                                        第822回 CLIだけでUbuntuを使いたい人向けのUbuntuサーバー講座2024 | gihyo.jp
                                                                      • より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 - レバテックラボ(レバテックLAB)

                                                                        より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 2024年7月16日 C++ライブラリアン 高橋 晶 C++日本語リファレンスサイトcpprefjpを運営し、C++の最新情報を日本語で発信している。株式会社Preferred Networksに所属し、スーパーコンピュータのソフトウェア開発に携わっている。 著書として、『C++テンプレートテクニック』(SBクリエイティブ)、『C++ポケットリファレンス』(技術評論社)、『プログラミングの魔導書』(ロングゲート)。 X: @cpp_akira GitHub: faithandbrave 1. 『Effective C++ 第3版』Scott Meyers 著、小林健一郎 翻訳 2. 『Effective Modern C++ ― C++11/14プログラムを進化させる42項目』Scott M

                                                                          より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 - レバテックラボ(レバテックLAB)
                                                                        • WasmLinux: LinuxカーネルをWebAssemblyにする

                                                                          LinuxカーネルがWebブラウザで動いたらどう考えても面白い んだけど、そこに至るまではなかなか難しい道のりになる。その第一歩として、Linuxカーネルのユーザーランド版であるLKL( https://github.com/lkl/linux )をWebAssemblyにコンパイルして、wasm2cでC言語に変換した上、Visual Studio 2022でコンパイルしてWindows上で実行してみた。 まだWebブラウザでは動いていないが、思ったよりは簡単にWasmに移植できた(個人の感想です) ウケが良ければMUSL libc移植編 → デバイスドライバ活用編 → Webブラウザ上動作編と続ける感じで。。 EDIT: Visual Studioのスクリーンショットを撮りなおし。 memory-control はanonymousなmapしか救えないので、ここ数年スパンではエミュレーシ

                                                                            WasmLinux: LinuxカーネルをWebAssemblyにする
                                                                          • LTS版「Linux」カーネルのサポートが短縮へ--背景にメンテナーの苦悩

                                                                            現地時間9月19日からスペインのビルバオで開催されていた「Open Source Summit Europe」で、Linuxカーネル開発者であり、LWN.netの編集責任者を務めているJonathan Corbet氏が、Linuxカーネル関連の新しい点や今後の動きについて発表した。 ここではその中から、今後の大きな変更点の1つを紹介したい。それは、Linuxカーネルの長期サポート(LTS)が6年から2年に短縮されるということだ。 LinuxカーネルのLTS版には現在のところ、6.1と5.15、5.10、5.4、4.19、4.14の6つがある。これまでであれば、4.14は2024年1月にサポートが終了し、別のカーネルが追加されていた。しかし今後は、4.14とその次の2つのバージョンのサポートが終了しても、別のカーネルがそれに取って代わることはない。 なぜだろうか。Corbet氏は単純なことだ

                                                                              LTS版「Linux」カーネルのサポートが短縮へ--背景にメンテナーの苦悩
                                                                            • ebpf-goによるLinuxカーネルトレース入門

                                                                              ebpf-goによるLinuxカーネルトレース入門 ebpf-goを使用したLinuxカーネルトレース(fentry)について紹介します。 ebpf-goは、eBPFのGo向けライブラリです。このライブラリは、libbpfに依存せず(cgoを使用せず)にeBPFプログラムとデータのやり取りが可能であるため、ポータビリティが高くGo言語に適したeBPFライブラリとなります。 fentryは、カーネル関数のエントリポイントにプログラムをアタッチするためのBPFプログラムタイプです。簡潔に言うと、カーネル関数にフック処理を行うことができます。 GitHub: ebpf-go(cilium/ebpf) 公式ドキュメント: The eBPF Library for Go 本記事ではebpf-goのexamples内のtcprttを基に、ebpf-goの開発方法についても説明します。 前提条件として、

                                                                                ebpf-goによるLinuxカーネルトレース入門
                                                                              • Supercomputing Contest 2013/GPUプログラミング資料 - Supercomputing Programing Contest Official Site

                                                                                2023-09-13 SupercomputingContest2023 2023-09-06 Supercomputing Contest News News/sc230906 2023-09-01 News/sc230830 2023-08-28 News/sc230828 SupercomputingContest2023/本選結果 2023-08-01 MenuBar 2023-06-29 News/sc230629 SupercomputingContest2023/予選結果 2023-06-12 SupercomputingContest2023/予選・認定問題Q&A 2023-06-01 SupercomputingContest2023/問題および関連ファイル群更新履歴 2023-05-31 News/sc230531 2023-05-30 News/sc230530 20

                                                                                • C++からRustに移行して幸せになる人、そうならない人 その違いは?

                                                                                  C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。C++とRustの品質、両言語の相違点と類似点を調べて、どちらのプログラミング言語を選ぶかを決めたい。 C++はRustが登場する前から成熟度の高い言語だった。開発者はC++からRustに切り替える必要があるのだろうか。必ずしもそうとは限らない。 新たなプロジェクトに携わるプログラマーは、プログラミング言語の選択肢が不足することはない。プログラミング言語「C++」と「Rust」は、 ブラウザベースのソフトウェアからビデオゲームに至るまで、さまざまなプロジェクトに適しており、それぞれに利点がある。 C++は効率的で信頼性の高いプログラミング言語だ。信頼性、パフォーマンス、スケーラビリティの高さから開発者はC++を選ぶ。C++の標準テンプレートライブラリ

                                                                                    C++からRustに移行して幸せになる人、そうならない人 その違いは?