タグ

Qiitaと言語に関するmohnoのブックマーク (32)

  • 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
    今どきのコンパイラは大変だなあ。/インライン展開は速いままだとコード量が増えるんだろうな。
  • Rustのlet-else文気持ち良すぎだろ - Qiita

    // let 論駁可能パターン = 値 else { never型を返す処理 }; let Ok(val) = reqwest::get(url).await else { return }; このコードの意味としてはreqwest::get(url).awaitがOk(結果)を返してきたらvalに束縛し、ダメだったら関数を抜ける、になります。 if-let式 let-else文の詳細を説明する前に、まずはRustのif-let式について説明いたします。 Rustは式指向言語のためifも標準で式になっています。よく他言語では三項演算子使用で宗教戦争が起きていますが「if"式"があれば争いなんて起きないのに...(トオイメ」といつも思っています。

    Rustのlet-else文気持ち良すぎだろ - Qiita
    mohno
    mohno 2022/11/06
    完全に余談→「if"式"があれば争いなんて起きないのに...(トオイメ」←Visual Basicには「If式」あるけど「教えなくていい」派はいる。
  • エープリルフールなのでJavaScriptの信じがたい話をします - Qiita

    今日はエープリルフールなので、JavaScriptに関する、にわかに信じがたい話(実話)をしたいと思います。実用的な話ではないので、息抜きがてらお読みいただき、「嘘だろ!?」とツッコミながらJavaScriptへの関心を少しでも深めていただければと思います。 思いつきでゆるめにとりとめもなく書いたため、内容がざっくりしているところがあります。詳しい方はコメントなどで補足いただけると助かります🙇🏻‍♂️ できるだけ十分に調査したつもりですが誤りなどあればご指摘いただければ幸いです。 JavaScriptは10日で作られました JavaScriptは最も利用される言語のひとつで、JetBrainsの統計によれば70%近くの開発者が使ったことがあるほど、広く普及している言語です。 ここまで普及したとなると、JavaScriptはどれほど練りに練って、じっくり作り込まれた言語だったのでしょうか

    エープリルフールなのでJavaScriptの信じがたい話をします - Qiita
    mohno
    mohno 2022/04/06
    面白かった。「.js」ドメインの話は知らなかったなあ。「「ならば国を作ろう」という提案がありました」←そう簡単にはいかんからなー。
  • Qiitaでたぶんもっとも参考にしてはいけないPythonの導入方法 - Qiita

    はじめに Pythonは今最も習得希望人口の多い言語である。 それはヘビーなデベロッパーからライトなオフィスコンピューティングまで多岐にわたる。 おそらく「Pythonを使えば○○ができる」と喧伝されているのを見聞きしているからだろう。 この記事ではそんなPythonを一から導入し開発できるようにすることを主にする。 OSのセンテイ Pythonの開発でもっとも優れたOSはWindowsである。 単純にPython.orgの公式から対象のバージョンをいくつか選んでダウンロードして適当にインストールすればそれですべてを始められるので、MacLinuxのようにシステムデフォルトと別verとのインストール共存やパッケージ管理ツールを意識する必要はない。 パスは通るし、複数のバージョンを同時に入れてもビルドバージョンですら分けて共存できるので簡単。 処理系 Pythonはインタプリタ界の変態言語

    Qiitaでたぶんもっとも参考にしてはいけないPythonの導入方法 - Qiita
    mohno
    mohno 2020/12/27
    他の記事に警鐘を鳴らすのかと思ったら「これが」ってことか。「C++の本気」←constexprを使うのか。
  • C# 1.0 と C# 9.0 で同じプログラムを書いてみよう - Qiita

    この記事は C# Advent Calendar 2020 の 2 日目の記事です。1 日目は @RyotaMurohoshi さんの C# 9.0で加わったC# Source Generatorと、それで作ったValueObjectGeneratorの紹介 でした。 私の記事では、.NET Framework 1.0 の頃の C# 1.0 と今の .NET 5 時代の C# 9.0 で同じお題をもとにプログラムを書いてみて比べてみようと思います。これを書くにあたって事前に xin9le さんと 岩永さんに色々見てもらいました!感謝! ではやってみましょう! 記事を書く前の感覚では LINQ の有無と async/await の有無が大きいだろうな…と思ってます。 プロジェクトの設定 Windows 10 に .NET Framework 1.1 SDK を入れようと思えば入れることが出来

    C# 1.0 と C# 9.0 で同じプログラムを書いてみよう - Qiita
    mohno
    mohno 2020/12/02
    (今は縁遠くなってしまったが)「async/await 神かよ…」←このあたりから“背後で何をやっているか”の説明が大変になってた感じはあった。分かっていれば“楽に書ける”のは間違いないんだけど。
  • C++20 Approach to Units of Measurement - Qiita

    この記事はなんですか こんにちは。キャディでアルゴリズム開発をしている「いなむのみたまのかみ」です。 この記事は CADDi Advent Calendar 1日目の記事です。 ここ数年は型で単位をつけるライブラリを作るのが趣味になってしまいずっとそればかりやっている。 最近では、最強の単位計算ライブラリを作りながらC++20の勉強をしている。 そこでライブラリの機能紹介をしながら、勉強したC++20の機能や技法も紹介する記事を書くことにした。 ライブラリ概要 リポジトリはここ。 単なる数値に単位の型が付いて型安全で単位つき計算できるライブラリである。 #include <mitama/dimensional/prelude.hpp> #include <mitama/dimensional/systems/si/all.hpp> #include <iostream> using nam

    C++20 Approach to Units of Measurement - Qiita
    mohno
    mohno 2020/12/01
    「私の知ってるC++」じゃないと言いはじめて久しいなあ。みんな、こういう機能、使ってるんだろうかと思うけど。
  • Cの旧関数宣言 - Qiita

    #define FLOAT_TYPE /* old declaration */ #if defined (FLOAT_TYPE) float #else int #endif add(); /* old definition */ #if defined (FLOAT_TYPE) float #else int #endif add(a, b) #if defined (FLOAT_TYPE) float a; float b; #else int a; int b; #endif { return a + b; }

    Cの旧関数宣言 - Qiita
    mohno
    mohno 2020/10/29
    要するに、この記事が悪い。「古いソースコードではANSI C標準以前の関数宣言がある」←“以前”はvoidがなかったので「旧関数宣言」の例として不適切だし、浮動小数はdouble型で渡されるのでわざわざfloat型で受けるなと。
  • 旧石器時代のポインタをご利用の皆様へ ~provenance入門~ - Qiita

    現代のプログラミング言語ではポインタは単なるアドレスではなく,provenanceを伴った参照として扱われています. 世界は既に変わっています. 概要 ポインタは単なるアドレスではありません. ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています. Provenanceを使うことで,最適化が効きやすくなったり,堅牢なプログラムを書きやすくなったりします. 追記: 次の英語記事を読むとprovenanceが必要な理由についてもっとよく知ることができます.クリックしよう!!!!(2020-12-15) https://www.ralfj.de/blog/2020/12/14/provenance.html ポインタはアドレスではない 次のCプログラムを見てみましょう. #include <stdio.h> #include <string.h> int main

    旧石器時代のポインタをご利用の皆様へ ~provenance入門~ - Qiita
    mohno
    mohno 2020/09/07
    「ポインタのprovenance(由来)」←知らなかった。たしかに異なる領域のポインタを比較してはいけないんだが、変数をグローバルにすると「p == q」が「0」なのに「if文が成立」というおかしな状況になる。なんか迷惑な感じ。
  • TypeScript学習ロードマップ - Qiita

    TypeScript全然わかんない... という状態から、プロジェクトに導入できるまでになんとかなったので、 学習の参考になったものなどをまとめて学習ロードマップを作成いたしました。 私自身もまだまだのレベルですが、これからTypeScriptを勉強したい!という方の道しるべになれば幸いです Level 0: TypeScriptってなんぞや? まず学習する前に、その対象がなんなのか、を見極める作業です。 TypeScriptは altJS の1つです。 JSは元々大規模なコードを組むには不向きな設計になっているので、 altJSというメタ言語でラッピングすることで扱いやすくするものです。 altJSで他に有名なのはcoffeeScriptなどでしょうか。 TypeScriptはtypeと名乗っている通り、静的型付けを特徴としています。 また、jsと互換性があり、jsの上位互換(スーパセッ

    TypeScript学習ロードマップ - Qiita
    mohno
    mohno 2020/08/19
    そのうち……と思いつつ、必要性に迫られないまま時間が経ってしまったなあ。
  • <5> (標準) Pascal へのオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) - Qiita

    <5> (標準) Pascal へのオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi)DelphiプログラミングPascalobjectpascalTurboPascal 5. (標準) Pascal へのオブジェクト指向拡張 1993 年の (標準)Pascal へのオブジェクト指向拡張はドラフトのまま放置されました。 Object-Oriented Extensions to Pascal (1993) 余談ですが、このドラフトには 『J&W』改訂者のジム・F.マイナー氏や、Apple のカート・J.シュマッカー氏、Borland のデビッド・インターシモーヌ氏が参加しています。 5.1. ドラフトのオブジェクト指向拡張案 クラス型は型宣言部 (type) にて "型名 = class (親クラス) ~ end;" として定義します。 3.1.1.

    <5> (標準) Pascal へのオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) - Qiita
    mohno
    mohno 2019/12/10
    「多重継承可能」←C++風Pascalをめざしたのかなあ。多重継承なんて、(OWL5以外)C++でも使ってるのを見たことないんだが。
  • <4> Turbo Pascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) - Qiita

    <4> Turbo Pascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi)DelphiプログラミングPascalobjectpascalTurboPascal 4. Turbo Pascal のオブジェクト指向拡張 Borland は 1989 年の Turbo Pascal バージョン 5.5 において、オブジェクト指向拡張を取り入れました。自社の Pascal に対して行った最初のオブジェクト指向拡張です。 これが Delphi に繋がる (Borland の) Object Pascal の始まりとなるのですが、Borland 自身はこの拡張を Object Pascal とは呼んでいません。オブジェクト指向拡張を強調する文脈では Pascal with Objects や、単に オブジェクト指向拡張 (Object-Oriented

    <4> Turbo Pascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) - Qiita
    mohno
    mohno 2019/12/06
    「Borland は 1989 年の Turbo Pascal バージョン 5.5 において、オブジェクト指向拡張を取り入れました」←なんでオブジェクト指向なんて大事な拡張したバージョンが「0.5」増えるだけなんだよ、って言われたなあ。
  • ウワサのBlawnを触ってみた - Qiita

    どんな言語なの 独自の系統の文法を持つシステムプログラミング言語のようです。コンパイラのツールスタックはflex, bison, LLVMと定番のツールを使い熟して書かれています。 Blawnの特徴は 型名の記述が一切不要 構文の可読性が高い すべての関数/クラスがC++でいうところのテンプレート関数/クラス コンパイル速度と実行速度が速い メモリが安全 とのこと。 型の記述が不要なのは型推論に因るものですが、型推論を知らない人には何をやってるのか分からないようで、混乱を生んでいますね。 下記の記事なども参考にして下さい。 人でもわかる型推論 型推論に関する最近の話題への雑感 可読性については各自で判断して下さい。 関数/クラスがテンプレートになっているのは少し使ってみたら分かるかと思います。後で触れます。 コンパイル速度と実行速度が速いというのは、コンパイルに関してはあんまり遅くなるよう

    ウワサのBlawnを触ってみた - Qiita
    mohno
    mohno 2019/10/24
    ここまでやったのが中学生というのが驚き。新人研修の受講生でも追いつく人はほとんどいないだろう。私が中学生の頃なんて、友達の家で見せてもらったBASICの「A=A+1」すら“成立しないじゃん?”とか思っていた記憶。
  • C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita

    追記: 記事は g++ について書かれており、clang については補足で述べる程度でしたが、clang側の検証結果が間違っておりました。 別途 clang++ で検証した記事も書きましたので、ご覧いただけますと幸いです。 記事の目的 昨日、株式会社フィックスターズの「Fixstars Tech Blog /proc/cpuinfo」に以下の記事が掲載されました。 RustC++に速度で勝った話 - 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
    mohno
    mohno 2019/09/19
    「C++の敗因/Rustの勝因分析」「ループアンローリングをするか否かの最適化オプションが揃っていなかったことによって発生したまやかし」←ちゃんと調べてて偉いなあ。まあ、いまさら Rust を覚える気にはならないが。
  • 「1から100の偶数の和を求めるワンライナー」まとめ - Qiita

    2019年8月11日頃にTwitterで「1から100の偶数の和を求める方法」(ワンライナー)が話題になったので 各言語ごとにまとめてみました。 私の独断と偏見ですが 「2550を直接出力するもの」「公式を使って総和を計算するもの」は 除外しています。 あくまでそれぞれのプログラミング言語の特色が現れるものをまとめたいと考えています。 以前あったズンドコきよしのまとめみたいなノリです。 https://qiita.com/shunsugai@github/items/971a15461de29563bf90 編集リクエスト歓迎です。 新しいワンライナーはコメント欄ではなく編集リクエストにて追加していただけると助かります! --- 8/15 11:30 コメント欄を取り込み&新たにツイートを拾いました。 --- 発端のツイート まにゃです。 いきなり問題! ここまでのツイートを手がかりに P

    「1から100の偶数の和を求めるワンライナー」まとめ - Qiita
    mohno
    mohno 2019/08/14
    なぜ「main() { puts("2550"); }」(C言語)がないのか。(←そうじゃない)
  • Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...) - Qiita

    Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...)ExcelAPIVBA自然言語処理COTOHA 3行まとめ Excel関数一発で高度な言語処理を使えるようにしました 感情推定、固有表現抽出など日語を分析・整理するのにいろいろ使えます Windows + Officeユーザならマクロファイルで誰でも簡単に使えます ※Macだと多分動かないと思います。VBAのHTTPリクエストを有効にできないため。。。 9/1追記: コメント頂きましたが、64bit版OfficeだとjsonParseが動かないようなのでアップデートしてみました。動作確認できていないので自己責任でお願いします https://github.com/korinzuz2/excelcotoha/blob/master/COTOHA公開用64bitExcel対応版.xls

    Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...) - Qiita
    mohno
    mohno 2019/08/05
    「COTOHA API」←ああ、これがそういう処理をしてくれるんだね。Excel VBAって、色々できるからねぇ。
  • なんでもかんでも「バグ」ってひとくくりにしないで - Qiita

    はじめに プログラマがソフトウェアを作るとユーザがつきます。ユーザがそのソフトウェアを使っていて何らかの問題が発生すると「このソフトはバグってる、直して!」と言われることがままあります。それに対して「いや、仕様だから」と突っぱねられることがあります。その後お互いの意見が「バグだ!」「いいや仕様だ!」と平行線になってお互いモヤモヤのまま終わるというのはよくある話です。 なぜこういうことが起きるかというと、原因の一つは「問題」イコール「バグ」という短絡的な考え方です。とくにソフトウェアを作ったり使ったりした経験が浅い人がこうなる傾向があると推測しています。このようない違いは「要件」「仕様」と「実装」という言葉の意味を理解していればある程度解決できます。書はこれらの用語について実例を挙げて簡単に紹介します。 注意点 記事では要件や仕様を定義することが前提となっていますが、とくにユーザと開発

    なんでもかんでも「バグ」ってひとくくりにしないで - Qiita
    mohno
    mohno 2019/02/25
    「int sort(struct *person[] a, int len)」←これって言語は何?
  • C#リフレクションTIPS 55連発 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    C#リフレクションTIPS 55連発 - Qiita
    mohno
    mohno 2018/12/19
    リフレクションは何でもできるからなあ。プライベートなメソッド呼び出しとかもできる。
  • C#クイズとその解説 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    C#クイズとその解説 - Qiita
    mohno
    mohno 2018/12/02
    C++ も文法が複雑と言われるけど、使われる時点で定義が明確な C++ に比べても、C# のコンパイル(&ランタイム)って実装が大変そう。
  • Qiitaでお金が稼げるなら質の高い記事がもっと増えるのではないかという提言 - Qiita

    最近Qiitaで、全ての開発者がQiitaへのアウトプットをやめるべき理由という記事を見つけました。この記事を読んだ率直な感想は、「云わんとしていることは分かるが、解決策間違ってね?」というものでした。 僕は逆に、「Qiitaがこのように変わってくれたら、もっと良記事が増えて、Qiitaへ来る人が増えて、日エンジニア界隈がさらに盛り上がるのではないか」という視点で、Qiitaに投稿するという形で意見を書きたいと思います。 意見とは、タイトルにもあるように、Qiitaでお金が稼げるなら質の高い記事がもっと増えるのではないかというものです。 なぜエンジニアはQiitaに記事を書くのか エンジニアがQiitaにアウトプットをする一番大きな理由は、 日エンジニアが集まるプラットフォームとして最大級だから だと思っています。Qiitaに質の高い記事を書けば多くのエンジニアが注目してくれて、半

    Qiitaでお金が稼げるなら質の高い記事がもっと増えるのではないかという提言 - Qiita
    mohno
    mohno 2018/11/12
    だったら参考書バカ売れだね:-p とはいえシャレにならない程度に売れ筋の参考書でも質が低いことはあるんだが。
  • JavaとJavaScriptとデータと渡し。 - Qiita

    目的 Script 弱い......java 強い Script おまけ......java 体 というJAVA創世記からのプラトン会話を少し学術的に整理します。 SUN JAVAというのはPhotoshopで例えるとJavaScriptはプラグインに相当する。 というのは開発上の仕組みと一例でしかなく正しくはない。 やはり名前が一致してるし実際にはほぼ同じ....では何が違うのか。 JAVA製品パッケージ JAVAはSUNのパッケージの名前でO社のoracleに相当。 JAVAの製品を買うと ・JAVAJAVAapplet ・推奨ブラウザのCSSJavaScript が同梱されてほかにもいろいろ入っていて、それの中味はグレードとか時期で若干違います。 ・ランタイム ・off-line_MANUAL ・配布用ツール ・保守契約およびサポートオンライン等。 JAVAappletを画

    JavaとJavaScriptとデータと渡し。 - Qiita
    mohno
    mohno 2018/11/07
    この人の同僚(いるなら/いたなら)は大変だっただろうなあ。