タグ

programmingに関するmas-higaのブックマーク (292)

  • TypeScriptは型安全じゃないからすばらしい - まめめも

    TypeScriptではじめる型システム」という記事をn月刊ラムダノートに寄稿しました。 新刊を発売しました "『n月刊ラムダノート』Vol.4 No.3(2024)発行のお知らせ https://t.co/PGppk1aRRA— lambdanote (@lambdanote) 2024年10月4日 どんな内容? TypeScriptの極小サブセットに対する型検査器を書き、それを通して型システムを体感してみよう、という内容です。 詳しく言うと、boolean型とnumber型と関数型しかないTypeScriptサブセット言語がターゲットです。 型検査器の実装言語にもTypeScript(処理系はDeno)を使います。 TypeScriptづくしの一品です。 わかる人向けに言うと、「型システム入門」という(通称TAPL)の単純型付きラムダ計算に相当する内容をTypeScriptで説明し

    TypeScriptは型安全じゃないからすばらしい - まめめも
  • なるほどTCPソケット ― Rubyで学ぶソケットプログラミングの基礎 | snoozer05.org

    ダウンロードPDF(2MB)書について『Working with TCP Sockets』の翻訳版を、原著者であるJesse Storimerの許可を得て島田浩二が公開するものです。 翻訳版の書名は、同シリーズの先行書『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会』に揃えて『なるほどTCPソケット ― Rubyで学ぶソケットプログラミングの基礎』としました。 翻訳版も原書と同様、無料でお読みいただけます。 翻訳版の原稿は、10年ほど前に刊行を目指して翻訳したものとなっています。もし現在のRubyで動かない箇所や注釈が必要な箇所があれば、snoozer.05@gmail.com まで連絡ください。 公式ハッシュタグ:#naruhotcp 改訂履歴2024-09-23: 公開謝辞Jesse Storimer Original Author@takahashim

    mas-higa
    mas-higa 2024/09/24
    [あとで読む]
  • プログラミング言語AWKのここがLOVE

    プログラミング言語AWKが好きなので、この言語のどこが好きかを語ります。主にAWKを知らない、知ってるけど使ったことが無いかた向けの記事ですが、使ったことがあるかたも「こういう思いで使ってる人がいるのか」と遠巻きに眺めてもらえればと考えます。また、後半で最近出たAWKの書籍についても紹介しているので、そちらも役立つかもしれません。 AWKとは AWKは1977年にAT&Tベル研究所で生まれたプログラミング言語です。AT&Tベル研究所といえばUNIXが生まれたところです。著者もUNIXに縁が深い、この世界のレジェンドばかりです。たとえばKernighan先生はプログラミング言語Cをはじめ、たくさんの書籍の著者として有名です。なんだか強そうな言語ではないかという気がしてきました。 AWKは汎用プログラミング言語ですが、「1行1レコードになっているテキストファイルを最小の手間で処理するワンライナ

    プログラミング言語AWKのここがLOVE
    mas-higa
    mas-higa 2024/08/26
    amd 数えるだけなら grep の方が楽。awk '{print $2, $1}' みたいなのは awk が楽。
  • どちらも「C」が付くのに中身は別物、Javaに似たC#と高難易度のC++

    日経クロステックが実施した「プログラミング言語利用実態調査2023」で「今後、スキルアップしたいと思う言語はどれですか」と複数回答可で尋ねたところ、トップ10の言語が分かった。それぞれの言語の特徴を解説する。 6位 C# Unityも採用する、Javaに似た言語 C#は、2000年にマイクロソフトが発表したプログラミング言語です。当初は“Java対抗のWindows専用言語”といった感がありましたが、近年はゲームエンジン「Unity」で使われるなど、様々なプラットフォーム向けのプログラム開発で利用できる言語になっています。また、フレームワーク「.NET MAUI」を使うと、C#でWindowsmacOSデスクトップアプリ、およびAndroidとiOSのスマートフォンアプリを作成できます。 C#は、名前から推測できる通り、C++を発展させた言語です。ただし、C++よりも様々な点でJava

    どちらも「C」が付くのに中身は別物、Javaに似たC#と高難易度のC++
    mas-higa
    mas-higa 2024/07/25
    Java がむりやり今風の notation を取り入れたから見た目だけ C# っぽくなっただけじゃないの? クラスの設計思想なんかは全然違う。Java だと polymorphic に書けない。C++ は今風の機能を独自の notation で実装してる感じ。
  • 『Rustで作るプログラミング言語』を読んで、かねてから構想していた自作言語を形にした - Islands in the byte stream

    Rustで作るプログラミング言語という書籍が先日発売されました。簡単なプログラミング言語を作ってバイトコードに変換して実行したりネイティブコードに変換して実行してみよう、というで、大変面白く読みました。最終的にまあまあ格的な言語になるので、これを元にするとわりとちゃんとした言語を作れそうです。 この書籍で最終的に作られる言語はこちら: GitHub - msakuta/ruscal: Programming language implementation learning project ちょうど私も、以前から構想していた言語があったので、ちょっと作ってみました。というのも、TypeScriptを設定記述言語としてさまざまなプログラミング言語から使えると便利ではないかとずっと思っていたのです。 この設定言語で複雑なことができる必要はなく、最終的にはJSONに準ずるデータ構造になればよい

    『Rustで作るプログラミング言語』を読んで、かねてから構想していた自作言語を形にした - Islands in the byte stream
    mas-higa
    mas-higa 2024/07/10
    "ほとんどのプログラマーの共通言語であるJavaScript" !!! /[関係ないけど]"tabSize: 4" コードのインデント幅と TAB の表示幅は概念が違う。最近のエディタなら独立して設定できるはず。
  • 競プロ出身者・機械学習出身者の問題コード

    https://anond.hatelabo.jp/20240625191650 競プロ出身者だけじゃなく、機械学習出身者も問題コードが多い 印象の問題ではなく実際に下記のようなコードが多い 念のため言っておくと底辺大や文系出身プログラマーも同様の傾向にある 正常系しか意識していない一番多いのはコレで異常系の動作を全く意識していない 入力値に想定外のものが入ることを考えていなかったりI/Oに関わるエラーについても配慮がない 「エラーが出たらとにかくtry-catchしてログ吐いて終わり」 ならまだマシな方で、「握りつぶして処理続行」みたいなことも平気でやる 「ここの処理でエラーログが出てるから対処よろしく」 「対処しました!(握りつぶし)」 とか滅茶苦茶多い セキュリティに関する意識が低い異常系の話と被るけど基的に性善説でコード書くのでセキュリティの不備がめちゃくちゃ多い API作らせて

    競プロ出身者・機械学習出身者の問題コード
    mas-higa
    mas-higa 2024/06/27
    「正常系しか意識していない」は指示する方が正常系しか意識していないからでしょ。その他もレビューで弾けばいい。
  • C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    C言語(C++を含む)を習得したい人,ポインタを勉強したい人はgcc-14を使いましょう.難しいところは gcc-14 が丁寧に解説してくれます C言語の難しいところ 例を示します.C言語で記述された,たった6行のソースコードです int main() { int buf[10]; buf[10] = 0; return 0; } このソースコードには問題があります.初見でわかるでしょうか? : : : 問題があるのは buf[10]=0 の部分です.C言語でやりがちなミスですが,これがバグやセキュリティホールの原因になります. C言語が難しい理由は二つあります.この手の問題を見逃しやすい点と,この手の問題を理解することが難しい点の二つです gcc 14 に解説してもらいましょう 上記の6行のソースコードをgcc14を使ってコンパイルしてみます ソースコードのファイル名は test.c と

    C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    mas-higa
    mas-higa 2024/06/12
    カラー表示はなぁ...肝心なところが見えなくてコピペしてエディタで見たりしてる。
  • 単純すぎて流行らなかった「FORTH」、複雑すぎてうまくいかなかった「PL/I」 まつもとゆきひろ氏が過去から学んだ、プログラミング言語のあるべき姿 | ログミーBusiness

    プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。2回目は、「単純さはいつも最高ではない」と「大きいことはいつもいいことではない」について。前回はこちら。 単純さはいつも最高ではない まつもとゆきひろ氏:「最も単純なプログラミング言語は何ですか?」という質問をするとですね……文法的にという意味なんですけども。 初期の言語として、Lisp、FORTH、APLなど、みんな1960年代ぐらいに作られた言語ですが、こういうものが挙げられ

    単純すぎて流行らなかった「FORTH」、複雑すぎてうまくいかなかった「PL/I」 まつもとゆきひろ氏が過去から学んだ、プログラミング言語のあるべき姿 | ログミーBusiness
    mas-higa
    mas-higa 2024/01/12
    Sun はモニタに落とすと Forth が動いてなかったっけ? mac addr 書き込むコード書いた記憶
  • 法律のデータ構造と検索

    デジタル庁は、法令標準 XML スキーマに準拠した、現行の法令データをe-Gov法令検索というサイト上で公開しています[1]。今回、この法令XMLをパースするPythonライブラリ ja-law-parser をつくり、法令データの全文検索をしてみました。 この記事では、日の法令とそのデータ構造、法令XMLパーサについて解説し、最後に、それらを使った法令データの全文検索システムを実装する方法をご紹介します。法令検索の実装についても、GitHubリポジトリで公開しています。 この記事は、情報検索・検索技術 Advent Calendar 2023の16日目の記事です。 法律と法令 法律とは 法律の制定と公布 法律と法令の違い 法律の改正 法令のデータ構造 e-Govの法令データ 法令標準XMLスキーマ 法令番号と法令ID 題名 則と附則 条・項・号 編・章・節・款・目 法令XMLパーサ:

    法律のデータ構造と検索
  • Enumとてもつらい、でも負けない - エムスリーテックブログ

    列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2. switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi

    Enumとてもつらい、でも負けない - エムスリーテックブログ
  • 「//このコメントを消したら動かない」は大体Shift_JISの2バイト目が原因で発生する - Qiita

    TL;DR Shift_JISにしただけでコンパイラが通らなくなる恐ろしい事件とその回避法について。 \ (¥)のASCIIコードは0x5c 表、能は良くない UTF-8は神 2023/12/06追記 誤りがあったので訂正します。こんな読まれると思ってなかったので正直ちょっとびっくりしていますが、いろいろコメントありがとうございました。(ツイート等全て拝見しました。) Shift_JISが悪いわけではない(デフォルトのエンコーディング設定の問題)→追記しました UTF-8にはUTF-FSSという仕様でこの問題が回避されている→マジでタメになる知識ありがとうございます OSによってデフォルトのエンコーディング設定が異なるせいで、デフォルト環境での動作がOSにより異なる→なるほど?(調査中) CRLFとLF問題では→なるほど?(調査中) そんな問題何を今更→UTF-8が出てから生まれたからです

    「//このコメントを消したら動かない」は大体Shift_JISの2バイト目が原因で発生する - Qiita
    mas-higa
    mas-higa 2023/12/06
    なんか根本的に \ の意味を理解していないような印象
  • 「それは、本当に安全なんですか?」 セキュリティ専門家が「GitHub Copilot」の全社一斉導入時に考えたあれこれ

    GitHub Copilot 導入時に考えたセキュリティのあれこれ」というタイトルで登壇したのは、freee株式会社のただただし氏。タイミー社主催の「GitHub Copilotで拓く開発生産性」で、「GitHub Copilot 」を全社一斉導入する際に考えるべきセキュリティリスクについて発表しました。 freee株式会社 PSIRT マネージャーのただただし氏 ただただし氏:freee株式会社のただただしと申します。 今日は、「GitHub Copilot 導入時に考えたセキュリティのあれこれ」ということで、Copilotのセキュリティリスクについて語るわけですが、考えてみたら、GitHubの中の人を前にこんなことをしゃべるのは相当大胆な話だと思います。最後にいいことで締めるのでちょっと我慢してください。 自己紹介をいたします。ただただしと申します。PSIRTという組織でマネージャー

    「それは、本当に安全なんですか?」 セキュリティ専門家が「GitHub Copilot」の全社一斉導入時に考えたあれこれ
    mas-higa
    mas-higa 2023/10/20
    "コードを無条件で受け入れるリスク" これはただの IDE の頃からあって、適当な変数に . を付けて出てきたコードを選ぶだけでコード書くみたいなの。
  • 経理からプログラマへ、Lramaの今後、なぜBisonを倒したのか。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.2 - STORES Product Blog

    2023年6月15日に『深掘りRubyKaigi 2023 with spikeolaf & makenowjust』を開催しました。イベントの内容をほぼ全文文字起こし形式でお届けします。この記事は第2部です。 hey.connpass.com 登場人物 ゲスト makenowjust/藤浪 大弥さん spikeolaf/金子 雄一郎さん STORES fujimura/藤村 大介 shyouhei/卜部 昌平 hogelog/小室 直 パーサとの出会い fujimura:金子さんのパートにいきます。簡単にどんな話をRubyKaigi 2023でしたか紹介していただけますでしょうか? spikeolaf:ここ2年ぐらい、主にAnd the WorldっていうRubyKaigiの名物コンテンツを見ていると、パーサへの関心というのは高まってきていて、ここ何年かで何が問題かはだいぶ整理されてきて

    経理からプログラマへ、Lramaの今後、なぜBisonを倒したのか。深掘りRubyKaigi 2023 with spikeolaf & makenowjust 文字起こしレポート vol.2 - STORES Product Blog
    mas-higa
    mas-higa 2023/07/26
    手書きパーサになって文法が変になった言語ってどれだろう?
  • 「配列のすべての要素が条件を満たすなら True を返す」関数を定義するとき、空の配列を渡したら True を返すべき数学的説明

    発端 @fumieval 様のツイート。 空の配列を渡したら True を返すべき この関数に空の配列を渡したら True を返すべきである。仕様によるとか状況によるとか相談すべきとか例外を返すべきかもといった意見もあるようだが、議論の余地がないレベルで True を返すしかない。最大の理由は 「True を返さないと、空集合があらゆる集合の部分集合になるというルールに矛盾するから」 である。これは数学における集合論の定理のひとつであり、「これを認めないとそれに連なる集合論のすべてが瓦解する」というルールのひとつであって、認めない相応の理由があるとすれば「数学のもっとも基礎的なルールのひとつを覆してでも実現しなければならないことがある」という次元での話になる。 少なくとも私は 10 年以上プログラミングをしていてそんな状況に遭遇したことはない。 【2023/06/01 追記】 数式がわから

    「配列のすべての要素が条件を満たすなら True を返す」関数を定義するとき、空の配列を渡したら True を返すべき数学的説明
  • 「マトリョーシカ人形」の先にあるもの、あるいは、処理の流れを追うということ - Qiita

    これは、2022年の Ruby アドベントカレンダー1 の9日目の記事です。 昨日は @universatoさんによる8日目の記事「【Ruby】# frozen_string_literal: trueマジックコメントは必要?【RuboCop】」でした。 明日は石谷 太一さんによる10日目の記事「YAML上の位置を取得する」です。 はじめに タイトルの「マトリョーシカ人形」ですが、伊藤淳一さんのブログに掲載された「マトリョーシカ人形のようなメソッド設計を避ける」という記事にて、コードの構造の話として出てくるものです。 上記の記事(元記事と呼びます)を読んで思うところがあったので、記事を書くことにしました。 ふたつのコード 詳しくは、元記事をご覧いただくとして、そこでは以下の2種類のコードを比較しています。 マトリョーシカ人形なコード 記事では(A)と呼びます: def main パンを

    「マトリョーシカ人形」の先にあるもの、あるいは、処理の流れを追うということ - Qiita
  • Go を2年くらい書いた感想: 意図をエンコードしきれない感じは消えず - blog.8-p.info

    ここ2年くらい、仕事では大体 Go を書いている。jmuk さんが Go言語は、なんというか「ちょうどいい」言語だな、と思っている。異論は認める。 と書いていたけれど、私はやっぱり ScalaKotlin あたりが好きで、これは変わらなそう。 例えばコレクションを map しているのをみると、私は「なるほど、ここではコレクションの要素数は変わらないんですね」と思う。filter だったら「コレクションの要素数は変わるけど、個々の要素は変わらないのか」ということを、あるいは Result を map していたら「ここではエラーのほうは触らないのね」ということを読みとっている。 こういう意図が、素朴な for ループと、if err != nil だと読みきれなくて、いや真面目に字面を追っていけばわかるんだけど、私が「map するか」と思いながら for ループを書いて、その for ル

    mas-higa
    mas-higa 2021/10/25
    for ループから意図を読みとるのはいやだなぁ
  • 型付けは難しい

    ベン・フィードラーのブログより。 型検査と型推論 型検査とは、あるプログラミング言語で与えられたプログラムを実行し、すべての変数や式が正しい型を持っているかどうかを調べるプロセスです。例えば、文字列は文字列に代入され、算術式は数値のみを使用するなどです。一部の言語では型推論を提供しており、コンパイラに自分で正しい型を見つけるタスクも提供します。言語の特徴に応じて、型検査と型推論の問題は、些細なものから決定不能なものまで様々です。 一般的な用語 完全性 正しく入力されたプログラムを全てチェックできれば、タイプチェッカーは完了です。 健全性 正しく型付けされたプログラムのみを受け付けるものであれば、型検査は健全です。 決定可能性 任意の入力に対して、その入力が問題を満足するかどうかを有限時間で計算できる場合、決定問題は決定可能です。決定可能な問題の例としては、素数判定や充足可能性などがあります

    mas-higa
    mas-higa 2021/02/24
    難しい
  • JavaScriptのCollection操作をする時はお願いがある、一呼吸置いてから操作をしてくれ

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    JavaScriptのCollection操作をする時はお願いがある、一呼吸置いてから操作をしてくれ
    mas-higa
    mas-higa 2021/02/04
    ruby の freeze も、そのオブジェクトが参照してる先のオブジェクトまで freeze しないし、されたら困る。参照ってそういうこと。
  • プログラミングを学習する上で気をつけるべきこと―コーディング・調査・質問 - okuramasafumiのブログ

    前置き この記事はRails Girls Japan Advent Calendar 2020の2日目の記事です。昨日はsuperrino130さんのターミナル で文字化けしたら Git Bash を使おうでした。 概要 この記事では「プログラミングを学習する上で気をつけるべきこと」というテーマでいくつかのTIPSを書いていきます。 プログラミングを学習中の(業務歴がない)方あるいはプログラミング学習に興味がある方が主な対象ですが、業務歴がある方でも役に立つことはあるかもしれません。 また、RubyRailsなどの言語やフレームワークに固有の話ではなく、あくまでプログラミング学習一般の話をしたいと思います。 編 手を動かす 実際にコードを書くのが上達への最短ルートであることは間違いありません。を読む・動画教材を見るなどの学習法はもちろん有効ですが、コードを書くことと併用することで更に

    プログラミングを学習する上で気をつけるべきこと―コーディング・調査・質問 - okuramasafumiのブログ
  • プログラミング初心者は変数名やメソッド名を略さない方がいいよ、という話 - give IT a try

    今回のエントリでは先日、僕が勤めているソニックガーデンで話題になったプログラミング関連の小ネタを書きます。 それは何かというと、「プログラミング初心者は変数名やメソッド名を略さない方がいい」という話です。 長い変数名やメソッド名はつい略したくなります。 実際、僕も長い名前を略すときはよくあります。 ですが、略称を使うのは長年の経験から「この略称は一般的だから誤解を招くことはきっと少ないだろう」とか「前後の文脈から、変数の中身は誰が見ても明らかだろう」という想像が付いた場合だけです。 一方、プログラミング初心者の人は経験が浅いため、「一般的かどうか」とか、「誤解が発生しないかどうか」といった判断ができません。 そのため、他の人が見たときに「え、何この変数名?」と思ってしまうような略称を付けてしまう恐れがあります。 たとえば、先日のコードレビューで、初心者の人がrev_noという名前の変数を定

    プログラミング初心者は変数名やメソッド名を略さない方がいいよ、という話 - give IT a try
    mas-higa
    mas-higa 2020/10/21
    省略するのは、プログラムの構造を把握しやすくするためです。1行がやたら長いと何かがスクロールの先に隠れていたり、全画面に広げると他の情報が見えなくなったり、それを避けるために不要な折り返しを…