らんだむな記憶

blogというものを体験してみようか!的なー

本物のプログラマは

本物のプログラマは(言語一括否定編) | check*pad.jpだそうだ(笑)

自分は本物ではないが、結局本物は何を使うのかをプログラムで検査してみたいと思う。
最近ちょっとご無沙汰気味のrubyを使おう。

良い子は事前にwgetでファイルを取得してローカルに落としてから試験データにしよう。ただ、GETメソッドのresponseをそのまま使うと、rubyが怒ったのでforce_encoding("utf-8")している。
実運用環境での試験も大事ということだ。

#! /usr/bin/ruby -Ku

require 'net/http'

$use_local_file = true

# 偏見の塊
$pro_lang = [
    "C", "C++", "C#", "perl", "ruby",
    "python", "awk", "Haskell", "Smalltalk", "Lisp",
    "Objective-C", "Java", "VB", "N88-Basic", "COBOL",
    "B", "D", "Go", "ALGOL", "R"
]

# 本物のプログラマが使う言語は何だろう!
class HommonoShikou
    def initialize
        @pro_lang = []
        @amateur_lang = []
    end

    def examine
        download.split(/\r\n/).each do |line|
            line_proc(line)
        end
        @pro_lang = $pro_lang.select { |lang| !@amateur_lang.include?(lang.downcase) }

        self
    end

    def show_result
        print "Pro languages are #{@pro_lang[0 ... -1].join(", ")} and #{@pro_lang[-1]}.\n"
    end

    private
    def line_proc(line)
        if line =~ /本物のプログラマは(.*?)[\(]/
            candidate = $1
            candidate.scan(/[\w\+#]+/).each do |lang|
                lang.downcase!
                @amateur_lang << lang unless @amateur_lang.include?(lang)
            end
        end
    end

    private
    def download
        open("test.txt") { |f| return f.read } if $use_local_file

        Net::HTTP.start(サーバのなに) do |http|
            res = http.get(さーばのるーとからのぱす)
            # http://stackoverflow.com/questions/1207335/how-to-convert-a-nethttp-response-to-a-certain-encoding-in-ruby-1-9-1
            return res.body.force_encoding("utf-8")
        end
    end
end

HommonoShikou.new.examine.show_result

さて、結果やいかに!

$ ./hommono.rb 
Pro languages are awk, Haskell, Smalltalk, Lisp, Objective-C, N88-Basic, COBOL, B, D, Go, ALGOL and R.

なんだか物凄く渋くなってしまったなぁ。しかし、これは確かに本物っぽいかもしれない。大衆が使う言語なんかに靡かないぜ!という姿勢を感じる。
そういえば、うっかりJavascriptPHPを入れ忘れていた(入れても結局捨てられるが)。Webは疎いからなぁ。

とりあえず、いつ書いても ruby は気持ち良い。しつこく「end」や「}」を書かないとならんのが面倒だが、それを省くとなると、pythonになってしまうが、どうもあの「ミ」みたいに流れていく見てくれが好きになれないなぁ。行ったら行きっぱなしかおぃ!と。でも戻ってくるということは「end」や「}」を書けよってことで難しい。

そうかプログラムを書くのをやめたらこんなことを考えなくて済むんだ!