「数値計算」を含む日記 RSS

はてなキーワード: 数値計算とは

2014-04-10

http://anond.hatelabo.jp/20140409010816

いくつかまとめて反論したい

まず最初に言っておきたいけれども、僕自身はHaskellが大好きな関数型言語大好き人間である、ということを先に述べておきたい、それを踏まえた上で以下をお読みいただきたい

最初の「オブジェクト指向 v.s. 関数型プログラミング」や「ふたつのアプローチ比較」はまあ問題ないかなぁという感じ、問題があれば他の誰かに任せます

問題は「関数型プログラミングの利点」と「関数型プログラミングの得意分野はなにか」

関数型プログラミングの利点」に対して

まず「関数型プログラミングの利点」だけれども、ファンクタが云々、モナドが云々、これは「関数型言語の話」ではなく「Haskellの話」である

そこを引いてあくまでHaskellの話だと割りきって見たとしても、「たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて」? モナドはそんな限定的用途のものではないし、パーサの理解とは無関係だ(単にライブラリ設計の問題)。それにApplicativeスタイルのほうがパーサが書きやすいという人もいるだろう、パーサの理解モナドの知識はあまり関係がないと言っても差し支えないのではないか

「書きやすい」に対して

「書きやすい」に関してはこれはもう「主観の問題だよね」以上の言い様がない、僕自身はC++Haskellの両方を書く人間で、確かにC++Hakellの方が「短く書ける」と「感じる」ことは多い、がしかしそれはあくまで個人の主観であり、更にはなにか明確な基準を取ったとして、やはりこれは「関数型言語」ではなく「Haskell」の話である、わかりやすく言えば「関数型言語であるLispを僕は読み書きできない」、特定言語の、主観に大きく左右される特徴を関数型言語一般の話であるかのように敷衍して話すのは感心できない

「静的型付け云々」に対して

「静的型付け」云々もこれはもう完全にHaskellOCamlの話であるLispErlangとは何だったのか

関数型プログラミングの得意分野はなにか」に対して

数値計算」に対して

多くの数値計算アルゴリズム逐次的に定義されている、関数型言語で扱いやすものではない、簡単にいえば「それFortranの前でも言えるの?」である

遅延評価はこれまたHaskellの特徴であり関数型言語一般の特徴ではないし、別に他の非関数型言語エミュレートできないものでもない、更に言えばこれが何か数値計算に対して有利な何かをもたらすかといえばそういうわけでもない

分数虚数が扱えます」、に至ってはむしろ近頃の言語で扱えない言語何かあるんですか、である、大抵の言語にはその手のライブラリはある、関数型言語に限った話ではない

テキスト処理」に対して

お前それShellやPerlRubyPythonの前でも言えるの?

「並行処理」に対して

この手の話は「ライブラリ」の話になり、言語パラダイムにより議論されるべき問題ではない、もちろん自動並列化などの問題で数学モデルに基づいていることが多いHaskellなどは有利かもしれない、が、やはりそれは特定言語特定ライブラリの話になり、関数型言語一般の話ではない、並行処理の扱いにくい関数型言語設計など容易だろう

レシピ」に対して

言語の話でも言語パラダイムの話でもライブラリの話でもない、個人の技量の話だろう、関数型言語でも下手にしか書けない人は上手には書けない

GUI」に対して

GUIライブラリ設計にもよるけど、GUIってOOPの強い分野だと認識していたのだけれど、さてはて

まとめ

最後に要点をまとめると

記事そのもの価値基本的にないっぽい、こういう記事撲滅されないかなぁ

2014-04-09

http://anond.hatelabo.jp/20140409010816

から数値計算が得意とか適当こいてんじゃねーよ。

金融で使われてるのはデリバティブの合成が記述やすからだろうが。

数値計算が得意とか言うならゲーム機でも動く高速・高効率GIレンダラとか流体シミュレータとかの実用的な実装が可能になってから言えカス

1000万枚の学習データハンドリングするSVMとか最近流行りのCNNとか実装できんの?Haskellで。

オブジェクト指向 v.s. 関数型プログラミング

近年、関数型プログラミング重要はいろんなところで叫ばれています

Javaの最新バージョン関数型プログラミングに関する新機能が加わりました。

Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています

プログラミング教科書大手オライリーからJavascript関数型プログラミングを行うための解説書が発行されました。

関数型プログラミングへの注目度は高まってきています

おそらく、みなさんは既にオブジェクト指向が何か、を知っています

でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います

実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、

関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。

この記事を読む方の中で、「関数型プログラミングを取り入れるか・取り入れないか」で切実に悩んでいる人は、おそらくいないでしょう。

この記事はあまりかいところに立ち入りません。関数型プログラミングを使う側の立場に立って、利点や向き・不向き、それが導くスタイルを書きました。

みなさんは鳥のように飛んで、高い空から関数型プログラミングとは何か、何が良いのか、を見渡してください。

ふたつのアプローチ比較

オブジェクト指向アプローチは、名前をつけてプログラムを整理する

関数型プログラミングアプローチは、汎用部品でなんとかする

オブジェクト指向アプローチ

Googleが近年リリースした言語、Goには、”継承”を直接サポートする仕組みが無いことが話題になりました。

また、Mac OSXの基幹ライブラリCore Foundationは、ライブラリ自体C言語で書かれているにもかかわらず、その設計方針は明確にオブジェクト指向です。

継承クラスは、オブジェクト指向必須条件ではありません。

オブジェクト指向本質とは、何でしょうか。

その本質とは"名前をつけて対象を識別し、それを扱うこと"、にあります

最もプリミティブなオブジェクト指向対象は、ファイルハンドラです。あるファイルを開いて、読み込んで、あるいは書き込んで、ファイルを閉じる。

これらの処理をまとめたら、わかりやすいですよね?

対象に関する処理を、対象の周りにまとめる。これがオブジェクト指向の基礎的な理念です。

識別することとイコール比較できることは、とても良く似ています

イコールによる比較は、オブジェクト指向では鬼門であることが知られています

PointクラスインスタンスとColoredPointクラスイコール演算をどう決めればいいかに、正解はありません(詳しくは"effective java"をご参照ください)。

また名前をつけて識別する対象は、フワフワしていてはいけません。

たとえば、"軍人階級"をオブジェクトにしたとしましょう。"大佐"クラスのある兵士名前フィールドや、性別フィールドを持っているでしょう。

ところで彼が昇格したときに何が起こるでしょうか。

新たに"少将"クラスインスタンスが作られます。"大佐"クラスを破棄する前に、名前性別、その他沢山のデータを引き継がなくてはいけません。フィールドを増やしたい場合はその都度コード修正を加える必要があります(*)。

なるべくイコール比較を避けたい。対象不安定なものはいけない。では何に名前をつけて、識別するか。そこにオブジェクト指向技術者の熟練度が現れるのです。

関数型プログラミングアプローチ

一方、関数型プログラミングでは、特定の何かに名前をつけるより、極力、汎用部品でなんとかしようとしま

さな関数を、集めて撚り合わせて、新しい関数を作る。

関数自体リストなどのデータ構造に詰めることもよく行われます

実は、関数型プログラミングというのは本質を表していません。

その真の名は、"値指向プログラミング"です。

関数をはじめとして、リスト・ツリーのようなコンテナ手続きを抽象化したもの、回路を抽象化したもの

あらゆる対象を値として、合成し、ときに分解し、新しい値を作ります

変数という概念必要ありません。

変数適用する処理を作りあげることが、とても簡単だからです。

四則演算定義されたデータを詰めたデータ構造もまた、四則演算可能だったり。

値をイコール比較することも、なんのそのです。

誤解を恐れずに言うと、オブジェクト指向トップダウンなのに対し、関数型プログラミングボトムアップです。

関数型プログラミングの利点

読みやすい・理解やす

関数型プログラミングサポートする言語には、沢山の汎用部品定義されています

このような構造インターフェイスとして、様々なライブラリが組まれているので、

たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて、

パーサーを理解できれば、JSONパーサー・ XMLパーサー・markdownパーサー・C++パーサー ... などを理解するのはとても容易です。

理解やすいこと。これが関数型プログラミングの大きな利点です。

追記:

また、汎用部品と型のお陰で、ライブラリドキュメントが圧倒的にひきやすい、というメリットも有ります

Haskellな人がPythonにトライした結果 - Togetterまとめ

書きやす

関数型プログラミングは「厳密な事前設計必要とするため、簡単なことをやるのにも時間が掛かる」。

よく誤解されていますが、これはウソです。

スクラッチプログラムするのは、非常に手軽です。

>> map (*2) [1,2,3]
[2,4,6]

邪魔な”儀式”や、"おまじない"のコードが徹底的に撤廃されているためです。

関数型プログラミングコードは、潔癖かつ濃密です。

たとえばC言語でint hoge(int x,int y)が定義されているときhoge(3)はなんの意味も持ちませんが(コンパイルコケますが)、関数型プログラミングでは意味があり、実際に有用です。

上の例では、「掛け算をする」(*)関数は、二引数関数ですが、それに引数を渡して作られた「2を掛ける」関数(*2)は、一引数関数になります

関数型プログラミングでは、「簡単なことは簡単にでき、複雑なことは複雑にできる。ただし、間違ったことは殆どできないか、全くできない」。

多くのバグは、コンパイルエラーとして検出されます

また、静的型付けの力によって、コード補完は非常に強力になっていますインテリセンスの比ではないです。

たとえば、関数中のある表記の型を任意に表示できます(GHC/TypedHoles - HaskellWiki)。

やがてやってくる未来には、プログラムテキストエディタで書くことは時代遅れになっているでしょう。

統合環境サポートで、バグミスの少ない、スムーズプログラミングができます

そしてその環境で動くプログラミング言語は、関数型プログラミングサポートした言語なのです。

いつ関数型プログラミング

以下の様な兆候を感じたら、あなたはそのプログラム関数型プログラミングで書くべきです。

一般に、オブジェクト同士の相互作用が複雑になるほど、オブジェクト指向では手に負えなくなっていきます

そういうときは、オブジェクトを直接扱わず、替わりにその"相互作用"を扱うことで、複雑さを軽減するアプローチ有効です。

それこそが関数型プログラミングアプローチです。

オブジェクト指向の利点

初心者にとっては読みやすい・理解やす

特にオブジェクト指向有効なのはプログラミング初心者がそのコードをいじるかもしれないときです。

関数型プログラミングは、強固さと柔軟さの代償として、高い学習コストを伴います

そのため、初学者にとってはハードルが高いのです。

扱う対象があまり複雑でない時は、書きやす

オブジェクト間の相互作用が複雑でなく、着目している(名前をつけている)概念が安定しているとき

そして、プログラムをいじる人たちの間で共通理解が図れているならば、オブジェクト指向が有利です。

関数型プログラミングの得意分野はなにか

数値計算

遅延評価という機能によって、レガシー言語で扱えなかった、巨大な数を扱うことができます

分数を扱うことができます虚数もです。

関数型プログラミングで書かれたプログラムは、正確さが要求される、金融関連の業界で使われています

テキスト処理

手続きとしてパーサーを記述できるので、テキスト処理プログラムはより理解やすく、メンテナンスやすものになります

関数型プログラミングを知らない人は、「正規表現おk」と言いますが、

彼の書いた複雑な正規表現は、半年後には(書いた本人でさえ)理解できなくなっていることでしょう。

並行処理

手続き一般を扱うことができるので、途中で割り込みのある手続きの表現も容易です。

関数型プログラミングサポートしていない言語ではコルーチン(ファイバー)などをつかってなんとかするしかありません。

さもなくば、非並行処理では普通に関数として記述できるところを、並行処理のために、Builder,Strategy,Command,Interpreterパターンを駆使して書き直すことになります

Javascript使いの方は、Deferredなどの構造を使うでしょう(http://qiita.com/KDKTN/items/4c6986049d204f0645d8)。

C++使いの方はBoostで頑張りましょう。破滅的に解りにくいコンパイルエラーメッセージと格闘してください。

レシピ

もう少し簡単な例をあげます

あなたは、あるレシピにしたがって、自動的料理を行うマシン制御プログラムを書いているとしましょう。

料理レシピは、"手続き"ですよね?たとえば、カレー

1. まず玉ねぎを炒める。

2. 飴色になったら、肉を加えて炒める。

3. 野菜を加える。

4. 水を加えて煮る。

5. スパイスを加える。

しかあなたはこの手続きを関数として表現できるでしょうか。

…できませんよね?何故ならば、各ステップの"間に"、マシンのロボアームの位置や動きを調整する処理が必要からです。

これをオブジェクト指向でやろうとすると、各ステップ副作用として、それらの処理を行うことになります

そうすると、マシンが二機に増えた時などの変更量は、絶望的なものになります

あるいは関数として表現するのを諦め、手順全体をDSL記述できるようにします。

このアプローチ関数型プログラミング的です。しか関数型プログラミングサポートした言語の助けなしでは、そのDSL記述するために沢山のユーティリティコードを書かなくてはならないでしょう。

オブジェクト指向アプローチでこの問題をエレガントに解こうとすると、クラス化の粒度を上げる事になります

野菜クラスフライパンクラス、ボイルクラスフライクラス、焼き加減クラス、アームクラス野菜の大きさクラス、切り方クラス、焼き方クラス、"焦げたよ"クラスetc...

こうすると早晩レシピプログラムコードから消え去ることになります。上記のたった5行は、依存性注入のオブジェクトグラフを構築するコードに取って代わることになります。そこには沢山の挙動制御オプションとして付記されているのです。

カレーなど、ある種のレシピ限定することで、見た目の理解やすさを得ることができますが、一方それは表現力を損なうことを意味します。

C言語などではマクロを使うこともできますが、それは結局、関数型プログラミングアプローチ意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。

GUI

iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードキャンセルできます

このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。

これをオブジェクト指向で実現しようとすると、

1. 三つの異なるボタンを同じ位置に置くか

2. 同じボタンが三つの異なる機能を持つか

という下らない問題にぶつかります

一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。

「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」

この条件が満たされているうちは、オブジェクト指向GUIを実現することに無理はありません。

しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。

近年、PCのディスプレイの大きさは、頭打ちになってきました。

画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルひとつドットを表すようになってきています

これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。

したがって、未来GUIプログラミングは、注意深く機能ピックアップして制限するというデザイナー努力を脇におけば、

関数型プログラミングの力を頼るしか無いでしょう。

はじめよう、関数型プログラミング

まり

Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ

1. google:すごいHaskellたのしく学ぼう を注文する。

2. Download Haskell自分のPCに導入する。

3. コンソールghciと入力して、対話コンソールを立ち上げる。

4. 次の関数コンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。

take 4 $ map (*2) [1..]

5. ステップ1で買った教科書を読んで、学ぶ。


追記:

いかがでしたか

ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全から、とか、より速いから、などという妄言が満ち溢れています

オブジェクト指向関数型プログラミングは、水と油ではありません。プログラマ自分プログラムに最適なアプローチを選ぶことができます

一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティライブラリ最近増えてきています)。

この記事を読んだオブジェクト指向プログラマあなたが、少しでも関数型プログラミングに(そしてHaskell)興味を持ってくださって、ホームセンター大人用オシメのコーナーが大賑わいになれば幸いです。。

2014-02-25

http://anond.hatelabo.jp/20140225220755

やれることは増やしていくよ。

うちの会社で俺より年上の人は、

Excel設計書書いて外注に投げるだけの人もいるし、

プロジェクト初期のコアな部分を自分で書いて、徐々に若手にふってく人もいるし、

大学研究室に出入りして、数値計算プログラムを1人でゴリゴリ書いてる人もいるし、

いろいろだなー。

2013-08-06

http://anond.hatelabo.jp/20130804060453

>>具体的な数値として計算する必要はありません。

>こういってるのが全てだと思うんですけどね。

  

>4000万使ってボラリティを下げて運用するくらいなら、100万でボラリティのある程度あるシステム運用した方が良いのでは?と。

>この場合運用自体のリスクがどちらが大きいか、と言うことに大きな違いは無いと思いますので。

  

>ただ、同じ資産無いで、同じリスクがあるもの分散した所でリスクは同じです。

  

http://assetsplan.net/bun-shi/6borathi.html

>例えばこれとか見て分かる通り、全く同じ確率の物に分散したところで、リスクだけ下がって平均収益は保つ、なんてことは出来ない。

分散投資メリットは、様々な特徴を持つ株や他の商品に分散することで、

自分理想リスクに調整できることだ。

>もう一つ、例えば1000万の株1つにかけるより100万の株10個に分けたほうが、1日単位で考えた時、1日で10試行している様なものから

>その分試行回数が多くなり、収束性は高くなるだろう。

>それをある意味ボラリティの低下、ということも言えるかもしれないが、いわゆるリスク、振れ幅自体が小さくなっているわけではない。

こういっているのがすべてです。

  

>後のことに関しては色々仮定があるのでもういいです。

>(分散したらリスクが減るとか減らないというのは、

>そもそも同一金額をかけるのか分散必要な金額がいくらなのか、

>対象がどの程度あってそれぞれがどの程度のリスクなのか、

>に大きく寄るので。その辺りで根本的に前提の違いがあったみたいなので、

上にある通り、これらの前提に違いはないにも関わらず、君は間違ったことを言っています

ちなみに、同一金額かどうかについてのみ、そちらから言及がありませんが、私の方から分散投資にするかどうかで、投資の総額をかえるべきでないと、しばらく前に言っています

そちらでも単位に%を使うあたり、金額ではなくて金額の比率を扱っているため、投資総額が一定という前提があることが推測されます

それ以外の前提についても、こちら側でも明確にしています

ですから、それらの前提に違いはありません。にもかかわらず、リスクは同じだと言い張っていたのです。

  

>等しい分散を持つ分布を畳み込んだ場合分散独立でない場合に比べ

独立度が高いほど低くなるのは分かります

これも間違いです。もっとボラティリティが低くなるのは、独立とはもっともかけ離れた、相関-1のケースです。

独立であるという仮定は、ボラティリティをどのくらい下げるかという点に関して、純粋確率統計の議論としては、おおむね中立的な仮定なんです。

  

分散したらどれだけリスクが下がるかもわからない状態で

適当分散するのは、単に手を広げて管理の手間が増えるだけだろう、

>と言ったことです。

あなたが実際に何度も言ったことは、上にある通りそれとはかけ離れた主張ですが・・・

まず、分散したらどれだけリスクが下がるのか?について議論するなら、ようやく単なる理論を超えて、実際の数値が登場することになります

それはそれとして、適当分散するのがよくないのは当たり前です。

ETFでも良いですが、ETFが同じ平均収益があってリスクが低いものであれば

>なぜ皆がそれをやらないのでしょう?そこに尽きると思います。)

そもそも個別株をやっている人自体が少ないので・・・仮に個別株よりずっと得です!といっても、皆が皆やるわけではないでしょう。

定期預金よりリスクの高いものには手を出さない人もいれば、投機的なまでにリスクがあった方が面白いという人もいますから

変数どうのこうのですが、この様に式建てて分かりやすく、後の数値計算をしやすくするために

>行っていることはご存知ですよね?

>それは理論段階で、実用段階で数値を入れるための箱ですよ?

ドリフト項など数値を出さずに何が意味があるのでしょうか?

いずれも間違いです。変数を使って、数学的な議論だけでわかることもたくさんあります

今回あなたが何回もやっている間違いは、ちょうどそれにあたります

過去データを使っている限り完璧ではないみたいなことを言い出したので、そういう話ではないことを強調しました。

あなたは、数値はどうでもよい、さらドリフト項など過去分布から求めるものではない、

>と繰り返してきましたが、それは変えませんか?(カエルも何も無いんですけど。)

というのもおかしな話で、もちろんもっと込み入ったことを考えるときには、数値だしますし、それは重要です。

しかし、まず過去データ依存せずに、論理的または数学的にはっきりわかることを確認するのには、大きな意味があります。 

  

それにしても、単語だけググって知ったかぶりしているのかと思うレベルミスばかりしている人が

>要するにすべてあんたの"思い込み"だけじゃないか

  

>それに対して、あなた数学的な根拠もあるかのようにドリフト項だの出してきたが、

>結局あなたは何も知らないじゃないか

>それでも信じるのは自由だが、いい加減な事を言うのはヤメてください。

  

>取り敢えず、あなたは単に分散トレードマンセー

>内容も何も分かってないのに平均収益だのドリフト項だの言ってることはよくわかったからもういいや。

  

>この様に、何も分かっていない人間が、さも分かったふうなふりをして

とか言えるって、すごいですね。どんな人なのか少し興味があります

2013-08-04

http://anond.hatelabo.jp/20130804054830

具体的な数値として計算する必要はありません。

こういってるのが全てだと思うんですけどね。



後のことに関しては色々仮定があるのでもういいです。

(分散したらリスクが減るとか減らないというのは、

そもそも同一金額をかけるのか分散必要な金額がいくらなのか、

対象がどの程度あってそれぞれがどの程度のリスクなのか、

に大きく寄るので。その辺りで根本的に前提の違いがあったみたいなので、

混乱させてすいません。

等しい分散を持つ分布を畳み込んだ場合分散独立でない場合に比べ

独立度が高いほど低くなるのは分かります

言いたかったのは、それぞれがどれだけ独立性があって、

分散したらどれだけリスクが下がるかもわからない状態で

適当分散するのは、単に手を広げて管理の手間が増えるだけだろう、

と言ったことです。

ETFでも良いですが、ETFが同じ平均収益があってリスクが低いものであれば

なぜ皆がそれをやらないのでしょう?そこに尽きると思います。)


変数どうのこうのですが、この様に式建てて分かりやすく、後の数値計算をしやすくするために

行っていることはご存知ですよね?

それは理論段階で、実用段階で数値を入れるための箱ですよ?

ドリフト項など数値を出さずに何が意味があるのでしょうか?

あなたは、数値はどうでもよい、さらドリフト項など過去分布から求めるものではない、

と繰り返してきましたが、それは変えませんか?(カエルも何も無いんですけど。)

あなたが決めるものでなく、過去分布から決まるものでなければ、

神のみぞ知る、ということでしょうかね?

その後、どちらに実際動くかはある意味神のみぞ知る、です。

で、それを何とか確率的に求めるために数値化して指標化する、の1つがドリフト項に当たると思うんですけどね。

違いますかね?

2013-05-09

パソコンって何台必要なんだろうか…

インターネッツつなぐやつ1台

オフライン個人情報流出したら困る情報を扱う1台

持ち運びするノートパソコン1台

ファイルサーバー1台

数値処理や数値計算するためのクラスター、もしくはワークステーション1台

ということで最低5台か。ファイルサーバーインターネットPC、あとオフラインPCはやっすいので問題ないからいいとして、ノートワークステーションは定期的な買い替えが必要か…

http://www.nikkei.com/article/DGXNASGG08015_Y3A500C1EA1000/

新たなアーキテクチャーを創設するくらいならオープンソース分散並列(OpenMP-MPI)のハイブリッド(CPU-GPU)数値処理ソフトウェア開発に力を入れたほうがいい。

少なくともオープンソースで動くOpenMP-MPI CPU-GPUの基本的な数値計算ソフト(特に行列計算)は世界最先端研究内容。こういったソフトを毎回アーキテクチャーごとに作るのは金の無駄だし、x86-x64環境で動くようにすればいい。

現状の数値シミュレーションなんてKrylov methodなどの行列処理が主な作業なんだから、それを汎用アーキテクチャで使えるようにしたほうがいい。CPU-GPUOpenMP-MPIで動く行列処理のソフトがあればそれが汎用の処理として使えるんだからくそみたいにコンパイルがめんどくさいアーキテクチャを作るくらいなら、汎用で使えるオープンソースソフトを作れよ。



そんなコードがTrilinosなんだけどね。

2013-03-28

科学技術計算Python

科学者必要とするもの

必要ものの列挙

現存する解法

どの解法が科学者にとって役に立つのか?

コンパイラ言語:C, C++, Fortran, 等
スクリプト言語Matlab
他のスクリプト言語Scilab, Octave, Igor, R, IDL, 等
Python はどうなの?

2012-04-01

http://anond.hatelabo.jp/20120401113335

そうなのか。

レガシーでよくあんな複雑なもん作れるなあ。

自動化どころか、テストのものすら絶望的に難しい気がするがどうしてるの?

特定のアイテムの組み合わせを持った状態で特定の場所で特定の行動を取るとバグるとか、確かめようがない気がする…。

ちなみに数値計算系もテスト無理。ゲームだと流体計算とかシェーディングとかか。あれが正しい計算結果になってるかどうかとか、特定の境界条件で変な解が出ないかとか、無理だろ。

解析解が得られるケースで試すくらいしかないと思ってるけど、他に何かあるなら教えて欲しい。

2012-01-18

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

 

42 : デフォルト名無しさん : 2011/11/12(土) 23:53:51.20

Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ

端末からテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに

PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?

けどまぁ、情弱文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか

45 : デフォルト名無しさん : 2011/11/13(日) 01:41:24.25

数値計算や端末からテキスト処理なんてWeb系じゃ大して使わないからなあ…

43 : デフォルト名無しさん : 2011/11/13(日) 00:04:23.30

PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ

Pythonに関しては、ZopeさえコケていなければWebサーバLLとして大成功していたはずなのに、

Railsなんかが登場したおかげで、すっかり影が薄くなってしまますた....

44 : デフォルト名無しさん : 2011/11/13(日) 00:49:55.28

zopeってコケてたんだ

ってか、railsインスパイアされたフレームワークって今じゃ幾らでもあるよね

djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、

pythonPHPの方がユーザー数は圧倒的に多いと思うんだけど

本家railsって、他を遥かに越えるほど良いものなんだっけ?

48 : デフォルト名無しさん : 2011/11/13(日) 08:30:25.68

44

Zopeが登場した当時、RDB+PHPはもう古い、これからOODB+ZopeWebの中軸になる!」

さかんに宣伝され、雑誌でもZope特集が組まれていた

 

少なくとも自分ZopeからPythonという言語を知ったし、その時点でRubyは知らなかった

そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう

今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

 

djangoCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう

しかしRailsはRailsコミュニティの活動が活発だし、その進化は異常に早い

 

Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoCakePHPから

何かのイノベーションが提示されでもされない限り、後発のdjangoCakePHPRailsに追いつくのは無理

Railsは決して技術的に完璧Webフレームワークではないんだけどね....(たとえばSeaSideのような.... )

 

からこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている

51 : デフォルト名無しさん : 2011/11/13(日) 12:55:40.83

 C a k e P H P は う ん こ   

遅い、設計が古い、動作がおかしいの3重苦

日本では流行ってないけど海外だとYiiが流行ってきてる

55 : デフォルト名無しさん : 2011/11/13(日) 17:31:12.14

CakePHP使ってんの?

可哀そうにw

53 : デフォルト名無しさん : 2011/11/13(日) 14:44:48.55

求人PHPばかりだからPHPやるしかないだろ。

57 : デフォルト名無しさん : 2011/11/13(日) 19:34:04.95

でもやっぱりいつもの使い慣れたLL(Python/Ruby)で

Webサービスを書きたいってのがある

73 : デフォルト名無しさん : 2011/11/15(火) 17:32:46.07

アメリカ言語ユーザー数は

Python>>>>>>>>Ruby

求人数は

Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=

どういうことなの?

74 : デフォルト名無しさん : 2011/11/15(火) 17:48:15.59

RubyRails以外に使い道がないか

75 : デフォルト名無しさん : 2011/11/15(火) 17:54:35.50

海外ではRubyは昨今のRailsバブルのお陰で

もはやWebスタートアップ共通語になってるらしいからね

求人数が多いのはそのためだと思うよ

76 : デフォルト名無しさん : 2011/11/15(火) 18:03:23.05

なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・

Pythonのほうが使いやすいと思うのだがフレームワークRailsが優位なんだろうか

77 : デフォルト名無しさん : 2011/11/15(火) 18:23:14.33

Djangoは周辺ライブラリ微妙だし本体も鈍くさい感じがする。

でも、FlaskはSinatraより好きだからPythonが嫌いってわけではない。むしろ好き。

 

ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。

78 : デフォルト名無しさん : 2011/11/15(火) 18:38:46.28

同感だ

同じように思っている人が他にもいて安心した

79 : デフォルト名無しさん : 2011/11/15(火) 18:54:37.13

PHPJavaScalaには

Railsみたいなフレームワークあるのに

Pythonはいいのないんだよな

80 : デフォルト名無しさん : 2011/11/15(火) 21:19:09.89

PHPフレームワークが乱立しすぎているから、RailsPHPで実装してみようというやつが出てきた。

Scalaも注目されだしたのはつい最近のことだしな。

それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、

つの間にかフェードアウト

ただ、どうやってもRailsもどきRailsを超えることはできないのは間違いない。

83 : デフォルト名無しさん : 2011/11/15(火) 21:25:38.55

パクリオリジナルを超えられない(キリッ って定型句だけど、

これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから

84 : デフォルト名無しさん : 2011/11/15(火) 21:30:04.39

D言語って超えたって?

85 : デフォルト名無しさん : 2011/11/15(火) 21:31:12.00

B言語って超えたって?

86 : デフォルト名無しさん : 2011/11/15(火) 21:53:33.76

でもRailsRubyの黒魔術を使いまくりから

PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない

90 : デフォルト名無しさん : 2011/11/15(火) 22:50:07.81

スタートアップなんて根無し草の集まりにとって、

googleが囲った言語coolさを見出せないんだろ

123 : デフォルト名無しさん : 2011/11/20(日) 11:32:16.79

まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ

91 : デフォルト名無しさん : 2011/11/15(火) 22:52:42.98

そういう理由じゃなくてRailsのほうが単純に情報プラグインも多いからでしょ

3 : デフォルト名無しさん : 2011/11/15(火) 23:07:07.67

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

わざわざ不合理で不完全な言語を使うなんて

社会からハミ出た奴らの精神的な作用によるものじゃないの?

95 : デフォルト名無しさん : 2011/11/15(火) 23:20:20.21

django情報プラグインが増えないという、

現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

真実であるのなら、今頃はdjango情報プラグインが溢れかえっているはず

104 : デフォルト名無しさん : 2011/11/16(水) 01:20:49.05

Python信者乙。

yumや、gdbgnome拡張pythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。

ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。

94 : デフォルト名無しさん : 2011/11/15(火) 23:15:11.93

というか、世界中Pythonプログラマが Remeber Zope!! を合い言葉

打倒RailsたるWebフレームワークを開発しているはずだけど、

いまだにRailsを超えるプロダクトが登場しないのはナゼ?

Railsも登場してから、かなりの年月が経過しているんだけどなぁ....

その間にもRailsRails 3が登場して、REST/AJAXの強化等の進化継続しているよ

347 : デフォルト名無しさん : 2011/12/09(金) 10:16:35.22

Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):

.....

map(mapper, ary)

書き換える必要があります

348 : デフォルト名無しさん : 2011/12/09(金) 10:24:20.94

Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから

andやorを使った不自然記述をしなくても

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です。

390 : デフォルト名無しさん : 2011/12/10(土) 15:35:41.62

348

これはPythondisっているように見せかけてRubydisっているのか? と一瞬思ってしまったw

だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…

そしてどっちもlambda式の中で束縛変数名前再帰可能、と

350 : デフォルト名無しさん : 2011/12/09(金) 11:12:13.28

要素に対する関数適用と、抽出を組み合わせる場合

Python

print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]

暗号のように見える。

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

思考の流れと、コードの流れが一致しているので書きやすい。

351 : デフォルト名無しさん : 2011/12/09(金) 11:22:55.04

だれだPythonなら書き方はひとつとか言ってるのは

map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))

354 : デフォルト名無しさん : 2011/12/09(金) 12:22:07.37

pythonて可読性が高いのをうたってる割にはそこいまいちだよね

353 : デフォルト名無しさん : 2011/12/09(金) 12:10:08.46

Ruby場合には、左から右へと無名関数データフローあるいは

パイプラインのように並ぶからコードが読みやすい

 

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコード自然に書ける

プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

 

それと比較すると、Pythonコードは、関数型プログラミングというもの

いかに高度で難解なものであるかという事をもったいぶってプログラマ押し付け

 

もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう

356 : デフォルト名無しさん : 2011/12/09(金) 12:53:45.66

階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|

  x = foo(elem.x)  # ここが局所宣言を書く部分

  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる

}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから

x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける

このポイントは、実用的なプログラム関数型風で書こうとした時に、威力を発揮する

357 : デフォルト名無しさん : 2011/12/09(金) 12:59:21.07

余計分かりづらくなった

358 : デフォルト名無しさん : 2011/12/09(金) 13:17:26.54

リスト内包表記が暗号みたいと言ってる奴は

高卒ドカタなんだろうなぁと可哀想になる

大学数学に触れる機会があれば

集合の表記に似せてることが分かるから

386 : デフォルト名無しさん : 2011/12/10(土) 01:41:34.46

数学とかで慣れてるし区切りが関数のがわかりやすい

359 : デフォルト名無しさん : 2011/12/09(金) 13:46:31.97

355

map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね

Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ

360 : デフォルト名無しさん : 2011/12/09(金) 13:53:28.85

Rubyだと直感的に書けるコード

[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくい。

'-'.join(map(str, reversed(sorted([1,4,3,2]))))

361 : デフォルト名無しさん : 2011/12/09(金) 14:07:17.88

360

Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....

364 : デフォルト名無しさん : 2011/12/09(金) 14:28:55.99

カッコだらけのコードを分かりやすくする基本的な方法静的単一代入じゃないか

Rubyのやり方は基本ではなく玄人のやり方だろ

372 : 369 : 2011/12/09(金) 16:21:03.82

Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、

似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。

シーケンスプロトコルの利点が活かせない。

383 : デフォルト名無しさん : 2011/12/10(土) 01:17:28.39

372

外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてます

Rubyユーザーは列挙可能なものmapselectできて当然だろって思ってる気がしま

377 : デフォルト名無しさん : 2011/12/09(金) 18:41:51.79

Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる

得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない

Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い

379 : デフォルト名無しさん : 2011/12/09(金) 18:48:52.27

Pythonユーザー調教っぷりは異常

「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く

387 : デフォルト名無しさん : 2011/12/10(土) 13:40:40.74

リストの内包表記はシンプルに書けるときは使うけど

基本その場でdefするのがPython風なんだと思う。

389 : デフォルト名無しさん : 2011/12/10(土) 14:40:31.04

無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像

384 : デフォルト名無しさん : 2011/12/10(土) 01:23:49.48

outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる

日本語文に慣れているからだと思うが、

もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?

385 : デフォルト名無しさん : 2011/12/10(土) 01:34:57.89

なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね

F#パイプライン演算子最高ということで

2011-12-30

大学機械工学科について急に語りたくなったので語る。

なんか、誰の役に立つの分からんけど、私が高校生の頃にこういう説明があったら良かったなぁ……とふと思ったので書いてみた。

さて、大学工学部機械工学科に入学するとしよう。基本的に機械工学科に含まれる研究分野は多い。もちろんそれには理由があるのだが、それでもほぼすべての学生が学ぶ共通の内容があり、機械工学科を卒業した学生企業が期待するのはそれらの基礎知識である。そういう意味機械工学は非常に実学に近いと言っても良い。

四力とは何か

機械工学科の教員は本当に口を酸っぱくして「四力を身につけろ」と何度も何度も授業の度に言ってくる。古いタイプ教員ほどその傾向は強い。いわく、「専門分野の基礎がわかっている人間社会では強い」、「四力が身についていなければ学科長が許しても俺が卒業させない」、云々。で、その四力というのは以下の4つの力学」のことを指す。

機械力学というのはいわゆるニュートン力学でいう「剛体の力学」で、弾性・塑性変形しない対象がどのように運動するかを扱う。振動工学とか解析力学とかはだいたいこの延長線上で学ぶ。高校の力学微分積分を足した感じだと思えばいい。

熱力学マクロで見た気体や液体の持つエネルギーを対象にする。これも微分積分エンタルピーエントロピー概念を除けば高校で学べる物理とそう大差はない。次の流体力学と合わせて熱流体力学というジャンルを構成していることもある。統計力学熱力学の延長線上で学ぶことが多いが、量子力学とともに挫折する学生が非常に多い。

流体力学はその名の通り気体と液体を合わせた流体の運動について学ぶ。航空関係の仕事がやりたいなら必須。多くの近似法を学ぶが現実にはコンピュータシミュレーションが用いられるのであまり細かく勉強しても役に立つ場面は少ないかもしれない。下の材料力学とは連続力学という共通の基礎理論を持つ遠い親戚。

最後材料力学は、弾性をもつ(=フックの法則に従う)固体の変形が対象。建築学科とか土木工学科だと構造力学という名前で開講されているが、内容はだいたい一緒。これも多くの近似が含まれる体系で、実際にはコンピュータを使った有限要素法でシミュレーションする場面が多い。とはいえ基本を大学学部時代に学んでおくことは非常に重要

で、これら4つの科目がどう生きてくるかというと、たとえば20世紀における機械工学結晶であるところのエンジン設計なんかにはこれら全部が関わってくる。機械にかかる荷重や振動を解析し(機械力学)、エネルギー効率の高いサイクルを実現し(熱力学)、吸気と排気がスムーズに行える仕組みを作り(流体力学)、これらの条件に耐えうる材料を選ぶ(材料力学)。もちろん就職したあとにこれらすべてに関わることはないし、実際に使える高度な知識を教員が授けるわけではないが、機械設計に際しては必須の基礎知識ばかり。とはいえ後のように四力から直接発展した研究をしているところはまれで、院試のために勉強したのに後はもう使わなくなった、なんてこともままあるわけだが……。

なお高専からの編入生が入ってくるのは2~3回生なのだが、彼らはすでに四力を身につけていることが多く、運が良ければ通常の学部からは羨望と尊敬まなざしを勝ち得ることができる(しか英語ができないので研究室に入ってから苦労することが多いようだ)。

四力以外は?

高度な数学電磁気学であったり、機械加工や金属材料設計に関する専門的な知識もカリキュラムに含まれることが多い。みんな大好きロボット制御工学範疇で、これは四力とは別に学ぶことになる。ロボットメカトロのもう一つの必須分野である電気電子系の講義ほとんどないので独学で学ぶ羽目になるが、微分方程式が解ければ理解にはさして問題はない。プログラミング数値計算などの授業は開講されていることもあるしされていないこともある。とはい機械工学科を出てガチガチプログラマになることはほとんどないし、教えてくれてもFORTRANか、せいぜいCが限界である。さすがにBasicを教えているところはない。……ないと信じたい。

実習や実験がドカドカと入ってくるのは理系宿命なのだが、特徴的なのはCADの実習。おそらく就職したら即使う(可能性がある)ので、研究室に入る前に一度経験しておくといい。もちろん実際にCADで製図するのは専門や工業高校卒だったりするのだが、そいつらをチェックしてダメ出しするのは大卒なり院卒なりの仕事になる。

研究室が多すぎる

四力を身につけたらいよいよ研究室に配属されることになるのだが、基本的に四力を応用した分野ならなんでも含まれるので本当に各研究室でやっていることがバラバラ。隣の研究室が何をやっているのかは全くわからない(もちろんこれは機械工学科だけではないとは思うが……)。そのため学科イメージを統一することが難しく、どうしてもわかりやすいロボットなんかをアピールすることが多くなってしまう。とはいえそういう「わかりやすい」ことをやっている研究室は少数派で、実際は地味なシミュレーション材料のサンプルをいじくりまわしているところが多数派である最近医療工学系の研究をしているところが増えたらしいが、光計測だったり材料物性だったり航空工学だったり、あるいは全然関係ないシステム工学だとか原子力工学教員が居座っていることもあるようだ。こういう教員を食わすために機械工学第二学科(夜間向けの第二部ではない)が設立されたり、環境とかエネルギーとかが名前につく専攻が設立されたりすることがままある(昔は学科内に新しく講座を作るにはいろいろと制限があったらしい)。そういうところは(上位大学なら)ロンダ先として利用されるのが常で、そうした研究室を選んでしまった学部生はマスターの外部生の多さに面食らうことになる。

はいえいろいろ選べるならまだマシな方で、大学によっては計測か材料しか選べなかったり、工業高校ばりの金属加工実験を延々とやらされたりすることもある(ようだ)。やりたいことがあるならそれをやっている大学に行け、とは機械工学科志望の高校生のためにある言葉かもしれない。

で、ぶっちゃけ就職はいいんでしょ?

そう、就職は非常にいいのだ。「学内推薦が余る」という噂を聞いたことがある人がいるかもしれないが、まぎれもない事実である(とはい最近は上位校の推薦でもガンガン落としまくる企業が増えたようで就職担当も頭を抱えているようだが)。機電系なる言葉が広まったのはネットが登場して以降らしいが、機電系機械工学系と電気電子工学系、というぜんぜん関係ない2つの学科をまとめてこう呼ぶのは、それだけこの国の製造業でこの2学科出身者が必要とされているということだろう。我らが機械工学科の後輩たちのために、これから経済産業省には「モノづくり立国」なるわかったようでよくわからないスローガンを推進していただきたい。

inspierd by http://anond.hatelabo.jp/20110929232831

追記:あえて上位と下位の大学事情をごっちゃにして書いているので、受験生諸君はあまり鵜呑みにせず自分リサーチするようにお勧めする

2011-07-18

大学の時ややこしい微分方程式解いてベーシックプログラム作ったわ

20年以上前卒論研究で、自分設計した半導体デバイスの特性を計算するために、

境界条件がいろいろややこしいポワソン方程式(=微分方程式の一種)をガシガシと解いて、

ベーシックでFOR - NEXT 構文使って数値計算してグラフ描いたなぁ。

まだ表計算プログラムというヤツに出会う前のこと。

ドットプリンタの出力が汚かったから、ロットリングペンと雲形定規で清書までして。

今はエクセルあるけど、そういう微分方程式自分で解かないと、セル入力する式が得られない。

何が言いたいかというと、暗記だけの数学しかやって来なかったら、

解けるかどうか分からない微分方程式を、「解こう」とチャレンジしなかっただろうなあ、ということ。

受験用の暗記数学で十分、と思うのはアリなんだろうけど、

若いのにせっかくの学ぶ機会を潰してもったいないなあ、とオッサンは思う。

http://anond.hatelabo.jp/20110717152546

2011-02-02

http://anond.hatelabo.jp/20110202195628

元増田。おー!PRPRLの違いがよく分かった。これについては、素直に勉強になった。ありがとう。なるほど、なるほどねー。

>んでお里が知れるっつったのは、自分physical reviewPRLの違いも知らないのに、物理の人には情報系の事情を知って評価することを要求したことについて言ったんだよ。無理でしょ。

うん、この問題についてよく考えなおしてみると、この問題は、もしかしたら、単に情報系の中の内輪もめ問題なのかもしれない、と思い始めた。視点が増えた。ありがとう。

物理の人と情報の人が同じポストを争うことなんてないでしょ。

専門外だから、よく知らないが物理シミュレーションとか数値計算あたりだとかぶるかもしれん。学振も、工学の中ではかぶることがありそう。アカデミック公募で、同じ専攻内に物理系の研究室情報系の研究室が混じっていると、物理系の人が情報系の人の業績評価に加わることとかはありそう。そうすると、情報系の人からみると、日本語論文誌をたくさん書いているだけで、有名査読付き国際学会全然通せていない人が優遇されることがある…らしい

しかし。よく考えると、情報系の中でも、公募での評価は論文誌>国際学会が妥当、と考えている人もいるし、単に情報系の業績評価の内輪もめ問題なのかも知れない、とも思い始めた。今は違うが、一時期、大学情報研究者特許論文より高く評価されて、みんな特許を出した時期があった、とかいう話も聞くし。情報は、分野として物理より歴史が浅いから、業績評価の方法が定まっておらず混乱していて、その混乱が分野外の人のせいにみえている情報系の人がいるっていうだけなのかも知れない。あと、数十年すると、情報系の業績評価の方法も定まってくるのかも。不当に文句を言ったかも知れない。ごめんなさい。

2011-01-31

http://anond.hatelabo.jp/20110131202845

何らかの数理的なスキルを活かす仕事という意味です

(そのレスがどのように「いや」になるのかよく分かりません)

ちなみに、電子レンジマイクロ波が水のどういう自由度共鳴するのかちょっと分からなかったんで調べたところ、電気分極と相互作用するようです

分子間振動(水素結合)や原子間振動は電子レンジよりかなり速い周波数なので関係無い。(まぁ常識的に考えてそんな電磁波をおいそれと発生させたら酷い目に会いそう)

この辺の振動数がなぜそうなっているのかを知るためには、量子力学を使う必要があって(分極以外)、水分子程度の複雑さになるとまぁまず手では解けないので適当な近似解法や数値計算の知識が必要になります

ちなみに分極については、結構広い周波数帯に感応するようで、熱の発生源は共鳴そのものというよりも分子集団の運動に伴うエネルギーの散逸が主なようです

2010-06-29

http://anond.hatelabo.jp/20100628022930

なんか話が合いそうだなと思ったので返信。増田なのがちょっと勿体ない気もするけど。

ちなみに俺のバックグラウンドを書いておくと、学生時代の専攻は工学系なんだけど、それにしてはオーバースペックなぐらい数学をかじってた感じの方面。あんまり詳しく書くと特定されそうなんでこの程度で勘弁ね。

"Pattern Recognition and Machine Learning"のビショップ物理出身だけど、あの年代は確かにそういう色が強かったのかもしれない。

確かにその種の傾向は上の世代までかもしれないね。

ビショップ物理出身なのは知らなかったけど、それ聞いてなんか合点のいく気がした。何か妙に数学へのマニアックなこだわりの片鱗が見える割に、数学屋から見ると妙な記号法を使うんだよね、あの人。

工学としては例外的に高度な(物理の道具としてはまあ普通の)数学を使ったりするので

全然高度じゃないです><

いや、だからあくまで「工学として」ね。線型代数と、微積の「計算」以外を使うことって工学ではそうないでしょ(フーリエ変換とかだって工学の文脈では所詮「計算」だもんね。)。

制御理論とか機械学習では、関数解析の概念がちょっとだけ出てくるけど、あんなんでも数学屋にとってはオアシスだね。

もっとも、カーネル法関係ではいつも申し訳程度にMercerの定理が言及されているのを見ると「なんだかなあ」っていつも思うけど。

情報幾何とかは(無駄に)高度だけど、実用性はあんまないオナニー(しかも日本でしか流行ってない)感があるし。

そうそう、あれに限らず統計学理論の一部にはものすごく違和感あるんだよね。

増田だから書けるけど、情報幾何なんて「お前、双対接続って言いたいだけちゃうんかと」って感じだし、他にも色々、何でも抽象化して一般化すりゃいいってもんじゃないんだぞと言いたくなることが色々。

統計学理論機械学習パターン認識の関係は、数理物理理論物理実験物理の関係に似てる気がするんだよね。しかも統計学場合普遍的に綺麗な構造なんてものがあると思えないだけに余計に始末が悪い。「ひも理論実験で検証できないから科学ではない」って批判があるらしいけど、統計学にも同じ批判されても仕方ない理論が色々あるよね。データから何かを推定する理論なのに、データがどれだけあっても実用的には絶対まともな結果が出せないモデルとか。

CVレイトレーシングで経路積分使って云々というのもあったけど(その人はGoogleに言ってアドセンスかなんか作ってるらしい)、あれもまぁ適当パス空間で平均とるだけって感じがするし…。

CVはまあ何でもありの世界だよね。誰か無限次元リー群とか使ってみてくれないかなと思う。というか俺自身が一度やろうとして無意味なことに気づいてやめたんだけどさ。

結局性能はあんま変わらないからもっとシンプルモデルでいいよとかなってそう。

イジングモデルとかその辺は不勉強なんであまりよく知らないんだけど、一般的にその手のモデルは、性能が変わらないだけならいいけど、計算量がどうとかデータ量がどうとかで事実上使えなかったりすることが多いんだよね。着想として物理からアイディアを持ってくるのはいいんだけど、物理から持ってきたアイディアなら必ず筋がいいはずみたいな思いこみ(そう思いたくなる気持ちはよくわかるけど)はどうかと思う。

普通に日本の伝統新卒採用でそういう会社に行く人はいるけど、やってることは工学とかあるいは良くわからない専攻の人と同じな気がする。これはちょっと曖昧だけど。

うん、そうなってしまうのは仕方ないでしょうね。

ただ逆に、変わり種のバックグラウンド持ってる人は道具箱が豊富だから、新しいこと思いつく可能性もあるわけで、採用されるとしたらむしろそれを買われてじゃないかな。俺自身、工学部の人は普通は絶対知らない数学を色々知ってるので、それをどうにか武器にできないかいろいろ試行錯誤中だよ。というか特許とかの形で発表したのもすでにあるけどね。

特に情報系の分野は実装力で評価されることが多いし…。実装力は数値計算得意とかそういうのとは全く別のスキルだよね。プログラミングマニア的な要素が必要。

分野にもよるけどね。情報システム計算機自体を専門にして、ハードとかインターフェイスに近い部分をやってたらどうしてもそうなるけど、信号とか画像とか音声とか言語とかの処理のコア部分を作るときにはコーディング能力よりも紙と鉛筆能力の方が大事・・・、だと思いたい。

どうもパソコンマニア的気質は中高生のときに飽きてしまって、「PCパーツの種類とか流行言語とか覚えたってどうせ10年したらすぐに廃れるんだから」という感じで、余りはてな民的に新しいネタ追いかけたくないんだよね。クロージャって何ですか、ああそうですね閉包ですね、集合の内部と境界の和集合ですねっていう感性の持ち主なので。正直、コーディングは単純作業と認識してます。

2010-06-28

http://anond.hatelabo.jp/20100628012806

まぁネタで訊いたんですけどね…。

信号処理とか制御とか機械学習物理からネタ引っ張ってきてたり

これも実際問題(特に企業での採用とかでは)情報系の独壇場って感じだね。

金融のがまだマシ。

"Pattern Recognition and Machine Learning"のビショップ物理出身だけど、あの年代は確かにそういう色が強かったのかもしれない。

金融はまだ金融専攻がほぼ無い状態だから物理数学出身者が入り込む隙が多い気がする。

工学としては例外的に高度な(物理の道具としてはまあ普通の)数学を使ったりするので

全然高度じゃないです><

情報幾何とかは(無駄に)高度だけど、実用性はあんまないオナニー(しかも日本でしか流行ってない)感があるし。

CVレイトレーシングで経路積分使って云々というのもあったけど(その人はGoogleに言ってアドセンスかなんか作ってるらしい)、あれもまぁ適当パス空間で平均とるだけって感じがするし…。

画像処理とかでマルコフ確率場の統計物理学的な解析(イジングモデルとかポッツモデルとか出てくるアレ)でレプリカ法とか繰り込み群とか使ってるのも見たことあるけど(結構前の研究だからきっと今はもっと進んでいるはず)、企業で使うことってあるのかなあ。結局性能はあんま変わらないからもっとシンプルモデルでいいよとかなってそう。だったら物理の奴なんかいらねーじゃんみたいな。

あと勿論、理論物理の人は重工業方面でも引き合いが強いだろうしね。

これは…どうなんだろうか?

普通に日本の伝統新卒採用でそういう会社に行く人はいるけど、やってることは工学とかあるいは良くわからない専攻の人と同じな気がする。これはちょっと曖昧だけど。

ただ、採用現場では必ずしも好かれるとは限らない

これはガチだね。

特に情報系の分野は実装力で評価されることが多いし…。実装力は数値計算得意とかそういうのとは全く別のスキルだよね。プログラミングマニア的な要素が必要。

あとはまぁお決まりの暗号分野とかもあるけど、暗号じゃそんなにイス無いだろうし…。

最近はやっぱデータマイニング系に流れてるのかなあ。あれも数理的な素養というよりは職人芸的な色彩が強いけど。

という感じで実際問題厳しいなあと思います。

http://anond.hatelabo.jp/20100628011445

マジレスすると、純粋数学とか理論物理は意外とつぶしが利く。特に理論物理数値計算ができる人はいろんな分野に対応が可能。

信号処理とか制御とか機械学習物理からネタ引っ張ってきてたり、工学としては例外的に高度な(物理の道具としてはまあ普通の)数学を使ったりするので、理論物理の人は実はポテンシャルが高いよ。

あと勿論、理論物理の人は重工業方面でも引き合いが強いだろうしね。

ただ、採用現場では必ずしも好かれるとは限らないのでコネがないと厳しいかもね。とはいっても、純粋数学理論物理を本気でやれるレベル大学なら他学部の知人なんかで探せば見つかるだろうけど。

2010-02-24

http://anond.hatelabo.jp/20100224021637

人によってそれぞれ。

言語そのものにワクワクする人

ハードを動かす事にワクワクする人

ソフトを動かす事にワクワクする人

プラットフォームに興味はないが、作りたいものがある人

・面倒な数値計算ミスなく短時間で終わらせる必要に迫られている人

・同じ作業を繰り返し行うことに疲れていて、誰も問題視していない事に憤りを感じ、改善する意欲のある人

現在流通構造に不満を抱き、それを革命してやろうと画策する人

構造化、抽象化などが好きで、オブジェクト指向こそ至高であり、それらを使ってソリューションを提供するのが好きな人

上記のいずれかに該当する人は、勝手にもりもりと弄ります。

そのどれにも該当しない場合、一度胸に手を当てて、「何故今プログラムをやるのか」を問う必要があるでしょう。

一般的には、上から4つくらいが順当な理由ではないでしょうか。

「作りたいもの」はそれこそ多岐にわたりますね。

身近なところでは、掲示板投票フォームでも良い。

作った後に公開して後悔、そしてそれを改善していく、なんてフローが「練習してライブして」にあたりますかね。


練習で必要なのは、「やりたい事をこんぴゅーたにやらせる時、どの様なアプローチを取るか」きちんと設計することです。

そこができれば、後は設計を実装するのみとなりますが、ここで初めて言語の出番になります。

言語は、あくまでも設計を実装するための「手段」なので、「目的」にしないほうが良いと思われます。

2009-11-28

http://anond.hatelabo.jp/20091128090504

両氏の専門は例の長崎大学格安GPUグリッドでいける内容

下記2件のソースくれ。

例のGPUグリッドってGRAPEモドキじゃねえの?他に何ができるの?

金田さんの専門って何?大規模数値計算全般じゃねえの?

2009-08-13

http://anond.hatelabo.jp/20090805183833

26歳から職業プログラマーやってるが。

前職は文系職だし、学生時代にCとかFortranゴミみたいな設計(ていうか設計ってなに?食えるの?みたいなレベル)の数値計算プログラムを書いたことがあったくらい。

プログラムを初めて書いたのは大学入ってからだなwもちろんハマって色々作ったりはしなかったww

つーかぶっちゃけhttp://anond.hatelabo.jp/20090807175205この増田

俺にできてお前にできない理由が全くわからん。

2009-05-01

数値誤差の泥沼

ああああああ

精度保証付き数値計算は何かよくわかんねーし

問題が分離できない!

みんなどーやってんだよー

これ学生研究じゃなくて仕事なんだよー

あああああああ

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