タグ

2021年8月19日のブックマーク (7件)

  • F*でプログラムの正しさを証明する

    セキュリティ・キャンプ全国大会2021 オンラインで行われたLT用のスライド資料です

    F*でプログラムの正しさを証明する
    mukaken
    mukaken 2021/08/19
    “F⋆ 最近出てきた証明支援系 • Microsoft Research や INRIA が作っている(2016 年~)”
  • [超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由

    先日、関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう と言う記事を書かせていただきました。納得の声をたくさん頂きましたが、それでは純粋関数型プログラミング言語を闇雲に初めて勘所がわかった!とはすぐにはならないと思い、順調にステップアップするための記事を書こうと思いました。また、考え方が違うだけで関数型プログラミング言語を学んだり使用する理由は特にないとの意見をいただいたので、改めて実例と共に関数型プログラミング言語を確認していただければなと思います。 今回の記事ではFizzBuzzとElmを利用して解説をしていきたいと思います。FizzBuzzは使い古された例ですが、それ故に誰でもロジックや結果が理解できる、考え方の違いを比べるために十分活用できるため使用させていただきました。Elmはオンラインの実行環境で、誰でも実行・編集が可能であり、構文がシンプルで実用的なも

    [超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由
    mukaken
    mukaken 2021/08/19
  • TypeScriptで学ぶ代数的データ型

    代数的データ型とはなにか 代数的データ型とは、要素の個数の足し算と掛け算のアナロジーで語ることができる型のことを指すというふわっとしたコンセンサスがありますが、 厳密に「これが代数的データ型である」という定義はおそらくありません[1]。 また、代数的データ型はいわゆる関数型言語で実装されることが多い言語機能であり、 代数的データ型を重用するプログラミングスタイルは関数型の一派としてみなされる傾向がある[2]と思っています。 記事では数学的な説明やアナロジーは用いず、なるべく具体的なコードを提示します。 そして、代数的データ型という言葉を「かつ」と「または」を表すことができる型として使います。 更に、「または」の型はコンパイラによって漏れなく徹底的にチェックされる必要があります。 詳細は後ほど説明します。 記事の構成 まず、記事における「代数的データ型」とはなにかを説明し、それをコード

    TypeScriptで学ぶ代数的データ型
    mukaken
    mukaken 2021/08/19
    “代数的データ型を重用するプログラミングスタイルは関数型の一派”
  • 関数型プログラミングなんもわからん。を考えようと言うイベントを開きました。

    先日Connpassにて、関数型プログラミングなんもわからん。を考えようと言うイベントを開かせていただきました。 関数型プログラミングがわからない! と言う方達の疑問に対して、普段関数型プログラミング言語を使っているわかる人たちが回答をして行くと言うスタイルのイベントでした。関数型プログラミング言語と一口に行っても、Elm, Scala, Haskell, Clojure, Elixir, F#と様々な言語があり(これは今回参加した人たちの使っている言語で、関数型プログラミング言語の一部にしか過ぎません)何が正解かなどはわからない中での意見の集約といった形のため参考程度にご覧ください。結果イベントとしては様々な視点からの意見が聞けて満足という声が多かったです。私自身知らないことがたくさん知れて勉強になり楽しかったです。 イベントの内容は、Figma上で開けるFigJamファイルとして、公開

    関数型プログラミングなんもわからん。を考えようと言うイベントを開きました。
    mukaken
    mukaken 2021/08/19
  • コンパイラ - 共立出版

    書は、プログラミングやコンピュータに興味を持つ者が、コンパイラの原理と構造、さらにその開発方法を基礎から理解するためのテキストである。 コンパイラの理解は、コンピュータの原理やプログラムの実行のしくみを理解する基礎である。そこで書では、チューリングらによって確立された計算可能性の理論と万能計算機の構築方法を基礎として、コンパイラを含むプログラミング言語処理系の構築原理とその構造を解説する。これらの理解を基に、コンパイラ実現のための主要な基盤技術を、その原理とその背後にある考え方を含め習得することを目標とする。この考え方を理解することができれば、従来難解と受け止められているLR構文解析や多相型の型推論などの技術も見通し良く習得できる。 これらのコンパイラの原理と構造の理解に加えて、先端的言語コンパイラの開発方法を習得するために、実際に実行可能なインタープリタと抽象機械へのコンパイラを開発

    コンパイラ - 共立出版
  • ちょっと複雑なシェルスクリプトをJavaScriptで書く - lacolaco-engineering

    ちょっと複雑なシェルスクリプトを https://github.com/google/zx を使って書くとJavaScriptプログラマにとってはメンテナンスしやすい /lacolaco/lacolaco.iconはzx歴 3-4ヶ月ってところ (2021-08) 嬉しいところ async/awaitが使える 配列が扱いやすい モジュールで再利用しやすい 他のNode.jsライブラリと併用できる Prettierでフォーマットしやすい Lintしやすい エディタ支援が安心 Made by Google 微妙なところ JavaScriptプログラマ以外にとっては無用 とはいえシェルスクリプトによほど慣れてる人以外はよく整理されたJavaScriptのほうがセマンティクスを読み取りやすいのではないか スクリプト自体はこんな感じ(公式READMEより) code:js #!/usr/bin/en

    ちょっと複雑なシェルスクリプトをJavaScriptで書く - lacolaco-engineering
  • 総当たり攻撃時のパスワード最大解読時間の表(by 上野宣)について分析した - Qiita

    昨日、上野宣(@sen_u)さんがパスワードの総当りに要する時間の表をツイートされ、話題になっています。 総当たり攻撃時のパスワード最大解読時間の表を日語化した。https://t.co/cVSNUZkAKv pic.twitter.com/rtS8ixwOqi — Sen UENO (@sen_u) August 17, 2021 1万件を超えるリツイートがありますね。大変よく読まれているようです。しかし、この表は何を計測したものでしょうか。上野さんにうかがってもわからないようでした。 何ですかね?パスワード空間が大きくなると解読に時間が掛かるということくらいがわかりますかね。 — Sen UENO (@sen_u) August 17, 2021 一般に、パスワードの総当たり攻撃(ブルートフォースアタック)というと、以下の二通りが考えられます。 ウェブサイト等でパスワードを順番に試す

    総当たり攻撃時のパスワード最大解読時間の表(by 上野宣)について分析した - Qiita