2014-09-22

今と昔でこんなに違う!同じ言語のバージョン比較

java-wayback-min.png

[ PR ]


今日、古いプログラミング言語がなくならない理由 | ReadWrite Japan という記事が掲載されました。

その中で興味深い名言があったので紹介します。

ラブキンが言うには、古いジョークに、エンジニアが今後30年間使われる言語は何かと聞かれて、分からないけどそれでもそれはFortranと呼ばれてるだろう、と答えたというのがある。息の長い言語は、70~80年代にデザインされたものと同じではない。多くの場合、人々は言語から何かを引くことはないが、足すことはある。そうすることで後方互換性は損なわれずに問題が修正されるからだ」という事だ。

「わからないけどそれでもそれはFortranと呼ばれているだろう」 ― 深い言葉ですね。


身近なことで言えば、昔の地図と今の地図は全く違いますね。でも、それでも地図と呼ばれているのです

now-past-maps.png

そこで今回は、プログラミング言語の昨今を比較してみたいと思います。

Java 1 (1997年) と Java 8 (2014年)

2003年2月頃の java.com

この頃はまだJ2SE, J2EE, J2MEが台頭していた時代で、2000年問題も回避し、新しいIT革命が起こっているころでした。

当時はOracleではなくSun Micro SystemsがJavaを開発しており、Javaのロゴも今と微妙に違いますね。

java.com (web archive)

java-wayback.png

Java1(1.1)のソースコード

import java.awt.*;
import java.awt.event.*;

public class Box extends Component{
  Box(Color c){
    setForeground(c);
  }

  public void paint(Graphics g){
    super.paint(g);
    g.setColor(getForeground());
    g.fill3DRect(0, 0, getSize().width-1, getSize().height-1, true);
  }

  public Dimension getPreferredSize(){
    return new Dimension(64, 16);
  }
}

この頃は、やっとAWTが開発され、まだSwingSWTもありませんでした。

内部クラス多言語対応もこの頃登場し、まだ総称型列挙型ボクシングなどはありませんでした。

この頃に内部クラスが追加されなければ、Scalaのような関数型言語は生まれなかったでしょう。

Java8のソースコード

import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.*;

public class FilterLambda{
  public static void main(String[] args){
    List list = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20).stream()
        .filter(n -> n % 3 == 0)
        .collect(Collectors.toList());

    System.out.println(Arrays.toString(list.toArray(new Integer[]{})));
    // # [3, 6, 9, 12, 15, 18]
  }
}

新しくラムダ式も登場し、今やJavaFX2の時代です。Arraysという配列支援のフレームワークも存在しており、もはや同じ言語とは思えません。

昔はJava AppletとしてFlashへの礎を築いたJavaですが、今後はどういう立場になっていくのでしょうか。楽しみですね。

PHP 3.0 (1999年) と PHP 5.4 (2013年)

PHP3のウェブサイト

この頃の問題は、2000年問題でした。

http://php.net/ (web archive)

php3-wayback.png

PHP2からPHP3への重要な変更点:

Noticeable Changes between PHP 2.0 and PHP 3.0

終了タグを > から ?> に変更

それまで?がなかったことに驚きです。

<? echo "hello"; >   <!-- PHP 2 --> 
<? echo "hello"; ?> <!-- PHP 3 -->

開始タグを **sayHello(); ?>

```

まとめ

同じ言語でも、今と昔で全く違う形になっていることが分かりました。

過去の財産を活かしながら、次第に時代に合わせて進化していくのは、人間の生き方そのもののような気がしますね。

情報の歴史を読む―世界情報文化史講義 (BOOKS IN FORM SPECIAL)
松岡 正剛
NTT出版
売り上げランキング: 196,925

コメントはTwitterアカウントにお願いします。

RECENT POSTS


[ PR ]

.