ラベル Math の投稿を表示しています。 すべての投稿を表示
ラベル Math の投稿を表示しています。 すべての投稿を表示

土曜日, 6月 29, 2019

Python: 指数分布のグラフを書く

Python の使いやすさはただごとじゃありません。

ユーザーの層が厚いのはユーザーが多いから。人気が人気を呼ぶパターンですね。ドキュメント類の豊富さ(本家じゃなくても)が質を変えているわけです。民主主義ですよこれは。

使いにくさなんてユーザーが変えていくもんです。多くの人たちが使っていればですね。意見を取り入れる柔軟さはピカイチです。もとからかなり特色ある言語ですが、ライブラリの豊富さでも群を抜いてます。

グラフを書くのもお手の物です。使い慣れた言語で思いのままってのは数式が近く感じられていいもんです。そのままシェルからグラフが書けます。

以下のスクリプトは指数分布を描きます。




日曜日, 1月 27, 2019

Scala: BigInt で階乗を計算する

Java の BigInteger の扱いは面倒です。すべての演算が関数形式で引数を指定しなければならないのでとても不便です。オペレータ演算子を定義できない安全志向 Java の弱みでもあります。

Scala ならその心配はありません。何の躊躇もなく演算子を書き換えれば独自の世界が展開します。BigInt の扱いも自然です。オペレータ演算子をほぼすべてそのまま使えます。いわゆる中置記法(infix)で書けるので読みやすくデバッグしやすいコードが書けます。

Java: BigInteger で階乗を計算する では Java の BigInteger で階乗を計算するコードを載せました。Scala で書いたのがこれです。これだとなんか特記すべきこともないです。



比べてみれば利点は明らかです。言語設定がプログラミングの効率をどこまで上げるのか、現場を顧みない世迷いごとは「プログラミング言語はどれもC言語が基本だから(!)、基本構造が同じなら書けることは同じ」これで論破できますね。

水曜日, 6月 29, 2016

C/C++ GMP ライブラリを使う(Java でいう BigInteger です)

とても大きな数を扱うとき、Java では BigInteger などを使うと制限なしです。しかも標準装備。

ここで扱いたい大きな数というのは、ほかでもないメルセンヌ素数です。とんでもなく大きな数となるのでどうしてもライブラリを使う必要があります。

ほかでもないというのは、メルセンヌ素数という形であれば素数であるかの判定が容易という理由から、発見された最大の素数はメルセンヌ素数であるからです。

このプログラムをCで実装しようとすると、GMPなど外部ライブラリが必要となります。GMPを使ったソースです。

このプログラムもC++を使うと分かりやすくなります。初期化、後始末などコンストラクタ、デストラクタで書けるからです。


C#だとこんな感じでしょうか。

Flask の Blueprint のテンプレート問題

  Flask の Blueprint は、ルート、静的ファイル、テンプレートをまとめて管理できます。しかし、テンプレートが指定できません。 ここでは、Blueprint の template_folder の問題点と回避策を説明します。 Blueprint のテンプレート問題...