「型推論」を含む日記 RSS

はてなキーワード: 型推論とは

2025-07-24

anond:20250723030957

JSONと比べたときの**YAMLの「闇深」仕様**、ありますね…。

YAML人間に優しいと言われながらも、その仕様ときに**悪魔的**。

以下、ITエンジニアなら一度は踏んだであろう「地雷」を、**論理的かつ少し自虐的に**まとめてみました:

---

🔥 1. インデント=構文

good:
  value: ok
bad:
 value: nightmare  # ←ここ、インデントずれてて無効。だけど一見からない。

---

💣 2. 暗黙の型推論

  • `true`, `false`, `yes`, `no`, `on`, `off` は**勝手に boolean に変換**される。
  • `2021-12-25` → 日付扱い(Date型に変換されることもある)。
  • `12345` → 数値扱い。先頭0つけると8進数として怒られるケースも。
password: no  # ← 文字列じゃなくて false になる可能性
serial: 012345  # ← 8進数!?エラー

---

🧨 3. スカラー値の地雷原(改行、引用符…)

message: |
  これは複数行の
  スカラー値です。
  • 上記はまだいいが、`>` を使うと**改行がスペースに変換される**という謎挙動も。

---

🕳 4. マージキーアンカー(& と \*)

defaults: &defaults
  timeout: 30
  retries: 3

service:
  <<: *defaults
  retries: 5  # 上書きされるが、複雑になると意図しない結果に
</pre>
	
	

---

😱 5. コメントJSON存在しない → 変換できない

---

🧠 結論YAMLは**人間に優しい顔をしたパース殺し**

  • JSON:**機械に優しい、でも硬い**
  • YAML:**人間に優しい(ように見える)、でも罠だらけ**

---

もしYAML安全に扱いたいなら、\*\*JSON supersetとしての使い方(厳格YAML)\*\*を意識したり、**JSONに寄せて書く**のが一番平和だったりします。

---

要するに、YAMLは「賢く書こうとすると沼る」。

「素直に、簡潔に、禁欲的に」が正解です。

でも誘惑が多いのよね、あの子……。

2025-05-30

C++便利そうな機能

プログラミング言語のC++に暫く離れていたが便利そうな機能が出来ていたんですね。

自分が調べても色々理解しきれていないのでここの紹介で間違いがあったらすみません

std::variant(C++17以上)

異なるクラスを代入して保持するものであり、例えばunionのような機能を実現できるらしい。

クラスが大きくなると使わない変数も出てくるかもしれない。

例えばゲーム武器と鎧が同じクラス場合

武器として使う場合攻撃変数必要でも守備変数必要なく、

鎧として使う場合守備変数必要でも攻撃変数必要ない場合らしい。

このような使わない変数隠蔽バグを作ってしまうことを回避できるらしい

std::optional(C++17以上)

任意の値と無効値を保持できるらしい。

例えば、boolで実装する場合は、関数戻り値をboolで成功か失敗かを返し、欲しい値を関数引数ポインタに返す・・というプログラミングになると思う。

std::optionalでは戻り値として欲しい値と失敗かどうかを一緒に返せるらしい。

std::unique_ptr(C++11以上)

メモリの動的確保だが自分deleteしなくて良いのでメモリ解放忘れを防いでくれる。

スマートポインタは前からあったが現在の推奨はstd::unique_ptr

(C++20以上と記載していましたがC++11とのご指摘を受けたため修正しました。すみませんでした。)

enum class(C++11以上)

列挙クラス

列挙型だが従来の列挙型と異なり変数名が外部と衝突しない

nodiscard(C++17以上)

nodiscard属性が付いている関数戻り値の受け取りが必須となる。

他、auto(型推論)、for each

ちなみにstd::optional<std::string> obj;のように<>内に書かれているのは昔からあったテンプレート機能のようです。

2025-01-10

anond:20250110091742

IDE何使ってんの?

動的型付け言語でもIDE型推論してくれるでしょ

2024-04-28

anond:20240428162800

ワイのとこは型推論や動的型付け使いまくる奴ばかりやで

2023-12-19

Javaって書けば書くほど嫌いになるけどマヌケが作ってる言語だと思う

JVMはいいんだよ。マジで素晴らしい。Javaはあまりにもクソ過ぎる。

不完全な型推論、あまりにも冗長すぎるモジュール機構ファーストクラスじゃない関数、なんでもクラス、ザコみたいな型システムに由来したあまりにも乏しい表現力。

あげてもキリがないほどのクソofクソ。このそびえたつクソに燦然と輝く究極のゴミ、そう我らが springframework。

マジでイカれてるよ。直近のJDK21で導入されたJava言語仕様としては instanceof 以外で正気を疑う進歩のなさ。どうしてこんなゴミがのさばってるんだよ。

まじで新規案件KotlinScalaしろ!!!!!!(Scalaをまともに使える能力判断力もない人間がなんとなくJavaを使うんだろうなあ)

2023-05-19

anond:20230519125253

フレームワークがボイラプレートを生成したり型推論による補完でタブキーを押すだけでメソッドを選べたりするのと変わらんと思うけどな。

2023-05-17

Github Copilotっていうほど使えるか?

コードを書いている時間より読んでいる時間のほうが圧倒的に長いからそんなに便利になった感じがしない。

型推論による補完が既にあるし今のところはそれに頼ってることが多いな。

新規で何か書くときdocker-composeのような設定ファイルを書く時はわりと役立ってる。

2020-12-17

anond:20201217105846

型推論メモリ節約のためじゃなく型エラーを出すことで問題を早めに検知できるようにするためにあるんやで。

動的型付け言語使ってたら誰でも「"12" + 3 → "123"(15にする意図コードだった)」というバグ経験してるやろ。

(まあ上の例はC++文字列結合をプラス演算子オーバーロード実装してしまったのが諸悪の根源という気がするけど)

2020-06-21

C++11ラムダ式Auto変数

これきちんと学習すると、おれらベテランで3週間

そうすると一般コースだと半年から1年

そもそもC++11auto変数というと新規に追加されたautoキーワード型推論だと思う人だっているだろう。

1年のものを3ヶ月コース場合、脱落者はそれなりに出るだろう

それそのものはいいが、厚生労働省との話し合いも待っている。

1例を上げたがほかにもいろいろある。このコースの期間をおれらベテラン専門ならともかく、一般向けに3ヶ月とみつもったのだれ?

2018-10-26

気づいたら変わっているもの

緩やかに変化を続けていて、気づいたら全く別のものに変わっているものが好きです。

例えば、TypeScriptの型システム最初シンプル型推論と型指定だったはずなのに、最近は複雑な型の設計がメインの作業になりつつあります

あるいはタプル的な要素を突っ込んだりしていて、当初のものとは明らかに違う構想が始まっています

TypeScriptバージョンアップのたびに変更を突っ込んできていて、しかもそれが追加機能というよりは機能改善なので1つずつ追わないとつらいですね。

Reactとかもそんな気があり、エコシステムもまた変わりそうな気配があります。今回の変更もまた根本的ですし、改善案も攻めてます

スポーツでも派手なフェイントは見栄えはいいですが、すぐにバレます。全身の位置関係を変えずに、等速で変化するのが一番だましやすいです。

人の成長とかも、かなり低速、等速なので、一緒にいると気づかれにくいですよね。

あとは思いつかないですけど、こうやって徐々に変化して見えないうちに置き去りにするという感覚が本当に好きです。

早すぎて見えないのも格好いいですが、遅すぎて見えないというのも同じように素敵だと思いませんか。

2018-06-12

C#Javaでvarを使うべきでないという人を見ると

型推論と、動的型やバリアント型と区別がついてるのかなと心配になる。

2018-03-20

anond:20180320150537

型推論の結果がまちがってたらどうすんだよ。

型推論ときコンピュータにやってほしい

おれはできないけどおまえらならできるんじゃないか

Java界隈でvarに関する議論がおきているらしいが

C#に導入されたときネットで「使うべきでない」「乱用すべきでない」「使いどころがない」みたいなことを言っていた人たちの9割くらいは、型推論と、バリアント型や動的型の区別がついてなかったと思う。

2017-02-01

http://anond.hatelabo.jp/20170201160608

システムハンガリアンはIDEの発達や型推論で廃れた。変数ポインタを当てるだけで型がわかる。

アプリケーションハンガリアンは、自分もメンバ変数btn~にしたり~Buttonにしたり迷ってたりしてたが、プロパティとして公開するときはハンガリアンにするわけにはいかないので、結局ハンガリアンをやめた。プロパティとメンバ変数機械的対応が取れてたほうが便利。"_プロパティ名"とかにしてしまう。

型よりもその変数意味のほうが重要だという考え方がハンガリアンが廃れた大もとの原因だろう。最近IDE中間一致で補完するのが主流なので、Buttonと打てばボタン一覧が出てくる。

2015-05-13

http://anond.hatelabo.jp/20150513102607

型推論関数関係あるんか?

そもそも動的型付けか静的型付けかは、関数型とはあんま関係なくね?

http://anond.hatelabo.jp/20150513101717

お前は型推論のあるマトモな関数型言語やってから出直して来い

Ruby見たときもコレのどこに関数型のエッセンスがあるんだとか思ったもんだ

今なら何を言ってるかわからんでもないが、

こういう勘違い野郎大量生産した元凶だとも思う

2015-04-18

プログラミングをやってると簡単に優越感を感じられる。マジおすすめ

型推論と動的型の区別がつかない人とか、参照渡しと参照変数の値渡しの区別がつかないとか、自分が一瞬で理解できた概念理解できない人が世の中にはいっぱいいるらしいと知ると嬉しくなる。

2014-06-04

プログラミング言語字面だけで理解してる人たち

swiftJavascriptとかLLみたいに言ってる人沢山いたけど、あれって変数宣言がvarだとか、見た目がスッキリしてるとかそういう印象だけで言ってるんだよね。

以前、C#型推論が導入されたときも(っていうか今でも)動的型やバリアント型と区別がつかなくて「使うな」「バグの元」みたいに言ってる人よくいたし。

あと、C++, Perl, Java, C#, Javascriptあたりをまとめて「C系の言語」と言ってPythonやらRubyみたいな言語比較する文脈で「似てるから」おぼえやすいとかいう人とか。

VB6をやっていてVB.NETなら移行しやすいと思っていて「ぜんぜん違う言語だよ」って言われて驚く人とか。

共通のキーワードを使ってるとかぱっと見た目が似てたら、同じような言語と思ってしまう層がけっこうな量で存在するみたいで、そういう人たちも一応コードを書けてるんだよね。

そういう人たちの脳内ではプログラミングってどう認識されているんだろうか。永遠にからないと思うけど疑問に思ってしまう。

2013-09-22

http://anond.hatelabo.jp/20130922000614

元増田です。

  

そのためのデータ管理という項目をコンピュータ教育指導要領に含めるべきだって話です。

代替オフィスへ移行しても「名前重要なのは変わらないですし、互換性問題からマークアップ」も必要とすべきです。

  

マークアッププログラミング型推論のように行われる可能性は軽量マークアップ言語の登場からあり得ない話では無くなってますけど、それに至るまでは時間が沢山必要だと言って良いはずです。

僕は別に憲法のような確固たる可能な限り変えるべきではないルールとしてデータ管理からコンピュータ教育を推しているわけではないです。

  

ただデータ管理は少なくとも僕の寿命が尽きても広く使われるはずだ。この意見IT業界関係者ならば否定のしようがないことだと思います

SF的な量子コンピュータが使われようがデータ管理はされるし、一般ユーザはしなければならない。違いますか?

2013-06-18

よくわかんない

>静的型付け言語で、

>できれば型推論があって、

これって同時に成り立たせる必要あるの?

http://anond.hatelabo.jp/20130618162024

ログイン ユーザー登録
ようこそ ゲスト さん