タグ

ブックマーク / soutaro.hatenablog.com (4)

  • TypeScriptのanyみたいな「なんでも代入できる型」を分類する - soutaroブログ

    安全でないもの - void * (C) いろいろあるんだろうけど、Cから始めよう。void*にはなんでもキャストできるし、元の型に戻すこともできる。まあany。問題は変なことをやった場合。(Cはよくわからないから誰かが例を書いてくれ。) キャストによって変な型が得られた場合の挙動は未定義なんだと思う。(知らないから、誰か仕様を調べてくれ。)未定義というのは、コンパイラとか計算機は何をしても良いという意味で、 プロセスの実行を止める 最適化によってコードが消える プロセスのメモリを破壊しながら動き続ける 鼻から悪魔が出る などのパターンがありうる。実際には大体SEGVで落ちると思うんだけど、それは仕様には含まれていない。 ここで「安全である」というのは「プログラムの実行中に未定義の状態にならない」という意味である。つまり、Cは安全ではない。 キャストの検査で安全になったもの - dynam

    TypeScriptのanyみたいな「なんでも代入できる型」を分類する - soutaroブログ
  • Sorbetについて - soutaroブログ

    昨日のAsakusa.rbに行ったらSorbetについて聞かれたので、少し話したんだけど、ちょっときちんと確認しないまま話したらぐだぐだだったので、もう少しまとめておく。 全体的な話として、Sorbetはとても良くできているので、これで良いと思う人はそれで良いと思います。 $ srb --version Sorbet typechecker 0.4.4306 git 31ef906fe5eb572865f2b5d3ea5805793554c676 built on 2019-06-25 06:45:18 GMT with debug symbols Rubyと少し合わないところはあるので、その辺を挙げる。 1. サブタイピング いわゆるDuck typingというやつが、まあ良くない。 sig { params(arg: Eachable).void } def push_from(arg

    Sorbetについて - soutaroブログ
    michael26
    michael26 2019/06/26
  • Rubyでnilとfalseを区別する方法 - soutaroブログ

    補足があります。 Rubyでnilとfalseを区別する方法 - soutaroブログ Rubyでは、ついこの間の2.3のリリースまで、 nil と false を区別する方法がありませんでした。 「 nil か false 」とそれ以外を区別することはできます。 if とか unless でも良いですし、 && でも良いです。Rubyの構文の中には、真理値に応じてなんらかの処理をしたりしなかったりするものがありますので、「偽」である「 nil または false 」と、「真」である「それ以外の値」は区別できるのです。が、「偽」同士の nil と false は区別することができませんでした。 と、進めると、Ruby初心者の皆さんは混乱するかもしれませんね。 nil? があるじゃないかと。 x == nil でいいじゃないかと。しかし、こいつらはメソッドでありユーザーが自由に再定義できるの

    Rubyでnilとfalseを区別する方法 - soutaroブログ
    michael26
    michael26 2018/05/31
  • コーディング面接の例 - soutaroブログ

    プログラマの面接をするときには実際にコーディングをしてもらうべきという話は良く聞くが、もうちょっと細かくどういうお題を出したら良いかとか、どういう風に評価したら良いかとかの話はあんまり聞かない気がする。せっかくなので、ユビレジでの面接で私がコーディングについて確認するときのパターンを、いくつか紹介してみようと思う。 実際にコードを書いてもらうパターン 候補者がどのくらいプログラミングできそうかの予備情報がない場合に、簡単なアルゴリズムを書いてもらうことが多い。例としては、 Linked Listを書いてください Stackを書いてください など。ここで、おもむろに int main(int argc, char* argv[]) { などと書き始める人は、あまり良い印象をもたれない。 class Stack などと書き始める人は上よりは期待できる。 このとき、わざと出題で詳細をあまり明らか

    コーディング面接の例 - soutaroブログ
  • 1