SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
言語としてのMathematica
Mathematicaが敬遠される理由とは
Mathematicaは「何か凄いものらしい」
「凄いから使いたい」とは、ならないで、「凄いけれど
使えない」
Mathematicaの欠点を言う人は少ないが、
Mathematicaを使いたいと思う人もまた少ない
"If programming languages were weapons"
(http://bjorn.tipling.com/if-programming-languages-were-weapons)
"Mathematica is a low earth orbit projectile cannon, it could probably do amazing
things if only anyone could actually afford one.(Mathematicaは低軌道からぶちかま
せる砲で、実際に買えるんだったらたぶんもの凄いことができる)"
Python is the “v2/v3” double barrel shotgun, only one barrel will shoot at a time,
and you never end up shooting the recommended one. Also I probably should
have used a line tool to draw that.
"If programming languages were weapons"
(http://bjorn.tipling.com/if-programming-languages-were-weapons)
プログラミング言語Cは、M1ガーランド銃(第二次大戦中の米国軍の主力半自動銃であ
る。銃として初めて部品が規格化されていて、同じM1同士で部品が交換可能である)で
ある。
"If programming languages were weapons"
(http://bjorn.tipling.com/if-programming-languages-were-weapons)
Mathematicaの欠点を言う人は少ない → 例1
Twitterでサンプリングした例、A,B,Cの三人が呟いている(時系列が下から始まっていることに注意)
B 2016年8月24日 もっと多くの人を敵に回す発言をしますが、MathematicaのキモさはLISPのキモさと似ていて(3)、LISPは構文
がなくて構文木しかないからマシに見える気がしている(3-1)だけだと思う
B 2016年8月24日 Mathematicaは世界で最も強力な商用数式処理ソフトであることは間違いないが、プログラミング言語としてみ
た時にどうなのかはまた別の話だし、完全に主観的な話として言語仕様は最悪だ(2)という話をしている
B 2016年8月24日 一応これでも講義でMathematica教えるTAやってる身なので
B 2016年8月24日 広がってるのはそりゃどんな言語だろうとそうだろうし実際Mathematicaは強いわけだが、そもそも今は構文の
はなししてる(2)んですが伝わってますかね
C 2016年8月24日 ん、まあね、ヒドいと思うかも知れない。でもその先に世界が広がってる。
B 2016年8月22日 とはいっても LISP のマクロ構文みたいにされてもそれはそれでまた地獄(3-1)ではある
B 2016年8月22日 項書換えが基本なので変数とメタ変数を区別する必要性があるのはわかるが、それにしたってこの構文はヒド
すぎる(2-2)と思う
B 2016年8月22日 Mathematica、めちゃくちゃ強力だが言語仕様はグロテスクなキメラという感じ(2)なのが残念
B 2016年8月22日 正解:f[x_] := x^2
A 2016年8月22日 In[1]:= f[x] := x^2 In[2]:= f[2] Out[2]= f[2]
なんで 怒怒怒
大坂 洋、Mathematicaはもういらない - 富山大学2010年2月14日http://www3.u-toyama.ac.jp/tulip/ws/ws18osaka01.pdf)
Mathematica の値段は高過ぎ(1)
LISPって何 (Mathematica の起源)(3)
要するにMathematicaはLispにおける(func a b)をfunc[a,b]に置き換えたもの.Lisp の
方言(3).
2 + 2をMathematicaでそのまま書けるのは,みかけだけ(3-1).(シンタックス・シュガー)
C風の言語は,if, else, (),など,「接続詞」,「助 詞」が豊富(2).
Mathematicaは接続詞すら不足で,助詞のない(2)
そのうえ,カッコ([ ])の数があわないと動かない(2-1)
まるはだか Lisp 方言としての Mathematica の短所(3)
ループや条件分岐といった構造がわかりにくい(2-1).
Mathematicaの欠点を言う人は少ない → 例2
大坂 洋、Mathematicaはもういらない - 富山大学2010年2月14日http://www3.u-toyama.ac.jp/tulip/ws/ws18osaka01.pdf)
Lispの利点 をもつ言語 (内部的には関数言語) もある(3-1).
職業プログラマ向きの言語でも,はだかLisp でない関数型言語が大人気(3-1)
理論のプログラム言語はBasicでも可(1)
forとかifとかが,書きにくく,読みづらい.括弧の対応を気にしなくてはらない(2-1).
関数がなんでもできる超高レベル関数(4-1)とプログラマ向きの超低レベル関数(4-2)
ばっかり.
上の二つの複合によって,小さな道具を組合せ るようなプログラミングがやりにくい(4-3).
道具のつながりがわかりにくい(4-3).
高レベルの関数はこまわりのきく道具としては,複雑すぎ(4-1).
Mathematicaの欠点を言う人は少ない → 例2
Mathematicaに対する批判の分類を行なう
批判 (1) 高価な商用プログラムである
高価なプログラムを購入した購入者が、十分な利益を得られな
かったと考えた場合、その不満は、高価だったプログラムに向けら
れる
ある場合には、無料提供されるプログラムとの比較が、批判のた
めに行なわれる
Mathematicaに対する批判の分類を行なう
批判 (2) 言語としての構文に馴染めない
Mathematicaの構文についての批判の分類
(2-1) If 構文などが複雑すぎる
他の言語の構文と比べて複雑であることを、括弧が多いゆえに構
造が分り難い
(2-2) 関数定義に馴染めない 
Mathematicaの関数定義は、他の言語の構文と違い過ぎて理解
し難い
Mathematicaに対する批判の分類を行なう
批判 (3) LISPのように変態である
Mathematicaが理解し難い理由はLISP族の一つであり、LISPの
ように変態であるから → Mathematicaもそれゆえに変態であっ
て批判するのが当然であるという批判
(3-1) LISPでさえユーザに対して譲歩している
LISPを引き合いに出してMathematicaを批判する場合には、
LISPの方がマシであるという主張がされる
Mathematicaに対する批判の分類を行なう
批判 (4) 関数同士の組合せが難しい
Mathematicaの関数を道具としてみた場合に、これらを関連させ
るのに困難を感ずるという批判がなされる
(4-1) 複雑すぎる関数がある
(4-2) 基本的関数を使うのが難しい
(4-3) 関数を組み合わせるのが難しい
批判の分類からMathematicaが使われない理由を検討
する
言語としての構文に馴染めない
Mathematicaの関数定義式や、If 式、loopを表現する式
→
他の多くのプログラミング言語、少なくとも、プログラム言
語を学んだ人が、それまでに慣れ親しんだ構文とは、似
ているけれども違う
批判の分類からMathematicaが使われない理由を検討
する
Mathematicaに構文があるとは主張されていないのに、
構文が異なるという批判はなぜ生じるのか
式が、従来の構文と似ているために、この批判を招いて
いるのではないか
批判の分類からMathematicaが使われない理由を検討
する
従来型言語に慣れた利用者から、Mathematicaがどの
ように見えるか
従来の言語の構文は、機械語を生成するために、人間が計算目
的を記述しやすいように工夫されたものである
このような利用者は、Mathematicaの理解の手掛かりとして、従
来の言語の各種構文を引き合いに出す
批判の分類からMathematicaが使われない理由を検討
する
Mathematicaは、項置き換え言語であるから、その基本
要素は、式とシンボルであって、構文は存在しない
それゆえに、carとcdrを基本要素として構文を持たない
LISPとの類似性を、批判者は見出す
→ LISPのように変態であるという批判
批判の分類からMathematicaが使われない理由を検討
するーその原因
普及過程において、Mathematicaが項置き換え言語であることを強調してきたようには
思われない → Mathematicaの強力さを前面に押し出すことで、それを消極的に示して
きた
If式は、IF構文の取り扱いに、従来言語が苦しんできた歴史を考慮して、Caseや
Conditionを使うことを推奨 →
MathematicaのIf式が、条件式の真と偽だけではなく、真と偽以外も扱うという、決定的
な重要さが、アピールされてない
loop構文ではなく、MapとListを使うべきという主張と同時に、Do式やFor式が、他言語
のloop構文と等しいことも言う → 項置き換え型の特徴を打ち消してきたように見える
批判の分類からMathematicaが使われない理由を検討
するーその原因
Mathematicaにおいて全ては式であるが、同時にシンタックス・シュガー的なものを提供
せざるを得なかった
他言語のプログラミングに親しんだ人に、「似ているが違う」という印象を与えた
Mathematicaにおいて、全ては式であるから、式のネストにより表現されることが、プロ
グラミングの原理である → 従来型言語に慣れた利用者に対して、丸括弧の利用など
が、従来型言語とMathematica言語との橋渡しに有効であることを、積極的にアピール
しているとも思われない
どうしたらMathematicaは使われるようになるか
Mathematicaが、項置き換え型言語であって、その基本要素が、
式とシンボルであることの理解は、Mathematicaのプログラミング
に、必須である
→
Mathematicaのプログラミングを指向する人に、提供すべきなの
は、項置き換えの意味の説明であり、式とシンボルがその構成要
素であることの、丁寧な説明

Contenu connexe

Tendances

Normalization of microarray
Normalization of microarrayNormalization of microarray
Normalization of microarray弘毅 露崎
 
Rのオブジェクト
RのオブジェクトRのオブジェクト
RのオブジェクトItoshi Nikaido
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなしToru Imai
 
計算社会科学とは
計算社会科学とは計算社会科学とは
計算社会科学とはTokyo Tech
 
MIRU2016 チュートリアル
MIRU2016 チュートリアルMIRU2016 チュートリアル
MIRU2016 チュートリアルShunsuke Ono
 
Adversarial Examples 分野の動向 (敵対的サンプル発表資料)
Adversarial Examples 分野の動向(敵対的サンプル発表資料)Adversarial Examples 分野の動向(敵対的サンプル発表資料)
Adversarial Examples 分野の動向 (敵対的サンプル発表資料)cvpaper. challenge
 
チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019cocodrips
 
対話テキストの自動要約
対話テキストの自動要約対話テキストの自動要約
対話テキストの自動要約Masahiro Yamamoto
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習Hidekazu Tanaka
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
(2020.9) 機械学習による化学反応の予測と設計
(2020.9) 機械学習による化学反応の予測と設計(2020.9) 機械学習による化学反応の予測と設計
(2020.9) 機械学習による化学反応の予測と設計Ichigaku Takigawa
 
バンディット問題の理論とアルゴリズムとその実装
バンディット問題の理論とアルゴリズムとその実装バンディット問題の理論とアルゴリズムとその実装
バンディット問題の理論とアルゴリズムとその実装EinosukeIida
 
ゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステムゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステムKazuaki Tanida
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
深層学習 勉強会第5回 ボルツマンマシン
深層学習 勉強会第5回 ボルツマンマシン深層学習 勉強会第5回 ボルツマンマシン
深層学習 勉強会第5回 ボルツマンマシンYuta Sugii
 
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)Deep Learning JP
 
Deeplearning bank marketing dataset
Deeplearning bank marketing datasetDeeplearning bank marketing dataset
Deeplearning bank marketing datasetTellSun
 
オントロジーとは?
オントロジーとは?オントロジーとは?
オントロジーとは?Kouji Kozaki
 

Tendances (20)

Normalization of microarray
Normalization of microarrayNormalization of microarray
Normalization of microarray
 
Rのオブジェクト
RのオブジェクトRのオブジェクト
Rのオブジェクト
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなし
 
計算社会科学とは
計算社会科学とは計算社会科学とは
計算社会科学とは
 
MIRU2016 チュートリアル
MIRU2016 チュートリアルMIRU2016 チュートリアル
MIRU2016 チュートリアル
 
RAPIDS 概要
RAPIDS 概要RAPIDS 概要
RAPIDS 概要
 
Adversarial Examples 分野の動向 (敵対的サンプル発表資料)
Adversarial Examples 分野の動向(敵対的サンプル発表資料)Adversarial Examples 分野の動向(敵対的サンプル発表資料)
Adversarial Examples 分野の動向 (敵対的サンプル発表資料)
 
チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019
 
対話テキストの自動要約
対話テキストの自動要約対話テキストの自動要約
対話テキストの自動要約
 
アンサンブル学習
アンサンブル学習アンサンブル学習
アンサンブル学習
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
(2020.9) 機械学習による化学反応の予測と設計
(2020.9) 機械学習による化学反応の予測と設計(2020.9) 機械学習による化学反応の予測と設計
(2020.9) 機械学習による化学反応の予測と設計
 
バンディット問題の理論とアルゴリズムとその実装
バンディット問題の理論とアルゴリズムとその実装バンディット問題の理論とアルゴリズムとその実装
バンディット問題の理論とアルゴリズムとその実装
 
ゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステムゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステム
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
深層学習 勉強会第5回 ボルツマンマシン
深層学習 勉強会第5回 ボルツマンマシン深層学習 勉強会第5回 ボルツマンマシン
深層学習 勉強会第5回 ボルツマンマシン
 
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)
[DL輪読会]SoftTriple Loss: Deep Metric Learning Without Triplet Sampling (ICCV2019)
 
Deeplearning bank marketing dataset
Deeplearning bank marketing datasetDeeplearning bank marketing dataset
Deeplearning bank marketing dataset
 
オントロジーとは?
オントロジーとは?オントロジーとは?
オントロジーとは?
 

Mathematicaが敬遠される理由とは