アカウント名:
パスワード:
特に性能については本当はキャッシュやバスの特性, IO性能を考慮して... とか言いたいところなんですが, 実際の業務プログラムだとそれ以前のアルゴリズムの段階で性能が出ないのが当然という例の方が圧倒的多数なので, 何とも言えないですね.
# さらにその前の, 動く/動かないの問題の方が多いし
近年のキャッシュ当然, マルチプロセッサ(マルチコア)も普通なんて状況だといやが応でもハードを意識しますよ.
そうでないとデータひとつペリフェラルに本当に書き込まれたかどうか分かりませんし, 逆にペリフェラルから読んだつもりになっているだけとかもありえます. 並行して流れているスレッドが使っているデータは同じ物か保証できません. SMPでマルチスレッド化したら性能が落ちたなんてことも当然ありえます.
こういう物は大抵OSの同期化サービス(システムコール)とかミドルウェアでカバーされて, 初級プログラマにとってはおまじない化されているんですが, 古今おまじないは詠唱に時間がかかるのが相場です. ですからおまじないの背景にあるハードを理解していないと, 唱え過ぎで性能劣化を起こしたり, 逆に唱えるのを忘れて再現性の悪いバグを起こしたりするはめになります.
こんな問題は昔は大型サーバ・汎用機やワークステーション・スパコンの類, あるいはドライバ等のカーネルモジュールを扱う場合だけのものだったんですが, 最近のPCではそうした一昔前のハード構成と同じ様な物が使われていますので, プログラミングレベルでも同じような注意が必要になってきたわけですね. まあほとんどの場合, 性能は気にしないという条件さえ有れば無視できることが多いのですが.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
ハードの勉強が必要? (スコア:4, 興味深い)
>これらで少しはハードウェアの勉強もして欲しい、
>と願うばかりだ。
私はSEで、今でもハードの知識はほとんどないままです。(PC自作程度)
また、業務上ハードの勉強が必要だな~と感じたこともありません。
もちろん業務の内容によると思いますが、ソフト屋にとって
ハードの勉強は必要ですか?(というかどこまで必要?)
--- (´-`)。oO(平和な日常は私を鈍くする) ---
Re:ハードの勉強が必要? (スコア:5, すばらしい洞察)
まぁでも、昨今そう言い切るのは、原理主義的かなとも思います。たしかに、ハードウエアに近いレベルの仕事でない限り、仕事上必須とは言えないと思います。仕事による。
ある物事を理解するには、必要に応じてどこまで理解すればよいのか?という段階が変わりますし、それは仕事上のみならず、個人の趣味によっても変わると思います。やたらに底辺の事情を詳しくても、現実問題として役に立たないと意味はないです。時間も有限ですしね。
ハードウエアのみならず、ソフトウエアの世界でもアルゴリズム論みたいなところまで突っ込んで興味をもつ必要があるのか?という議論と一緒だと思う。ソフトって言っても、下から上までいろいろあるし、理論チックになるとそりゃ、実際のコーディングからははずれてしまうし。どの辺に興味を持つのかはそれぞれだし、その辺が必要かは仕事による。ソフトかハードではなくて、「仕事」次第。SEってくくっても幅は広いし。
ただ、見識を深めるという意味もあるし、根本的なところを押さえる・押さえたい、という欲求はきわめて健全だと思うし、「これだけできれば仕事はできるので、それはいいや」という姿勢は好ましくないと思います。
でも、仕事に直結する技能ではなく、それ以外に広く探っても、結局のところスキルの向上はしないというのも事実です。器用貧乏は意味がない。深く深く掘り下げることの方が重要で、その結果自然と穴は深いだけではなく広がっていく、これが重要だし、もし転職(スキルアップ・ジョブチェンジ)したときには、それが重要になってきますし。その穴の深さと広さがかならずその人の力になります。
まぁ、日々、目の前の雑多なコーディングに追われているのが普通だと思うので、そうはうまくいかないんですけど。そういうのが生かせる職場というのはなかなかないし。なっても、結構しんどい(つらくはないけど)。
そのへん、仕事と趣味と興味の都合難しいのですけど、必要ないと言い切るよりは、つねにレーダーを張り巡らせておくのを心がけた方がよいかと。
普通のやつらの下を行け (スコア:1, 興味深い)
荒っぽいレイヤ分けですが、アプリならOS,OSなら計算機アーキ、アーキなら回路、回路ならチップ、チップなら物理、物理なら数学。
Re:ハードの勉強が必要? (スコア:0)
Re:ハードの勉強が必要? (スコア:4, 参考になる)
コンシューマ向けのPCソフトや組み込みをやるようになってからは、重要だと感じるようになりましたよ。
設計時の実装感覚や、デバッグ・チューニング時の実行感覚に直結します。
Re:ハードの勉強が必要? (スコア:2, 興味深い)
メモリ関係とかネットワーク帯域とかHDDなどの 記憶装置はパフォーマンスを考える上で原理を知らないと 話になりませんし。
パフォーマンスでなくとも、ソフトを乗っけるハードを どうするということを考えられないと、 ソフトは出来上がっても運用をはじめられませんよ。
ロードバランサが入ってアプリケーションサーバが 複数入ってDBサーバがあって、みたいな構成はざらですし。
(このストーリーで話題にしている「ハード」とは 意味合いがやや異なるかもしれませんが)
Re:ハードの勉強が必要? (スコア:3, すばらしい洞察)
何も身に付けた知識で他者の領域に口を出せということではないんです。
ただ製品の最終的似姿を意識しない(できない)で、
「おれの領域はここまで、後は知らん。」て姿勢で
仕事するエンジニアって、いいか悪いか以前に魅力がないです。
ソフトってそれ単体でクローズすることは本当は一切ないでしょ?
あくまでそれによって制御されるハードが動いた結果現れる事象が
サービスとして現実世界の顧客に提供されるわけですから。
ここで言う顧客があなたの直接のお客ではなく、
客があなたから買った成果で提供するなにかを受け取る人々だとしても
その姿がイメージできない、しようとしないんだとすると
いいものがつくれるとは思えないのです。
逆に言えば、それができる程度に対象システムが理解できるぐらいの
勉強が出来てればそれで十分じゃないでしょうか。
Re:ハードの勉強が必要? (スコア:3, 興味深い)
「稼働環境」という意味でのハードは理解しています。
しかし、それ以上深いレベルの知識って使うことが
ありませんでした(もちろん業務による、という話)。
/.は技術系なのでハードよりになるのは分かるんですが、
個人的には、ハードよりも顧客のビジネス理解やコスト意識
といったものをもっと学んでもらいたいです。
もちろんバランスの問題なんですけど、その視点の教育って
本当に弱いと思うんですよ・・・。
ということを本当は書きたかったんですが、微妙にオフトピ気味
なので疑問を出すに留めました。
--- (´-`)。oO(平和な日常は私を鈍くする) ---
Re:ハードの勉強が必要? (スコア:2, すばらしい洞察)
> 顧客のビジネス理解やコスト意識といったものをもっと学んで
という点で、ハードを勉強してほしいです。
SE とプログラマの違いは何かというと
プログラマ: 実現方法を知っている
SE: 何が出来て何が出来ないかを知っている
ということだと思います。
ソフトで実現するより専用ハードを導入した方が安いのか、
逆に、専用ハードを廃止してソフトで実現したほうがいいのか、
とか、そういう検討はSEの担当。
そういう点で、SEこそハードを知っておいて欲しいです。
Re:ハードの勉強が必要? (スコア:2, 興味深い)
> といったものをもっと学んでもらいたいです。
お客さんの要求条件に対して、普通はソフトウェアの機能だけではなく、ハードウェアを含めた構成を考えます。
要求性能や仕様、コストに対してどれだけの投資を出来るかの判断はソフトとハードの両方を知らないと本来は出来ません。
また性能的なボトルネックが出た場合にどこを増強するか、ないしソフトのどこを改修して逃げるかと言った話、
実際の運用に際してどれくらいの故障率があるのでこれくらいの可用性を確保するには、どういうハードとソフトを
組み合わせてどういう保守と運用体制を組むかなど、ハードウェアを含めて考えることはたくさんあります。
そうした全体の構成を考える上で、技術革新が目まぐるしく起こるこの業界では、コンピュータがどう動いているか
といった基礎知識は、新しい技術を即時的に評価・利用するために非常に有益なものです。
> その視点の教育って本当に弱いと思うんですよ・・・。
正直言えば技術をきっちり理解して展開できる人の方がレアだと思います。
もちろんビジネスをきっちり理解している人もかなりレアでしょうけど。
ビジネス理論が必要ないとはいいませんが、その方向性で必要なのはビジネスに関する専門知識よりはお客さんが
本当に望んでいることを聞き出すためのコミュニケーション能力と分析能力かも知れません。
と言いつつ、お金の事を考えていないエンジニアをよく見掛けるというのも確かですけどね。
Re:ハードの勉強が必要? (スコア:1)
Re:ハードの勉強が必要? (スコア:1, 参考になる)
実装自体はライブラリ使うだけだとしても、テストケース想定するにはハードの動きを知らないと。
似たような事例は他にもあるだろう。
Re:ハードの勉強が必要? (スコア:3, 参考になる)
とんでもないプログラムを書いてくれる人はいますね。
通信速度に見合ったファイルのやり取りではなくローカルHDDの
転送速度・容量・エラー処理を前提としたプログラムとか(泣)、
各種レスポンスがゼロを期待したプログラムとか。
全部を知る必要は無いが、少なくともその位の制限or限界を
知ったプログラムを組んでくれ、とは思う。
Re:ハードの勉強が必要? (スコア:1)
特に性能については本当はキャッシュやバスの特性, IO性能を考慮して... とか言いたいところなんですが, 実際の業務プログラムだとそれ以前のアルゴリズムの段階で性能が出ないのが当然という例の方が圧倒的多数なので, 何とも言えないですね.
# さらにその前の, 動く/動かないの問題の方が多いし
Re:ハードの勉強が必要? (スコア:1)
お客さんの所でなんで動かないor変な挙動する時に原因が解りやすくなるかも?
役立ったのっていうと、ほんと基本情報技術者(FE)の試験(今週末の日曜ですよー)と周囲のPCトラブルの解決というサポート方面な感じだなぁ・・・
ほんと何かあった時の助けになるかも程度な気がします。
# あとは、特殊な機器(バーコードリーダーとか温度センサ)をRS-232Cとかで自分でソフトから制御しなくていけなくて、しかもライブラリが無いとかの時ぐらい?
Re:ハードの勉強が必要? (スコア:3, 興味深い)
近年のキャッシュ当然, マルチプロセッサ(マルチコア)も普通なんて状況だといやが応でもハードを意識しますよ.
そうでないとデータひとつペリフェラルに本当に書き込まれたかどうか分かりませんし, 逆にペリフェラルから読んだつもりになっているだけとかもありえます. 並行して流れているスレッドが使っているデータは同じ物か保証できません. SMPでマルチスレッド化したら性能が落ちたなんてことも当然ありえます.
こういう物は大抵OSの同期化サービス(システムコール)とかミドルウェアでカバーされて, 初級プログラマにとってはおまじない化されているんですが, 古今おまじないは詠唱に時間がかかるのが相場です. ですからおまじないの背景にあるハードを理解していないと, 唱え過ぎで性能劣化を起こしたり, 逆に唱えるのを忘れて再現性の悪いバグを起こしたりするはめになります.
こんな問題は昔は大型サーバ・汎用機やワークステーション・スパコンの類, あるいはドライバ等のカーネルモジュールを扱う場合だけのものだったんですが, 最近のPCではそうした一昔前のハード構成と同じ様な物が使われていますので, プログラミングレベルでも同じような注意が必要になってきたわけですね. まあほとんどの場合, 性能は気にしないという条件さえ有れば無視できることが多いのですが.
Re:ハードの勉強が必要? (スコア:0)
私はハード寄りのソフト屋で、WebアプリケーションやらXMLやらの知識はほとんどなく、これまでに要求されたこともありませんが、
これだけ流行っているのを見ると、一応勉強しておかないとまずいのではないかと感じることもあります。
実際には、不要なのでしょうけどね。
Re:ハードの勉強が必要? (スコア:0)
エロゲー作る人には必要ないよな。
ハートの勉強は必要かもしれないが。
何を仕事としてやっているのかに関係するってことだ。
ただ、広い視野がなければいつまでも同じということだろう。
#一生エロゲーを作って暮したいかということと同じだな。
Re:ハードの勉強が必要? (スコア:1, おもしろおかしい)
エフェクトも変えていった方がより臨場感も溢れ、売れ行きにも……
#最近は買ってないのでAC
Re:ハードの勉強が必要? (スコア:0)
Re:ハードの勉強が必要? (スコア:0)
持たざるものはそのレベルに達することが許されない。
ただそれだけのことです。
要らないと思った時点でその人はもうそこまでの人。
そんな人に知識を要する大事な仕事をわざわざ任せたりしません。
# 別にハードに限らずなんでも