【C?】最初の言語に何を選ぶか【Haskell?】
■ このスレッドは過去ログ倉庫に格納されています
>>156
うちの所長が日本語の形態素解析の仕事をしたときに、
B 全の方眼紙を近所で何枚も買ってきて
日本語の形態素に関する文法を描いてたことがある。 あと、カルロス・ゴーンさんが
日産のスカイラインGTを復活させるという話があって、
それ用の新しい製造ラインを構築するという話があって
所長が三菱総研の話で入ったことがある。
そんとき所長はSQLの話で入ったのだけど、
ER図(エンティティ・リレーション図)という
Java のオフジェクト図みたいなのを見たらB全で、
とても分かりやすかったという話を聞いたことがある。 >>158
> きみ頭悪いって言われるでしょ
馬鹿と鋏は使いよう
馬鹿と金槌は使いよう
きみは決して経営者になるな。
子供に金槌を持たせると何でも叩くから。 >>145
>>146
現代ではネットワーク・コンピューティングが一般的だが、
CPU が一個(待合わせの必要がない、ワンプロセスの処理系)の
処理系だと、いわゆる「フォン・ノイマンのボトルネック」という話に
なるんだわ。
どっかのメモリ領域から引っ張ってきた値を処理して、新しい
値を格納する間に、他のプロセスが元の値を書きかえちゃったら
辻褄が合わなくなるだろ? そのために「排他制禦」っつーものが
あるんだけれど、いちいちそれをやっていると実行効率が下がるんだ。
C 言語はハードウェアべったりの「超高級アセンブラ」
(要するに、いわゆる「高級言語(第三世代)」ですらない
第二世代の言語)と云われていたし、Haskell は
「遅延評価」というコンセプトに基づいているので、
「どこに位置づけたらいいのかの判断が難しい」という話になる。
「『竹内の tarai 函数を』 Haskell で書いて実行する」
とかいった話は、掘り下げておいて損はないと思う。
「入山のアルゴリズム」も参考になると思う。 結局は「一番距離の近い周りが使っているもの」になるんだろう。 >>162
> 結局は「一番距離の近い周りが使っているもの」になるんだろう。
いや、昨今はそのあたり、昨今は切実な話だぞ?
守秘義務契約でガチガチに縛られてて、
テレワークで同じ職場の人間と会話する機会もなくて、
自粛要請のせいで同業者と飲み会をすることもできん。
コーディングで詰まったときに誰にも相談できんというのは
しみじみキツいので、まだしも使っている人間が多い Java は
選ぶ価値があると思う。
ただ、昨今は言語について深く掘り下げようという人間は
少数派なので、けっきょく C 世代の年寄りばっかりが集まって
愚痴を垂れるばっかりになってしまうのだが ……
せめてもの救いは、家庭用のビアサーバーが普及したことくらいかな。
ウィスキーやレモンサワーだと、糖分が少ないせいか悪い酒に
なりがちだ。 仕事ならなおさら、チーム内で使っていない言語を勝手に選ぶわけにもいくまい。 >>151
可能かどうかより、周りが使ってるかどうかだろうけどね。
電子工作系でもRust使った作例はごく僅か、ほとんどC/C++とアセンブラだもんね。 >昨今は言語について深く掘り下げようという人間は 少数派なので、
プログラミング言語の栄枯盛衰が激しいからね。掘り下げるなんて言ってる間に次の流行りが来る。
その多くがC/C++の欠点をあげつらってこんなに素敵なんだ、これからはコレが主役だ!とか言ってたけど、結局その他大勢の中の一つになっていったしね。
まあ、新しい言語を作る側の人間もまたC/C++使いだったりもするんだろうけど。
てか、人生ズボラ派としては、いい加減、文字をずらずら並べてプログラムを記述するというスタイルそのものがどうにかならんのかな?と思ったりはするわ。 >>167
> 文字をずらずら並べてプログラムを記述するというスタイルそのものが
> どうにかならんのかな?
それは「ノンテクスチュアル・プログラミング」といって、
わりと人類の夢みたいなところがあるんだが、実現しようと思うと
JIS フローチャートとかで育った人が話をややこしくするのだ。
SPD とか NS チャートとか、構造化に向いたものもあるんだけどな。
早稲田大学(日立?)の二村先生は、「この世から JIS フローチャートを
撲滅したい」と公然と主張していらっしゃった。
いちど筧先生の研究室のお邪魔したときに、外廊下のどんづまりが
二村研究室で、仕事で日常的にフローチャートを書いていた私は
逃げ帰ったことがありました。 もう言語から作っちゃうのが早いような気がしてきた。
昔の Fortran 77 で、「最短のプログラム」というのがあって、
「END.」だそうだ。
Pascal だと begin 〜 end がやたら目についたし、
C や Java だと「main()」で始まるし、
Java で「exit()」とかやると JVM そのものが落ちて面倒な
ことになる。
そのあたりを整理して、変数スコープをはっきりさせて、
強い静的な型付けを強制して、swap とか
loop 〜 until 〜 do 〜 repeat とかも導入して、
void だったら 「repeat.」とちゃんと書かないと文法エラーになるような、
かっちりした教育用の言語があったら、
遅かろうがなんだろうが使う価値がありそうに思う。 IBMメインフレームのアセンブラなら、最短のプログラムは
ST__EQU_*
____SR__15,15
____BR__14
____END_ST
IEFBR14だ >>171
さすがに濃すぎてわからん。うちらは通信用のスーパーミニ
(たしかハネウェルのコピーの NCOS)だったので、
いわゆるメインフレームは触ったことがないのだ。
ひょっとして、「白い机の 360」とかの世代の方ですか? さすがに…
360、370の後継の z/OSです
ですが、IEFBR14 は360の頃から使用されていますね
何もしないで戻り値として 0を返すだけのプログラムです
intelで戻り値をaxレジスタにセットするように、レジスタ15に0を設定しています >>173
私も「NCOS」といっても「スーパーミニ(MS140以降)」の時代なので、
「NCOS 1 アセンブラ」はちょっと齧っただけ。
入間基地の FADP にメインフレーム級の NCOS が
あったのは見た記憶がある。
ミニコンピュータといっても、「PDP」シリーズは写真でしか
見たことがなく(あのカラーリングの感性はいかがかと思う)、
PDP-11 の仮想記憶版の拡張型であるVAX-11(いわゆるブルー・バクスン)は
NEC の府中事業場の隅っこで埃をかぶっていたのを見たことがある。
つーても、あれってサイズが高級車一台分くらいあるんだよなぁ …
「“ミニ” コンピュータ」っつーんだから、せめて大型冷蔵庫くらいの
サイズにしてほしい。
自宅にサーバールームを用意して、17 インチのラックを設置するとかいうのは
さすがに控えようと思うのだが、ケース買ってきて自作マシンというのは、
若気の至りで一度やらかしたことがある。 ぶっちゃけ、高級アセンブラとしてのC。
その上はいろんな哲学を学ばないといけないから。 >>176
>その上はいろんな哲学を学ばないといけないから。
C は記述の粒度が小さいもんだから、
小さいプログラムを自分ひとりで書いているうちは
いいんだけど、なんかしら全体構造が見えづらくなっちゃうんだよな。
若いうちはそれでも力業でなんとかなるんだけど、さすがに
三十代半ばを過ぎると「三日前の自分は他人」というのが
身に染みてきて、ちょっと大きなプロジェクトでチームを組むと
なにかしら行き詰まりを感じたりする。
私の場合は、その先のポジションが Java だっただけで、
C♯とかいう人もいるかもしれない。 >>177
それならばRustが良いですね
Cと同じく低水準な記述も可能でネイティブコンパイルされGCも無し
C言語がとっても便利で強力になったものがRust言語 最初に学ぶというからには、手っ取り早くでなくということではなく、体系的に学びたいということなんだよね
僕はC押しだったけど、たしかにCはかならず一度は通らなくてはならないと思うのだけど、最初にCで挫折してしまうより、もう少し取っつきやすい、アルゴリズムに集中できる言語から入るのがいいのかなとも
順番に拘らないというか どうせやるんだから(やらなきゃ話にならないんだから)
最初からやったほうがいいに決まってる
後からで良いって逃げてる香具師は使い物にならない(レベルで満足してるのが多いイメージ) どうせやることになる言語はrustやhaskellに限らずたくさんあるんだから、何もそれらを最初にやる必要は全くなく、基礎的なもの分かりやすいものから順に積み上げるのは妥当だろう >>181
おかしかったワ:
最初に学ぶというからには、手っ取り早くということではなく体系的に〜 >>183
妥当というか当然だよね
このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる >>185
> このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる
それは×かなぁ。
「こんなマイナーなスレをわざわざ荒しにくる奴は、どっか心を病んでいる
『精神的な社会不適合者』ばかりだから、プログラマ文化からずれすぎてる」と
いうのが適切だと思う。
先天的に脳がおかしい(ということは、「頭がおかしい」)けれど、
「自閉なんだけどフツーに有能なプログラマ」は電算業界には普通にいるし、
理数系の研究者に関しては、むしろ「自閉系である」というのが
強みであったりする。
「世間とずれすぎてる」というのは、同調圧力に負けているんじゃないかなぁ。 >>174
PDP、なんかレトロフューチャーみたいでかっこいいじゃんと思う。 >>188
漏れもそう思う。紫とか使っちゃうところがパンクチュアルだと思った。 DECがロゴの色をバーガンディに変えたのは1990年代のことだがな。
PDPの時代はいわゆる"Small Blue" そうだったんだ。
仮想記憶システムをフォローした VAX-11 は、
「ブルー・バクスン」と云われていたのは憶えている。
Prolog で有名な中島(「ナカジマ」ではなく「ナカシマ」)
秀之さんは Prolog 処理系の VAX への移植で有名だが、
未見だけれども「秘境 Prolog に名前呼びの修羅場を見た!」
という論文があるとかないとか(もうすぐ『bit』の電子版が
出るらしいので、興味があったら購入して探していただきたい)。 そういえば思い出した。
DEC はパソコンにも手を出して、ケース型のパソコンを出して
いたんだよな。それで「DEC なら信用できるだろう」と思って
秋葉原で買ったら、パソコン業界からいきなり撤退しやがった(T_T)。
以来、「DEC」というブランドは信用しないと決めている。
同様に、「Microsoft」「アスキー」とかいったブランドは、
基本的に信用しないと(個人的な意見だが)決めている。 DECの関東工場で生産されるパソコンはMade in TOKYOと銘打ってHPが販売してる。 最速ならvscodeでもダウンロードしてきてjavascriptでもてきとうにいじるのが良いかもね。
そのあとは知らんが。 vscodeだと汎用的すぎて開発ターゲット決めるところからだし敷居が高い
よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ
遊ぶ分にはデバイス購入不要
他にもUserscriptの改造とかすぐ目に見えて動かせるものが良いはず >よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ
で、具体的に何?初めての人はそれがわからんから苦労するんだろ。 >>197
有名どころで取っつきやすいのだと
https://www.microsoft.com/ja-jp/makecode
ここのArcadeかmicro:bitのチュートリアル
いっそ初手ならここのブロックプログラミングで良い気もする >>193
>>194
そうなのか orz
「がっちりマンデー」の報道は嘘だった(法律上は「嘘」とは
言えないだろうが)んだな。
「Made in TOKYO」といっても、
「東京都内で組み立てています」というだけの話であって、
たとえば餃子の餡と餃子の皮を中国から輸入して日本で包めば、
「Made in Japan」の餃子になっちゃうわけだからなぁ …… 組み上げたあとの検品をちゃんとしてくれたら文句はないんだけど
最近は国内メーカーの冠ついてても信用ならんのよね マウスコンピュータの評判はどうなんだろう。
本来ならば、いわゆるノートブック・パソコンは
姿勢が辛(つら)くなるのでお勧めはしたくないのだが、
新型コロナウイルス感染症の流行明けだと、
「矯正出社」というのがあってリモートワークも
ままならなくなっているらしい。
昔は「読書机」というものがあったのだが、
昨今はパソコンも小型化しているので
なんかしらそういう環境があってもいいと思う。
「最初の言語に何を選ぶか」というのも重要なんだが、
まず開発環境を整備しないといけないと思う。 >>202
基数的定義と序数的定義があって、N88 の BASIC では
OPTION BASE という構文があって、0 と 1 のどっちで
始めるかが指定されていたりする。
このあたり、真面目に議論すると長くなるので、
待て続報。 >>202
> これってfortranってどうやって配列添字アクセス実現してるんや?
「fortran」と一括りにするのは先達に失礼なので、
「FORTRAN 60」(別名「大文字のフォートラン」)と
「Fortran 77」(別名「ナナナナ」)と、
NC旋盤とかで使われている「ハチマル」というのがある。
「フォートラン」というのは、フォームラ・トランスレイター
の略語で、もともとは「F-1(フォームラ・ワン)」と同じように、
「サーキット上の怪物」として数値計算(=科学技術計算)として
君臨していたのが「大文字のフォートラン」だった。
さすがにレガシーコードなので、見たことはあるが動かしたことはない。 屑な IME が、「フォーミュラ」のつもりで打ったら「フォームラ」と
変換しやがった(-_-x)。
くたばれマイクロソフト。 formuraかfo-muraとでも打ったか
ローマ字設定でlaをラにしてて予測が負けたか 投稿前の見直しを怠った言い訳にはならない
素直にごめんなさい言えない奴はいらない >>286
「formura」を変換すると「ふぉrむら」になったりする。
「program」を変換すると、「ぷろgらm」になったりする。
こんな屑な IME に慣らされちゃったら後生が悪かろう。
このあたり、「デジタル庁」がなんとかしてほしいと思うが、
「ディジタル庁」でない時点でけっこう減滅しているし、
「digital」を「ぢぎたl」と変換する Microsoft の
IME が憎い。
「microsoft」は「みcろそふと」だそうだ。
「alfa」は「あlふぁ」で、「beta」は「べた」だという。
デジタル庁は、国家予算を使ってでも、まともな IME を
作ってほしいんだが。 formula translator の formula は数式って意味じゃなかった?
数式を変換して書きやすい文法になってるからFORTRANという名前になっているのだと。
あとフォーミュラカーは、F1は怪物かもしれないけど、形がレギュレーションで規定されている車ぐらいの意味しかないと思うし、いろいろ勘違いしてない?
formulaの綴りも間違ってるし。
大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。
ローマ字入力と変換に英語入力を期待する方がおかしい。
気になるなら使うものを辞書登録しておけば解決すると思うが。 >>209
> 大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。
それは個人の語彙の範疇との間で勘案すべき問題であって、
「日本人」の範疇で括っちゃうのは乱暴じゃないだろうか。
観賞魚マニアだったら、「beta」だったら「闘魚(ベタ)」と変換して
くれれば有難いけれど、「β」とか「ベタネタ」とかいった用法は、
それぞれのユーザに配慮してほしいと思う。
学習機能で、ようやく使い勝手がよくなってきた辞書が、いきなり
更新されてチャラになったりしたら泣けるだろう? >>209
> 気になるなら使うものを辞書登録しておけば解決すると思うが。
うん。速記タイプとかリアルタイム字幕放送とかについて調べてきてから、
もう一回来てくれ。 formulaのスペル間違いの言い訳はどうして飛ばしたの?
ちゃんとして? >>211
それらとプログラミング言語になんの関係が?
IMEはキー入力を日本語文字列に変換する写像であって、その写像の優劣は目的によって異なった物差しで測られることになるだろう。
速記タイプとかリアルタイム字幕放送のIMEでプログラミングの話題がしやすいとは思えないけどな。
ちなみに自分は色々兼ね合いとってDvorakJPぐらいに留めてる。漢直を覚えようとしたこともあったが諦めた。
あと、フォーミュラカーの件はスルー? >>214
ガイガイガイガイw
あそれwガイwあそれwガイw
ガイガイガイガイwあそれwガイw 仕事辞めてやることなくなった爺が話し相手欲しくて居ついちゃってんだよ。相手しちゃダメ。 あ、やっぱ自分のことだって気づいてたんだ
みんなドン引きしてるよ 初心者向けというのなら、
実行効率はそんなに重視しなくていいし、
メモリサイズも大きくても構わないだろ。
あとは構造化プログラミングに向いた
ステートメントが整備されていて、
そこそこモジュール化にも考えてくれていて、
処理系が普及しているもの …… となると
あんまり思いあたらないなぁ。
高校の数学の先生とかだったら N-BASIC かなんか
使いそうだし、小中学校では(タートル・グラフィクスは
あまり普遍的ではないけど)LOGO になっちゃいそうだ。
文科省あたりが旗振って、教育用言語の規格を作ってくれれば
いいと思うんだが。 こどもの学校配布のiPadにはScratchがはいってる
構造化・イベント駆動プログラミングで現代的だし
Playgroundだから本質的でない問題に悩まされずに済むし
Eテレの番組まであるんだから実質標準じゃないかな >>223
「MicroSoft」と聞いただけで怖気(おぞけ)を揮(ふる)うのだが、
正直な話、「ビル・ゲイツは印足して改心したかもしれないが、
マイクロソフトという企業体が、今後何をやらかすか」に
ついての意見は保留しておきたい。 >>223
由来とかについて調べてみたところ、
Scratchはそれほど悪い言語ではないかもしれない、と
思った。
ちょっと近所の大きい本屋に行って、Scratch の処理系を
インストールしていろいろいじってから、コメントしたいと
思う。 マジで変な奴居着いたな
もうコメントしなくていいよ 正直な話、荒らしが出てくるのはどうでもいいんだが、
頼むから sage 進行をお願いしたい。
連続してプログラム技術板の上位で出てくると、
古参の民に嗤われちゃうんだよ (T_T)。 Microsoft を MicroSoft と書くだけで、うまく認識できないというか、インチキくさいというか… 子ども向けならマイクラのコマンドで遊ぶのもいいと思う。んでスクラッチだと思うけどマイクラのワールドにプログラムで動くエージェント召喚して働かせる事もできる。
スクラッチで作ったフローはJavaとPythonで表示されるから、高学年はコード編集して遊んでる。 スクラッチはJavaじゃなくてJavaScript 製だよ >>231
『プログラミング演習における シンボルの名前付けに対する指導』
(https://gakkai.univcoop.or.jp/pcc/2018/papers/pdf/pcc034.pdf)
とかを読んでからまた来い。
Java に慣れちゃうと、そうなるんだよ。 >>237
詭弁に過ぎない
固有名詞の話とは関係ない > 詭弁に過ぎない
とかいって逃げる奴が多いから、短文系の BBS は
「便所の落書き」とか言われちゃうんだよなぁ。
そもそも、「固有名詞」じゃなくて、「命名規則」の
話をしているんだが。
「N0013」とか「X0023_05」とかいった命名規則を
強制されてみると、その苦労は感得できると思うが。 >>231 は固有名詞の書き方について突っ込んでいるのに
君が >> 237 で勝手に命名規則の話をしているだけだよね 話を整理しよう。
>>240
> 固有名詞の話とは関係ない
というのは、何の話をしているんだろう。 なんかのJavaクラスに、マイクロソフト実装で処理をするか自前実装で処理をするか切り替えるメソッドがあったとして、
useMicrosoftImplementation(bool)ではなく、
useMicroSoftImplementation(bool)と命名されてたら、
プログラマーの質を疑っちゃうね。固有名詞もちゃんと書けないのかと。 「荒らしもスレの賑わい(読み筋は「枯れ木も山の賑わい」)」と
いうネット俚諺もあるのだが(あるのか?)、
スレが停滞すると楽しみがなくなっちゃうので、
ザコネタでもいいから投稿があると活気が出そうに
思う。 スレが停滞しているのはMbさんが住み着いたからだぞ >>245
まぁ、落ちなきゃいいじゃん(笑)。
墜ちそうになったら、age てくれるひとがいるかもしれない。
確かに書き散らかしたという点では反省するしかないのだが、
なんかしら「まとめ」的なものを提示しないと卑怯だ、
という話はありそうに思っている。 >>246
つーか、FORTH の処理系から書いた(笑)。
社会人になってから一年目に NEC に就職したのだが、
そのとき防衛関係の「RMA」っつーのの担当だったので
航空自衛隊の各サイトのアベイラビリティを計算しなきゃ
いけないので、それ用の言語を作っちゃったんだわ。
で、そのコンパイラの中間言語として、
FORTH もどきのシステムを組んだことがある。
だから、ネイティブな FORTH を扱った経験はないんだわ。 あと、「Make 10」っていうパズルがあるじゃん。
「0 を含まない四つの異なった数字で、加減乗除だけで
10 を作れる」っていうやつ。
あれの全数解を求めるのに、「いっぺん逆ポーランド記法に
落として、FORTH みたいな仮想機械の言語で片づける」と
いうのはやったことがある。
IT の電卓も根強いファンがいそうだから、「逆ポーランド記法」と
いうのは、けっこう(日本人限定かもしれないが)人気があるのでは
ないかと思う。 >>250
FORTHがないので手近な言語でやってみますね
まず逆ポーランド記法(RPN)を計算する関数を(加減乗除の)二項演算子のみ対応でこんな感じ?
function execRPN(rpn) {
const stack = [];
for (const x of rpn) {
if (typeof x === 'number') {
stack.push(x);
} else {
if (stack.length < 2) {
return NaN;
}
const a = stack.pop();
const b = stack.pop();
const c = eval(`${b} ${x} ${a}`);
stack.push(c);
}
}
if (stack.length === 1) {
return stack[0];
} else {
return NaN;
}
}
これなら小学生にも作れそう >>250
その「Make 10」パズルを逆ポーランド記法を計算する関数で解くには
総当りで逆ポーランド記法を生成して計算して10になるのを探せばいいんですよね?
加減乗除は重複組み合わせ(combinationsWithReplacement)で使ってよくて
それと数字を合わせて順列(permutations)を生成すれば総当りになりますね
結果10以外にも使えるように引数answerと数字も任意の長さで引数numberListとして
const { combinationsWithReplacement, permutations } = require('iterator-tools');
function make10(answer, numberList) {
const opList = ['+', '-', '*', '/'];
for (const ops of combinationsWithReplacement(opList, numberList.length - 1)) {
const list = numberList.concat(ops);
for (const rpn of permutations(list)) {
const val = execRPN(rpn);
if (val === answer) {
return rpn;
}
}
}
return null;
}
これも順列組み合わせを習った小学生ならすぐ作れそう 実行してみました
> make10(10, [1, 3, 3, 7])
[ 1, 7, 3, '/', '+', 3, '*' ]
> make10(10, [8, 4, 7, 3])
[ 8, 3, 7, 4, '/', '-', '*' ]
> make10(10, [6, 9, 6, 5])
[ 6, 9, 6, '-', '/', 5, '*' ]
> make10(10, [9, 6, 7, 4])
[ 9, 7, '+', 4, '/', 6, '+' ]
> make10(10, [3, 6, 6, 9])
null
> make10(10, [0, 0, 0, 0])
null
後ろ2つは解けない問題なのでnullで正解です
解けた方は逆ポーランド記法を普通の記法に戻して検算してみると
(1 + (7 / 3)) * 3 = 10
8 * (3 - (7 / 4)) = 10
(6 / (9 - 6)) * 5 = 10
((9 + 7) / 4) + 6 = 10
ちゃんと解けているようです
いきなり(7 / 3)とか(7 / 4)とか一時的に分数にしちゃうのですね
小学生向けの素敵なプログラミング課題だと思いました ■ このスレッドは過去ログ倉庫に格納されています