種類 | 例 | 説明 |
---|---|---|
文書作成 ワープロ | deepl | |
表計算 | 数値を計算し、表や グラフなどの図表を作成するアプリです。 平均、 標準偏差などの統計量も計算できます。 データ の件数は 30件程度までが適切です。 それ以上の件数の場合、データベースアプリと連携して 抽出した データ を使う方が効率的です。 | |
🔷 プレゼンテーション |
|
|
グラフィックス |
|
図形、 地図や 写真などの 画像の作成や編集をします。 |
CAD | Solid works * | 図面 |
Autodesk AutoCAD Web | 図面 | |
Webページ作成 | HTML editor | |
データベース | Microsoft Access Microsoft SQL Server | |
動画編集 | ||
プログラミング | google colab | |
ビジネス ・グループウェア |
|
アプリ には、 オペレーティングシステム (OS) 上で動く、インストールアプリと、 Webブラウザ 上で動く Webアプリがあります 3 ) 。
種類 | 分類 | 言語 | 特徴 | |
---|---|---|---|---|
インタプリタ | Webアプリ | JavaScript | Webブラウザ上で動作(クライアントサイド) | |
vb script(vbs,vba,asp) 4 ) | 1964 開発 キーボードとディスプレイが必要 | |||
AI Webアプリ |
|
ビッグデータ データサイエンス * 、 マテリアルズインフォマティクス *、AI | ||
教育 | Scratch | ビジュアルプログラミング | ||
コンパイル | OS | C 6 ) | ポインタ、構造体 | 汎用 | 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*と続きます。 *
型 | 数 | プログラミング言語 | |
---|---|---|---|
整数 | 整数 | Basic (Int), C(int), | |
単精度浮動小数点 | 実数 | Basic (Single), C(float), | |
倍精度浮動小数点 | 実数 | Basic (Double), C(double), Python (float) | |
複素数 | Python (complex) |
測定値などを表す数字のうちで、位取りを示すだけの0を除いた、意味のある数字を有効数字と言う。 たとえば、1.234g±0.012gという測定結果があり、これを 不確かさ を無視して1つの値y=1.234gとして表すことを考える。 不確かさ を考慮した値はおおむね1.222g~1.246gの範囲にあると考えられる。 7 )
このことは、測定値に限ったことではありません。 たとえば、円周率という数には、確かな値がありますが、数字で表現しようすれば、 3.14あるいは3.14159という具合に表現しなければなりません。 やはり有効数字が存在するのです。
さらにこれは10進数に限ったことではありません。 コンピュータの内部では、2進数で表現されることが多くあります。 その表現形式もさまざまです。 単精度浮動小数点や倍精度浮動小数点といった形式があるのは、そのためです 8 ) 。
倍精度浮動小数点は、実数を64ビットで表現します。 実数は無限集合です。それに対して64ビットの表現は264の有限集合です。 実数とデジタル数値を1:1対応させることはできません。 必ず量子化誤差が入ります。
言語 | 例 | 説明 |
---|---|---|
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 ():で宣言。呼び出す前にボディが記述されている必要があります。 関数の記述は、インデントされている必要があります。 |
応用例 | |||
---|---|---|---|
無作為抽出 |
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ライブラリは、まだあまり普及していない。 *
# ■■■ ★星形 ■■■ import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches import math from google.colab import files xy = [ (math.sin(p), math.cos(p)) for p in \ np.arange(start = 0, stop = 4 * math.pi, step = 4 * math.pi/5)] fig, ax = plt.subplots(figsize=(5.8, 4.2)) plt.axis("off") ax.set_aspect('equal');ax.set_xlim([-1,1]);ax.set_ylim([-1,1]) ax.add_patch(patches.Polygon(xy, \ closed=True,facecolor="y",edgecolor="none")) plt.savefig('star.SVG');files.download("star.SVG") plt.savefig('star.PNG');files.download("star.PNG") plt.show() # ■■■ ★星形 ■■■
# ■■■ ♥ハート形 ■■■ import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches import math from google.colab import files xy = [(math.cos(p), math.sin(p)+math.sqrt(math.fabs(math.cos(p)))) \ for p in np.arange(start = 0, stop = 2 * math.pi, step = 0.02)] fig, ax = plt.subplots(figsize=(5.8, 4.2)) plt.axis("off") ax.set_aspect('equal');ax.set_xlim([-1,1]);ax.set_ylim([-1,2]) ax.add_patch(patches.Polygon(xy, \ closed=True,facecolor="r",edgecolor="m")) plt.savefig('heart.SVG');files.download("heart.SVG") plt.savefig('heart.PNG');files.download("heart.PNG") plt.show() # ■■■ ♥ハート形 ■■■
# ■■■ コッホ曲線 Koch curve ■■■ import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches import math import sys from google.colab import files sys.setrecursionlimit(100) #関数定義 def func(xy,p1,p2,i): if i < 0: xy.append(p1) xy.append(p2) return else: x1 = p1[0]; y1 = p1[1] x2 = p2[0]; y2 = p2[1] x3 = (x1 * 2 + x2) / 3; y3 = (y1 * 2 + y2) / 3 x4 = (x1 + x2 * 2) / 3; y4 = (y1 + y2 * 2) / 3 xx1 = x4 - x3 yy1 = y4 - y3 xx2 = 0.5*xx1 + math.sqrt(3)/2* yy1 yy2 = -math.sqrt(3)/2*xx1 + 1/2* yy1 x5 = xx2 + x3; y5 = yy2 + y3 xy.append(p1) func(xy, p1, [x3,y3], i - 1) func(xy,[x3,y3], [x5, y5], i - 1) func(xy,[x5,y5], [x4, y4], i - 1) func(xy,[x4,y4], p2, i - 1) xy.append(p2) return xy = [] n=4 func(xy,[0,0],[1,0],n) func(xy,[1,0],[0.5,math.sqrt(3)/2],n) func(xy,[0.5,math.sqrt(3)/2],[0,0],n) fig, ax = plt.subplots(figsize=(5.8, 4.2)) plt.axis("off") ax.set_aspect('equal');ax.set_xlim([0,1]);ax.set_ylim([-0.5,1]) ax.add_patch(patches.Polygon(xy, closed=True,facecolor="c",edgecolor="b",lw=0.1)) plt.savefig('Koch.SVG');files.download("Koch.SVG") plt.savefig('Koch.PNG');files.download("Koch.PNG") plt.show() # ■■■ コッホ曲線 Koch curve ■■■
寿命時間の 確率分布として ワイブル分布が知られています 12 ) 。
散布図を描くには、値域と定義域のそれぞれの集合を準備します。 pythonで、たとえば、0<t<3の定義域のそれぞれの値tiを 設定するには、
t = np.arange(0, 3, 0.1)
とすれば、定義域が0から3、公差0.1の数列が集合として、リスト型の変数に格納できます。
pythonは、このような数学的な概念が、文法として言語に組み込まれているので、 Basic 、 C、 JavaScriptのように forループで繰り返し処理を書く必要がなく、すっきりとしたエレガントなコードを書くことができます。