種類 | 分類 | 言語 | 特徴 | |
---|---|---|---|---|
インタプリタ | Webアプリ | JavaScript | Webブラウザ上で動作(クライアントサイド) | |
vb script(vbs,vba,asp) 1 ) | 1964 開発 キーボードとディスプレイが必要 | |||
AI Webアプリ |
|
ビッグデータ データサイエンス * 、 マテリアルズインフォマティクス *、AI | ||
教育 | Scratch | ビジュアルプログラミング | ||
コンパイル | OS | C 3 ) | ポインタ、構造体 | 汎用 | VB.NET | オブジェクト指向(多重継承なし) | 汎用 | Kotlin | アンドロイドアプリ向け |
OS | C++ | オブジェクト指向 |
ファイルベースのシステムでは、コンパイラ言語は実行可能なファイルを生成し、 インタプリタ言語はそれを生成しないという違いがありました。 しかし、クラウドベースになって、実行ファイルそのものをクライアントにダウンロードしなくなり、 ジャストインコンパイルで実行結果だけを利用するようになると コンパイラ言語とインタプリタ言語の違いは、あまり本質的でなくなりました。
科学技術用の伝統的な言語としては、FORTRANがあります。 FORTRAN系列の言語としては、BASIC、pythonがあります。 統計用言語としてRがあります。
アルゴリズム重視の伝統的な言語としてALGOLがあります。 ALGOLは、Pascal, C, C++, C#,java, javascript, typescript, Kotlinと進化してきました。 juliaはCに迫る計算速度を誇ります。
サーバーサイドで使われてきたPerlや Ruby もクラウドで利用できるようになってきました。
人工知能で伝統的な言語Lispは、F#、 Schemeもクラウドで利用できるようになってきました。
人気 プログラミング言語 は、java script、そしてpython*と続きます。 *
言語 | 例 | 説明 |
---|---|---|
html | <!-- コメント -- > | |
Python (パイソン) |
# 注釈 |
#(クロスハッチ)を使います。 |
Basic (ベーシック) |
REM 注釈 ' 注釈 |
予約語REMを使うか、'(アポストロフィー)を使います。 |
C |
/* 1行コメント */ /* 複数行に渡る コメント */ | |
javascript |
// 1行コメント /* 1行コメント */ /* 複数行に渡る コメント */ |
ほとんどの言語には、注釈機能があります。 人間がよみやすくするためです。 (可読性)
言語 | 記述例 | 説明 | ||
---|---|---|---|---|
Basic | Dim A As Integer | 整数、浮動小数点、文字列、配列 | ||
C | 厳密な型宣言 | |||
Python |
# タプルの配列を円の座標で初期化 t = np.arange(start = 0, stop = 2 * math.pi, step = 0.05) xy = [ (math.sin(p), math.cos(p)) for p in t] |
複素数、リスト、タプル 配列の初期化の記述が柔軟 |
変数には変数名を付けます。 ほとんどの言語では、予約語があり、予約語は変数名に使えません。
変数名の命名規則にはいろいろありますが、スネークキャストがおすすめです。 *
言語 | 呼び出し | 説明 | |
---|---|---|---|
Basic | Function Sub | 変数のスコープに注意。 | |
C | 関数名は、関数のポインタの変数とほとんど同義。 | ||
Python |
#関数定義 再帰呼び出しに挑戦 def func(xy,x1,y1,x2,y2,i): if i < 0: | def ():で宣言。呼び出す前にボディが記述されている必要があります。 関数の記述は、インデントされている必要があります。 |
名称 | グラフ | 説明 |
---|---|---|
指数関数 |
python
+matplotlib
import numpy as np import math import matplotlib.pyplot as plt xy = [(p, math.exp(p)) for p in \ np.arange(start = - 2, stop = 2, step = 0.1)] z = [list(t) for t in zip(*xy)]; x = z[0]; y = z[1] fig, ax = plt.subplots() ax.plot(x, y) plt.show() |
|
逆ネルンスト | 電池の充放電曲線で現れます。 | |
確率曲線 | ||
正規分布関数 | 確率統計で多用されます。 品質管理 でも大切です。 |
言語 | 形式 | |||
---|---|---|---|---|
java script | canvas | png | インタラクティブ、 アニメーションが可能。 Webアプリ向け。 3次ベジェ曲線 実装。 | |
svg | svg |
|
htmlに埋め込み可能。 ベクトルグラフィックスに関する機能が豊富。 3次ベジェ曲線 実装。 viewBox=を設定することで、ワールド座標系でグラフィクス可能。 一旦、svgファイルにしてpptにインポートすれば、pngに変換可能。 asp(Basic、サーバーサイド)で記述することも可能。 | |
python | matplotlib | png |
ワールド座標系でグラフィクス可能。ビュー座標系 / スクリーン座標系への煩わしい変換から解放されます。 ベジェ曲線とか、コーディングが必要かも。 縦軸、横軸にTeXが使えるので超便利。 |
|
svg |
matplotlibから
svgに出力するには、
plt.savefig('fig1.SVG') files.download("fig1.SVG") plt.show()のようにする。 * |
|||
PIL | png | Colaboからでは、img.show()ではなく、IPython.display のdisplay(img)を使うなど、ちょっと変則的。 | ||
OpenCV | png | グラフィックスというより画像処理向け。 Colaboからは、 matplotlib を使った出力になるので、ベクトルグラフィックスならば、matplotlib.patchesを使うのとあまり変わらないかも。 |
先日作成した https://a.yamagata-u.ac.jp/py/regression.py はCGIでpythonがうごいてますので,リクエストが 来るたびにpythonが起動します.リソースを消費するので CGIではなくDjnagoみたいなフレームワークをつかう 方向のようです.pythonのcgiパッケージは ver3.11(現行版)で非推奨,ver3.13で削除とのこと. 現在の設定だと,Djangoは16プロセスまで起動されます. Edgeで https://a.yamagata-u.ac.jp/dj/regression/ を表示させ,F5を連打してみてください.30回とか 添付の図みたいなのが出ると思います. うまい書き方があるんだろうなとは思います. (IISの再起動が必要かもしれません) まあCGIで連打されるとサーバーが落ちると思うので どっちもどっちだと思いますが.
応用例 | |||
---|---|---|---|
無作為抽出 |
extracted = random.sample(data, 10) |
||
平均 |
average = statistics.mean(data) average = np.mean(data) |
||
標準偏差 |
std = statistics.stdev(data) std = np.std(data) std = np.std(data, ddof=1) # 標本標準偏差 |
||
散布図 * |
import numpy as np import matplotlib.pyplot as plt # 乱数を生成 x = np.random.rand(100) y = np.random.rand(100) # 散布図を描画 plt.scatter(x, y) |
||
ヒストグラム |
import matplotlib.pyplot as plt ax1 = fig.add_subplot(211) ax1.hist(x1, bins=bins) |
||
画像 (matplotlib) の例: |
|
Phthon (パイソン)は、多様なデータ構造が組み込まれているので、データ処理しやすい 言語です。 Anaconda(アナコンダ)や、 Google Colaboratoy などの開発環境があります。 Phthonには、数値計算ライブラリNumPyがあります。 NumPyは、CやふFORTRANで、実装されていて、高速で実行できます。 ほかにも、Matplotlib(グラフ描画ライブラリ) pandas(データ分析ライブラリ) TensorFlow(機械学習ライブラリ) OpenCV(画像処理ライブラリ) など便利なライブラリが多数あります。
pymatgenライブラリは、まだあまり普及していない。 *
Matplotlib では、 色や 数式の表現も豊富です。
言語 | 形式 | |||
---|---|---|---|---|
java script | canvas | png | インタラクティブ、 アニメーションが可能。 Webアプリ向け。 3次ベジェ曲線 実装。 | |
svg | svg |
|
htmlに埋め込み可能。 ベクトルグラフィックスに関する機能が豊富。 3次ベジェ曲線 実装。 viewBox=を設定することで、ワールド座標系でグラフィクス可能。 一旦、svgファイルにしてpptにインポートすれば、pngに変換可能。 asp(Basic、サーバーサイド)で記述することも可能。 | |
python | matplotlib | png |
ワールド座標系でグラフィクス可能。ビュー座標系 / スクリーン座標系への煩わしい変換から解放されます。 ベジェ曲線とか、コーディングが必要かも。 縦軸、横軸にTeXが使えるので超便利。 |
|
svg |
matplotlibから
svgに出力するには、
plt.savefig('fig1.SVG') files.download("fig1.SVG") plt.show()のようにする。 * |
|||
PIL | png | Colaboからでは、img.show()ではなく、IPython.display のdisplay(img)を使うなど、ちょっと変則的。 | ||
OpenCV | png | グラフィックスというより画像処理向け。 Colaboからは、 matplotlib を使った出力になるので、ベクトルグラフィックスならば、matplotlib.patchesを使うのとあまり変わらないかも。 |
電池の起電力は、充電率(State of charge、SOC) 7 ) によって変化します。 電池の過電圧も、充電率で変化します。また過電圧は、放電か、充電か、その方向でも変化します。
組電池 の電圧も、同様です。
python では、複素数が使えるので、短いプログラムでコールコールプロットのシミュレーションができます。
2024年1月21日 松木健三名誉教授がご逝去されました。