タグ

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

  • コードの寿命・データの寿命・互換性の寿命

    これを記事にしている 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 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ちょいちょい気持ち悪い挙動するな
  • 入門リトライ

    • 失敗が⼀時的なものであり、リトライによって回復する可能性がある ◦ ネットワークの瞬断 ◦ サーバ側の⼀時的な⾼負荷 ◦ タイムアウトや接続の遅延 ◦ HTTPレスポンスコード ▪ 502 Bad Gateway ▪ 503 Service Unavailable ▪ 504 Gateway Timeout ⼀時的なエラー

    入門リトライ
    zyzy
    zyzy 2025/03/12
    キャッシュまで作り始めると面倒すぎるぞ……と思ったが最後にGateway通す手が出てきた。キャッシュやるなら要るわな。
  • なぜこれまでなかった? C言語の公式ホームページが新たに公開、テキスト中心の簡潔な内容【やじうまWatch】

    なぜこれまでなかった? C言語の公式ホームページが新たに公開、テキスト中心の簡潔な内容【やじうまWatch】
    zyzy
    zyzy 2025/03/12
    あれ一応公式なんだ?
  • C++しか使ってこなかった男がRustを使ってみた - Qiita

    きっかけ このツイートが流れてきたのがきっかけでした。もともとRustには多少なりとも興味があったので せっかくだから読んで学んでみよう、ということで、プログラミング Rustの第2版を購入して読むことに。 を読んだ感想 基礎の基礎から順を追って学習するといった内容ではなく、サンプルコードやRustの機能の説明をステップバイステップで行っていき、各章の最後に一緒にコードを書いて何か作る、といった方式で せっかちな自分にとっては有難い構成でした。 特に、「C++ではこんな事が起きるけど、Rustではこんなことは起きない」といった、C++との比較を通してRustの特色を説明している点が非常にわかりやすかったです。また、プログラミング言語の歴史や背景にも触れながら、Rustが他の言語では解決できなかった課題をどのように克服してきたのかが理解できる、素晴らしい一冊でした。 最初は思想強めだな、な

    C++しか使ってこなかった男がRustを使ってみた - Qiita
    zyzy
    zyzy 2025/03/12
    C++のマスコット公式が多分ないからこんな非公式ネタ作られてるのかな?/予期せぬエラーは未定義動作とは違うくない?
  • A 10x Faster TypeScript - TypeScript

    While we’re not yet feature-complete, these numbers are representative of the order of magnitude performance improvement you’ll see checking most codebases. We’re incredibly excited about the opportunities that this massive speed boost creates. Features that once seemed out of reach are now within grasp. This native port will be able to provide instant, comprehensive error listings across an entir

    A 10x Faster TypeScript - TypeScript
    zyzy
    zyzy 2025/03/12
    Goが最適になる場面がこんな所にあるとは
  • C language

    The C programming language C is a general-purpose high-level programming language suitable for low-level programming, in other words: a system programming language. It stands out in terms of portability, interoperability, efficiency, and stability. Revisions of the C standard

    zyzy
    zyzy 2025/03/11
    Cの正しいロゴはHelvetica Blackの大文字のCらしい。
  • ノンプログラマーズ・プログラミング - WIP

    書はプログラマではない人向けに、AIを通したプログラミングを前提に、プログラミングの基概念を説明することを試みたものです。 書は非プログラマ・プログラマ・AIの間に共通語彙・共通理解を作ることを目標としています。プログラミングの理解なしにプログラミングができるようになるではありません。 注意: 書きかけです。現在、およそ半分程度はAIに書かせて、自分で軽くレビューしてる程度です。有料設定されていますが、投げ銭用であって全文無料で読めます。将来的に有料になる可能性はあります。

    ノンプログラマーズ・プログラミング - WIP
    zyzy
    zyzy 2025/03/11
    ↓チューリング完全はこの話の切り口だと割と余談の方なので飛ばしても大丈夫かと。どちらかというとグラフ構造の理解のが大事です。
  • The Vine Programming Language

    The Vine Programming Language description Docs GitHub Discord

    zyzy
    zyzy 2025/02/27
    なんかまた新しいのが出てきたな
  • 「ヌル氏」名前のせいでビザが発行されずホテルの予約もできずインターネット契約すら解約できず他人宛の郵便物が届きまくる

    コンピューター分野では「何も示さないもの」を示す語句として「Null(ヌル)」が用いられています。この慣行が影響して姓名に「ヌル」が含まれる人は数々の問題に遭遇しています。 When Your Last Name Is Null, Nothing Works - WSJ https://www.wsj.com/lifestyle/null-last-name-computer-scientists-forms-f0a43b08 Nullはドイツ語で「0(ゼロ)」を意味する単語で、ソートアルゴリズムの「クイックソート」の発明者としても知られるアントニー・ホーア(通称:トニー・ホーア)氏によってコンピューターの世界に持ち込まれました。Nullは多くのプログラミング言語やデータベースなどで用いられていますが、中でもJavaのエラーの1つである「NullPointerException」は「ぬるぽ

    「ヌル氏」名前のせいでビザが発行されずホテルの予約もできずインターネット契約すら解約できず他人宛の郵便物が届きまくる
    zyzy
    zyzy 2025/02/25
    昔のDB作るのが下手な設計引きずってるとこだと、正規化せずに本来のNullの使い方も分からずつい文字列で自作しちゃってたりするんだろうな……。
  • Rustで進化するPayPayのスケーラビリティ

    PayPayの6年の歴史の中で、私たちは急速な成長を遂げてきました。現在、6700万人以上のユーザーにサービスを提供し、日々数百万件の決済を処理しています。しかし、これを成功させるためには、トラフィックと信頼性の要求を満たすための技術的な挑戦が伴います。 PayPayは設立当初からJavaとNodeJSを採用しており、これらの技術は非常にうまく機能してきました。しかし、成長に伴いサービスをスケールアップする必要が生じ、これによりKubernetesクラスターでのCPUとメモリの使用量が増加しました。これにはサーバーコストの増加が伴います。 2023年末、私たちはコアサービスでのトラフィックをより効率的に処理する方法を模索し始め、GraalVMGoRustなどさまざまな技術を調査しました。Rustは、その優れたパフォーマンスとメモリの安全性が保証されていることから、PayPayの多くのユ

    Rustで進化するPayPayのスケーラビリティ
    zyzy
    zyzy 2025/02/21
    おー、もともとGraalVMとかも使ってたんか。実用例がこんな所に。
  • 電卓アプリを作るのはなぜ難しいのか、Androidの「電卓」に施された工夫とは?

    スマートフォンやPCには電卓アプリが搭載されており、簡単な計算であれば瞬時に答えを求めることができます。しかし、正確な答えを表示できるような電卓を開発するのは非常に難しく、その一例としてAndroidに搭載されている「電卓」アプリはどのような工夫で開発されたのかについて、エンジニアのチャド・ナウセアム氏が解説しています。 calculator-app - Chad Nauseam Home https://chadnauseam.com/coding/random/calculator-app iOSの「計算機」で、「(10100)+1-(10100)」を計算したところが以下。来であれば、10100が打ち消されるので答えは「1」になるはず。しかし、計算機による計算結果は「0」となっており、間違いを示しています。 Androidの「電卓」で同じ計算を行ったところ、答えは正解の「1」を示しま

    電卓アプリを作るのはなぜ難しいのか、Androidの「電卓」に施された工夫とは?
    zyzy
    zyzy 2025/02/19
    Haskellなら標準に組み込まれてるライブラリで割と簡単に行ける奴
  • C言語のbitfieldの仕様と実装を調査した話 - /home/tnishinaga/TechMEMO

    C言語にはbitfieldという機能がありますが、この機能にはさまざまな落とし穴があり、注意深く利用しても予期せぬバグや移植性の問題を引き起こす可能性があるとよく言われています。 実際、jpcertを確認すると複数の勧告が出ています。 EXP11-C. ビットフィールド構造体のレイアウトについて勝手な想定をしない INT12-C. 式中で使用される単なるintのビットフィールドの型について勝手な想定をしない CON32-C. 複数スレッドによる隣接データへのアクセスが必要な場合データ競合を防止する DCL39-C. 信頼境界を越えて構造体を渡すとき情報漏えいしない 私は先輩技術者から「とくに組み込みの分野においてC言語のbitfieldは使うべきではない」と教わって生きてきました。 記事ではbitfieldの仕様や問題点、なぜ仕様を避けるべきか、緩和策や代替案について検討します。 目次

    C言語のbitfieldの仕様と実装を調査した話 - /home/tnishinaga/TechMEMO
    zyzy
    zyzy 2025/02/14
    存在をほぼ忘れてた……。リッチなアセンブラとして使うケース用っぽい機能だな。
  • Hacker News 日本語まとめ

    1996 "Authentic" Beta Pokemon Cards Exposed as 2024 Prints via Printer Dots->

    Hacker News 日本語まとめ
    zyzy
    zyzy 2025/02/12
    お、こんなもんあるんだ。
  • 世界のプログラミング言語(57) シンプル・高速・保守性の高さを目標に掲げたV言語はGo言語のライバルになり得るか?!

    V言語はGo言語のようにシンプルさと高速な動作、保守性の高さを売りにしています。毎回いろいろなプログラミング言語を紹介する連載ですが、今回は2019年に公開され、現在も活発な開発が続いているV言語について紹介します。 V言語でFizzBuzzのプログラムを実行したところ V言語について V言語は、2019年にアレクサンダー・メドヴェドニコフ(Alexander Medvednikov)氏によって開発されたプログラミング言語です。当初は、デスクトップ向けメッセージングクライアント「Volt」を開発するために作られました。 開発目標として「シンプル」「速度」「安全性」を掲げています。Go言語のようにシンプルな言語仕様が特徴です。そして、静的型付け言語であるため、C言語と同等の速度で動作させることができます。 なお、V言語のユニークな点ですが、V言語のコンパイラは、V言語のソースコードをC言語

    世界のプログラミング言語(57) シンプル・高速・保守性の高さを目標に掲げたV言語はGo言語のライバルになり得るか?!
    zyzy
    zyzy 2025/02/12
    Zigよりはもうちょっと色々入れてたような気がするんだけどあんまり詳しい区別がついてない
  • map / filter などの高階関数よりも古典的な for文の方が読みやすいと感じるあなたへ

    class: center, middle # map / filter などの<br>高階関数よりも<br>古典的な for文の方が<br>読みやすいと感じる<br>あなたへ BuriKaigi 2025 2025/02/01<br> @gakuzzzz --- class: left, top ## 自己紹介 * 中村 学/Manabu NAKAMURA * Twitter: [@gakuzzzz](https://twitter.com/gakuzzzz) * [Tech to Value Co.,Ltd.](https://www.t2v.jp/) CEO * [Alp, Inc.](https://thealp.co.jp/) Tech Lead --- class: left, top ## はじめに 昨今のメジャーなプログラミング言語では、 `map` や `filter`

    zyzy
    zyzy 2025/02/06
    fold・reduce系も用途は一つなので、全てを曖昧にぶちこんだforでごちゃつかせるよりは整頓出来て分かりやすいと思うよ。大域脱出がある奴はforがいいが(flatMap駆使して出来る場合もあるけど、流石に面倒くさくなりがち)
  • はじめに | OS in 1,000 Lines

    1000行でOSを作ってみよう ​書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 書ではコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法

    zyzy
    zyzy 2025/01/18
    1000行コンパイラだけでなくOSまで行けるのか/プロセスのswitch_contextこれprev_spやnext_spをspやa1にちゃんと積んでなくない?
  • 「リファクタリングの時間」を確保する技術

    はじめに ソフトウェア開発において、リファクタリング、つまりコードの保守性を高める活動は、ソフトウェアの価値を高める上でとても大切ですよね。 しかし、「リファクタリングの時間が確保できない」「リファクタリング実施のための同意が得られない」という話を耳にすることがあります。 リファクタリングは「絶対やった方がいいのは感覚としてはわかっている、でもその必要性ををうまく伝えられない」となりがちな性質があるのです。 この記事では、リファクタリングの時間を確保するために、どんなことを考え、何をステークホルダーに伝え、具体的にどのようなタイミングで実施していくといいのか、について解説します。 ポイントまとめ リファクタリング時間確保のポイントを端的に説明すると、以下の通りになります。 リターンとコストを明らかにする 複数の実施パターンを選択肢として持ち、柔軟に選べるようにする。 その中でも、日頃の小さ

    「リファクタリングの時間」を確保する技術
    zyzy
    zyzy 2024/12/17
    まぁ最初の二つが無難ではあるよね
  • 【初心者必見】Python中級者になるためのテクニック29選 - Qiita

    はじめに Pythonは習得が容易な言語として知られていますが、格的な開発では初心者レベルの知識だけでは対応できない場面が多々あります。この記事では、Python中級者になるために押さえておくべき29個のテクニックを、重要度別に解説していきます。基文法は理解しているものの、さらなるステップアップを目指すプログラマーにとって、必読の内容となっています。 これらのテクニックを習得することで、より効率的で保守性の高いコードが書けるようになり、実務レベルのPythonプログラミングに対応できるようになるでしょう。

    zyzy
    zyzy 2024/12/16
    内包表記書く時は楽なのでつい使ってしまうが、多段に書いて読みにくくなりがちだし、ちゃんとした奴なら後から.filter .mapに書き直す事が多い。