niconegoto Blog

niconegoto's journal

Go commit 流し読み(2017/3/12)

Goでその日Mergeされたもののうち、ある程度大きいものを取り上げていきます。 tenntennさんの影響でGoにcontributeして以降せっかく毎日commitを追っているから、ということでy_yagiさんをリスペクトして始めましたが、毎日続けるのはつらそうなので気の向いたときに記事にしようと思います。(要望があればがんばるかもしれません)

cmd/vet: eliminate “might be too small for shift” warnings

Issueに対する修正です。

func f(i int) int {
  return i >> 32
}

以前までは上記のコードにあるようなマシン依存型である int , uint , uintptr に対して、vetが might be too small for shift という警告を出してしまっていました。 この変更によって、GOARCH 環境変数が設定されている場合はそこから int ,uint ,uintptr のビットサイズを決定し、それ以外の場合にはホスト固有のサイズを使用するようになりました。

strconv: fix performance regression in integer formatting on 32bit platforms

32ビットプラットフォームでの整数フォーマットのパフォーマンス改善をしています。この変更は64bitプラットフォームにはほとんど影響がありません。 strconv: use % instead of computing the remainder from the quotientに関連したCLです。 上記のCLでは、1つのDIV命令の場合にコンパイラ/ を順番に認識すると想定していました。 しかし、別々のランタイムの関数を使用して除算とモジュロを計算している32bitプラットフォーム上の64bitオペランドでは順番に認識されるとは限りません。 そのため、上記のCLで消されてしまった32bitプラットフォームで有益な最適化を復元しています。

ベンチマークは以下の通りです。

386

name old time/op new time/op delta
FormatInt-2 6.06µs ± 0% 6.02µs ± 0% -0.70% | (p=0.000 n=20+20)
AppendInt-2 4.98µs ± 0% 4.98µs ± 0% ~ |(p=0.747 n=18+18)
FormatUint-2 1.93µs ± 0% 1.85µs ± 0% -4.19%| (p=0.000 n=20+20)
AppendUint-2 1.71µs ± 0% 1.64µs ± 0% -3.68%| (p=0.000 n=20+20)

amd64

name old time/op new time/op delta
FormatInt-2 2.41µs ± 0% 2.41µs ± 0% -0.09% | (p=0.010 n=18+18)
AppendInt-2 1.77µs ± 0% 1.77µs ± 0% +0.08% | (p=0.000 n=18+18)
FormatUint-2 653ns ± 1% 653ns ± 0% ~ |(p=0.178 n=20+20)
AppendUint-2 514ns ± 0% 513ns ± 0% -0.13% | (p=0.000 n=20+17)

無償の愛は果たして存在するのか?〜少し学問的に考えてみた〜

はじめに

大学の友達と食堂で話していたら恋愛の話しになり、気づいたら「無償の愛が存在するのかどうか」という話になっていた。 20分程度の議論ではあったが、そのまま忘れ去ってしまうのももったいないので備忘録程度に残しておく。

この議論には絶対的結論があるわけではないので、反論などあればぜひ(建設的な)議論をしたいです。

無条件に人を愛するとは

f:id:niconegoto:20170112223915j:plain 今回は無償の愛を「相手の存在全てを愛すること」「一切見返りを求めずに愛すること」として、様々な観点で無償の愛について見ていった。

アインシュタイン

突然だが、僕がアインシュタインを愛していたとする。 「アインシュタイン」という文字列は名前なのだが、この「アインシュタイン」という固有名詞は

などといったその人を表す言葉の集まりと同等であると考えられていた。 ただ、この「男性」という特徴が「女性」になったからといって「アインシュタイン」は「アインシュタイン」たる存在であることには変わりない。 よって、「アインシュタイン」を「アインシュタイン」たらしめる独自性のようなものは、それらの特徴の否定の契機を孕んでいるといえる。 つまり「アインシュタイン」という存在はは彼の持つ特徴を表現している一方で、むしろその否定の契機をも含むものである。

そのため、僕が「アインシュタイン」を無条件に愛していると言った時、それは彼が女性であろうと、天才物理学者でなかろうと、その存在を愛していなければならない。 それが人を愛すると言うことである。

僕にはとうていそんなことはできそうにない。

贈与論

次に、贈与論の立場から話しをすることになった。 愛も「愛してるよ。」「私も愛してるわ。」という贈与の関係だと言える。

無条件の愛というものは見返りを求めない愛、とも言い換えられるので、もし見返りを求めて「愛しているよ。」と言っているのであればそれは無償の愛とは言えない。 ただ、残念なことに贈与の関係において、最初の一方的な贈与は存在しないとする考えがある。 どういうことかというと、どちらかが最初に告白をして「愛してるよ。」と言い始めたとしても、それは見返りを求めない贈与ではないということである。なぜなら、告白以前に相手が「自分に気があるかも」と思わせるような行動をして気付かぬうちに贈与をしていたり、自分の中に相手がつきあいたいなと思えるような魅力を持っていてそれを見返りとして期待していたりするからである。つまり、告白という行為は少なからず以前に贈与を得ていたり、その後の贈与を期待するものなのである。

マザーテレサ

無償の愛、といえばこのマザーテレサを思い浮かべる方も多いだろう。 wikipediaにも

テレサは授賞式の際にも特別な正装はせず、普段と同じく白い木綿のサリーと皮製のサンダルという粗末な身なりで出席した。賞金19万2000ドルは全てカルカッタの貧しい人々のために使われることになった上、授賞式の場においては、「私のための晩餐会は不要です。その費用はどうか貧しい人々のためにお使い下さい」とも要望した。賞金を受け取った時、「このお金でいくつのパンが買えますか」と言ったという。

と書いてあり、ノーベル賞にも選ばれていることからも一見無償の愛を体現しているかに思える。 ただ、残念なことにテレサの行動の背景には宗教的「神」の存在があり、カトリック信者であるため、神のため、という意図が働いている。そのため完全な「無償の愛」であるとは言いがたいのである。

そのほか、親の愛も無償の愛にちかいのではないかという声もあったが、親も「子供をしっかり育てている親である」という社会的ラベルの為の愛ではないかという結論に達し、無償の愛ではないという判断となった。(実際僕も親に「自分の子供自慢の為に教育費をかけてあげている」「その分良い大学、良い会社にいってくれ」といった事を言われたことがある。正直な親である。)

結論、結局人間は 「愛している自分を愛するため」か「愛されているので愛す」という形でしか愛することができないのではないか という結論に達した。

まあこんな感じで我々は「この世界に無償の愛は存在しない」という悲しい結論に達し、とぼとぼと試験勉強に向かったのであった。

(10分くらいで書いたので誤植や論理の飛躍があるかもしれませんがその辺りはご了承ください。)