Rubyが 静的型付けであることの 証拠の発表 三浦英樹
およそ20年前にAlan Kay の講演をきいたことがある。印象に残ったのは、彼が引き合いに出した McLuhan の言葉だ。 I don't know who discovered water, but it wasn't a fish. (拙訳)誰が水を発見したかは知らないが、発見者が魚でなかったことは確かだ。 誰しも信念という水の中を泳ぐ魚のような存在だ。思い切って飛び跳ね空気に触れてみなれば、自分が信念という水の中にいることに気付かない。 ある手法の利点を語るには、その手法の欠点や、他の手法の利点や欠点とできるだけ客観的に比較しなければ説得力がない。ただ、これを実践するのは難しい。この記事では、客観的になれているか自問自答しながら、動的型付き言語と静的型付き言語について比較してみようと思う。 僕は静的な C 言語から、動的な Perl、Lisp、JavaScript を経て、現在で
プログラミング言語の「型」の定番書と言われる Types and Programming Languages (通称 TAPL) の翻訳本が、ついに 3 月 26 日に発売されます。 型システム入門 −プログラミング言語と型の理論−posted with amazlet at 13.03.01Benjamin C. Pierce オーム社 売り上げランキング: 598 Amazon.co.jpで詳細を見る (↑アフィリエイトなのでクリックするなよ!) (個人的に) 読んで欲しい人たちへ 「型」の教科書ということで、わりと Ruby の対極にあるような内容ですが、Ruby ユーザ (動的型付き言語しか知らない人) にこそ読んで欲しいと思ってます。 PHP しか知らない人が PHP の良さを語るのが滑稽なように *1 、型がないことのメリット・デメリットを語るには、本気で型がある言語の考え方を
N1891: Progress toward Opaque Typedefs for C++0X - std-proposals Opaque Typedef(不透明なtypedef)、いわゆるStrong TypedefはC++11では入りませんでしたが、この提案をC++1yに向けて復活させよう、ということで議論が進められています。 構文的なところでは現在、継承ライクな構文や、エイリアス宣言にexplicitやnewを加える構文が主に考えられています。 後ろにいくほど新しい。 // 継承ライクな構文 class Address using public std::string { public: }; // エイリアス宣言にexplicitを付ける using A = int; // 新たな型を導入しない単なるtypedef using explicit B = int; // intか
const が消える件… - 危ないRiSKのブログ 結論を書くと,別に const は消えていない. 単に T が int const& に推論されているだけだ. // 型名のデマングル用 utility // thanks to http://cpplover.blogspot.com/2010/03/gcc.html #include <cxxabi.h> #include <cstdlib> // std::free のために追加 class Demangle { private : char * realname ; public : Demangle( std::type_info const & ti ) { int status = 0 ; realname = abi::__cxa_demangle( ti.name(), 0, 0, &status ) ; } Dema
JavaScriptで型推論付き静的型付け言語のインタプリタを作成しました。これは、サイボウズ・ラボユースのメンバーとして開発をさせていただいたものです。ライセンスは MIT License です。 Ibis Interpreter GitHub 型推論の実装方法を解説するため、メジャーであり気軽に試せるJavaScriptを使って型推論器を書きました。 文法の簡単な説明は Ibis クイックチュートリアル 実装の詳細については JavaScript による型推論器の実装 をご覧ください。
■ [Haskell] The Typeclassopediaを訳しました The Monad.ReaderのIssue 13に掲載されたThe Typeclassopediaという記事が、Functor, Monad, Monoid, Applicative, Foldable, Traversable, Arrowといったような型クラスについて良くまとまっていて、そのあたりを知りたい時の取っ掛かりになりそうだったので翻訳してみました。 作者のBrent Yorgeyさんからも許可がいただけたので公開します。翻訳に慣れていないので変な日本語(特に専門用語の日本語訳はかなり怪しい)があったり、そもそも間違っていたりするかもしれませんので、何か見つけたらコメントを頂けると助かります。 ■ [Haskell] The Typeclassopedia by Brent Yorgey <first
静的型と動的型 静的型と動的型をまぜまぜした言語ほしい Common Lisp? もっとまともな言語で syntax は Ruby でいい 欲をいえば一部 Scala で ScalaをCで書けば解決? Scala は動的型が全然ないからダメ あと個人的な趣味だけどベースは Ruby の syntax の方がいい Cであらゆるvoid *でうければいいよ 値に型は欲しいです…… def foo(a as Fixnum, b as String) as NilClass こんな感じですか しかも省略も可能 : でいいよ キーワード引数で泣くけど CommonLisp だと型は盲目的に信じる Scalaだと,全部書かないといけないから(推論できるところ以外)型検査が出来る どっちが良い? 型が書いてあるところだけ型推論するのが流行りです soft-typing 以来ほそぼそと続いてる話だけど そ
前回、私は底抜けにマヌケなミスを犯してしまった。あるNodeのオブジェクトが、ELEMENT_NODEであるかどうかを比較するのに、 function Foo(node) { // 間違い。 if ( node == node.ELEMENT_NODE ) ; // 正しくは、 if ( node.nodeType == node.ELEMENT_NODE ) ; } などというコードを書いてしまった。 Javascriptには、緩い暗黙の型変換をせずに、同じかどうかを比較する演算子、===が存在する。しかし、この場合、役には立たない。なぜなら、型が違う場合、単にfalseを返すに過ぎないのだ。実行時エラーにすらならない。 できれば、このようなミスを防ぐために、強い静的な型付けがほしい。つまり、C++でいう、enumのような機能があればよい。そして、型が違った場合、コンパイルエラーになるよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く