タグ

プログラミングに関するaya_momoのブックマーク (120)

  • 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は全員戻り値型の後置記法を使おう - ペイントソフト開発日誌
    aya_momo
    aya_momo 2024/05/10
    知らんけど、今どきはPythonやRustもそうだし、そっちになっていくのかも。
  • SQLは滅ぶべきか|ミック

    でかい釣り針が来たので釣られてみる。とりあえず以下の資料を読んでいただきたい。そんなに長くないのでサクッと読める。 SQLの記述順序と思考の順序が違うので書きにくいし、エディタの補完機能の恩恵が受けられないのが嫌だ、という意見はもう大昔からある。何度も何度も何度も繰り返されてきた議論である。以下の2011年のスレッドでも「SQLはFROM句が最初に来るべきではないか?」という問いが提起されている。すぐに出てこないが、筆者はこれより古い文書も見た記憶がある。

    SQLは滅ぶべきか|ミック
    aya_momo
    aya_momo 2024/05/08
    それは本当に進歩なんですかねえ。
  • SQL滅ぶべし | ドクセル

    SQL • リレーショナルデータベースシステムと会話するための言語 • 1970年 Codd が RDB モデルと同時に提案 (Alpha言語) • 1974年 Chamberlin と Boyce が改良 • 元々は SEQUEL (Structured English Query Language) だったが、商標登録されていた • 読み方は エスキューエル とそのまま読む (Glliespie 2012)

    SQL滅ぶべし | ドクセル
    aya_momo
    aya_momo 2024/05/07
    こういう結果が先に来るのが読みにくいっていうのネットでたまに見るけど、そんなこと全然思わないな。sum of ~みたいなのは分りにくいですかね。
  • 【熱望】javascript の for 文で var i を宣言するのはやめて下さい - Qiita

    この書き方でも for 文は正常に動作します。 しかしながらこの書き方は 以下の書き間違いが生じることがあります。 for(var i = 0; i < array1.length; i++) { //長い処理 for(var i = 0; i < array2.length; i++) { } } 長い処理の中で i を宣言したことを忘れて 再び i を宣言してしまうことで 外側の for 文のカウントにバグが発生し 期待した動作にならない例になります。 私も他の人が作成した web アプリで このバグを見かけたことがあります。 for の変数を宣言する場合 必ず let で宣言して下さい。 var でなければ正常に動作しないのは 構造的欠陥のハズです。 let array1 = [1, 2, 3]; let array2 = [4, 5, 6]; for(let i = 0; i <

    【熱望】javascript の for 文で var i を宣言するのはやめて下さい - Qiita
    aya_momo
    aya_momo 2024/04/21
    JavaScriptにはPythonのrange的なものは無いの?
  • PythonのUnionをなるべく使わないで欲しい件について - Qiita

    はじめに Pythonの型ヒントにおいて、Unionは複数の型を受け入れることができる便利な機能です。しかし、Unionの過度な使用は、コードの可読性や保守性を低下させる可能性があります。記事では、Unionをなるべく使わないようにすべき理由について説明します。 内容 ここでは2つのUnionを使って欲しくないケースについて説明します。 ケース1 from typing import Union U = Union[str, int] # str | int でも可 def test_union_change(p: U): if isinstance(p, str): p = 1 v = "1" test_union_change(v)

    PythonのUnionをなるべく使わないで欲しい件について - Qiita
    aya_momo
    aya_momo 2024/04/09
    こんな使い方する人いるのか。/そういえば、JavaScriptってこんな感じだったっけ?
  • Python普及しろ協会に入会したい

    この記事はタナイ氏によるPython滅ぼす協会に入会したいを読んでから執筆したものです。 この記事の趣旨はPython滅ぼす協会に入会したいに対する反論という形をとりながら、タナイ氏により「バカの言語」と揶揄され、「使ってエンジニアを名乗るというのは」「滑稽」とまで言われたPythonの立場を再考することです。 追記 記事は「Pythonはこれだけ優れた言語だからみんな使おう!」というものではなく「言うほど酷くないと思うよ」程度のものです。 型アノテーションがあるからと言って静的型付けを軽視しているわけでもなければ、map関数をもってmapメソッドを不要だと言っているわけでもありません。 この記法は嫌い〜この記法が好き〜と表明することは個人の自由ですが、同様に「この記法は実はこういう意味があって〜」という意見があればそれを聞いた上で、物事を判断して欲しいです。もちろん、聞いても意見が変わ

    Python普及しろ協会に入会したい
    aya_momo
    aya_momo 2024/04/04
    もう型アノテーションをつけないで書くことはなくなったな。/C++にand orがあるの、意外と知られていないのね。
  • Googleがプログラミング言語「Rust」に100万米ドルを助成、「C++」との併存・置き換えを図る/メモリ安全性にかかわるセキュリティ問題を減らしつつ、生産性を向上

    Googleがプログラミング言語「Rust」に100万米ドルを助成、「C++」との併存・置き換えを図る/メモリ安全性にかかわるセキュリティ問題を減らしつつ、生産性を向上
    aya_momo
    aya_momo 2024/02/07
    Googleは何かC++の代替言語を開発していなかったっけ?と思って調べたらCarbonだった。どうなったのだろう。
  • まつもとゆきひろ氏が“幻のPerl6”から学んだ教訓 「OSSの最大の敵」と「セカンドシステムの危険性」

    プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。3回目は、「Second System Syndrome」について。前回はこちら。 退屈は最大の敵 まつもとゆきひろ氏:次はPerlですね。ここまでですでに4回ぐらいPerlの話題が出てきています。なぜかというと、私はPerlが大好きなんですね。実は、Perlが大好きなんですが、Perlのプログラミングは大好きじゃないんですね。あと、Perlのソースコードも大好きじゃないんですね

    まつもとゆきひろ氏が“幻のPerl6”から学んだ教訓 「OSSの最大の敵」と「セカンドシステムの危険性」
    aya_momo
    aya_momo 2024/01/14
    読んでないけど、Python3は未だに割り算を/と書いてmypyに型が違うと怒られて直している。一生怒られていそう。
  • プログラミング言語Rustになぜ注目するのか - Qiita

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

    プログラミング言語Rustになぜ注目するのか - Qiita
    aya_momo
    aya_momo 2023/12/07
    C++も知らないでRustを勉強しようなんて無理でしょう。
  • Rustプログラムのデバッグ辛すぎ問題 - Qiita

    この記事は Rust Advent Calendar 2023 シリーズ2 の1日目の記事である。 Rustは良くも悪くもシステムプログラミング言語なので、何も工夫しなければデバッグの体験がC言語と同じレベルになってしまう。例えば「rust lldb」でググると上位に Debugging Rust programs with LLDB is a nightmare というスレッドが出てきてしまう。 使うべきツールを知っていれば幾分かマシな体験にできる。Rustコンパイラはデバッガとして LLDB, GDB, WinDbg/CDB をサポート していて、僕はWinDbGは10年くらい触ってないので、この記事ではLLDBとGDBについて書く。 LLDB Apple SiliconのMacだとGDBが使えないので、必然的にLLDBを使うことになる。 CodeLLDB GDBと同じく、LLDBにも

    Rustプログラムのデバッグ辛すぎ問題 - Qiita
    aya_momo
    aya_momo 2023/12/01
    rust-gdbを使っているが、いろいろあるのだな。/Vecの中は見られるのだが、一つずつが見られないのが辛い。
  • 【AtCoder】Pythonで競プロをするときの注意点まとめ【競技プログラミング】 - Qiita

    これは何? 競技プログラミングPythonでやるときに注意すべき点をまとめました。 言語選択編 PythonAtCoderには5種類ある AtCoderにはPythonの処理系が5つ入っています。具体的には Python (CPython 3.11.4) Python (Mambaforge / CPython 3.10.10) Python (PyPy 3.10-v7.3.12) Python (Cython 0.29.34) SageMath (SageMath 9.5) の5つです。それぞれ特徴があります。 Python (CPython 3.11.4) 一番オーソドックスなPythonです。 一般に(競プロ界隈でなく)Pythonというときはこれを指すと思います。 Python (Mambaforge / CPython 3.10.10) mambaforge経由で導入されたp

    【AtCoder】Pythonで競プロをするときの注意点まとめ【競技プログラミング】 - Qiita
    aya_momo
    aya_momo 2023/11/16
    ちょっと前にPyPy2が無くなったんだよね。強制的に3に移行。仕事では前から3だが。/再帰の数はデフォルトで1000だけど、PyPyは再帰が深いと遅いので、そこまで行くような書き方はしない。1000まで行くのはバグ。100で十分。
  • Mojoプログラミング言語の特徴とは?将来性は?よく分かる入門資料まとめ

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

    aya_momo
    aya_momo 2023/10/30
    Mojoを少し触ってみたけど、まだPythonのようには書けない。
  • シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ

    はじめに 開発部の ikasat です。 皆さんは git, ssh, rsync のような外部コマンドを呼び出すスクリプトを書きたくなったことはありますか? 個人的にこの類のスクリプトは最初はシェルスクリプトとして書くのですが、改修を重ねるうちに肥大化して処理も複雑になり、 後から Python のような汎用プログラミング言語で書き直すことがよくあります。 外部コマンド呼び出しを書き直す際に、Git 操作のために pygit2、 SSH 接続のために paramiko のようなライブラリをわざわざ使うのは大がかりだったり、 rsync に相当するようなこなれたライブラリが存在しなかったりする場合があります。 そのような時は標準ライブラリの subprocess モジュールを利用し、Python から外部コマンドを呼び出すことになるでしょう。 しかしながら、Python のチュートリアルペ

    シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ
  • Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に

    Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に Modular社はPythonの高速なスーパーセットだと同社が位置づける新言語「Mojo」をローカル環境で実行可能にする、コンパイラなどのツール群を公開しました。 Mojo is now available for download locally to your machine! Beyond a compiler, the Mojo SDK includes a full set of developer and IDE tools that make it easy to build and iterate on Mojo applications. Let’s build the future together!https://t.co/KxmLvsxx5e — Modula

    Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に
  • [0.0, 1.0) の乱数を得るための“本当の”方法

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

    [0.0, 1.0) の乱数を得るための“本当の”方法
    aya_momo
    aya_momo 2023/09/04
    途中からどうすればいいのか分かった。
  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

    はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    aya_momo
    aya_momo 2023/09/02
    こんな置換方法があるんだね。でも、覚えられるかな。//は置換まだ覚えられるかもしれないけど、よく(年に数回)使う部分文字列は全く覚えられない。/数列出すのにseq使っていたなあ。教科書に書いてあったのだろうか
  • データ型は明示しないで! Modern C++での型推論

    このように、(1)(2)と「vector<int>」を2回も書かなければなりません。特に(2)では、右辺の型は分かっているんだから、左辺はそれに合わせてよ! という文句が出そうです。 初期化漏れを防止する このように、同じ意味の型を何回も書くのはかったるいな! というときに型推論は役立つわけですが、もっと切実な理由があります。それは、変数の初期化漏れの防止です。JavaでもRustでもそうなんですが、変数は宣言しっぱなしでOKです。宣言しっぱなしというのは、明確な初期化が行われていないという意味です。こうなると、その変数を参照しようとするといろいろとまずいことが起きてきます。 基データ型とかなら、どんな値か分からない ポインタ型とかなら、どこを指しているか分からない(ダングリングポインタ) なので、実行時にプログラムが不可解な動作をしたり、いきなり落ちたりするわけです。しかし、コンパイラ

    データ型は明示しないで! Modern C++での型推論
    aya_momo
    aya_momo 2023/08/18
    一番使いたいのはconst_iteratorでしょ。/だいたい型推論使うけど、ときどきこの型なんだっけと思う。
  • Pythonの罠10選 - Qiita

    皆さんはプログラムを組んでいて、あれ?思った通りの出力結果にならないという経験はありますでしょうか。単純なエラーであればいいですが、文法の理解がい違っている場合、中々ミスに気づかない場合もあります。 今回はそんな知らないと沼にハマるかもしれないPythonの文法を10個ご紹介します。 1つでも新しい知見があると幸いです。 それではいってみましょう! YouTube Pythonチュートリアル(公式ドキュメント)を使って基礎文法を解説しています。 チャンネル登録いただけると励みになります。 罠1:アイテム1のタプルもカンマが必要 タプルはカンマで区切られた値からなるので、アイテムが1つでもカンマが必要です。 忘れるとstr型だったり、int型になり、意外と気づかないです。。。

    Pythonの罠10選 - Qiita
    aya_momo
    aya_momo 2023/08/16
    多くはPython以外でも同じだった。/最近、デフォルト値は一切使わないようにしている。/Pythonが他の言語と違うのは、-1%3=2となるところ。これは非常に助かる。
  • 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
  • Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現

    Python Software Foundationのステアリングカウンシル(Steering Council)は、Pythonのグローバルインタプリタロック(Global Interpreter Lock)を解消する方向で開発を進めていくことを明らかにしました。 グローバルインタプリタロックとは? グローバルインタプリタロックとは、その名前が示すとおりインタープリタ全体で1つのロックを持つことです。 これによりシングルスレッドのプログラムにおいては細かなロック制御が不要となって速度の向上がはかれる一方、マルチスレッドの平行性は制限されるという欠点があります。 また、スレッドセーフではないC言語などによるライブラリとの結合が容易となっています。 Pythonの標準実装であるCPythonでは、以前からグローバルインタプリタロックが採用されていました。 グローバルインタプリタロックを解消する

    Pythonがグローバルインタプリタロックの解消へ、マルチスレッド処理の高速化実現
    aya_momo
    aya_momo 2023/08/03
    マルチプロセスだとメモリをやたらと食うのであまりプロセス数を増やせなくてコアをフルに使えない。マルチスレッドになってくれるとありがたい。