タグ

ブックマーク / qiita.com (25)

  • null安全でない言語は、もはやレガシー言語だ - Qiita

    これらは、表中の「リプレース対象言語」に挙げたように、多くのメジャー言語に対する代替手段でもあります。 Java の代わりには Kotlin や Ceylon が、 JavaScript には TypeScript や Flow が、 Objective-C には Swift が、そして PHP には Hack があります。 Python は自身に null 安全 を取り込みました。 Crystal は直接 Ruby と連携して使えるわけではありませんが、 Ruby 風の null 安全 な言語です。 RustC++ の代替を目指して開発され、 Firefox の一部で C++ のコードを置き換えるのに使われています [^100] 。 null が引き起こしてきた数々の問題を考えると、僕は、 null 安全 は GC (やその他の安全なメモリ管理手法)に匹敵するプログラミング言語の進

    null安全でない言語は、もはやレガシー言語だ - Qiita
    Nnwww
    Nnwww 2016/11/07
    haskellに?.が無いとのことだけど,a->maybe bのチェーンなら>>=を並べるだけで出来るし,途中でf::a->bを挟みたくなったら`fmap` f で良い筈,そもそもそういう事をしたい状況はこの言語では多くないと思うけど
  • 【長編ポエム】関数型言語が分からんお前でもPythonなら分かるやろ:第1回 関数を受け取る関数は便利だよ編 - Qiita

    これは、関数型プログラミングの特徴を Python で説明した長編ポエムです。 IQ145 の美少女は出てきませんので、過度な期待はしないでください。 【対象読者】 関数型言語は知らないけど関数型プログラミングの初歩を勉強したい人 (Python を知らなくてもなんとなく分かるように書いたので、PHPJavaJavaScript の人も読んでみてください) 【連載記事】 第1回 関数を受け取る関数は便利だよ編 (←今ココ) 第2回 関数を生成する関数はすごいよ編 はじめに 「なぜ関数プログラミングは重要か」という文章があります。タイトルの通り、関数型言語がいかに役に立つかを紹介している文章です。長いですが、3 行でまとめるとこんな感じ: ソフトウェアがどんどん複雑になるので、モジュール化が重要 関数型言語は、強力なモジュール化機能を提供している 特に「高階関数」と「遅延評価」が

    【長編ポエム】関数型言語が分からんお前でもPythonなら分かるやろ:第1回 関数を受け取る関数は便利だよ編 - Qiita
    Nnwww
    Nnwww 2015/02/06
    内包表記の方が速いそうですし、[for in if]も便利ですが、セマンティクス的にはmap,filterを使ったほうが良さそうな気もします
  • What is Gradual Typing: 漸進的型付けとは何か - Qiita

    稿は Python に型アノテーションを追加するという PEP 483 - The Theory of Type Hinting の提案で参照されている Jeremy Siek (@jeremysiek) 氏と Walid Taha 氏が開発した漸進的型付けについての入門記事の翻訳です。 What is Gradual Typing Python 3.5 で導入された型アノテーションについて興味がある方は以下を参考にしてください。 Python と型ヒント (Type Hints) と #pyconjp [翻訳] PEP 0484 -- 型ヒント (Type Hints) Revenge of the Types: 型の復讐 私自身、型システムに明るくないため、一部未訳の部分があったり、勘違いや誤訳もあると思います。そういった誤りを見つけたら編集リクエストを送ってもらえると助かります。

    What is Gradual Typing: 漸進的型付けとは何か - Qiita
    Nnwww
    Nnwww 2015/01/29
    CSharpのような言語も動的型と静的型を選べるわけだけど、あれは選択的型付けと漸進的型付けどっちなんだろう?
  • 契約による設計から見た例外 - Qiita

    正しさは相対的な概念である。 Bertrand Meyer [1] Bertrand Meyer氏は「契約による設計」という概念から例外を導出し、例外の必要性をエレガントに説明しています。また、彼の説明に則れば今までの議論と比べて例外をいくぶんか形式的に扱えるようになります。契約による設計を学ぶ前に、プログラムの正しさについてもう一度考えてみましょう。 プログラムの正しさ あるプログラムが正しいかどうかを判定するにはどのようにすれば良いでしょうか。最も簡単な方法は、あるプログラムの正しさを形式的に定義する事です。より直接的に言えば、あるプログラムの正しさを簡単な論理式で表現します。その論理式が真ならばそのプログラムは正しい。偽ならばそのプログラムは正しくありません。 これだけだと関数の戻り値を検査すれば良いだけのようにも聞こえます。しかし、そう簡単な話ではありません。純粋でない言語の場合、

    契約による設計から見た例外 - Qiita
    Nnwww
    Nnwww 2014/12/04
    今まで「機構としての例外」しか知らなかったので本当にためになる。今回の例ではデバッグビルド時に注記した事前事後不変の各条件を検証するメタクラスとか書くと便利に使えそう。
  • Ruby2.2 ではアレが死ぬほど使いやすくなるの! - Qiita

    そうです、Matrix(行列)クラスに色々入る予定のようです. .... いやもっと伝えるべきモノが他にあるとの怒号が今にも聞こえて来そうですが... 「すみません今日の所は行列の紹介をさせて下さい.」 多くの方は興味もないであろうけど、 Rubyには行列やベクトルを扱う Matrix クラスというものがありまして、 Ruby2.2では色々新機能やバグfixが入るようです. 「行列ベクトル演算するならRubyよね」 と言われるくらいのモノにはなるのではないでしょうか? 日はRuby2.2以前にあるものも含めMatrixのマジですごい所を紹介します. 使わないともったいない!すごいMatrix, 楽しく学ぼう! 1. LU分解 LU分解が出来るという事は... n元連立方程式をいとも簡単に解く事が出来ちゃうの # 2x + y = 2 # x + 2y = 3 Matrix[ [2, 1]

    Ruby2.2 ではアレが死ぬほど使いやすくなるの! - Qiita
    Nnwww
    Nnwww 2014/10/09
    誰かNumPyと比較してほしい