タグ

programmingに関するzyzyのブックマーク (164)

  • 動的型付け言語はそろそろ淘汰されるべき

    黎明期と静的型付けの台頭 (1970年代〜1990年代) C言語やJavaに代表されるように、初期から中期のシステム開発では静的型付けが主流でした。ハードウェアリソースが限られている中、コンパイル時に型を決定し、安全性と実行速度を強固に担保する必要があったためです。 そもそも、当時は動的型付けの概念自体がまだ広く認識されていなかったこともあり、静的型付けが圧倒的なシェアを占めていました。 動的型付け言語の黄金期 (2000年代〜2010年代) インターネットの普及とアジャイル開発の台頭により、「素早く作ってリリースする」ことが重視されるようになりました。コンパイルが不要で、記述量が少なく柔軟なRubyPHPJavaScriptPythonなどが爆発的に普及し、Webの歴史を作りました。 この「開発速度の向上」というメリットは、当時のコンピュータの性能向上とも相まって、動的型付け言語が

    動的型付け言語はそろそろ淘汰されるべき
    zyzy
    zyzy 2026/03/10
    AIというちょっとしたものを作るならまぁなツールと相性が悪いので、もはや利点が潰れつつあるというのはそうか……。
  • Cursorが数百のエージェントを協調させ「ゼロからブラウザを構築」させる実験を実施、1週間で1000ファイル・100万行以上のコードを記述

    AIコードエディターのCursorが、コーディングエージェントを自律的に稼働させ、ウェブブラウザを構築するという実験を行ないました。 長時間稼働する自律型コーディングをスケールさせる · Cursor https://cursor.com/ja/blog/scaling-agents Scaling long-running autonomous coding https://simonwillison.net/2026/Jan/19/scaling-long-running-autonomous-coding/ 既存のエージェントは狭い範囲のタスクは上手く処理できますが、複雑なプロジェクトでは処理が遅くなります。そのため、次の一手として考えられるのは、複数のエージェントを並行して動かすことですが、それらをどのように協調させるかを考えることは難しいものです。 当初、Cursorは事前に綿密

    Cursorが数百のエージェントを協調させ「ゼロからブラウザを構築」させる実験を実施、1週間で1000ファイル・100万行以上のコードを記述
    zyzy
    zyzy 2026/01/22
    その後のブラッシュアップが一番大変だしなんなら無から作るより面倒なわけで……
  • 新しくプログラミング言語を作る際に文字列型をどうするべきか

    この記事は「言語実装 Advent Calendar 2025」の3日目の記事です。 この記事は、新しくプログラミング言語を設計する際に文字列型をどうするべきかについて、私の持論をまとめたものです。 以前「新しくプログラミング言語を作る際に数値型をどうするべきか」という記事を書きましたが、この記事はそれの文字列版です。 推敲が足りずに同じことを何箇所かで繰り返している場合がありますが、冗長性だと思ってご容赦ください……。 【2025年12月4日 更新】small string optimization、スライスとGCの話を追加、Rubyの文言の修正、可変性と値セマンティクスの記述の整理など。完全な変更履歴はGitHubを見てください。 【2025年12月7日 更新】ケーススタディーにJava、D、Schemeを追加。JavaScript文字列のコードポイント単位のアクセスの記述を追加。Sw

    新しくプログラミング言語を作る際に文字列型をどうするべきか
    zyzy
    zyzy 2025/12/04
    Rust形式が良いのでは? と思ったら大体そんな感じの話だった(HaskellのTextがutf-8になったの知らんかった)。JVM系列はここがネックよな。
  • そのコードはなぜそうなっているのか、AIとの対話記録によりコードのコンテキストを保存する。オープンソースのコードエディタ「Zed」が新記録機能「DeltaDB」の開発表明

    そのコードはなぜそうなっているのか、AIとの対話記録によりコードのコンテキストを保存する。オープンソースのコードエディタ「Zed」が新記録機能「DeltaDB」の開発表明 オープンソースとして開発されている高速なコードエディタ「Zed」の開発元であるZed Industries社は、Zedの新機能としてAIへの指示やAIによるコード編集の内容を詳細に保存する「DeltaDB」の開発意向を表明しました。 Zedエディタは、GitHub社が主導して開発し人気のあったAtomエディタの開発者が、Atomエディタの開発終了後に新たに開発を始めたコードエディタです。Rustで開発されていることなどを主な理由として、軽量で高速な動作を大きな特徴としています。 GitコミットではAIとの対話によるコンテキストが失われてしまう 多くのコードエディタと同様に、ZedにもさまざまなAIモデルに対応したAIによ

    そのコードはなぜそうなっているのか、AIとの対話記録によりコードのコンテキストを保存する。オープンソースのコードエディタ「Zed」が新記録機能「DeltaDB」の開発表明
    zyzy
    zyzy 2025/08/26
    AIへの指示書は事実上の仕様書なんだから仕様書を残せるようにした方がいい、と言うのは確かに。
  • Unison 言語から、「次」の言語を考察したい

    関数型まつり以降、Unison 言語が気になっています。 最近、試しにAI用のLSPとか作ってたんですが、既存のプログラミング言語処理系にやや限界を感じています。既存言語の人間用のファイル参照と line:character の補完というインターフェースが、AIの操作単位と噛み合ってないじゃないか?という懸念です。 関数型まつりでも発表があった、関数型ドメインモデリングの Scott Wlaschin 氏いわく「副作用のない関数だけでプロジェクトを構成すれば、関数名はただの名前空間のルックアップテーブルに過ぎなくなり、その合成だけでドメインを表現できる」とし、関数を組み合わせるスタイルの Railway Oriented Programming を提唱していました。 関数型まつりで Unison 関連の発表があったわけではないんですが、関数型言語のうち自分がほしい特性をAI相談したら、そ

    Unison 言語から、「次」の言語を考察したい
    zyzy
    zyzy 2025/08/19
    へー、nixの言語版みたいな感じか。面白そう。エフェクトシステムが前提なのは今時だな。
  • Linux創設者、Googleエンジニアのコードを「ゴミ」と一蹴 | XenoSpectrum

    Linuxの創造主、Linus Torvalds氏が、Googleエンジニアから提出されたRISC-V関連のコードを「ゴミ(garbage)」と一蹴し、プルリクエストを却下した。この出来事は、オープンソース界の巨頭が、品質と規律に対する揺るぎない姿勢を改めて示したものとして、大きな波紋を呼んでいる。 静寂を破った「ゴミ」発言 事件が起きたのは、Linux 6.17カーネルのマージウィンドウ(新機能を取り込む期間)が閉じようとしていた2025年8月8日金曜日のことだ。GoogleAndroidチームに所属するエンジニア、Palmer Dabbelt氏が、次期カーネル向けのRISC-Vアーキテクチャ関連の機能追加を求めるプルリクエストを提出した。 これに対し、週末にかけてTorvalds氏から返されたのは、彼の代名詞とも言える、率直かつ痛烈な拒絶の言葉だった。Linuxカーネルメーリングリ

    Linux創設者、Googleエンジニアのコードを「ゴミ」と一蹴 | XenoSpectrum
    zyzy
    zyzy 2025/08/13
    あー……高級言語圏のお作法をOSに持ってったら怒られた、と。しかもやるなと言っておいた締め切り間際に滑り込ませるお行儀の悪さで。まぁそらそうなるか。
  • プログラミング自動化の果てに

    並列モード 事前準備: Google Calendar Tasks に乱雑にメモを書き留めてる 特にやることを決めずに tmux(or zellij) で3分割で並べる メモを拾って投げ込む ログが止まってないかだけを見ている メインタスクのトークン消費を圧迫しない範囲で、他タスクの流量を調節 Approaching Usage Limit... がでてないと、仕事してる気にならない アイデアモード 並列モードの一つを「思いつきための実験するための枠」に 「このURL/論文読んで、試しに実装して再現して」 「こういう Lint プラグインがほしいんだけど作れる?」 「WebGPUpytorch 移植できる?」 重要: 中身をまったく見てない 一通り走りきった後で、どのように成功/失敗したかを確認 うまくいったらGitリポジトリや利用単位に切り出す ゴール設定からワークフロー設計 ゴー

    zyzy
    zyzy 2025/07/28
    Lean4も行けるんだ!? 凄いな。
  • YAMLは人間が読みやすい、書きやすいと言われてるらしいが、JSONのほうが普通..

    YAMLは人間が読みやすい、書きやすいと言われてるらしいが、JSONのほうが普通に読みやすくないか? インデントは人間に優しいという幻想を捨てよう

    YAMLは人間が読みやすい、書きやすいと言われてるらしいが、JSONのほうが普通..
    zyzy
    zyzy 2025/07/27
    tomlでよくない? と思ってたら既にさんざん書かれてた
  • Programming Vehicles in Games

    Programming Vehicles in Games The fundamental principles needed to get a functional vehicle in your game. From my talk at the Better Software Conference on July the 13th, 2025. Table of Contents The special case of cars Chasing the Feel: The Iterative Path to AV-Racer A Conceptual Model of Vehicle Simulation The Engine The Gearbox Implementing the engine and drivetrain: From Curve to Code The engi

    Programming Vehicles in Games
    zyzy
    zyzy 2025/07/27
    摩擦の図示すげー
  • React は次の10年を生き残れるか:3つのトレンドから考える

    React Tokyo ミートアップ #7 のメイントークのスライド。 https://react-tokyo.connpass.com/event/358171/

    React は次の10年を生き残れるか:3つのトレンドから考える
    zyzy
    zyzy 2025/07/20
    もう12年経ってる事が地味に衝撃
  • amazonの出したIDE「kiro」がめちゃくちゃ未来だったのでClaude Codeユーザーの人はみんな一度試してみてほしい

    amazonの出したIDE「kiro」がめちゃくちゃ未来だったのでClaude Codeユーザーの人はみんな一度試してみてほしい どうもこんにちは、昨日AmazonがVS CodeベースのIDEである「kiro」をリリースしました この分野ではcursorやWindsurf、アドオンですがClaude Codeなど様々な選択肢があります そんな中であえてAmazonが出してきたIDEのコンセプトは Vibe coding ……ではなく、 Viable Code だそうです 細かい説明は公式HPを見てもらうとして、他との違いは 「仕様書駆動開発」 を明確に打ち出している点です AIとのコーディングは難しい 特にClaude Codeを弄り倒している人なら常々感じてると思いますが、AIに適切な指示を与えて適切な作業をしてもらうのは非常に難しいです それを解決しようとみんな「sowで書いて」だっ

    amazonの出したIDE「kiro」がめちゃくちゃ未来だったのでClaude Codeユーザーの人はみんな一度試してみてほしい
    zyzy
    zyzy 2025/07/16
    結局古典的なフローをちゃんとやる仕組みがあるとありがたいという話に戻ってくるわけか。
  • テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum

    テキストエディタのデータ構造 Gap method Piece Table method Piece Table の構造 Piece Table の実装 Piece Table のメソッド まとめ テキストエディタのデータ構造 テキストエディタで採用されているデータ構造にはいろいろあります。 こちらの論文 Data Structures for Text Sequences では各種データ構造について比較検討されています。 多くは、Gap method や Piece table method をベースにしたものが多いのではないでしょうか(図で言う最下部の中心の丸印に当たります)。最近では Rope なども有名ですね。 Gap method Gap method では、現在のカーソル位置で、テキストバッファを2つに分割し Gap を間に挟み、カーソル位置に対する編集(テキスト追加/削除)を

    テキストエディタで使われがちなデータ構造 Piece Table の概要と実装 - A Memorandum
    zyzy
    zyzy 2025/07/12
    言われてみればなるほどの挙動。
  • LLMは新しい抽象化をもたらす - Martin Fowler's Bliki (ja)

    この分野の声が大きい人たちと同じように、私も生成AIシステムがソフトウェア開発にどのような役割を果たすのかについて大きな関心を持っています。LLM(大規模言語モデル)の登場は、アセンブラから最初の高水準プログラミング言語への移行と同じくらい、ソフトウェア開発を大きく変えると思います。その後に開発された言語やフレームワークは、抽象化のレベルや生産性を向上させましたが、プログラミングの質に同じレベルのインパクトを与えるものではありませんでした。しかし、LLMには最初の移行と同程度のインパクトがあると思います。しかも、単に抽象化のレベルを上げるだけでなく、「非決定的なツールでプログラミングするとはどういうことか」という問いを私たちに投げかけています。 高水準言語は、新しいレベルの抽象化をもたらしました。アセンブラを使うときには、特定のマシンの命令セットを考える必要がありました。単純な操作でさえ

    zyzy
    zyzy 2025/07/10
    要するにLLMは実質非決定的コンパイラじゃないか、って話か。まぁそもそも大半のプログラムはコンパイラかデータ整形マシンではあるが
  • テスト用に適当なドメインを注入したいときは .invalid を使うとよさそう - Lambdaカクテル

    tl;dr foobarhogehoge.invalidは絶対にリクエストが飛ばないのでおすすめ あらすじ 書いていたコードは、とあるミドルウェア向けに内部利用するURLを環境変数で受け取るようになっていた。普段は実際の内部のURLが書かれているのだが、テスト時には以下のようにダミーを設定していた: FOOBAR_EXTERNAL_URL="https://example.com/foobardummy" テストではこのURLを利用しないのだが、内部で環境変数のバリデーションを行っている都合上、とりあえず適当なURLを指定しなければ起動してくれないから、こうなっていた。重ねて言うが、実際はこの環境変数を利用していないのでこれでいい。 しかしこれだと、うっかり内部の様子がおかしくなったりエンジニアが狂ってしまった場合に、example.comに当にアクセスしてしまう。なおかつ、セキュリティ

    テスト用に適当なドメインを注入したいときは .invalid を使うとよさそう - Lambdaカクテル
    zyzy
    zyzy 2025/07/03
    知らんかった
  • 値の不変性と変数の不変性についての整理 - kubell Creator's Note

    はじめに 先日「関数型まつり2025」にて「成立するElixirの再束縛(再代入)可という選択 - Speaker Deck」という内容で発表させていただいたのですが、関連して、今回、いろいろな言語における値の不変性と変数の不変性について整理したいと思います。 値の不変性と変数の不変性 まず、しばしば混同されがちな「値の不変性」と「変数の不変性」の違いについてです。 値の不変性 (Immutable Value) こちらは、一度作成された値(データ)そのものが変更できない性質を指します。不変な値を変更しようとすると、実際には元の値を変更するのではなく、変更内容を反映した新しい値が作成されます。 変数の不変性 (Immutable Variable) これは、一度値を代入された変数に、別の値を再代入できない性質を指します。多くの言語で const (JavaScript, C++) や fi

    値の不変性と変数の不変性についての整理 - kubell Creator's Note
    zyzy
    zyzy 2025/06/30
    この辺Scala通ってると「varやvalで使い分けるのが変数の不変性、コレクションが可変に入ってる奴か不変に入ってる奴かが値の不変性」って分かりやすく理解できる奴/この記事はシャドウイングの話してないだろ
  • AIでプログラマ不要になるというのは、プログラミング言語構文わかればプログラム組めるという誤解に基づくのでは - きしだのHatena

    AIで日語で指示をあたえればプログラムを作ってくれるようになって、プログラミング知識がなくても誰でもプログラムが組めるとか、プログラマが不要になるとかいう話が盛り上がってますね。 けど、実際にプログラマをやって、AIコーディングエージェントを使っていれば、プログラミング知識がなくても可能な領域というのはそんなに広くないことを感じていると思います。 たとえば、ほぼプロンプト一発で作ってもらった刺身タンポポゲームがあります。 このプロンプトはこんな感じです。 刺身にタンポポを乗せるゲームJavaのSwingで作って。 刺身かネコが0.75秒ごとに表示されます。 刺身は、白い皿に、赤い板状の切り身が3枚のっています。 ネコは顔だけ表示されます。かわいくおねがいします。 表示のシーケンスは次のようになります。 共通の影が右から中央に0.1秒で移動します。 刺身かネコが0.5秒表示されて、0.1

    AIでプログラマ不要になるというのは、プログラミング言語構文わかればプログラム組めるという誤解に基づくのでは - きしだのHatena
    zyzy
    zyzy 2025/06/23
    ちょっと構文に融通が利くなでしこ感
  • 「関数の副作用の有無」よりも大事なもの | 雑記帳

    プログラミングをやっていると、「関数に副作用がある」とか「副作用がない」あるいは「純粋である」という話をちょいちょい耳にする。そして、「外界の状態を読み取るけど変更はしない関数」、例えば function getTime() { return Date.now(); } のような関数に副作用があるか?みたいな議論が始まったりする。 くだらない議論だ。 何か概念を定義するときは、それが「役に立つ」場面を提示できる必要がある。「関数の副作用」を定義するときは、「関数の副作用」がわかったときに何をしたいのかをはっきりさせる必要がある。「関数のどういう側面に注目したいか」を決めずに「副作用の有無」を論じるのはナンセンスだ。 ここでは、言語処理系(コンパイラー)を実装する者の立場で、関数の副作用について論じてみたい。 一般に、「副作用がない」関数の呼び出しは、「副作用がある」関数の呼び出しに対するも

    zyzy
    zyzy 2025/06/23
    思ってたよりむしろ純粋だと最適化にいろいろと便利なんだな、ってなった。
  • コードの寿命・データの寿命・互換性の寿命

    これを記事にしている 2025 年 5 月の二年ほど前 (2023-06-02) に、縁あって明治大学 情報科学科での特別講義 [1] を担当させてもらいました。 身内の評判は悪くなかったのでスライドは公開していたんですが、単に Google Slides を公開状態にしただけだったんですね。 [2] これではあとから参照・引用するのも難しく、ちょっともったいないかと思ったので、いまさらながら記事の形でまとめなおしておくことにしました。 一年も経てば情報が古くなってしまうコの業界です。賞味期限切れの話もあると思いますが、話のネタにでもしてもらえれば幸いです。 講義の対象と目的 この講義、目的は2つあって、まず「最新の情報科学トピックに触れる」こと。 それから、就職活動が始まる3年生がメインの対象者なので、 今後のキャリアプランとか人生指針に関するいろいろな視点を持ってもらうことです。 この

    コードの寿命・データの寿命・互換性の寿命
    zyzy
    zyzy 2025/05/26
    データ蓄積しない系は基盤系で実質スクリプト実行装置みたいなものという洞察が目から鱗。確かに。
  • Koto Programming Language

    A lightweight scripting language for Rust applications. About Docs Install Playground About News Docs Playground

    zyzy
    zyzy 2025/03/30
    rustで組み込むための小型スクリプト言語
  • TypeScript使いの憂鬱:never型はプロパティを持つか | 雑記帳

    never型とプロパティアクセス TypeScriptにはneverという型があります。先日も記事にしましたが、簡単に言うとこれは「値を持たない型」です。 never型は、あらゆる型に対してその部分型として振る舞います。例えば、never が number の部分型であることは次のコードでわかります: type T<U extends number> = {}; type A = T<string>; // stringはnumberの部分型ではないのでエラー type B = T<never>; // neverはnumberの部分型なのでコンパイルが通る さて、部分型関係と、「その型の式に対してできる操作の集合」の関係について考えましょう。あまり面白い例を思いつかなかったのでアレですが、次の型を考えます: type UserInfo = { name: string }; type D

    zyzy
    zyzy 2025/03/25
    typescriptちょいちょい気持ち悪い挙動するな