探検


【解説/プログラミング言語】世界初の高水準言語「Fortran」が考案から約70年経ってもいまだに使用されている理由とは? [すらいむ★]

■ このスレッドは過去ログ倉庫に格納されています
1すらいむ ★
垢版 |
2022/11/08(火) 20:33:19.06ID:9RPtkLUl
世界初の高水準言語「Fortran」が考案から約70年経ってもいまだに使用されている理由とは?

 1954年に考案され、広く用いられた世界初の高水準言語が「Fortran」です。
 多種多様なプログラミング言語が存在するにもかかわらず、考案から約70年が経過した「Fortran」が依然としてプログラマーに愛用されている理由を、カリフォルニア工科大学のMartin D. Maas氏が解説しています。

 5 Reasons Why Fortran is Still Used
 https://www.matecdev.com/posts/why-fortran-still-used.html

(以下略、続きはソースでご確認ください)

Gigazine 2022年11月08日 07時00分
https://gigazine.net/news/20221108-fortran-programming-code/
2名無しのひみつ
垢版 |
2022/11/08(火) 20:54:15.10ID:V2O74fFY
某重工にFortranで制御された計測システムがあったw
3名無しのひみつ
垢版 |
2022/11/08(火) 20:57:51.18ID:KJfxTeIY
英語がなくならないと一緒。
言語だから、コンパイラが時代を作ってくれるのさ
4名無しのひみつ
垢版 |
2022/11/08(火) 21:00:40.57ID:bNES6qvQ
今はスパコン専用言語みたくなって、性能を失わず並列処理が簡単に書けるからね
2022/11/08(火) 21:07:44.48ID:C351odOr
いまだ 1Hスペースが忘れられない
6名無しのひみつ
垢版 |
2022/11/08(火) 21:20:51.55ID:baDw2sqJ
ナムコのUGSFシリーズの宇宙戦闘機はフォートランが動いてる
7名無しのひみつ
垢版 |
2022/11/08(火) 21:31:44.48ID:K2Og3wQI
>>4
自分も勘違いしてましたが今のスパコンはCだそうです。
Pythonもいけるらしいです。
8名無しのひみつ
垢版 |
2022/11/08(火) 21:54:47.37ID:2w4Gschj
57歳のコボラーだが定年まであと3年
就職した時点でCOBOLは無くなるみたいに言われてたが、こんなに長寿だとはwww
SQLだけは身に着けたけどね
9名無しのひみつ
垢版 |
2022/11/08(火) 22:42:45.15ID:Z8n9IrTN
パンチカードシステムが動くから
2022/11/08(火) 23:56:24.11ID:Pt2FOEKI
誰にも話題に出してもらえないRPGさんはどうなっていますか
認知度低すぎてゲームだと思われるんです
11名無しのひみつ
垢版 |
2022/11/09(水) 05:10:14.95ID:2HYbUlNm
愛されてるってのと感覚が違う気がする。
cobolも愛されてはいないだろ?
2022/11/09(水) 05:56:47.86ID:mTODcSWs
>>8
お勤めは銀行系か鉄道系?
cobolだけでキャリアを終えるなんてスゴイね。
13名無しのひみつ
垢版 |
2022/11/09(水) 06:00:39.47ID:pYyBtY/R
>>7
並列処理って面ではFortranが良さげかな、自由度が高い言語は並列処理の最適化がしんどい。今時はパラレルプロセッサ積んでいるのをスパコンと言わんのかも知れんけど
2022/11/09(水) 08:23:09.36ID:u+69LP72
>>10
コボルドもいるぐらいだしな。
2022/11/09(水) 09:01:37.51ID:DVkEuULl
FORTRAN77で流体の数値解析してたよ
16名無しのひみつ
垢版 |
2022/11/09(水) 10:07:57.92ID:v4JEsN9D
ラダーでよい
17名無しのひみつ
垢版 |
2022/11/09(水) 11:10:02.47ID:mlBdmv22
FORTRANすごいよね
はじめて学生時代に教わったときはWindows3.1だった
18名無しのひみつ
垢版 |
2022/11/09(水) 12:38:09.10ID:39bD+33h
やっほー フォートランランラン
19名無しのひみつ
垢版 |
2022/11/09(水) 12:53:48.97ID:3bVIcsU7
>>17
パンチングカード?
マークシートも有ったな。
20名無しのひみつ
垢版 |
2022/11/09(水) 12:55:30.52ID:3bVIcsU7
鉄道系もCOBOLなんだね。
金融系のイメージしか無かった。
2022/11/09(水) 13:48:33.90ID:z2/pNuSf
パンチカードとラインプリンターが学生時代の思い出
2022/11/09(水) 15:35:04.52ID:lOxaSeDC
量子テレポーテーションデータ伝送技術を応用したスマートフォンを開発しろよ!www
23名無しのひみつ
垢版 |
2022/11/09(水) 15:52:56.03ID:pTEj1ooh
ループが無限ループになりやすくてロケットを宇宙のかなたに飛ばしてしまうFortran
2022/11/09(水) 16:40:23.01ID:lOxaSeDC
>>22
その前に量子テレポーテーションデータ伝送技術を開発しないと駄目だなwwwwww
25名無しのひみつ
垢版 |
2022/11/09(水) 20:04:43.91ID:SkdYsdGi
オイラはBASIC一本で社長になった
26名無しのひみつ
垢版 |
2022/11/09(水) 20:06:23.06ID:A7uBE2pU
理由は特に変える必要がないから
2022/11/09(水) 20:16:00.99ID:0kL7r+uv
ファイルのゲット/プットすら2進法で記述してたマシン語が懐かしい
2022/11/09(水) 21:07:19.45ID:FhPmToTH
>>27
マシン語とかインライン埋め込み数十行しか使ったことしかないな
2022/11/09(水) 22:45:10.39ID:lOxaSeDC
>>24
量子テレポーテーションデータ伝送技術が出来る様になると光ファイバーが不要になるかもしれんなwwwwwwwww
30名無しのひみつ
垢版 |
2022/11/10(木) 00:13:35.17ID:dbOxcE7V
>>19
プログラミング用紙というのがあって
実習はそれに鉛筆で書かされた
31名無しのひみつ
垢版 |
2022/11/10(木) 08:07:33.76ID:rGIxXSqq
>>26
様変わりしてるって
2022/11/10(木) 08:22:35.69ID:glp5MfW9
フォーフォーフォートランランラン
フォトフォートランランラン
フォトフォートランランラン
フォートラン
33名無しのひみつ
垢版 |
2022/11/10(木) 09:47:47.67ID:RyoW6Pk+
90の頃に使ってたわ
いまだに自分で一番書いたコード量の多い言語だと思うw
2022/11/10(木) 09:59:02.81ID:xDKUrSJf
4倍にするのに左シフト2とかできてとっても軽量
35名無しのひみつ
垢版 |
2022/11/10(木) 10:25:09.47ID:S+pgkXj7
Fortran for TRONはないの?
36名無しのひみつ
垢版 |
2022/11/10(木) 14:01:07.69ID:BiCTuLWP
>>19
Windowsがあった頃はテープもカードももうほとんど無かったかと。
マークシートのカードも1980年代までかな、一枚一行だけどズボラしてカードに番号書かない奴は床にうっかりぶちまけて泣きっ面で2進数読みながら並べ直してたわw
2022/11/10(木) 14:13:06.37ID:NfkXLIgD
マークシートは現役じゃないかな?
人間の試験やギャンブルだけど
2022/11/10(木) 18:14:00.64ID:cwzv2VFv
>>7
Fortran2018とか知らない人?
今はFORTRAN77じゃないんだぜ?
2022/11/10(木) 18:25:30.53ID:cwzv2VFv
>>37
このスレでマークシートと言えばFORTRAN CARDのことだろう
Facom mateのやつとか
2022/11/10(木) 19:18:21.09ID:a19Enh2r
>>30
コーディンシートか
なついな
2022/11/10(木) 19:19:09.86ID:a19Enh2r
>>40
×コーディンシート
○コーディングシート
42名無しのひみつ
垢版 |
2022/11/11(金) 15:46:58.54ID:jseI55zC
>>39
そうそう、画像のはパンチカードだけどこんなの
https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:FortranCardPROJ039.agr.jpg
43名無しのひみつ
垢版 |
2022/11/11(金) 15:48:05.08ID:jseI55zC
>>42
https://i.imgur.com/OeLGQQI.jpeg
44名無しのひみつ
垢版 |
2022/11/11(金) 16:20:45.93ID:mdZ5iSj8
>>7
でもCに関してパラレル向けの言語拡張の話は聞かないな。
2022/11/11(金) 16:30:19.66ID:GtXDBWa7
>>30
>>41
本番カードに穴をパンチあるいはマークする前に
試しにコード書いてみるカードのことね
バージョン管理システムとして
・コーディングカード version 0~0.99999…
・パンチカード、マークシートカード version1.0
という役割
2022/11/11(金) 16:36:17.20ID:GtXDBWa7
>>44
Parallel CとかαCとかXL C/C++とか色々あったけどベンダー間で統一されてないからね
スパコンのデータパラレルはFortranの圧勝だよ
CよりもPython scipy/numpyの方が統一されてる
まあ下位層は独自C/C++拡張で書いてあるんだけど
47名無しのひみつ
垢版 |
2022/11/11(金) 16:38:58.58ID:a5OK1ekh
昔:FORTRAN
今:Fortran

随分変わってんよ
48名無しのひみつ
垢版 |
2022/11/11(金) 16:41:28.36ID:dcx6od55
>>46
そうそう、Cとかで並列化率高いコード書こうと思ったら意図的なコードでかつ使うコンパイラの特性知っているかどうかでかなり変わる
2022/11/11(金) 17:25:31.85ID:U2jSth/M
I/Oに載ってたマシン語を入力した人いる?
2022/11/11(金) 18:02:06.97ID:GtXDBWa7
>>49
チェックサムがたまたま合致して入力ミスを見逃したことがある
2022/11/11(金) 22:45:14.51ID:jWO9OwGq
別言語に移行するコストがかかり過ぎるからだろ
特にFortranが得意とする科学技術系の計算は誤差の問題が発生するから、労力が凄くかかる
2022/11/12(土) 06:27:49.14ID:y4y+tGER
>>49
oh!PCやoh!FMには毎回ゲームのマシン語ソースリストが載ってて、
入力して遊んでた
2022/11/12(土) 06:31:13.63ID:7uwGFTvx
oh! その他!
54名無しのひみつ
垢版 |
2022/11/12(土) 06:50:12.54ID:w6Mb3WkB
>>7
Fortranが科学技術に特化してるからだよ
それが並列処理できるよう拡張されたのはもう1980年代
いくらCができてもユーザーが科学者ならその視点で書きやすいのが使われやすいわけよ
55名無しのひみつ
垢版 |
2022/11/12(土) 06:55:33.38ID:w6Mb3WkB
>>49
I/Oでなくともマシン語はデバッグで見たんだよ昔はね
COBOLでもFortranを使っていたとしてもシステム寄りのモディファイルーチンつまりOSのユーザーカストマイズにはアセンブラ必須だったし

デバッグはマシン語とビットの意味を読めない


入力よりもシステムが何やってるのか知るには必須だったんだよ
56名無しのひみつ
垢版 |
2022/11/12(土) 06:56:42.73ID:w6Mb3WkB
>>47
大文字しかつかえなかったから当然だよね
大文字しか使えないのに小文字使ったら突っ込まれる
57名無しのひみつ
垢版 |
2022/11/12(土) 07:01:21.80ID:w6Mb3WkB
Fortran パラレルの歴史書いてる人いたよ
https://wvuhpc.github.io/Modern-Fortran/20-Parallel-Programming/index.html
58名無しのひみつ
垢版 |
2022/11/12(土) 07:02:57.77ID:w6Mb3WkB
Fortranが今でも使われている5理由
https://www.matecdev.com/posts/why-fortran-still-used.html
59名無しのひみつ
垢版 |
2022/11/12(土) 07:06:25.39ID:w6Mb3WkB
スタンフォードのアーカイブ
新しいFORTRAN90 77とどこが変わったか
1997年12月
http://sepwww.stanford.edu/public/docs/sep70/biondo/paper_html/node2.html
2022/11/12(土) 07:10:32.84ID:3X1G/9Ny
>>7
未だにFORTRAN(Fortranではない)ライブラリがデファクトスタンダードだぞ BLAS/LAPACKとか

Cとかpythonの遅いライブラリ使って、ループ一回が0.01秒でも余計にかかるなんてやってられない そもそもライブラリ以前にコンパイラがクソだが
61名無しのひみつ
垢版 |
2022/11/12(土) 07:12:09.63ID:w6Mb3WkB
ちなみに大抵の技術部はFORTRAN使ってた
そんななかホストコンピュータでもCを使いたいというんでCメーカーがサポートしたないアメリカモンのCをインストールした新人時代
まだCは方言がきつかった
62名無しのひみつ
垢版 |
2022/11/12(土) 07:26:53.89ID:w6Mb3WkB
てかこのあたりでアセンブラとかマシン語ができるとすごいみたいにいうやついるだろ

ビットってのはオンオフスイッチ一つのことだから
豆電球つけるスイッチがただたくさん並んでるだけ
そのオンオフの組み合わせをこういう意味にしましょうって決めてるのがコンピュータのシステム
カッコつけて建築から借りてきた言葉でアーキテクチャって言ってるだけ
ビット列の取り扱いを決めたのは人間
それでCPUとメモリーとコントローラの動きを決めただけ
これが作る人によって違うから別のアーキテクチャと呼んでるだけ
んでそのCPUを使うならそのビット列の取り扱いで動かすだけ
いろいろ動かしたいならソフトウェアで動かすだけ
そのソフトウェアはそのビット列の取り扱いで動かそうとするだけで
そのソフトウェアが例えばLinuxならマシン毎にLinuxが違うわけ
でそのLinuxの上でC動かしたいならそのCもそのビット列で動くように仕込んでないといけないだけで
そのCを使ってコーティングする人はいちばん下のビット列の違いはそんなに考えなくて良くなったのは楽だよねー
そのかわり細かいことは気にせずでかいことをやれよーって話でAIとかやるのが楽になってると
端折りすぎたけどだから楽なんだよいろいろできるんだよね
63名無しのひみつ
垢版 |
2022/11/12(土) 07:32:11.94ID:w6Mb3WkB
みんな誰かの作ったルールとツールでプログラミングできてんだから感謝しながらでかいことやろーねー
2022/11/12(土) 07:39:26.08ID:7uwGFTvx
機械語でプログラミングするのは
車を鉄インゴットから作るようなもの。

パーツ一つ程度なら可能かもしれないが、
全体を作るのは現実的ではない。
2022/11/12(土) 07:57:02.28ID:vxY7ZtJo
>>13
そのとおり。言語仕様が簡素なのが良い。
2022/11/12(土) 08:26:10.92ID:vY/ITXQB
>>60
言語とライブラリの区別がついてないね
BLAS,LAPACKならscipyから使える
問題は自前で書いた配列演算も並列にできるかどうか
そこはFortranが優位
ただしLAPACKもマルチスレッド対応ではなく既に古臭い
67名無しのひみつ
垢版 |
2022/11/12(土) 08:28:02.65ID:q4buIsJf
もう最後にFortran書いたのは三十数年前だが今でも書けと言われれば書ける
2022/11/12(土) 08:29:31.00ID:vY/ITXQB
>>65
Fortranは複雑化するばかりだけどな
計算が速いライブラリ、コードが可搬性高い方がいいからな
速いは正しいの世界だから
ただ昔と違ってハードウェアアーキテクチャ乗り換えても速いことが求められてる
69名無しのひみつ
垢版 |
2022/11/12(土) 08:54:07.44ID:+p05hrzn
そこに愛など無いと思っていたが実は愛されていたのか?
70名無しのひみつ
垢版 |
2022/11/12(土) 10:21:05.69ID:vwoiEmk7
>>6
今はCでも書いてるんだ。昔スパコンでシミュレーション作ってた時は精度の問題でFortran一択だったが。
2022/11/12(土) 12:47:03.57ID:3G8c/qMz
例えば倍精度と指定すれば、
大抵の言語はそれで演算できるので
なぜフォートランばかりなのかよくわからん。

過去の資産を手直しして再利用しやすいからじゃないかな?
2022/11/12(土) 13:21:03.15ID:syFDjkZR
>>71
数値計算で桁落ちって習わなかった?
数式通りに計算してはダメで
桁落ちが起きないよう式を変形させて計算しないといけない
>>60のBLAS/LAPACKはその叡智の結集
だから計算精度面でライブラリは重要

80年代末くらいから他言語でバインディングされて
それでC/C++が増えた
けどやっぱり言語がnative coarrayを持つFortranが復活してきた
Fortran90以降のFortranね
FORTRAN77じゃない
2022/11/12(土) 15:04:33.79ID:DA+ahuK7
>>4
頑なに配列添字まで()を使って秘蔵していた[]を、スレッド/プロセス添字に使ったイノベーションがFortranの地位を確固たるものにしたと思う
並行/並列プログラムでの各変数をvar[i]で参照できる利便は他言語の追随を許さない
2022/11/12(土) 15:19:44.07ID:DA+ahuK7
>>72
元々forallとか並列性を明示する文は豊富にあったけど、それでもcoarray拡張標準化以前はディレクティブだらけの汚いコードだったな(専用構文を全く欠くc程ではないが)

モジュール等名前空間管理やインターフェイスもしっかりしてるし、20xxは本当にモダンになったと思う、むしろSteele先生が関わってから厳格、というかJava臭くなったのと、OOPはオーバーヘッドで不評だけど
2022/11/12(土) 15:25:20.82ID:n8p0c/63
C++の目指したかっただろう言語になってるよね
Cとの互換性ガーとか言ってるうちにパフォーマンスでも言語デザインでも先を越された
2022/11/12(土) 15:34:04.23ID:RqwOI7jF
>>66
>>1のコード例見て言ってる?
python/scipy/numpyはFORTRANバインディングが便利(f2py)で糊としてよく使うけど、配列演算含め(モダン)Fortranの方が遥かに簡潔で分かりやすいぞ
2022/11/12(土) 15:44:57.61ID:RqwOI7jF
先史時代からの互換性を担保しても、どんどん新しい言語構文を導入してるからキレイには書ける
但しマニュアルでかなりの構文がdeprecated記載祭りなのはかなりアレ
大抵の言語は関数レベルでdeprecated→廃止で構文には手を入れないけど、Fortranは文レベルかつ廃止が(ほぼ)ない

マニュアルにノイズが多過ぎるから、正しい作法を身につけるのは長い道のりだと思う
2022/11/12(土) 15:50:08.21ID:RqwOI7jF
いくら新構文を付け足しても、implicit noneだけは除けないのよなあ…
79名無しのひみつ
垢版 |
2022/11/12(土) 15:52:59.87ID:qOd4Jyr5
電子計算機の時代の
プログラミング言語が
まだ現役なんだね
カセットテープとどっちが長生きするか
2022/11/12(土) 16:13:07.94ID:YVNkL4r1
>>72
精度について仕様でとやかく言ってる訳ではないと思うが、80年代から大抵のコンパイラは4倍精度(無ければエミュレート)+複素数=8倍以上のサポートがされてた
c系で右翼なgccでも結構最近になってからじゃなかったかな

あと言ってるのはもっと高水準なライブラリについてだと思うぞ
大体プロプライエタリだが、デファクトスタンダードで網羅的なmkl等の存在が大きい
mklは呼び出しが古風だけど、他の言語でここまで高機能なライブラリは無いんじゃないか
Pythonでデファクトなscipyでは明らかに機能不足だし

それでもmkl呼ぶコードを書いてラップし、簡単に拡張できるscipyは良いものだけど
2022/11/12(土) 16:25:50.09ID:n8p0c/63
>>79
常に機能的には最先端だぞ、少なくとも俺の知る2000年以降から現在までは
82名無しのひみつ
垢版 |
2022/11/12(土) 16:30:00.14ID:mas4e9sS
FORTRANもCOBOLも
もうよしなよ
2022/11/12(土) 16:33:18.04ID:RqwOI7jF
GPGPUなんかの新興デバイスもメーカー公式でマニュアル示すのはC(++)/Fortranが慣例だしな
2022/11/12(土) 16:57:05.22ID:FCN71bV2
Fortranの慣習を尊重して後方互換性を切り捨て、事実上モダンFortranとされていた部分のサブセットそのものなjuliaこそ正当な後継者だと思うんだが、Fortranの成長が速すぎてもはやモダンじゃなくなってしまった感
2022/11/12(土) 17:04:54.56ID:9NPpzvIS
cは絶対になくならないだろ
windows OSのソースコードはcで書かれてるからな
2022/11/12(土) 17:16:08.67ID:n8p0c/63
日本語のFortran入門書は90/95水準止まりが多いし、77やそれ以前のコードの読み方への注釈に終始してるから、シンプルなjuliaはFortran入門に良いと思う

2008水準以上は学術出版社から出てて数万円で敷居が高い
自習できるマニュアル読解力があればいいけど
2022/11/12(土) 17:27:37.75ID:n8p0c/63
新しいcは記事にあるようにrestrict導入(Fortranのintent in/out)や、特にFortranに比べて決定的に遅い主因だったstrict aliasing問題も解決できたから、パフォーマンス指向でもこれから盛り返せると思う
atomic保証はまだ普及してるとは言えないが、システムプログラミング言語としての地位を盤石にするだろう
Cは着実に正しい進化をしてる、ナイス

それに比べてc++ときたら、何者にもなれない
2022/11/12(土) 17:50:58.23ID:HwSrPh53
配列演算や非同期処理の抽象度がすごく高い
Fortran風の配列演算はnumpyと比較されるけど、row-major, 0-indexのcコンベンションだからMatlabからの間接輸入になるのかな?

にも関わらず半世紀以上前の古代記法も有効というエキゾチックさが好きだわ
2022/11/12(土) 19:30:46.52ID:RcG5z07s
汎用言語の文法に手を入れないライブラリ実装では、where, forall, mask, do concurrentのようなフィルタやセレクタ処理がメソッド呼び出し構文等の流用になるし、多少見た目が汚くなるのは仕方なくね

例に挙げた程度のものならプログラミング全般に役立つものだし、もっと文法に入れても良いと思うが
2022/11/12(土) 19:36:24.09ID:RcG5z07s
俺はオライリーの行列プログラマーって本をFortranで自習したけど、強力過ぎて勉強にならんな
2022/11/12(土) 19:50:44.57ID:BjGSGOy+
低レベルの問題でも、多重ループの添字はメモリが連続するように動かす云々、みたいのはちゃんとやるべき
添字の処理順に明確に依存して、等価な結果を出すうまい最適化のない処理じゃないと差が出ないけど
ifortはほんとかしこい

Fortran単体で書くことはむしろ少ないし、C系の言語とやり取りする時には常に意識しないといけない
2022/11/12(土) 20:11:39.11ID:5yf8R8wC
68歳cobol現役だわ
もうすぐ終える
93名無しのひみつ
垢版 |
2022/11/12(土) 20:17:56.38ID:8pm2yvNJ
FORTRANから派生したBASICでマイコンのプログラムを組んでるで(´ω`)
ふつうに仕事用の治具を組むのに今でも使ってるよ
2022/11/12(土) 21:06:29.10ID:vY/ITXQB
>>80
桁落ちを全然分かってない
それじゃ単位は出せない
2022/11/12(土) 21:11:05.81ID:vY/ITXQB
>>75
C++の言語デザインは別次元です
それ以後の言語デザインを変えた
templateとかSFINAEとかconceptとか
2022/11/12(土) 21:55:02.43ID:v3wPuPEu
cとその亜種はサブルーチンと関数の文法上の違いがないから、最適化コンパイラを書くのが本当に難しい

スタックすら積まなくていい副作用のみのsubroutineと値を返すfunction、副作用を禁ずるpure functionとの区別と、値渡し参照渡しを分けてれば良かったのに
たったそれだけでinline地獄は回避出来たはず

入出力変数にintent指定があれば、変数のメモリ領域を一時作業用に上書き流用など自由度が高まったはず
2022/11/12(土) 22:28:38.28ID:n8p0c/63
人間にとっても値を評価する関数fun(a, b,)と副作用目的であることが明確なcall sub(a, b)の区別や、引数のin, out, inout指定は分かりやすいと思うわ
欠いてる言語も結局ミュータビリティ概念で代用したりコメントで示すわけで
2022/11/12(土) 23:05:39.83ID:vY/ITXQB
>>96
> cとその亜種はサブルーチンと関数の文法上の違いがないから、最適化コンパイラを書くのが本当に難しい
>
> スタックすら積まなくていい副作用のみのsubroutineと値を返すfunction、副作用を禁ずるpure functionとの区別と、

色々とおかしい
2022/11/12(土) 23:45:54.70ID:n8p0c/63
>>88
わざわざ総称型関数を定義しなくても、集成体に対して自動で特殊化してくれるelemental functionが簡潔で便利よな、elemental修飾するだけでいいし、ついでに演算子オーバーロードしても
まあnumpyにもufuncという名で同等の機能があるが

ただし組み込み演算子のオーバーロードは要素毎の自明なものに限った方がいい(element-wise)
配列演算には行列積内積外積クロネッカー積…と無数のものが考えられて、Fortranではほとんど任意文字列の演算子定義が許されているのだから、記述的な名前を付けるべし

>>95
Fortranには定番のテンプレートエンジンや、ましてテンプレートライブラリみたいのは無いな
ベンダ固有、CPPの変種やFORTLANの為に書かれた由緒正しき?m4とか
そもそも規律あるチーム開発の文化が無かったり、クラスや複雑な構造型は好まれないので総称関数で済むケースが多い
c++のSTLのようにロジックまで実装する試みは長続きした試しがない、STL移植を目指したFTLなるものもあったはずだが、やはり最近音沙汰ない
2022/11/13(日) 00:12:53.82ID:XWlYf9AC
c++のようにコンパイラがマクロ風のテンプレートを認知する言語はむしろ珍しくね?
後発言語で型変数を扱うものは、むしろ初めから構文の一部として実装か、コンパイラの認知しない単なるマクロかだろ
cに継ぎ足して生じたキメラみたいなもの
2022/11/13(日) 00:30:10.90ID:XWlYf9AC
実体化の検出、構文として正しいかのチェック、コード生成
コンパイラを通さないと意味論のチェックまでは出来ないから2パスになる
STL移植は筋が悪いわ

m4に象徴されるように、Fortranは昔からスクリプト言語やマクロ言語でshoot yourself in the footの精神
102名無しのひみつ
垢版 |
2022/11/13(日) 06:28:12.62ID:1ypLDfmj
>>96
ごちゃごちゃ言ってないで自分でかいて提案しろよ
日本の大学教授みたいな評論だけ日本人に向かって偉そうに喋る
世界相手にやればいいじゃないの
批判が怖いの?
103名無しのひみつ
垢版 |
2022/11/13(日) 13:11:56.82ID:H5k8r5f5
>>96
AdaやPascal&Delphi系の人かな。
104名無しのひみつ
垢版 |
2022/11/13(日) 17:33:51.13ID:LSwuQAIt
BASICを最強にしろ
コンパイラが頑張ればいいだけだろ
105名無しのひみつ
垢版 |
2022/11/13(日) 20:20:05.69ID:j59dqrDu
速度重視の世界ではインタプリタ系は無い。
機械の仮想化が進むとどうなんだろう。
2022/11/13(日) 20:42:43.98ID:YqetUxOk
Fortranで進まないプロジェクトにスパコン噛ませるのと
インタプリタですいすい進むプロジェクトにスパコン噛ませるの
どっちが早いんだろうか。万年レベルの差が出るならともかく
2022/11/14(月) 01:13:47.05ID:62EB3YD2
普通に超便利だからだろ
静的言語でOctave(Matlab), scipy以上に簡潔な配列演算記法をサポートしてる言語って他に無くね?
奇怪な記法に目を瞑れば、APLが対抗馬
2022/11/14(月) 01:37:30.12ID:62EB3YD2
array comprehension(数学の集合内包表記)ワンライナーでパパっと配列組み立てて
述語を渡してフィルタ
スカラ関数が配列にそのまま使えて
ブロードキャストで添字マジック

世界初の高級言語にして、現代でも静的言語としては間違いなく最高級言語

COBOLみたいなレガシーロートル言語と比べるのは失礼
2022/11/14(月) 07:43:52.32ID:jxoT+21v
>>107
表記だけで言えばHaskellやFortran2018もイケてる
Haskell fusionとか
ecosystem的にはPythonが圧倒的な勝者
wrapper library書くのが簡単
昔のPerlのように
2022/11/14(月) 13:40:15.67ID:hltTtT00
cより遥かいにしえの言語は、出力のフォーマット指定子ミニ言語が辛い
lispとfortran
どちらもprintfより強力ではあるが、特にlispのはそれ自体でチューリング完全
2022/11/14(月) 14:01:34.78ID:qi6QKyLW
他人の書いた古いコードを癇癪を起こさずに読むことができるから。
112名無しのひみつ
垢版 |
2022/11/14(月) 18:06:20.19ID:a96UWMzg
>>105
BASICがインタプリタな時代ではないのだが
それでもコンパイラが糞なのでマシン語やCより遅い
それが気に入らない
コンパイラがとにかく頑張って、超最適なマシン語に変換すりゃいいんだよ
113名無しのひみつ
垢版 |
2022/11/14(月) 18:35:59.92ID:EsXg7aQJ
最強はRPGでしょう。 RPGで組めない時はアセンブリー言語で乗る抜けました。
114名無しのひみつ
垢版 |
2022/11/14(月) 18:55:41.74ID:tzHFQbBc
>>43
なんでfortranなのに空白入れるかな?
115名無しのひみつ
垢版 |
2022/11/14(月) 19:07:35.86ID:tzHFQbBc
>>96
なんか言ってることがよくわかんないんだが、
JUNETの初期の頃を思い出す
116名無しのひみつ
垢版 |
2022/11/14(月) 19:23:20.47ID:3WGaugvI
Fortran使わない世界の奴は一生使わないけど、使う世界の奴はないといられないってことで良いじゃないか。棲み分けしようぜ。
2022/11/14(月) 19:23:26.55ID:MJh2ohHK
fortran が使われ続けているのは数値の精度、言語レベルでの複素数対応
とかいろいろあるけど一番は長い歴史からくる膨大なライブラリによる
2022/11/14(月) 19:53:24.72ID:L1TEXY8M
program hello
print *, "Hello world!"
end program hello
2022/11/14(月) 20:25:35.40ID:fSwBdtWf
例外的に科学者が音頭を取ってる標準化団体なんで
込み入った現代風のプログラミング言語の文法は分からずに
そのまま進んだおかげだ

平たく言うと「言語学者」がいないからだ
2022/11/14(月) 20:46:27.29ID:+yvThC+F
IT屋と違って、ニッチな言語を使っても、キレイなコードを書いても成果には何ら関係ないからな
2022/11/14(月) 21:54:00.24ID:jxoT+21v
>>117
数値の精度なんて言語としてのFORTRANの選択に何の意味もない
122名無しのひみつ
垢版 |
2022/11/15(火) 00:37:19.36ID:bfFED4Us
Pascalに若干似ていると思ったら、Pascalのコンパイラーを作った人は最初それをFortranで書いたんだってな。
2022/11/15(火) 07:43:27.07ID:CWJvexdX
>>119
言語屋の知恵を借りずに言語を定義できるわけない
ただの数値計算屋には浮動小数点の10進表記の定義すらままならない
2022/11/15(火) 10:04:22.01ID:yZYZRAen
>>120
コードに興味が無く学者が興味あるのはデータだけって感じか
2022/11/15(火) 10:52:33.43ID:CWJvexdX
>>120
そんな時代は去って
コードの再利用性を数値計算屋は考えなくてはいけなくなって
それでFortranの型システムが強化された
再利用というのはライブラリだけじゃなく自分で書いたコードもね
2022/11/15(火) 12:30:13.22ID:C8c+9aBu
理数系の講義で使う事もまだ多いし、少し書ける程度の人口はかなり多いのでは
東大の弥生の計算機センターの講義はまだ全部Fortran、理工合同の計算化学演習とか
教養はPythonも増えてきた
2022/11/15(火) 12:44:25.61ID:C8c+9aBu
情報系じゃないとちゃんと言語自体の講義はやらないし、もうかなり怪しいけど

print, write, readなどI/Oが行毎の処理、フォーマット指定子忘れても型のデフォルト出力で無難、stdin/stdoutをデフォルトで指してて組み込み関数が多い(trimとか)
数行のフィルターを書くのに結構便利、というかそれくらいしか使ってないわ…
2022/11/15(火) 12:50:45.19ID:PtTGxhza
>>124
計算のアルゴリズムには興味がある人も多い
2022/11/15(火) 13:01:32.72ID:C8c+9aBu
言語というかコンパイラの問題だけど、gccのcはヒアストリングとか一時ファイルだとファイルを2回開こうとして死ぬし、ヘッダとか全く覚えられないという理由で、最近までcを忌避してた

tccはワンパスのようで、バイナリを残さない-runオプションもあり、(ワーニングは出るけど)ヘッダへ言及せずとも何故か走って簡便
lexも標準出力に吐けるしパイプで繋ぐだけでもうawkより強い、勉強中
2022/11/15(火) 13:25:50.17ID:C8c+9aBu
>>93
わかる、カジュアルユーザーは何となく習った言語使い続けるのよな
f95とawkとdcで全部やってきた

(クラシックな)BASICも似た感じだったと思うけど、引数処理もget_command_argument呼んでwrite/readで変数の型に合わせて収まるし、main定義してargv舐めてatoi/f呼んで謎のSEGVで死んで面倒くさくて折れる、思考停止
2022/11/15(火) 13:36:20.43ID:1THmXFec
何やるにも大抵専用の文があるってのは覚えやすいんだよな、一貫性は無いが
一々添字回して配列集計とかこの関数どのライブラリだったっけとか
2022/11/15(火) 14:00:47.53ID:C8c+9aBu
>>125
iso_fortran_envは重宝するな
標準ユニット番号が0, 5, 6だとか古い慣習が多いし、人に見せるのは憚られるからと一々マクロ定数振るのも面倒、まあ見せる機会もないけど
良く使う行列演算や型基本的な定義集めたモジュールくらいはカジュアルな俺でも使う、useで好きな識別子にバインドできるのがいいな、今時の言語なら当たり前かもしれんが

ただ、独自型をuseする際にリテラル表記のサフィックスも好きにバインドできるのは珍しい?なかなか便利
2022/11/15(火) 14:38:09.28ID:LIaj/JOj
>>127
gamma、erf[c]、bessel_(j|y)(0|1|n)まで組み込み関数なのはFortranらしいと思うけど
呼べるかな?で試して使えた/シンタックスハイライトされたみたいなケースがよくある
どこまでが標準なのか良くわからず使ってる
2022/11/16(水) 01:32:42.53ID:fFILbDWz
言語としては十分高水準で整ったものだと思う、構造化やクラスシステムはほぼJavaだし
まあ70年の歴史を単系統で積んでるから微妙に変なとこもあるけど

にも関わらず職業プログラマが使うのは皆無なのは文化だろう、カジュアルシリアル問わず、非プログラマがメインユーザーというのが本質
なので使用頻度は高いにも関わらず、プレゼンスが認知されにくい

理数系に進めばまず一応は習うものだし、先に指摘があったように、BASICのように個人用のsoftware toolとしてよく使われ、それは普通公開を意図したものでは無いのがまず一点

もう一点も同様、こちらは数理に長けた非プログラマに好まれること
言語そのものは十分汎用にも関わらず必要な数理の教養(ある種のdomain specifc knowledge)が多過ぎて、職業プログラマがコーディング&リードするのは現実的に無理

2つの主用途が共に、IT業界と独立してるのが普及問題の障壁
2022/11/16(水) 01:44:53.77ID:ecB5D9e5
今でも最速言語(多いに実装によるが)というのがFortranの強みとしてよく挙げれるが、この2点の方がより本質だと思う
2022/11/16(水) 05:33:52.77ID:IYF8hQmA
javaとのOOPの類似は設計がGuy L. Steeleだからだろう
common lispとscheme考案したlispハッカー
さすがにlispのOOPシステムCLOS/MOP(とschemeのCLOS-like OOP)とはかなり違うけど、まあ権威
2022/11/20(日) 13:01:35.45ID:GBeX940k
複素数そのまま扱える
2022/11/26(土) 18:35:23.75ID:4O0k9YEI
使えるなら使ってりゃいいわけで、自分が開発したわけでもない他人様の言語の優劣をアホみたいに争うバカが多くて困る
2022/11/26(土) 20:54:06.59ID:hiHu6vZv
>>132
最後はHaskell由来かな?
2022/11/30(水) 11:32:36.96ID:QZXaCh/u
x=[1]; do; print*, x; x=[0,x]+[x,0]; enddo
2022/11/30(水) 11:52:45.30ID:QZXaCh/u
integer, allocatable :: x(:)

スプレッディングで動的配列を育てるイディオムが趣深い
なおx(:, :)とランクを上げていくと…

[ ... ]は遠いむかしに配列構成子(\ ... \)の略記と習ったのだが、2xxx以降で随分拡張されてるみたいね
2022/11/30(水) 15:15:37.67ID:NdiS++fP
未だに無数のベンダーがプロプライエタリなコンパイラ売ってるのはcommon lispとFortranくらいでは
もうフリーで良い処理系なんて沢山あるし、商用もお試し版で十分だったりするが
しかしclもそろそろlispworksの一人勝ちかね?
そのクオリティに加え、試用版が数時間で強制終了するという安売りしない姿勢から、むしろ趣味lisperの高嶺の花となってる

ifortは本当に寛容で有り難いけど、安売りしない道もあったのでは

フリーだとg95を愛用してたが、もう十年くらい開発停滞してて機能不足が目立ちはじめ、同じGNUプロジェクトのgfortran(gcc)に食われつつある
悲しい
2022/11/30(水) 15:21:58.70ID:NdiS++fP
あ、Visual Studioを忘れてた…
2022/11/30(水) 17:29:46.64ID:tkdCeSC0
>>142
g95の人は優秀過ぎて某Fortranコンパイラベンダーにヘッドハントされた
145新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 17:50:14.82ID:citcHFZm
>>108
金利計算にCOBOLは最適だからよ
勝手に丸めたりしない10進デシマル
146新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 17:50:34.73ID:citcHFZm
2進デシマル
147新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 17:53:42.53ID:citcHFZm
>>54
ベクトルだよベクトルな
並列計算
148新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 18:00:47.97ID:V9qsqESE
>>128
実は
扱うデータがどんなものかで計算速度が違うから
アルゴリズムだけみていたら間違う可能性がある
結局結果を求めるのに正確性か
いや正確でなくともある程度で早く切り上げてくれる方がいいのか
という実利面がある

AIが当たり前になってきた今は正確性より
判断に使える程度の確からしさでいいから早めに
という
ヒューリスティックもよく言われるだろ

アルゴリズムも目的に応じて取捨選択するものだしね

つまり計算ってなにという
2022/11/30(水) 18:31:15.49ID:y+hQ6l9B
ベクトルとは行列計算のこと
2022/11/30(水) 18:32:55.38ID:VpoDRdbH
AI と fortran は関係あるのか?
AI様がアルゴリズムを選択してfortran使う?
151新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:13:44.13ID:f/qwMQAh
過程を人間に見せる必要はない。
aiは結果だけ見せれば良い。
152新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:15:49.77ID:f/qwMQAh
aiとfortranは今後も交わる事は無いのでは。
153新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:32:19.54ID:ghYVrQ13
>>149
大丈夫か
とりあえずWikipediaのベクトル計算機くらい眺めてみとりあえず
154新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:33:25.36ID:ghYVrQ13
>>151
aiは神が作ったとかおまえ思ってんだろ
あ〜あ
155新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:34:26.34ID:ghYVrQ13
そもそもaiって言葉が素人騙しなんだよな
ニューロンとか言ったりするからな
全く違うのに
156新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:36:57.95ID:ghYVrQ13
インテリジェンスを知能とか訳してるのに
脳とかとすり替えたりしてんだろおまえら
157新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:37:31.06ID:3fh9WB9i
参加できそうな話題だと思ったけど、やっぱりレベルが違った ごめん
158新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/11/30(水) 21:38:10.23ID:ghYVrQ13
ニューロンなんて考え方は
それまでのバイナリがオンオフスイッチだったのを
多段階にしてるくらいのもんだからな
大した話じゃない
2022/11/30(水) 21:59:17.29ID:VJWpVdLy
AI さんがインプットに使うパラメータを準備してくれるだけでもいいかも。
2022/11/30(水) 22:00:07.79ID:QeqOJ1Ay
>>153
ベクトル=行列 であることは知ってるよね?
その計算に特化しているのが
ベクトル計算機ということも。
2022/11/30(水) 22:56:46.78ID:EY5dtDyd
>>49
呼んだ?
フォートランの歌も背理法の歌もI/Oで知ったわ
2022/12/01(木) 08:01:37.02ID:4+frU6sz
>>152
https://qiita.com/implicit_none/items/8229d1931cd236d62ca9
CUDA Fortranというのがある
頑張って書けば出来るかもなw

まあユーザー数が少な過ぎて今後の発展が望めないだろうな
163新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/12/01(木) 10:12:18.64ID:+08mDIrV
スカラー、ベクトル、マトリックス、テンソル
自然数、整数、有理数、実数、複素数
164新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/12/01(木) 21:23:42.22ID:6hJf8kCQ
>>154
スレを見てる人間はもう少し合理的だと思う。
165新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/12/01(木) 21:33:10.46ID:6hJf8kCQ
>>159
どのパラメータが適切か判断するのを自動化したいって事かな。
2022/12/03(土) 22:06:58.47ID:vncupHyR
FORTRANが未だに使用されているんじゃない
時代に合わせ進化したから今でも現役なのだ
167新規スレ立て人募集 社説+の募集スレまで
垢版 |
2022/12/03(土) 23:27:21.31ID:bUhMTGph
以前も書かれたが職業プログラマ向けの言語では無いって事が他の言語との違い。
ツールとして関数電卓の延長なのだろうね。
2022/12/04(日) 00:42:00.62ID:3C2MHvNv
>>166
進化したところ使ってる?
2022/12/07(水) 22:32:51.04ID:YEBh0mOB
素粒子物理学に必須級のソフトウェア「FORM」の保守はたった1人の老科学者が担っている、新しい機器では使えなくなり研究が停滞する危険性
https://gigazine.net/news/20221207-particle-physics-computer-program-maintenance-retiree/

https://en.m.wikipedia.org/wiki/FORM_(symbolic_manipulation_system)
2022/12/08(木) 11:18:29.81ID:DkH7AzX5
言語そのものというよりドメイン固有知識が多過ぎて職業プログラマが触れるような物ではないから、互換性を保ちつつ進化していくしかないよね
2022/12/10(土) 02:20:39.41ID:2ig+uaBr
clerだけどまさにFortran勉強中
Fortranは義務教育的なモノゆえhacker文化と相容れないと思われがちなんだと思うけど、俺が本当のhackerとリスペクトしてる人の第一言語もFortranなので惹かれる

基本が個人プロジェクトだから、経験に基づくtips&tricksが集積されがたい、マメなブロガだから検索するとかなりの量がヒットする
非常にhackしがいのある言語に思える
希少なリソース

この人↓
GNUのscheme処理系guileと無数のschemeライブラリのメンテナ、大手jsエンジンv8, jscore, spidermonkey(chrome, safari, mozilla系 &c)コミッタ
http://wingolog.org/projects/
2022/12/10(土) 02:49:33.65ID:2ig+uaBr
>>168,169
FORMは聞いたことないな
数式記号処理といえば、まさに記号処理の為に産まれたlisp実装のMaxima(とMacsymaのフォーク)が、機能面も数値計算(float/rational)も他の追随を許さないと思ってた

優しいUIで売ってるMaple/Wolframと比べる記事の意図がわからんけど

実際、記号処理システムは各言語にあるけど、ほぼ全てMaximaのバインディング、というかタダのラッパでしょ?
(最近流行ってるpythonではSymPyってパッケージ)
なのでにわかには信じがたい話

でもまあ、Fortranは型システムと型パターンマッチが充実してるから、記号処理をフルスクラッチ実装するなら明らかにcより楽
lex/yacc的なインフラがあるのかは不明だし、ML系の方がもっと楽だけど
2022/12/10(土) 03:07:16.26ID:2ig+uaBr
ごめんSymPyのmaximaバインディングはオプショナルだわ、Maximaフロントエンドは対抗馬のSage(Math)の方
ライブラリとしても引けるけど、かなり改変されたPythonインタプリタとしての使用が主な方言だから馴染めず、すぐアンインストールしてしまった
174名無しのひみつ
垢版 |
2022/12/10(土) 03:15:34.08ID:JdvpSrh2
ソフトウェアだけどプログラミング言語ではないよね
数式を扱うソフトってだけ

FORM is a symbolic manipulation system. It reads text files containing definitions of mathematical expressions as well as statements that tell it how to manipulate these expressions. Its original author is Jos Vermaseren of Nikhef, the Dutch institute for subatomic physics. It is widely used in the theoretical particle physics community, but it is not restricted to applications in this specific field.[1]

FORM
Developer(s) Jos Vermaseren, et al.
Initial release1989
Written in C
Operating system Linux, Mac OS X, Windows
Type Mathematical software
License GPLv3
Website www.nikhef.nl/~form/
175名無しのひみつ
垢版 |
2022/12/10(土) 03:25:24.15ID:JdvpSrh2
>>169
Maximaも2001年に死ぬ前の1998年にオープンにして今も有志がメンテしてるらしいじゃん
当人が死んでも嫌ならそれは期待しないで別なの作ればいい
176名無しのひみつ
垢版 |
2022/12/10(土) 03:37:17.29ID:e03UTcBx
>>167
解釈の違いだとは思うが
職業プログラマーというのも千差万別だ
テニスなのかゴルフなのか陸上なのかどれでプロになる?ってのと同じ
仕事があるからその仕事するって立場と
この能力で仕事を切り開くってのもまたプロ
職業プログラマーってのも単に現代的多数派を意図してるだけだろ
時代が昔はFORTRANだけで十分職業プログラマーの言語だったし
今もそれを必要としてる仕事場から見たら立派なプロ用言語

しかも仕事ってのはそれだけで済むんじゃない
プログラミングだけが仕事の職種こそ少なくなってきて

仕事の中身でプログラミングスキルも使う職業が増えている
研究者がプログラミングするのは論文書くための実験と同じレベル

職業実験者がいるとかいないとかいうレベルが職業プログラマーがいるとかいないとか

いま哲学者でも社会学者もプログラミングできて当然
それぞれが必要時に必要な道具をつかう
プログラミングもその一つ
プログラミングのどの言語を使うのかも適時必要に応じて

そういう時代
職業プログラマーなんてのは工場ライン工みたいな存在になってる
2022/12/10(土) 03:57:54.46ID:s+Q+jPJS
>>172
そもそもscipy(numpy etc)の本体はf2pyという自動でFortranライブラリをコンパイルし、呼び出し規約を書き換えるだけのスクリプトなので今更

ビルド違いが沢山あるのはライブラリの実装が沢山あるから
デフォルトでは参照実装リポジトリのwww.netlib.org(分かりやすく書かれているがすごく遅い)からソースを取得してきたり、ベンダ提供の実用実装を使ったりしてるから
intel提供のビルド済Scipyが自炊より数百倍速いのはそういう理由

確かにコードだけ見ればブロードキャストやマスクなど配列演算はFortranより汚い
それでもあえてラップする理由は、対話的に試行錯誤できるインタプリタの利便性
もうバイナリ吐く言語が表に出る時代なんて来ない、永遠に裏方

LISPはREPLも良くて、Cより速いバイナリを吐けるsbclのような処理系もあるけど、見た目がな…
2022/12/10(土) 04:09:49.18ID:s+Q+jPJS
>>174
それがCASというプログラミング言語のカテゴリ、気軽にwebで使えるWolflam Languageを想像すれば
素論特化なら確かに代えは効かないかもね、需要も少ないけど
2022/12/10(土) 04:40:10.48ID:Xmww25Q9
>>177
Maximaは実装も言語もlispなのに、妥協して代数風のinfix糖衣構文を提供してるし、lisp自体が取っつきにくいのは認める
コンパイル専用言語をラップする意義も分かる

しかし、UIも対話性も標準的なインストール手順で、Python+SciPy+Sage+matplotlib…の環境より優れているMaximaをラップする意義は何なんだ?

https://maxima.sourceforge.io/
この公式HPの美麗なGUIと平易な言語を見て、同等の環境構築をすると10GB、おまけにライブラリ依存地獄のPythonを科学計算教育用途に選ぶ風潮が全く理解できない

ちなみにpure pythonは好きだぞ、むしろプライベートで一番使ってる言語
小道具作りたのしい

要するに、なんか世の中変な方向に向かってね?という話
2022/12/10(土) 05:10:46.87ID:s+Q+jPJS
知名度は最近落ちてきてるように感じてるが、リリースを見るとむしろ活発に開発進んでるのか
やはりバックエンド需要?

こういう歴史あるソフトウェアこそ素で使った方が快適なのに、皮肉なものだ
素というかプロットソフトやら各種ツールの連携した環境と言うべきだけど

世の中は何でもパイソンブームだが、本当のITリテラシーを身に着けるにはこういう疎結合で柔軟、ゆえにロバストなシステムに触れておくべき
モノリシックなエコシステムに閉じこもるべきではない
2022/12/10(土) 06:34:19.46ID:s+Q+jPJS
https://en.m.wikipedia.org/wiki/Maxima_(software)
macsymaから半世紀以上コードベースが途切れることなく、実装言語と共に進化しつつ現在も活発に開発が続いてるのか
埃被ったユティリティの類を除き、本格的なソフトウェアでこれ以上の物は存在するのだろうか?もはや畏怖

LISPの得意なコード生成で苦手な配列演算やnumber crunchingをFortranに投げたり、周辺ユティリティとの共進化も興味深い

Common Lisp実装を名乗っているようだけど、公的な規格は約30年前くらいなわけで、実態はどうなんだろう?
もちろんほぼCLな無数の実質方言、Common Lisp拡張/準拠(できる)処理系があるのは知ってる

LISPは手習い程度だけど、これはコード覗いてみたい
182名無しのひみつ
垢版 |
2022/12/10(土) 06:34:20.74ID:SnsJDeio
>>180
Pythonだからモノリシックって発想どっからくんのかね
2022/12/10(土) 06:40:04.09ID:s+Q+jPJS
>>182
それは使い方次第
俺はベターシェルスクリプトであるべきと思ってる
コミュニティがこのままの勢いで突き進めば、間違いなくjsのように歪められてしまう末路
184名無しのひみつ
垢版 |
2022/12/10(土) 06:45:12.47ID:SnsJDeio
>>178
んーそっすねー
だけど大きく見れば数式は数学の言語だから
数学言語をコンピュータ実行に変えてるのは
工場の生産管理の計算をコンピュータが実行するのと同じで
数式を仕事で使い慣れてる人のためのアプリケーションって見れる

数式はコンピュータの世界とは違うから
その間をうめる計算補助アプリケーション


だからエンドユーザーのシステム環境だよ

ソートのアルゴリズムが複数あるのと同じレベルで微分積分とかをどうしたら効率よく計算するかとかは別で
数式を与えて結果を教えてくれるという上位のシステムだから
2022/12/10(土) 06:47:08.23ID:s+Q+jPJS
python公式ドキュメントも以前は参照実装としてページから参照実装.pyへの直リンが豊富にあった
今は性能求められてc実装になり、直リンが減り、参照実装.pyリンクがあっても冒頭でcモジュールを読み込んでおわり

cpythonはもはや本来の目的を果たせていない、なんとか他の実装に頑張ってもらいたい
186名無しのひみつ
垢版 |
2022/12/10(土) 06:52:32.59ID:SnsJDeio
>>183
いまはコンパイルとインタープリタの差は実質ないか
そこの違いは少数以外意味なくて
それよりも何に使えるかという視点が重視

PythonかどうかではなくてPythonで何ができるか
今は画像とかテキストとかのAIライブラリが真っ先に使える
このため

統計ならRのほうが使いやすいらしいし
さっきの数式と同じで
エンドユーザーが自分で使って結果を得るための道具

そこにフォーカスかあたってる
同じ結果が出るなら別の言語でも全く構わない
が情報量からクラウドサポートまでそこがフォーカスされてる

そもそもjsをそう思ってるなら立場が違う
あんたがそれを上回る提案をして育てていく何かをあげればいい時代よ
言葉よりも実行
2022/12/10(土) 07:10:54.86ID:s+Q+jPJS
>>186
計算機は計算機だよ

Pythonもschemeがr6rsのエコシステムや過剰な規定でやらかした事例から習い、small/largeのように水準分けるって議論はメーリスで度々出てた

schemeの実際の処理系はgauche、chickenを筆頭に、規格を遥かに上回る実用性とエコシステムが自然発生したわけで

asyncキーワードの導入あたりまでの話だけど
デコレータやself/clsなどより重要な機構を保守的に(ナイス)ハックで導入したにも関わらず、一旦構文に手を入れてしまった後はもうズルズルと現状追認
2022/12/10(土) 07:19:00.39ID:s+Q+jPJS
舵取り失敗事例はperl5/rakuだね
perl5の便利さで人を集めすぎ、perl6が形になった時にはもう加熱し過ぎていた
python4.0がrakuにならないよう、早めの舵取りを願う
2022/12/10(土) 07:31:54.47ID:EVjopXkn
>>186
Fortranはエンドユーザーの為のものだったからプログラミング言語じゃないね
190名無しのひみつ
垢版 |
2022/12/10(土) 07:46:07.87ID:SnsJDeio
>>189
当時はそんな区分かない
2022/12/10(土) 08:36:46.44ID:bvOgTgRH
今も昔もFortranを書く人はエンドユーザーで、書く人の層もそんなに変わってないが、意図せずインフラとしての側面を持ってしまった事を忘れずに

互換性を破らない範囲で保守性を高める機能はもう最大限に拡張されてるが
いくら保守しやすくする為に言語仕様が整備されたところで、書く人が自分が使えれば良い層なので保守性に気を配る動機が薄い

ちゃんと宣言すればJava並みの戒律も課せるが、互換性のため宣言しなければルーズ

オーパーツのようなライブラリをよく目にするから錯覚しがちだが、それは単に歴史が長いからであって、用途からしてFortranでライブラリ化するような大きいプログラムを書く事は稀
192名無しのひみつ
垢版 |
2022/12/10(土) 09:09:17.28ID:W3nqQwVf
機械語やアセンブラがシステム用で
FORTRANが科学技術計算用
COBOLが事務計算用
そういう時代だ

エンドユーザーではなくてコンピュータを使う知識を持ってるやつ用
2022/12/10(土) 09:19:08.37ID:Go3DCj6r
数式で∑書くより
for文のほうが楽。
2022/12/10(土) 13:59:12.04ID:S+zKPIyK
>>193
ざっくり領域のΣが一番楽
そのままじゃ解けないけどw

それを真面目に書くとfor文になって、

それを数式で書くとk=0を下に、nを上に書いてるようなΣになって
しかもそれが連続する

状況によっては積分記号で書いたりするか
そしてその積分が解析的に解けないものの場合は
またfor文にするw

後はΣじゃなくて掛け算のΠになる式を使おうがご自由に
2022/12/10(土) 18:52:59.10ID:ke0ateTM
>>181
人類の叡智だな
196名無しのひみつ
垢版 |
2022/12/11(日) 02:05:40.58ID:RwdloU+3
◯( ´∀` )◯ < 僕のBASICはコンパイラちゃん!
197名無しのひみつ
垢版 |
2022/12/11(日) 13:33:48.99ID:EcYi6465
関数型プログラミングだとfor文はご法度なんだよね?
2022/12/11(日) 13:46:46.22ID:XNXN2ynZ
代わりにどう書くの?と素直に疑問
2022/12/11(日) 14:06:57.79ID:abm4+iSW
>>18
既にあったか…
2022/12/11(日) 14:15:34.91ID:p5u/7TEf
C++が出来たころ、
C++からFORTRANのサブルーチンを呼び出すコードを書く作業を延々としていた記憶
201名無しのひみつ
垢版 |
2022/12/11(日) 15:06:10.75ID:tecsYD/h
>>198
再帰
2022/12/11(日) 15:08:33.32ID:1l3cc1Co
再起だとLISPかPrologか。
見事に消えたが。
2022/12/11(日) 16:39:13.74ID:Q+mERdBw
FORTRANって体育会系のかほりがあって嫌い
文化系帰宅部はCっしょ
2022/12/11(日) 16:46:28.62ID:XNXN2ynZ
Cはエリートが使う言語で、プログラムできない人でも結果出す為に使うのがFortranだと思ってた。
Numerical Recipes in C とか頑張ったの?
205名無しのひみつ
垢版 |
2022/12/11(日) 17:31:22.17ID:wt+ojXMh
>>202
リブートしちゃうぞ
206名無しのひみつ
垢版 |
2022/12/11(日) 17:37:46.29ID:wt+ojXMh
>>203
CはUnixマシンのシステム言語
FORTRANは旧来型マシンの科学技術計算言語

まずマシン環境が違う
システムを弄るためのCだ
システムを知ってることが前提
というかUnixと一体だ
Unix作るための言語だったから
だからCならUnixのなんでもできる


FORTRANはサイエンティストが使いやすいように
それまでのホストマシンのアセンブラに一枚噛ませた言語
それまでのホストマシンはマシン独自のアセンブラでCのようなシステムだけど汎用って言語層がない

比べるのが間違い
207名無しのひみつ
垢版 |
2022/12/11(日) 17:38:29.65ID:wt+ojXMh
>>204
わかってないね
208名無しのひみつ
垢版 |
2022/12/11(日) 17:44:00.06ID:wt+ojXMh
CはOSとしてのUnixと一体
旧来型ホストマシンはCPUも独自マシン言語
そのアセンブラも独自アセンブラ
そこで動くOSもアセンブラで書いた独自OS
その独自OSの上でサイエンティフィックな視点でプログラミングできるようにしたのがFORTRAN
事務計算で金利計算まで丸めずにできるようにしたのがCOBOL

時代が下ってミニコンの研究者用OSを作るために作ったのがC
Cで作ったのがUnix
Cはミニコンのアセンブラをラップしてる

それぞれがいいものだったから移植されていろんなマシンで動くようになってる

がそれぞれの生まれ持った特長はそのまま
209名無しのひみつ
垢版 |
2022/12/11(日) 17:48:05.38ID:0Iwe1aa6
>>206
FORTRANを使うにはサイエンティフィックな知識が前提

Cはシステム知識が前提

FORTRANでOSをカスタマイズするようなことはしない

Cは何でもできるから科学技術計算に使ってもいい
ただしそのためのライブラリがなければ一から自作しないといけない
いまライブラリあるのはそれを作ってくれた人のおかげ

Cなら同様になんでもできる
その反対に手間と時間がかかる

言語ってのは手間と時間とカスタム度合いを天秤にかけて必要に応じて使うもの
210名無しのひみつ
垢版 |
2022/12/11(日) 17:52:00.12ID:0Iwe1aa6
日本人がよくあるのは
ライブラリとか言語そのものとか
作ってくれた人がいて
その人がどんな必要性から作ったのかがあるのに
そんなことは知らないやつが多いこと

海外から出来合いものを持ってきて
俺様が持ってきたんだおまえら知らねーだろ
みたいに自慢し合う

たから自分で発展させていくことに想いが至らない

日本が世代間でケンカするのもそういう引き継ぎがないから
いつも新しいものを横から持ってきて
おまえら知らねーだろ
ジジイ!
こういう感じ

作った人のことをしれよ
どんなふうに変化したのかを人の歴史として語れよ
そうすれば世代間ケンカなんてなくなる
211名無しのひみつ
垢版 |
2022/12/11(日) 18:03:11.98ID:5ZR31BoA
英語の世界ではライブラリとか紹介する時にどこどこの誰々が作ったライブラリって紹介されることもよくある

日本じゃ天から降ってきたみたいに元からあるようにしか紹介しないどころか
使い方を紹介してる翻訳者の大学の先生が偉そうにオレが作ったように書いたりしてる
212名無しのひみつ
垢版 |
2022/12/11(日) 18:07:11.48ID:5ZR31BoA
>>202
LISPは消えてない
いろんなところに影響し続けている
2022/12/11(日) 18:15:17.84ID:eDCYAbcY
>>208
違うぞ。Unix の開発当初はアセンブラ。Cで書き換えたのは開発開始から4年後。
214名無しのひみつ
垢版 |
2022/12/11(日) 18:17:14.89ID:5ZR31BoA
>>213
はい訂正入りました
ありがとう

という積み重ねよ
2022/12/11(日) 18:18:36.25ID:XNXN2ynZ
書きやすくて読みやすければCでもFortran でもRatforでもいいよ。
コンパイラ作るの他所の人だし。
って、天の声が聞こえた気がした。
216名無しのひみつ
垢版 |
2022/12/11(日) 18:20:10.88ID:5ZR31BoA
システムの発展もOSの発展も言語の発展も
こういう細かいことをみんながやってきたから

だーんと突然できたわけじゃないし
敵と敵が戦うだけじゃできない

敵にしてるのはビジネスだから
作ってる側は敵も味方もない
217名無しのひみつ
垢版 |
2022/12/11(日) 18:22:31.96ID:5ZR31BoA
その代わりビジネスになると
理由や温情なしに
生き返ることのないよう徹底的に叩き潰せ
ってのがアメリカ
218名無しのひみつ
垢版 |
2022/12/11(日) 18:36:23.60ID:rSWDwZp2
昔、FORTRANで仕事してたってけ。
好きな言語だったよ。
高速道路の長大トンネルの制御プログラムで
水噴霧パターンを当時覚えたばっかのビットマップで組んだ。
PL/1も使ってたなあ。
情報処理試験でPL/1を選ぶと簡単だった。
そういや本物のプログラマはPascalを使わないとかいうコピペが出回って
プロはFORTRANを使うのだみたいなことが書かれていたっけ。
2022/12/11(日) 21:22:29.89ID:Lv9DrXwM
>>181
lispはFPUを想定せず設計されてるから基本的な浮動小数点の罠に引っかかりにくいとか?

CL/schemeですら未だ数値型は基本有理数、リテラル1/3はそのまま1/3だし+-*/等の基本演算も有理数を返しオーバーフローも無い、数複素まで断らなければ有理係数
特にschemeはexact->inexactでfloatへのキャストや超越関数で警告出て非常にうるさい
2022/12/12(月) 08:38:54.85ID:jhqq4TAZ
fortran触って珍しい機能と思ったのはpointer(type, pointer :: p)だけじゃなくそのpointee(type, target :: x)を宣言するところ
コンパイラへのヒントなんだろうけど、書く側読む側にも分かりやすい
確かオプションか宣言しない限りは無くても動いてしまうはずだけど
2022/12/12(月) 08:49:12.18ID:jhqq4TAZ
デフォルトが参照渡しだしポインタ算術も無いから、あまりポインタ使う機会も無いんだけど
やはり型をパラメトライズ(制限)して使うジェネリックコンテナ作る時にポインタはあると便利
2022/12/12(月) 10:43:48.15ID:85+C3dR6
>>219
今はもう整数無限精度が標準の言語は多いし、浮動小数点がデフォルトでも有理数は標準ライブラリ提供の言語は多いけど、それでもlisp系標準の無限精度有理演算は簡単な線型代数に便利よね
掃き出し法等多くのアルゴリズムは四則演算のみだから、際どい0判定の必要なピボット選択がzerop/zero?だけで済む
分母分子が大きいと今のPCですらアホみたいに遅いから、シュミレーションやCG用途には全く使い物にならないけど

浮動小数点を扱う線型代数ライブラリは本当に凄いと思い知らされる、誤差伝播の上界伝播ロジックやファインチューンされたill-conditionヒューリック判定の塊
2022/12/12(月) 11:05:44.92ID:dTgTrzzj
数値型の値一つが無限にメモリを食い潰す可能性があるから、全てのオブジェクトを定幅ポインタで扱う言語でないとそういう配列は面倒だな
分子分母を格納した構造体へのポインタ配列なんだろうけど、無理数の出るケースも考慮してfloatとのタグ付きユニオン型である必要もある
2022/12/12(月) 11:17:55.91ID:dTgTrzzj
分子分母も無限長整数だから、動的割り当て配列へのポインタを格納した構造体とのユニオン型へのポインタの配列だな
電卓としては便利だろうが、パフォーマンスはそりゃ絶望的だろう

賢い人の書いたfloat演算ライブラリ使ってりゃok
2022/12/12(月) 12:01:52.92ID:fE+awSzS
そこで逐次評価をせず代数的に簡約する記号計算の出番ですよ、数値計算の代替にはならないけど

lisp系で有理数型がプリミティブなのは悪手だと思ってる
可能な時は約分してメモリを節約という涙ぐましい努力はしてるけど、それでも無限に時間とメモリを食う入力はいくらでも選べるから、サーバで不用意に外部入力を受け付けるとDoSで死ぬ
外部入力の評価は一般的に危ないけど、ただのプリミティブ数値型の四則演算で死に得るというのは、意識されにくいかなりの落とし穴
念入りな消毒が必要だから、むしろ自由に切り離せるライブラリ提供の方が面倒が無い
2022/12/12(月) 12:48:34.82ID:+FBlEamX
OS管理とかで
「logファイルの差分を取って増分に対して処理する」
という表現に対して

差分って数学的な用語に限定して欲しいなあ

って考えてしまう人も世の中に一定数いるんだろうかw
2022/12/12(月) 14:22:29.22ID:dTgTrzzj
>>225
無制限に肥大するのは例えばループで値を累積するような時であって、バッファのサイズで制限すれば問題なくね?
入力の数値型がnバイト、任意だから簡約も出来ないとして、累積乗算(*=)すれば1ステップでn^2バイト、2ステップでn^3バイト、k-1ステップでn^kバイト、指数関数的に増えるという話で
例えば初期値の分子分母が8バイトでn=16バイト表現を想定すれば、たった10ループで8GB
時間的にもギガ桁の乗算とか無理だし、意義のあるループ(数回なら書き下せばいい)を使うアルゴリズムに有理型は実質使えないというだけ

ループ無しでバッファを10文字+まで制限すれば四則演算くらいは何とかなりそうなものだが、実際に無限長整数の言語でもsanitizeされたevalは許されてる
有理型は乗算より足し算の方がヤバい(乗算を必要とする)ので、見積もりが甘過ぎるとは思うが
2022/12/12(月) 14:41:31.42ID:dTgTrzzj
そもそもlispでevalは本当にヤバいからやるな
式でなくフォームから決まった数のリテラルを読み取ってリストにするだけでマズい
#1=全てのリテラル表記全#1#が自己/相互参照をサポートしている
ちゃんと無限サイズのオブジェクトとして評価されるが、バッファが定数文字と思って不用意にアクセス舐めたら無限ループ
他にいくらでも罠がある

そもそも言語の評価器を流用しようという発想がそもそもの間違い、四則演算や文字列のパース程度くらい自分でやれ
2022/12/12(月) 14:41:37.08ID:OT63RdQo
πを計算させたらおちた。
2022/12/12(月) 15:29:31.62ID:ENHMK9f1
>>228
なんだこれ
再帰やジャンプまでできてしまうのか
さすがエイリアン語
2022/12/12(月) 15:39:14.33ID:ENHMK9f1
関数や演算子なら空環境渡してevalを制限できるけど構文なら回避不能だな
232名無しのひみつ
垢版 |
2022/12/13(火) 16:14:51.42ID:qx2DLgPv
愛すべき古き良き計算機言語たち:
FORTRAN
COBOL
LISP
C
Pascal
Ada
BASIC
SQL
Smalltalk
2023/01/11(水) 19:20:40.39ID:1fRIzAm1
>>232
Algol
Lisp
APL
SNOBOL
CLU
C++
Haskell
2023/01/22(日) 00:56:15.11ID:q/GI0F49
あなたはこのスレッドにはもう書けません?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況