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

GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) 智啓 出川
 
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナー
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナーPFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナー
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナーMatlantis
 
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendationssuser3e398d
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリNVIDIA Japan
 
サッカーの(行動系列予測に基づく)チーム守備評価
サッカーの(行動系列予測に基づく)チーム守備評価サッカーの(行動系列予測に基づく)チーム守備評価
サッカーの(行動系列予測に基づく)チーム守備評価Keisuke Fujii
 
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライドNLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライドJunSuzuki21
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
究極のゲーム用通信プロトコル “WebRTC”
究極のゲーム用通信プロトコル “WebRTC”究極のゲーム用通信プロトコル “WebRTC”
究極のゲーム用通信プロトコル “WebRTC”Ryosuke Otsuya
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3までYahoo!デベロッパーネットワーク
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントNaoto Tamiya
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...Takayoshi Tanaka
 
ChatGPTの ビジネス活用とセキュリティ
ChatGPTのビジネス活用とセキュリティChatGPTのビジネス活用とセキュリティ
ChatGPTの ビジネス活用とセキュリティDaisuke Masubuchi
 
ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法Takaya Doki
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17Takuya Akiba
 
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布する
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布するパワポ版の落合先生流論文要旨のテンプレートを作ったので配布する
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布する森 哲也
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本Hajime Fujita
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 

Tendances (20)

GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
 
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナー
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナーPFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナー
PFP:材料探索のための汎用Neural Network Potential_中郷_20220422POLセミナー
 
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
 
サッカーの(行動系列予測に基づく)チーム守備評価
サッカーの(行動系列予測に基づく)チーム守備評価サッカーの(行動系列予測に基づく)チーム守備評価
サッカーの(行動系列予測に基づく)チーム守備評価
 
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライドNLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
究極のゲーム用通信プロトコル “WebRTC”
究極のゲーム用通信プロトコル “WebRTC”究極のゲーム用通信プロトコル “WebRTC”
究極のゲーム用通信プロトコル “WebRTC”
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
ChatGPTの ビジネス活用とセキュリティ
ChatGPTのビジネス活用とセキュリティChatGPTのビジネス活用とセキュリティ
ChatGPTの ビジネス活用とセキュリティ
 
ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布する
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布するパワポ版の落合先生流論文要旨のテンプレートを作ったので配布する
パワポ版の落合先生流論文要旨のテンプレートを作ったので配布する
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 

Mathematicaが敬遠される理由とは