いけむランド

はてダからやってきました

プログラミング Ruby 第2版 言語編 読了

ひととおり読み終えた。


プログラミングRuby 第2版 言語編

プログラミングRuby 第2版 言語編


最近のプログラミング環境に必要な技術というのはもはや言語仕様を覚えるよりも豊富なライブラリを如何に使いこなすかという割合が増えてきているわけで、となるとプログラミングにおいて頻繁に使用する要素 (文字列、配列、ハッシュなど) はシンタックスシュガーで言語仕様からライブラリに歩み寄るのは自然な考えなんだなというのが感想。

Java の言語仕様で特別扱いされているのは文字列 (java.lang.String) だけだと思うけど、ハッシュ (java.util.Map?) くらいならば採用してもいいんじゃないかと思う。*1

/**
 * コンパイルできないよ\(^o^)/
 */
import java.util.*;

public class HashSyntaxSugar
{
  static public void main(String[] args)
  {
    Map<String,String> map = new HashMap<String,String>();

    map["foo"] = "bar";      // コンパイラは map.set("foo", "bar") と解釈する。みたいな...

    String str = map["foo"]; // コンパイラは map.get("foo") と解釈する。みたいな...
  }
}


コンパイルしようとしたら、けっこうお堅い日本語のエラーが出てきました。w

% javac HashSyntaxSugar.java
HashSyntaxSugar.java:12: 互換性のない型
検出値  : java.lang.String
期待値  : int
    map["foo"] = "bar";      // コンパイラは map.set("foo", "bar") と解釈する。みたいな...
        ^
HashSyntaxSugar.java:12: 配列が要求されましたが、java.util.Map<java.lang.String,java.lang.String> が見つかりました。
    map["foo"] = "bar";      // コンパイラは map.set("foo", "bar") と解釈する。みたいな...
       ^
HashSyntaxSugar.java:14: 互換性のない型
検出値  : java.lang.String
期待値  : int
    String str = map["foo"]; // コンパイラは map.get("foo") と解釈する。みたいな...
                     ^
HashSyntaxSugar.java:14: 配列が要求されましたが、java.util.Map<java.lang.String,java.lang.String> が見つかりました。
    String str = map["foo"]; // コンパイラは map.get("foo") と解釈する。みたいな...
                    ^
エラー 4 個

*1:既にそういうプリプロセッサがありそうな気がする。