2015年3月21日 (土)

[プログラミング] ** 演算子 in Scala

Int のメンバーとして ** を定義してあげればいいみたいなので、調べてみたら implicit conversion を使えばいいらしい。 こんな感じ。

import scala.language.implicitConversions

class DoubleWithPow(d: Double) {
  def **(n: Double):Double = Math.pow(d, n)
}

object Pow {
  implicit def toDoubleWithPow(d: Int) = new DoubleWithPow(d)

  def main(args: Array[String]) {
    var i = 3
    var n = i ** 2;
    println(n);
  }
}

| | コメント (0) | トラックバック (0)

[プログラミング] ** 演算子 in Java and Scala

あれっ。そうか。**演算子は Java には、なかったのか。

$ cat pow.java
class Pow {
    public static void main(String... args) {
        int i = 3;
        int n = i ** 2;
        System.out.println(n);
    }
}
$ javac pow.java
pow.java:4: error: illegal start of expression
    int n = i ** 2;
               ^
1 error

てことは、Scala にもないかな。

$ cat pow.scala
object Pow {
  def main(args: Array[String]) {
    var i = 3;
    var n = i ** 2;
    println(n);
  }
}
$ scala pow.scala
/mnt/usbhd/xvd/t/pow.scala:4: error: value ** is not a member of Int
    var n = i ** 2;
              ^
one error found

やっぱり。でも、エラーメッセージは違うね。

| | コメント (0) | トラックバック (0)

[プログラミング] volatile in Java

Java にも volatile なんてあったのか。知らなかった。

| | コメント (0) | トラックバック (0)

2015年3月17日 (火)

[Vim] Scalaモード

Vim 標準にはないみたい。 調べてみたら、GitHubに見つかった

~/.vimrc に

NeoBundle 'derekwyatt/vim-scala'

と追加してから :NeoBundleInstall でインストールした。

タブ幅は2なのか。てっきりタブ幅は4なのかと思っていた。

| | コメント (0) | トラックバック (0)

2015年3月13日 (金)

[プログラミング] 今さらScala

今さらかも知れないけれど、Scalaをちょっと触ってみた。

Scala は「スカラ」と読むらしい。 Scalability から取っているらしいので、「スケイラ」と読むのかと思った。

実行するには、Javaの実行環境が必要。

確かにJavaよりは生産性が高そう。

Scalaっぽい書き方は、良くわからないけれど、ちょっとRubyっぽいところもあって Ruby使っていれば、そんなに抵抗なくScalaに入っていける気がした。

| | コメント (0) | トラックバック (0)

2015年3月 8日 (日)

[本] ラスト・ワルツ(柳広司)

ラスト・ワルツ

さすがにシリーズも続いて息切れしてきたかと思ったけれど、3話目で何とか持ち直してくれた。やっぱカッコいいわ。

陸軍のスパイ養成機関のシリーズ4作目。シリーズを続けて読んでいるファンとしては、期待が高まってしまうものですが。。。。

2話目まで読んで、うーん。さすがに息切れしてきたかなと。 シリーズ1作目、2作目にあったような切れ味の鋭さが感じられない。 ストーリーに捻りはあるし、別に悪くはない。悪くはないんだけれど、見劣りしてしまう。

そんな印象を持ちながら、読んだ3話目。 ここでようやく持ち直してくれました。 途中までは、こちらの想定の範囲内のストーリー展開。 最後の種明かしでいきなり引っくり返された。 まさか、こんな手を使ってくるとは思わなかった。 鮮やかなどんでん返し。 もちろん、それだけではなくて、シリーズ1作目から続いている雰囲気は十分に出ていたし、やっぱりスパイがカッコいいなと思ってしまった。 やっぱいいよ。

ただ、同じ手は二度と使えないので、次作がどうなるか、ちょっと心配ではある。 そんなに量産しなくていいので、次回は完全復活したD機関の話が読みたい。

» 続きを読む

| | コメント (0) | トラックバック (0)

2015年2月15日 (日)

[Ruby] Rubyのしくみ - Ruby Under a Microscope -

Rubyのしくみ -Ruby Under a Microscope-

C言語を使わずにRubyの内部構造を解説した野心的な本。 C言語がわからないという人も大丈夫。 Rubyの内部構造を知りたい人にオススメできる唯一の本!

以下、ざっと斜め読みしてみただけの感想である。

オブジェクト指向スクリプト言語Rubyは、C言語で実装されている。 (Javaで実装されたJRubyとかRubyで実装されたRubiniusとか、まあ、他にもあるけれど、本家本元はC言語で実装されている。)

Rubyの内部構造を解析した本としては2002年に出版された『Rubyソースコード完全解説』という本がある。 この本は、相当に硬派で、C言語の知識がないと読めない。 Rubyのソースコードを解説しているのだから当たり前である。

それ以降Rubyの内部構造を解説した本というのは存在しなかったが、10年以上の時を経て、Rubyの内部構造に迫る解説書が登場した。

本書は、内部構造を解説した『Rubyソースコード完全解説』の改訂版ではない。 アプローチの仕方が全く違う。 C言語を使わずにRubyを使ってRubyの内部構造に迫るという野心的な解説書である。 Rubyの機能を駆使して実験をして、豊富な絵や図を使って、Rubyの内部構造に迫っている。 C言語を知らなくても、この本を片手にRubyを動かし、自分で実行結果を確認しながらRubyの内部を探検することができるのだ。

良くこんな本が書けたなと感心した。 と同時に、この10年でRubyの内部構造を探検できる機能をRuby自身が提供するようになったのだなとなんだか感慨深い気持になってしまった。

| | コメント (0) | トラックバック (0)

2014年9月22日 (月)

RubyKaigi 2014

キーワードは、diversity だと思ったRubyKaigi 2014 だった。
もっと海外の人とコミュニケーションが取れるようになりたいものだ。

| | コメント (0) | トラックバック (0)

2014年8月22日 (金)

ファンタジー(?)小説の中のRuby

Mr Penumbra's 24-hour Bookstoreより。

But, of course, the point of a programming language is that you don't just read
it, you write it, too. You make it do things for you. And this, I think, is where Ruby
shines.

| | コメント (0) | トラックバック (0)

2014年8月 2日 (土)

[Ruby]WIN32OLE_RECORD

WIN32OLE_RECORD を実装してみた。誰かテストしてください。あと、Struct(VT_RECORD)を引数として要求するIDispatchインターフェースをもつCOMのメソッドがあったら教えてください。できれば、Windows標準のもの、それが駄目なら無料で利用できるCOMだと嬉しい。

| | コメント (0) | トラックバック (0)

«[Vim] Vim 7.4