タグ

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

タグの絞り込みを解除

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

  • 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はまた、サイバーセキュリティの品質を測定するより優れた診断の開発を可能にするために、ソフトウェアの測定可能性の問題に取り組むことを奨励している。 関連記事 Google、「メモリ安全性」に関する見解と対策をまとめたホワイトペーパーを公開 Googleは、「セキュアバイデザイン:メモリ安全性に関するGoo

    「ソフトウェアはメモリ安全でなければならない」との声明を発表、米ホワイトハウス
    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が出てきて困るなら捨てる、で終わらせそう。
  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
    mohno
    mohno 2023/08/07
    今どきのコンパイラは大変だなあ。/インライン展開は速いままだとコード量が増えるんだろうな。
  • 60歳のC++おじさんを派遣で雇ったがなんでも作れて最強すぎる→各地のベテラン技術者さんの話が興味深い

    おにぎり @suiseigan それぐらいのお年でc++ということは、windowsの生apiをガンガンたたくプログラムできたえたんだろうなぁ、、、 twitter.com/shatiku_master…

    60歳のC++おじさんを派遣で雇ったがなんでも作れて最強すぎる→各地のベテラン技術者さんの話が興味深い
    mohno
    mohno 2023/05/21
    今の人は最初が便利すぎる。/C++は11まで。/ポインターはアセンブリ言語の知識が欲しいよね。/昔は掛け算すらシフトと加算で作っていたわけで。/今のCPUにとって効率的なコードを書ける気はしない。/↓FORTRANは一応現役。
  • Pythonコードを35000倍に高速化したい

    はじめに Pythonは世界的にも人気のあるプログラミング言語ですが、実行速度については課題があります。Pythonの実行速度を高速化したい、という要求は根強く、これまでにも様々な処理系が開発されています。 この記事はPythonで書かれたコードを35000倍に高速化するにはどのような方法があるかについてまとめたものです。 この記事は: Pythonで書かれたアルゴリズムを35000倍に高速化する 事前コンパイル、並列化、SIMD演算を駆使する 最終的に44000倍まで高速化できた なぜ35000倍? 2023年5月2日にModular社よりPythonの使いやすさとC言語の性能を兼ね備える新しいプログラミング言語、Mojoの開発について発表がありました。低レベルのハードウェア向けにコンパイル可能なこと、文法的にはPythonを踏襲しており、既存のPythonライブラリを利用可能であること

    Pythonコードを35000倍に高速化したい
    mohno
    mohno 2023/05/07
    「逆転の発想として、C++を高速化するのではなく、比較対象のPythonを遅くすればどうでしょう?」←逆転すぎるけど、structの導入から考えてもありそう。「比較元のPythonコードは公開されていない」←そうなんだ。
  • CでもC++でもなく「Rust」を使いたくなる“なるほどの理由”

    関連キーワード アプリケーション開発 | プログラマー | プログラミング 独立性の高い小規模サービス「マイクロサービス」の開発において、プログラミング言語「Rust」は一定の地位を築いている。Rustにはどのような強みがあるのか。 CやC++じゃなく「Rust」を選ぶ理由はこれだ 併せて読みたいお薦め記事 連載:GoRustを比較する 第1回:CでもC++でもなくプログラミング言語「Go」を使いたくなる“あの良さ”とは? 第2回:「Go」に期待し過ぎたプログラマーが落胆する“完璧じゃない部分” GoRustの魅力 プログラミング言語「Go」の魅力とは? 「Goで“脱COBOL”」の成功者が語る 「Rust」はなぜクラウドネイティブ開発者の間で大人気なのか? 「C」や「C++」といったプログラミング言語では、開発者は手動でメモリを管理する必要があるが、Rustはその必要はない。これはプ

    CでもC++でもなく「Rust」を使いたくなる“なるほどの理由”
    mohno
    mohno 2023/04/22
    “言語の魅力”はC#が一番なんだけどね。/楽なのはC言語(←オイ)/一般に「××を使いたくなる理由」は、“(いい)仕事があるのか”だと思う(←オイ)/今はフレームワークが多いから“言語だけ”で選べないけど。
  • GPT-4は青色コーダーの夢を見るか - Qiita

    はじめに 2023/3/14にOpenAIがGPT-4という新しいAIモデルを公開しました。 このモデルはさまざまなタスクにおいてChatGPT(GPT-3.5)を大幅に上回る結果を示しています。 この記事ではGPT-4を用いて競技プログラミングがどのくらい解けるのかについて調べてみました。 下馬評 OpenAIが公開した論文によると、GPT-4のCodeforcesレーティングは392だそうです。 これはパーセンタイルでいうと下から5%らしいので、 そこまで競技プログラミングが得意なわけではないようです。 ただし、おそらくこれはGPT-4が完全自動でチャレンジした場合のことだと思われます。 GPT-4が書いたコードを人間がレビューすることでバグを修正し、より難しい問題が解ける可能性があると 筆者は考えました。 TL; DR ChatGPTを用いてAtCoder Beginners Con

    GPT-4は青色コーダーの夢を見るか - Qiita
    mohno
    mohno 2023/03/20
    技術は進歩したなあ、と思うけど、外形的には「検索したら答えをアップしてる人を見つけた」と変わらない気がする。こういうのって、問題を作る方が大変なんだよね。
  • 月単価の高いプログラミング言語ランキング 2位は「Ruby」で87万円、1位は? レバテック調べ

    最も月単価の高いプログラミング言語は何か。IT人材の紹介事業を行うレバテック(東京都渋谷区)が2月13日に発表したランキングによると、1位は「Go」(平均月単価88万円/最高単価130万円)だった。2位には「Ruby」(平均月単価87万円/最高単価150万円)、3位には「Swift」(平均月単価86万円/最高単価200万円)が入った。 Goは米Googleが開発したプログラミング言語。レバテックは「動作が軽く、扱えるデータ量も多いためブロックチェーンや広告、ゲームなどスピードが求められる分野のサービス開発でよく使われている」と解説。スピーディーな開発を行いたい企業を中心に導入が進み、今後も需要は伸びていくのではないかと予想している。 2位のRubyは、短期間で開発ができるため、スタートアップ企業などのWebサービスを迅速に立ち上げたい企業でよく使われているという。案件数は安定して多いが、R

    月単価の高いプログラミング言語ランキング 2位は「Ruby」で87万円、1位は? レバテック調べ
    mohno
    mohno 2023/02/13
    実際には言語というより、求められる分野・プラットフォーム・知見が違う、ということなんだろうけど。