ここ最近、コーディング(プログラミング)に嵌っています。
Recently, I've been into coding (programming).
色々検討した結果、ここ2月ほど検討してきた方法が、間違っていることが分かってきて、現在、絶賛やりなおし中です(丸々無駄という訳でもなかったのですが)。
After much deliberation, I've come to realize that the method I've been considering for the past two months is wrong, and I'm currently in the process of redoing it (though it wasn't a total waste).
「pythonで遺伝的アルゴリズム(GA)を実装して巡回セールスマン問題(TSP)をとく」の交叉(部分的交叉)のアルゴリズムをgolangで書き直してみた
現在、トライアル中のモノは「予測できない変化をリアルタイムで組み込んで、動的に変化しつづける推論エンジン」でして これが、結構難しい。
The one we I currently trialing is an inference engine that incorporates unpredictable changes in real time and keeps changing dynamically.
状況を固定させた状態での研究は腐るほどあるのですが、実際の環境を組み込みながら動くエンジンの研究は、ほとんどありません。
There is a plethora of research that has been done with fixed situations, but there is very little research on engines that work while incorporating real environments.
まあ、これは、実際にコーディングをやってみれば分かります。
Well, you can find this out by actually doing some coding.
『現状の計画を大きく変更させないようにして、新しい情報を組みつつ、行動を変える』という、人間が普通にやっていることを、プログラムに組み込むのことは、結構難しいのです。
It is quite difficult to incorporate into a program what we normally do, which is to "change our behavior while incorporating new information without significantly altering our current plans.
それでも、私が踏ん張っているのは、『多分、大掛かりなプログラムとしては、これが現役(というか人生)ラストコード(プログラミング)になるだろう』という予感があるからです。
Still, I'm holding on because I have a feeling that this will probably be the last code (programming) I'll ever use in my life as a large-scale program.
-----
私は、テレビやスマホのゲームを楽しめない性格です。
I am a person who does not enjoy playing games on TV or on my phone.
しかし、ゲームに嵌っている人の状況と、コーディングに嵌っている私の状況は、良く似ているかもしれないなぁ、と思っています。
However, I think that the situation of people who are addicted to games and my situation of being addicted to coding may be very similar.
- 興奮状態が続き、眠れなくなる。
- The excitement lasts and makes it difficult to sleep.
- 目を瞑っても、アルゴリズムが頭の中を走り回る
- Even when I close my eyes, algorithms run through my head.
- 夢の中でバグに気がつき、その後、寝付けなくなる
- Noticing a bug in a dream and then not being able to sleep
昔は、この時点で「大量のアルコールを投入して、強制的に睡眠に入る/維持する」ということをやっていたのですが ―― その結果が、アルコール依存症の予備軍(いや、正規軍か?)になってしまいました。
In the past, I used to "throw in a lot of alcohol" at this point to force/maintain sleep -- and the result was a reserve army of alcoholics (or is it a regular army?).
今は、アルコールではなく、精神安定剤に、スイッチしただけですが。
Now, I just switched to tranquilizers instead of alcohol.
それでも、毎日のアルコールの鯨飲よりは、処方通りの安定剤の方が、はるかに健康的だとは思います。
Still, I believe that stabilizers as prescribed are much healthier than whaling on alcohol daily.
体調もいいですし。
I'm in good physical condition.
それはさておき。
That's beside the point.
-----
一般的に、プログラムはパラメータの値に実際の値を使わずに、変数にしておいて、外部から入力するようにします。
In general, programs do not use actual values for parameters. The parameter values are kept as variables and are input from outside.
(3.52)^3 + 3.52^2 + 3.52 の値(=543.9174828032)としてプログラムに書き込むのではなく、x^3 + x^2 + x と記述しておけば、プログラムの起動時に、xの値を自由に変えることができて、便利だからです。
Instead of writing it into the program as the value of (3.52)^3 + 3.52^2 + 3.52 (=543.9174828032), it is convenient to write it as x^3 + x^2 + x, so that you can freely change the value of x when the program starts.
直接、値を書き込むコーディングは、「ハードコーディング」と言われて、(実験や検証用途を除けば)やってはならないプログラミングとされています。
Coding that directly writes values is called "hard coding" and is considered programming that should not be done (except for experiments and verification purposes).
"goto"と同じように。
Just like "goto".
Golangでgotoを使ってみた
しかし、興奮状態が納まらず、睡眠障害が発生し、疲労が取れない、この私のコーディングこそが「ハードコーディング」と呼びに相応しい、と思っています。
However, I think that my current coding is worthy of being called "hard coding", as I can't stop the excitement, sleep disturbance, and fatigue.
そして、体力的にも、精神的にも、今が、このような「ハードコーディング」ができるラストチャンスだろうと、腹を括っています。
And I' believe the fact that this will be my last chance to do this kind of "hard coding", both physically and mentally.