404 motivation not found | t_ishidaのブログ

8月/08

2

プログラマについて雑文

能書き

僕はプログラマです。特に優秀だったりしないし、どちらかといえばプログラマだなんて名乗ったら真面目にプログラマをやっている人たちに失礼な位劣等生なプログラマです。でも、そんな雨の道を這いずり回って泥にまみれたトカゲみたいに、ただただ、毎日をやり過ごしているだけの僕は、考えてみれば、空は遠いかも知れないけど地面だけは見たい見たくないに関わらず、よく見えているものなので、そんな僕の視点からプログラマっていうものについて考えてみたり、まとめてみます。

プログラマとプログラム

能書き

プログラマとはプログラムをする人です。それ以上でも以下でもなくて、そのまんまの意味です。そのまんまの意味なのですが非常に広い範囲の事柄を指す言葉でもあります。でも、大体知らない人から見たら一緒くたにされます。でも本当は色々有ります。ざっと挙げても(これで全部じゃないです)いっぱい出てきます。いっぱいじゃないじゃんって言われても、僕にとってはいっぱいです。3を超えたらいっぱいです。

  • 業務プログラマ
  • Webプログラマ
  • 数学な人
  • 物理な人
  • ハードウェアに近いところの人

業務プログラマ

業務プログラマは所謂業務システムを作っている人ですね。SEとか呼ばれる場合も有ったりします。その実、SEって言葉が非常に曖昧と言うかアレで、猿山構造が大好きな人が自分は偉いんだと言いたいから、もしくは客を騙して金をふんだくる為に作り出した言葉なんだと僕は思っています。それ位、謎な職位です。客から話聞いて設計をしてプログラムするってプログラマじゃん。複数人で取り掛かる場合であれば、その人たちのスケジュールをプログラムしたり金をプログラムしたりするんだから、やっぱりプログラマじゃん。業務プログラマの特徴としてはプログラム的に無駄に複雑(だからと言って、そんな難しい訳じゃない)なものを作り、コンピュータサイドの知識もそこそこに要求され、コンピュータサイドの知識以外もかなり要求され、人間と金のコントロール能力も要求される。と言うのが特徴です。と言っても、業務プログラマと言う括りですら非常に乱暴で、業務プログラマも対象のシステムの業種によって要求される知識も変わって来ます。

Webプログラマ

WebプログラマはWebを作っている人ですね。異論は有るかも知れませんが、Webのサービス(GoogleとかYahooとはHatenaとか)を作っている人と定義します。要求される能力としてはWeb系全般、サーバー構築・管理、負荷分散とかハードに近いところまで、さらに検索系を作ったりする人なら形態素解析器の使い方とか。これまた非常に幅広かったりするんですね。多分サービスによるんでしょうが、多くのWebプログラマが関わってるサービスのプログラムそのものの複雑度はそんなに高くなかったりするんだと思います。

数学な人

自分で計算してたら日が暮れちゃうような大量の計算をコンピュータにやらせる人ですね。そのためにプログラムを作ってります。僕はこの辺はよく知らないのですが、僕の彼女はこれに分類される人です。

物理な人

数学な人と同じ理由でプログラムする人ですね。これは丸っきり関わった事無いので分かりません。

ハードウェアに近いところの人

これまた乱暴な括りで申し訳無いのですが、コンピュータサイエンスとでも言えば良いのかな?自動車に組み込むプロセッサのチップ書いたり、冷蔵庫やエレベータの中身書いたり、デバイスドライバ書いたり、OS書いたり。うん括りが乱暴過ぎるね。これまた、知り合いは、こういうのやってる人居るけど、自分自身関わりが少ないからよく知らない世界なので、ふーん、こういう括りの人も居るんだ位に受け取って下さいね。

プログラマと数学

ほら、プログラマって数学出来ないと駄目とか風潮あるでしょ?アレね、僕、アレ嘘だと思うんですよね。正確には全てのプログラマが数学バキバキに出来る必要は無いとかね。さっき出てきた数学や物理でプログラムやる人は数学出来なきゃ駄目ですしね。でも、全てのプログラマが数学がバキバキに出来る必要は無いと思うんですよ。そりゃ計算量の計算位は出来た方が良いし四則演算は出来た方が良いと思います。でも、統計解析システムの中でも、なんか凄いの!!みたいなのじゃなければ、そんな凄い数学は必要無いでしょう多分。なんかアレじゃないの?プログラムにアカデミックな雰囲気が残ってる頃、スイーツ脳が「外人無条件にカッコいい。外人の真似して私金髪にしちゃう」と一緒で「数学無条件にカッコいい。プログラムも数学しちゃう。」みたいなね。プログラムって、データ構造とアルゴリズムですよね。これってどっちかって言うと学問的には論理学の分野じゃないですかね?(特に命題論理ってやつかな?)論理学って数学的?と言えなくもないですが、むしろ哲学に近いんじゃないですかね?論理学の教授で哲学と兼任みたいなの見た事有りますしね。つまりまとめると、プログラムを扱う分野によっては数学も必要かも知れないけど、数学苦手だからってプログラム出来ない訳じゃないですよね。数学信仰みたいなのがややこしくしてる気がするので、数学好きな人はプログラマに数学を押し付けるより、コマネチ大学のマス北野でも見て興奮してて下さい。

「演奏者は楽譜を書けた方が良いか?」

「では、あなたは日記を書くのに文字を書けた方が良いと思いますか?」

でも、ビリーシーンって楽譜書いたり読んだり出来ないらしいじゃん。

プログラマと言語

プログラムを記述するための言語としてプログラム言語と言う人工言語があります。基本的には、どの言語で記述したとしても、プログラムに出来る事は大体同じです。C言語じゃないと出来ない事とかも有りますが大体の目的においては大体同じです。なので、プログラム書くのに言語にこだらわる必要は特に有りません。

「我々は、夜、寝る前に母国語で日記を書き、母国語で思考し、寝れば母国語で夢を見ます。」

そう、プログラマにとって一番使う言語は、コンピュータの世界の母国語になります。母国語は問題解決のための発想に大きな影響を与えるでしょう。発想が変われば得意とする問題の種類も変わってきます。例えば・・・*1

  • VBを母国語とする人は使いやすい入力フォームと入力チェックと少々の演算と見やすい出力結果を画面に出すのが得意
  • Perlが得意な人は大量の文字列から目的の値を切り出してきて、少々の演算と、見やす出力結果をコマンドラインに出すのが得意

みたいな感じです。VBとPerlが両方使える人でも、どっちが母国語的な存在かによって発想が大分変わってくるでしょう。ちょっとしたアンケート集計をするにしても、VBが母国語でPerlも使える人が、VBを使えない環境に置かれたならば、すぐにHTMLで入力フォームを作りCGIを作るだろうし、Perlが母国語でPerlの使えないWindows環境に置かれたならば、アンケート結果をテキストファイルに貯めておいて、VBScriptかVBの標準モジュールに、VBScript.RegExpオブジェクトをバキバキに駆使したテキスト処理を書くでしょう。*2

つまり何が言いたいかというと、どの言語も出来る事は、そう変わらない。でも、どの言語を母国語とするかによって、問題解決の発想が変わってくる。そうすると得意な問題、不得意な問題が出てくる。自分の置かれている状況をしっかり考えてから母国語として一生付き合っていく言語を選んだ方が良い。そういう事だ。

*1:僕は、ある程度の量の言語に触れてますが、各言語にどっぷり浸かって仕事してた訳じゃないので、あまり各言語の特徴をよく捉えてるとは言いがたいので、この辺りは鵜呑みにせずに異論があれば、自分の考えるとおりに読み替えたりして下さい。この辺りは本筋に影響のある部分ではないので

*2:この例は分かりづらいし、なんだかおかしい。それは分かっている。でも、とりあえず仮置きとさせてもらう。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Tumblr
  • email
  • Facebook
  • FriendFeed

RSS Feed

コメントはまだありません。

Leave a comment!

<< kyubotterのソース

先日のCreateTable文をスクラップする奴を改良 >>

Find it!

Theme Design by devolux.org

Tag Cloud