「java」を含む日記 RSS

はてなキーワード: javaとは

2013-03-24

ついに顕在化しはじめた「kwatchリスク

界隈ではかなり前から Python界の perlcodesample こと @makotokuwata のリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ

https://twitter.com/makotokuwata/status/315510592171556864

この人、「HaskellDBはORMより素敵!」「ORMと全然違う!」と言ってるけど、ActiveRecordすら知らない可能性でてきた。まあ、なんだ、Javaしか知らずに「静的言語はクソ」と言う人もいる世の中だし、最近のORM知らずにORMより凄いと言う人がいてもおかしくない。

まあその通りだ。しかし、次のツイートを見れば完全に自己矛盾しているのがわかる。

https://twitter.com/makotokuwata/status/315477530759016448

HaskellerではないのでHaskellDBのページを読んでもよくわからなかったので、解説をお願いしま

HaskellDBのことを知らずにORMの方がすごいと主張している訳だ。口が悪いだけで、ほんと話にならない。

この人はkwatchでググればわかる通り大昔から perlcodesample 的な振る舞いを続けていた人だ。他人の意見を聞けない視野の狭さとか、独善的な振る舞いなど、共通点は多い。インタネット黎明期にはこういう知識が中途半端にあって調子に乗ってしまう人は他にも多かったので別段珍しい訳でもないのだが、この人のプロフがほんとの意味でのリスクだ。

https://twitter.com/makotokuwata

Pyを広げるのに熱心なだけの人間

いや、この人別にPythonメインストリームにいないし、迷惑。本当にPythonを広めたいなら、プロフィールを「Perlを広げるのに熱心なだけの人間」に変えて欲しい。

2013-03-18

SI業界中の人間は、凄惨世界を望んでいる件について

http://d.hatena.ne.jp/iad_otomamay/20130318/1363596244

この記事。本当に腹が立ちました。

まず質問自体が酷いのが多い。

省略したのは知らないと障害の危険があるので知っとくべきってことで同意なんですが、

HTTPクライアントブラウザの種類などの情報を知るためのヘッダは何ですか?(筆記解答)

HttpRequestオブジェクトからPostされたデータを取得するServletメソッドは何ですか?(筆記解答)

これは使うときにググれば良い話。暗記しておくメリットがわからない。

結合テスト中のシステムで、OutOfMemoryErrorが発生しました。UTソースコードの変更はしていません。ヒープメモリは足りているようです。原因として何が考えられますか?(筆記解答)

UTソースコードの変更はしていません」という一文が意図不明単体テスト終わった後にソースコード変更したら、再度単体テスト必要だと思うのですが?この一文は何のヒントにも制限にもなっていないです。

String オブジェクトを+で結合するのはなぜNGなのかメカニズムを説明してください。(筆記解答)

なぜNGなのかというのは「文字列連結演算子(+)では速度が遅いから」であり、StringBufferかStringBuilderのような結合用クラスのappend()を使うことでパフォーマンスは向上する、というところまでが質問の狙いなのかと思いました。もう一歩踏み込むならば、+をしたときコンパイラでどのようになるかを知っているかどうか、みたいな。しかし結合用クラスにはデメリットもありまして、append()は冗長過ぎて可読性が酷く低下するデメリットがあります文字列の連結時にクラスをnewするタイミングを調節したほうが速くなることもあります近年ではマシンスペックもあがってますので、そんなに気にする部分ではないと思います。そもそも、このStringBufferの仕組みは絶望的に救いがないJava言語の汚点と言ってもよい部分です。なんで文字列の連結方法に複数のやり方を速度だけの理由で取捨選択させるというバッドノウハウなので、早くコンパイラ最適化して一元化くれることを望む部分です。

StringBufferかStringBuilderと書いていて、そういやスレッドに関しての質問がないのはどういうことなのかと感じました。JavaWeb系ってスレッド重要だと思うのですが。

JavaScriptHTML要素をid属性の指定により取得するメソッドは何ですか?(筆記解答)

もうjQueryDojoも使われるようになってきたからこれも知らなくてもいいんじゃないかと。id指定で取れるということとを知っておけば答えにはたどり着けるはず。バッドノウハウです。どうしてJavascript最近になって流行ってきたかを思い出して欲しいです。

プログラマーバッドノウハウの塊でなくてはならない、というのが見えてくる質問内容ですが、最近は覚えなければならないことが多く、技術更新スピードも早いので、あの質問のような重箱の隅まで暗記するようなことをしていては、重要な部分が抜け落ちているし、暗記の苦手な人は辛いと思います書籍ネットのような情報の蓄積と抽出する部分は充実してきたので、概念は知っておいて、実装手段はその都度調べるほうが効率的であるかと思います質問は、応用の効く根本的な部分を問う方がよかったです。

現実は、もっと凄惨世界を経て時代が進んでいくようだ。」などと締めくくっていますが、この人は凄惨世界が嫌なのでしょうか?不安を煽るだけで対策も講じていません。まず、質問の回答を書くだけでも、読んだ人の知識の底上げに貢献できると思うのが普通です。「これは基礎教育をやってれば当たり前」とか言ってドヤ顔して、できない人間馬鹿にしているだけに見えます本心では凄惨世界を望んでいるのでは?としか思えてなりません。

この記事を読んだことで、またSI業界から優秀な人が遠のくことでしょう。こんな人間が居る業界には居たくないと。

どうして悲しみを減らす方向に動いてくれないのかと…

※追記

頭沸騰しててスルーしてしまったのですが「淘汰」って書いてあったので、業界底上げは望んでないんだなあと、見当はずれなこと書いてしまったなあ、と、後悔した。

2013-03-13

沈没船エントリあとがき

http://anond.hatelabo.jp/20130310152356

沈没船エントリを書いた増田です。

およそブログ向きではない冗長で読みにくい文章だったけれど、

元増田に便乗したお陰か、思ったより多くの方に読んで頂けたようでとても嬉しいです。

こんな付け足しを書くのは興ざめかもしれないけれど、

似たような境遇の人も多いようだし、

PGSE現場20歳から10年居続けてきた人間として、

もうちょっと具体的な事を「あとがき」として補足しても良いかな、

という気になりました。

(申し訳ないことに、この付け足しも長いです)

私の文章は、元増田

「上流エンジニアなんて死んじまえ」

http://anond.hatelabo.jp/20130309233920

ブクマトラバで言われている

「上流にも技術力はあるはず」

「下流だってダメな奴が多い」

という、上流下流のどちらが優秀かという議論が問題からやや外れているように思えたため書いたものです。

優秀な人がいても活躍できず、当たり前のような施策もうまく働かない、

そういう現場だという事を描写してみたかったわけです。

技術力のある人は、上流・下流を問わず

20~50人に1人の割合で点在しているのだと思います

(下流にいたほうが技術力の見せ場が多いため、

下流に優秀な人が多いように見える傾向はありそうです)

そして、その他の19人~49人は基本的に普通の人です。

20~50人に1人の人をあてにして仕事を進めるのは(現状のSIer周辺では)不可能なため、

19人~49人の普通の人が持つ価値観・思考・ペースで仕事を進める事になります

さて、システム開発ソフトウェアの基本構造を決める部分について、

どうしても一種の才能(パターン認識適用能力)が必要なのですが、

大勢普通の人の中に特殊な人が点在している状況だと、

才能のある人が適切に作業に割り当てられる可能性は低くなります

その結果、普通の人が納得しやすい下記のような方法が取られがちです。



こういった構造は、当時は場当たり的なつもりでも結局は規約化してしまい、

「動いているものは敢えて変えるな」「似たものコピペせよ」

「途中で何を思いついても設計書の通りに絶対作れよ」

といったSIerありがちな規約と相まって、未来永劫負の遺産として残ることが多いです。

そして、一旦ダメな土台が出来上がると、その上には基本的にダメものしか重ねられないため、

どんどんダメになっていき、最終的には手のつけられない沈没船になります

プログラムの基本構造ダメだと、どんな優秀な人であっても出来ることが限られます

当然リファクタリングすれば良いのですが、

リファクタリングお金を取るのはかなり難しいだろうし、

  • 何でお客様の稼働している大切なソフトにわざわざ手を入れるのか? リスクを取る意味が分からない。
  • 今まで俺たちが頑張って作り上げたものが結局ダメだったと言いたいのか? 金をもらって作った物なのに?


といった、普通の人による突っ込みには、現場での反論がなかなかしにくいです。

そして、リファクタリングもやはり才能のある人が中心になる必要があり、

普通の人がやっては結局問題の焼き直しにしかなりません。

ここまで書いてきたようなことが、

名高い大手SI下請け現場にいた5年間に見てきたことです。

現場の中に居たままそこを良くする方法は、結局思いつけませんでした。

仕事は基本的にエクセル方眼紙を読み書きする事で、

出世昇給の見込みも薄く、

これをこの先何年続けても無意味だな、と思い、転身することにしました。

行き先が黒船かどうかは分からないけれど、

割と自由にものが言える立場にしてもらえそうです。

黒船沈没について



黒船だって沈没する」という指摘は本当にその通りです。

黒船からこそ辛く厳しい現場もあると思います

ただ、黒船沈没するというのは、

正当な取るべきリスクを取った結果だと思うのです。

沈没船では最初から沈没寸前のため、リスクを負うことができないか、異常に増幅されます

運用リスクを負うことのできない(機能追加できない・構造改善できない)システムなど、

ただの負債しか無いと思うのです。

黒船は、取れるリスクの幅が大きいからこそ難しい航路を選べるし、

そこで失敗したとしても、それ自体が業界人類全体の資産になるのだと思います

現実沈没船沈没していません。

黒船は水平線のはるか向こうで、船長はそれらが見えないため気楽です。

ちゃんと沈没してくれれば、最終的にはまともな船しか残らないので助かるのですが、

まともさに関する競争が働きにくいところがあるらしく、

現実には沈没船でも(だからこそ)安泰なのです。

リスク満載のはずの沈没船を安泰とさせている事によるコストは、

最終的には企業全体・社会国家人類といったものが負っていると思われます

補足の補足、「普通の人」「才能のある人」について



普通の人というのは、

プログラミングについて特別な情熱を持たず、

会社で使う他は開発ツールに手も触れず、インストールもせず、

家に帰ってから基本的には勉強せず(資格仕事必要場合は別)、

仕事で決められた範囲のツール・技術・問題領域で満足できる人の事です。

これは不真面目とか怠慢とかそんなわけではありません。

極めて普通の真っ当かつ正常かつ健全社会人の行動です。

例えば、マクドナルド店員が、

自宅でもビーフパテを練ってハンバーガーの焼き色を研究したりレシピを何冊も書いたり、

毎日毎日ポテトハンバーガーキーワードにググったりブログを読んだり、

枕元には常に藤田田の著作を数冊積んでいて、本棚には完全なコレクションがあったり、

1日に5度は銀座1号店の方角へお祈りを捧げたりしたら、

やはり変だと思うのです。

「才能のある人」とは、そういう事をごく自然に、

それこそ食事や睡眠のように日々やっている人です。

さらに言えば、これはマクドナルド店員を例に出すと変に思えるのであって、

ギタリストピアニスト作家写真家デザイナーといった専門家であれば

自然でも何でもない最低限のたしなみです。

20人~50人に1人という割合も、それがプロギタリストであれば納得できる数字です。

本来そのぐらい特殊な専門領域を広く一般に開放してしまっているという問題が、

元増田の「システムエンジニアなんて免許制にしちまえよ」という言葉に繋がるのだと思います

他の専門家とのアナロジーで言えば、事務所制なども考えられるかもしれません。

2013-03-10

http://anond.hatelabo.jp/20130310152032

プロダクトマネージャさんが99%の人におすすめな静的型付け言語って?

Javaは99%の人に薦めてもいいかも知らないけど、型システムとしては静的型付け言語ダメなところをだけをかき集めたようなクソだよね。type safeですらないし。

ScalaとかHaskellとかOCamlとかを99%の人におすすめちゃうの?

2013-03-09

Pythonと他言語比較

2013-03-03

http://anond.hatelabo.jp/20130303135038

Java学習コストが低くHaskell学習コストが高い」みたいな話をよく見るけど、本当なのかねぇ。

初期のJavaならともかく、AutoBoxingの落とし穴とかワイルドカードの正しい使い方とか、

強力なenumの使い方とか、色々入ってる今のJavaがそこまで簡単には思えない。

機能豊富さというより機能抽象度の高さが問題ってことなのかな。

http://anond.hatelabo.jp/20130303135038

元記事はそんなに外してもいないと思いますけどね。

静的型付き言語として関数型言語を持ち出してくるのは、論点が違うような気がしました。

静的型、型推論の嬉しさって、関数が一級かどうかでも違ってくると思いますし。

(つまり、静的型の得失について、scheme vs ML での議論と Java vs Perl の議論は別物だと思います)

結局は適材適所という結論にしかならないと思いますが、たとえば Web 系なら静的型付き言語で書いても面倒臭さの方が多そうです。

Web 系で一番面倒なのは文字列の扱いなので。そこは型システムで何も解決しないですよね。

そういうことより、文字列関数名として $funcName(arg1, arg2) みたいにコールできたりとか、

そういう柔軟さが便利なのですよね。

こういうの、静的型がある言語だと大変ですよね。Java ならリフレクションですよね。

他の言語ではどうするのでしょう。おそらく、自前で関数テーブルを作ることになるでしょうか。

静的型を持たない言語での開発が、大規模になると破綻するというようなことが言われます

別に破綻しませんよ。

大規模開発といっても、大抵フレームワーク規約に沿って実装するだけですし、

規模を LOC だと考える限りにおいては、大規模になっても複雑さは LOC に比例しませんから

単純にモジュール数が増えるだけで、一つ一つは単純な実装の繰り返しですよね。

おさしみにたんぽぽを乗せるお仕事と変わりません。たんぽぽの山が積まれていて途方に暮れるだけです。

もちろん、大規模になったときスケールしなくなるので C/Java にするというのはありますけど。

でも、これも Web 系では、ボトルネックネットワークデータベースというのが普通だと思います

お前らの言う大規模開発ってなんだよ。

型論争の一部。

動的型陣営と静的型陣営がそれぞれ大規模開発に向いてるとか向いてないとか言うけど、「大規模開発」って何よ?って話。

自分としていくらかのパターンがおもいつくし、それぞれ質的に異なるからごっちゃにしても話が混乱するだけだ。

お前らの言う大規模開発ってどれだよ?あともちろんこれ以外にもあれば募集。

  • 人的な大規模開発
  • 量的な大規模開発
  • データ量的な大規模開発

人的な大規模開発

ITゼネコンみたいな連中が行う、何万人月というコストをかけて行う開発。失敗した特許庁の開発みたいなやつだ。典型的にはワンオフ品なので、かけたコストのわりに品質は低い。fizzbuzzも書けない人すら1人月と数えられるし、そういう人が生息するのはここである2013年現在では多分Java(かたまにScalaなど)で開発される。末端の人には自分たちの担当領域外の仕様をどうこうする権利が基本的にはない。

量的な大規模開発

OSカーネルのみの狭義のOSではなくパッケージとしての広義のOS全体)とか、あるいはモダンブラウザみたいな、膨大な機能セットをもち、様々な環境ロバストに動く必要がある開発。膨大な機能セットの中には、膨大な後方互換のための機能(例えばブラウザであればクソみたいなレガシーHTMLでもなんとなく見せてやるような機能)や、ありとあらゆるハードウェア言語などの細かな実行環境の組み合わせで動作するための抽象化および各環境のための固有の機能を含む。オープンソース形態で開発されることもよくあり、2013年においては多分C/C++で開発される。自分たちで仕様コントロールする権利があったりなかったりする。

データ量的な大規模開発

1日のPVが億オーダー以上になるようなWebサービスなど。昨今だと1日にGバイト〜Tバイトにもなるデータを解析できるシステムもセットになってることが多い。サーバの1台や2台がハードウェア的な故障してもロバストに動き続けるための機能や、そのときリカバリが容易であること、壊れた分や単なる新規追加ののサーバの補充が容易であること、みたいや機能および設計上の工夫が求められる。人的な大規模開発や量的な大規模開発と比べると比較的少人数(数人〜数百人。数千人になるのは数えるほど)で開発される。2013年においても様々な言語で開発されていて決定打はない。自分たちで仕様をある程度コントロールする権利がある。

haskell はどの大規模開発に向くか?

例えばこの方が、Haskellは大規模開発に向いていると主張されているが、おそらく人的な大規模開発には向かない。これは2013年においてHaskellを使うユーザがそれほど多くないから、というのも大きな理由だがそれだけではない。Haskell学習コストが低いことを目指して作られた言語ではないことも極めて本質的かつ決定的な理由の一つである。(自分の思う学習コストが低いことを目指して作られた言語とは例えばJavaPHPだ。)fizzbuzzを書けない人をHaskellを書けるまでに教育するのは、どうしたらいいのだろう?

Haskellが量的な大規模開発に向いているかどうかは(自分無知により)よく分からない。典型的には量的な大規模開発を実現するためには、そのソフトウェアWindowsとか各種ブラウザ並に多くの計算機上で稼働することが必須だ。そうでないと膨大な開発コストがペイできない。オープンソース的に貢献を募るとしても、量的に巨大なソフトウェアに貢献する人を一定以上集めるには、それなりのユーザベース(単に使うだけの人も含めて)が必要であるHaskellの実行環境というのは全然枯れていないが、10年前のハードウェアOSを未だに使っている人の計算機上でもちゃんと動くのだろうか?HaskellってVMで動くんだっけ?ネイティブコードを吐くんだっけ?

http://anond.hatelabo.jp/20130302200822

Perlの人とRubyの人とJavaの人とC++の人が関数型言語の人を恐れてるんだと思ってた。

2013-02-28

ついに顕在化しはじめた「Perlリスク

英語圏ではかなり前からPerlで開発し続けることのリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ日本でもそう遠くない未来だと思う。

若手エンジニアの不足

Objective-Cのように需要が逼迫しているのに人材供給が増えず需給ミスマッチが起っているわけでは無く、需要供給も減るという状況下でわずかだが需要が上回っているとう性質の悪い状況がPerlに起きている。特に深刻なのは安価な若手エンジニア採用絶望的に難しいという現実だ。Rubyが台頭して数年経ちPythonメインストリームの先頭を突っ走る2013年において新しくPerl勉強しようとする若者はよほどの物好きしかいない。30~40歳Perlエンジニアを雇うのはそれほど難しく無いだろうがコストがかかる。安価20代前半の若手エンジニアを雇いたいという企業の思いとは裏腹にPerlを新たに学ぶ若者絶滅寸前だ。

とても優秀な若者雇用できるチャンスが巡って来た。採用担当者はこう尋ねる。「Perlは習得していますか?」「もちろんC/C++/Pythonはお手の物です。Javaもある程度可能です」「もう一度伺いますPerlは習得していますか?」「申し訳ございません 未習得です」

悲劇だ。

イノベーションの枯渇

もう何年もPerl界隈で新しいモノが生まれたと言う話を聞かない。こんな事を言えばPerlハッカー激怒するかもしれないが、しか現実RubyPythonJavaに比べればこの10年の間にPerlから生まれたものは微々たるものだ。何かしらのライブラリにしてもwebフレームワークにしても、ハッカーが新しいモノを試す土俵はいつもPythonRubyJavaが選ばれて来た(もちろんC/C++もね)。

もはや彼らがPerlを選ぶ理由はただ一つ「今Perlで開発しているから仕方なく」

最低の理由ではないだろうか。

10年前にPerlで開発していた企業最先端を走っていた。迅速に自らのアイディアを具現化するツールとしてPerlは最適だった。それが今やどうだろう。自分たちの書いたコード保守し続けなければいけないという理由「のみ」でPerlを使い続けている。他に理由など無い。Perlで開発する理由は自分たちの過去仕事保守しなければならないという理由のみだ。

控えめに言っても、そういう企業未来は無いと思う。過去とは決別し、10年後の自分たちにとって最適な選択をすべきだ。今すぐにだ。本当に手遅れになる前に。

2013-02-27

型が無い事の利点とやらが全く的を射てない

変数に型がないということの利点について考える

http://d.hatena.ne.jp/perlcodesample/touch/20130227/1361928810

が大変お粗末な内容だったので、反論記事を書きます

型推論ソースコードコンパイル時間を遅くしてしまますソースコードが大きくなってきた場合に、すばやく書いて、すばやく実行結果をもらうことができなくなります

今時のパソコンならコンパイル時間なんて大したことない。

大規模開発環境コンパイル時間よりリンク時間の方が問題になりやすいが、それは別に型の話とは関係ない。

あと、インタープリタ最近は実行時にJITコンパイラが走る。

実行時間に影響がなく、開発者の待ち時間で済む方が実はよいのでは?

統合開発環境での、メソッド自動補完の機能の実装が少し難しくなります

みんなが統合開発環境をつくるとでも?

そもそも型が不定なら補完することすらできないので、

比較対象として相応しくない。

変数に型がないとソースコードの変更に強くなります。たとえば右辺の返す型に変更があったとしても、受け取る側のソースコードを変更する必要はありません。

これは逆に危ない。

実行するまで意図したインスタンスが返ってこなくなった事実に気づかないから。

コンパイル時に指摘してくれる方が安全

変数の型を持つ言語は、型が異なるのだが、処理としては同一の処理を行いたい場合には、オーバーロードという機能を使う必要があります変数の型がなければ、オーバーロード機能必要ではなく、ただ単にif文で分岐すればよいだけなのでとても楽です。

インターフェイスというもの勉強してください。

CならVTable。Javaならinstanceofなど同等の事はできます

というか、これ。型を意識しまくったコードじゃないですか???

C++テンプレートのような複雑でデバッグしにくい機能を使ったりしなければなりません。

とあるインスタンスしか入ってないつもりのリスト

実は全然ちがうものが混ざってた!なんて事故コンパイラによって止められる分、デバッグする必要すら無いんですけどね。

変数に型がないとどのような型の値が代入されているかからないという批判があるかと思います。可読性の問題で

変数に何が入ってるかわからないよりも、

インスタンスが何を持ってるのかわからない方が可読性に問題がある。

2013-02-22

僕は限界かもしれない-その2

前の日記を書いてから1カ月程たった。

あれから色々とあった。

特に変化したのは妻と子どもとの接し方。

妻と話し合って、もっと子どもと向き合うようにした。

自然イライラした気持ちでいる時間が短くなった。

最近仕事納期が近いのに、インフル等で時間が取られてしまってイライラしているが・・・

妻に対しても、なるべく話を聴くようにした。

早く家に帰れたら今日あったことを聴いたり、

朝食の時は今日は何をするのか聴いたり。

妻も僕に対して優しく接してくれるようになった気がする。

土日のどちらかに3~5時間程は自由時間を認めてくれた。

このおかげで、会社の人とランチに行ったり遊んだり出来るようになった。

他にも、何だかんだで僕の好物を作ってくれる機会が多くなった。

会話しても妻がイライラすることが少なくなっていると思う。

家族として良い方向に向かってきていると思う。

タイトルに「その2」と書いた。

理由は、今日祖母の見舞いに行くので、

気が向いたら書こうと考えているからだ。

これから、祖母のためにおかゆ等の食べやすもの

作って持っていこうと思う。

祖母の昔話でも聴こうか。

前は大阪青果市場に勤めていたと聴いた。

そこの人から祖父のところに嫁いで欲しいと言われて

結婚したという。

なんというか、今では考えられないような結婚の理由だ。

まぁ、何となく祖母らしいとは思ったが。


祖父の顔を僕は知らない。

不思議と知りたいとは思わなかった。

たぶん、知りたいと言うと祖母や母が

祖父の記憶を思い出すだろうと考えたからかもしれない。

一度だけ祖父のことを聴いたことがある

何にでも興味を持つ人だったらしい。

家にある鉄製のフライパンは祖父が作ったとか。

小豆相場に手を出してひどい目にあったとか。

母が二十歳の時に亡くなったとか・・・・。

とりあえず、祖母のお弁当(?)作って見舞いに行ってきます

----------------------------------------

帰宅

とりあえず、今日は色々と有り過ぎたので

明日以降に書こうかなと思います

夢は追っています

独学でAndroidアプリを細々と作っています

JAVAで作って、JavaScriptに書き換えてということをやったりしてます

そこにはあえて触れなかったんですがね・・・

そこに対して過剰反応する人が居るとは思っていなかったし、

僕自身が夢の進捗を語れるレベルではないと思っているので。

仕事ではC言語しか使ってないですが、

別の言語であろうと勉強すると良いプログラミング

書けるようになって楽しいです。

仕事で新しいことを任されたので、良いプログラムを書く楽しさで

一日でサンプル作り上げたりとか。(コメント含めて600行なので、量は多くなかったですが)

自分なりに成長はできているのかな?っとちょっと思い始めているところです。

ただ、目指しているところには全然届いていないので、

もっと勉強しないといけませんが・・・・。

とりあえず、疲れたので今日はこの辺で。

2013-02-07

黒歴史原体験

IT土方自分が初めてプログラムなるもの体感したのは、中学校の授業だった。

当時は5インチフロッピーが主流のパソコン上で、BASICを走らせたらそれが妙に面白くて、時間を忘れて夢中になってしまった。

原体験というのは恐ろしいもので、今振り返ってみればそのときの体験が、その後の人生に計り知れない影響をもたらしたわけだ。

例えるなら、あやとり拳銃早撃ちに目覚めたのび太感覚だろうか。

開発者社会的地位は「コード書けるだけで何が偉いの?何が凄いの?」という微妙ポジション(国家資格でもコード書き方面の高度区分は組み込みだけというのが現状をよく表している)で待遇微妙だが、それでもプロコード書きは自分にとって天職だと思うし、そうなってしまったことにあまり後悔はしていない。

山下清じゃないけど「まあ仕事だしな」で過ごしたり過ごさなかったり。コード書き以外は何をやっても全然ダメだけど。


とまあ、これだけで終われば満更でもない思い出話なのだが、正直、初めて触れた言語BASICだったことは、自分にとって黒歴史でもあったりする。

かつての自分と同じようにBASICプログラムに興味を持った人に「あんなのはダメ」と頭ごなしに言うつもりはないけど、もしBASICのBの字も知らない人であれば、今ならPythonRubyを、Linuxとセットで勧めると思う。

気がついたらCもJavaPerlもこなし、いつの間にかアプリシステムプログラミング経験していた自分からすると、それくらい、BASIC言語として拙いというのが実感なのだ

色々問題はあるんだけど、一番はプログラムに対するスタンスを誤解してしまう所。

あれを最初にやると高確率で「プログラミングなんて、その場で出来る範囲で適当に書いときゃいいんだ。なんつってもノリが大事なんだから、うるさいこと言って神経取られちゃダメだ」という恐ろしい考えが身についてしまう気がする。

だってかなりいい加減に書いても、それなりに動いちゃうから。人は大抵易きに流れるので「これでいいのだ」になるのが自然というか。

更にこれがVBだったりすると、MSの用意した機能だけしか使えない人になるだろう。もっとヤバい気がする。


ともかく自分はそうやって身についた悪習慣が祟って、折角大学で習った知識はまともに身につかず、就職後にOJTを通して自らを叩き直すハメになった。

勿論これは自力じゃなく、当時のメンターの驚異的な忍耐力を以てなされたことであり、今でも頭が上がらない。

全く遠回りをしたもんだと思う。

今でも周囲のVBしか業務経験ない人のコード品質は基本的に低い。某掲示板ではVB厨という言葉があるらしいけど、そういう蔑称も仕方ない気がする。

まあ自分場合、当時はBASIC以外の教育用言語といったらPascalくらいしか無かっただろうし、振り返ってどうにかなるもんでもないし。


それでも「自分最初に触れたのはBASIC」とは、恥ずかしくて中々言えなかったりする。

2013-02-06

もしプログラミング初心者新人に基礎教育を施すなら

オープン系のデスクトップアプリ開発、Webプログラミングシステムプログラミングを仕事にする人向けとして考えてみた。

学習環境Ubuntu Linuxで、デスクトップ上のターミナルか、WindowsからTeraTermsshログインして行うことを想定。

なので前提知識としてLinuxabcくらいは教えておくとして、もし来年度やるならこんなもんかな。

結構分量多めだけど、これでも基礎の基礎に絞った感じ。


  1. Pythonで学ぶ手続き型プログラミング
  2. Javaで学ぶオブジェクト指向
  3. C言語で学ぶメモリの仕組み(主に配列ポインタ構造体関連)
  4. Perlで学ぶ文字列処理(正規表現ハッシュCGIを含む)

おまけ:Pythonで学ぶ関数型プログラミング


なお、上述のカリキュラムでやらない言語(VBjavascriptC++Objective-CC#PHPRubyなど)やWebフレームワーク(DjangoRuby on Railsなど)は、全てこれらの応用で覚えられると思うので、基礎教育終了後に各現場にてOJTで習得してもらう。

IDEも使わないけど、はじめの一歩で軽量エディタ+コマンドラインをやり込んでいれば正直どうにでもなるので省略。

あと最後がおまけ扱いな上にLISPで学ばないのは、要するに「リストすげー!超すげー!!」という感動を胸に今後も頑張ってもらうのが狙いなので(だって現状使う機会殆ど無いし)、最初にやって一番手に馴染んでいるツールで、理解のコアになる部分にサクッと触れて欲しいということ。


ちなみに来年度、自分教育係になる可能性は今のところ無い。

2013-02-05

Perlそんなにダメかなあ

言語なんてツールの一つに過ぎないし、ツールなんて適材適所という前提で書いてみる。


PerlC言語Javaとともに、自分にとっては原点とも言うべき言語で、今は全く使ってないけど、昔はとてもお世話になった。

今更書くまでもなく文字列処理やハッシュが強力で、あんな便利なものはないという感じ。

少なくともPerlのないLinux/UNIX環境なんて死ぬほど使いにくいだろう。というか実質不可欠だろう。

書きやすいけど読みにくいのが玉に瑕で、間違っても最初に覚える言語ではないけど(書き散らかすクセがつくので)。


でもPerlは、C/C++バリバリ古参プログラマでは嫌っている人が結構多い。なんでかなあ。

最近ではPHPPythonなど、Perl以外のLLから微妙な感じで見られている。

確かにCでも文字列処理は可能だけど、Perlに比べたら機能的にとても貧弱だし面倒。だからちょっとした作業なら間違い無くPerlのが楽。

PHPWeb方面ではPerlより手軽だし、Pythonシンプルかつ見た目もスッキリ初心者には一押しなんだけど、それでもPerlの書きやすさにはまだまだ及ばないと感じる。


というわけでC同様、今でも決して色褪せないし、これからもあって欲しい言語なのだが。

2013-02-04

http://anond.hatelabo.jp/20130203154719

今時のパソコンをいきなり与えられた人(普通はそうだけど)は、そもそもポインタなんて機能が何故必要なのか理解できないと思う。

JavaとかPerlとかVBとかは、扱いたいデータを直接切り貼りするだけでプログラムとして成立するし、それで十分なわけで。

そのレベルコンピュータの仕組みや、メモリの使い方を理解する必要性は、普通は全く感じられないからね。


それにポインタ意識しながらプログラミングするというのは、前述の演算必要データ構造に加えて、メモリ管理上のデータ構造も扱うという、2重のデータ構造を考えないといけない。

これはプログラム初心者には全く想像できない領域だし、そうそう簡単な事じゃないと思うわ。

ましてやC言語の*pとp[]の交換性が、基本環境依存データ型のバイト長をいちいち把握しながらポインタ演算してアクセスなんて面倒でしょうがいか結構必須とか、そもそもポインタ演算を使いこなせればハードリソースビット単位で搾り取れて、それをアセンブラよりはシンプルかつ抽象的に実装できるC言語は非常に効率がいいとか、まず理解不能でしょ。

そんなことが必要な分野が世の中にはあるという現実すら知らないだろうし。


尤もマイコンキットから入って「メモリデータをロードして、そのデータメモリ上の格納場所CPUから分かるように(ry」というアプローチなら、ポインタを使う以外に方法が無いので嫌でも覚えるだろうけど。

2013-02-03

無能な僕がプログラミングをやろうとした理由

臓疾患持ち、身長170cmどまりの超低スペック高校1 年生です。

プログラミングに興味を持ったのは今から3年前の 12歳のときだった。

まだ、世の中がプログラミング教育必要だとか あまり叫ばれていないときの話だ。自分勉強も運 動もできない。いや、何もかも人以下だ。

からプログラミングという物ができれば、他の 人と同等、それ以上になれると思いJAVAの教本をアマ ゾンで買った。 がんばってサンプルコードを打って 動かした

しかし、なかなか身に付かない。

構造体?とかよく理解できないのだ。

僕は教本が悪いと思い評判のいい教本をアマゾンで 買った。 しかし、理解できない。次第にサンプ ルコードを打ち込むことが嫌になってきた。

まだ、僕は懲りていない。

今度は言語が悪いと思い始めたのである C言語の 教本を買った。

結局、続かず2ヶ月で挫折した。

父親は僕の本棚にいろいろな言語書籍が増えてい くのを見かねてPHPを僕に直接教え始めた。

PHPはなんとか理解する事はできた。

だけども、何も自分から作ろうなんて思わなかっ た。

プログラミングで何か作りたいなんてなかった。

取り柄が欲しかった。

そしてプログラミングを学ぶのを一時的に辞めた。

その間にもなぜかプログラミング言語の教本を買い 物中毒のように購入して行った。 pythonjavascriptlisp入門。

去年の1月にiPhoneアプリを作ろうかなとふと思っ た。mac book air書籍お年玉で購入した。

結局、挫折した。

自分プログラミングの本を購入する事しかできな い。金を使う事しかできない。プログラミングで何か したい訳でもなくただプログラミングが出来るという 取り柄が欲しかった。

7月に僕は絵が上手くなればとペンタブを購入し た。現在ペンタブクローゼットの奥に 眠ってい る。

結局、アニメをみてだらだらするしかできなかっ た。

2013-01-26

想像はるかに超える高速性と安定性を持つWindows Server

想像はるかに超える高速性と安定性を持つWindows ServerをメインにWindowsLinuxハイブリッド環境インフラを構築

http://gihyo.jp/admin/serial/01/gloops/0001

たとえばWindows環境メリットの1つに,

IISASP.NET,そしてC#で書かれたアプリケーション

想像はるかに超える高速性を実現していることが挙げられます

そのうえ,安定して動作しているのです。

Javaを中心としたプラットフォームのものと比べると,

もう全然比較にならないぐらい安定していると感じています

【全ての分野においてWindows圧勝

東京証券取引所の基幹システムとして稼動するWindows

ttp://itpro.nikkeibp.co.jp/article/NEWS/20090609/331590/?SS=imgview&FD=-654674548

HPCでもダントツパフォーマンスをたたき出すWindows

ttp://cloud.watch.impress.co.jp/docs/interview/20101224_416025.html

Windows上で稼動するメインフレーム

ttp://wsmgr.jp.brothersoft.com/screenshot-50450.html

NASパフォーマンス比較テストWindowsLinuxを圧倒!!

ttp://www.flexense.com/documents/nas_performance_comparison.pdf

BDレコのOSはやはりWindowsだった!!

ttp://it.slashdot.jp/story/12/04/24/0052242/

【一方Linuxは…】

Linux Daily Topics:2011年9月2日 Kernel.orgがトロイの木馬の侵入被害に|gihyo.jp技術評論社

ttp://gihyo.jp/admin/clip/01/linux_dt/201109/02

Linux カーネルの基盤サイトクラッキングの被害に - japan.internet.com

ttp://japan.internet.com/webtech/20110902/2.html

Linux Daily Topics:2011年9月15日 狙われるLinux… 今度はLinux Foundationが標的に|gihyo.jp技術評論社

ttp://gihyo.jp/admin/clip/01/linux_dt/201109/15

Linux Daily Topics:2011年9月2日 Kernel.orgがトロイの木馬の侵入被害に|gihyo.jp技術評論社

ttp://gihyo.jp/admin/clip/01/linux_dt/201109/02

Linux カーネルの基盤サイトクラッキングの被害に - japan.internet.com

ttp://japan.internet.com/webtech/20110902/2.html

Linux Daily Topics:2011年9月15日 狙われるLinux… 今度はLinux Foundationが標的に|gihyo.jp技術評論社

ttp://gihyo.jp/admin/clip/01/linux_dt/201109/15

MySQL.comのWebサイト不正コード 闇市場root権限も販売か

ttp://www.itmedia.co.jp/news/articles/1109/27/news027.html

またもOSSプロジェクトが被害に! Wineプロジェクト不正侵入を発表 | エンタープライズ | マイコミジャーナル

ttp://journal.mycom.co.jp/news/2011/10/13/115/index.html

全く使用するメリットが見出せないLinux

・安定性・信頼性

 Linux

 フリーソフトであるLinuxの安定性・信頼性はハッキリ言って問題外。

 1日連続で稼動させることすら困難。

 Windows

 いまやWindowsの安定性・信頼性はメインフレーム(汎用機)をも凌ぐ。

 世界中メインフレームが全てWindowsServerに置き換わったのがその証拠。

脆弱性

 Linux()

 Linuxで稼動している世界中サーバークラックされまくっている。

 シェアが全くないLinuxウイルス対策ソフトも皆無。

 Windows

 デフォルトスタンダードOSとしてあらゆる攻撃を受けてきたWindowsはいまや世界で一番強固なOSとなった。

 豊富ウイルス対策ソフトもさりながら、カーネル構造的に絶対に外部からクラックされることが無いOSとなった。

コスト

 Linux

 フリーソフトなのでOS無料

 しかし上記内容により安定稼動させるのはほぼ不可能。

 またサポート存在しないため自前で何とかするしかなくかえってコスト高となる。

 Windows

 OS無料ではないが従来のメインフレームOS比較すると安価

 もともと安定性に優れたOSであるため、誰にでも安定稼動させることが容易である

 サポート面もマイクロソフトを始め、各ベンダー完璧サポートを行える体制となっている。

 またコンピュータOSとしてほぼ100%のシェアを誇っているので情報豊富である

2013-01-25

上手く書けぬ

愚痴のような感想のようなナニカになっちまうんだが

自分の中でも良くまとめきれないことを書かせてくれ

IT系増田はなんであんなにイシキが高いんだ?

俺はIT系ではない

でも一応、それがどのような仕事か判る程度には判ると思う

学生時代Z80ダンプくらいは読めた(いまのコードjava使いと一緒にするなと言われるならあやまる)

彼らはなんであんなに仕事場の生産性とかにこだわるのか、判らない

勉強会とかも、判らない

なんか、すごくえらい

から見ると光り輝いて見える

ものすごく前向きに見える

キャリアという言葉は知ってるんだが、

俺は自分人生に、その言葉を使ったことが1回もない

転職はしたことがある

在籍していた会社が潰れたりしたからな

でも転職したときキャリアなんて気にかけなかったし口から出さなかった

俺は彼らに比べて、はるか勉強していないと思う

最近、俺は仕事関係で、IT系会社下請けをやった

いたたまれない感じだ

あんまりにもIT系増田がいいヤツ過ぎて、世界観が違いすぎて、いたたまれない

俺は彼らから見たら存在犯罪者なんじゃないのかと思う

から見たら彼らは機械天使

どうなってるんだろう

わけのわからんものをはき出してすまぬ

追記:いまのこの流れで書くのも荒らしみたいでためらうんだが

俺の現職業は、いわゆる企画屋

二日くらいででっち上げた企画をパワポ適当にまとめて

ソーシャル屋にもちこんで、一件50~100万とかもらった

ライトノベルも何冊か出してたりする

ソシャゲのテキスト仕事なんて量は少ないのに買いきりでお小遣いには大きい

勉強会とか、キャリアとか考えたことない

金がなくなったらどっか適当会社に行って思いついたことを喋れば

わりと困らない程度のお金は毎回もらえる

増田向上心がまぶしくて、つらい

2013-01-23

なんか、Javaって終了しそうな気配?先細ってきてね?

SI土方からWeb行ってみます

試験業務中心だった。

その中でもシステムテストとかやったりしてるのでネットワークサーバーアプリは商用の状態に近い環境試験をしている。

具体的にはサーバーはLB使って冗長化/スケールアウトされていたり、クラスタリングされていたり、データセンターにあるサーバーリモートログインして試験をしたりとか。

rebootコワイヨーとかHW障害うざいよーとか思いながら。

ソフトウェア受託開発の会社で、Javaの業務アプリ設計・開発・試験していた様な人達が集まっているので、ネットワークLinuxなどアプリよりは低レイヤなところに詳しい人が地味にいなかった。

システムテストの項目書をExcelで作るお仕事や、試験実施するお仕事は凄くやる気しなかったが、試験実施方法検討するお仕事や、試験をするための環境を構築したり、仕様書を読んでミドルウェアアプリコンフィグを投入する仕事は楽しかった。コンフィグを投入する作業をスクリプト怠惰自動化したりするのは、けっこー楽しかった。

リグレッションテストや、バージョンアップでの改修テストなどで環境を再構築する際に、作成した自動スクリプトは腐らさせずに誰かに展開することが出来たので、自動化した工数無駄にはならなかった(ちゃんと効率化に!)大量にデータを投入するとき、さすがにだるい。ツールも使えば使うほどバグなくなるし良い感じ。PerlBashを覚えるきっかけにもなるし。

今思うと出向も楽しかった!メーカーSI会社社員食堂とかあったので、うわすげぇドラマみたい!とか朝はエレベーターの前に人が並ぶのでうわすげぇ人多い!とか。(最初だけだけど)

後はサーバー室でサーバーとかLBとかを目の前で見れたのがテンション上がった。うわこれF5じゃね?うわこれJuniperやん…いくらすんだよ…HPブレードサーバーだ!いくらするのかググった。

まぁ、普通に誰も興味示さないw あの時は商用ネットワーク機器という物に憧れている少年だったw

作業で疲れたときはぶらぶらして眺めてた。

何かの見学の時は「おいふらつくな」とか誰かに怒られそうだけど、仕事で来てると誰も何も言わないので見たい放題。転んでケーブル抜いた日には大問題になりそうなので、さすがにそこは気をつけた。

あの1UサーバーRHELインストールするとか、少年には楽しすぎた。でも手順はMacVirtualBoxCentOS入れるのと変わりはなかった…。ただ、仕事として1UサーバーRHELインストールした、という経験を持つことが嬉しかった(少年から

でもいいさ。

F5なんか使わずLVSやUltraMonkey-L7で負荷分散すればいいし、商用のアプライアンス機器なんか使わずオープンソースで解決してしまおう。AWS使うならELB使えばいいし。そういう環境行ってみようぜー。

ログイン ユーザー登録
ようこそ ゲスト さん