タグ

関連タグで絞り込む (312)

タグの絞り込みを解除

C++に関するmohnoのブックマーク (156)

  • 【c++】二分探索より速いisqrtを実装する

    はじめに この記事はアドベントカレンダー2025 16日目の記事です コンテスト中の人へ or 結果が早く知りたい人へ コードを示します。コードテストでも何でもにこれをコピペしたら、正しく動いていることが分かると思います。 #include <iostream> #include <vector> using namespace std; unsigned long long isqrt_aux(int c,unsigned long long n){ if (c == 0){ return 1; } else { int k = (c - 1) / 2; unsigned long long a = isqrt_aux(c / 2, n >> (2*k + 2)); return (a << k) + (n >> (k+2)) / a; } } unsigned long isqrt(u

    【c++】二分探索より速いisqrtを実装する
    mohno
    mohno 2025/12/17
    Z80時代に(CPUに畳除算がないので)2進の開閉計算で平方根を求めるプログラムを書いて悦に入っていたが、それ以降、使う場面がない。/double(というかfsqrt)を使ってはいけない決まり?「CPU命令速い!」
  • 戦闘機「F-35」にはC++の特殊ルール適用版が使われており例外処理や再帰関数が禁止されている

    by Alexander Gorlin アメリカ空軍や航空自衛隊が運用する戦闘機「F-35」はC++でコーディングされたソフトウェアを搭載しています。このC++コードは「Joint Strike Fighter Air Vehicle C++ Coding Standards(JSF AV C++)」と呼ばれるコーディング規則に沿って記されているとのことで、Googleの研究者で航空機関連プログラミングにも詳しいLaurieWired(Laurie Kirk)氏がJSF AV C++の特長を解説しています。 Why Fighter Jets Ban 90% of C++ Features - YouTube 1996年6月に欧州宇宙機構はアリアン5型ロケットの初回打ち上げを実施しました。しかし、ロケットは発射から数十秒後に爆発し、打ち上げは失敗。この失敗はロケットのソフトウェアで処理できな

    戦闘機「F-35」にはC++の特殊ルール適用版が使われており例外処理や再帰関数が禁止されている
    mohno
    mohno 2025/12/09
    「F-35には1000万行近くのコードが含まれており」「「例外処理」「再帰関数」「動的メモリ確保」といったC++の機能を制限する項目が含まれています」「リアルタイム性と安全性が極めて重要」←それでもC++は使いたいんだ
  • 【海外記事紹介】Rustにはガッカリしている

    11月24日、bykozyが「Blog - Rust is a disappointment」と題した記事を公開した。この記事では、Rustが期待されてきた「C++の後継候補」としての役割を十分に果たしていないのではないかという問題提起を行い、とくにコンパイル速度の遅さ、言語としての複雑さ、メモリ安全性と信頼性のトレードオフ、可変共有状態の扱いにおける限界について詳しく紹介している。以下に、その内容を紹介する。 11月24日、bykozyが「Blog - Rust is a disappointment」と題した記事を公開した。この記事では、Rustが期待されてきた「C++の後継候補」としての役割を十分に果たしていないのではないかという問題提起を行い、とくにコンパイル速度の遅さ、言語としての複雑さ、メモリ安全性と信頼性のトレードオフ、可変共有状態の扱いにおける限界について詳しく紹介している

    【海外記事紹介】Rustにはガッカリしている
    mohno
    mohno 2025/11/27
    「C++もRustも好きではない、という立場」「Rustヘイター」←もともと向いてなかった、だけでは。『最高のプログラミング言語だから、みんなRustに乗り換えるべきだ』←誰が言ってるんだ?
  • キャリア採用:募集要項|採用情報|任天堂

    任天堂ゲームプラットフォームは独自のOSの上に構築されています。 このOS上で動くプログラムのためのコンパイラー・ツールチェインや、ランタイムライブラリの開発を行います。 ※ランタイムライブラリとは、C/C++の標準ライブラリやプログラムのスタートアップルーチンなどの、プログラミング言語の機能を提供するために必要なライブラリを指します。 【必須の実務経験と能力】 C/C++言語による開発経験 以下のいずれかの知識・経験 -コンパイラーに関する知識・開発経験 -ランタイムライブラリの実装に関連する知識・開発経験 ※ランタイムライブラリの実装に関連する開発経験とは、例えば以下のようなものを指します。 - 言語処理系のランタイムライブラリ・標準ライブラリの実装 - ベアメタルプログラミング - 標準ライブラリを利用しないプログラミング - システムコールを直接使用するプログラミング 【望ましい実

    mohno
    mohno 2025/11/23
    「C/C++言語のコンパイラーの開発経験」←C言語とC++言語ではだいぶ違いがあると思うけど、まともなC++言語コンパイラを開発するスキルを持つ人が年収「966万円」で雇える気がしない。“任天堂社員”は名誉職かな。
  • Python独走の一方でC#がJavaを猛追 2025年11月版プログラミング言語人気ランキング

    関連キーワード アプリケーション開発 | プログラミング言語 | 人事 ソフトウェア品質評価企業TIOBE Softwareは、2025年11月版の「TIOBE Programming Community Index」(以下、TIOBE Index)を発表した。TIOBE Indexは、プログラミング言語の人気を示す指標で、同社が毎月1回更新している。2025年11月も、「Python」が圧倒的な大差をつけて首位を維持したが、レーティングは23.37%にとどまった。Pythonのレーティングは7月にTIOBE Index史上最大の26.98に達した後、徐々にだが低下している。 C#はJavaを追い越すか 併せて読みたいお薦め記事 プログラミング言語の選び方とその影響を整理する 「どのプログラミング言語を使うか」を決める“7つの観点”とは AI開発で選ばれる「定番のプログラミング言語」はこれ

    Python独走の一方でC#がJavaを猛追 2025年11月版プログラミング言語人気ランキング
    mohno
    mohno 2025/11/19
    「TIOBE Index」「「Python」が圧倒的な大差をつけて首位を維持」「2~6位は、「C」(9.68%)、「C++」(8.95%)、「Java」(8.54%)、「C#」(7.65%)、「JavaScript」(3.42%)」/仕事はC言語系だけで済ませたかったのにな。
  • C/C++の「ポインタ」とは

    C/C++ の「ポインタ」は、難しいとか、実は簡単だとか、色々言われます。 ポインタについては規格に書かれています。この記事は、ポインタをより正確にイメージするため、規格に私の解釈を追加したものです。区別のため、C++23 草案 (N4950) の内容には節番号を付け、私の解釈は 斜体 で書きます。 私の解釈は以下の記事の影響を受けています。 ポインタとは、IDとオフセットの組 まず、ヌル以外のポインタは、以下の ID とオフセットの組 です。 ID:新しいオブジェクトが作られるたびに振られる、ユニークな値。 オフセット:オブジェクト先頭からのバイト数。 詳しく話していきます。 ID の割り振り 変数を定義するとオブジェクトが作られ (6.7.2)、各オブジェクトに固有の ID が割り振られます。たとえば、 と書くと整数 x と配列 arr が作られるので、x と arr にそれぞれ ID

    C/C++の「ポインタ」とは
    mohno
    mohno 2025/01/05
    ポインタを知らない人が、これを読んで理解できるの?/「ID」?/「以下を全て満たす場合は結果が未規定」←オフセットが範囲内であれば、かな(その前に未定義動作と書いてはあるが)/C2xにはnullptrがあるのか。
  • C/C++のRTLにおけるバッファオーバーフロー

    最近、C/C++ ランタイム ライブラリ (RTL) に潜在的なバッファオーバーフローがあることが判明しました。この問題は1997年に実装されたコードに起因しており、実装されてから現在に至るまで悪用された事例はありませんが、安全性と公開性を確保するため、このブログでは慎重に問題箇所の開示とその修正方法をご案内いたします。 バッファオーバーフローの問題に関する情報: _wgetcurdir、_wsearchstr、および「_t」バリアントの _tgetdcwd と _tgetcwd に影響します。これらのメソッドは、現在の作業ディレクトリを取得するもので、POSIX getcwdに基づく非ISO標準関数、またはワイド文字向けに拡張された、それらを使用して解決できるマクロです。 Unicodeのビルドに影響 これらのメソッドがバッファとして null が渡されたときにのみ発生します。この状況で

    C/C++のRTLにおけるバッファオーバーフロー
    mohno
    mohno 2024/07/29
    「C/C++ ランタイム ライブラリ (RTL) に潜在的なバッファオーバーフローがあることが判明しました。この問題は1997年に実装されたコードに起因」「_wgetcurdir、_wsearchstr、および「_t」バリアントの _tgetdcwd と _tgetcwd に影響」
  • 今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様

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

    今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様
    mohno
    mohno 2024/05/24
    “モダンなC++”って、もう俺の知ってるC++じゃなくなってきてるんだよな、と思って読んだら中身が「C++11」なのでホッとした顔をしている(←オイ)/C++20は“モジュール”が入ってて、お前ホントにC++か?ってなってる。
  • C++erは全員戻り値型の後置記法を使おう - ◯◯◯◯ソフト開発日誌

    目次 目次 「戻り値型の後置記法」って何? 何が嬉しいの? 問題点 「戻り値型の後置記法」って何? C++11から導入された言語仕様です。 タイトルの呼び方は自分が勝手に使っているだけで、英語圏だと「trailing-return-type」がよく使われるらしい。 cpprefjp.github.io この仕様を使うと例えば以下のようなコードが int Add(int a, int b) { return a + b; } このようになります。 auto Add(int a, int b) -> int { return a + b; } 何が嬉しいの? この仕様はC++のメタプログラミングで戻り値型の推論を簡単に行う目的で使用されます。 なんだ、そんなC++上級者のための機能なんて下々の人間には関係ないじゃん、とお思いかもしれませんが、この機能にはもう一つわかりやすい大きなメリットがある

    C++erは全員戻り値型の後置記法を使おう - ◯◯◯◯ソフト開発日誌
    mohno
    mohno 2024/05/10
    Visual BasicもPascalも戻り値の型は後置だし、なんなら普通の変数/引数の宣言でも型は後置だけど、いまさらC++で使う気はしないというか、それならRustでもやってみるか、という(←やってみない)「耐えてください」
  • オブジェクト指向宗教史

    OOC 2024 の発表資料です。後のフィードバックを参考に、より妥当な文言に改訂してあります。 ※ コンテンツには、一部特定の宗教思想の迫害に言及する表現がございますが、そのような行いを肯定する意図の内容ではございません。

    オブジェクト指向宗教史
    mohno
    mohno 2024/03/25
    なにこれ。あなたのオブジェクト指向はどこから?みたいな話かな(私はC++)/いまさらAlan KayとかSmalltalkとか言われてもその流れはもうないよね。「あーはいはい また宗教な」
  • 「ソフトウェアはメモリ安全でなければならない」との声明を発表、米ホワイトハウス

    米ホワイトハウス国家サイバー局長室(The White House Office of the National Cyber Director:ONCD)は、2024年2月26日(米国時間)、サイバー空間における攻撃対象領域(アタックサーフェス)を積極的に削減するよう技術コミュニティーに呼びかける報告書を発表した。 ONCDは、IT企業がメモリ安全なプログラミング言語を採用することで、あらゆる種類の脆弱(ぜいじゃく)性がデジタルエコシステムに侵入するのを防ぐことができると述べている。ONCDはまた、サイバーセキュリティの品質を測定するより優れた診断の開発を可能にするために、ソフトウェアの測定可能性の問題に取り組むことを奨励している。 報告書ではメモリ安全性について「メモリ安全性が保たれていないと、意図しない方法でメモリへのアクセス、書き込み、割り当て、または割り当て解除が行われる可能性があ

    「ソフトウェアはメモリ安全でなければならない」との声明を発表、米ホワイトハウス
    mohno
    mohno 2024/03/19
    「メモリの安全性を保つ特性を欠くプログラミング言語として「C」「C++」を挙げた」「「Rust」などのメモリ安全性の高いプログラミング言語の使用を推奨」/深く考察した上で言っているのか、短絡的思考なのか分からん。
  • 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件以上のベンチマーク結果が事実上無効に
    mohno
    mohno 2024/02/19
    「Intelが自社プロセッサのベンチマーク結果を水増しするために特定のベンチマークのスコアを向上させるような最適化」←コンパイラの話か。「影響を受けるのはほとんどが第4世代Intel Xeonプロセッサー「Sapphire Rapids」」
  • 継承はなんでダメ? - まめめも

    「オブジェクト指向の継承を使うな」という主張が広まっているようです。なんでダメになったんでしょうか。 インターネットで見かけた「継承はダメ」という主張をいくつか眺めて、友人と議論しつつ、考えてみました。 「コードが読みにくくなる」 継承があると、メソッド呼び出しが実際にどのメソッド定義を呼び出すのか字面でわからない。 デバッガを使って、親クラスのメソッドに飛んだり、子クラスに飛んだりするのを追いかけないと行けない。 つらい。という主張。 めっちゃわかる。わかるんですが、これは「高度に共通化されたコードは読みにくい」という一般的な側面がかなり大きいような。 たとえば継承の代わりに高階関数を使うと、関数呼び出しがどのクロージャに飛ぶか字面でわからなくなる。 ひどいとコールバック地獄になって何が何やらになります。 継承がことさらにまずい理由を想像すると、すべてのメソッド呼び出しがポリモーフィック

    継承はなんでダメ? - まめめも
    mohno
    mohno 2024/02/10
    継承というかクラスは使い始めると逃げられなくなるので雑な作りだと全体の品質に影響するけど(だから安易に継承使うな)、よくできたクラスは役に立つし、みんなフレームワーク使ってるよね。
  • Learn Modern C++

    This site contains an original, self-contained guide to learning the fundamentals of Modern C++, intended to be the basis of a self-study course. Some Chapters depend upon material presented in earlier ones, so studying them linearly is recommended. There are also regular posts (accessible from the front page) which cover topics or areas of C++ not covered in the course. If you have any queries or

    Learn Modern C++
    mohno
    mohno 2023/12/27
    とりあえず文字列を読んだけど、"char"って「カー(car)」(※少なくともアメリカでは)なのか(←そこ?)。/互換性とモダン化で迷走してるように見えちゃうんだよな。もう使うことはなさそうだからいいけど。
  • C++ コンパイル時パスワード認証 〜コードを不正コンパイルから守ろう!〜 - Qiita

    ラクラムシ「今回は C++ に関する内容ですね!」 謎の女性「どういった内容ですか?」 ラクラムシ「 C++ でコンパイル時にパスワードを要求する方法について説明していきます!」 謎の女性「よろしくお願いします!」 この記事では、C++ でコンパイル時にパスワードを要求する方法について説明します( UNIX 系の環境に限ります)。 コンパイル時パスワード認証 みなさんは、プログラミングをするときにソースコードを公開していますか? ソースコードを公開することで、ほかの人にバグを指摘してもらったり、新機能を提案してもらったりすることができます。 ソースコードを共有できるサイトはいろいろありますが、代表的なものに GitHub があります。 GitHub は無料で利用できるので、ソースコードを共有してみたいという人は使ってみましょう! しかし、「コードを見られるのはいいけど、勝手にコンパイルされ

    C++ コンパイル時パスワード認証 〜コードを不正コンパイルから守ろう!〜 - Qiita
    mohno
    mohno 2023/12/20
    「#include "/dev/stdin"」←な、なるほどね。笑った。
  • Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena

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

    Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena
    mohno
    mohno 2023/11/25
    んー、J++は別にC++Builderを経由したわけじゃなく、Delphi(Object Pascal)から直接J++を作ったんだと思います。あと、「Anders Hejlsbergが会社を追い出されていた」←引き抜かれた、ですね。Bill Gatesから熱烈に誘われたそうで。
  • C++からRustに移行して幸せになる人、そうならない人 その違いは?

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

    C++からRustに移行して幸せになる人、そうならない人 その違いは?
    mohno
    mohno 2023/10/25
    「幸せになる人、そうならない人 その違いは?」←違い、これで分かる?/今のC++は変わり過ぎてついていけないというか、そこまでやるなら他の言語を使うよ、って感じだけど。
  • 人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】

    人気プログラミング言語のランキング、かつて上位3つのひとつだったJavaが凋落傾向【やじうまWatch】
    mohno
    mohno 2023/10/22
    「「TIOBEインデックス」の10月版のランキングによるもので、1位がPython、2位がC、3位がC++、4位がJava」「5位のC#との差はわずか1.2%」/検索エンジンの結果みたいだから情報が残ってればランキングを維持できるのだろうけど
  • 生のポインタは使わないで! Modern C++のメモリ管理

    連載では、Modern C++と称されるC++について、Modern C++らしい言語仕様をピックアップし紹介していきます。第3回は、スマートポインタについて紹介します。高度なメモリ管理には生のポインタの使いこなしが必須という古い常識はもはや通用しません。メモリを効率よく、しかも安全に使うことを実現しているスマートポインタについて理解を深めます。 はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし

    生のポインタは使わないで! Modern C++のメモリ管理
    mohno
    mohno 2023/10/21
    ここのところ、そもそもC++にかかわることもないけど、なんつーか、そこまでしてC++を使いたくないんだよな。だったらマネージドな言語を使えばいいというか。(選択肢があるなら、だけど)
  • [0.0, 1.0) の乱数を得るための“本当の”方法

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

    [0.0, 1.0) の乱数を得るための“本当の”方法
    mohno
    mohno 2023/09/04
    うわっ、めんどくさ。floatなんか使うな……とはいかないのかな、SIMDとかあるし。(現実に困ったんだろうけど)1.0が出てきて困るなら捨てる、で終わらせそう。