2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

【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
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★