プログラム言語とプログラム

プログラム言語が変わっても、実際のプログラムの動作が同じなら、どのプログラム言語を使っても同じ事ではないかと思った。そこで、標準入力から一行読み込んで、それを表示するプログラムをいろいろな言語で書いてみた。

C言語 (stdio.c)

#include <stdio.h>

int main(void)
{
    char str[80];

    fgets(str,80,stdin);
    puts(str);

    return 0;
}

C# (stdio.cs)

using System;

class Example
{
  static void Main()
  {
    string str = Console.ReadLine();
    Console.WriteLine(str);
  }
}

Perl (stdio.pl)

$str = <STDIN>
print $str;

Ruby (stdio.rb)

str = gets.chomp
puts str

Haskell (stdio.hs)

main = do
  cs <- getLine
  putStrLn cs

Scheme (stdio.scm) : Guile

(begin
(define (read-line cs)
  (let ((ch (read-char)))
    (if (eqv? ch #\newline)
       (list->string (reverse cs))
       (read-line (cons ch cs)))))

(display (read-line '()))
(display #\newline))

同じ事をやるのなら、やはり余計な記号がなくて短い方がいいなとあらためて思った。

まだまだ、新しいプログラミング言語は出現するだろう。たくさんのプログラムが作られていく中で抽象化して部品化できるアルゴリズムが明確になってきたら、そのアルゴリズムを端的に表現できるプログラム言語が現れるに違いない。

一方で、速度的な問題や細かい調性をしなくてはならない問題については、C言語のような低レベルの言語の価値は残っていくだろう。

部品的なアルゴリズムについては簡潔な表記でプログラムでき、かつ、細かいハード寄りの動作や速度を要求されるプログラムについては、低レベルまで記述できる言語とのインターフェースを自動的に作ることができるようなプログラム言語が、未来の言語として望ましいのかもしれない。
[PR]
by tnomura9 | 2009-12-31 10:45 | 話のネタ | Comments(0)
<< 2010年の記事 C#の仕様 >>