ifortさんのブログ -5ページ目

ifortさんのブログ

在米10+年のifortです。ハイパフォーマンスコンピューティングとか計算機科学とかFortranとか、そういった類のことをアメリカから発信していこうかと思っています。

ちょっと前にもブログに書いたBoston Dynamics社がGoogleから売却される模様。

Googleがボストン・ダイナミクスを売却へ、売却先にはトヨタ・Amazonが浮上
http://gigazine.net/news/20160318-google-to-sell-boston-dynamics/

主な理由は数年での収益が見込めないとの事ですが、Boston Dynamics陣営がGoogleの意向に沿わなかった、かつ、 Google内でロボットをやるぞ!というリーダーシップを取れる人が辞めてしまったからってところかな。

新しい売却先にはトヨタの名前も挙がっているけど、果たしてどうなることやら。

BD社にはいつまでも面白ロボット動画をアップし続けて欲しいです。
ということで、今回はLearn Python The HardwayのExercise11, 12を読んでみる。

おや..

このシリーズ始めて、初めてこれ便利そうって思えたかも。



今までprinting printing printingと出力ばかりだったけど、Exercise 11&12は入力について。raw_input関数は便利だね。

さらにpydocコマンド。Pythononlineマニュアルなんだけど、moduleの中にどんな関数があるかリストしてくれる。

raw_input()とpydoc、覚えておこう。



久々に後藤氏の記事が出てないかな~とPCWatchをチェックしたら、GPUの記事発見!

2016年はGPUにとって4年振りのアーキテクチャ刷新の年
http://pc.watch.impress.co.jp/docs/column/kaigai/20160314_748041.html


それにしも後藤氏の知識と情報収集能力は凄いね~。GPUは4年間も28nmのプロセス技術足踏みしてたけど、今年はそれが16nm/14nmに大幅移行する年らしい。

14nmとったら140オングストローム。ユニットセルも3個くらい。もう古典分子動力学方で十分シミュレーションできるサイズですな。まあ古典分子動力学ではシミュレーションで調べられるのが機械的特性くらいだけど。

果たしてどこまでプロセス技術微細化は可能なのか、そしてその先にあるものは...







久しぶりにLearn Python The Hard Wayを読んでみる。

本当は1日1Exerciseのつもりだったけど、久しぶりだからExercise7-10まで一気に読む。
まあこんな日があってもいいかなと。どうせ全部print文についてだし。

それにしてもこのサイトの製作者猫が好きなんだろうか。Exercise10に不意に出てきた猫に、そんな事を考えてみる。

ちなみにスラッシュってback(\)とforward(/)ってありますよね。あれどっちがどっちかよく混乱してたんだけど、最近簡単な覚え方を最近見つけた。

あのスラッシュの棒を立っている人間に見立てて、右に傾いている(=前向きに傾斜しているのが) forward、逆に後ろ向きに傾斜しているのがbackwardとの事。


なるほどね~


\|/


ひょんな事から始めたこのifortさんのブログ。当初は毎日書くぞ!って張り切ってたんだけど、さすがに難しい。特にブログ内容がHPCやコンピュータ関係に限定しているので「今日何食べた?」みたいに毎日は書けない..


ということで、唐突だけど今回から「今日学んだ事」シリーズをはじめようかな。
記念すべき第一回目は、C++言語の仕様の一つlvalueとrvalueについて。

参考にしたのはこのPDF.

“New” Value Terminology by Bjarne Stroustrup
http://www.stroustrup.com/terminology.pdf


ぶっちゃけて言うと、lvalueはイコールサインの左側にある変数に格納されている値、rvalueは右側にある値。
lvalueは実体がある、変数名があってポインタで指定できて、

int i = 10

のiみたいなやつ。rvalueは実体がない、この例でいうと10になる。他の例として、渡された引数を表示する関数MyPrint()があったとして、

std::string str="hello world";
MyPrint(str);



MyPrint("hello world");

の違い、みたいな感じ。変数のスコープ外に出るまでいつまでも生きてる、でもrvalueは格納する変数がないのですぐ消えて無くなる、みたいな感じ。

このlvalueとrvalueってのはC++特有の概念で無く、もっと昔からいろいろな人たちが漠然と使っていたものらしい。それをはっきり定義しようとBjarneさんたちは考えに考え抜いた。その考え抜いた末にたどり着いたのが、次の二つの特徴。全ての変数は、

- アイデンティティを持つか否か。(アドレス、ポインターを持つか。二つ以上のコピーがあった時、ユーザーはそれらを同じものと判断できるか)

- そこから値を動かせるか否か。(コピーしようとした値が妥当な中間状態に存在できるか)

によって分類できる。この二つの特徴を使いBjarneさん達は、単純なlvalue、rvalueに加えて、新たに三つの新しい変数タイプを提唱した。合計五つの変数タイプは以下の通り。

lvalue
glvalue
xvalue
rvalue
prvalue


...
...



スライム2匹に攻撃を加えたら「スライムは5匹に分裂した!」みたいな印象...

とりあえず今回はこの辺にしておこう。次回はもっと簡単な内容がいいな。