はてなキーワード: 組み込みとは
Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ
端末からのテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに
PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?
けどまぁ、情弱な文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか
数値計算や端末からのテキスト処理なんてWeb系じゃ大して使わないからなあ…
Pythonに関しては、ZopeさえコケていなければWebサーバ用LLとして大成功していたはずなのに、
Railsなんかが登場したおかげで、すっかり影が薄くなってしまいますた....
ってか、railsにインスパイアされたフレームワークって今じゃ幾らでもあるよね
djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、
pythonやPHPの方がユーザー数は圧倒的に多いと思うんだけど
本家のrailsって、他を遥かに越えるほど良いものなんだっけ?
44
Zopeが登場した当時、「RDB+PHPはもう古い、これからはOODB+ZopeがWebの中軸になる!」と
少なくとも自分はZopeからPythonという言語を知ったし、その時点でRubyは知らなかった
そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう
今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい
djangoとCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう
しかしRailsはRailsでコミュニティの活動が活発だし、その進化は異常に早い
Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoやCakePHPから
何かのイノベーションが提示されでもされない限り、後発のdjangoやCakePHPがRailsに追いつくのは無理
Railsは決して技術的に完璧なWebフレームワークではないんだけどね....(たとえばSeaSideのような.... )
だからこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている
C a k e P H P は う ん こ
CakePHP使ってんの?
可哀そうにw
でもやっぱりいつもの使い慣れたLL(Python/Ruby)で
Webサービスを書きたいってのがある
求人数は
Ruby on Rails>>>>>>>>Django
http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=
どういうことなの?
求人数が多いのはそのためだと思うよ
なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・
Pythonのほうが使いやすいと思うのだがフレームワークはRailsが優位なんだろうか
Djangoは周辺ライブラリが微妙だし本体も鈍くさい感じがする。
でも、FlaskはSinatraより好きだから、Pythonが嫌いってわけではない。むしろ好き。
ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。
同感だ
同じように思っている人が他にもいて安心した
PHPはフレームワークが乱立しすぎているから、RailsをPHPで実装してみようというやつが出てきた。
それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、
ただ、どうやってもRailsもどきがRailsを超えることはできないのは間違いない。
パクリはオリジナルを超えられない(キリッ って定型句だけど、
これってキリッって言いたいだけだと思う。
D言語って超えたって?
B言語って超えたって?
PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない
まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ
そういう理由じゃなくてRailsのほうが単純に情報もプラグインも多いからでしょ
linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
わざわざ不合理で不完全な言語を使うなんて
もしも
>linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
真実であるのなら、今頃はdjangoの情報とプラグインが溢れかえっているはず
yumや、gdbとgnomeの拡張がpythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。
ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。
というか、世界中のPythonプログラマが Remeber Zope!! を合い言葉に
打倒RailsたるWebフレームワークを開発しているはずだけど、
Railsも登場してから、かなりの年月が経過しているんだけどなぁ....
その間にもRailsはRails 3が登場して、REST/AJAXの強化等の進化が継続しているよ
Ruby では
ary.map {|x| x**2}
map(lambda x: x**2, ary)
となり、lambda の本体が1つの式では表現しきれなくなると
.....
と書き換える必要があります。
f = lambda x:(x and f(x-1)*x)or 1
RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから、
f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}
または
f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}
と書けます。lambda内でreturnが使えますから、書きたければ
f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}
でもOKです。
348
これはPythonをdisっているように見せかけてRubyをdisっているのか? と一瞬思ってしまったw
だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…
そしてどっちもlambda式の中で束縛変数の名前で再帰可能、と
print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]
暗号のように見える。
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}
思考の流れと、コードの流れが一致しているので書きやすい。
map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))
pythonて可読性が高いのをうたってる割にはそこいまいちだよね
Rubyの場合には、左から右へと無名関数がデータフローあるいは
関数型プログラミングに不慣れな初心者でも、参照透明性のあるコードが自然に書ける
プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby
それと比較すると、Pythonのコードは、関数型プログラミングというものが
いかに高度で難解なものであるかという事をもったいぶってプログラマに押し付ける
もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう
階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す
result_list = source_list.map { |elem|
x = foo(elem.x) # ここが局所宣言を書く部分
x + y # 最後に評価された式の値が、無名関数のリターン値になる
}
Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから、
x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける
このポイントは、実用的なプログラムを関数型風で書こうとした時に、威力を発揮する
余計分かりづらくなった
高卒ドカタなんだろうなぁと可哀想になる
集合の表記に似せてることが分かるから
355
>map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。
関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね
Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ
[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')
Pythonだと読みにくい。
'-'.join(map(str, reversed(sorted([1,4,3,2]))))
Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....
カッコだらけのコードを分かりやすくする基本的な方法は静的単一代入じゃないか
Rubyのやり方は基本ではなく玄人のやり方だろ
Pythonでは組み込みの型でメソッドチェインはやって欲しくないな
似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。
372
外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてますね
Rubyユーザーは列挙可能なものはmapやselectできて当然だろって思ってる気がします
Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる
得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない
Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い
「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く
無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像。
これを読みづらいと感じるのは、左から右に流れる
もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?
超氷河期だそうです。(これも就活ビジネスの煽り文句な気もしますが)
いや、でもまあ、確かにそうなんでしょう。周りも非正規が多いです。
「何がリーマン崩壊だよ!リーマンになれねーじゃん!」とか笑えないけど笑ってた気がします。
あのタイミングでこれはねーよ、と。
なにせFランクラス(ちょっと言い過ぎ?)の大学(校)だったので。
好きでやってたITだったので資格を取っておいたのだけが救いでした(応用情報技術者試験)
まあ、でも、終わってみればという感じです。
7、8社ほどで内定をいただきました。
ニュースでやってる、100社落ちたとかってのは余程訳があるのかなぁとか、考えたりしたもんです。
就活(笑)解禁だそうなのでメモ程度に経験を残しておこうと思います。ただ、人によっては全く参考にならない気も(笑)
1.中小のみ狙う。
1社だけ入りたかったウェブ関連の会社があったのですが(まぁ、中小ですが)、イミフな試験で落ちました。(愛と恋の違いだの何だのを書けとか書いてありましたね)
地方住まい、通勤圏内を求めていたのですが、県内にいい会社が見当たらなかったので高速で通える県外にしました。
本当は東京にでも出て、やりたい仕事をやっても良かったのですがやめました(理由は後述)
とにかく合同企業説明会(笑)でも人がいないところを狙います。
地方なんかだと地域でやってるUターン誘致の説明会とかジョブカフェのやってる説明会が狙い目です。
むしろリクなんちゃらとか、今話題のマイなんちゃらとかのは行かなくていいです。時間の無駄です。
2.話の合う人事の年齢を見つける
僕は年寄りに話を合わせるのが得意なので、年寄り人事がいる会社をさらに集中して狙いました。
若い人と話すのが得意なら若い人を狙えばいいと思います。
人気の無い企業の人事はとにかく暇なのでガンガンしゃべります。
話を聞いてくれるだけで嬉しいようです。(彼らだって暇なんだから当たり前っちゃ当たり前ですが)
3.乱発しすぎない
僕も焦っていろんな会社を手当たり次第に受けたことがありますが(最初の3社くらい)、あれはやめたほうがいいです。
時間もお金も有限です。企業をリスト化して優先順位(行きたい順だけじゃなくて入れそうなことも加味して)をつけて狙っていったほうが良いです。
4.自分を捨てる
よく言われているように、企業は技術や個性なんて求めちゃいません。
僕はある中堅ITの子会社で「僕はコンピュータが大好きです」といった直後に
「この仕事は、極端に言えばコンピュータがなくてもいい仕事だと思っています」とかなんとか言いました。(あほらしい話です)
SIerは技術者を軽視しているのが隅々まで行き渡っているのでこれであっさり受かります。(当然、蹴りましたが...)
自分の本当の考えなんて大して必要ありません。
5.なんだかんだで資格
学校名で「は?(笑)」みたいな感じでも「応用情報技術者試験受かりました(キリッ)」とかやっとけば覚えてもらえます。
中小企業だと「とりあえず一人はコイツでいいか」的な空気が会場一杯に広がります。
以上5点に気をつけると不本意な気分満点ですが、とりあえず内定しますよ。やってみてくださいね〜。
(以下蛇足)
此処から先は独り言。
僕は情報処理技術が大好きです。高校時代は文系で、心理学に興味があったのに、いつの間にか....。
実は大学(校)に入った理由は学費が安いということが一番で、ついでに興味のあるパソコンを、という気持ちだったのですが...。
大学時代は僕の人生で一番(一番は社会に出てからの今かもしれませんが)勉強した時期です。
あれほど熱中するものがなかった自分がここまでのめり込むとは思いませんでした。
OS、コンパイラ、画像処理、組み込み、データベース、ネットワーク。
何でもやりました。学校もなんだかんだで多くを学べる所でした。
実を言えば東京のベンチャーみたいな会社に憧れたりしたのです。
最先端で戦ってみたいという気持ちが今でもあります。(今はVBでサビ残して詐欺みたいなモノ作ってますからね)
ただ、長年付き合った恋人や、家族なんかのことも考え、今は地方にいます。「今は」
僕は三年は勉強期間だと思っています。社会のルールも知らないのですから。
もし、中小は嫌だとか不安だと思うのなら、こう考えてはいかがでしょうか?(あれ、独り言じゃない)
「三年間の職業訓練」
会社や社会人の方に怒られそうですね。3〜5年でやめられると中小には痛いそうですし。
でもまあ、雇った方も自己責任だし、ね。(こういう内容だと自分のブログに書けないから増田はいいと思う)
3年経てばテレワーク事情ももうちょいマシかも(さすがに無理?)
だめならこのまま人生を切り売りするか、バイト時代好きだった小売にでも転職しようかな、と考えたり。
(正直同じハードさなら小売のほうが楽しい。この業界PGはいてもプログラマいないし。OSS開発もできるからね)
だから、3年間だけ。
とりあえず昨日アマゾンから補充された、机の上に積み上げられた本を読まねば....。とりあえずトランザクション処理からにするか...。鈍器だろこれ
2010/05/16 23:40
こんにちは。昨日会った者です(これで特定するには情報不足だけど、まあわかるよね)。
で「幅優先探索でやる」という方針自体はいいと思うし、データ構造の作り方も基本は押さえていると思います(斜め読みしかしてませんが)。
ただ、コーディングの発想が「C で作る」という大方針から見て、少しちぐはぐな印象も受けます。データ構造の設計や操作の部分、汎用のライブラリを作ろうというのならあれでもいいと思うのですが、わざわざ汎用のライブラリを使わずに自分で専用の道具を一から作ろうというのなら、問題の性質を考慮して能率良くやることが大事です。
ところが、ここに載っているコードを見ると、見かけが C らしくなく、C++ や Java の劣化版のような印象を受けます。記法(マクロを大文字化しない、ルーチン名を大文字で始めるなど)だけの問題ではなく、データ構造の設計思想が「C で書く」という方針と矛盾しているように見えます。
もう少し具体的に言うと、そもそも C というのは現在 Web 系の世界などで流行のスクリプト言語類とは逆で、汎用言語でありながら低レベル(ハードウェアに近い)処理が簡単にできることに特色があります。つまり、組み込みを想定してプラットフォーム非依存のコードを書いたり、ハードウェアの特性を考慮して低レベルな最適化をやりたいというときに適しています。
そこでこの問題ですが、これを C でやるということは、処理速度や使用メモリ量の最適化が要求される状況、つまり迷路の大きさが途方もなく大きいような状況を想定すべきです。もっと言ってしまえばこの問題、たとえば画像処理などで似たような発想が要求されることがあります。このため、どうすれば時間のかかる処理を切りつめることができるかを考えてやらねばなりません。
このプログラムの場合、時間のかかる処理の代表格である malloc() が大量に使われています。これはいかにもまずいです。このような大量データを処理する場合の定石は、あらかじめ必要なだけメモリを確保しておいて、自分で割り当てることです。具体的には、必要と想定される量だけメモリを配列の形でどかっと確保しておいて、配列のインデックスをポインタ代わりに使います。そして、足りなくなったら倍々のような感じでメモリを realloc() してやればよいのです。
なお、そのような観点で言って、木の各節点の子の数は高々 4 (スタート地点が内点でないとすれば 3)であることを使っていることはよいと思います。ここで「子のリスト」とかを作ってしまっていたらこれはもうアホもいいところですから(容量の節約にすらなりません)。
そんな感じでしょうか。
とにかく、この手の問題は、アルゴリズムさえわかっていれば可読性もヘッタクレもないので、「短く書く」というような表層的なことよりも、何が求められているのかをよく考えて、柔軟に設計思想を考えることが大事だと思います。
2010/05/17 13:54
Oさんですね。専門的なコメントありがとうございます!cで書くと言いつつObjective-Cっぽい発想で書いていました。マクロの命名もその影響で、関数はImage Magickなどに似た命名規則になっている気がします。mallocを使いすぎると時間がかかるということは全然意識していませんでした。今度作るときはメモリ管理を自前で用意する発想を取り入れてみたいです。参考になるコメントありがとうございました!
とぼくはおもう
注意しなければならないのは、IT系と一口にいっても、サブジャンルは腐るほどある点だ
Joel Spolskyは5つに分けていた
ソフトウェア開発には、しばしば交わっているがたいていは分かれている、5つの世界があると思う。その5つとは:
http://local.joelonsoftware.com/wiki/5%E3%81%A4%E3%81%AE%E4%B8%96%E7%95%8C
そして、これらのIT企業が、最先端のシステム開発をしているかというと、そんなことはないのである
ファイルサーバに空き容量が無くてローカルに退避する作業に一日費やしたりする
「打ち合わせご希望日を添付のエクセルシートに記載の上ご返信ください。なお、ファイル名は”社員番号_指名_記載日付”の形式でお願いいたします」
ほとんどの現場が、方眼紙状にしたエクセルを印刷して、判子をつく(客の都合でもある)
そんな作業ばかりしているし、本質的なコーディングの作業は1割もないのだ
夢打ち砕かれ
http://anond.hatelabo.jp/20070831005830
俺は80文字×32行の緑文字を見つめながら、遠い夢を見続ける。
プログラムを理解させるには?のブックマークコメントを読んでいて。
ブックマークコメントの中に、「資格」とかのコメントがいくつかあった。
既に情報処理試験とかあって、いろんなIT系資格があるのだけど、プログラマーやってる人なら誰でも感づいているとは思うが、資格など何の役にもたたない、という事で。高度情報処理資格を持っているからと言って、プログラム(その他設計やコンサル)が出来るとは限らず、逆に何の資格も持っていないのに、すばらしいプログラムをする人がいる。
まぁ、これら既存のIT系資格にある一定の目安にはなるとは思うけれども、万能では無いのも確か。昨今の不況、ITバブル崩壊で、IT系資格の資格手当が真っ先に削られたのも、記憶に新しい(弊社だけかもしれないが)。
雇う外注のソフトハウスから派遣されて来た人など、だいたい15分も話せば、どのくらい出来るか、使えるかは判断出来る。これは資格では計れないものだ。
仮に、弁護士や行政書士、医師など、士制や免許制はどうだろうか?
車の免許はどうだろう?
プログラマーはどうだろうか?
例えばトイレ。水を流すのに、最近のトイレは、リモコンでスイッチを押すと水が流れるが、あれ、プログラムだよね。
例えば炊飯器。米と水を入れて、スイッチを押せば、ご飯が炊きあがるが、これもプログラムだ。
車。ハイブリットや低燃費車が走っているが、あれは電子制御で動いている。
ロケット。アポロはファミコンにも劣るコンピュータで月まで行ったが、プログラムだ。
先日の中国の高速鉄道の事故も、ATCプログラムのミス(?)による事故だ。
先日の$oftbank携帯の通信障害は、故意に仕組まれた通信障害だった。
どこにでもプログラムは入り込んでいるし、そのプログラムによって、便利になっている反面、人命をも奪い、都市機能を麻痺させる事も出来る。
なんでだろう?
介護について考えてみよう。
ヘルパー資格や介護士とかいろんな資格が必要だが、世間一般的には、ワーキングプア、もしくはそれに近い悲鳴が聞こえてくる。
なんでだろう?
資格や免許を持っていても、それが収入や時間に反映されないいい例だと思う。
「プログラマー」「SE」と名乗るのは簡単だ。「漫画家」「小説家」と名乗るのと同じように。なんだったら、名刺の名前の上にそういう肩書きを書いておけば、「プログラマー」であり「SE」である。
漫画家・小説家と違うのは、漫画家や小説家は「売れなければただの無職」という事だ。あっという間に食えなくなる。自分、アシスタントをやっていたし。アシスタントでは、ちょっと食っていけなかった(アシスタントと作家自身は違うが、それなりに間近で見てはいるわけで)。
プログラマーやSEが個人事業種の人達だったら、その通りになるだろうけど、多分、半分以上の技術者は、どこぞの会社に所属しているサラリーマンだと思う。もちろん、これはこれでメリットがある。営業や経理・総務・庶務等が他の人に分担されている事や、会社などの福利厚生も使えるから。
逆に「金の切れ目が縁の切れ目」が使いにくいというのがある。同僚が失敗したり行方不明・自殺等というのはこの業界日常茶飯事だが、そのリカバリーは必ず誰かがやらなければならない。そして不思議な事に、それをやる人間は決まっている。失敗したマンガや小説を他の作家がリカバリーする、というのはあり得ないのにね。
資格制度・免許制度が万能とは言わないが、有効かどうかと言われると、自分には判断出来ない。しかし、前述したとおり、非常にクリティカルなモノを作る場合も有り、無資格なのはそれはどうだろうか?とも思う。
プログラマーやSEがミスすれば、都市機能は麻痺し、人が死に、医療器具が動作せず、電力が起きず、このインターネットすら動かない。TVもラジオもダメ。第1次産業以外のほとんどが停止する事になる。
そんなクリティカルな仕事なのに、この士農工商穢多非人の非人のような扱いを受けるのは何故なんだろうか?
経営者や管理者からみれば、次から次へとターゲットが蛆のように沸いて出てくる職業であり、使えるだけ使って、あとは使い捨て、という業界だし。
一度、プログラマーやSEは自分のやっている仕事がどういう事なのか、考えてみた方が良いのでは無いだろうか?
考える事は出来ると思うよ? だって、「完全動作する事を常に考えている」のだから。それが過失・故意にでも動かなかった場合、どういう事になるかは、簡単に想像出来るよね。
絵描きや小説書きや楽器演奏や作曲は、小学校の頃、学校で習うから、分かると思うんだけど、【今の現役世代以上】のプログラマーやSEは、小学校で習わなかった。この差が非常に大きいのだと思う。
どんな無能な経営者や無能な管理者だって、「自分が絵を描けない・難しい」というのは、自分で分かる。なぜなら、義務教育時代にやっていたから。ところがプログラミングやSEはどうか。やってないから分からない、わけだ。
あと、拍車をかけているのが、どこかが発表している「情報技術者何万人不足」という発表。この時点で「質」が考えられていない。そこへ、程度の低い派遣業が入り込んで、エライ事になる。そもそも派遣とは、受け側に技術が無いからその手助けに赴くものであって、人身売買では無い。先日も弊社で「組み込み系の低いレイヤーの部分を作るC言語(かなりアセンブラ寄り)が出来る技術者」を要求したのに、実際ソフトハウスから派遣されてきた人間は「C言語のポインタという概念も知らない」技術者だった(どうやら、Windowsの統合開発環境上においてC#だったら使える、というレベルだったようだ)。もちろん、そんな人員を使えるわけ無いのでその場でお引き取りを願った。こういう、「質」や「ベクトル」に関係無く「頭数」だけでどうにかなると思っている奴らが非常に多い。日本の(少なくとも情報系)派遣や客先常駐の考え方は、間違っていると思う。
そう考えると、ある一定の基準として、質やベクトルを明記する必要はあるのかもしれない、と思う。それが労働時間や賃金に反映されるかどうかは分からないが。
寮のごみ捨て場に数匹の蟻がいた。
残飯などの臭いをかぎつけてきたのだろう。
私はそれらを踏みつぶした。
行列となる前に。
これは無益な殺生ではなく、あくまで寮の衛生を守るために必要な行為だ
・・・というのは建前だ。
正直、むしゃくしゃしてやった。
蟻からしてみれば、自分の食いぶちも当然のことながら、巣の仲間たちの為、女王蟻、子供たちのために一生懸命エサを探していたところを、いきなり生を奪われたのだ。なんと理不尽な。
しかもアリクイに食べられるような食物連鎖への組み込みというわけではなく、人間の「感情」という蟻にとって理解の及ばない理由で殺されたのだ。
なんとかわいそうなことか。
翻って、自分はどうだろうか?
なんのために生きている?
会社のため、家族のためと仕事をして生きているが、いつなんどき、自分が自分の理解の及ばない理由で人生を無茶苦茶に狂わされるかもしれない。それも理不尽な理由で。
そう考えると、自分も蟻と同じなのだ。
自分が踏みつぶした蟻がいなくなっても、彼らの巣には大した影響はないだろう。労働力が多少減ったが、誤差の範囲である。
自分も同じだ。仮に自分が明日突然死んだとしても、会社にとって大した影響はない。
これは弊社だけの事かもしれないけど、どうも「人材の育成」ってのに全く関心が無いように見える。なんでもかんでも「即戦力」ばかり求めていて、自分個人的にはお話にならない。
密室会議でプロジェクトの体制が決まるのだが、だいたい自分の担当範囲は「その他」と書かれている事が多い。
基幹部分はVisualStudioで、だいたい、VB.netで書かれたプログラムで目立つところばかり。でも別に基幹部分とはいえ、クリティカルな部分は無くて、万が一止まってしまったら、リブートすればいいだけ。この部分は、たいてい他の人に取られている。
で、自分に割り振られる「その他」ってのは、VisualStudioで、VB.netとVC++で、主にネットワークとミドルウェア、ドライバの部分、他のマシンでUNIXのX-Windowだったり、Webサーバ、Webアプリ、Oracleデータベースだったり、組み込みマイコンのOS、ドライバ、アプリの担当となる場合がある。
ちょっと待ってよ。なんでVBの部分は数人で作っているのに、その他のクリティカルで多様な部分は俺独りなのか?
聞いてみた。
「誰も出来ないから」
は?
俺だって生また時から出来るようになったわけじゃねーよ。誰も出来ないなら育てろよ、と言ってみた。
意味わかんねーし。
でも、最初から担当出来るならまだまし。たいていは、「出来ない部分」は外注に発注する。
そして、外注が失敗する。
その尻ぬぐいが俺になるパターンが9割を占める。
勘弁してくれ……。
自分の課の人員動向を見ていても気になる部分がある。課長や係長の様子を見ていると「使えない」と判断したら他の課に回してしまう、けど、教育はしない、みたいに見える(でも、部から外へは出ない)。
なんかおかしくないだろうか?
先述の外注の件も、「社内で遊んでいる人員がいるけど、技術が無いから、外注に出す」パターンで、結果、外注に踊らされて「動かないコンピュータ」が出来上がってくるパターン。
外注と話をすれば、(まぁ、だいたい15分も話をすれば)、相手がどのくらい出来るかどうかなんて判断出来る。たいていの場合「無理じゃね?」「これじゃ出来ないのあたりまえじゃね?」という結果が俺の脳裏をよぎる。でも、何故か、外注に発注する事になる。
おかしいよな。だって「社内に遊んでいる人員」がいるのに「外注に出す」ってなんなのさ?
「即戦力」
しか頭にないんだろうな。
外注も頭良くてね。業界つながりで他の会社の人達と話す事もそれなりにあるんだが、出来る会社、出来る人員(個人事業主も含む)は、口をそろえてこう言うんだ「悪いけど、君の会社の、特に君の部からの仕事は受けないようにしてるんだ」とね。表向きには言わないけど、複数の会社に相見積もりをとると、そう言っている会社は、弊社に出してくる見積書がめちゃくちゃ見積金額が高い。当然、弊社からはその会社に発注しないわけ。そう、残っているのは「実情を知らない会社とその社員」だけ。だから「動かないコンピュータ」が出来上がってくる。上の連中がどれだけ、この事を知っているのか。
の、割には「職人」に対する扱いがひどいのもある。
どうも、経営者、管理者どもは、自分の力で物理法則が変えられる、他人の脳をオーバークロック出来るかと勘違いしているようだが。どこかの国の政治家やDQN連中と同じように見える。
IT業界だけの話じゃ無いと思うんだけど、例えば……そうだなぁ、漫画・アニメ・小説とかのコンテンツ業界も(外から見てる限り)そんな感じを受ける。こっちの業界も、「即戦力」と「職人に対する扱い」に関しては、IT業界と同じに見える。
漫画・小説も、「既に売れている作品」に勝るとも劣らない作品をクリエイト出来る人間だけが採用されているような気がしてならない。いや、同人誌界を見てるとそう思うわけなんだが。
商品なんだから、それは当たり前の話なのも分かる。
だがよ。「育てる」事してないだろ?(という風に見える)
ある機会があって、就活生と話す事があった。やはりかなり焦っていて「もう仕事は何でもいいし、どこでもいいから内定とらないと」と言っていた。「うちの会社にだけは来るな」とだけ言って、俺は言わなかったけど、確かに「新卒」というカードを使えるのは1度きりだけど、「意に沿わない仕事、職場の雰囲気、自分の技術力、これらが合わないと、早々に精神を病むぞ」と言いたかった。現に、弊社やその周りの会社では早ければ入社後1週間、2~3年後までに辞めてしまう、またはメンタル疾患にかかる人が急増している。
なにしろ、育てないで、新人といえども「即戦力」を求めるからな。付いてこられない、精神的疲労は大変だろう。
今年の新人君と話をしてみたが、情報系の院卒のれっきとした修士でありながら、16進数とバイナリとテキストの区別が分からなかった、という驚愕の事実。これで「即戦力」?
「ゆとり」世代、の一言で方つけてしまうのは、少々酷かとは思うのだが、採用判定する方も「ゆとりジジィ」としか思えない。
まぁ、うちの部は、会社の中では「墓場」と言われていて、この部から出て行くには「自殺」「精神疾患による退職」の2択しかないのだが。
こうやって脱線した時の、リトライのすべが無いのも事実だよなぁ。
「そりゃ、実力が無いだけ」「努力が足りないだけ」
と一刀両断にするのは、いかがなものかと。まぁ、分からなくもないけどね。
前述のような事を書けば、ほとんどの人は
「辞めればいいじゃん」
と言う。まぁ、それも分かるわ。実際その通りだし。別に社畜じゃないし、会社に未練も無いから。少なくとも今の会社、出来れば「職人」を蔑ろにする風潮のIT業界からは離脱したい。
サービス業なんていけない。ぶっちゃけてしまえば、サービス業(例えば接客業等)って、いわゆる「感情職業」じゃないですか。一度鬱病やって休職した経験のある自分にとって、感情職業は無理。
転職エージェントとか見ていても、やはり「キャリア」。「即戦力」だよねぇ。
最近のmixiの(少なくとも自分にとっては改悪だった)状況に対する、mixi使っている人達の反応や、Twitterの非公式RTに関するページを読んでいて、「そんなに嫌なら、使わなきゃいいじゃん。自分に合ったものを自分で作れよ。」と思う。無料サービス・アプリなんだから文句たれてないで、使うの辞めればいいのに。
なんか、弊社のある課長を思い出したわ。ある有名なフリーソフトを使っていて「これ、使いにくいから、作者にクレームのメール入れるわ」とか……。おいおい。使いにくいなら使わなきゃいいだろう、フリーソフトなんだし。相手(課長)の常識より、自分の常識を疑ったわ。フリーとはいえ、クレームをつけるという常識が、昨今の風潮なのか、と。
と、思うのは、前述した「(会社を)辞めればいいじゃん」と同じなんだろうか?
少なくとも、金銭や契約が関わっている以上(他、労使契約、労働基準法等)、違うと思うんだよね。
と、書いても、例えば、喫煙者(愛煙家と言うか?)にたまにいる「金と税金払って吸ってるんだから、どこで吸おうと勝手だろ」というのと同じなんだろうか?
いったんレールから外れると、ほとんど復帰のすべが無いってのは、なんだかなー、と思う。
するとこう言う。
これも「(会社を)辞めればいいじゃん」「使わなきゃいいじゃん」と同じなのかな?
自殺する気は無いから、会社は辞めるけどね、耐えられなくなったら。自殺するくらいだったら、引きこもり→生活保護の方がいいわ。
1900年以来、第4位の大地震であれだけの災害だったにも関わらず、死者・行方不明者数が、スマトラ島沖地震、チリ地震よりも少なく、かつ、「年間の総自殺者数」の方が多いってのは、どうかと思うわけだが。
ちょっと、最近、閉塞感を感じるので、つらつらと書いてみただけ。
キメこな問題についてのツイートのまとめを見た。
いつか来ると予測されていた問題がついに表面化。
しかしこれは梅ラボ本人一人が気分的に凹むということ以外は実害がなくてよかった。
災難だったね、としか言いようがない。
そして※欄の予想通りすぎる人格攻撃っぷりは、見てて少し虚しくなった。
ふたばという「歪な形で維持し続けられる楽園」の脆さを住人自体がいまだに把握できてない。
そんな場所の住人であるということがアイデンティティと不可分レベルに融合してしまった多くの
「としあき」たちにとってどうしたって不快であり、許しがたい行為だということは分かるが、
前提として招待制SNSでもなんでもなく「匿名掲示板」なんだから誰もがやってきてしまう、
ということはシステム上仕方ないのに彼らは「この中のルールを守ることで新参の訪問は最小限に抑えられる」
という幻想を持っている。まるで「9条さえ守っていれば戦争は起こらない」と信じる9条信者のようだ。
「外」の人間はそのルールを知らないし、意に介することさえないかもしれないのに。
今回の件は若干違うか。例えが悪い上に無駄なツッコミどころになったかもしれない。どう違うかは後述する。
ふたばはある意味、かつてのアンダーグラウンド系掲示板の文化の匂いを残したまま現在まで存続しているという
ちょっと珍しいサイトだが、哀しいかなシステム上でなんらかの方策を講じているわけではなくWeb上に
置かれたものは大概がフラットに消費される可能性を抱えている。それを作った人間の快・不快という感情的な
問題とは別個に。アンダーグラウンド、という領域が存在し得たのはGoogle以前でしかないだろう。
検索エンジンが未発達な時期には確かに「見つかりにくい領域」はあった。もう、昔の話だ。
ふたばが2chと違ってちょっと面倒なのは、「としあき」という名に仮託された奇妙な選民意識の
存在がある。だが、梅ラボ自身もブログで「2年ROMってた」ということを表明している。
(古参住人にとってはその理解はまったく足りないものに映ったのだろうとしても)
「不定形匿名人格の一部」である自分の立ち位置と自らの「表現欲求」やどうにも抑えようのない「作家性」
(「人のもんの貼りあわせだけで何が作家だ」とかいう意見もあるだろうがそこはひとまずおいといて)
の間で引き裂かれ、今回の件で梅ラボは苦しんでいる。かつて同人誌「カオス*ラウンジファンブック」にて
仲山ひふみに「著作権問題が発生したらどうなるのか」という問題提起があったので、冒頭の一言が
あるわけなんだが、感情的な「許す」「許さない」の問題はもうどうしようもないんだろうと思う。
少なく見積もっても1000の意見が表明された。それが1000人なのか一人なのかということも実際のところ
わからない。まあTogetter見てる分には流石に一人ではないだろうということは分かるが、ふたばのスレでの
そして多くの人間がいればその構成員の「許容の基準」だってバラバラだろう。もうこれは仕方がない。
だが、「絶対許さない」とか言ってる人間だって別になにかできるわけではないのだ。
それに、時間が経てば忘れられる。「絶対許さない」とか言ってる人間だってずっとこの件だけを
考えつづけることはできないだろう。出来るような人はちょっと常人離れしたなにかである。
それはそれである意味すごい。もしかしたら現人神「絶対許早苗」かもしれないwww
うむ、早苗さんに許してもらえないのは東方厨である梅ラボにはキツいなー。
冗談はさておき。
結局のとこ諸行無常、ってね。不変なものってのはなくて物事は相互に影響しあう。
水の上に油をたらす。油の粒は水の力によってその形を変える。しかし逆に見れば
油が垂れてきたことで水全体の形も変わったと言える。ネット上の出来事も基本的には
大して変わらない。ちょっと私見になってしまうが「キメこな」はともかく海外での
「Moetron」の成長において梅ラボの作品の特徴が全く影響がなかった、というのは
ちょっと考えにくいのだ。多くの作品で「いくつかの別のキャラの顔のパーツをひとつの
顔であるかのように構成した」構造が見られる。梅ラボの作品はTumblrなどを通して
かなりの拡散をしており、カオスラウンジはよくも悪くもそれなりに一部で目立つ存在と
なっていた。それに刺激された4Chanの人間が「Moetron」と梅ラボ作品に共通するエッセンスを
感じ取ったということはありうると思う。もっとも、根拠がないので妄想ととらえてくれて
一向に構わないが。
文化という言葉がこの件で多く出てきた。自身のコミュニティの文化に誇りを持ち、
それを保護する姿勢もわからんではないが、そんなに過剰に護らないと壊れてしまうほど
脆弱な文化なのか?ふたばは、二次裏とは。そうではないのではないだろうか。
「見ろ また奇妙なやつが出てきたぞ」
くらいの気持ちで興味をもって動向を捉えていればいいのではないだろうか。
キメこなは生まれてさほどの時間が経っておらず、成長途中のキャラである。
だからこれもまた、成長の一過程だと捉えることはできないだろうか。
なんのまとまりもないが、思いつくまま書いてみた。
異論は大いに認めたい。むしろ読みたい。
関係ない。
生産性が高いと言われてる言語で行われた、ゴミみたいなプロジェクトは沢山ある。
生産性の高さが生かせると言うのは、設計からしてきちんと考えられていると言うことで、そういうチームが開発するなら言語は関係ない。
まさかだけど、「Cで1からすべて書く」ことと「Javaの開発済みコード群を使う」ことを比較してたりとか、
「Cで行うテキストエディタとコマンドラインコンパイラのみの開発」と「Javaで行う高機能開発環境での開発」を比較してたりとか
まぁ、タイトルの「レガシープログラマ」とは私の事なんですけどね。
if( foo == TRUE ){
という判定文をよく見かける(fooはいろんなオブジェクトだと思ってほしい)。
個人的には、この書き方、嫌いなんだよね。
if( foo ){
か
if( foo != FALSE ){
と書いて欲しいわけよ。とにかく「TRUEか?」という判定にはして欲しくないわけです。
で、なんでこう書くの?と外注や若い連中に聞いたら、「TUREは1ですから」と必ず答える(断言する)。
あ、あれ???自分は「TRUEはFALSEでは無い。確定しているのはFALSE=0という事だけ」だとずっと思っていたんですわ。
古いC言語風に書けばこんな感じ。
#define FALSE 0 #define TRUE (!FALSE)
確かに、実際に値を表示させてみると、昔のVC6だと「1」という結果が出てくるし、VB6だと「-1」という結果が出てくる。これ、当時混乱の元だったんだよね。
新しいC++や規格ではBOOL型というのがきちんと定義されたと思うけど、製品寿命が20年とかいう私の職場では、DOSやC(K&R)、アセンブラは現役だし、プラットフォームもなにもWindowsに限らない。組み込みマイコンも使う(うちのところはVxWOKSだが)し、UNIXやLINUXも使う。
もちろん、マネージドC++(.netFramework)やC#、JAVA、Parlも私は使うし。でも、どのプラットフォームでどの言語になっても「TRUEか?」という判定文は使ってこなかった。
で、試しに、VC2008のincludeフォルダをgrepしてみたら、
#define TRUE 1
あ、ほんとに「1」だ。
typedef bool int
なんて見かけるから、やろうと思えば「5」でも何でも数字が入ってしまうわけですよ。そこで「== TRUE」なんてやられたら、絶対に成立しないわけで。バグの温床になるんじゃないかなー、と思ってかたくなに前述の姿勢を持っていたわけです。
今(最近の)言語はきちんと「BOOL」型(またはboolという名のクラス)を定義されていて、コンパイルエラーになるか、自動的に補正してもらえるのかもしれないけど、ちょっと気持ち悪い。
最近、ちょくちょく外注や若い連中と意見や話が合わず、「ああ、俺ってレガシープログラマなんだな」と思う事が多くなった今日この頃。ネットワークに平気でリトルエンディアンのデータを流すとか、勘弁して欲しい。LANアナライザでデータが見にくくてしょうが無い。
まずはじめに、見ず知らずの他人に対して、簡単に情弱と言わないこと。これはコミュニケーションというか、人としての基本。
他人を馬鹿だとか何とか、容易にネガティブな単語を使わないこと。
交換機や銀行のシステムは、アジャイル中心ではつくれまい・・・
だから、別に今も昔もこれからも、ウォーターフォール中心の産業は、かわらず、ウォーターフォールだろ。
ただ、ウォーターフォールといっても、アジャイルの技法は取り込んでいくし。
ここが大切なんだが、アジャイルであっても ウォーターフォールの良いところは取り込んでいくべき。(もっとも大企業であっても、もうまともにウォーターフォールをできる企業は少ないけど)
おおよそ、今のウォーターフォール否定派は 食わず嫌いか・・・自分がウォーターフォールで指揮する側にまわってないだけじゃないかと。
繰り返しになるけど、私自身はアジャイルもやるし、ウォーターフォールもやる。
私が否定するのは、ウォーターフォールをやりもせず、アジャイルアジャイルと騒いで、ノリのまま、レビューや仕様というものを疎かにする人のことだ。
Webサービスならいいけど、組み込みや交換機や銀行でやられたらたまらん。という話です。
他を否定すること無く、古い技術も学んで、新しい技術も取り入れて、進化することこそが大事で。アジャイルが優れているとか、ウォーターフォールが優れているとかそういう事じゃないよ。
組み合わせて、適材適所で使い分けれれることが大切。
交換機なら、ウォーターフォール式に Webなら、アジャイル式に。適材適所。ウォーターフォールも万能じゃないアジャイルも万能じゃない。
にもかかわらず、アジャイル万能であるかのようにのたまう、その姿勢が、ダメだと 思うという事。アジャイル駄目だと聞こえたらすまんかった。
テスト基盤と実機基盤で判定が逆とか普通にあるし、電圧判定の閾値が違うとかもざら。
おれは組み込み云々を書いた増田なんだが、もともと「my_false」の話してたよね?
そういう独自定義の話でないの?
そりゃ組み込みなら普通はON/OFFと表現するが、「#define OFF 0」とかあんましない。
チップそれぞれの実装次第で、それぞれのOFF状態って違うからね。
#define false 0
としないで
#ifdef XXX
#define false 0
#endif
とするか?
なんで、ifdefで定義そのものをOFFれるかっていうと、まれにfalseを理解できるCコンパイラがいるからでしょ?(つまりC++コンパイラを使ってCをコンパイル通すケース)
だから、C++がなかった時代はそれでいいけど、C++ができた時代には、コーディング規約を見なおさないといけないという話でしょ?
ちなみに#define FALSEを残すのは MS系コンパイラへのコンパチビリティ。MS系の旧ライブラリを通すときは一応FALSEで渡したほうが良い。
作り直したタイミングで、新しい企画に対応していかないと、いつかどこかで、対応できなくなるし、そもそも、falseは有名すぎる。
そんな、改変すればいい特殊ルールをいつまでも残しておいて、組み込みは特殊だからとか言うなって話はあるよね。
普通の一般プログラマでも、改変できる範囲は最近は多くなってきているのに、わざと、さわれれない旧ルールを残し続ける。
コードが同一なら、そらしょうがないけど、バージョンアップで、新規作り直しのタイミングで変えないとしたら、それはおかしい。
新しい人入れなきゃいけけないし、短期的に人を増やすタイミングなんていくらでもある。
そういう時に、ダイナミックに人を追加できないようなコーディングルールにする意味が分からない。
コーディングルールを決めるのは、設計担当で、人のアサインの事まで考えて、ルールを決めなきゃいけないんだから、一般のC++プログラマを短期的に追加できるルールに変更すべき
それが、大きな問題になるならわかるけど、falseをやめて、ON/OFFにする もできない理由は思いつかない。(作り直しだから)
それはON/OFFじゃなくて?
true/false は真偽値なので
if(false){
}else{
}
がelse節になる必要がある。
if(local_false){
}else{
}
にthen節なるようなfalseを定義するべきじゃない。
回路の1/0判定については ON/OFFを割り当てるべきでtrue/falseを割り当てるのはそれこそ、プログラムの概念設計ミスだとおもわれる。
そのために
if(value==local_false)
なんて毎回やるのは、さらに 混乱のもと
if(value==local_on)
ならば、誰でも混乱はしない。
falseは真偽値というコンパイラが使う値であって ハードの固有値を割り当てて良いものではないと思われる。
大げさに表現すれば、
typedef long local_short
typedef short local_long
sizeof(local_long) < sizeof(local_short)
ローカルFalseはこれに近い。既存のコンパイラが定めている概念を ひっくり返すようなローカル定義は この時代ではするべきではない。
#define HARD1_ON 0
#define HARD2_ON 1
これは必要。
#define HARD1_FALSE 1
これは害悪