本物のプログラマは(言語一括否定編) | 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.
なんだか物凄く渋くなってしまったなぁ。しかし、これは確かに本物っぽいかもしれない。大衆が使う言語なんかに靡かないぜ!という姿勢を感じる。
そういえば、うっかりJavascriptとPHPを入れ忘れていた(入れても結局捨てられるが)。Webは疎いからなぁ。
とりあえず、いつ書いても ruby は気持ち良い。しつこく「end」や「}」を書かないとならんのが面倒だが、それを省くとなると、pythonになってしまうが、どうもあの「ミ」みたいに流れていく見てくれが好きになれないなぁ。行ったら行きっぱなしかおぃ!と。でも戻ってくるということは「end」や「}」を書けよってことで難しい。
そうかプログラムを書くのをやめたらこんなことを考えなくて済むんだ!