【C?】最初の言語に何を選ぶか【Haskell?】at TECH
【C?】最初の言語に何を選ぶか【Haskell?】 - 暇つぶし2ch125:デフォルトの名無しさん
21/09/19 02:37:42.97 hFofnRJN.net
着替えが上手ければ更衣室行かなくてもいいよねというCちゃんが胸チラマンチラしながら教室で着替えるからこそ
ガードの固いRustちゃんの振る舞いが周りに受け入れられるんだよ
CちゃんがいなければRustちゃんはただのめんどくさい子

126:デフォルトの名無しさん
21/09/19 02:54:45.41 rdoGn3lB.net
そういうことよ

127:デフォルトの名無しさん
21/09/19 02:59:11.11 1dukWiTD.net
>>125
え??プログラミングしたことないでしょ?
Cが自分でメモリをalloc/freeしなきゃいけないめんどくさい子だよ
Rustは安全に自動で解放までしてくれるから手間のかからない良い子

128:デフォルトの名無しさん
21/09/19 10:12:45.82 l0UjyXwH.net
>>127
> Cが自分でメモリをalloc/freeしなきゃいけないめんどくさい子だよ
ANSI標準 C のでは確かにその通り。
文字列も含めて配列はただのポインタでしかないので、その先にある
データ領域は明示的にサイズを示すかSIZEを指定して alloc しなきゃ
いけないし、領域外参照も自動的にチェックしてくれないから
pop/push 時に自分で監視しなきゃいけない。
まだ Mac が古い OS だったころの C では、文字列は
ポインタではなくてハンドル(ポインタへのポインタ)で、
文字列もヌル・ターミネートの C 文字列じゃなくて、
先頭に文字列調を持った Pascal 文字列だったように記憶している。
そういう点に配慮した、初心者にとって扱いやすい C 言語は、
学習用にあってもいいと考えた人もいて(たしか T 社)、
「C のインタプリタを C コンパイラで書く」という地味な仕事を
かなり昔にやったことがある。

129:デフォルトの名無しさん
21/09/19 10:16:51.44 l0UjyXwH.net
ちなみに FORTRAN 60 も配列はただのポインタだったので、
「配列の添字に負数を指定してシステム領域に手を伸ばす」
とかいった猥褻な手法が使えたという。

130:デフォルトの名無しさん
21/09/19 13:29:58.47 hFofnRJN.net
いやんエッチ!

131:デフォルトの名無しさん
21/09/19 15:29:22.07 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
21/09/19 16:27:16.85 l0UjyXwH.net
>>131
頭っから stdio.h が入ってマクロアセンブラのヘッダが並んでいて、
終わりが exit(0)っつーのが通な感じだな。
Java で exit すると JVM のプロセス自体が落ちちゃうので、
C だと上のプロセスからコールされて、longjump みたいな
感じの大域脱出をするパターンで使うのが吉かと。
まぁ、最近の Java だったらキャッチ&スローで処理するところだけど、
上の方のルーチンで例外を握りつぶしていたりするので、
大きなプロジェクトではときどきトラブルが起きたりはするのだが。
>>130
> いやんエッチ!
Mb といえば「ブラックアートの沼津秘宝館」、
Mr.Moto といえば「ギミックの玩具箱」、
所長といえば「アルゴリズムの生辞引(ウォーキング・ディクショナリー)」
と云われたものなんだがな(笑)。
まぁ、とりあえず何でも訊いてくれ。
C コンパイラに、なんか仕掛けるとかいったネタは、
チューリング賞の受賞講演とかであったように思う。
「ブートストラッピング開発には、
セキュリティ上の穴がある」というのは、
Linux 使いには念頭に置いておいてほしいと思う。

133:Mb
21/09/19 16:38:13.86 l0UjyXwH.net
そういえば、ヘッダファイルの巡回参照で
コンパイラを落とすとかいうのはよくあったなぁ(笑)。
あとは返り値が文字列だったりするときのバッファは
レジスタには収まりきれないのでメモリ上のレジスタの
アドレスで返ってくるわけだが、その領域外のアドレスを
狙ってプログラム領域を書き潰すと、他人の書いたコードの
ところでエラーが出る(ミニコンとかだと、アドレスカウンタガ
表示される)ので、けっこう惨い目に遭ったという話を
聞いたことがある。

134:デフォルトの名無しさん
21/09/20 10:06:54.60 rmuhdvcF.net
>>129
え??プログラミングしたことないでしょ?

135:Mb
21/09/20 11:18:11.57 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:デフォルトの名無しさん
21/09/20 11:52:16.89 V39ohWuW.net
すきあらば自分語り

137:デフォルトの名無しさん
21/09/20 13:07:38.28 m4eFSOkj.net
自演ばれたぬ

138:Mb
21/09/20 13:16:07.32 ca2ASSgD.net
>>136
>>137
おまえらコテハンつけて正面から喧嘩売ってこい。
「かかって来いよ。相手になるぜ?」
(Go ahead. Make my day.)
読み筋は「ダーティ・ハリー」。

139:デフォルトの名無しさん
21/09/20 13:42:53.65 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
21/09/20 15:05:29.99 ca2ASSgD.net
>>139
なんかしら見ていて気色わるいコードだな(-_-;)。
「main()」はかなり昔(もう二十年以上も前)のスタイルで、
昨今は「main(argc, argcnt)」だったような ……
Java だと配列はオブジェクトなので、「main(args)」で
済んじゃうんだが。
「for (;;) {」もどういうコードに落ちるか不安になるが、
C にも Java にも「LOOP - UNTIL - DO - REPEAT」構文がないので、
「for (;;)」とか「while(true)」とか書いておいて途中で break するしか
方法がないので致し方あるまいと思う。
あとは、商業プログラマだと、入力のチェックとか入力文字列の
サニタイズとかで無暗に手間を喰うので、入力は別ルーチンに
しておくと、あとあと保守が楽だぞ。

141:デフォルトの名無しさん
21/09/20 16:23:28.46 zEQlChxu.net
node-red使いだしてから長ったらしいコード書くのが面倒くさくなってしまったな。
とりあえずC/C++はどこでも使えるから知っておいて損はないかな?
あと、AI系はPythonがライブラリの充実ぶりで圧勝で、あちらの世界で話をするときの共通言語って感じだし、AIは当たり前のものになってきているから避けては通れないかな?
過去に何度も「将来、これが主役になる」と言われたものはあったけど、結局主役になることもなければ完全に消えるでもなくカオスになっただけって感じだし、他のものは必要に応じてってところかな?

142:Mb
21/09/20 16:38:43.97 ca2ASSgD.net
>>141
OS/2 の時代に VisualAge C/C++ と使っていた世代としては、
とても得心がゆく。
VisualAge はかなり優れた IDE だったが、Java に対応するように
なってから、「IBM」ブランドだと警戒されそうだと思ったか、
「Eclipse」として独立させて成功した。
Node-Red については知る機会がなかったが、
ツールとして興味深いので勉強しようと思う。

143:Mb
21/09/20 16:49:32.96 ca2ASSgD.net
>>141
> AI系はPythonがライブラリの充実ぶりで圧勝
ディープ・ラーニング(深層学習)とか言ってる時点で
マシンの高速化に頼ったパターン認識の焼き直しでしかないと
考えている。
並列処理に関してきっちり向かいあうかどうかが今後の課題だな。
名ばかりの AI は、邪魔なので道をあけてほしい。
読み筋はトヨタ・チェーリカ。

144:デフォルトの名無しさん
21/09/20 17:00:51.99 OciMvJKX.net
数値計算もSQLも両方書けて初めて一人前な感じはするよね

145:デフォルトの名無しさん
21/09/20 18:44:10.54 iqyABNEN.net
>>143
もう少し勉強しょうなw

146:デフォルトの名無しさん
21/09/20 18:58:44.62 V39ohWuW.net
>>140
cはコマンドライン引数いらんかったらint main(void)って書けるよ
c++ならint main()の書き方でおk

147:Mb
21/09/20 20:19:20.81 ca2ASSgD.net
>>146
呼ぶ側の都合と呼ばれる側の実装の擦りあわせを考えると、
「言語仕様として、それが可能だ」よりも
「業務レベルで考えると、保守しやすい可読性の高いコード」
というのが重要になってくる。
「ダサいコード」も、誰もがダサいと感じるわけじゃなくて、
それなりに経験を積んでいるプログラマだと、
ニヤっとすることもある。
「つまらないコード」というのは、誉め言葉だったりもする。
>>145
「勉強」という言葉を間違って覚えた典型的な例だな。
他人から言われて「勉強」するんじゃない。
自分が自(みずか)ら自分に科すから “勉強” なんだ。
虐待経験があったのは痛ましいと思うが、
それは別板にゆくかカウンセリングを受けろ。
とはいえ、昨今の精神科っていうと薬物療法が主体なので、
ちゃんとしたカウンセリングを受けようと思うと、
なかなか難しいんだよなぁ ……

148:Mb
21/09/20 20:39:24.44 ca2ASSgD.net
>>146
Java に慣れちゃうとなぁ ……
引数を握りつぶしちゃうのもいまひとつだし、
オプションをチェックするのも仕事のうちだし、
引数なしで呼ばれたら、「usage()」ルーチンに
飛ぶのが礼儀のような気もするので、
パイプ処理前提の C とは、若干感性が違うかもしれない。
GUI 全盛の現在では、そのあたりはなかなか
理解してもらいづらい点はあるのだが。

149:デフォルトの名無しさん
21/09/22 05:19:35.39 5brsinXw.net
状態遷移図

150:デフォルトの名無しさん
21/09/22 11:00:56.12 ucS/NBRX.net
アセンブラとかマシン語とか言ってる奴。
解ってんだろ、実務ではこのご時世、ほぼ糞の役にも立たないって。
余程特殊な業務でもない限りまず使わない。それこそパチンコとかの組込みとか、ゲーム作る際に余程特殊なことやる場合とかだ。
あまり実用的ではないし、理屈だけ知ってればまずアセンブラやマシン語は使われることはない。
昔ゲーム作る際に使ってて、それ以降全く使っていない俺が言うんだから間違いない。

151:デフォルトの名無しさん
21/09/22 11:36:49.41 +50nKS9n.net
>>150
それらもRustでプログラミング可能
どうしても一部アセンブラで書かなければならない部分があったとしてもRustはその部分だけをRustプログラムの中にアセンブラで記述可能

152:デフォルトの名無しさん
21/09/22 12:20:23.49 VlqP8/Mw.net
Rust厨いい加減ウザい

153:Mb
21/09/22 14:04:34.95 9UO88pW2.net
>>149
デシジョンテーブルとかよくやってたなぁ。
昨今の「かな漢字システム」でもいまだに使っていたりする。
少なくとも MicroSoft は、「私、馬鹿でーす」と
顔に貼っているから、もう IME も信用できない。
日本 IBM はどこへ行こうとしているのかが分からない。

154:Mb
21/09/22 14:18:01.89 9UO88pW2.net
>>150
> 解ってんだろ、実務ではこのご時世、ほぼ糞の役にも立たないって。
> 余程特殊な業務でもない限りまず使わない。それこそパチンコとかの組込みとか、
> ゲーム作る際に余程特殊なことやる場合とかだ。
> あまり実用的ではないし、理屈だけ知ってれば
> まずアセンブラやマシン語は使われることはない。
そういう技術者を消費していた派遣業者が問題であって、
「技術屋」を使い潰してきたバブリーで
脳内アッパラパーな連中に対する
憤(いか)りはもちろんある。
で、「高齢者」「障がい者」とか雇おうとしても、
雇傭者側にも怯えがあたりする。
ちゃんと教えられる人はまだしも救いがあるのだが、
ちゃんと説明できちゃうとバブリー頭の経営者に排除されたるするんだよな。

155:デフォルトの名無しさん
21/09/22 14:43:54.36 KzVGjGnL.net
BNF

156:Mb
21/09/22 16:01:28.63 9UO88pW2.net
>>155
> BNF
BNF ことバッカス=ナウア記法というのは
Pascal の文法記述に使われたのが有名だが、
図で表現しようと思うと、やたら面積を喰うので
大型(A 全とか B 全とかの)のプロッタとかがないと
全体が見渡せないんだよな。

157:Mb
21/09/22 16:05:02.04 9UO88pW2.net
>>156
うちの所長が日本語の形態素解析の仕事をしたときに、
B 全の方眼紙を近所で何枚も買ってきて
日本語の形態素に関する文法を描いてたことがある。

158:デフォルトの名無しさん
21/09/22 16:05:45.80 KzVGjGnL.net
きみ頭悪いって言われるでしょ

159:Mb
21/09/22 16:13:49.07 9UO88pW2.net
あと、カルロス・ゴーンさんが
日産のスカイラインGTを復活させるという話があって、
それ用の新しい製造ラインを構築するという話があって
所長が三菱総研の話で入ったことがある。
そんとき所長はSQLの話で入ったのだけど、
ER図(エンティティ・リレーション図)という
Java のオフジェクト図みたいなのを見たらB全で、
とても分かりやすかったという話を聞いたことがある。

160:Mb
21/09/22 16:17:33.23 9UO88pW2.net
>>158
> きみ頭悪いって言われるでしょ
馬鹿と鋏は使いよう
馬鹿と金槌は使いよう
きみは決して経営者になるな。
子供に金槌を持たせると何でも叩くから。

161:Mb
21/09/25 14:42:48.30 Ow2ePG0l.net
>>145
>>146
現代ではネットワーク・コンピューティングが一般的だが、
CPU が一個(待合わせの必要がない、ワンプロセスの処理系)の
処理系だと、いわゆる「フォン・ノイマンのボトルネック」という話に
なるんだわ。
どっかのメモリ領域から引っ張ってきた値を処理して、新しい
値を格納する間に、他のプロセスが元の値を書きかえちゃったら
辻褄が合わなくなるだろ? そのために「排他制禦」っつーものが
あるんだけれど、いちいちそれをやっていると実行効率が下がるんだ。
C 言語はハードウェアべったりの「超高級アセンブラ」
(要するに、いわゆる「高級言語(第三世代)」ですらない
第二世代の言語)と云われていたし、Haskell は
「遅延評価」というコンセプトに基づいているので、
「どこに位置づけたらいいのかの判断が難しい」という話になる。
「『竹内の tarai 函数を』 Haskell で書いて実行する」
とかいった話は、掘り下げておいて損はないと思う。
「入山のアルゴリズム」も参考になると思う。

162:デフォルトの名無しさん
21/09/25 16:26:09.92 Uwq7lnPV.net
結局は「一番距離の近い周りが使っているもの」になるんだろう。

163:デフォルトの名無しさん
21/09/25 21:29:08.16 Ow2ePG0l.net
>>162
> 結局は「一番距離の近い周りが使っているもの」になるんだろう。
いや、昨今はそのあたり、昨今は切実な話だぞ?
守秘義務契約でガチガチに縛られてて、
テレワークで同じ職場の人間と会話する機会もなくて、
自粛要請のせいで同業者と飲み会をすることもできん。
コーディングで詰まったときに誰にも相談できんというのは
しみじみキツいので、まだしも使っている人間が多い Java は
選ぶ価値があると思う。
ただ、昨今は言語について深く掘り下げようという人間は
少数派なので、けっきょく C 世代の年寄りばっかりが集まって
愚痴を垂れるばっかりになってしまうのだが ……
せめてもの救いは、家庭用のビアサーバーが普及したことくらいかな。
ウィスキーやレモンサワーだと、糖分が少ないせいか悪い酒に
なりがちだ。

164:デフォルトの名無しさん
21/09/26 00:16:07.46 Zk67fDA9.net
嫌われすぎだろ

165:デフォルトの名無しさん
21/09/26 09:30:34.16 s7bOlMFt.net
仕事ならなおさら、チーム内で使っていない言語を勝手に選ぶわけにもいくまい。

166:デフォルトの名無しさん
21/09/26 09:48:46.46 xV3OGa/L.net
>>151
可能かどうかより、周りが使ってるかどうかだろうけどね。
電子工作系でもRust使った作例はごく僅か、ほとんどC/C++とアセンブラだもんね。

167:デフォルトの名無しさん
21/09/26 10:04:35.46 xV3OGa/L.net
>昨今は言語について深く掘り下げようという人間は 少数派なので、
プログラミング言語の栄枯盛衰が激しいからね。掘り下げるなんて言ってる間に次の流行りが来る。
その多くがC/C++の欠点をあげつらってこんなに素敵なんだ、これからはコレが主役だ!とか言ってたけど、結局その他大勢の中の一つになっていったしね。
まあ、新しい言語を作る側の人間もまたC/C++使いだったりもするんだろうけど。
てか、人生ズボラ派としては、いい加減、文字をずらずら並べてプログラムを記述するというスタイルそのものがどうにかならんのかな?と思ったりはするわ。

168:デフォルトの名無しさん
21/09/26 11:03:31.80 YbVO1WH/.net
ポトペタの方が効率悪い

169:Mb
21/09/26 13:19:09.44 tXVd2t/V.net
>>167
> 文字をずらずら並べてプログラムを記述するというスタイルそのものが
> どうにかならんのかな?
それは「ノンテクスチュアル・プログラミング」といって、
わりと人類の夢みたいなところがあるんだが、実現しようと思うと
JIS フローチャートとかで育った人が話をややこしくするのだ。
SPD とか NS チャートとか、構造化に向いたものもあるんだけどな。
早稲田大学(日立?)の二村先生は、「この世から JIS フローチャートを
撲滅したい」と公然と主張していらっしゃった。
いちど筧先生の研究室のお邪魔したときに、外廊下のどんづまりが
二村研究室で、仕事で日常的にフローチャートを書いていた私は
逃げ帰ったことがありました。

170:Mb
21/09/28 21:11:09.09 1n55ADGm.net
もう言語から作っちゃうのが早いような気がしてきた。
昔の Fortran 77 で、「最短のプログラム」というのがあって、
「END.」だそうだ。
Pascal だと begin ~ end がやたら目についたし、
C や Java だと「main()」で始まるし、
Java で「exit()」とかやると JVM そのものが落ちて面倒な
ことになる。
そのあたりを整理して、変数スコープをはっきりさせて、
強い静的な型付けを強制して、swap とか
loop ~ until ~ do ~ repeat とかも導入して、
void だったら 「repeat.」とちゃんと書かないと文法エラーになるような、
かっちりした教育用の言語があったら、
遅かろうがなんだろうが使う価値がありそうに思う。

171:デフォルトの名無しさん
21/09/29 02:34:40.12 guchPPTa.net
IBMメインフレームのアセンブラなら、最短のプログラムは
ST__EQU_*
____SR__15,15
____BR__14
____END_ST
IEFBR14だ

172:Mb
21/09/29 15:22:19.43 g61nlzZ7.net
>>171
さすがに濃すぎてわからん。うちらは通信用のスーパーミニ
(たしかハネウェルのコピーの NCOS)だったので、
いわゆるメインフレームは触ったことがないのだ。
ひょっとして、「白い机の 360」とかの世代の方ですか?

173:デフォルトの名無しさん
21/09/29 17:55:38.49 2n7INrGl.net
さすがに…
360、370の後継の z/OSです
ですが、IEFBR14 は360の頃から使用されていますね
何もしないで戻り値として 0を返すだけのプログラムです
intelで戻り値をaxレジスタにセットするように、レジスタ15に0を設定しています

174:Mb
21/09/29 20:22:53.72 g61nlzZ7.net
>>173
私も「NCOS」といっても「スーパーミニ(MS140以降)」の時代なので、
「NCOS 1 アセンブラ」はちょっと齧っただけ。
入間基地の FADP にメインフレーム級の NCOS が
あったのは見た記憶がある。
ミニコンピュータといっても、「PDP」シリーズは写真でしか
見たことがなく(あのカラーリングの感性はいかがかと思う)、
PDP-11 の仮想記憶版の拡張型であるVAX-11(いわゆるブルー・バクスン)は
NEC の府中事業場の隅っこで埃をかぶっていたのを見たことがある。
つーても、あれってサイズが高級車一台分くらいあるんだよなぁ …
「“ミニ” コンピュータ」っつーんだから、せめて大型冷蔵庫くらいの
サイズにしてほしい。
自宅にサーバールームを用意して、17 インチのラックを設置するとかいうのは
さすがに控えようと思うのだが、ケース買ってきて自作マシンというのは、
若気の至りで一度やらかしたことがある。

175:デフォルトの名無しさん
21/10/01 20:12:36.77 .net
コンピュータ老人会

176:デフォルトの名無しさん
21/10/01 21:14:38.49 wkRzMgwV.net
ぶっちゃけ、高級アセンブラとしてのC。
その上はいろんな哲学を学ばないといけないから。

177:Mb
21/10/02 10:53:36.01 9AHxi4+O.net
>>176
>その上はいろんな哲学を学ばないといけないから。
C は記述の粒度が小さいもんだから、
小さいプログラムを自分ひとりで書いているうちは
いいんだけど、なんかしら全体構造が見えづらくなっちゃうんだよな。
若いうちはそれでも力業でなんとかなるんだけど、さすがに
三十代半ばを過ぎると「三日前の自分は他人」というのが
身に染みてきて、ちょっと大きなプロジェクトでチームを組むと
なにかしら行き詰まりを感じたりする。
私の場合は、その先のポジションが Java だっただけで、
C♯とかいう人もいるかもしれない。

178:デフォルトの名無しさん
21/10/02 16:00:47.63 HwAmnb74.net
>>177
それならばRustが良いですね
Cと同じく低水準な記述も可能でネイティブコンパイルされGCも無し
C言語がとっても便利で強力になったものがRust言語

179:デフォルトの名無しさん
21/10/02 17:25:18.84 9AHxi4+O.net
また来たか orz

180:デフォルトの名無しさん
21/10/02 23:55:02.44 0KUEFcg9.net
D

181:デフォルトの名無しさん
21/10/03 00:29:42.74 rhju0Lgz.net
最初に学ぶというからには、手っ取り早くでなくということではなく、体系的に学びたいということなんだよね
僕はC押しだったけど、たしかにCはかならず一度は通らなくてはならないと思うのだけど、最初にCで挫折してしまうより、もう少し取っつきやすい、アルゴリズムに集中できる言語から入るのがいいのかなとも
順番に拘らないというか

182:デフォルトの名無しさん
21/10/03 10:51:06.49 oCTMWA/s.net
どうせやるんだから(やらなきゃ話にならないんだから)
最初からやったほうがいいに決まってる
後からで良いって逃げてる香具師は使い物にならない(レベルで満足してるのが多いイメージ)

183:デフォルトの名無しさん
21/10/03 11:03:25.80 dAyKRsSE.net
どうせやることになる言語はrustやhaskellに限らずたくさんあるんだから、何もそれらを最初にやる必要は全くなく、基礎的なもの分かりやすいものから順に積み上げるのは妥当だろう

184:デフォルトの名無しさん
21/10/03 11:21:17.66 lzwjEZSj.net
>>181
おかしかったワ:
最初に学ぶというからには、手っ取り早くということではなく体系的に~

185:デフォルトの名無しさん
21/10/03 14:03:17.28 XAcVATkF.net
>>183
妥当というか当然だよね
このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる

186:Mb
21/10/03 15:35:19.26 13zKiOvX.net
>>185
> このスレにいる奴は頭のおかしい社会不適合者ばかりだから世間とずれすぎてる
それは×かなぁ。
「こんなマイナーなスレをわざわざ荒しにくる奴は、どっか心を病んでいる
『精神的な社会不適合者』ばかりだから、プログラマ文化からずれすぎてる」と
いうのが適切だと思う。
先天的に脳がおかしい(ということは、「頭がおかしい」)けれど、
「自閉なんだけどフツーに有能なプログラマ」は電算業界には普通にいるし、
理数系の研究者に関しては、むしろ「自閉系である」というのが
強みであったりする。
「世間とずれすぎてる」というのは、同調圧力に負けているんじゃないかなぁ。

187:デフォルトの名無しさん
21/10/03 19:50:06.39 XAcVATkF.net
キモ

188:デフォルトの名無しさん
21/10/03 19:53:12.22 J1pSCw/C.net
>>174
PDP、なんかレトロフューチャーみたいでかっこいいじゃんと思う。

189:Mb
21/10/03 21:18:00.43 13zKiOvX.net
>>188
漏れもそう思う。紫とか使っちゃうところがパンクチュアルだと思った。

190:デフォルトの名無しさん
21/10/03 21:32:54.16 f+cxTxee.net
DECがロゴの色をバーガンディに変えたのは1990年代のことだがな。
PDPの時代はいわゆる"Small Blue"

191:Mb
21/10/03 21:48:09.94 13zKiOvX.net
そうだったんだ。
仮想記憶システムをフォローした VAX-11 は、
「ブルー・バクスン」と云われていたのは憶えている。
Prolog で有名な中島(「ナカジマ」ではなく「ナカシマ」)
秀之さんは Prolog 処理系の VAX への移植で有名だが、
未見だけれども「秘境 Prolog に名前呼びの修羅場を見た!」
という論文があるとかないとか(もうすぐ『bit』の電子版が
出るらしいので、興味があったら購入して探していただきたい)。

192:Mb
21/10/03 21:57:33.48 13zKiOvX.net
そういえば思い出した。
DEC はパソコンにも手を出して、ケース型のパソコンを出して
いたんだよな。それで「DEC なら信用できるだろう」と思って
秋葉原で買ったら、パソコン業界からいきなり撤退しやがった(T_T)。
以来、「DEC」というブランドは信用しないと決めている。
同様に、「Microsoft」「アスキー」とかいったブランドは、
基本的に信用しないと(個人的な意見だが)決めている。

193:デフォルトの名無しさん
21/10/03 22:55:23.52 Fj8TwfDX.net
DECの関東工場で生産されるパソコンはMade in TOKYOと銘打ってHPが販売してる。

194:デフォルトの名無しさん
21/10/03 22:56:02.47 Fj8TwfDX.net
Made in TOKYOと言うが本当は群馬産。

195:デフォルトの名無しさん
21/10/04 01:14:14.63 rfKfA2dL.net
最速ならvscodeでもダウンロードしてきてjavascriptでもてきとうにいじるのが良いかもね。
そのあとは知らんが。

196:デフォルトの名無しさん
21/10/04 01:55:28.66 hBHzC2Ye.net
vscodeだと汎用的すぎて開発ターゲット決めるところからだし敷居が高い
よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ
遊ぶ分にはデバイス購入不要
他にもUserscriptの改造とかすぐ目に見えて動かせるものが良いはず

197:デフォルトの名無しさん
21/10/04 09:14:06.26 rfKfA2dL.net
>よくあるシミュレータ付きの適当なIoTデバイス用IDEでJS対応してるのがオススメ
で、具体的に何?初めての人はそれがわからんから苦労するんだろ。

198:デフォルトの名無しさん
21/10/04 12:54:41.34 toVLiTfB.net
>>197
有名どころで取っつきやすいのだと
URLリンク(www.microsoft.com)
ここのArcadeかmicro:bitのチュートリアル
いっそ初手ならここのブロックプログラミングで良い気もする

199:Mb
21/10/04 14:56:58.28 JFT4UYBi.net
>>193
>>194
そうなのか orz
「がっちりマンデー」の報道は嘘だった(法律上は「嘘」とは
言えないだろうが)んだな。
「Made in TOKYO」といっても、
「東京都内で組み立てています」というだけの話であって、
たとえば餃子の餡と餃子の皮を中国から輸入して日本で包めば、
「Made in Japan」の餃子になっちゃうわけだからなぁ ……

200:デフォルトの名無しさん
21/10/05 00:31:07.56 eIScRtg7.net
組み上げたあとの検品をちゃんとしてくれたら文句はないんだけど
最近は国内メーカーの冠ついてても信用ならんのよね

201:Mb
21/10/07 21:07:09.78 r04zjL6z.net
マウスコンピュータの評判はどうなんだろう。
本来ならば、いわゆるノートブック・パソコンは
姿勢が辛(つら)くなるのでお勧めはしたくないのだが、
新型コロナウイルス感染症の流行明けだと、
「矯正出社」というのがあってリモートワークも
ままならなくなっているらしい。
昔は「読書机」というものがあったのだが、
昨今はパソコンも小型化しているので
なんかしらそういう環境があってもいいと思う。
「最初の言語に何を選ぶか」というのも重要なんだが、
まず開発環境を整備しないといけないと思う。

202:デフォルトの名無しさん
21/10/10 11:08:54.04 ZuTCKPOD.net
URLリンク(twitter.com)
これってfortranってどうやって配列添字アクセス実現してるんや?
ポインタ演算提供してないだけでポインタとして配列表現してるんか?
(deleted an unsolicited ad)

203:Mb
21/10/10 16:33:27.72 ZJbmtnIp.net
>>202
基数的定義と序数的定義があって、N88 の BASIC では
OPTION BASE という構文があって、0 と 1 のどっちで
始めるかが指定されていたりする。
このあたり、真面目に議論すると長くなるので、
待て続報。

204:Mb
21/10/10 17:23:37.04 ZJbmtnIp.net
>>202
> これってfortranってどうやって配列添字アクセス実現してるんや?
「fortran」と一括りにするのは先達に失礼なので、
「FORTRAN 60」(別名「大文字のフォートラン」)と
「Fortran 77」(別名「ナナナナ」)と、
NC旋盤とかで使われている「ハチマル」というのがある。
「フォートラン」というのは、フォームラ・トランスレイター
の略語で、もともとは「F-1(フォームラ・ワン)」と同じように、
「サーキット上の怪物」として数値計算(=科学技術計算)として
君臨していたのが「大文字のフォートラン」だった。
さすがにレガシーコードなので、見たことはあるが動かしたことはない。

205:Mb
21/10/10 17:30:04.20 ZJbmtnIp.net
屑な IME が、「フォーミュラ」のつもりで打ったら「フォームラ」と
変換しやがった(-_-x)。
くたばれマイクロソフト。

206:デフォルトの名無しさん
21/10/10 17:39:38.06 kKlMir+m.net
formuraかfo-muraとでも打ったか
ローマ字設定でlaをラにしてて予測が負けたか

207:デフォルトの名無しさん
21/10/10 20:20:33.01 2SGYvuud.net
投稿前の見直しを怠った言い訳にはならない
素直にごめんなさい言えない奴はいらない

208:Mb
21/10/10 20:27:30.36 ZJbmtnIp.net
>>286
「formura」を変換すると「ふぉrむら」になったりする。
「program」を変換すると、「ぷろgらm」になったりする。
こんな屑な IME に慣らされちゃったら後生が悪かろう。
このあたり、「デジタル庁」がなんとかしてほしいと思うが、
「ディジタル庁」でない時点でけっこう減滅しているし、
「digital」を「ぢぎたl」と変換する Microsoft の
IME が憎い。
「microsoft」は「みcろそふと」だそうだ。
「alfa」は「あlふぁ」で、「beta」は「べた」だという。
デジタル庁は、国家予算を使ってでも、まともな IME を
作ってほしいんだが。

209:デフォルトの名無しさん
21/10/12 03:08:21.74 M/vA1Qoj.net
formula translator の formula は数式って意味じゃなかった?
数式を変換して書きやすい文法になってるからFORTRANという名前になっているのだと。
あとフォーミュラカーは、F1は怪物かもしれないけど、形がレギュレーションで規定されている車ぐらいの意味しかないと思うし、いろいろ勘違いしてない?
formulaの綴りも間違ってるし。
大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。
ローマ字入力と変換に英語入力を期待する方がおかしい。
気になるなら使うものを辞書登録しておけば解決すると思うが。

210:Mb
21/10/12 19:45:42.10 bzFXr+Hm.net
>>209
> 大体、betaはベタと変換してくれなきゃ困るよ。日本語でもよく使うんだから。
それは個人の語彙の範疇との間で勘案すべき問題であって、
「日本人」の範疇で括っちゃうのは乱暴じゃないだろうか。
観賞魚マニアだったら、「beta」だったら「闘魚(ベタ)」と変換して
くれれば有難いけれど、「β」とか「ベタネタ」とかいった用法は、
それぞれのユーザに配慮してほしいと思う。
学習機能で、ようやく使い勝手がよくなってきた辞書が、いきなり
更新されてチャラになったりしたら泣けるだろう?

211:Mb
21/10/12 19:50:16.72 bzFXr+Hm.net
>>209
> 気になるなら使うものを辞書登録しておけば解決すると思うが。
うん。速記タイプとかリアルタイム字幕放送とかについて調べてきてから、
もう一回来てくれ。

212:デフォルトの名無しさん
21/10/13 00:25:29.65 /9Kpmg+V.net
formulaのスペル間違いの言い訳はどうして飛ばしたの?
ちゃんとして?

213:デフォルトの名無しさん
21/10/13 08:51:30.59 NcH4byR7.net
>>211
それらとプログラミング言語になんの関係が?
IMEはキー入力を日本語文字列に変換する写像であって、その写像の優劣は目的によって異なった物差しで測られることになるだろう。
速記タイプとかリアルタイム字幕放送のIMEでプログラミングの話題がしやすいとは思えないけどな。
ちなみに自分は色々兼ね合いとってDvorakJPぐらいに留めてる。漢直を覚えようとしたこともあったが諦めた。
あと、フォーミュラカーの件はスルー?

214:デフォルトの名無しさん
21/10/13 11:07:50.79 R9S1gQQi.net
この板なんか変なのが居付くようになっちゃったな

215:Mb
21/10/13 15:02:25.38 XJgDSy86.net
>>214
お前とかな
ガイジ

216:Mb
21/10/13 15:03:31.94 XJgDSy86.net
>>214
ガイガイガイガイw
あそれwガイwあそれwガイw
ガイガイガイガイwあそれwガイw

217:デフォルトの名無しさん
21/10/13 16:35:54.08 xt9dnz52.net
自分のことを言われたことは分かるんだね

218:Mb
21/10/13 17:26:45.23 mw8RjJuy.net
>>217
お前のことじゃい!
ガイジw

219:デフォルトの名無しさん
21/10/13 20:41:03.46 yVINKNOR.net
仕事辞めてやることなくなった爺が話し相手欲しくて居ついちゃってんだよ。相手しちゃダメ。

220:Mb
21/10/13 21:16:20.27 Y4oDfEf2.net
私も出世したもんだ。ついに騙りが出るとは(笑)。

221:デフォルトの名無しさん
21/10/14 00:11:41.27 KZL2uBrL.net
あ、やっぱ自分のことだって気づいてたんだ
みんなドン引きしてるよ

222:Mb
21/10/14 09:28:31.47 WGI+KeI1.net
初心者向けというのなら、
実行効率はそんなに重視しなくていいし、
メモリサイズも大きくても構わないだろ。
あとは構造化プログラミングに向いた
ステートメントが整備されていて、
そこそこモジュール化にも考えてくれていて、
処理系が普及しているもの …… となると
あんまり思いあたらないなぁ。
高校の数学の先生とかだったら N-BASIC かなんか
使いそうだし、小中学校では(タートル・グラフィクスは
あまり普遍的ではないけど)LOGO になっちゃいそうだ。
文科省あたりが旗振って、教育用言語の規格を作ってくれれば
いいと思うんだが。

223:デフォルトの名無しさん
21/10/14 12:04:53.11 LpLVYXMr.net
こどもの学校配布のiPadにはScratchがはいってる
構造化・イベント駆動プログラミングで現代的だし
Playgroundだから本質的でない問題に悩まされずに済むし
Eテレの番組まであるんだから実質標準じゃないかな

224:Mb
21/10/14 14:42:37.17 WGI+KeI1.net
>>223
「MicroSoft」と聞いただけで怖気(おぞけ)を揮(ふる)うのだが、
正直な話、「ビル・ゲイツは印足して改心したかもしれないが、
マイクロソフトという企業体が、今後何をやらかすか」に
ついての意見は保留しておきたい。

225:Mb
21/10/14 14:55:21.29 WGI+KeI1.net
>>223
由来とかについて調べてみたところ、
Scratchはそれほど悪い言語ではないかもしれない、と
思った。
ちょっと近所の大きい本屋に行って、Scratch の処理系を
インストールしていろいろいじってから、コメントしたいと
思う。

226:デフォルトの名無しさん
21/10/14 17:21:00.93 rfuH32l/.net
マジで変な奴居着いたな
もうコメントしなくていいよ

227:デフォルトの名無しさん
21/10/14 18:47:18.39 QWJeoh/2.net


228:Mb
21/10/14 19:26:50.56 WGI+KeI1.net
正直な話、荒らしが出てくるのはどうでもいいんだが、
頼むから sage 進行をお願いしたい。
連続してプログラム技術板の上位で出てくると、
古参の民に嗤われちゃうんだよ (T_T)。

229:デフォルトの名無しさん
21/10/14 20:44:21.29 9bkyyR4D.net
>>228
お前が荒らしじゃい!

230:デフォルトの名無しさん
21/10/14 21:40:12.30 KZL2uBrL.net


231:デフォルトの名無しさん
21/10/15 01:28:09.50 vumwfiEZ.net
Microsoft を MicroSoft と書くだけで、うまく認識できないというか、インチキくさいというか…

232:デフォルトの名無しさん
21/10/15 01:45:34.33 Q3H9iIco.net
じゃあMinecraftは?

233:デフォルトの名無しさん
21/10/15 01:52:45.18 vumwfiEZ.net
マインクラフト?は初見なので違和感なしでした

234:デフォルトの名無しさん
21/10/15 09:58:59.71 Svg6ZUXs.net
子ども向けならマイクラのコマンドで遊ぶのもいいと思う。んでスクラッチだと思うけどマイクラのワールドにプログラムで動くエージェント召喚して働かせる事もできる。
スクラッチで作ったフローはJavaとPythonで表示されるから、高学年はコード編集して遊んでる。

235:デフォルトの名無しさん
21/10/15 12:09:35.19 W8XYkXKH.net
>>234
なんかMbくさい書き込みだな

236:デフォルトの名無しさん
21/10/15 21:26:36.52 Q3H9iIco.net
スクラッチはJavaじゃなくてJavaScript 製だよ

237:Mb
21/10/16 11:38:31.38 w/Mr+3XW.net
>>231
『プログラミング演習における シンボルの名前付けに対する指導』
URLリンク(gakkai.univcoop.or.jp)
とかを読んでからまた来い。
Java に慣れちゃうと、そうなるんだよ。

238:デフォルトの名無しさん
21/10/16 13:06:53.78 2h5t186/.net
>>237
詭弁に過ぎない
固有名詞の話とは関係ない

239:Mb
21/10/16 14:22:23.31 w/Mr+3XW.net
> 詭弁に過ぎない
とかいって逃げる奴が多いから、短文系の BBS は
「便所の落書き」とか言われちゃうんだよなぁ。
そもそも、「固有名詞」じゃなくて、「命名規則」の
話をしているんだが。
「N0013」とか「X0023_05」とかいった命名規則を
強制されてみると、その苦労は感得できると思うが。

240:デフォルトの名無しさん
21/10/16 14:40:46.73 2h5t186/.net
>>231 は固有名詞の書き方について突っ込んでいるのに
君が >> 237 で勝手に命名規則の話をしているだけだよね

241:Mb
21/10/16 16:10:53.50 w/Mr+3XW.net
話を整理しよう。
>>240
> 固有名詞の話とは関係ない
というのは、何の話をしているんだろう。

242:デフォルトの名無しさん
21/10/16 19:22:51.29 BQTsTYeY.net
>>241
痴呆かこいつ

243:デフォルトの名無しさん
21/10/17 11:18:57.50 vSoaWGvQ.net
なんかのJavaクラスに、マイクロソフト実装で処理をするか自前実装で処理をするか切り替えるメソッドがあったとして、
useMicrosoftImplementation(bool)ではなく、
useMicroSoftImplementation(bool)と命名されてたら、
プログラマーの質を疑っちゃうね。固有名詞もちゃんと書けないのかと。

244:Mb
21/10/21 13:57:14.47 JKBkOCuC.net
「荒らしもスレの賑わい(読み筋は「枯れ木も山の賑わい」)」と
いうネット俚諺もあるのだが(あるのか?)、
スレが停滞すると楽しみがなくなっちゃうので、
ザコネタでもいいから投稿があると活気が出そうに
思う。

245:デフォルトの名無しさん
21/10/21 19:39:05.18 rHBxJh+b.net
スレが停滞しているのはMbさんが住み着いたからだぞ

246:Mb
21/10/21 21:45:11.27 JKBkOCuC.net
>>245
まぁ、落ちなきゃいいじゃん(笑)。
墜ちそうになったら、age てくれるひとがいるかもしれない。
確かに書き散らかしたという点では反省するしかないのだが、
なんかしら「まとめ」的なものを提示しないと卑怯だ、
という話はありそうに思っている。

247:デフォルトの名無しさん
21/10/21 21:56:00.63 rHBxJh+b.net
>>246
たしかに

248:デフォルトの名無しさん
21/10/22 01:03:41.86 bIdSm1HR.net
MbはFORTH使えるの?

249:Mb
21/10/22 15:08:47.44 ti2XTd85.net
>>246
つーか、FORTH の処理系から書いた(笑)。
社会人になってから一年目に NEC に就職したのだが、
そのとき防衛関係の「RMA」っつーのの担当だったので
航空自衛隊の各サイトのアベイラビリティを計算しなきゃ
いけないので、それ用の言語を作っちゃったんだわ。
で、そのコンパイラの中間言語として、
FORTH もどきのシステムを組んだことがある。
だから、ネイティブな FORTH を扱った経験はないんだわ。

250:Mb
21/10/22 15:15:31.10 ti2XTd85.net
あと、「Make 10」っていうパズルがあるじゃん。
「0 を含まない四つの異なった数字で、加減乗除だけで
10 を作れる」っていうやつ。
あれの全数解を求めるのに、「いっぺん逆ポーランド記法に
落として、FORTH みたいな仮想機械の言語で片づける」と
いうのはやったことがある。
IT の電卓も根強いファンがいそうだから、「逆ポーランド記法」と
いうのは、けっこう(日本人限定かもしれないが)人気があるのでは
ないかと思う。

251:デフォルトの名無しさん
21/10/22 21:01:51.95 60fAwA3m.net
>>250
そういうのはprolog向け

252:デフォルトの名無しさん
21/10/22 23:19:41.64 5ielnrPe.net
NECに就職してたんだ
凄いじゃん

253:デフォルトの名無しさん
21/10/23 01:07:12.44 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:デフォルトの名無しさん
21/10/23 01:18:42.34 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:デフォルトの名無しさん
21/10/23 01:46:38.78 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:デフォルトの名無しさん
21/10/23 08:19:36.04 MzNtagq6.net
ぱって作れちゃう人すごいなあ

257:デフォルトの名無しさん
21/10/23 09:56:07.61 HC6G+u/J.net
大好きな町だから離れられない

258:デフォルトの名無しさん
21/10/23 11:30:40.50 JOLV5TGR.net
頭がポリッシュ

259:Mb
21/10/23 14:15:02.75 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
21/10/23 17:37:35.64 sCVE0pd7.net
>>252
いや、ぜんぜんすごくない(笑)。
NEC っていっても、当時は「住友金属のお荷物」みたいな
扱いで、その中でも「日本電気グループ」と
「日本電気ホームエレクトロニクス」という派閥争いがあって、
NEC 本体は「NES」というソフトウェア部隊があったのだが、
通信系グループは自前のソフトウェア部隊がなかったのだよ。
それで、NEC の通信系グループが立ち上げたソフトウェア会社が
あって、いろいろ社名を考えたんだけど、当時の田中社長が
「そんなんじゃ人が集まらない!」というので、
「日本電気航空宇宙システム株式会社」という会社ができたんだ。

261:Mb
21/10/24 13:31:17.67 XB+g3pLb.net
>>259
単純計算で、1 から 9 までの数の順列は
9 × 9 × 9 × 9。いまどきのパソコンでは、
なんてことのない数字だ。
これを 9 × 8 × 7 × 6 に減らしたい欲がでてきたら、
ちょっとプログラマ向きの人だろう。
逆ポーランド記法で考えると「加減乗除」という
四つの演算があり、「四桁」という縛りがあるので、
数が四つで演算子が三つ。計七個のスタックがあればいい。
で、0 と 1 要素は数字で、6要素は演算子、ということが
わかっている。これを(一意に)網羅できるようなプログラムを
書くのには、どんなプログラミング言語が欲しいだろうか?
で、+とか×のような、交換法則が成立する演算子については、
ちゃんと順序づけをしてほしい。さらに、「10になる」という
縛りがあるのだけれど、途中で無限小数になっちゃうとややこしい
ことになってしまう。そうなると、「分数は分数のままに扱える
言語」であってほしい。そうなると、自分のプログラムの中で
作った式を処理系に渡して計算してもらわなくちゃいけないので、
LISP の EVAL 関数のようなものが欲しくなる。
「じゃあ、実際にどうやって実装するか?」まで考えると、
かなり興味深い話だと思う。

262:デフォルトの名無しさん
21/10/24 21:26:11.28 fzWjbDF9.net
↑にProlog向けと書かかれているのはスルー
おっさんのくせに引き出しが少ない

263:デフォルトの名無しさん
21/10/24 21:35:25.40 B/FYyb6u.net
土曜日池袋のジュンク堂行ってきたけどあの規模の書店でもPrologの本なんて1種類しか置いてなかったぞ
しかも質が低い
こんなのどうやって勉強しろってんだ
最初の言語に選ぶなんてとんでもない

264:デフォルトの名無しさん
21/10/24 23:44:50.57 +7vWd4s/.net
>>261
本当にプログラミングできるならばmake 10でいいからコードを出してみてよ
>>262
Prologである必要性はないでしょ
例えばその問題を>>254はJavaScriptで簡単に解いている

265:デフォルトの名無しさん
21/10/25 09:19:14.64 ePvBViKM.net
必要性はないがevalがないと雑多なコードが増えるのは気づけてるのに
組み合わせはいいの?みたいな

266:Mb
21/10/25 14:31:05.06 KAqnC0Vx.net
>>261
> 本当にプログラミングできるならばmake 10でいいからコードを出してみてよ
上げてもいいけど …… 長いよ?
「Java の宿題ここで答えます」スレとかだったらいいんだけど、
これからプログラミングを学ぼうとする人のためのスレである
「【C?】最初の言語に何を選ぶか【Haskell?】」
に、延々とコードを上げるのはどうかなぁ。
まず、「Java の宿題ここで答えます」の昔のスレとかを
見てくれると嬉しく思う。いちおう「Mb」の名前で
出てますから。
> Prologである必要性はないでしょ
竹内さんの「tarai 函数」なんかは、Haskel で書く価値がある。
「入山のアルゴリズム」も、Haskel で実装するなら
必要がなくなるかもしれない。
「必要性」というより、「処理系としてのコンセプトの多様性によって、
『必然性』の話になりつつある」という話じゃないでしょうか。

267:Mb
21/10/30 00:34:09.55 weWqDpIj.net
>>263
> 土曜日池袋のジュンク堂行ってきたけどあの規模の書店でもPrologの本なんて
> 1種類しか置いてなかったぞ
どうせ中島さんか小谷さんの本だろう。
Prolog というコンセプトは、そんなに悪いもんじゃないので、
処理系から作ってみるのが正しいアプローチのように思う。

268:Mb
21/11/02 22:21:30.96 8e4/jqzP.net
よく考えたら初心者に不親切でスマンカッタ m(_ _)m。
共立出版の「bit」に、Prolog の処理系のソースコードが
掲載されていたことがあるのだ。
たしか NEC の PC 8801 シリーズ以来の「N88 BASIC」
のコードだったが、いわゆる「Prolog 処理系の動作を
シミュレートするコード」というのは、LISP を使うと
わりと単純なコードに落ちるのだ。ただ、当時は
LISP にしろ(Apple LISP はあったが)Prolog にしろ、
パーソナルコンピュータ環境では実行が難しかったのだ。
それくらい貧弱な処理系環境だったので、
「カット・オペレータ」云々というのが「いかがなものか」
みたいな話があった。
とはいえ、Prolog の基本構想は悪くないと思うので、
Haskell がスレタイに入っている。
高嶺の花だった。

269:デフォルトの名無しさん
21/11/03 18:44:31.12 aqEfnqTc.net
何言ってんだこのバカ

270:Mb
21/11/06 20:58:33.21 annn/Sq7.net
Java は言語処理系のインタプリタを実装するのには
悪くないので、「無ければ作れ」という視点もある。

271:デフォルトの名無しさん
21/11/07 18:12:40.38 B0bDPYGj.net
何言ってんだこのバカ

272:Mb
21/11/10 14:31:50.13 Wl5lGLAU.net
>>271
> 何言ってんだこのバカ
それは、
「何を仰っているのでしょうか?
貴方は知的障害者ですか?」
と同義だと解釈して宜しいでしょうか?

273:デフォルトの名無しさん
21/11/10 14:56:08.69 m325nVH9.net
バカ、アホの定義が地方やコミュニティで異なるからの確認だとおもうけど
BBSだからこそのレトリックなんよ
聞くのが野暮

274:Mb
21/11/10 15:20:18.02 Wl5lGLAU.net
>>273
つ 松本修『全国アホ・バカ分布考 ― はるかなる言葉の旅路 』(新潮文庫)
関西の一部地方の出身者には、「『アホ』や許せるけど『バカ』は許せない!!」
という人がいらっしゃったりもする。そうすると、「馬鹿馬鹿しい」とか
「バカ穴(ネジを切っていない、ワッシャーとビスで止める、位置決め用の
若干大きめの穴)」とかは、一部の関西地方の文化圏の方々に配慮すると、
「使ってはいけない言葉」だということになりますよね?
じゃあ、「バカ騒ぎ」もいけないんだ。「人を馬鹿にする」も
いけないんだ。「馬鹿貝」もいけないんだ。「あんた馬鹿?」は、
「あなたは智的障礙ではありませんか?」と言わなきゃいけないんだ。
あははー。
そんな粗雑な思考をしている人に、プログラミングを語られたくは
ないなぁ。

275:デフォルトの名無しさん
21/11/10 15:23:33.09 ABhSQgxq.net
『アホ』や許せるけど、ってどういう意味?

276:デフォルトの名無しさん
21/11/11 22:03:24.31 vxCXx/v+.net
何かいつの間にかキモいのが寄生してんのな

277:デフォルトの名無しさん
21/11/12 06:51:45.09 og7IUmfh.net
Mbって人気持ち悪い

278:デフォルトの名無しさん
21/11/12 10:03:15.07 fy+vdfIh.net
レスが冗長で誤字も多いしそもそもつまらん
誰からも相手にされないからネット上で承認欲求満たしたいんだろうな

279:デフォルトの名無しさん
21/11/12 15:50:52.59 Kl1RPx7L.net
自分の知識披露したいだけで
有益な議論をしたいわけではなさそうだしな
コード例とか出せないみたいだし(エアプでコード書けない?)

280:デフォルトの名無しさん
21/11/30 00:24:56.16 g6Kn8mJH.net
Rubyやってる女の子はかわいい

281:デフォルトの名無しさん
21/11/30 14:11:08.77 +4eAilPB.net
戸倉彩

282:デフォルトの名無しさん
21/12/08 02:18:29.28 7SPCPFJp.net
最初にやる言語で速さとか気にする必要ない
そんなことでマウント合戦して、これからプログラミング始める
美少女を迷わすようなことを言わないようにしましょう

283:デフォルトの名無しさん
21/12/08 15:51:09.86 5uCKYHG+.net
全く美少女じゃないけど私もrubyから入ったわ
職場のrubyの本借りれたし先輩に詳しい人いたのが大きい

284:デフォルトの名無しさん
21/12/08 21:04:33.81 pzF9gjPk.net
>>281
橋本環奈に似てるね。

285:デフォルトの名無しさん
22/01/19 20:43:02.39 Qtd/3JbQ.net
引数書くのやブロック書くのに括弧を多用する言語は疲れる

286:デフォルトの名無しさん
22/01/19 20:54:02.18 tV3PBnn6.net
でもカッコがある方が
エディタが助けてくれるからなあ
pythonとかタブの位置を合わせるのが大変

287:デフォルトの名無しさん
22/01/20 18:59:46.11 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:デフォルトの名無しさん
22/01/20 19:00:29.87 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:デフォルトの名無しさん
22/01/20 19:02:16.35 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:デフォルトの名無しさん
22/01/20 19:05:30.69 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:デフォルトの名無しさん
22/01/20 19:13:42.14 Ty/TufmK.net
Prologで書いたら楽そうなところはなかったw

292:デフォルトの名無しさん
22/01/20 19:54:16.86 Ty/TufmK.net
ちなみにeval使わず分数計算自前だよ
Elixirも楽しい!

293:デフォルトの名無しさん
22/02/03 03:27:48.02 5caWIEV6.net
Prologって簡単な深さ優先・探索列挙はともかく動的に細かな探索の制御をしようと思うと途端に面倒になるからな
他の言語で書いた方が小回りきくわ、ってなる
実用上、組み合わせの少ない練習問題的な全解探索にしか使えないゆえん

294:デフォルトの名無しさん
22/02/03 10:21:28.73 lrjvvrdU.net
スッキリ書ける俺々プリプロセッサわんさかありそう

295:デフォルトの名無しさん
22/05/16 08:48:09.42 fgDPgjMn.net
Mbは死んだか


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch