【C?】最初の言語に何を選ぶか【Haskell?】
1 :Mb :2021/09/09(木) 17:13:45.64 ID:yI7BAQ6X.net 前スレ ぶっちゃけ始めるのにいい言語て何? http://mevius.5ch.net/test/read.cgi/tech/1583223433/ ぶっちゃけ始めるのにいい言語て何 part2 http://mevius.5ch.net/test/read.cgi/tech/1594883518/ ぶっちゃけ始めるのにいい言語て何 part3 https://mevius.5ch.net/test/read.cgi/tech/1599110613/ ぶっちゃけ始めるのにいい言語て何 part4 https://mevius.5ch.net/test/read.cgi/tech/1615612545/ ぶっちゃけ始めるのにいい言語て何 part5 https://mevius.5ch.net/test/read.cgi/tech/1622766330/ Haskell には賛否両論あるけど、そこは次の世代に判断してもらおう。
2 :デフォルトの名無しさん :2021/09/09(木) 17:18:56.65 .net 初期学習コストが高い言語を最初に学ぶというのは如何なものか
3 :デフォルトの名無しさん :2021/09/09(木) 17:37:28.72 ID:hvR+3cwr.net すべての機能を一気に学ぶのではなく 段階的に学べば大丈夫?
4 :デフォルトの名無しさん :2021/09/09(木) 17:43:04.64 ID:42HI0dLk.net Haskellとか誰がどこで使ったんだよ
5 :デフォルトの名無しさん :2021/09/09(木) 18:06:49.41 ID:18O2MBOf.net >>1 それならベストな選択はRustです RustはHaskellの型システムやモナドを取り入れたプログラミング言語です そしてRustはメモリ安全性が保証されてGCも無くモダンな書き方で便利にプログラミングできるC言語の超越進化版でもあります
6 :デフォルトの名無しさん :2021/09/09(木) 18:43:00.78 ID:VcdPV4nP.net 1.機械語 2.FORTH 3.LISP 4.C この順がベスト
7 :デフォルトの名無しさん :2021/09/09(木) 19:11:55.92 ID:FKVpwywQ.net 1000 名前:デフォルトの名無しさん [sage] :2021/09/09(木) 18:41:37.72 ID:wE7qph1K ぶっちゃけ始めるのにいい言語って言ってんのに、CだのRustだのHaskellだのってバッカじゃねぇのおっさんども お前らの好みなんか聞いてない。 こんなクソスレはもういらん 初学者はPython、Javascript、Ruby、PHPの中から選べばいい。
8 :デフォルトの名無しさん :2021/09/09(木) 19:36:32.37 ID:18O2MBOf.net >>7 その中から一つ選ぶならばJavaScriptかな ウェブがらみは当然JavaScript必須であるし スマホアプリやデスクトップアプリもJavaScriptだけでプログラミング可能
9 :Mb :2021/09/09(木) 20:58:27.88 ID:yI7BAQ6X.net >>4 Tarai 関数を Haskell で書いた例が、 前スレで紹介されている。
10 :Mb :2021/09/09(木) 21:02:02.94 ID:yI7BAQ6X.net >>3 それは、前の世代である我々に訊かれても返答に困る。 「いま」の世間に生きているあなたがたとは、 生きていた時代が違うのだから。
11 :Mb :2021/09/09(木) 21:10:04.32 ID:yI7BAQ6X.net >>6 言いたいことはよくわかるような気はするのだが、 > 1.機械語 の部分はニモニックなのかアセンブラなのかという 話はある。 Z80 とか M6809 とかのエミュレータがあったら ちょっとお奨めな気はするんだが、 C 言語の「コンパイラ言語→アセンブラ→バイナリ」という コンセプトに立ち戻ってみるのもよさそうに思う。
12 :Mb :2021/09/09(木) 21:22:34.52 ID:yI7BAQ6X.net まず仮想機械を実装して、 それ用のアセンブラを開発して、 コンパイラを書くというのはどうだろうか。 その仮想機械には、少なくとも ・フラグ ・アキュムレータ ・B レジスタ ・プログラムカウンタ ・スタックポインタ があるとして、フラグには ・キャリー ・ボロー ・オーバーフロー ・エラー があって、 メモリ空間は 64Kb。 で、それぞれの(フラグ以外の)レジスタのサイズは 16 ビットで、戻り値は 16 ビット固定でアキュムレータに 入っている、みたいな(ANSI-C になる前の)C 言語みたいな 教育用言語があったら面白そうな気がする。
13 :Mb :2021/09/09(木) 21:31:09.58 ID:yI7BAQ6X.net >>7 Rust は Forth の焼き直しだし、 Haskell は LISP の焼き直し。 C や C++ はアセンブラの焼き直し。 「温故知新」という言葉を思いだしてほしい。
14 :デフォルトの名無しさん :2021/09/09(木) 21:46:07.20 ID:18O2MBOf.net >>13 RustにForth言語の要素は一切ない その分類ならばRustのベースはC言語 そこへHaskellの型システムなどを持ち込み強力な静的型付けとするとともに 静的リソース管理によりメモリ安全性を保証したのがRust言語
15 :Mb :2021/09/09(木) 22:00:53.49 ID:yI7BAQ6X.net >>14 > RustにForth言語の要素は一切ない 「とりあえずスタックに積んどけばスタックポインタを 書きかえれば面倒臭くない」という思想が FORTH っぽいように思うのだけれど気のせいか?
16 :デフォルトの名無しさん :2021/09/09(木) 22:39:44.53 ID:q0TKbS94.net >「とりあえずスタックに積んどけばスタックポインタを >書きかえれば面倒臭くない」という思想が どこがRustと関係あると?
17 :デフォルトの名無しさん :2021/09/09(木) 22:45:18.86 ID:18O2MBOf.net >>15 その点はCもC++もRustも全て同じ いずれもスタック上に確保される変数(領域)は関数呼び出しが終わってスタックが解放される時に消えて使えなくなる
18 :デフォルトの名無しさん :2021/09/09(木) 23:30:31.90 ID:f/JM052X.net スタックを解放するのか 胸熱
19 :デフォルトの名無しさん :2021/09/09(木) 23:53:35.58 ID:18O2MBOf.net >>18 すまん日本語略しすぎてたw 以下へ訂正 関数呼び出しが終わって スタックポインタを元に戻す時すなわち スタック上の領域が解放される時までに 消えて自動的に使えなくなる
20 :デフォルトの名無しさん :2021/09/10(金) 00:06:49.30 ID:M/ht9nan.net いや解放なんてしないだろ
21 :デフォルトの名無しさん :2021/09/10(金) 00:30:17.75 ID:59f2QwjZ.net >>20 日本語難しいな スタックポインタを戻すことを「スタック上で領域を解放」と呼んでよいと思う なぜなら最初にスタックポインタ変更することで「スタック上で領域を確保」と呼ぶのだからその対義語
22 :デフォルトの名無しさん :2021/09/10(金) 00:46:22.91 ID:88EXXIi7.net 積み上げる、取り除く?
23 :デフォルトの名無しさん :2021/09/10(金) 02:51:11.39 ID:Arq1o4EZ.net クレート?ていうかライブラリのコード規約で選ぶのはどうだろう。 最初なんだから、あんまスペルを省略されると判りにくい。 慣れると冗長で面倒になるかも知れないけど。
24 :デフォルトの名無しさん :2021/09/10(金) 11:36:37.35 ID:/+WUhMy8.net 最初はCじゃないか? メモリの扱いが見えるようになってると、メモリの扱いが隠されてる言語でも良いプログラムが書けるようになる
25 :デフォルトの名無しさん :2021/09/10(金) 19:58:00.69 ID:me4B51C9.net >>21 それってpopっていうのでは・・・
26 :デフォルトの名無しさん :2021/09/10(金) 20:44:16.27 ID:iOAXb/4V.net >>25 スタックポインタの復帰にpopを使う方法もありだが 例えばメジャーな86系でメジャーなやり方なら別レジスタに退避させるのがメジャーな方法なのでmovになる 他にも完全にコントロールできるならスタックポインタの数値加算(スタックが0方向に伸びる場合)で復帰もあり いずれにせよスタック上にローカル変数などの領域確保はスタックポインタの数値減算(同上)で行うのがメジャー そしてスタック上のその領域の解放はスタックポインタの復帰(上述)で終わる
27 :デフォルトの名無しさん :2021/09/10(金) 21:34:50.59 ID:bDO2hW37.net 説明に必要な抽象度を調節できない人ってプログラマーに向いてないよね
28 :デフォルトの名無しさん :2021/09/10(金) 21:45:28.86 ID:ae9TKcqK.net スタック上で関数ローカル変数の領域は ・スタックを伸ばして領域を確保 ・スタックを戻して領域を解放 極めてシンプル
29 :デフォルトの名無しさん :2021/09/10(金) 21:58:24.62 ID:kfFI0CKc.net つまりまず最初にC言語をやるべきだな。 次にアセンブリ言語というよりCPUの共通的な概要仕組み。 そのあとHaskellかRustなどの強力な静的型付けプログラミング言語へ進むのが良いだろう。
30 :デフォルトの名無しさん :2021/09/10(金) 22:42:43.39 ID:kwXNo1Gk.net こ・・・ここはお前の日記帳じゃねえ。
31 :デフォルトの名無しさん :2021/09/10(金) 23:28:58.62 ID:EyQ85oMr.net じじぃが最期の言語に何を選ぶか にしたら どうしようもない耄碌ばかりだ
32 :デフォルトの名無しさん :2021/09/11(土) 00:01:30.12 ID:N54U5q1q.net >>26 SP復帰はLEAVE命令だろ と思った俺は古過ぎるのか
33 :デフォルトの名無しさん :2021/09/11(土) 00:20:02.53 ID:6SR7xJAU.net 1.Python 2.Haskell or Go 3.Rust or やりたいことに応じてjsとか これやろ
34 :デフォルトの名無しさん :2021/09/11(土) 01:03:41.75 ID:w5S7rLqj.net >>33 Pythonみたいなクソ言語はありえない 残りの4つはアリ
35 :デフォルトの名無しさん :2021/09/11(土) 06:33:42.19 ID:BJyOlAhQ.net 関数型が全然わからない ocamlやhaskell触ってみたけど手も足もでなかった あれってすべて適用した引数ベータ展開しながら簡約していった結果をコーディング中に頭の中でシミュレーションしていかないと書けない代物なのか? それじゃあワイできないよ 後型システムの振る舞いがなんにもわからないわ あれってocamlは型推論あるけど型が明示的に表記されない代わりは自分自身で頭の中に型付け規則を当てはめながら追っていくしかないんか? それじゃあワイできないよ 以上のような理由からワイは例えばfixという不動点コンビネータの高階関数とかわからなかった とにかく自分にはお手上げやわ
36 :デフォルトの名無しさん :2021/09/11(土) 07:29:26.31 ID:w5S7rLqj.net >>35 Haskellの型クラスやモナドを採り入れつつCと同じ手続き型言語のRustからまずは入ってみたらどうでしょうか? Rustのコンパイラは賢くフレンドリーなので型のミスも細かく教えてくれます
37 :デフォルトの名無しさん :2021/09/11(土) 09:09:22.33 ID:BJyOlAhQ.net >>36 rustは式指向って言ってもラムダ計算ではないのでそっちはかろうじて理解できます 理解できないのはラムダ計算ベースの関数型です
38 :デフォルトの名無しさん :2021/09/11(土) 09:39:15.97 ID:3yMDZ0jk.net >>26 pop というのは機械語(ニモニック)レベルではなかったような。 sp(スタックポインタ)から sub するか(できるのか?)、 sp の値をアキュムレータに持ってきて sub して書き戻すか (フラグの中身が変わったり、アキュムレータの中身を堆肥させたり ちょっと面倒臭そうだ)、 小さい言語処理系を開発するときは、FORTH のインタプリタを実装して その上にコンパイラを被せるとかいうのは二度ほどやったことがある。 「Make 10」パズルの全数解を求める、とかいった場合だと、 けっきょくそれをやるのが素朴だと思う。
39 :Mb :2021/09/11(土) 13:08:24.97 ID:3yMDZ0jk.net 関数型とかラムダ計算とかいっても、 遅延評価がないと実行効率がそんなに上がらないんだよね。 「これ、前にやったことがある」「だから、前にやった結果を そのまんま使おう」というのが遅延評価なのだけれど、うーんと 末端のほうだと、「前にやったことがあるんだっけ?」という 探索に時間がかかっちゃうので、探索効率と組合せ論的な爆発の間の トレードオフになっちゃうので、手続き型と関数型のどっちを 選ぶかというのは、ある程度実効機序が解ってないと難しいんだよね。 そういう意味では C 言語とか FORTH とかいった、コンピュータ・ アーキテクチャべったりの言語から始めたり、古いタイプの高級言語から 入るのもひとつのやりかただと思う。 そういう意味では Java とか C♯とかは、プロ用には向いてるけど 基礎を知らないと難しいかも。 昨今は F1 のトランスミッションもオートマチックだそうだしなぁ。 昔のマニュアル車やゴーカートから始めてみるのもいいんじゃない?
40 :デフォルトの名無しさん :2021/09/11(土) 14:07:43.10 ID:ivXsMFHP.net マニュアル車は、 少し低めのスピードで高速ギアにしたり、エンジンブレーキかけたりできるからね。 渋滞時だけは、面倒。 少し加速して、すぐニュートラル。 ようするに、燃費をいかに少なくするか?なのだけど。
41 :デフォルトの名無しさん :2021/09/11(土) 14:17:00.36 ID:ivXsMFHP.net スポットから始める、練習から始める、ってことかな?
42 :デフォルトの名無しさん :2021/09/11(土) 14:30:47.28 ID:PRM8i6LA.net >>38 嶋正利さんが設計したインテル8080からスタック操作のpush/pop命令はずっとあるよ もちろんZ80でも86系でも同様 実はアセンブラ使ったことないの?
43 :デフォルトの名無しさん :2021/09/11(土) 14:31:31.97 .net このスレ、自転車置き場の議論スレでは?
44 :デフォルトの名無しさん :2021/09/11(土) 15:30:55.17 ID:3yMDZ0jk.net >>42 昔、『I/O』の附録だった、Z80 とか 6809 のお経本 (インストラクション・セット・サマリ)とか久しく 見てないからなぁ。 push とか pop とかの引数をどこから取ってくるのか、 といったところまでは思い出せない。
45 :デフォルトの名無しさん :2021/09/11(土) 15:35:48.26 ID:3yMDZ0jk.net >>40 神岡ターンか(笑)
46 :デフォルトの名無しさん :2021/09/11(土) 18:01:03.01 ID:mCM1/tic.net 学習用アセンブリ
47 :デフォルトの名無しさん :2021/09/11(土) 18:03:51.43 ID:PRM8i6LA.net >>44 引数ってなんだ?? 当時のpush/pop (6809だとpush/pull)は レジスタをスタックへ退避と復帰のみだぞ
48 :デフォルトの名無しさん :2021/09/11(土) 19:58:33.84 ID:5Y9cAMyV.net >>42 68000からアセンブラやり始めたとかかもw
49 :デフォルトの名無しさん :2021/09/11(土) 20:28:05.62 ID:N54U5q1q.net >>47 オペランドのことじゃね
50 :デフォルトの名無しさん :2021/09/11(土) 20:32:33.35 ID:3yMDZ0jk.net sp をインクリメント/デクリメントするだけで1命令なのか … それは大変だな。
51 :デフォルトの名無しさん :2021/09/11(土) 20:38:06.19 ID:mopEDxb+.net >>45 どこから神岡ターンが出てきたんだ? https://cdn.snsimg.carview.co.jp/carlife/images/UserCarPhoto/876204/p4.jpg
52 :デフォルトの名無しさん :2021/09/11(土) 21:48:40.82 ID:6SR7xJAU.net >>34 じゃあ 1.Go 2.Haskell 3.Rust or やりたいことに応じてPython, js, C#
53 :デフォルトの名無しさん :2021/09/12(日) 07:42:12.79 ID:Xese6WRq.net >>44 I/Oとかクソ懐かしいな30年以上ぶりに聞いたわ 高校の時にZ80やった ちなみにオススメはプロでやりたいならJavaかJSかC# 言語マニアの話とか聞いてもマニアになりたいんじゃない限り意味ないぞw
54 :デフォルトの名無しさん :2021/09/12(日) 09:43:52.24 ID:x3+6FKDq.net Javaでプロωとかωω 土方まっしぐらωωω
55 :Mb :2021/09/12(日) 12:49:02.54 ID:eZoXy3gP.net >>51 オートマだとドライブ一直線だが、 神岡ターンではクリッピングポイントをクリアしてから 「一瞬、ギアをリアに入れる」というとかいったコトをやっている。 C 言語でも、C のコンパイラが吐いたアセンブラのコードを見て、 「ここはステート数が縮められる」みたいなマッドな野郎どもが 昔はいたんだよ。 そういう言語マニアにとっては C 言語なノスタルジックな言語では あるんだけれども、C++ というのは、マネージャーとかいった そのあたりの美学を理解しない連中が権勢を揮っているので、 「いい言語」と言っていいとは思わない。
56 :Mb :2021/09/12(日) 12:54:28.00 ID:eZoXy3gP.net >>54 > Javaでプロωとかωω > 土方まっしぐらωωω あんた病んでるよ。 だけど反社会性パーソナリティ障害障害って、 治療法がないんだよね。 最近の精神科のクリニックは薬物療法が主なので、 カウンセリングはあんまり主流じゃないから期待しないほうがいい。 松沢病院とか受診してみれば?
57 :デフォルトの名無しさん :2021/09/12(日) 13:23:42.93 ID:UuDugmCL.net オマエガナー
58 :Mb :2021/09/12(日) 13:24:37.28 ID:eZoXy3gP.net >>53 「I/O」は今でも書店に並んでるぞ? 「らんだむ・あくせす・でぃくしょなりぃ」とか懐かしいな。 宮永さんが、ナショナル・セミコンダクタ(通称ナショセミ。 以下 NS)の「SC/MP」(通称「スキャンプ」)の2が出たときに、 煙草の箱サイズの自作パソコンを作って製作記事で紹介していたのだけれど、 「入力はスイッチ一つでいいんだけれど、タイミングを取るのが 大変だからスイッチを二つに増やした」「出力は、ラインを触って ビリッときたら 1 で、こなかったら 0 だと思ったけど、涙を呑んで 電球をつけた」(当時は LED は一般的ではなく、出力は 5.5 ボルト だったので電球もついた)とかいう生々しいレポートがあった。 あのころは楽しかったなぁ。 > ちなみにオススメはプロでやりたいならJavaかJSかC# > 言語マニアの話とか聞いてもマニアになりたいんじゃない限り意味ないぞw なるほど。マニアになりたい奴には意味があるし、開発の現場では 言語マニアにも居場所があったりする可能性は認めてもらえるんだよな?
59 :Mb :2021/09/12(日) 13:31:28.12 ID:eZoXy3gP.net >>49 そういえば、オペコード(オペレーション・コード)って言葉を 久しく聞いていないな。 いまどきアセンブラとかやってる奴がいないせいだろうか。
60 :デフォルトの名無しさん :2021/09/12(日) 13:54:11.81 ID:ZMOxDx6c.net ネイテイブコードでかかれたゲームクライアントが少なくなったせい? ゲーム解析でアセンブラとかOSの動作を覚えたw
61 :Mb :2021/09/12(日) 15:12:01.27 ID:eZoXy3gP.net >>60 それはフロッピーディスクのコピープロテクトが 一般的でなくなったからだと思う。 あの頃の激戦区は、(参戦はしなかったけど) 楽しかった記憶がある。
62 :デフォルトの名無しさん :2021/09/13(月) 02:10:50.03 ID:Hg35TRQG.net >>58 まだ売ってるのか良くもったな 例えばJavaの現場でHaskellとかできてもどうにもならないが趣味でマニアな分には その場合Javaさえできるなら当然問題はない ただそういう人は変な事する場合があるから言語以外の普通の開発手法とかデザインパターンとかはちゃんとしてね
63 :デフォルトの名無しさん :2021/09/13(月) 12:56:42.13 ID:+ZZ666OR.net このスレで書き込みしている人達ってやっぱ平均年齢50超えてる?
64 :デフォルトの名無しさん :2021/09/13(月) 13:20:10.80 ID:swd+vclW.net あわしろ氏のHaskell推しは一理あるんだよな
65 :デフォルトの名無しさん :2021/09/13(月) 14:28:39.70 ID:+ZZ666OR.net やっぱなんだかんだ言ってもCが1番 ダイテル本みっちりやればよろし
66 :Mb :2021/09/13(月) 14:47:08.19 ID:C4HWp6ZW.net >>63 > このスレで書き込みしている人達ってやっぱ平均年齢50超えてる? よくわからんが三十代か六十代の、いわゆるスキマ世代が多いんじゃないかな? 読んでるひとは十代とかだったりしそうだけど、 おっさん世代の愚痴やら説教やらを聞いてくれるヒトがいるというのは、 喜ばしいことだと思う。
67 :デフォルトの名無しさん :2021/09/13(月) 18:38:33.54 ID:Q8RkP9iF.net 高級言語から始めてもいずれ「ポインタって何に使うの?」って絶対に聞くんだから最初からアセンブリやっとけよ つまんない意地はんなや
68 :デフォルトの名無しさん :2021/09/14(火) 10:25:16.87 ID:46IWFnzO.net >>67 「C プログラミング初心者あるある」だな。 「値呼び」とか「番地呼び」とか「名前呼び」とか 文字列を含む可変長データの管理とかで悩んだときに アセンブラにまで立ち戻って考えると確かに理解しやすい。 クヌスの「コンピュータ・プログラミングの技法」とかは 手がかりになりそうだ。
69 :デフォルトの名無しさん :2021/09/14(火) 15:55:48.93 ID:ZQjuD2Oo.net 習得順序がBASIC→アセンブリ→Cであった頃は何の問題もなかった 最初の言語はコンピュータの仕組みや計算機科学べったりでない方がよい そんなのは2つ目以降で考えればよいこと
70 :Mb :2021/09/14(火) 17:28:01.01 ID:46IWFnzO.net >>69 > 習得順序がBASIC→アセンブリ→Cであった頃は何の問題もなかった > 最初の言語はコンピュータの仕組みや計算機科学べったりでない方がよい > そんなのは2つ目以降で考えればよいこと その点については全面的に同意する。 たぶん三十代の遣える方だと思う。 ただ、Pascal の P-System とか、 BCPL とかいった「仮想マシンのアセンブラ」とかいった いったコンパイラ言語を経験している若者が少ないんだよね。 「コンパイラ → マクロアセンブラ → アセンブラ → 機械語」 とかいった経験を積まないと、システム屋としては未熟だと思う。 そういった経験を積んだ人にとっては、「イマドキの若者」っていうのは 腹立たしいとは思うんだけど、そこは生温かく見守ってあげようよ。
71 :デフォルトの名無しさん :2021/09/14(火) 18:49:56.34 ID:vcNuTaNe.net >>69 多分高級言語こそ全てのプログラミングの基本であり真髄みたいに考えてるんだろうけど逆だよ そもそもプログラミングってコンピューター使わなくてもできるからな?
72 :デフォルトの名無しさん :2021/09/14(火) 19:12:04.28 ID:bWejLg/l.net >>71 コンピュータ使わずにできるプログラミングとBASICは似てるって主張ではないのかな? つまり、Cやアセンブリはコンピュータに相当忖度しなくちゃ動かないけど、BASICはアルゴリズムを記述したら動く、と。 ローカル変数ないじゃん、とか、構造化プログラミングできないじゃん、みたいのはBASICだと流石に出てきちゃうけど ソフトウェアエンジニアでC書けない人は本物じゃないと思うけど、プログラミングはソフトウェアエンジニアだけのツールじゃないからねえ。
73 :Mb :2021/09/14(火) 19:53:31.51 ID:46IWFnzO.net そのあたりは、REAL BASIC の開発者の意見もあるだろうと思う。 行列の積とかもフツーに計算できる機能もあったはずだ。 Fortran 77 じゃないけど、複素数演算もできたと思う。 つーても、演算子の拡張というのはあまり必要がなかったようで、 現在では使われていないようだ。
74 :Mb :2021/09/14(火) 20:34:30.77 ID:46IWFnzO.net >>72 > ローカル変数ないじゃん、とか、構造化プログラミングできないじゃん、 > みたいのはBASICだと流石に出てきちゃうけど だからこそ悪辣な面白いこともできる、というのは C と同様だぞ(笑)。 文字列領域にマシンコード突っこんで直接コールするとか、 グラフィック用のビットマップ領域を利用してプリンタ用のバッファに使うとか、 「今から三十年くらい昔にはよくやったもんだ(笑)」という話は 先達からいろいろ聞かされている。 昔の「I/O」とか「THE BASIC」とか読むと、その手の話はけっこう出ていると 思う。
75 :デフォルトの名無しさん :2021/09/14(火) 20:56:50.32 ID:ZQjuD2Oo.net >>71 初心者が真髄なんてものに触れる必要はないというのが論旨なのだが
76 :Mb :2021/09/14(火) 21:01:13.08 ID:46IWFnzO.net たとえば、無条件ジャンプ(いわゆる GOTO 文)と 条件ジャンプ(たとえば CALL文。BASIC では GOSUB)は、 番地フラグとして、同じ「ラベル」というのを指定できる。 そうすると、飛び先が同じでも GOTO なのか GOSUB なのかで 挙動が追いにくくなる。 BASIC ならまだしも高級言語だから追いやすいが、アセンブラで これをやられると、本当にややこしくなる(実際に、追っかけているうちに 訳がわからんことになり、しかも途中でプログラムの自己書換えとかが入って いて、「一ヶ月くらい悩んだ」という奴がいた。じつはタイマ割込みがセット されていて、それは単なる「ゲームのイニシャルローダが発売されてから 解読されないための時間稼ぎ」でしかなかったのだが)。 これで「八人の女王」プログラムを書いて褒められたことがある。 C 言語やアセンブラだと、ROM に焼くのと RAM 上に置くのでは挙動が 違うので(ROM に焼くと自己書換えができないが、RAM 上では書換えができる) とかいった より悪辣なことができるので、C やアセンブラはとても愉しい 言語だと思う。 だけど ANSI-C は牙を抜かれて飼いならされてしまったので、 「ANSI-C は家畜化されて牙を抜かれたブタであって、オリジナルの C は 猪だ」という意見はあったりもする。
77 :デフォルトの名無しさん :2021/09/14(火) 21:48:22.30 ID:3XJZM6bN.net 業務で書く分にはわかりやすさ重視で凝ったアルゴリズムは敢えて使わないな 今や凝らなくても余裕があるし、メンテしようと自分で見返したときに思い出すのに時間がかかるし 詳細仕様とか文書を書き起こす方に時間がかかって大変だからw
78 :デフォルトの名無しさん :2021/09/14(火) 22:31:15.16 ID:bFI2iROt.net >>69 自分もこのルートだったけど、なんでもアセンブリとかメモリマップに落として考えるようになってしまい、その後クロージャとかコルーチンとか出てきたときにかえって分からなくなってしまった いい年になってから計算機プログラミングの構造と解釈を読んでようやく前に進めた
79 :Mb :2021/09/14(火) 23:26:25.19 ID:46IWFnzO.net >>78 規模の大きいプロジェクトで、支援で突っ込まれると、かなり地獄です。 だいたい、『人月の神話』で「途中で人を突っこまれると余計に プロジェクトの進行が遅れる」というのは常識のはずなんですけどね。 >>77 さんは『ソフトウェア作法』のほう(構造化)に向かっていて、 前に進めたあなたは(本来の意味での)システムエンジニアへの道が 拓(ひら)けた、ということではないでしょうか。 > いい年になってから と仰(おっしゃ)いますが、三十五歳を過ぎてからが働き盛りですよ?
80 :デフォルトの名無しさん :2021/09/14(火) 23:53:12.05 ID:L77WHZBH.net >>69 一理あるな。アセンブラはさすがに現代すっ飛ばすとして、VBAあたりから 入門して「これ、・・・・・駄目じゃない?」レベルまで行けたら Cは仕組み知るには素晴らしいけどなんか組むには素朴すぎるし、C++は 増築繰り返して化け物化したWin3.1みたいだし、オブジェクト指向バリバリの JAVAとC#は時代に遅れそうになって増築しすぎの兆しが見えるし…。 Rust?
81 :Mb :2021/09/15(水) 00:10:05.50 ID:U+DAWKzh.net >>80 漏れも同じことを考えたので禿同なのだが、 Rust は局所変数の扱いを文法で縛っているという 印象があるので、言語処理系(自然言語処理ではなく、 いわゆるインタプリタやコンパイラ)を「意識しない」 という方向性については いまひとつ疑問がある。 「うちらは幸せな時代に生きてきたんだなぁ」とか思ったりする。 マイクロプロセッサの黎明期に秋葉原をうろついていて、 p-code Pascal とかを体感してきたんだから。
82 :デフォルトの名無しさん :2021/09/15(水) 00:34:22.68 ID:F75MY0Rx.net >>81 私の世代の場合、まだ世間がNiftyとか言ってるあいだに大学でインターネット、emailに触れ、 Windows95が出た頃には自宅でBSD unixをPCで動かしてXWindow立ち上げてvi/emacsでプログラム書いてgccできたので、まぁ面白い時代だったです
83 :デフォルトの名無しさん :2021/09/15(水) 12:45:32.25 ID:U+DAWKzh.net >>82 うらやましいな。 おれは unix には触ったことがないので、rogue もプレイしたことがない (知らない人のためにひとこと。rogue のアクション操作はエディタ vi と いっしょ)。 そういえば、パロディ判アスキーに、「UNI+」(ユニプラス)という unix 風のシェルが載ってたな。
84 :デフォルトの名無しさん :2021/09/15(水) 17:51:06.55 ID:z0UwWzKV.net >>83 読みは、ユニックロスじゃなかったっけ?
85 :デフォルトの名無しさん :2021/09/15(水) 19:13:25.01 ID:itygeFef.net >>7 PHPはHTML必須なので進めない javascriptはさほど汎用的でない(javascriptでないと使わない独特技法がある) 学習情報が整理されてるpythonかrubyがおすすめ それらで基本構文などを習得してからweb行くならJS、PHP アプリならjava-kotlinなど選べばいい
86 :デフォルトの名無しさん :2021/09/15(水) 19:14:40.22 ID:itygeFef.net なんだ、このスレはアレな人のスレか・・・
87 :デフォルトの名無しさん :2021/09/15(水) 19:18:06.92 ID:s8iq/VsH.net あんたの言うことも大概だ
88 :デフォルトの名無しさん :2021/09/15(水) 20:37:51.00 ID:F75MY0Rx.net >>83 職についちゃうとその業務で極めようとするからなかなか>< 今の人だとスマホで劇的な変化を体験したんだろうか rogueというかSunOS/Solarisだとhack? マシンごとにランキングが残るんだけど、誰もやってなかったw
89 :デフォルトの名無しさん :2021/09/15(水) 22:29:40.69 ID:yi91ufSt.net 加齢臭凄いスレだな
90 :デフォルトの名無しさん :2021/09/15(水) 23:22:25.38 ID:pLOaSwL8.net JUNETでUUCPでmailとnetnewsが来てfj.*を読み書きしてた頃か インターネット接続になってそれら便利になるとともに多様化で消えていった
91 :デフォルトの名無しさん :2021/09/16(木) 09:23:59.42 ID:I3VTO38j.net uucpの頃がuuencode/uudecodeか base64に飲み込まれたな
92 :デフォルトの名無しさん :2021/09/16(木) 12:31:35.39 ID:8LdpMeIx.net もうおじいちゃん達の懐古主義はお腹いっぱい 昔を懐かしみたいのなら別スレ建てたら?
93 :デフォルトの名無しさん :2021/09/16(木) 13:01:11.24 ID:OOI2XObq.net Haskellは数学
94 :Mb :2021/09/16(木) 16:05:31.30 ID:H4jRCgIr.net 当時似たような unix 風のシェルがあって、 「UNI十(ユニクロス)」とか「UNI×(ユニッペケ)」とかあったんだよ。 たしか当時はまだインターネットが普及してなくて、公衆回線を 使った草の根 BBS のころで、 うんと底のほうのルーチンで回線断されると、longjump で上の方に戻ろうと するといろいろとトラブルが起きたんだ。 そんなわけで、キャッチ&スローみたいなことをやろうというときに、OS で コプロセスを起動するということを考えたひとがいて、それがシェルもどきに なったという経緯があったりする。 知人の unix 使いが「Mimic」というシェルもどきを書いてたっけなぁ。 「mimic」とタイプすると、「It's Me!」と返してくる。 いや、おれは rogue やってないから知らないっつーの (^_^!)。 いまどきの若者は『ダンジョン飯』とか読んでいるので常識っぽい らしいが。
95 :デフォルトの名無しさん :2021/09/16(木) 16:32:13.86 ID:caXrDs0o.net >>93 数学だなあ。今モナドの説明読んで理解しようとしてるけど 頭がパンクしそうだ。 ただ、「圏論学ぶと人生観が変わるくらいものの見方が変わる」 らしいからなんとかそこまでたどり着きたいなあ。 最初の言語としては全くお勧めしないw そもそも「他の言語を何か使えること」がほぼ前提の言語だし。
96 :デフォルトの名無しさん :2021/09/16(木) 18:26:49.69 ID:dCSvSg78.net Haskellって数学以外に何が出来るの?
97 :デフォルトの名無しさん :2021/09/16(木) 21:54:32.61 ID:H4jRCgIr.net >>96 まぁ……数学がわかんなくても遅延評価がうまいこと やってくれるので、運がよければ組合せ論的爆発を 避けることができる、というのが取り柄かな。 トランプや麻雀のプログラムとか、選挙の議席数によって どれくらい影響力があるか(シャープレイ=シュービック 指数という。単独過半数だと面白くもなんともないが、 二大政党の議席数が拮抗してて野党がキャスティング・ボウトを 握っていたりすると、いろいろ面白い結果が出たりする)とかの 話だと、Haskell は強力かもしれない。
98 :デフォルトの名無しさん :2021/09/16(木) 22:01:59.31 ID:H4jRCgIr.net C や C++ って、記述の粒度が細かすぎて 全体像が掴みにくいんだよな。 オブジェクト志向になると、モジュール化がしやすいから 全体構造はいくらか見えやすいんだが、こんどは いろいろと制約っつーか縛りがきついので、C とかから入ったひとは 「これでホントにシステム組めるのか?」とか面喰ったりする。 何人くらいのチームで、どれくらい知識が共有できててスキルがあるのか、 とかいった観点から言語を選ぶのも、ひとつの選択だと思われる。
99 :デフォルトの名無しさん :2021/09/16(木) 22:12:52.54 ID:LOVaWXEK.net >>98 その点はJavaと全く同じ Javaしかやったことないからそんな意味不明なことを言ってる 勉強しなさい
100 :デフォルトの名無しさん :2021/09/17(金) 00:07:56.63 ID:gId/Wf8n.net >>98 > 「これでホントにシステム組めるのか?」とか面喰ったりする。 以前LavVIEWをちょこっと触ったときには少々面食らったw Cコードに展開させてみて、はぁそういうもんかと理解した
101 :デフォルトの名無しさん :2021/09/17(金) 00:09:58.34 ID:gId/Wf8n.net >>100 誤字失礼。。。LabVIEW
102 :デフォルトの名無しさん :2021/09/17(金) 13:05:38.49 ID:9sB/yeOV.net LabVIEWは俺に効くからやめてくれ…
103 :Mb :2021/09/17(金) 13:30:42.73 ID:6yfFjxR9.net >>99 C とか C++ とかって大勢でプロジェクトを張ってると、 なんか真っ裸で職場をうろついているような気分になるんだよね。 昔の先輩(女性)は「毎日端末の前で脳内ストリップをやっているのよ!」 と仰っていたし。 > 勉強しなさい 修羅場で場数を踏みなさい。
104 :デフォルトの名無しさん :2021/09/17(金) 23:21:04.71 ID:qc9SKwMT.net >>103 当然C++の方がJavaより幅広い分野をカバーできる どちらも徐々にRustに置き換わっていくだろうが
105 :デフォルトの名無しさん :2021/09/18(土) 06:35:31.87 ID:pceSJQ2d.net 今まで色々なプログラミング言語が注目されては下火になるのを繰り返してきた。 そして、結局なんだかんだ言われながらC/C++が残っていくのでしょうね。 米粒みたいなワンチップマイコンから富岳まで、ほぼ全てのレンジでCコンパイラは用意されてるし。
106 :デフォルトの名無しさん :2021/09/18(土) 07:10:08.72 ID:WtcFUHdh.net >>105 C/C++と同じことが出来て、なおかつ、メモリ安全性を保証できるプログラミング言語Rustが登場したので C/C++は各分野で徐々にRustへと置き換わりつつある
107 :デフォルトの名無しさん :2021/09/18(土) 08:17:03.85 ID:bNqoSBDr.net >>106 今まで色々な言語が出る度にそういう主張は目にしてきたわ。 まあ、そういうかなり乱暴なこともできるのがCのいいところでもあるんだけどね。 とりあえずLinux互換のOSをRustで記述して、Rustならこんなにシンプルで高速になりますって見せてみたら良いんでない?
108 :デフォルトの名無しさん :2021/09/18(土) 08:45:20.48 ID:bA/qQPAi.net MonaOS の再来か 胸が厚い
109 :デフォルトの名無しさん :2021/09/18(土) 08:45:20.49 ID:bA/qQPAi.net MonaOS の再来か 胸が厚い
110 :デフォルトの名無しさん :2021/09/18(土) 09:13:42.52 ID:WtcFUHdh.net >>107 今までそのようなプログラミング言語は存在しない 初めて出現したのがRust Linux OS開発でもCからRustへ徐々に置き換えて行く方法について議論がなされている
111 :デフォルトの名無しさん :2021/09/18(土) 09:19:00.43 ID:QypuRU23.net Rust推しウザい 議論じゃなくて実際に置き換えてから来てくれ
112 :デフォルトの名無しさん :2021/09/18(土) 09:23:02.31 ID:fW917HvV.net >>107 Linux互換OSどころかLinux自体がRustで記述されるプロジェクトがLinux開発チームで動いてるよ トップのLinusもそれに対して対応すべき項目を挙げたのでその対処が進められているよ
113 :デフォルトの名無しさん :2021/09/18(土) 09:35:50.81 ID:K0Y+cZmA.net GoogleもAndroid OSをRustベースにしたいと言って色々やってるしな。
114 :デフォルトの名無しさん :2021/09/18(土) 10:03:02.61 ID:ubIEU34Z.net 願望だけでまだ何一つ置き換えられていないRust まるでチョン君の永遠の10年後と一緒だなw
115 :デフォルトの名無しさん :2021/09/18(土) 10:08:29.77 ID:K0Y+cZmA.net Facebook、開発言語に「Rust」採用 次期ビルドシステムの開発で https://www.itmedia.co.jp/news/articles/2107/28/news152.html Rustを用いることで、どのような利点があるのか。Facebookは記事の中で次の4つの項目を挙げています。 @Rustのasync/awaitシンタックスは、非同期のコードをとてもスムーズに記述できますし、Rustは複雑な並行処理の詳細を正しく理解するのに役立ちます。 BuckのJavaの計算を一つ一つ並行処理に移行するのは数カ月に及ぶ困難な作業でしたし、シングルスレッドの大きなボトルネックがまだ存在しています。 ARustには、開発をより簡単で楽しいものにしてくれる多くの高レベルな言語機能があります。 それらはenum、パターンマッチング、trait、手続き型マクロなどで、Rustの開発者の多くに愛されています。 BRust はメモリの割り当てをより細かく制御することができます。 ガベージコレクションのある言語では、たとえジェネレーショナルコレクションであっても、Buckが行うようなインクリメンタルな演算に対応するのは困難です。 CRustは高性能です。 Rustに移植することで劇的な性能向上を私たちは見てきました。
116 :デフォルトの名無しさん :2021/09/18(土) 10:27:33.99 ID:3SyRbMvc.net 半年付き合って親御さんと顔合わせを済ませて婚姻届に署名捺印して金庫にしまってからでないとコンパイルできないRustちゃんは男女の抱えるトラブルのかなりの部分を解決するけど 浜辺で出会って月明かりの元すぐコンパイルできるCちゃんがいることで維持できる物語もあるんだよ
117 :デフォルトの名無しさん :2021/09/18(土) 10:31:41.22 ID:rvMzt6Rw.net Rust推しは確かにウザいが、大手での使われ方が今までの言語とはっきり違うので 無視して良いものではないけどなあ
118 :デフォルトの名無しさん :2021/09/18(土) 10:33:49.72 ID:YxnqD7QJ.net >>116 実際に書いてみると慣れだけの問題でそんな違いは出てこないよ むしろRustは後発言語なだけあって他の言語のそれぞれ良い部分を洗練して取り入れた面もあってプログラミングはCより遥かにしやすいね
119 :デフォルトの名無しさん :2021/09/18(土) 10:59:49.52 ID:owvkbREO.net Rustはしばらく半信半疑で様子見されてきていたけど、ここにきてようやく試験に合格したような雰囲気があるな。
120 :デフォルトの名無しさん :2021/09/18(土) 11:21:52.46 ID:bA/qQPAi.net >>116 ワッフル ワッフル
121 :デフォルトの名無しさん :2021/09/18(土) 12:39:13.38 ID:QVwR+RdB.net とりあえずPythonで良い
122 :デフォルトの名無しさん :2021/09/18(土) 19:00:23.57 ID:pceSJQ2d.net 今現在C/C++はほぼあらゆる場で使えるしなあ。リアルタイムOSもLinuxもとりあえずCを身につけてたら読めるしね。 SystemCでハードウェアまで含めたシミュレーションや論理合成まで繋げられるから、C++でアルゴリズムを検証した後、負荷の重い部分をSystemC環境に移してFPGA化して高速化するなんていう具合にハードウェアとソフトウェアをシームレスに繋げられるのも利点だよね。 Cの悪名高きポインタも、あれのおかげでハードウェアのレジスタアクセスなんかが簡単に記述できるんで、とってもありがたい存在なのよね。
123 :デフォルトの名無しさん :2021/09/18(土) 19:23:10.42 ID:+Oz1AToR.net Visual Studio が標準で Rust をサポートしたら本気出す まあ公式がこんなドキュメント出してるくらいだからそのうち標準になるんじゃないかと楽観視してる https://docs.microsoft.com/ja-jp/windows/dev-environment/rust/setup
124 :デフォルトの名無しさん :2021/09/19(日) 00:46:23.07 ID:AEO23oDW.net 1970年代に生まれたC言語が現在でもよく使われているのは、ハードウェアに直接アクセスできる基礎的な言語であるためだが、 メモリー関連の脆弱性が発生しやすいという問題も抱えている。 Mozillaが支援し、開発されたRustは、システムプログラミングでC言語の代わりになる言語として期待されている。 例えば、Googleが一部で「Android」の開発にRustを導入しつつあり、 RustをLinuxカーネル開発の第2言語に採用しようとする活動も進んでいる。 またAmazon Web Services(AWS)はインフラ開発にRustを使用しており、 Microsoftにも「Windows」や「Azure」の開発にRustを使い始めている。 このようにIT業界が一斉に同じ新たなプログラミング言語を採用するのは史上初のことであり、 メモリ安全性を保証しつつC言語が担ってきた分野を完全に置き換え可能なRust言語が新たに時代を変えつつある。
125 :デフォルトの名無しさん :2021/09/19(日) 02:37:42.97 ID:hFofnRJN.net 着替えが上手ければ更衣室行かなくてもいいよねというCちゃんが胸チラマンチラしながら教室で着替えるからこそ ガードの固いRustちゃんの振る舞いが周りに受け入れられるんだよ CちゃんがいなければRustちゃんはただのめんどくさい子
126 :デフォルトの名無しさん :2021/09/19(日) 02:54:45.41 ID:rdoGn3lB.net そういうことよ
127 :デフォルトの名無しさん :2021/09/19(日) 02:59:11.11 ID:1dukWiTD.net >>125 え??プログラミングしたことないでしょ? Cが自分でメモリをalloc/freeしなきゃいけないめんどくさい子だよ Rustは安全に自動で解放までしてくれるから手間のかからない良い子
128 :デフォルトの名無しさん :2021/09/19(日) 10:12:45.82 ID:l0UjyXwH.net >>127 > Cが自分でメモリをalloc/freeしなきゃいけないめんどくさい子だよ ANSI標準 C のでは確かにその通り。 文字列も含めて配列はただのポインタでしかないので、その先にある データ領域は明示的にサイズを示すかSIZEを指定して alloc しなきゃ いけないし、領域外参照も自動的にチェックしてくれないから pop/push 時に自分で監視しなきゃいけない。 まだ Mac が古い OS だったころの C では、文字列は ポインタではなくてハンドル(ポインタへのポインタ)で、 文字列もヌル・ターミネートの C 文字列じゃなくて、 先頭に文字列調を持った Pascal 文字列だったように記憶している。 そういう点に配慮した、初心者にとって扱いやすい C 言語は、 学習用にあってもいいと考えた人もいて(たしか T 社)、 「C のインタプリタを C コンパイラで書く」という地味な仕事を かなり昔にやったことがある。
129 :デフォルトの名無しさん :2021/09/19(日) 10:16:51.44 ID:l0UjyXwH.net ちなみに FORTRAN 60 も配列はただのポインタだったので、 「配列の添字に負数を指定してシステム領域に手を伸ばす」 とかいった猥褻な手法が使えたという。
130 :デフォルトの名無しさん :2021/09/19(日) 13:29:58.47 ID:hFofnRJN.net いやんエッチ!
131 :デフォルトの名無しさん :2021/09/19(日) 15:29:22.07 ID:Zxr4Akvi.net はい頑張って勉強します /* very simple daytime client */ #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> int main() { int sockfd, n; char buf[127]; struct sockaddr_in servaddr; sockfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); n = read(sockfd, buf, 126); buf[n] = 0; fputs(buf, stdout); exit(0); }
132 :Mb :2021/09/19(日) 16:27:16.85 ID:l0UjyXwH.net >>131 頭っから stdio.h が入ってマクロアセンブラのヘッダが並んでいて、 終わりが exit(0)っつーのが通な感じだな。 Java で exit すると JVM のプロセス自体が落ちちゃうので、 C だと上のプロセスからコールされて、longjump みたいな 感じの大域脱出をするパターンで使うのが吉かと。 まぁ、最近の Java だったらキャッチ&スローで処理するところだけど、 上の方のルーチンで例外を握りつぶしていたりするので、 大きなプロジェクトではときどきトラブルが起きたりはするのだが。 >>130 > いやんエッチ! Mb といえば「ブラックアートの沼津秘宝館」、 Mr.Moto といえば「ギミックの玩具箱」、 所長といえば「アルゴリズムの生辞引(ウォーキング・ディクショナリー)」 と云われたものなんだがな(笑)。 まぁ、とりあえず何でも訊いてくれ。 C コンパイラに、なんか仕掛けるとかいったネタは、 チューリング賞の受賞講演とかであったように思う。 「ブートストラッピング開発には、 セキュリティ上の穴がある」というのは、 Linux 使いには念頭に置いておいてほしいと思う。
133 :Mb :2021/09/19(日) 16:38:13.86 ID:l0UjyXwH.net そういえば、ヘッダファイルの巡回参照で コンパイラを落とすとかいうのはよくあったなぁ(笑)。 あとは返り値が文字列だったりするときのバッファは レジスタには収まりきれないのでメモリ上のレジスタの アドレスで返ってくるわけだが、その領域外のアドレスを 狙ってプログラム領域を書き潰すと、他人の書いたコードの ところでエラーが出る(ミニコンとかだと、アドレスカウンタガ 表示される)ので、けっこう惨い目に遭ったという話を 聞いたことがある。
134 :デフォルトの名無しさん :2021/09/20(月) 10:06:54.60 ID:rmuhdvcF.net >>129 え??プログラミングしたことないでしょ?
135 :Mb :2021/09/20(月) 11:18:11.57 ID:ca2ASSgD.net >>134 大文字の FORTRAN(FORTRAN 60)はさすがに無ぇな(笑) Fortran 77 は勉強したけど動かせる環境がなかった。 仕事で使ったのは学生時代にカシオのプログラマブル電卓とBASIC、 修飾してからはアセンブラだった。 趣味では Pascal と C を触っていたのと、BASIC で FORTH の インタプリタとか書いていた。 その後は C で仕事をするようになり、ちょっと病気でブランクがあった ので Java を勉強し、SQL で仕事を貰ってから Java が本職に。 その後 Web の仕事が多くて、言語じゃないけど HTML と CSS と JSPを 勉強。なぜ SQL が入っているかというと、再帰とか木構造データとかが 得意な人がおらず、非数値処理屋だった私にお鉢が回ってきたから。 Oracle 9i からは「CONNECT BY」という再帰呼び出しが可能になり、 これを使って二つの木構造データを比較たいという仕事をアサインされたから。 SQL はつまんなそうな言語だけど、テーブル設計とかのシステム寄りの 観点からみるといろいろ興味深いところがある。
136 :デフォルトの名無しさん :2021/09/20(月) 11:52:16.89 ID:V39ohWuW.net すきあらば自分語り
137 :デフォルトの名無しさん :2021/09/20(月) 13:07:38.28 ID:m4eFSOkj.net 自演ばれたぬ
138 :Mb :2021/09/20(月) 13:16:07.32 ID:ca2ASSgD.net >>136 >>137 おまえらコテハンつけて正面から喧嘩売ってこい。 「かかって来いよ。相手になるぜ?」 (Go ahead. Make my day.) 読み筋は「ダーティ・ハリー」。
139 :デフォルトの名無しさん :2021/09/20(月) 13:42:53.65 ID:dNvINLUv.net きょうは参考書のソースをいじってpenサーバーつくったよ socketの段取りマンドクセ /* telnetでport 20000につないでみてください */ #include <stdio.h> #include <string.h> #include <strings.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> int main() { int listenfd, connfd; struct sockaddr_in servaddr; char buff[4096]; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(20000); bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); listen(listenfd, 1024); for (;;) { connfd = accept(listenfd, (struct sockaddr *)NULL, NULL); snprintf(buff, sizeof(buff), "%s\r\n", "This is a pen, That is a desk."); write(connfd, buff, strlen(buff)); close(connfd); } }
140 :Mb :2021/09/20(月) 15:05:29.99 ID:ca2ASSgD.net >>139 なんかしら見ていて気色わるいコードだな(-_-;)。 「main()」はかなり昔(もう二十年以上も前)のスタイルで、 昨今は「main(argc, argcnt)」だったような …… Java だと配列はオブジェクトなので、「main(args)」で 済んじゃうんだが。 「for (;;) {」もどういうコードに落ちるか不安になるが、 C にも Java にも「LOOP - UNTIL - DO - REPEAT」構文がないので、 「for (;;)」とか「while(true)」とか書いておいて途中で break するしか 方法がないので致し方あるまいと思う。 あとは、商業プログラマだと、入力のチェックとか入力文字列の サニタイズとかで無暗に手間を喰うので、入力は別ルーチンに しておくと、あとあと保守が楽だぞ。
141 :デフォルトの名無しさん :2021/09/20(月) 16:23:28.46 ID:zEQlChxu.net node-red使いだしてから長ったらしいコード書くのが面倒くさくなってしまったな。 とりあえずC/C++はどこでも使えるから知っておいて損はないかな? あと、AI系はPythonがライブラリの充実ぶりで圧勝で、あちらの世界で話をするときの共通言語って感じだし、AIは当たり前のものになってきているから避けては通れないかな? 過去に何度も「将来、これが主役になる」と言われたものはあったけど、結局主役になることもなければ完全に消えるでもなくカオスになっただけって感じだし、他のものは必要に応じてってところかな?
142 :Mb :2021/09/20(月) 16:38:43.97 ID:ca2ASSgD.net >>141 OS/2 の時代に VisualAge C/C++ と使っていた世代としては、 とても得心がゆく。 VisualAge はかなり優れた IDE だったが、Java に対応するように なってから、「IBM」ブランドだと警戒されそうだと思ったか、 「Eclipse」として独立させて成功した。 Node-Red については知る機会がなかったが、 ツールとして興味深いので勉強しようと思う。
143 :Mb :2021/09/20(月) 16:49:32.96 ID:ca2ASSgD.net >>141 > AI系はPythonがライブラリの充実ぶりで圧勝 ディープ・ラーニング(深層学習)とか言ってる時点で マシンの高速化に頼ったパターン認識の焼き直しでしかないと 考えている。 並列処理に関してきっちり向かいあうかどうかが今後の課題だな。 名ばかりの AI は、邪魔なので道をあけてほしい。 読み筋はトヨタ・チェーリカ。
144 :デフォルトの名無しさん :2021/09/20(月) 17:00:51.99 ID:OciMvJKX.net 数値計算もSQLも両方書けて初めて一人前な感じはするよね
145 :デフォルトの名無しさん :2021/09/20(月) 18:44:10.54 ID:iqyABNEN.net >>143 もう少し勉強しょうなw
146 :デフォルトの名無しさん :2021/09/20(月) 18:58:44.62 ID:V39ohWuW.net >>140 cはコマンドライン引数いらんかったらint main(void)って書けるよ c++ならint main()の書き方でおk
147 :Mb :2021/09/20(月) 20:19:20.81 ID:ca2ASSgD.net >>146 呼ぶ側の都合と呼ばれる側の実装の擦りあわせを考えると、 「言語仕様として、それが可能だ」よりも 「業務レベルで考えると、保守しやすい可読性の高いコード」 というのが重要になってくる。 「ダサいコード」も、誰もがダサいと感じるわけじゃなくて、 それなりに経験を積んでいるプログラマだと、 ニヤっとすることもある。 「つまらないコード」というのは、誉め言葉だったりもする。 >>145 「勉強」という言葉を間違って覚えた典型的な例だな。 他人から言われて「勉強」するんじゃない。 自分が自(みずか)ら自分に科すから “勉強” なんだ。 虐待経験があったのは痛ましいと思うが、 それは別板にゆくかカウンセリングを受けろ。 とはいえ、昨今の精神科っていうと薬物療法が主体なので、 ちゃんとしたカウンセリングを受けようと思うと、 なかなか難しいんだよなぁ ……
148 :Mb :2021/09/20(月) 20:39:24.44 ID:ca2ASSgD.net >>146 Java に慣れちゃうとなぁ …… 引数を握りつぶしちゃうのもいまひとつだし、 オプションをチェックするのも仕事のうちだし、 引数なしで呼ばれたら、「usage()」ルーチンに 飛ぶのが礼儀のような気もするので、 パイプ処理前提の C とは、若干感性が違うかもしれない。 GUI 全盛の現在では、そのあたりはなかなか 理解してもらいづらい点はあるのだが。
149 :デフォルトの名無しさん :2021/09/22(水) 05:19:35.39 ID:5brsinXw.net 状態遷移図
150 :デフォルトの名無しさん :2021/09/22(水) 11:00:56.12 ID:ucS/NBRX.net アセンブラとかマシン語とか言ってる奴。 解ってんだろ、実務ではこのご時世、ほぼ糞の役にも立たないって。 余程特殊な業務でもない限りまず使わない。それこそパチンコとかの組込みとか、ゲーム作る際に余程特殊なことやる場合とかだ。 あまり実用的ではないし、理屈だけ知ってればまずアセンブラやマシン語は使われることはない。 昔ゲーム作る際に使ってて、それ以降全く使っていない俺が言うんだから間違いない。
151 :デフォルトの名無しさん :2021/09/22(水) 11:36:49.41 ID:+50nKS9n.net >>150 それらもRustでプログラミング可能 どうしても一部アセンブラで書かなければならない部分があったとしてもRustはその部分だけをRustプログラムの中にアセンブラで記述可能
152 :デフォルトの名無しさん :2021/09/22(水) 12:20:23.49 ID:VlqP8/Mw.net Rust厨いい加減ウザい
153 :Mb :2021/09/22(水) 14:04:34.95 ID:9UO88pW2.net >>149 デシジョンテーブルとかよくやってたなぁ。 昨今の「かな漢字システム」でもいまだに使っていたりする。 少なくとも MicroSoft は、「私、馬鹿でーす」と 顔に貼っているから、もう IME も信用できない。 日本 IBM はどこへ行こうとしているのかが分からない。
154 :Mb :2021/09/22(水) 14:18:01.89 ID:9UO88pW2.net >>150 > 解ってんだろ、実務ではこのご時世、ほぼ糞の役にも立たないって。 > 余程特殊な業務でもない限りまず使わない。それこそパチンコとかの組込みとか、 > ゲーム作る際に余程特殊なことやる場合とかだ。 > あまり実用的ではないし、理屈だけ知ってれば > まずアセンブラやマシン語は使われることはない。 そういう技術者を消費していた派遣業者が問題であって、 「技術屋」を使い潰してきたバブリーで 脳内アッパラパーな連中に対する 憤(いか)りはもちろんある。 で、「高齢者」「障がい者」とか雇おうとしても、 雇傭者側にも怯えがあたりする。 ちゃんと教えられる人はまだしも救いがあるのだが、 ちゃんと説明できちゃうとバブリー頭の経営者に排除されたるするんだよな。
155 :デフォルトの名無しさん :2021/09/22(水) 14:43:54.36 ID:KzVGjGnL.net BNF
156 :Mb :2021/09/22(水) 16:01:28.63 ID:9UO88pW2.net >>155 > BNF BNF ことバッカス=ナウア記法というのは Pascal の文法記述に使われたのが有名だが、 図で表現しようと思うと、やたら面積を喰うので 大型(A 全とか B 全とかの)のプロッタとかがないと 全体が見渡せないんだよな。
157 :Mb :2021/09/22(水) 16:05:02.04 ID:9UO88pW2.net >>156 うちの所長が日本語の形態素解析の仕事をしたときに、 B 全の方眼紙を近所で何枚も買ってきて 日本語の形態素に関する文法を描いてたことがある。
158 :デフォルトの名無しさん :2021/09/22(水) 16:05:45.80 ID:KzVGjGnL.net きみ頭悪いって言われるでしょ
159 :Mb :2021/09/22(水) 16:13:49.07 ID:9UO88pW2.net あと、カルロス・ゴーンさんが 日産のスカイラインGTを復活させるという話があって、 それ用の新しい製造ラインを構築するという話があって 所長が三菱総研の話で入ったことがある。 そんとき所長はSQLの話で入ったのだけど、 ER図(エンティティ・リレーション図)という Java のオフジェクト図みたいなのを見たらB全で、 とても分かりやすかったという話を聞いたことがある。
160 :Mb :2021/09/22(水) 16:17:33.23 ID:9UO88pW2.net >>158 > きみ頭悪いって言われるでしょ 馬鹿と鋏は使いよう 馬鹿と金槌は使いよう きみは決して経営者になるな。 子供に金槌を持たせると何でも叩くから。
161 :Mb :2021/09/25(土) 14:42:48.30 ID:Ow2ePG0l.net >>145 >>146 現代ではネットワーク・コンピューティングが一般的だが、 CPU が一個(待合わせの必要がない、ワンプロセスの処理系)の 処理系だと、いわゆる「フォン・ノイマンのボトルネック」という話に なるんだわ。 どっかのメモリ領域から引っ張ってきた値を処理して、新しい 値を格納する間に、他のプロセスが元の値を書きかえちゃったら 辻褄が合わなくなるだろ? そのために「排他制禦」っつーものが あるんだけれど、いちいちそれをやっていると実行効率が下がるんだ。 C 言語はハードウェアべったりの「超高級アセンブラ」 (要するに、いわゆる「高級言語(第三世代)」ですらない 第二世代の言語)と云われていたし、Haskell は 「遅延評価」というコンセプトに基づいているので、 「どこに位置づけたらいいのかの判断が難しい」という話になる。 「『竹内の tarai 函数を』 Haskell で書いて実行する」 とかいった話は、掘り下げておいて損はないと思う。 「入山のアルゴリズム」も参考になると思う。
162 :デフォルトの名無しさん :2021/09/25(土) 16:26:09.92 ID:Uwq7lnPV.net 結局は「一番距離の近い周りが使っているもの」になるんだろう。
163 :デフォルトの名無しさん :2021/09/25(土) 21:29:08.16 ID:Ow2ePG0l.net >>162 > 結局は「一番距離の近い周りが使っているもの」になるんだろう。 いや、昨今はそのあたり、昨今は切実な話だぞ? 守秘義務契約でガチガチに縛られてて、 テレワークで同じ職場の人間と会話する機会もなくて、 自粛要請のせいで同業者と飲み会をすることもできん。 コーディングで詰まったときに誰にも相談できんというのは しみじみキツいので、まだしも使っている人間が多い Java は 選ぶ価値があると思う。 ただ、昨今は言語について深く掘り下げようという人間は 少数派なので、けっきょく C 世代の年寄りばっかりが集まって 愚痴を垂れるばっかりになってしまうのだが …… せめてもの救いは、家庭用のビアサーバーが普及したことくらいかな。 ウィスキーやレモンサワーだと、糖分が少ないせいか悪い酒に なりがちだ。
164 :デフォルトの名無しさん :2021/09/26(日) 00:16:07.46 ID:Zk67fDA9.net 嫌われすぎだろ
165 :デフォルトの名無しさん :2021/09/26(日) 09:30:34.16 ID:s7bOlMFt.net 仕事ならなおさら、チーム内で使っていない言語を勝手に選ぶわけにもいくまい。
166 :デフォルトの名無しさん :2021/09/26(日) 09:48:46.46 ID:xV3OGa/L.net >>151 可能かどうかより、周りが使ってるかどうかだろうけどね。 電子工作系でもRust使った作例はごく僅か、ほとんどC/C++とアセンブラだもんね。
167 :デフォルトの名無しさん :2021/09/26(日) 10:04:35.46 ID:xV3OGa/L.net >昨今は言語について深く掘り下げようという人間は 少数派なので、 プログラミング言語の栄枯盛衰が激しいからね。掘り下げるなんて言ってる間に次の流行りが来る。 その多くがC/C++の欠点をあげつらってこんなに素敵なんだ、これからはコレが主役だ!とか言ってたけど、結局その他大勢の中の一つになっていったしね。 まあ、新しい言語を作る側の人間もまたC/C++使いだったりもするんだろうけど。 てか、人生ズボラ派としては、いい加減、文字をずらずら並べてプログラムを記述するというスタイルそのものがどうにかならんのかな?と思ったりはするわ。
168 :デフォルトの名無しさん :2021/09/26(日) 11:03:31.80 ID:YbVO1WH/.net ポトペタの方が効率悪い
169 :Mb :2021/09/26(日) 13:19:09.44 ID:tXVd2t/V.net >>167 > 文字をずらずら並べてプログラムを記述するというスタイルそのものが > どうにかならんのかな? それは「ノンテクスチュアル・プログラミング」といって、 わりと人類の夢みたいなところがあるんだが、実現しようと思うと JIS フローチャートとかで育った人が話をややこしくするのだ。 SPD とか NS チャートとか、構造化に向いたものもあるんだけどな。 早稲田大学(日立?)の二村先生は、「この世から JIS フローチャートを 撲滅したい」と公然と主張していらっしゃった。 いちど筧先生の研究室のお邪魔したときに、外廊下のどんづまりが 二村研究室で、仕事で日常的にフローチャートを書いていた私は 逃げ帰ったことがありました。
170 :Mb :2021/09/28(火) 21:11:09.09 ID:1n55ADGm.net もう言語から作っちゃうのが早いような気がしてきた。 昔の Fortran 77 で、「最短のプログラム」というのがあって、 「END.」だそうだ。 Pascal だと begin 〜 end がやたら目についたし、 C や Java だと「main()」で始まるし、 Java で「exit()」とかやると JVM そのものが落ちて面倒な ことになる。 そのあたりを整理して、変数スコープをはっきりさせて、 強い静的な型付けを強制して、swap とか loop 〜 until 〜 do 〜 repeat とかも導入して、 void だったら 「repeat.」とちゃんと書かないと文法エラーになるような、 かっちりした教育用の言語があったら、 遅かろうがなんだろうが使う価値がありそうに思う。
171 :デフォルトの名無しさん :2021/09/29(水) 02:34:40.12 ID:guchPPTa.net IBMメインフレームのアセンブラなら、最短のプログラムは ST__EQU_* ____SR__15,15 ____BR__14 ____END_ST IEFBR14だ
172 :Mb :2021/09/29(水) 15:22:19.43 ID:g61nlzZ7.net >>171 さすがに濃すぎてわからん。うちらは通信用のスーパーミニ (たしかハネウェルのコピーの NCOS)だったので、 いわゆるメインフレームは触ったことがないのだ。 ひょっとして、「白い机の 360」とかの世代の方ですか?
173 :デフォルトの名無しさん :2021/09/29(水) 17:55:38.49 ID:2n7INrGl.net さすがに… 360、370の後継の z/OSです ですが、IEFBR14 は360の頃から使用されていますね 何もしないで戻り値として 0を返すだけのプログラムです intelで戻り値をaxレジスタにセットするように、レジスタ15に0を設定しています
174 :Mb :2021/09/29(水) 20:22:53.72 ID:g61nlzZ7.net >>173 私も「NCOS」といっても「スーパーミニ(MS140以降)」の時代なので、 「NCOS 1 アセンブラ」はちょっと齧っただけ。 入間基地の FADP にメインフレーム級の NCOS が あったのは見た記憶がある。 ミニコンピュータといっても、「PDP」シリーズは写真でしか 見たことがなく(あのカラーリングの感性はいかがかと思う)、 PDP-11 の仮想記憶版の拡張型であるVAX-11(いわゆるブルー・バクスン)は NEC の府中事業場の隅っこで埃をかぶっていたのを見たことがある。 つーても、あれってサイズが高級車一台分くらいあるんだよなぁ … 「“ミニ” コンピュータ」っつーんだから、せめて大型冷蔵庫くらいの サイズにしてほしい。 自宅にサーバールームを用意して、17 インチのラックを設置するとかいうのは さすがに控えようと思うのだが、ケース買ってきて自作マシンというのは、 若気の至りで一度やらかしたことがある。
175 :デフォルトの名無しさん :2021/10/01(金) 20:12:36.77 .net コンピュータ老人会
176 :デフォルトの名無しさん :2021/10/01(金) 21:14:38.49 ID:wkRzMgwV.net ぶっちゃけ、高級アセンブラとしてのC。 その上はいろんな哲学を学ばないといけないから。
177 :Mb :2021/10/02(土) 10:53:36.01 ID:9AHxi4+O.net >>176 >その上はいろんな哲学を学ばないといけないから。 C は記述の粒度が小さいもんだから、 小さいプログラムを自分ひとりで書いているうちは いいんだけど、なんかしら全体構造が見えづらくなっちゃうんだよな。 若いうちはそれでも力業でなんとかなるんだけど、さすがに 三十代半ばを過ぎると「三日前の自分は他人」というのが 身に染みてきて、ちょっと大きなプロジェクトでチームを組むと なにかしら行き詰まりを感じたりする。 私の場合は、その先のポジションが Java だっただけで、 C♯とかいう人もいるかもしれない。
178 :デフォルトの名無しさん :2021/10/02(土) 16:00:47.63 ID:HwAmnb74.net >>177 それならばRustが良いですね Cと同じく低水準な記述も可能でネイティブコンパイルされGCも無し C言語がとっても便利で強力になったものがRust言語
179 :デフォルトの名無しさん :2021/10/02(土) 17:25:18.84 ID:9AHxi4+O.net また来たか orz
180 :デフォルトの名無しさん :2021/10/02(土) 23:55:02.44 ID:0KUEFcg9.net D
181 :デフォルトの名無しさん :2021/10/03(日) 00:29:42.74 ID:rhju0Lgz.net 最初に学ぶというからには、手っ取り早くでなくということではなく、体系的に学びたいということなんだよね 僕はC押しだったけど、たしかにCはかならず一度は通らなくてはならないと思うのだけど、最初にCで挫折してしまうより、もう少し取っつきやすい、アルゴリズムに集中できる言語から入るのがいいのかなとも 順番に拘らないというか
182 :デフォルトの名無しさん :2021/10/03(日) 10:51:06.49 ID:oCTMWA/s.net どうせやるんだから(やらなきゃ話にならないんだから) 最初からやったほうがいいに決まってる 後からで良いって逃げてる香具師は使い物にならない(レベルで満足してるのが多いイメージ)
183 :デフォルトの名無しさん :2021/10/03(日) 11:03:25.80 ID:dAyKRsSE.net どうせやることになる言語はrustやhaskellに限らずたくさんあるんだから、何もそれらを最初にやる必要は全くなく、基礎的なもの分かりやすいものから順に積み上げるのは妥当だろう
184 :デフォルトの名無しさん :2021/10/03(日) 11:21:17.66 ID:lzwjEZSj.net >>181 おかしかったワ: 最初に学ぶというからには、手っ取り早くということではなく体系的に〜
185 :デフォルトの名無しさん :2021/10/03(日) 14:03:17.28 ID:XAcVATkF.net >>183 妥当というか当然だよね このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる
186 :Mb :2021/10/03(日) 15:35:19.26 ID:13zKiOvX.net >>185 > このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる それは×かなぁ。 「こんなマイナーなスレをわざわざ荒しにくる奴は、どっか心を病んでいる 『精神的な社会不適合者』ばかりだから、プログラマ文化からずれすぎてる」と いうのが適切だと思う。 先天的に脳がおかしい(ということは、「頭がおかしい」)けれど、 「自閉なんだけどフツーに有能なプログラマ」は電算業界には普通にいるし、 理数系の研究者に関しては、むしろ「自閉系である」というのが 強みであったりする。 「世間とずれすぎてる」というのは、同調圧力に負けているんじゃないかなぁ。
187 :デフォルトの名無しさん :2021/10/03(日) 19:50:06.39 ID:XAcVATkF.net キモ
188 :デフォルトの名無しさん :2021/10/03(日) 19:53:12.22 ID:J1pSCw/C.net >>174 PDP、なんかレトロフューチャーみたいでかっこいいじゃんと思う。
189 :Mb :2021/10/03(日) 21:18:00.43 ID:13zKiOvX.net >>188 漏れもそう思う。紫とか使っちゃうところがパンクチュアルだと思った。
190 :デフォルトの名無しさん :2021/10/03(日) 21:32:54.16 ID:f+cxTxee.net DECがロゴの色をバーガンディに変えたのは1990年代のことだがな。 PDPの時代はいわゆる"Small Blue"
191 :Mb :2021/10/03(日) 21:48:09.94 ID:13zKiOvX.net そうだったんだ。 仮想記憶システムをフォローした VAX-11 は、 「ブルー・バクスン」と云われていたのは憶えている。 Prolog で有名な中島(「ナカジマ」ではなく「ナカシマ」) 秀之さんは Prolog 処理系の VAX への移植で有名だが、 未見だけれども「秘境 Prolog に名前呼びの修羅場を見た!」 という論文があるとかないとか(もうすぐ『bit』の電子版が 出るらしいので、興味があったら購入して探していただきたい)。
192 :Mb :2021/10/03(日) 21:57:33.48 ID:13zKiOvX.net そういえば思い出した。 DEC はパソコンにも手を出して、ケース型のパソコンを出して いたんだよな。それで「DEC なら信用できるだろう」と思って 秋葉原で買ったら、パソコン業界からいきなり撤退しやがった(T_T)。 以来、「DEC」というブランドは信用しないと決めている。 同様に、「Microsoft」「アスキー」とかいったブランドは、 基本的に信用しないと(個人的な意見だが)決めている。
193 :デフォルトの名無しさん :2021/10/03(日) 22:55:23.52 ID:Fj8TwfDX.net DECの関東工場で生産されるパソコンはMade in TOKYOと銘打ってHPが販売してる。
194 :デフォルトの名無しさん :2021/10/03(日) 22:56:02.47 ID:Fj8TwfDX.net Made in TOKYOと言うが本当は群馬産。
195 :デフォルトの名無しさん :2021/10/04(月) 01:14:14.63 ID:rfKfA2dL.net 最速ならvscodeでもダウンロードしてきてjavascriptでもてきとうにいじるのが良いかもね。 そのあとは知らんが。
196 :デフォルトの名無しさん :2021/10/04(月) 01:55:28.66 ID:hBHzC2Ye.net vscodeだと汎用的すぎて開発ターゲット決めるところからだし敷居が高い よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ 遊ぶ分にはデバイス購入不要 他にもUserscriptの改造とかすぐ目に見えて動かせるものが良いはず
197 :デフォルトの名無しさん :2021/10/04(月) 09:14:06.26 ID:rfKfA2dL.net >よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ で、具体的に何?初めての人はそれがわからんから苦労するんだろ。
198 :デフォルトの名無しさん :2021/10/04(月) 12:54:41.34 ID:toVLiTfB.net >>197 有名どころで取っつきやすいのだと https://www.microsoft.com/ja-jp/makecode ここのArcadeかmicro:bitのチュートリアル いっそ初手ならここのブロックプログラミングで良い気もする
199 :Mb :2021/10/04(月) 14:56:58.28 ID:JFT4UYBi.net >>193 >>194 そうなのか orz 「がっちりマンデー」の報道は嘘だった(法律上は「嘘」とは 言えないだろうが)んだな。 「Made in TOKYO」といっても、 「東京都内で組み立てています」というだけの話であって、 たとえば餃子の餡と餃子の皮を中国から輸入して日本で包めば、 「Made in Japan」の餃子になっちゃうわけだからなぁ ……
200 :デフォルトの名無しさん :2021/10/05(火) 00:31:07.56 ID:eIScRtg7.net 組み上げたあとの検品をちゃんとしてくれたら文句はないんだけど 最近は国内メーカーの冠ついてても信用ならんのよね
201 :Mb :2021/10/07(木) 21:07:09.78 ID:r04zjL6z.net マウスコンピュータの評判はどうなんだろう。 本来ならば、いわゆるノートブック・パソコンは 姿勢が辛(つら)くなるのでお勧めはしたくないのだが、 新型コロナウイルス感染症の流行明けだと、 「矯正出社」というのがあってリモートワークも ままならなくなっているらしい。 昔は「読書机」というものがあったのだが、 昨今はパソコンも小型化しているので なんかしらそういう環境があってもいいと思う。 「最初の言語に何を選ぶか」というのも重要なんだが、 まず開発環境を整備しないといけないと思う。
202 :デフォルトの名無しさん :2021/10/10(日) 11:08:54.04 ID:ZuTCKPOD.net https://twitter.com/tanakahisateru/status/1438199657289568257?t=y-jn3keOidnoTBOB2Fdkag&s=19 これってfortranってどうやって配列添字アクセス実現してるんや? ポインタ演算提供してないだけでポインタとして配列表現してるんか? (deleted an unsolicited ad)
203 :Mb :2021/10/10(日) 16:33:27.72 ID:ZJbmtnIp.net >>202 基数的定義と序数的定義があって、N88 の BASIC では OPTION BASE という構文があって、0 と 1 のどっちで 始めるかが指定されていたりする。 このあたり、真面目に議論すると長くなるので、 待て続報。
204 :Mb :2021/10/10(日) 17:23:37.04 ID:ZJbmtnIp.net >>202 > これってfortranってどうやって配列添字アクセス実現してるんや? 「fortran」と一括りにするのは先達に失礼なので、 「FORTRAN 60」(別名「大文字のフォートラン」)と 「Fortran 77」(別名「ナナナナ」)と、 NC旋盤とかで使われている「ハチマル」というのがある。 「フォートラン」というのは、フォームラ・トランスレイター の略語で、もともとは「F-1(フォームラ・ワン)」と同じように、 「サーキット上の怪物」として数値計算(=科学技術計算)として 君臨していたのが「大文字のフォートラン」だった。 さすがにレガシーコードなので、見たことはあるが動かしたことはない。
205 :Mb :2021/10/10(日) 17:30:04.20 ID:ZJbmtnIp.net 屑な IME が、「フォーミュラ」のつもりで打ったら「フォームラ」と 変換しやがった(-_-x)。 くたばれマイクロソフト。
206 :デフォルトの名無しさん :2021/10/10(日) 17:39:38.06 ID:kKlMir+m.net formuraかfo-muraとでも打ったか ローマ字設定でlaをラにしてて予測が負けたか
207 :デフォルトの名無しさん :2021/10/10(日) 20:20:33.01 ID:2SGYvuud.net 投稿前の見直しを怠った言い訳にはならない 素直にごめんなさい言えない奴はいらない
208 :Mb :2021/10/10(日) 20:27:30.36 ID:ZJbmtnIp.net >>286 「formura」を変換すると「ふぉrむら」になったりする。 「program」を変換すると、「ぷろgらm」になったりする。 こんな屑な IME に慣らされちゃったら後生が悪かろう。 このあたり、「デジタル庁」がなんとかしてほしいと思うが、 「ディジタル庁」でない時点でけっこう減滅しているし、 「digital」を「ぢぎたl」と変換する Microsoft の IME が憎い。 「microsoft」は「みcろそふと」だそうだ。 「alfa」は「あlふぁ」で、「beta」は「べた」だという。 デジタル庁は、国家予算を使ってでも、まともな IME を 作ってほしいんだが。
209 :デフォルトの名無しさん :2021/10/12(火) 03:08:21.74 ID:M/vA1Qoj.net formula translator の formula は数式って意味じゃなかった? 数式を変換して書きやすい文法になってるからFORTRANという名前になっているのだと。 あとフォーミュラカーは、F1は怪物かもしれないけど、形がレギュレーションで規定されている車ぐらいの意味しかないと思うし、いろいろ勘違いしてない? formulaの綴りも間違ってるし。 大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。 ローマ字入力と変換に英語入力を期待する方がおかしい。 気になるなら使うものを辞書登録しておけば解決すると思うが。
210 :Mb :2021/10/12(火) 19:45:42.10 ID:bzFXr+Hm.net >>209 > 大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。 それは個人の語彙の範疇との間で勘案すべき問題であって、 「日本人」の範疇で括っちゃうのは乱暴じゃないだろうか。 観賞魚マニアだったら、「beta」だったら「闘魚(ベタ)」と変換して くれれば有難いけれど、「β」とか「ベタネタ」とかいった用法は、 それぞれのユーザに配慮してほしいと思う。 学習機能で、ようやく使い勝手がよくなってきた辞書が、いきなり 更新されてチャラになったりしたら泣けるだろう?
211 :Mb :2021/10/12(火) 19:50:16.72 ID:bzFXr+Hm.net >>209 > 気になるなら使うものを辞書登録しておけば解決すると思うが。 うん。速記タイプとかリアルタイム字幕放送とかについて調べてきてから、 もう一回来てくれ。
212 :デフォルトの名無しさん :2021/10/13(水) 00:25:29.65 ID:/9Kpmg+V.net formulaのスペル間違いの言い訳はどうして飛ばしたの? ちゃんとして?
213 :デフォルトの名無しさん :2021/10/13(水) 08:51:30.59 ID:NcH4byR7.net >>211 それらとプログラミング言語になんの関係が? IMEはキー入力を日本語文字列に変換する写像であって、その写像の優劣は目的によって異なった物差しで測られることになるだろう。 速記タイプとかリアルタイム字幕放送のIMEでプログラミングの話題がしやすいとは思えないけどな。 ちなみに自分は色々兼ね合いとってDvorakJPぐらいに留めてる。漢直を覚えようとしたこともあったが諦めた。 あと、フォーミュラカーの件はスルー?
214 :デフォルトの名無しさん :2021/10/13(水) 11:07:50.79 ID:R9S1gQQi.net この板なんか変なのが居付くようになっちゃったな
215 :Mb :2021/10/13(水) 15:02:25.38 ID:XJgDSy86.net >>214 お前とかな ガイジ
216 :Mb :2021/10/13(水) 15:03:31.94 ID:XJgDSy86.net >>214 ガイガイガイガイw あそれwガイwあそれwガイw ガイガイガイガイwあそれwガイw
217 :デフォルトの名無しさん :2021/10/13(水) 16:35:54.08 ID:xt9dnz52.net 自分のことを言われたことは分かるんだね
218 :Mb :2021/10/13(水) 17:26:45.23 ID:mw8RjJuy.net >>217 お前のことじゃい! ガイジw
219 :デフォルトの名無しさん :2021/10/13(水) 20:41:03.46 ID:yVINKNOR.net 仕事辞めてやることなくなった爺が話し相手欲しくて居ついちゃってんだよ。相手しちゃダメ。
220 :Mb :2021/10/13(水) 21:16:20.27 ID:Y4oDfEf2.net 私も出世したもんだ。ついに騙りが出るとは(笑)。
221 :デフォルトの名無しさん :2021/10/14(木) 00:11:41.27 ID:KZL2uBrL.net あ、やっぱ自分のことだって気づいてたんだ みんなドン引きしてるよ
222 :Mb :2021/10/14(木) 09:28:31.47 ID:WGI+KeI1.net 初心者向けというのなら、 実行効率はそんなに重視しなくていいし、 メモリサイズも大きくても構わないだろ。 あとは構造化プログラミングに向いた ステートメントが整備されていて、 そこそこモジュール化にも考えてくれていて、 処理系が普及しているもの …… となると あんまり思いあたらないなぁ。 高校の数学の先生とかだったら N-BASIC かなんか 使いそうだし、小中学校では(タートル・グラフィクスは あまり普遍的ではないけど)LOGO になっちゃいそうだ。 文科省あたりが旗振って、教育用言語の規格を作ってくれれば いいと思うんだが。
223 :デフォルトの名無しさん :2021/10/14(木) 12:04:53.11 ID:LpLVYXMr.net こどもの学校配布のiPadにはScratchがはいってる 構造化・イベント駆動プログラミングで現代的だし Playgroundだから本質的でない問題に悩まされずに済むし Eテレの番組まであるんだから実質標準じゃないかな
224 :Mb :2021/10/14(木) 14:42:37.17 ID:WGI+KeI1.net >>223 「MicroSoft」と聞いただけで怖気(おぞけ)を揮(ふる)うのだが、 正直な話、「ビル・ゲイツは印足して改心したかもしれないが、 マイクロソフトという企業体が、今後何をやらかすか」に ついての意見は保留しておきたい。
225 :Mb :2021/10/14(木) 14:55:21.29 ID:WGI+KeI1.net >>223 由来とかについて調べてみたところ、 Scratchはそれほど悪い言語ではないかもしれない、と 思った。 ちょっと近所の大きい本屋に行って、Scratch の処理系を インストールしていろいろいじってから、コメントしたいと 思う。
226 :デフォルトの名無しさん :2021/10/14(木) 17:21:00.93 ID:rfuH32l/.net マジで変な奴居着いたな もうコメントしなくていいよ
227 :デフォルトの名無しさん :2021/10/14(木) 18:47:18.39 ID:QWJeoh/2.net 草
228 :Mb :2021/10/14(木) 19:26:50.56 ID:WGI+KeI1.net 正直な話、荒らしが出てくるのはどうでもいいんだが、 頼むから sage 進行をお願いしたい。 連続してプログラム技術板の上位で出てくると、 古参の民に嗤われちゃうんだよ (T_T)。
229 :デフォルトの名無しさん :2021/10/14(木) 20:44:21.29 ID:9bkyyR4D.net >>228 お前が荒らしじゃい!
230 :デフォルトの名無しさん :2021/10/14(木) 21:40:12.30 ID:KZL2uBrL.net 草
231 :デフォルトの名無しさん :2021/10/15(金) 01:28:09.50 ID:vumwfiEZ.net Microsoft を MicroSoft と書くだけで、うまく認識できないというか、インチキくさいというか…
232 :デフォルトの名無しさん :2021/10/15(金) 01:45:34.33 ID:Q3H9iIco.net じゃあMinecraftは?
233 :デフォルトの名無しさん :2021/10/15(金) 01:52:45.18 ID:vumwfiEZ.net マインクラフト?は初見なので違和感なしでした
234 :デフォルトの名無しさん :2021/10/15(金) 09:58:59.71 ID:Svg6ZUXs.net 子ども向けならマイクラのコマンドで遊ぶのもいいと思う。んでスクラッチだと思うけどマイクラのワールドにプログラムで動くエージェント召喚して働かせる事もできる。 スクラッチで作ったフローはJavaとPythonで表示されるから、高学年はコード編集して遊んでる。
235 :デフォルトの名無しさん :2021/10/15(金) 12:09:35.19 ID:W8XYkXKH.net >>234 なんかMbくさい書き込みだな
236 :デフォルトの名無しさん :2021/10/15(金) 21:26:36.52 ID:Q3H9iIco.net スクラッチはJavaじゃなくてJavaScript 製だよ
237 :Mb :2021/10/16(土) 11:38:31.38 ID:w/Mr+3XW.net >>231 『プログラミング演習における シンボルの名前付けに対する指導』 (https://gakkai.univcoop.or.jp/pcc/2018/papers/pdf/pcc034.pdf ) とかを読んでからまた来い。 Java に慣れちゃうと、そうなるんだよ。
238 :デフォルトの名無しさん :2021/10/16(土) 13:06:53.78 ID:2h5t186/.net >>237 詭弁に過ぎない 固有名詞の話とは関係ない
239 :Mb :2021/10/16(土) 14:22:23.31 ID:w/Mr+3XW.net > 詭弁に過ぎない とかいって逃げる奴が多いから、短文系の BBS は 「便所の落書き」とか言われちゃうんだよなぁ。 そもそも、「固有名詞」じゃなくて、「命名規則」の 話をしているんだが。 「N0013」とか「X0023_05」とかいった命名規則を 強制されてみると、その苦労は感得できると思うが。
240 :デフォルトの名無しさん :2021/10/16(土) 14:40:46.73 ID:2h5t186/.net >>231 は固有名詞の書き方について突っ込んでいるのに 君が >> 237 で勝手に命名規則の話をしているだけだよね
241 :Mb :2021/10/16(土) 16:10:53.50 ID:w/Mr+3XW.net 話を整理しよう。 >>240 > 固有名詞の話とは関係ない というのは、何の話をしているんだろう。
242 :デフォルトの名無しさん :2021/10/16(土) 19:22:51.29 ID:BQTsTYeY.net >>241 痴呆かこいつ
243 :デフォルトの名無しさん :2021/10/17(日) 11:18:57.50 ID:vSoaWGvQ.net なんかのJavaクラスに、マイクロソフト実装で処理をするか自前実装で処理をするか切り替えるメソッドがあったとして、 useMicrosoftImplementation(bool)ではなく、 useMicroSoftImplementation(bool)と命名されてたら、 プログラマーの質を疑っちゃうね。固有名詞もちゃんと書けないのかと。
244 :Mb :2021/10/21(木) 13:57:14.47 ID:JKBkOCuC.net 「荒らしもスレの賑わい(読み筋は「枯れ木も山の賑わい」)」と いうネット俚諺もあるのだが(あるのか?)、 スレが停滞すると楽しみがなくなっちゃうので、 ザコネタでもいいから投稿があると活気が出そうに 思う。
245 :デフォルトの名無しさん :2021/10/21(木) 19:39:05.18 ID:rHBxJh+b.net スレが停滞しているのはMbさんが住み着いたからだぞ
246 :Mb :2021/10/21(木) 21:45:11.27 ID:JKBkOCuC.net >>245 まぁ、落ちなきゃいいじゃん(笑)。 墜ちそうになったら、age てくれるひとがいるかもしれない。 確かに書き散らかしたという点では反省するしかないのだが、 なんかしら「まとめ」的なものを提示しないと卑怯だ、 という話はありそうに思っている。
247 :デフォルトの名無しさん :2021/10/21(木) 21:56:00.63 ID:rHBxJh+b.net >>246 たしかに
248 :デフォルトの名無しさん :2021/10/22(金) 01:03:41.86 ID:bIdSm1HR.net MbはFORTH使えるの?
249 :Mb :2021/10/22(金) 15:08:47.44 ID:ti2XTd85.net >>246 つーか、FORTH の処理系から書いた(笑)。 社会人になってから一年目に NEC に就職したのだが、 そのとき防衛関係の「RMA」っつーのの担当だったので 航空自衛隊の各サイトのアベイラビリティを計算しなきゃ いけないので、それ用の言語を作っちゃったんだわ。 で、そのコンパイラの中間言語として、 FORTH もどきのシステムを組んだことがある。 だから、ネイティブな FORTH を扱った経験はないんだわ。
250 :Mb :2021/10/22(金) 15:15:31.10 ID:ti2XTd85.net あと、「Make 10」っていうパズルがあるじゃん。 「0 を含まない四つの異なった数字で、加減乗除だけで 10 を作れる」っていうやつ。 あれの全数解を求めるのに、「いっぺん逆ポーランド記法に 落として、FORTH みたいな仮想機械の言語で片づける」と いうのはやったことがある。 IT の電卓も根強いファンがいそうだから、「逆ポーランド記法」と いうのは、けっこう(日本人限定かもしれないが)人気があるのでは ないかと思う。
251 :デフォルトの名無しさん :2021/10/22(金) 21:01:51.95 ID:60fAwA3m.net >>250 そういうのはprolog向け
252 :デフォルトの名無しさん :2021/10/22(金) 23:19:41.64 ID:5ielnrPe.net NECに就職してたんだ 凄いじゃん
253 :デフォルトの名無しさん :2021/10/23(土) 01:07:12.44 ID:rv17aNSC.net >>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; } } これなら小学生にも作れそう
254 :デフォルトの名無しさん :2021/10/23(土) 01:18:42.34 ID:rv17aNSC.net >>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; } これも順列組み合わせを習った小学生ならすぐ作れそう
255 :デフォルトの名無しさん :2021/10/23(土) 01:46:38.78 ID:rv17aNSC.net 実行してみました > 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)とか一時的に分数にしちゃうのですね 小学生向けの素敵なプログラミング課題だと思いました
256 :デフォルトの名無しさん :2021/10/23(土) 08:19:36.04 ID:MzNtagq6.net ぱって作れちゃう人すごいなあ
257 :デフォルトの名無しさん :2021/10/23(土) 09:56:07.61 ID:HC6G+u/J.net 大好きな町だから離れられない
258 :デフォルトの名無しさん :2021/10/23(土) 11:30:40.50 ID:JOLV5TGR.net 頭がポリッシュ
259 :Mb :2021/10/23(土) 14:15:02.75 ID:sCVE0pd7.net >>255 「255」っていうのがステキだな。 「Make 10」は、「0 以外の、相異なる 4 つの数字」なので、 [1,3,3,7]や[6,9,6,5]や[0,0,0,0]は考えなくてよくて、 [1,2,3,4]から、[6,7,8,9]までの組合せまでを生成すればいいので、 「もうちょっと頑張りたい」というプログラミング欲を ソソる部分がある。 で、加減算は交換法則が成立つので、 「1+2+3+4」は、「4+3+2+1」と同じ、と思うと いろいろチャレンジしたくなる。 さらに、「全部試す」以外に解法がなさそう、というのが 笑える。 「小学生から大学生まで楽しめる問題」として、 もっと普及してくれてもいいと思うのだけれど、 「いちど逆ポーランド記法に落とす」とかいった 技法があるので、あんまりプログラミング教育の現場では 嫌われているように思う。
260 :Mb :2021/10/23(土) 17:37:35.64 ID:sCVE0pd7.net >>252 いや、ぜんぜんすごくない(笑)。 NEC っていっても、当時は「住友金属のお荷物」みたいな 扱いで、その中でも「日本電気グループ」と 「日本電気ホームエレクトロニクス」という派閥争いがあって、 NEC 本体は「NES」というソフトウェア部隊があったのだが、 通信系グループは自前のソフトウェア部隊がなかったのだよ。 それで、NEC の通信系グループが立ち上げたソフトウェア会社が あって、いろいろ社名を考えたんだけど、当時の田中社長が 「そんなんじゃ人が集まらない!」というので、 「日本電気航空宇宙システム株式会社」という会社ができたんだ。
261 :Mb :2021/10/24(日) 13:31:17.67 ID:XB+g3pLb.net >>259 単純計算で、1 から 9 までの数の順列は 9 × 9 × 9 × 9。いまどきのパソコンでは、 なんてことのない数字だ。 これを 9 × 8 × 7 × 6 に減らしたい欲がでてきたら、 ちょっとプログラマ向きの人だろう。 逆ポーランド記法で考えると「加減乗除」という 四つの演算があり、「四桁」という縛りがあるので、 数が四つで演算子が三つ。計七個のスタックがあればいい。 で、0 と 1 要素は数字で、6要素は演算子、ということが わかっている。これを(一意に)網羅できるようなプログラムを 書くのには、どんなプログラミング言語が欲しいだろうか? で、+とか×のような、交換法則が成立する演算子については、 ちゃんと順序づけをしてほしい。さらに、「10になる」という 縛りがあるのだけれど、途中で無限小数になっちゃうとややこしい ことになってしまう。そうなると、「分数は分数のままに扱える 言語」であってほしい。そうなると、自分のプログラムの中で 作った式を処理系に渡して計算してもらわなくちゃいけないので、 LISP の EVAL 関数のようなものが欲しくなる。 「じゃあ、実際にどうやって実装するか?」まで考えると、 かなり興味深い話だと思う。
262 :デフォルトの名無しさん :2021/10/24(日) 21:26:11.28 ID:fzWjbDF9.net ↑にProlog向けと書かかれているのはスルー おっさんのくせに引き出しが少ない
263 :デフォルトの名無しさん :2021/10/24(日) 21:35:25.40 ID:B/FYyb6u.net 土曜日池袋のジュンク堂行ってきたけどあの規模の書店でもPrologの本なんて1種類しか置いてなかったぞ しかも質が低い こんなのどうやって勉強しろってんだ 最初の言語に選ぶなんてとんでもない
264 :デフォルトの名無しさん :2021/10/24(日) 23:44:50.57 ID:+7vWd4s/.net >>261 本当にプログラミングできるならばmake 10でいいからコードを出してみてよ >>262 Prologである必要性はないでしょ 例えばその問題を>>254 はJavaScriptで簡単に解いている
265 :デフォルトの名無しさん :2021/10/25(月) 09:19:14.64 ID:ePvBViKM.net 必要性はないがevalがないと雑多なコードが増えるのは気づけてるのに 組み合わせはいいの?みたいな
266 :Mb :2021/10/25(月) 14:31:05.06 ID:KAqnC0Vx.net >>261 > 本当にプログラミングできるならばmake 10でいいからコードを出してみてよ 上げてもいいけど …… 長いよ? 「Java の宿題ここで答えます」スレとかだったらいいんだけど、 これからプログラミングを学ぼうとする人のためのスレである 「【C?】最初の言語に何を選ぶか【Haskell?】」 に、延々とコードを上げるのはどうかなぁ。 まず、「Java の宿題ここで答えます」の昔のスレとかを 見てくれると嬉しく思う。いちおう「Mb」の名前で 出てますから。 > Prologである必要性はないでしょ 竹内さんの「tarai 函数」なんかは、Haskel で書く価値がある。 「入山のアルゴリズム」も、Haskel で実装するなら 必要がなくなるかもしれない。 「必要性」というより、「処理系としてのコンセプトの多様性によって、 『必然性』の話になりつつある」という話じゃないでしょうか。
267 :Mb :2021/10/30(土) 00:34:09.55 ID:weWqDpIj.net >>263 > 土曜日池袋のジュンク堂行ってきたけどあの規模の書店でもPrologの本なんて > 1種類しか置いてなかったぞ どうせ中島さんか小谷さんの本だろう。 Prolog というコンセプトは、そんなに悪いもんじゃないので、 処理系から作ってみるのが正しいアプローチのように思う。
268 :Mb :2021/11/02(火) 22:21:30.96 ID:8e4/jqzP.net よく考えたら初心者に不親切でスマンカッタ m(_ _)m。 共立出版の「bit」に、Prolog の処理系のソースコードが 掲載されていたことがあるのだ。 たしか NEC の PC 8801 シリーズ以来の「N88 BASIC」 のコードだったが、いわゆる「Prolog 処理系の動作を シミュレートするコード」というのは、LISP を使うと わりと単純なコードに落ちるのだ。ただ、当時は LISP にしろ(Apple LISP はあったが)Prolog にしろ、 パーソナルコンピュータ環境では実行が難しかったのだ。 それくらい貧弱な処理系環境だったので、 「カット・オペレータ」云々というのが「いかがなものか」 みたいな話があった。 とはいえ、Prolog の基本構想は悪くないと思うので、 Haskell がスレタイに入っている。 高嶺の花だった。
269 :デフォルトの名無しさん :2021/11/03(水) 18:44:31.12 ID:aqEfnqTc.net 何言ってんだこのバカ
270 :Mb :2021/11/06(土) 20:58:33.21 ID:annn/Sq7.net Java は言語処理系のインタプリタを実装するのには 悪くないので、「無ければ作れ」という視点もある。
271 :デフォルトの名無しさん :2021/11/07(日) 18:12:40.38 ID:B0bDPYGj.net 何言ってんだこのバカ
272 :Mb :2021/11/10(水) 14:31:50.13 ID:Wl5lGLAU.net >>271 > 何言ってんだこのバカ それは、 「何を仰っているのでしょうか? 貴方は知的障害者ですか?」 と同義だと解釈して宜しいでしょうか?
273 :デフォルトの名無しさん :2021/11/10(水) 14:56:08.69 ID:m325nVH9.net バカ、アホの定義が地方やコミュニティで異なるからの確認だとおもうけど BBSだからこそのレトリックなんよ 聞くのが野暮
274 :Mb :2021/11/10(水) 15:20:18.02 ID:Wl5lGLAU.net >>273 つ 松本修『全国アホ・バカ分布考 ― はるかなる言葉の旅路 』(新潮文庫) 関西の一部地方の出身者には、「『アホ』や許せるけど『バカ』は許せない!!」 という人がいらっしゃったりもする。そうすると、「馬鹿馬鹿しい」とか 「バカ穴(ネジを切っていない、ワッシャーとビスで止める、位置決め用の 若干大きめの穴)」とかは、一部の関西地方の文化圏の方々に配慮すると、 「使ってはいけない言葉」だということになりますよね? じゃあ、「バカ騒ぎ」もいけないんだ。「人を馬鹿にする」も いけないんだ。「馬鹿貝」もいけないんだ。「あんた馬鹿?」は、 「あなたは智的障礙ではありませんか?」と言わなきゃいけないんだ。 あははー。 そんな粗雑な思考をしている人に、プログラミングを語られたくは ないなぁ。
275 :デフォルトの名無しさん :2021/11/10(水) 15:23:33.09 ID:ABhSQgxq.net 『アホ』や許せるけど、ってどういう意味?
276 :デフォルトの名無しさん :2021/11/11(木) 22:03:24.31 ID:vxCXx/v+.net 何かいつの間にかキモいのが寄生してんのな
277 :デフォルトの名無しさん :2021/11/12(金) 06:51:45.09 ID:og7IUmfh.net Mbって人気持ち悪い
278 :デフォルトの名無しさん :2021/11/12(金) 10:03:15.07 ID:fy+vdfIh.net レスが冗長で誤字も多いしそもそもつまらん 誰からも相手にされないからネット上で承認欲求満たしたいんだろうな
279 :デフォルトの名無しさん :2021/11/12(金) 15:50:52.59 ID:Kl1RPx7L.net 自分の知識披露したいだけで 有益な議論をしたいわけではなさそうだしな コード例とか出せないみたいだし(エアプでコード書けない?)
280 :デフォルトの名無しさん :2021/11/30(火) 00:24:56.16 ID:g6Kn8mJH.net Rubyやってる女の子はかわいい
281 :デフォルトの名無しさん :2021/11/30(火) 14:11:08.77 ID:+4eAilPB.net 戸倉彩
282 :デフォルトの名無しさん :2021/12/08(水) 02:18:29.28 ID:7SPCPFJp.net 最初にやる言語で速さとか気にする必要ない そんなことでマウント合戦して、これからプログラミング始める 美少女を迷わすようなことを言わないようにしましょう
283 :デフォルトの名無しさん :2021/12/08(水) 15:51:09.86 ID:5uCKYHG+.net 全く美少女じゃないけど私もrubyから入ったわ 職場のrubyの本借りれたし先輩に詳しい人いたのが大きい
284 :デフォルトの名無しさん :2021/12/08(水) 21:04:33.81 ID:pzF9gjPk.net >>281 橋本環奈に似てるね。
285 :デフォルトの名無しさん :2022/01/19(水) 20:43:02.39 ID:Qtd/3JbQ.net 引数書くのやブロック書くのに括弧を多用する言語は疲れる
286 :デフォルトの名無しさん :2022/01/19(水) 20:54:02.18 ID:tV3PBnn6.net でもカッコがある方が エディタが助けてくれるからなあ pythonとかタブの位置を合わせるのが大変
287 :デフォルトの名無しさん :2022/01/20(木) 18:59:46.11 ID:Ty/TufmK.net # Make10面白いな Elixirの勉強がてらに思わず仕事さぼって全解探索作ってしまったわ defmodule Make10 do @nums 1..9 |> Enum.map(&{:num, &1, Integer.to_string(&1)}) @ops [{:plus, "+"}, {:minus, "-"}, {:mul, "*"}, {:div, "/"}] |> Enum.map(&Tuple.insert_at(&1, 0, :calc)) @initial_stack [] @initial_usednumbers [] @initial_state [{@initial_stack, @initial_usednumbers}] @accept_duplicated_number false def do_action({stack, used}, action) do case {stack, action} do {_, {:num, val, symbol}} -> if !@accept_duplicated_number and Enum.member?(used, val) do {[{{val, 1}, "#{symbol}"} | stack], []} else {[{{val, 1}, "#{symbol}"} | stack], [val | used]} end {[{{c1_n, c1_d}, exp1} | [{{c2_n, c2_d}, exp2} | tail]], {:calc, op, symbol}} -> expression = "(#{exp2}#{symbol}#{exp1})" case op do :plus -> {[{{c2_n * c1_d + c1_n * c2_d, c1_d * c2_d}, expression} | tail], used} :minus -> {[{{c2_n * c1_d - c1_n * c2_d, c1_d * c2_d}, expression} | tail], used} :mul -> {[{{c1_n * c2_n, c1_d * c2_d}, expression} | tail], used} :div -> {[{{c2_n * c1_d, c2_d * c1_n}, expression} | tail], used} end end end
288 :デフォルトの名無しさん :2022/01/20(木) 19:00:29.87 ID:Ty/TufmK.net # 続きだよ def action_candidates(stepcount_remain, {stack, _}) do stack_depth = Enum.count(stack) case stack do [] -> @nums [_ | []] -> @nums _ when stack_depth > stepcount_remain -> @ops _ -> @nums ++ @ops end end def expand_each_state_node(stepcount_remain, state) do action_candidates(stepcount_remain, state) |> Enum.map(&do_action(state, &1)) |> Enum.filter(fn {stack, used} -> !Enum.empty?(used) end) end def step_one_action(stepcount_remain, statelist) do statelist |> Enum.map(&expand_each_state_node(stepcount_remain, &1)) |> List.flatten() end def run(num_of_cards \\ 4, {target_val_n, target_val_d} \\ {10, 1}) do (num_of_cards * 2 - 1)..1 |> Enum.reduce(@initial_state, &step_one_action(&1, &2)) |> Enum.filter(fn {[{{lastval_n, lastval_d}, expression}], used} -> lastval_n * target_val_d == target_val_n * lastval_d end) # |> Enum.each(fn {[{ {lastval_n,lastval_d} ,expression}] , used} -> IO.puts expression end) end end
289 :デフォルトの名無しさん :2022/01/20(木) 19:02:16.35 ID:Ty/TufmK.net iex(96)> Make10.run [ {[{{10, 1}, "(1+(2+(3+4)))"}], [4, 3, 2, 1]}, {[{{10, 1}, "(1*(2+(3+5)))"}], [5, 3, 2, 1]}, {[{{10, 1}, "(1-(2-(3+8)))"}], [8, 3, 2, 1]}, {[{{10, 1}, "(1+((2+3)+4))"}], [4, 3, 2, 1]}, {[{{10, 1}, "(1*((2+3)+5))"}], [5, 3, 2, 1]}, {[{{10, 1}, "((1+(2+3))+4)"}], [4, 3, 2, 1]}, {[{{10, 1}, "((1*(2+3))+5)"}], [5, 3, 2, 1]}, {[{{10, 1}, "(1-((2-3)-8))"}], [8, 3, 2, 1]}, {[{{10, 1}, "(1-((2-3)*9))"}], [9, 3, 2, 1]}, {[{{10, 1}, "((1-(2-3))*5)"}], [5, 3, 2, 1]}, {[{{10, 1}, "((1-(2-3))+8)"}], [8, 3, 2, 1]}, {[{{10, 1}, "(1*((2*3)+4))"}], [4, 3, 2, 1]}, {[{{10, 1}, "((1*(2*3))+4)"}], [4, 3, 2, 1]}, {[{{30, 3}, "((1+(2/3))*6)"}], [6, 3, 2, 1]}, {[{{10, 1}, "(1+(2+(4+3)))"}], [3, 4, 2, 1]}, {[{{20, 2}, "(1/(2/(4*5)))"}], [5, 4, 2, 1]}, {[{{10, 1}, "(1-(2-(4+7)))"}], [7, 4, 2, 1]}, ・・・
290 :デフォルトの名無しさん :2022/01/20(木) 19:05:30.69 ID:Ty/TufmK.net 分数も対応(数字4つで129/8) iex(102)> Make10.run(4, {129,8}) [ {[{{129, 8}, "((1/8)+(7+9))"}], [9, 7, 8, 1]}, {[{{129, 8}, "(((1/8)+7)+9)"}], [9, 7, 8, 1]}, {[{{129, 8}, "((1/8)+(9+7))"}], [7, 9, 8, 1]}, {[{{129, 8}, "(((1/8)+9)+7)"}], [7, 9, 8, 1]}, {[{{129, 8}, "((3*5)+(9/8))"}], [8, 9, 5, 3]}, {[{{129, 8}, "(3*(6-(5/8)))"}], [8, 5, 6, 3]}, {[{{129, 8}, "((5*3)+(9/8))"}], [8, 9, 3, 5]}, {[{{129, 8}, "((6-(5/8))*3)"}], [3, 8, 5, 6]}, {[{{129, 8}, "(7+((1/8)+9))"}], [9, 8, 1, 7]}, {[{{129, 8}, "((7+(1/8))+9)"}], [9, 8, 1, 7]}, {[{{129, 8}, "(7+(9+(1/8)))"}], [8, 1, 9, 7]}, {[{{129, 8}, "((7+9)+(1/8))"}], [8, 1, 9, 7]}, {[{{129, 8}, "(9+((1/8)+7))"}], [7, 8, 1, 9]}, {[{{129, 8}, "((9+(1/8))+7)"}], [7, 8, 1, 9]}, {[{{129, 8}, "(9+(7+(1/8)))"}], [8, 1, 7, 9]}, {[{{129, 8}, "((9+7)+(1/8))"}], [8, 1, 7, 9]}, {[{{129, 8}, "((9/8)+(3*5))"}], [5, 3, 8, 9]}, {[{{129, 8}, "((9/8)+(5*3))"}], [3, 5, 8, 9]} ]
291 :デフォルトの名無しさん :2022/01/20(木) 19:13:42.14 ID:Ty/TufmK.net Prologで書いたら楽そうなところはなかったw
292 :デフォルトの名無しさん :2022/01/20(木) 19:54:16.86 ID:Ty/TufmK.net ちなみにeval使わず分数計算自前だよ Elixirも楽しい!
293 :デフォルトの名無しさん :2022/02/03(木) 03:27:48.02 ID:5caWIEV6.net Prologって簡単な深さ優先・探索列挙はともかく動的に細かな探索の制御をしようと思うと途端に面倒になるからな 他の言語で書いた方が小回りきくわ、ってなる 実用上、組み合わせの少ない練習問題的な全解探索にしか使えないゆえん
294 :デフォルトの名無しさん :2022/02/03(木) 10:21:28.73 ID:lrjvvrdU.net スッキリ書ける俺々プリプロセッサわんさかありそう
295 :デフォルトの名無しさん :2022/05/16(月) 08:48:09.42 ID:fgDPgjMn.net Mbは死んだか
296 :デフォルトの名無しさん :2024/02/10(土) 21:21:59.59 ID:SNYsXVp/C フクシマ沖の魚から18000ベクレ儿(一般人の年間被曝限度の1/3]ものセシウムか゛検出されていなか゛ら科学だのテ゛タラメほさ゛いて核汚染水 たれ流す人の命より拝金の日本にクソシナ猛反発、クソシナ力ンコ一テ囗リス├は自主的のみならず國レベルて゛禁止して核汚染國日本に なんか二度と来るなよな,ハ゛カチョンその他も見習って曰本に丿コノコ地球破壊しにくんな力ス、太陽光發電の時間帯なんて電カ余りまくりて゛ タタ゛て゛業者間取引されてるがクソ航空機廃絶すれは゛全部火力發電て゛補っても余裕て゛電カ価格下落するほど莫大な石油無駄に燃やしてるわけだか゛ その惡の権化を倍増させて大騒音まき散らして威カ業務妨害までしていながら毎年何千億もかけて廃炉作業してる中 懲りす゛に原發再稼働の世界一信用されていないテ゛タラメ日本政府を非難するのは正解,地球破壞テロに対して嫌か゛らせすべきは 鉄道の30倍以上もの莫大な温室効果カ゛スまき散らして気侯変動、海水温上昇させて洪水に土砂崩れに暴風にと住民の生命と財産を強奪して 私腹を肥やしてるクソ航空関係者な.クソシナに国交断絶されたら悶えるやつ多いがバカチョンはトモニなにがしに政権取らせて断絶しろ (ref.) ttps://www.call4.jp/info.php?type=items&id=I0000062 ttps://haneda-project.jimdofree.com/ , ttps://flight-route.com/ ttps://n-souonhigaisosyoudan.amebaownd.com/
109 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者