投稿

11月, 2018の投稿を表示しています

julia1.0.x での for ループと(グローバル) 変数の使い方。

julia が 1.0 になったとたんに、for ループ内の変数の扱い様式に変更が加えられました。julia 0.6 以前のプログラムが動かない結構な理由になっていると考えます。簡単に言うと、"global" という宣言を付けるべき所に付けるということで、かなり解決しそうです。自分では、漠然と関数内部の変数の扱いに似ているとは思っていましたが、for ループが動く時と、動かない時の区別を理解できていませんでした。 もう少し詳しく知るには、グローバル変数とローカル変数について勉強するのが良いようです。 今さらながら、@yatra9 さんの Julia 1.0の注意点 を良く読んでみたら理解できました。 変数のスコープ Scope of Variables という事項の勉強が必要だったようです。将来的には、REPL 内では、特赦の対象となる可能性がある項目のようです。for ループ内で動くか動かないかには、グローバル変数と、ローカル変数というものの理解が必要なようです。ちなみに、julia のコードの高速化のほぼ筆頭に挙げられるのが、グローバル変数を避けるということです。( Juliaのコードを更に高速化する方法 ) 変数のスコープ Scope of Variables は、それほど英語に精通していなくても、例の部分は理解できるが多いと考えますので、目を通すと理解が深まります。また、@yatra9 さんの Julia 1.0の注意点 には、なんと6項目にまとめていただいています。ここでは、もう少し、手前から説明をしてみます。さらに、for ループと関数化の速度比較も行ってみます。 さて、グローバル変数は、julia を落すか、書き替えるまで、ずっと値を保持します。ローカル変数は、for ... end の中や、function ... end の中だけで働く変数です。普通に、"a=0" と REPL に入力すると、a は 0 という値を、書き替えられない限りずっと格納しています。つまり、a はグローバル変数として扱われています。a = "hoge" としたら、a はグローバル変数で、"hoge" という値を格納しています。このグローバル変数 a をそのまま for ループ内で...

何故だか brew upgrade で入った python3.7.1 の pip が動かなくなるの対処

何故だか brew upgrade で入った python3.7.1 の pip が動かなりました。 pipコマンドが壊れた件 の通りにしたら治りました。 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py python3 get-pip.py めでたしめでたし。