LLMにやさしい言語という謳い文句の言語、Suiが話題。 けどこれ、LLMにあまりやさしくなんじゃなかろうか。 https://github.com/TakatoHonda/sui-lang 9月にこういうエントリを書いてます。AI専用のプログラミング言語は現れない - きしだのHatena ここで理由として挙げたのは、この4点です。 すでにAIは独自の言語を持っている 低レベルな記述にはコストがかかる 意味の記述が必要であることに変わりはない 作っても学習させるのが大変 この4点にあてはまっていると思います。 追記: あと、こういうことも10月に書いてます。AIが読み書きするコードも読みやすいほうがいい(トランスフォーマの特性の考慮やリーダブルコードについて追記) - きしだのHatena 去年の4月ですが、こういうことも書いてました。AIがコードを書くようになるなら、AIだけに理

この記事は「C Advent Calendar 2025」の11日目の記事です。 この記事は半分ジョークで半分本気です。 C言語のポインター型の表記の問題 C言語でのポインター型の表記にはアスタリスク * が使われます。例えば、int へのポインターなら int * という具合です。しかし、C言語のポインター型の記法には2つの問題点があります: 問題点その1:複数の変数を宣言したときに非直感的な結果になる。 アスタリスクは型ではなく変数につくので、複数の変数を宣言した時に非直感的な結果になります。次のコードを実行してみましょう: #include <stdio.h> #define reveal_type(x) \ printf("%s: %s\n", #x, _Generic((x), int: "int", int *: "int *", int **: "int **")) int

はじめに 先月のGoCon 2014 Autumn のキーノートスピーチで Rob Pike 先生が、「Simplicity is Complicated」というタイトルで講演を行いました( @tenntenn さんによるレポート記事 )。 その中で、「Go の定数は、裏では非常に複雑なことをやっている」という話をされていました。そのときに触れられていた、TheGoblog の "Constants" という記事を読んだので、それについてまとめます。 TL;DRGo では、異なる型を混ぜた式は禁止し明示的な変換を要求する しかし、定数を毎回変換するのは面倒なので、定数は型を持たないことが可能になっている これによって、Go の定数は、実際の数字のように扱うことができる 参考文献 参考というか、そのままなので、下記を読めば、本記事を読む必要はありません。また、本記事を読んで興味を持っ

今、型がアツい?RubyKaigi2025 Day1: Introducing Type Guard to Steep レポートエンジニアの渡邉(@pjocprac)です。 2025年2月に口コミコムのエンジニアとして働き始めるまでは一切Rubyを触ったことなかった、、、 そんな、Ruby歴2ヶ月ちょっとの新米Rubyistですが、今回は2025年4月16日〜18日に愛媛県県民文化会館で行われたRubyKaigi2025にノリと勢いで参加してきました! 今まではPythonやTypeScriptといった型のある言語で、型に守られたコーディングライフを過ごしていたため、型の書かれていないRubyコードを目の前にしてすごく戸惑いました。 そんなこともあり、Rubyの型検査システムに強い興味を持っています! そこで今回は、Rubyの型検査システム関連のセッションである、tk0miyaさんのI

プログラミング言語のインタプリタの説明で「逐次機械語に翻訳する」という説明を見かけることがある。ググればそういう説明がたくさん出てくるので具体例は割愛する。 しかし、「機械語に翻訳する」という説明は好意的に言えば「誤解を招く言い方」で、率直に言うと「デタラメ」である。 そういう説明を書く人は、自分でインタプリタを書いたことがあるのだろうか?誰かが書いた間違った説明文をそのまま引き写しているのだろうか? もちろん、世の中にはJITコンパイルする言語処理系もあるが、それはインタプリタのように使えたとしても「コンパイラ」なのではないか。 機械語に翻訳しなくてもプログラムは実行できる 「逐次機械語に翻訳する」という説明を書いた人は「プログラムを実行するのだから機械語を生成しているのだろう」と考えたのかもしれない。これは間違った推論だ。 重要な事実として、機械語に翻訳しなくてもプログラムは実行できる
Language choice is always a hottopic! We extensively evaluated many language options, both recently and in prior investigations. We also considered hybrid approaches where certain components could be written in a native language, while keeping core typechecking algorithms inJavaScript. We wrote multiple prototypes experimenting with different data representations in different languages, and did
はじめに こんにちは、ダイニーの ogino です。 この記事では、コードの読みやすさを比較判断するために役立つメンタルモデルを紹介します。本記事を読むと、「このコードは良い / 悪い」という感覚が身につき、その理由を自信を持って説明できるようになるはずです。 コードの読みやすさとは何か コードを読む時には大抵、何か特定の目的があります。例えば、API /foo にリクエストした時の動作を知りたい、ある画面で発生しているバグの原因を知りたい、などです。 この時、コードベースの隅から隅まで読み尽くすのではなく、特定のポイントから出発して関連する箇所を芋蔓式に辿りながら読むはずです。 人が一度に理解して覚えておける情報量には限界があるので、辿らなければいけないコード量が少ないほど当然読みやすくなります。 つまり、ある目的に関連するコードの箇所が局所的かつ明示的であるほどコードは読みやすいと

これまで、型駆動設計を実践することが何を意味するのか、簡潔でシンプルな説明を見つけるのに苦労してきました。誰かに「どうやってこのアプローチを思いついたのですか?」と尋ねられることが多いのですが、満足のいく答えを出せないことがよくあります。そのアイデアが突然のひらめきで浮かんだわけではなく、正しいアプローチを空から引っ張り出す必要がない、反復的な設計プロセスがあると分かってはいるのですが、そのプロセスを他の人にうまく伝えることができていませんでした。 しかし、およそ1ヶ月前、JSON を静的型付け言語で、そして動的型付け言語にパースしたときに経験した違いについてTwitter上で振り返っていた時、ついに私が探していたものを見つけました。そして、そのスローガンはたった3つの英単語で表せます。 Parse, don’t validate (バリデーションせずパースせよ) 型駆動設計のエッセンス

はじめにGo Advent Calendar 2016にて、「簡単な式の評価機を作ってみる」という記事を書きました。 そこでは、抽象構文木(AST)を解析し、go/constantパッケージの機能を使って式の評価器を作るという話を書きました。 この記事では、go/typesパッケージの機能を使うことで、もっと楽して式の評価を行うプログラムを作ってみたいと思います。 なお、この記事を書いた時点におけるGoの最新バージョンは1.7.4です。 定数の評価 「Goのスコープについて考えてみよう」という記事でも触れましたが、go/typesパッケージには、以下のような機能が提供されています。 識別子の解決(identifier resolution) 型推論(type deduction) 定数の評価(constant evaluation) 「go/types: TheGo Type Chec

テーマは「動的型付け言語と大規模開発」まつもとゆきひろ氏:まつもとゆきひろです。Matzチャンネル17回目ということでお送りします。ちょっと前になりますが9月28日に私が技術顧問を始めたクラウドサーカスという会社さんがテックイベントを開催されて、その時のテーマが「動的型付け言語と大規模開発」というテーマでした。 その時に話したこととか、話そうとしたこと、話そうと思っていたんだけど時間の関係で話せなかったことなどを補足する意味も含めて今日はちょっと放送しようかと思います。というか、分量が多いので2回に分けて話そうかなと思っています。 このクラウドサーカスのイベントのテーマは別に私から指定したわけではなくて、先方が「こんなテーマで話したいんだ」とか「聞きたいんですけど」ということで設定されたんですね。 「動的型付け言語と大規模開発」。例えばRubyとか、Ruby onRailsとかで開発をし

By all accounts,TypeScript has been a big success forMicrosoft. I've seen loads of people sparkle with joy from dousingJavaScript with explicit types that can be checked by a compiler. But I've never been a fan. Not after givingit five minutes, not after givingit five years. Soit's with great pleasure that I can announce we're droppingTypeScript from the next big release of Turbo 8. The fac
Today we’re excited to announce the release ofTypeScript 5.0! This release brings many new features, whileaiming to makeTypeScript smaller,simpler, and faster. We’ve implemented the new decorators standard, added functionality to better support ESM projects in Node andbundlers, provided new ways for library authors to control generic inference, expanded ourJSDoc functionality,simplified con

昨日Twitterに書いた内容に、sivchariさんとhajimehoshiさんからリプライをいただいたので、備忘録的にまとめておきます。 発端 interface型と非interface型の後方互換性について interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開されたinterface型を変更する場合の後方互換性についてのまとめ 非interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開された非interface型を変更する場合の後方互換性についてのまとめ その他の後方互換性を崩さない機能拡張のパターンの紹介 他から実装できないinterfaceにする interfaceを合成する 内部用のinterfaceを分け、構造体型を公開する まとめ 発端 昨日、フュ
Using functionalprogramming language changes the way you write code in a number of ways. Many of the changes are at a small-scale. For example, you learn how to express computations in a shorter, more declarative way using higher-order functions. However, there are also many changes at a large-scale. The most notable one is that, when designing a program, you start thinking about the (data) types
初めての英語45分トークとして、EuroPython 2021に登壇してきたので感想を書きます 参加者的な話 タイムゾーン(JSTで16:00 - 24:00くらいの時間帯にセッションがあるような感じ)の問題と、オンラインだということからか、しっかり時間を取って集中してセッションを聞けなかった。 例: 私が登壇した日のタイムテーブルは15:00-24:00だった PartyやSocial Event*1は英会話に自信がないけれど、参加したかったができなかった。残念 参加者用チャットとは別に、交流用のWonder(oViceのようなスペース)があったけど、閑散としていたのでツール分けるのは体験としてよくないな、と思う。 Speakerとして セッションページ: ep2021.europython.eu 発表資料:speakerdeck.com 準備したこと 前月まで: Open Sourc
TypeScript 4.1にTemplate String Typesという機能を追加するPRが上がっていて、新しいおもちゃを与えられた犬となって色々遊んでしまった。Template String Types is 何Template String Typesで何ができるか的な話については、まぁhttps://github.com/microsoft/TypeScript/pull/40336 を見るなりしてもらえばいいんだけど、端的にいうとJSのTemplate stringよろしくLiteral TypeをTemplateで合成した結果を型として扱えるようになる機能。 type GetterName<T extends string> = `get${capitalize T}`; type T10 = GetterName<'foo'>; // 'getFoo;あと、同じPRに

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く