はてなキーワード: javaとは
※以下、言語というくくりでの話ではなくて漠然とPC用プログラム作成環境全体を指して言っていると思っていただきたい
基本的には.Netが好きだ。
Webを最初から意識して作られているし、標準ライブラリでカバーされてる範囲が広いおかげでVisual Studio入れるだけでサクサクかける処理が多いので再発明を強いられる事態に陥りにくいのが感涙ものだ。
C++/CLIもやりたいことが割とリーズナブルなコストでできるのでありがたい存在だ。
VB6は嫌いだ。
いろいろ拡張してくれた結果なのは知っているが、結局大事なところはダメ言語のままでMSから匙を投げられた存在という認識だ。
MFCも嫌いだ。
ひたすら面倒いし、出来たコードのメンテナンス性も・・・。メリットが今となっては動作の軽さだけだし(昔はむしろ逆の立ち位置だったんだろうが)。
だが、VB.Netは好きだ。
MSILを作るための道具であるがゆえに、VB6の痛い所が根こそぎ取り払われていると感じる。
C#でもいいのだろうが、セミコロンはなくても良いじゃない(あっても良いけど)。あと、オブジェクトを変数宣言しつつ初期化するとき、"クラス名 変数名 = new クラス名()"になるのが
クラス名をSystem.XXXから書いているときには耐えられない。As New万歳。
しかし悲しいかな、VB.NetはC#に押されて絶滅危惧種だ。
TypeOfを使わなくちゃいけない時にはVB.Netが恨めしく感じるけど、そんなに頻繁じゃない。
他のデメリットにしても、表記がウザくなるだけで書けない処理があるわけじゃない(このへんがVB6と決定的に違うところ)
普段Perlを書いているんだけど、言語機能として欲しい機能がライブラリ任せだったりしていろいろしんどい。
何かいいプログラミング言語はないかなーと思っているんだけど、なかなか自分の好みとピタリとくるものがない。まぁ好みにピタリとくるものなんかプログラミング言語に限らずないんだろうけど。
なので夢想してたのを垂れ流してみる。最近OOPディスのエントリとかあったので話題作りになれば。
Web系のエンジニアなのでWebサービス作ることが前提で、範囲広げすぎるとまとまらないので今回はLLを想定してる。
だいたい PHP, Perl, Python, Ruby, JavaScript あたりをイメージしながら、さらにこんな機能があればいいなーと思って書いたよ。
一位がJavaScriptで幕を閉じたんだけど
外部の人たちは多分理解できなかったと思う。
なんでJavaScriptなの
と
JavaScriptで大丈夫なのか
JavaScriptで本当にいいのか
と不思議だと思うんだよね。
でも実は
JavaScript一位はプログラマーが強く望んだことだし
そして
今回の一位はJavaScriptじゃなきゃいけなかった
とプログラマーはそう思ってた。
だからこそ15万票も集まったんだよね。
一部の熱狂的なプログラマーだったりなんかの組織票ではさすがにここまでの票数はいかない。
プログラマーの総意がJavaScriptだったんだよね。
実はプログラマーはJavaScript一位を歓迎しているんだよね。
プログラミングとはなんなのか
まあ
いろんな側面から語られるんだけど
一つの側面として
「変化」というのがある。
この変化は
無理やりだった。
無理やり変化を押し付けてきたんで
「おい、いいかげんにしろよ。どんだけプログラマーにつらい思いさすねん」
と、いつもいつも思ってて
でもこの「変化」が
たくさんのストーリーを生んできた。
そしてそのストーリーにぼくたちプログラマーは酔いしれてきたんだよね。
嫌いな人たちは「これ、いつまで続くの」と思ってるんだろうけど
ここまで続かせた一つの理由が「変化し続けた」ことにあると思う。
そしてね。
いつしか
この「変化し続けなければいけない」は
プログラマーの間の中にも深く深く浸透していったんだと思う。
最初は無理やり変化させられてきて
まあ、それは今現在もそうなんだけど
こんだけ変化させられてきてるから
いつしか
この「変化し続けなければいけない」は
意識するしないにかかわらず
プログラマーのDNA、プログラミング全体のDNAになっていった。
顧客がよく言うんだけど
この言葉がいつしか知らず知らずにプログラマーの中にも刷り込まれ
そしてプログラミングのおもしろさをもここに感じるようになってきていた。
そういう意味ではいつもいつもぼくらは顧客に踊らされてるんだけどね。
今回のプロジェクトに話をもどすと
今回のこのプロジェクトはプログラマーにとってもすごく重要だった。
それは
今もしているこのグループにとって
新たなストーリーの始まりであるこのプロジェクトは本当に本当に大事だった。
最初は
世間一般的にも
プログラマーの中でも
だけど
はたしてそれでいいのかという強烈な思いがぼくにはあった。
この二言語の戦いだったら
それがはたして第2章の幕開けでいいのかと本当に思ってた。
一応一言いっておくと
ぼくは
本当に大好きなんだけど
プログラミング全体を考えたときにこの二言語の争いにしていいのかと強烈に思ってた。
そしたら速報でJavaScriptが一位だった。
最初はぼくもめちゃくちゃ驚いたんだけど。
それはないわ
と心底思ったんだけど。
でもよくよく考えると
これが一番いい手に思えてきた。
そしていつしか
プログラミングのためにはこれしかないとすら思うようになってたんだよね。
もちろん速報前からそう思ってた人もいるだろうし
だから速報が一位だったんだろうけど
速報後に気づいた人もいると思う。
この手があったかと。
そういう意味でJavaScriptが速報一位じゃなかったら本番も一位でなかった可能性があるとすらぼくは思っている。
外部の人にプログラミングのプロジェクトは変化していると思われているのかどうかはよくわからないんだけど
実は上位陣というのは
ちょこちょこは変わってんだけど
相対的にみるとほとんど変化していない。
それは上位陣の圧倒的強さというのもあるんだけど
でもそれでいいのか
という想いは多分プログラマーの誰しもが思ってたと思う。
でも崩せないんだよね。
崩せないぐらい強い。
でもそこをなんとか崩していかなきゃいけない。
そんな想いのなかの速報JavaScript一位だった。
多分その崩さなきゃいけないというみんな想いがJavaScriptの肩に乗っかっちゃったんだよね。
JavaScriptならひょっとして崩せるんじゃないか。
と
きっとみんなその想いをJavaScriptに託したんだよね。
これはPHPにとってもよかったと思う。
PHPが高すぎる壁であり続けると
PHPの目の前に「卒業」という二文字がかなり明確な形で現れたと思う。
多分プログラマーはうすうすだけどそのことをも感じ取っていた。
優子には勝ってほしいんだけど
だけど卒業だけはしてほしくない。
複雑な想いがあったんだよね。
でもそこにJavaScriptが現れた。
JavaScriptは恰好の素材だった。
JavaScriptが勝っても誰も傷つかないし
そして何よりものすごい「変化」を起こすことができる。
これこそがプログラミングであり第2章の幕開けにふさわしいんだと。
結果としてJavaScriptが一位だったんだけど。
これはそんなプログラマーの想いがあったとぼくは思ってる。
そしてね。
この結果は来年以降にすごくつなげることができるんだよね。
ものすごい厚く高い壁の上位陣を崩すことができれば
来年本当に自分たちが「押している言語」をセンターに持っていくチャンスにつながる。
「押している言語」がいる人たちにとってはなんとか上位陣の壁を崩したかった。
だから一つの山を崩すことができた来年以降が本当に楽しみなんだよね。
来年以降の希望が見えたという意味で本当にいい結果だったとぼくは個人的に思ってる。
最後に
なんかこう書いてくると
JavaScriptが当馬みたいなんだけど
これ誰も書かないだろうし
プログラマーの人も大声を上げないだろうけど
実はね。
プログラマーはみんなJavaScriptのこと好きなんだよね。
大好きなの。実は。
このことをぼくは確信している。
歌もうまくないし、ダンスもへただし、顔もとびっきりの美人ではないんだけど
へたれなとこもあるんだけど
それら全部をひっくるめて
実はJavaScriptのことが大好きなんだよね。
キャラがあるんで、プログラマーも大声では言わないんだけどね。
でなきゃ、なんだかんだ言ったって15万票も集まんないよね。
だからいろいろ言われるだろうけど
一つ間違いないことはプログラマーがJavaScriptを選んだということ。
そしてもう一つ間違いないことはプログラマーはJavaScriptを絶対に支えていくということ。
ぼくはこの結果で本当によかったと心の底から思ってる。
JS~一位おめでとう
ただのプログラミング言語オタより
元ネタ:http://anond.hatelabo.jp/20130610192126
やっつけサーセンwww
社内向けのポータルサイトが数年前から稼働しているのだけれども、これが酷いできでソースを見るだけで頭が痛くなる。(サーブレットだよ)
staticおじさんプログラミングのすべてがそこに詰まっているデザイン、かつクラスをコピペして機能拡張をするというまあ良く有りがちな糞コードアプリだ。
まあ、そりゃいいけれど
なんかバージョンアップしようとすると、変なオッサンが自分がデザインして稼働させたシステムを変更させたくない圧力をかけてくる。
なんか、これが自慢のシステムらしい。
HTMLは古い書き方なのは仕方ないにしても、内部のJavaソースがより酷くて
アクセスカウンターのような仕組みがあるんだけれども、アクセス数はアクセスがあったときにたされるのだけれども
その数字をJSPに渡す時に、なぜかint[6] の配列で返してくる。
お尻が切れて表示されるというアクセス数が全くわからないシステムになっている。
ついでに不必要なスレッド処理があるのだけれども、同期処理が不十分で、何回かに一回例外が発生する…
じゃあ、最後までお前が面倒見ろと…
まあやってくれないだろうから、外見からは分からないようにこっそりバグは治しているけれど
なんか馬鹿らしい。
まあ、社内向けだし…
AndroidとiOS両方で開発してるけど、Androidはアプリと関係ないところでの問題が多すぎて面倒。
Javaと比べてObjective-Cがマイナーとか叫んでるけど、Objective-Cは20年以上前の言語だし文法以外は癖がないから数日あれば覚えられる。
Javaはいいけれど、Android開発環境はクソ環境過ぎてやる気が起きない。JavaもEclipseもAndroid開発以外ではクソではないんだが。
いや、間違ってるよ。先進的ではないけれど、劣ってるということはない。むしろ俺的には最高の言語の一つ。
もちろん俺は他の言語もたくさん使えるし、場面によって言語の使いやすさに差があるのは分かってるよ。
使いたくない言語はあるけれど。PHPとか。あれは言語というよりは処理系に問題が多すぎるんだけど。
なのでJavaをdisられても俺は別に「分かってないな」としか思わないが、これって「バカフィルタ」として有効だよね。バカは何を使ってもダメ。
そこは本題じゃねーよ。Java より優秀な言語があるのは分かってるし使えるときは使ってるよ。
俺が言いたいのはクソみたいなプログラマがポジショントークのために Java と Java プログラマ全体を貶めるような発言をしてるのがムカつくし見てて不快だから辞めろってこと。
Java 使ってるプログラマは駄目だ、Java は時代遅れだ、とか言ってる人が沢山いるけど、そう言ってる人のうち一体何人がマトモに Java 書けるんだよ。
勿論言語としては他の言語に劣っているのは間違いないんだけど、ムカつくのは「俺は Java なんて卒業したぜ、イケてるプログラマなんだぜ」ってポジショントークのために Java と Java プログラマを DIS ってる奴らが居ることで、見てて痛々しいし、実際 Java 使ってる身からすると不快に感じるし止めて欲しい。そりゃ Java プログラマの平均レベルは低いかもしれないけど、裾野が広いだけにそうじゃない人達も沢山居るんだよ。それを知らずに十把一絡げに「Java 使ってる奴らはダサい」みたいなイメージを広めるのってすげー嫌なんだよね。
最初から Web プログラマとしてデビューしました、みたいな Java を使ったことの無い人は、そもそも多分 Java をマトモに使えないくせに DIS るの止めて欲しい。Web サービスを運用する人達やミドルウェアをつくってる人達は凄いと思うけど、Web のプログラミング部分なんて超簡単じゃん。こいつらのうちの何人がマルチスレッドプログラミングまともに出来るのか聞いてみたい(どうせ出来ないんだけど)。おまえら多分 DIS るほどの実力なんてねーよ、使ってる言語が自分の実力だと勘違いするんじゃねーよと言いたい。動的型付けの言語でクソみたいな文字列処理のプログラムぐらいしか書けないんだろーが。大体 Web プログラミングやってる奴らなんてオブジェクト指向すら分かってないことが多いぜ?
元々 Java 使ってたけど最近 Scala とか Ruby 覚えたので DIS ってる人達。私見ではちゃんと書ける人達は DIS ってない。DIS ってるのは SIer から飛び出たような人達が主なんだけど、良く考えてみた方が良い。SIer なんてさー、確かに平凡な技術者が多いわけだけど、少なくとも実力があればちゃんと評価されるし好き放題働けるわけなんだよ。ここから出ていかないといけないような人達って大体実力が無くて評価されなかったから不満を覚えて辞めていく人達なんだよね。ごく一部に例外はあるとしても、大体はそんなもん。そりゃ周りには「もっと刺激のある環境を求めて」とか言うけどさ、現実は「実力不足で評価されない」「ガキ過ぎて使えない」のどっちかなんだよね。つまり元々大したスキルなんて無かったわけですよこの人達は。そんな奴らが DIS ってるのは滑稽だしホント見てて鬱陶しいわ。
今日も「Rubyist は Java 脳より Scala の理解が早い」とか言ってる奴が居たけど、馬鹿かよ。そんなハズねーだろーが。そりゃプログラマの平均値とったら Rubyist の方が実力高いのかもしれないけど、互いの上位層を比較したら断然 Java プログラマの方が Ruby プログラマより優秀に決まってるだろーが。マトモな Java プログラマは Haskell だって Scala だって普通に使えるし静的型付けについてもちゃんと理解してるし Rubyist より Scala の理解が遅いなんてことありえねーよ。こういう発言して Java プログラマ全体の地位を貶めようとする奴ってホント馬鹿だしガキだしもうちょっと周りのこと考えろよって思う。
ここまで書いてて思ったんだけど、結局の今の日本の Java プログラマに対する空気ってのは
みたいなところから醸成されてるのかなと思った。
とりあえず:
デジタルネイティブはほんとにネイティブ、生まれつきなのかなと疑問にがふとよぎったことがある。生まれた時にPCが隣にあれば放っといても使い出して、いつの間にかコーディングを始めて、行く末はWebサービスを支えるエンジニアみたいな。デジタルネイティブを足らしめる要素は枕元に情報機器を置くことだけなのかって。
TechCrunch Japanの記事はそんな自分の疑問に答えるものだった。
Naverまとめで新世代ェ・・・デジタルネイティブの恐るべき生態なんて見かけると、iPadを与えた全ての子供たちが何も教えなくても自然に使い方を覚えて、勝手にデジタル環境に適応していくように思える。幼少時代、外で誰に教わることもなく缶けり、鬼ごっこ、お人形で遊んでいたように。
デジタルネイティブなら当たり前にできて当然じゃないの?と見過ごしがちだけど、デジタル機器もまた単なる道具。見るだけで使い方がわかるアフォーダンスデザインなんて存在しないんだ。誰かが使うのを見て知らず知らずのうちに子供は使い方を学んでいく。ある日突然しゃべりだすように。でも、それだけだ。コミュニケーションが場数を重ねて上達していくように、人と交わりあって自然と人間関係の難しさを覚えていくように、デジタル機器もまた教える人、教わる関係があって初めて学べることはすごく多いんだと思う。まとめを見ていたら、デジタルネイティブはすごい、すごいともてはやす裏に、自発的に歩む可能性に全てを押し付けて、教えることを放棄してるんじゃないか、なんてことを勝手に考えて勝手に暗くなった。
大学が推奨してたiBookG4を買ったはいいけれど正直持て余してたのでそれっぽいことをしなければと思ったからだ。
その最初の受講日、スライドを見ながらぼちぼち打っていた時、後ろからちょんちょんと肩をつかれた。
「漢字、かな」の変換はコマンドキーとスペースの両押しでできるよ。
スペースキーの隣にある林檎のアイコンを押してみてと言われるがままに実行すると、
...それまではマウスボタンでわざわざ右上にもっていって逐一切り替えていた私。Windowsと比べて、右クリックのボタンはないし、「半角/全角」のボタンもないし、UIもおかしいし、@の位置は違うし、起動の音はでかいしとMac使いづらい理由のトップ5が初めて切り崩された瞬間、自分はどんな顔をしていたのだろうか。
後に友人になる彼にはその後もいろいろ教えてもらった。ジョブズの名前を初めて知ったのもその一つだ。彼の死亡が報道されて、名前が連呼するようになった後、初めて正しい発音を知った。他にも似たようなことがあったので当時の彼は自分と五十歩千歩だったのかもしれない。だが、yahooで質問することを覚え始めた自分には、顔が見えるだけで安心するかけがえのない貴重な師だったことは間違いない。予断だけど、ウェブの善意が最初は怖かった。どこの馬ともしれない自分にどうしてこんなに親切に回答をくれるの?とあの頃は不思議でしょうがなかった。そんな自分が今増田で書いているのがひどく可笑しい。ここまで来るのに義務教育と同じ時間がかかってる。ここまで来てなんで増田なのか、振り返らないこともないけど、私の人生の分岐点を担ったのは紛れもなく友人だ。YahooによるTumblrの買収について、Gizmodoの記事読んだ?そんな話を振ってくれる彼は今も私の前を走り続けている。
ショートカットキーの一つや二つ、普通は勝手に覚えるものじゃないかと思う大半の方にとっては奇妙な話なんだろうけど、少なくとも私にとってショートカットキーは教わるものだった。教えてくれる教材はウェブにいくらでも用意されているけど、「ショートカットキー」という言葉を知らなければたどり着くこともない。yahooポータルのホームページには「ショートカットキー」という言葉は載っていないから。だから、無知に気づくこともない。知らないことを知らないから。
勉強をするための教材も、
全部ネットにはあるけれども、
ただあるだけ。
そこへ行くのは誰でもない本人の意思だけど、
本人の意思じゃない。
その動線はやっぱりリアルなのかなと思う。リアルの知り合いでフォローしていたら偶然回してきたリツイートで知らなかった世界を知った時にそこで新たな世界を知るか知らないかを決めるのは、今までに築いたリアルなソーシャルの環境だから。デジタルネイティブと言われ、みんながみんな、同じような情報機器を所有する中で、私たちの世代には予想だにしなかった"格差"がこれから生まれるのかな。
今日プロジェクトの打ち上げがあったのだが、とあるサプライズ……三ヶ月前に寿退社した先輩との再会に思わず涙ぐんでしまい、ひどくばつが悪い思いをしている。今も顔の火照りが抜けてくれない。アルコールは抜けたのに。彼女はかつてSQLの魔女と呼ばれていた。
今から遡ること一年前、私は辞令を貰い、二年目にして事業部ごと変わるという波乱をようやく乗り切って、業務系のSEの仕事内容、特にWebのアプリレイヤーについてOJT形式で学んでいた。そこで先生にあたる方として付いたのが、ちょうど手待ちだった先輩である。初めてお会いした時の先輩に対し、私は正直ちょっと物足りなく感じていた。
初日に行ったPCのセッティングでは、これやってと先輩から資料を渡されたのだが、外部にネットが繋がらない。先輩に相談して弄ってもらったのだけど繋がらず、今日は社内ネットで我慢して、と言われてから二日後、資料が古かったことが判明。
与えられた課題を終えるごとに、コードを提出するのだが、見たよ〜出来てると思う、頑張ったね〜と言われた後で、そのプロジェクトを下敷きに発展課題に足を進めたら、でっかいバグがあったり。
万事その調子で、今やってる課題放り出して、プロジェクトオイラーの問題でも解いてた方がよっぽど楽しいなぁと若干サボりたいと思い始めた頃、炎上プロジェクトへ先輩と二人テスターとして出向するよう、上司から命じられた。炎上プロジェクトのリーダーから手待ち要員いない?と声がお上に届き、降りて来た結果先輩と自分がいたわけだ。
前の事業部ではずっと同じ客先にいたわけで、頭では分かっていても鼻先三寸で飛ばされることには不安がつきまとった。
「これから行く先はどうなんでしょうね?」
先輩へ問うと、
「基盤にいたんでしょ。メインフレームが扱えるなら大丈夫だよ〜」
豆腐すらぷるぷる震えそうな声が返ってきた。
この時の私は、まだ事業部を転属して間もなかったし、プライドばかり高くて奢ってたように思う。事業部を変える→入社して以来の経験値がまた0に、と失うことに対する不満ばかりで、それが拗れて数少ない基盤系経験アプリ開発者、そんな肩書きばかりを強調する変人に成り果てていた。自己紹介で、どうも、基盤から参りましたと、そこだけは大きい声が、今思い出したけどマジで恥ずかしい。
だから、だろう。このゆるふわな先輩とドナドナされることに密かに感じていた屈辱には、出向いた先で押された駄目テスターという烙印によって罰があたることになった。
その理由は、私がSQLを全く使えなかったことにある。テスターとして行うことになったのは表示画面の統合テストで、UIの検索結果とデータベースに直接SQLを打ち込んで得たレスポンスを目で確認していく作業だった。UIは、境界値さえ気をつけて、仕様通りに実施すれば何とかなる。しかし、SQLで再現が出来ない。この仕様はどうやったらコマンドに落とし込めるんだよ。頭を抱える中で思い出したことがあった。
教育過程でJavaサーブレットを学んだが、その一つにJDBCも勿論習った。そこで私は何をしたか?mysqlに繋げればそれでいいやと、エグゼキュートで実行する際に渡す魔法の文字列……つまりSQLの中身は、すべてコピペで済ませていたのだ。社内教育資料を内部作成するにあたり参考にしたと思われるネットから……構文チェック効かないし、ここは手を抜いてもいいだろう、これが要領の良さというものさ……アホーアホー私のアホー。
三日目の午後二時、進捗を確認しに来たPMにすべてを告白すると、ちょっと来てとPMが連れ出したのがあの先輩の席だった。
「申し訳ないけど今やってるテストは止めて、これから定時いっぱい最低限テストが出来るように彼にSQLを教えてやってくれ。」
良いのですか?と顔をあげるとPMは何を勘違いしたのか、やにわに私の肩を叩くと、
「彼女はSQLの魔女と呼ばれている。半日でお前も即戦力だよ。」
と去っていった。顔を先輩へ戻すと、あのPMさんは嘘つきだから信じないほうがいいよといつものふわふわした声でにっこり。
宜しくお願いします。ノートパソコンを横に私は型通りの挨拶。四時間後、私は傲慢さを、尻の毛まで抜かれることになる。
私はSQLの深さを知った。SQLのQとは何だ?Queryであります、サー!!今も時々夢問答を繰り返す。そう、全ては問い合わせ次第なのだ。今思えば、あの時やったことはT2テストを使ったSQL文の作成と添削、しかもSELECTによる条件抽出のみだったが、そこに全てが詰まっていた。
DISTINCTとORDER BYの共存で詰まってわけがわからなくなったコードは、もっとシンプルにいけるよと副問い合わせに書き換えられて。ネストとワイルドカードを多用してスパゲティになったコードを、先輩はLEFT JOINとWHEREとORで全てをすませた。
なんということでしょう。マニキュアが塗ってある長い爪からは想像もつかない早さで直されていく構文に脳内で途中から匠の曲が流れ始めたのを覚えている。本当に、なんということでしょう。先輩はSQLの魔女だった。
翌日、先輩の教えはしっかり自分に身に付いていた。すらすら書けるSQL、サクサク進むT2テスト。条件設定に悩んで、エクセルに吐き出してからリストとコピペで逐一加工してた時間が馬鹿みたいだった。先輩のところへ、帰りしなに昨日のお礼と作業進捗に激震が走ったことを伝えると別にお礼なんていいよーといつものふわふわした顔で微笑んでくれた。
それから先、配属先が決まるまでの条件付きでテスターとして入っていたはずだったが、T2試験が終わり、T3試験が始まってもなぜか私はそのプロジェクトにいたままだった。DB担当者として。もともと基盤だったわけだし、バッチファイル処理でスクリプトがそこそこ書けたというのもあるけど、SQLが書けたというのはすごく大きい。昼休み、いつのまにか私はプロジェクトオイラーの問題に代わって、名著「SQLパズル」を解くのを日課としていた。
先輩は仲良くなる暇もなく、その後すぐにプロジェクトを移り、メーリングリストで寿退社を知った。炎上したプロジェクトは、なぜか横展開を経て今に至り、私は相変わらずここにいる。だが、あの時SQLの魔女がかけた呪いは今もしっかり私に根付いている。
大学生だった2007年頃から趣味で他愛もないホームページをつくっていた。
ワードプレスやライブドアブログのようなCMSには頼らず、1から10まで自分で作ることにこだわった。
すぐにのめり込んでいき、大学の図書館にこもりWEB関係の本を借りまくった。
しかしWEB関係といってもPHPやSQLは理解できなかったので、まずはHTMLとCSSだけ勉強して静的なページをべた書きで量産していった。
HTML,CSSですら最初はつまづいていたけれども、自分の意図した通りにデザインできるようになってからは面白かった。
アクセスは全く増えず、一日100PVにも満たなかったが、僕はめげなかった。
講義には出ず、学園祭にもサークルにもいかなくなり、周囲からは「まだやってたの」「何がしたいの」と呆れた目で見られるようになった。
付き合う人も限定されて社交性は衰えていった。
半年が経っても動的なページをつくれる技術はなかったので、未だに力押しでページを量産していた。
しかしデザインにはこだわっていたので、単純なHTMLでも、見た目にはそれなりのサイトに仕上がっていた。
内容はくだらなくても、いっちょまえなレイアウトで書けば、それだけで見栄えのする物になった。
PVはすぐには伸びないとわかっていたので、平均滞在時間、平均PV、直帰率を目標にしていた。
ユーザビリティには独自性は無用で、正解があると思っていたので、ヤコブニールセンのWEBユーザビリティの本を買って、素直に勉強した。
PVが少なかったので、平均をとっても余り意味がないのだけれども、平均PVは8はあったと思う。
ビジネスの基本は選択と集中だと考えいたので、PVが伸びなくてもサイトのテーマは広げず、なるべく狭く深くを追求していった。
サイト制作をはじめてから8ヶ月ごろではじめてグーグルアドセンスが振り込まれた。
ヤフーニュースの関連する記事にリンクが貼られたことも大きかった。
アフィ収入は年間400万を超えて、僕は大学3年で親の扶養を外れた。
稼げるようになってから、周囲の目が変わった。
いまどきアフィリエイトかよと呆れていた人が僕にジャンルや手法を訊いてくるようになった。
この頃から僕は自分にはプログラマの適正があると勘違いし始めた。
HTMLやCSSは狭義のプログラミングではないにもかかわらずだ。
調子に乗った僕はプロの話を聞きたいと思って、広告で見た翔泳社のデベロッパーズサミットに参加した。
年に一度開かれるITエンジニアの割と大きなカンファレンスだが、仕事で来てる人がほとんどだと思う。
名刺がないので受付で恥ずかしい思いをした。
javaのカリスマエンジニアやオラクル、NTTデータ、MSの偉い人、はてなの人などが講演していた。
当時HTMLとCSSしかわからず、PHPとMYSQLをかじったばかりの僕には話の内容は1割も理解できなかった。
引きこもってプログラマごっこを続けているうちに大学4年になった。
一生アフィで食っていけるわけもないので、就職活動をはじめた。
WEB系はブラックが多いとそれとなく聞きかじっていたので、大手IT企業や大手SIerを中心に受けた。
(新卒でWEB屋の門を叩かなかったことを、今でも本当に後悔している。)
結論から言うとMSもデータもオラクルもグーグルもユニシスも全部落ちた。
営業職も応募したけれど、いずれにせよPHPとSQLをかじっただけでは戦力にならないし、そもそも、WEBとSIでは言語の畑が違うのだろうが、たぶんそういう技術的な事はどうでもよかった。
技術的な事は入社後に教育する体制ができてるので、学生には何よりもまず社交性を求めていたのだろう。
~でも、私には在学中に専攻外の事を勉強していった自主性があります、
~これに関しては誰にも負けません。
とアピールしたのだけれども、ダメだった。ただの独り善がりの変なヤツに見えたのかもしれない。疑わしきは落とす。
結局僕は社交性、人間性、社畜適正、その他、大企業が学生に求める普遍的な魅力を欠いていたから内定がでなかったのだろう。
文系の学生が独学で中途半端にプログラミングの勉強を始めたばかりに、それはIT業界から内定を得る上での強みになるどころか、致命傷になったのだ。
友人は立派な会社に就職していったので、当時リーマン不況のまっただ中で就職難だったというのは理由にならない。
facebookで大学の友人をみると勤務先がNTTデータとかアクセンチュアになっていた。僕よりも人間的な魅力があったのだろう。
サイト制作は趣味と割り切り、日本を支える製造業を仕事に選んだ。
内定をもらってから卒業するまでの間に、僕よりもずっとITに明るい友人に、アフィで成功していたことを買われて起業を持ちかけられたが、何度も衝突し、結局2ヶ月で僕の方から音を上げてやめた。
起業するなら一人でスタートして人を雇うなり外注するなりすべきで、チームで始めるにしても誰が一番偉いのか最初に明確にすべきだと、このときに確信した。
就職したが、毎日のような飲み会と、週末のゴルフ、一発芸の強要など体育会系の慣習に嫌気が差した。
僕は仕事の傍らの片手間の作業でも収入が増えていくアフィに目をくらませて、半年で退職し、専業アフィリエイターになった。
今は無き海外ニートブログの労働観と、後述するコピペが僕を後押しした。
専業になってから収入は伸び続け、一番多いときで月80万を超えたが、その代わり孤独になったので、以前のような精神的な余裕がなくなった。
技術的には大学在学中からほとんど成長しておらず、未だにhtmlのべた書きで、サイトの一部でphpとsqlを使用してる程度だったからだ。
僕のサイトはWEBサービスといえるような代物ではなく、ただの一方通行のサイトで、コメント欄をつくる技術もないので、放置していもユーザーが勝手にコンテンツの価値を高めてくれるということはなかった。
ページを増やすのは社員を増やすようなものだと考えていたけれども、僕の身体は一つなのでべた書きで増やせる量には限界がある。
一人で安定してコンテンツを生み出すには、今後は趣味のサイトからは卒業し、より商業的なユーザー参加型のCGMを作らなくてはならない。このままではまずいと感じていた。
しかし僕はcakephpのようなフレームワークを使用せず、というかMVCを理解できず、。
ワードプレスのようなCMSもつかわず、力押しでべた書きで作っていたので、できることには限界があった。
僕と同じ個人事業主がつくっているW3Qのような立派なサイトをみるのが怖かった。
僕のサイトはブログやニュースサイトではなく、テーマが普遍的なサイトだったので、放置していもPVは減るどころか増えていった。
あぐらをかいた僕はサイト制作を完全に放置して、不安を紛らわすために現実逃避で遊びはじめた。
目的地も決めず、平日に思いつきで一人旅やサイクリングにいった。
仕事を辞める引き金をひいたのが、2chの独身男性板でみたこのコピペだった。
もし仕事に行きたくなくなったら、そのまま反対の電車に乗って、
海を見に行くといいよ。
陽に当たりながら飲むといいよ。
ビールが無くなったら、そのまま仰向けに寝ころんで、
流れる雲をずっと眺めるといいよ。
そんな穏やかな時間がキミを待ってるのに、何も無理して
毎朝ネクタイを締めるときにストレスで吐いていた僕の背中を押してくれた。
なんて罪なコピペだろう。
気晴らしのはずの一人旅なのに、旅館の人に今日はお仕事お休みですか?と聞かれたのが辛かった。
他にも一人で野球観戦に行ったり、映画を借りまくったり、早朝深夜のメジャーリーグの試合を見まくったり、夜更かししてロンドンオリンピックを見まくったりした。
野球中継に関してはスカパーのプロ野球セットを契約していたので、144試合中130試合は1回から9回まで見ていたと思う。
僕はサラリーマン時代に味わえなかった自由をほとんどすべて享受した。
サイトの方はなんだかんだで半年以上更新してなかっただろうか。
そして昨年の11月に事件が起こった。
グーグルのアルゴリズムが変わり検索順位が大きく下がったのだ。
打開するための次のサイトのアイデアはあるのだけれども、技術がない。
フロー理論でいう挑戦と技能の間の大きなギャップがあり、不安に駆られ現実逃避しか出来なくなった。
収入は落ち込んでいくのに、サイト制作をする気にもなれず、この一ヶ月前に自営業を断念した。
僕は公務員を目指すことを考え始めた。
一ヶ月後の6月が試験であるが参考書だけ買って全く勉強は進んでいない。
今年は無理だろう。
しかし今年で27歳だ。公務員になるにはそろそろ年齢制限にひっかかる。
来年筆記試験にうかったとしても、年増が面接に受かるだろうか。
27歳にもなるのに職歴がなく、独学でphpとSQLを囓った程度ではWEB制作会社は雇ってはくれないだろう。
詰んだかな、これ。
もっと外に出て、みんなと同じ大学生活を送って、みんなと同じ就職活動をして、みんなと同じように働いていれば。
初めての増田。
気持の整理ができたのでよかった。
13/5/18 15:00
はてな、ツイッターでの様々なご意見、ご指摘ありがとうございます。
27歳で実務経験のない僕が現時点でのスキルでWEB制作の仕事にありつけるとは思えず、納期がある請負も性にあっていないので、やはり公務員試験の勉強をがんばります。
僕のサイトははてぶ400userもありませんが、最後にホッテントリ入りしてWEBに小さな足跡を残せたので、悔いはありません。
あ、まず前提として、
はたして貴女を幸福にするかどうか、それはまた別問題だけれど。
IT系の超かしこい男なども多く、
多くっつーかIT系でないのにプログラミング大好き男っていうのは超かしこい学生(まぁこれは有望株)か研究者系なんか、
あとはまったくかしこくもないクセに頭いいつもりして「Lispやってます(キリッ ハローワールドくらいですが」とか言っちゃうアホしかいないわけで、
したがって、釣り師たる女たちにとっては、
なかなかあなどれない釣り場です。
では、プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
まず最初に、その男がCOBOLのようなタイプのレガシーコードと
あとはC/C++、そして(TechEdに参加するほどではないけれど)VisualBasicが大好きな、
貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、
「わたしが、仕様書を作ってあげる♪」
これこそまさに必殺の答えです。
そこでプログラミング大好き男が、えへへ、とやにさがったならば、
貴女は、ひそかに、「コピペ量産しやすい技術的ポイントを抑えた仕様書」あたりを
ひそかに練習しておきましょう。これで成功まちがいなしです。
しかし、ここでは、もう少しハイブロウな(?)いわゆるプログラミング好きの男の
落とし方をお伝えしましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
もしも貴女がそう答えたならば、
かれの貴女への恋心は、
20%増量になるでしょう。
なぜって、Scalaは、
コンパイルは遅いながらも、そこがまた
ちょっぴりメモリを多く積めばいい富豪プログラミングみたいなふんいきをかもしだしていて。
質高くふるまっていて、なおかつ、
JVM上で動くくせにJavaが「やるやる」と言ったまま実装してなかったラムダ式と仮想拡張メソッド、型推論を実装した功績もあって。
したがってScalaこそは、
本来なんの接点もないまったく縁もゆかりもない別々の世界に生きている、
インタプリタ言語大好きな綺麗系OLと、玉もあれば石も混じっている、そんなプログラミング大好き男たちが、
この世界で唯一(いいえ、JVM系列のJRuby、Clojure と並んで唯三)遭遇しうる場所です。
●
では、参考までに、危険な回答を挙げておきましょう。
プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
「MicrosoftのVisual Basic for Applicationが好き♪ 週3回は Excelでコーディングするの。」
特にOfficeは平凡ながら、ま、無難にまとめてあるものの、
しかし、「新UIのリボンUI!」「メトロUI対応!」とかなんとか無意味な自慢を吹聴し、
VBAはさらにプログラミングについての謬見を撒き散らした罪がありますから、プログラミング大好き男にとっては天敵なんです。
ティーガー戦車乗りのオットー・カリウスは「ティーガー乗りなら誰でも片側の履帯がはずれ僚車に牽引されて帰ってきた経験を持つはずだ」 って言ったけど
社内SEかSIerなら誰でもクソみたいな前任者が書いたクソみたいなExcel-VBAコードを直した経験があるはずなんです。
また、もしも貴女が「PHPが大好き♪ あたしが書いたPHPのWebサイトが、さくらサーバに7件あるよ♪」
と答えたとしても、同様の効果をもたらすでしょう、
なぜって、PHPは、1990年代にはWeb系を目指す人にとっては簡単で要件を満たすWebサイトが簡単に作れる輝きの道だったものの、
しかし2000年代そうそうから、セキュリティ関係の問題で転落し、
いまや、あの貧弱な言語能力では、Rubyの魅力に遥かに及びません。
(注1)
「わたし、.NET FrameworkのC#が好き、フォームアプリでも書くけど、
最高に好きなのはASP.net♪ SQLServer連携も、ajax control toolkitもすっごくおいしいの。」
と、答えたとしたらどうでしょう?
なるほど、貴女の趣味は高く、
たしかに.NET Frameworkは、C# が cool であるのみならず、
.NET Framework上で動く F# や IronPythonやIronRuby、マネージJScriptも最高においしいんですけれど、
しかし、貴女の答えを聞いて、プログラミング大好き男はきっとおもうでしょう、
(なんだよ、MS信者な女だな、カネかかりそう)って。
(注2)
貴女が、プログラミングが大好きで、言語の名を挙げるにしても、
たとえば、JavaScript(node.js)ならば安心でしょう、
なぜならば、JavaScriptは、かけだしのプログラミング初心者にもマニアにもともに愛されるめずらしい言語で、
貴女がその名前を挙げても必ずしも、(jQueryがやっとの初心者と思われることはあっても)あなたがプログラミング言語おた宣言をしているとは受け取られないでしょう。
むしろ「へぇ。ちゃんとprototypeは使ってる?」と聞かれたら「当たり前じゃない。むしろnode.jsでいいMVCフレームワークが分からないんだけど…」と話を振ってみましょう。
男は嬉々として、30個くらいのnode.jsのフレームワークを教えてくれることでしょう。(まぁどれもどれで帯に短し襷に長しなんですが)
あるいはRighno上で動かしたコードをnodeへ移植する話とか、CoffeeScript、甚だしきはClojureScriptを振ってみてもいいかもしれません。
しかし、たとえば、世界が(つーか竹内先生とポール・グレアムが)誇る超絶関数型言語の名作、Common Lispにせよ、
selfと書きまくることと海外で使われてることに定評のあるPythonにせよ、
バージョンアップごとに言語仕様が変わり、かなり素敵なものではあるもののobsolatedな罠にはまりやすいRubyにせよ、
まったく読めない$_だらけで頭悪い仕様をリセットしてPerl6にする(そしてまた全く読めない)Perlにせよ、
気さくなクジラ飛行机さんがふるまう素敵においしい日本語プログラミング言語のひまわり・なでしこにせよ、
基地外トリッキー言語の代表BrainFxck・Glass・Missa・WhiteSpaceにせよ、
ましてや貴女が、「Haskellが大好き♪ わたし、プロジェクト・オイラーの問題もうほとんどHaskellで、解いちゃった♪」
と答えたならば、どうでしょう?
これはかなり博打な答え方で、
なるほど、Haskellは、純粋関数型でありつつも副作用のある操作が行える超絶名言語ゆえ、
あなたがそう答えた瞬間、プログラミング大好き男がいきなり超笑顔になって、
「へぇ、やっぱりHaskellなら大抵の問題は4行以内くらいで解いちゃった?」とか言いながら
鼻の下がだら~んと伸びちゃう可能性もあるにはありますが、
しかし、逆に、(なんだよ、この女、プログラミングおたくかよ)とおもわれて、どん引きされる可能性もまた大です、
なぜって、必ずしもプログラミング大好き男がプログラミング大好き女を好きになるとは、限らないですから。
男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、
もしも貴女が、「Haskellが大好き♪」なんて言ってしまうと、
そこにはもはや、男が貴女に圏論のモナドを教育する余地がまったく残されていません、
したがって貴女のその答えは、
プログラミング大好き男の貴女への夢を潰してしまうことに他なりません。
ま、ざっとそんな感じです、貴女の目にはプログラマーたちはバカでスケベで鈍感に見えるでしょうが、
しかし、ああ見せて、プログラマーはプログラマーで繊細で、おざなりに扱われると傷つきやすく、ローカル変数の名前一つにも気を使い、女と自分の将来に夢を持っています、
貴女の答え方ひとつで、プログラマーの貴女への夢は大きくふくらみもすれば、
一瞬で、しぼんでしまいもするでしょう。
●
では、スキットを繰り返しましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
そして、その瞬間、プログラミング大好き男の目がらんらんと輝いたなら、
貴女はこう重ねましょう、
「それからね、いま、わたしが使ってみたいWebアーキテクチャは、
Play Framework、素敵なリアルタイム嗜好のアーキテクチャって噂を聞いたから。
あなたのお暇なときがあったら、わたしをPlayへ連れてって♪」
これでもう完璧です。
PlayFrameworkと、Play(遊ぶ・じゃれる)のダブルミーニングでかれの股間も刺激しちゃえます。
そうなったらこっちのもの、
デートの日には、ペアプロ用に Happy Hacking Keyboard をばっちり決めて、かわいい下着をつけて(注3)、
github.comの通販で売ってるoctcatのTシャツか、facebookの「いいね!」ボタンがムネのところにあるTシャツ、 あるいは初音ミク(ないし彼のお気に入りのアニメキャラ。北米ならMyLittlePonyで鉄板なんだけど)のコスプレを着てゆきましょう。
その日から、プログラミング大好き男は貴女の虜になるでしょう。
注1:
(と、書いたもののPHPの現状をよく知りません。グローバル変数だらけになるのとか旧ASPみたいなもんなのかなぁ。count($array); とか書くのアホと思うがpythonも同じだった)
(あと、マジで単機能とかTwitter連携とか診断メーカー的なのでもPHPで7つも作ってる女子居たら付き合いたい)
注2:
もっとも。objective-Cなんていう言語をやることに比べれば個人で行う程度なら金のかからない手法もなくはないのですが。
注3:
プログラマーにとっての「かわいい下着」と、女性にとっての「かわいい下着」の定義にずれがあるので注意。
半数くらいのプログラマーはしましまぱんつが可愛いと思ってる気がするので、妙齢の女性が着用するには抵抗あると思うが、ボーダー柄のコットンショーツ(ただしキャラ絵のは除く)とか、
過度でないていどにフリルがついたものがオススメ。また、色は、レッドだとプログラミング大好き男は引いてしまう(だってそれはコンパイルエラーのときの色だ)ので、薄ピンクかホワイト、薄ブルー、せめて黒(に差し色でピンクとか)あたりに留めたい。
補記:
元ネタ: http://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/3464106/
補記2:
「プログラマー」か「プログラマ」かの問題については、特に意味は無いが前者を採用した。
補記3:
言うまでも無いけど、ネタです。
一般的な高スペックって、経歴書に書かれた社名だったりします…。
コンテンツ業界と行っても上流~下流まであるじゃないですか。上流の人間は重宝されます。
もちろんですが、年齢によっても評価が変わりますよね。
業界に10年以上いるなら、何よりも技術と実績。何を作ってきて、どんな立ち回りをしてきたのか。
そして、プロジェクト管理能力の有無。若い人は育てれば良いのでポテンシャル採用ですが、年増は人的スキル必須。
自分がいた会社では、技術的に厳しい人が半ディレクター的な立ち回りで評価されてました。
コミュ力なし社畜(言われたことはやるが、提案は一切しない)率が高くて、DirやDesとコミュニケーション取れなかったんで。
この業界に10年以上いるなら、他社も5~6社程度は知っていますよね?(いい噂はあまり入ってこないですが…)
有名どころは常時募集をかけていて、技術力、もしくはポテンシャル採用の若い駒を必要としていますが
そこらはあえて、避けて選んでいるんでしょうか?
最初の元増田から読み取れたのは「当たって砕けている」印象でした。
「ヤ○ザまがいの人がでてきたり」と言うのは、出会いサイトやエロチャットを作ってるっぽいし
企業サイトにもコンテンツ実績なんて出してないはずだし、業界内で名前を聞かない会社だったんでは?
業界経験浅くて、右も左もわからないのかな…と思った次第です。
やや古い情報ですが、1~2年前はiPhone/Androidアプリの技術者が不足していましたよね。
社内で人を育てている時間がないから制作会社に丸投げ。それをコントロールできる人も不足してた。
自分がいた会社はJavaとPHPばっかで、C書ける人がいなかったです。(自分はDirなんであまり詳しくないですが)
面接を受けている時に、これから自社でソシャゲ作りたいって会社さんも何社かあったので
ソシャゲ作っていない会社に言って、ニーズを掘り起こしてみるのも良いかもしれないですよ。
自分はソシャゲの開発経験がないので、求人に書いていないことを求められて困りました。
元増田さんは第一線で活躍する自信や意気込みがないということなので、WEBでも流れがゆるやかなところに移ってみるのはどうですか?
この点は、自分も専門外なんで憶測になりますが、ECサイト、企業のWEB運営担当、求人や賃貸物件検索等のサイト運営など
基本DBのサイトって、アプリ開発やソシャゲほどのスピードは求められないんじゃないですかね?
自分はソシャゲは作ってないんですが、旗から見てても、モバイル、特にソシャゲは異様なスピード感なんで
コンテンツからサービス主体の制作へ移られると、少し楽になるかもしれないと思いました。
派遣なら、担当の方に業種チェンジを相談すればマッチングミスが防げるし
いっせーの! Webにのって さあ出かけよう ブラウザとのランデブー ユーザーが大事 実装が大事 JS、マジ大好き ユーザーの痛み それ言語のせい? UIの動き UXのつもり 今までのJSのポジションを 越えた未来は どうなるの? ねぇどうせWebKitでしよ ダメ? ダメ! ECMA標準だけ 油断も隙もない APIとのボーダー越えたい そうもっと! 大胆で ちょっと強引? 俺ワールド全開 優しいJSも いじわるなJSも ひとりじめ 型つけてみて やっぱやめて ウラハラ alt-js Java以上C++未満の JS、マジ最高 V8だけが きらめいて 遠い背中も 追いかけたよ これからの最適化 フローグラフの分まで伝えたい ぎゅってしてPNaClコンパイル ダメ? ダメ! 不埒です CSS3に甘えたい GPUに触れたい どこまで? APIのボーダー教えて おっとっと! 手強い IEの仇 ムキになったら 古いシステムも Flashの将来も 譲れない 実装して やっぱやめて 一方通行プロセス W3C信じて プラグイン書いて No more E4X 動的なの? 静的なの? 型推論好き? 好き! 好きだから 笑わず答えて Ion Monkey 越えよう おっとっと! 大胆で ちょっと強引? prototypeを知ったら JSでの設計や コーディングも変わるの? 答えてよ! ときめき 走り出す わくわくコーディング Self以上 Scheme未満の JS、超愛してる!!
http://anond.hatelabo.jp/20130325172822 の続き
言語はJava7を想定。(Java8が迫っていますが、Lambdaなど関数型は、まだ早いと言うことで)
選定理由は、C++と比較して学べるところが大きく、安全でシンプルな言語だから。
※いきなりJavascriptはやめとけ、PHPは論外。
Ruby・Scalaでないのは、筆者が初心者には適切には教えられないから。
おもちゃ・ToyとしてjQueryで遊ぶのは、悪くは無いと思う。
これ以降は名著の紹介や学習方法の紹介が主体となります。名著のコンポジションという形が時間的限界ですね。
量については「初級になるなら、専門書を計3,000ページは修得することは覚悟してね」なんて言ったりしています。
Javaで初級のわかりやすい指標ですと、[amazon:Effective Java]とGoFまでの修得。
初級になるまでに登竜門への挑戦期間を含めて、3~4年はかかっても仕方が無いとも思います。
※逆に「一山いくらのコーダー」というのは、Effctive JavaやGoFが達成している技術も知らずに「自分がJavaプログラマー」だと誤解してしまっているような人達です。
そういったコーダーは何年経とうとも初級プログラマーにすら敵いません。
初級を目指して、プログラミングを楽しんでください。
ただ、学ぶべきことはべらぼうですが、「各分野毎に、エレガントな方法がある。だから探して修得する」ということが大切です。
※「一を聞いて十を知る」ような優秀な人に、50冊くらいドーンと本を置いてあげて、各本の目次を読ませるだけで、
底の見え無さを悟ってくれたりすると、嬉しくなってしまいます。
※余談ですが、その底の見え無さは数学という学問そのものですね。例えば、関数型言語の底流に「圏論」というここ100年の最新の数学があります。
また中級くらいで、Liskovの置換原則などが載っている本を紹介しますが、
そのLiskovの置換原則の周辺で出てくるcovariant(共変)って、圏論という数学の概念だったりします。
数学畑出身としては、数学が現実に活かされている嬉しい事例です。
「速く正確に大量の出力」という能力は、プログラミングをする上でも、ドキュメントを書く上でも、何より「つまらん仕事」の時間圧縮ができるようになるため、重要です。
スローガンとしては「思考のスピードで出力することを目指そう」です。
紹介するエディターはemacsやvimやExcelです。ついでにIMEとしてATOKを使用しているため、ATOKの操作をEmacsライクにする話も紹介します。
ExcelはWindows環境でMeadowすら入れさせてくれない場合の最後の砦という扱いです。
コマンドラインは、「コマンドラインというものがある」「時として非常に強力である」程度の紹介です。
※筆者はzshは全然使えません。使いこなしている方々と接する度に「勉強しなきゃな~、でも、あっちの方を先にやりたい・・・」とグズグズして、はや何年・・・
正規表現は置換を用いて、テキストの一括編集が重要です。後、遭遇したくない事態ですが、スパゲッティコードの解析をする上での最後の砦です。
※遭遇したくない例
ん?何か変なところで副作用のある処理があるようだなぁ(消沈)、SQLのInsertかUpdateか一応Mergeも使っているところから逆算して原因箇所を探すか・・・(諦念)
この糞コードがっ!!こんなところに書くんじゃねぇ!!(憤怒激高)
(ここで、他にやらかしていそうな似たようなコードを正規表現でgrep検索。改行コード込みにすれば複数文検索も可能)
わはは、予想通り共通化すべきロジックのメソッドがそこら中にある・・・
入門編で一つLinkedListというアルゴリズムを学びました。
少なくとも一つ本を読みながら自力でアルゴリズムを学べる人なら、大成できる可能性があります。
前に紹介した[amazon:C++実践プログラミング]には、LikedListやStackなど基本的なアルゴリズムが載っておりますが、
これに加えて、初級になるためにはこれくらいは知っておいて欲しいというものを紹介します。
※後、最初から必ずしも手を出さなくても良い上限も紹介いたします。
プログラムは、データを入力して、加工して出力・保存する処理の繰り返しです。
つまり、各一連の繰り返し毎に、「正しい入力」「正しい出力」を定式化する必要があります。
それを人間の手では無くコンピューターにやらせられるように、つまり自動テストできるようにテストをプログラミングします。
そこで処理の進捗を確認するためにロギングし、処理が想定通りであるかをアサーションでチェックし、
不正な入力・不正な出力=例外が起きたら、対処策をプログラミングします。
(ex 途中で処理を中断して、入力者に適切な入力のメッセージを伝えてあげる。入力の自動補正などもあり得る)
で、ここら辺をまとめてどうあるべきかとして「契約プログラミング」があります。
※余談。定式化・テストに際して、数学畑の人間としては、Javaだとequalsのオーバーライドでも必要になるし、同値関係・同値分割だけでなく、集合論・群論から学んで欲しい・・・(ここいらは数学科の学部1~2年の学習内容)
名著は英語で読みましょう。名著が名著たる由縁は、度々引用されることにあります。
つまり最新の技術書を読むときに、引用された名著のフレーズが、新旧のリンクをなし、理解の助けになります。
壁打ちといって、独り言で思考補助をするよりも遙かに有益です。
※素晴らしい師匠を探すなら、大学行くのが一番ですが、見聞を広げていく中で出会いを待つしかないとも思います。
マルチスレッドが難しいのは「バグを起こしにくいプログラミング」を求められるから。
つまりTry and Errorからの決別が求められ、今後の仕様変更・拡張も踏まえて慎重に慎重にデザインする必要があります。
できる限りステータス変数を持たずに安全に、でもマルチスレッドにするのだから、効率を追求しなければ本末転倒。
でも効率のためにはメモ化に代表されるキャッシングは必須と、アンビバレンツな要素のバランス取りが難しい。
このために、リエントラントな実装・抽象と実装の分離など様々なエッセンスを駆使することが必要です。
というよりも孔子曰く、知っているよりも好きであること。好きであることよりも楽しめることのほうが強く、
気づいたら日々時間が許す限りプログラミングをしてしまうのが理想です。
※仕事として嫌々スキルを磨かなきゃということが、これほど不幸な職業も無いですね。
学習の達成度を測るには、簡単すぎる不適切な問題ですね。
写経は数学の証明問題を、教科書のテンプレ通りに、数値や名称だけ変えて記述することしか出来ない人の発想。
つまり「矛盾無く一貫した論理モデル」の構築が自由に出来ず、テンプレの微修正しか出来ない人の発想。
また、外部の「矛盾無く一貫した論理モデル」の吸収が不自由で、アルゴリズムを「手順」としてしか捉えられないように見受けられる。
「連続」であること確かめるための「ε-Δ論法」(数学科の学部1年の学習内容)
事前知識無く、このモデルを理解できる人は、十分に「矛盾無く一貫した論理モデル」を構築できる人。
SIer勤務
28歳
今の仕事はSIerのなかでも恵まれてるほうでやりがいはあるのだろう
しかし本当にこれが俺のやりたいことなのか
長時間残業して恋人を泣かせてまで書くコードのターゲットはJava 1.5
会社のルールにしばられチャレンジできないまま年齢を重ねていく
これをつづけていてもよいのだろうか
贅沢な悩みなのかもしれない
チャレンジするとしたら年齢的にはそろそろ動き出す必要があるだろう
転職?
俺にできるのか?
この人たちは元気にやっているのだろうか?
http://anond.hatelabo.jp/20070831005830
http://anond.hatelabo.jp/20080328230459
http://anond.hatelabo.jp/20080323175904
悶々としたまま夜は更けていく
プログラム:定義づけられた物事を進めていく妥当な手順・方法の決定、および物事・手順・方法の記述書
(コンピューター)プログラミング:コンピューターが進めていく物事を定義し、妥当な手順・方法を決定し、記述すること。
プログラミング = デザイニング union コーディング;
デザイニング:進めていく物事を定義し、妥当な手順・方法を決定すること。
コーディング:コンピューターが進めていく定義づけられた物事の決定された妥当な手順・方法を、記述すること。
CD(コーダー):コーディングする人。プログラマーとは限らない。
SE(システムス エンジニア):進めていくべき物事を定義する人。プログラマーとは限らない。
PM(プロジェクト マネージャー):(プログラマー)プログラマー。(コンピューター)プログラマーとは限らない。
※日本のソフトウェア業界ではSEが定義した物事を、何の工夫も無くそのまま記述するCDという体制となっている。
つまり「物事を進めていく手順・方法」が余りにも稚拙で、PGと呼べるSEやCDが居ない。
※「物事を進めていく手順・方法」の巧拙の例としては、
PG: (初項 + 最終項) x 項数 /2
というように、例えば巧拙の差は「上手い・エレガントな方法・アルゴリズム」だったりします。
・継続的に勉強できない(1週間で最低10時間は、何があっても勉強しましょう)
・論文・学術書が読めない。(コードはお堅い理論的に筋道立った文章の極致の一つです)
・100ページくらいなら一晩で修得してやろうという気合いが無い(一晩で仕様書読み込んで次の日から活かす必要があったりします)
・仕事のやり方に疑問を抱かない(楽するためにはどんな苦労も厭わず、常に最善を考えましょう)
・いつかはマネジメントをしたい(人を使うよりも、プログラム組んで仕事させた方が、安くて速くて正確ですよ)
※(笑)なマネジメント:下僕に進捗という数字を報告させて、自分の握っている進捗管理という方眼紙のマス目を埋める作業。
自身の雇い主にマス目の埋まり具合を報告する作業。
※ここで以下の1~4を6ヶ月がんばっても挫折する方は、「一山いくらのコーダー」にしかなれない可能性が高いため、
しがみついてしまうと、真っ当な技術者の足を引っ張ることになります。
・逐次実行、条件分岐、反復実行
・ポインタ ※最近、情報学科のくせに学部でポインタを教えない大学があり、そういうところは真っ当な大学ではございません。
1)O'REILLYの[amazon:C++実践プログラミング]を最初の「ポインタ」まで読んでください。
2)C++の実行環境をC99で整えてください。(環境の準備は自分で面倒を見てください)
3)ポインタを用いて、文字のLinkedListクラスを実装してください。
※LinkedListとは以下の仕様を満たすクラスとします。(C++でJavaのLinkedListを実装)
http://docs.oracle.com/javase/jp/6/api/java/util/LinkedList.html
4)LinkedListの入れ子でTree構造をつくり、再帰を用いて、全要素をコンソール出力するプログラムを作ってください。
5)4)をクリア出来た人は、この本を1年以内に全部読んでください。
ただし、C++は複雑怪奇な言語のため、これ以降は知識レベルの修得で構いません。
私は中3の時、STLやBoostどころかbooleanの無い時にこの本を9ヶ月で読んでおります。
※私が面接に出る場合は、当該内容のLinkedListやQuickSortの概要を直ぐさま説明できる人は、可能性有りと○を出します。
面接で「LinkedListを勉強してきました、直ぐさま説明できます」といって、「そんなの出来て当たり前だ」と言ってくれる会社は殆どございません。
大抵はポカーンとして意味不明という顔をする文系人事だったり、「そんな技能必要ない」というところが殆どです。
逆に「できて当然」と言ってくれる会社は、技術をしっかり学べる可能性大です。
★ここまでクリアした方は、「入門者」と呼んで差し支えございません。次は「初級者」への挑戦です。
※初級者になるためからは、べらぼうに学ぶべきことが広がります。
燎原の火のごとく。
※筆者の立場