C言語なら俺に聞け 145

■ このスレッドは過去ログ倉庫に格納されています
2018/02/19(月) 22:13:58.98ID:9/te2eSJ0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/04/01(日) 09:59:07.54ID:gIH0xNQX0
ネタにまじれ...
2018/04/01(日) 10:19:28.40ID:vuzriXcqd
>>733
これほんとくそ
せめてFortran のfcheckみたいな実行時診断機能をコンパイラにつければ良いのに
2018/04/01(日) 10:26:27.50ID:lL1ejtJI0
hell fuck no!!
絶対いらん
739デフォルトの名無しさん (エムゾネ FFb3-HAdz)
垢版 |
2018/04/01(日) 10:28:45.90ID:GlQ4MmqmF
>>735
C使うなって話になるわな
740デフォルトの名無しさん
垢版 |
2018/04/01(日) 10:52:33.52
>>737
つ assert
741デフォルトの名無しさん (ワッチョイ 5923-xai/)
垢版 |
2018/04/01(日) 14:22:10.86ID:QnlJ7EAH0
指導者は、ある程度育った選手に対して解決策を提示しない。
選手が自ら考えるように導く。
考える力に重点を置く。
選手が考えた解決策に、(少しでも)可能性がある場合、次のように対応する。

1.状況を整理する

2.挑戦してもらう

指導者の解決策を、押しつける・誘導するのは愚の骨頂。
選手の思考力の成長を阻害する。
言葉の上だけ、コーチング技法を使用する指導者は不要。
意識・無意識にかかわらず、非言語で指導者自身の方向に誘導するようであれば、指導者は迷惑な存在。
選手は指導者の気持ちを敏感に読み取り、指導者の思う解決策に乗っていく。
指導者が無自覚に自分の気持ち・感情を表出しているのであれば、指導者は害毒でしかない。
(但し、指導者としての方向を持っていなければダメ。)
742デフォルトの名無しさん (ワッチョイ 5923-xai/)
垢版 |
2018/04/01(日) 14:30:49.47ID:QnlJ7EAH0
*“オレは知っている。選手は判っていない。”と思い込んでいる。
→「私が中心」(選手は不在)
→選手の変化が見えない。

*“あれもこれも伝えたい”と思っている。
→指導者の自己の存在証明をしたいだけ。
→選手の依存過多を喜んでいる。
→指導者の中身の無さを補償している。
→自分の目標と選手の目標がズレていることに気がつかない。
→成長のゴール設定が不明確。あるいは勝つことだけに目標を設定している。
(勝負までに何をやりきったらよいのか/何を発揮したら勝利か/勝った後どうするか、指導者ならば明確にもっておきたい。)
→優先順序が整理できていない。
→現状の把握すらできなくなっている。

*“言わないと相手のためにならない。”と信じている。
→根本的に選手を信頼していない。
→“指導”という名の自己満足。

*“今、言わないといけない。”という焦り
→指導計画の無さが露呈しただけ。
→日頃の怠慢のツケ。
(直ちに言わないければいけないことはあるが、そう頻発しない。)

*“自分の経験なら、具体的に伝えることができる”という自分の過去へのこだわり
→指導者自身の学習がストップしている。
→偏狭さの表出
→選手より、常に自分が上。
→自分のコピー以外のモデルがない。
→指導者自身の目標が低い。(悪い意味で、すぐに満足する。)
→自分の小ささに築かない哀れさ

解決策を提示する悪癖からの脱却は、選手を信頼することがキー。選手を信頼できるかどうかは、選手の問題ではなく、指導者自身の課題。
743デフォルトの名無しさん (ワッチョイ 5923-xai/)
垢版 |
2018/04/01(日) 14:31:46.69ID:QnlJ7EAH0
選手がある程度育っているにもかかわらず、解決策ばかりを提示してしまうとしたら……

指導者のサービス精神が、少々裏目に出ただけ。
やり方を、知らなかっただけ。
視線が、近い所に留まり過ぎただけ。

選手の考えと主体性に賭ければ良い。
「質問するだけ」「聞くだけ」で十分。他愛ない会話で済むかもしれない。

指導者としてのやり方を、ちょっと広げるだけ。

選手と一緒に成長すればよい。
2018/04/01(日) 15:09:50.39ID:EJgAiXSoa
長い3行で
2018/04/01(日) 20:22:49.32ID:FPe02iov0
c疲れる高級言語が良いよぉ
2018/04/01(日) 22:01:04.55ID:Xs8rW8os0
破門
2018/04/01(日) 22:02:31.16ID:kjSWJmola
C++よりは65536倍マシ
2018/04/02(月) 02:42:44.32ID:335Cb1sP0
C++の方が全然マシ。
C++で要求されるのは記憶力だが、Cはマジで実力が試される。
749デフォルトの名無しさん (アウアウエー Sa23-HAdz)
垢版 |
2018/04/02(月) 04:26:42.33ID:3ewhMOuha
>>747
ほんそれ

>>748
C++はごちゃごちゃしすぎ
Objective-Cの方が良い
2018/04/02(月) 09:23:05.49ID:tz45bHyl0
そんな君達に、C#
751デフォルトの名無しさん (アウアウカー Sadd-rlcN)
垢版 |
2018/04/02(月) 11:32:18.94ID:IY8Jb2oda
C#は何かとっても嫌な予感がするのでパス
2018/04/02(月) 11:37:34.04ID:GUMdRf0S0
組込みならverilog
753デフォルトの名無しさん (ワッチョイ 89a2-HAdz)
垢版 |
2018/04/02(月) 14:47:00.17ID:r6uHUG7/0
C#はないわ
2018/04/02(月) 15:09:03.97ID:+y0jgVYha
C, C# はアリ
C++みたいな汚い言語はナシ
2018/04/02(月) 15:11:32.65ID:hvd81u+Da
Cライクな言語なら何でもこいだわ
(知らないのは新たに勉強せざるを得ないが)

1人で書くのは大抵C++
2018/04/02(月) 16:32:47.98ID:gGbBmtO80
C、C#、Goが好き
2018/04/02(月) 17:06:51.28ID:E1iWIfmB0
C++17かなり良くなってきたね
C++98での苦行が嘘のよう
2018/04/02(月) 17:07:57.92ID:NgLCsptVp
c++はテンプレート辺りから怪しくなって来た。
2018/04/02(月) 17:35:10.19ID:Hj+Kq4pv0
オールアセンブラで組んでた人が楽になるための言語。
2018/04/02(月) 17:46:48.43ID:E1iWIfmB0
STLを初めて見た頃は違和感ありありだったけど
それはテンプレートを使うからでも、見た目が悪いからでもなく、中途半端だったから
C++11から以後、そのへんの補完工事が始まったのがありがたい
2018/04/02(月) 17:52:55.07ID:NgLCsptVp
結局テンプレートって、型をオブジェクト型に統一してしまえばいいだけで、あんまり意味無いよな。
2018/04/02(月) 18:00:26.75ID:E1iWIfmB0
Smalltalk風の継承モデルねえ
正直、俺も昔は盲信したことがあって今は恥じている
テンプレートならコンパイラがやってくれることを
自前でdynamic_castなんかやだよ
nested_exceptionとかは仕方ないけどね
763デフォルトの名無しさん (アウアウカー Sadd-rlcN)
垢版 |
2018/04/02(月) 19:47:22.47ID:yiGPtloFa
>>761
Javaなんかは内部でそうやって実現してるな。
2018/04/02(月) 20:33:40.82ID:EffuLSkeM
よそでやれ
765デフォルトの名無しさん
垢版 |
2018/04/02(月) 22:15:26.67
>>761
そこはVariant型やろ
2018/04/02(月) 22:26:42.69ID:pVqQLih90
printfの出力をマルチスレッドで行うことはできないのでしょうか

素人的には
スレッド1 printf("abcde");
スレッド2 printf("12345");

出力 a1b23c4de5

となることを考えたのですが、WinAPIのCreateThreadやC++のThreadでも、CPU使用率はシングルスレッドのときと変わらず、出力もこのようにはなりませんでした

Windows VS2017
2018/04/02(月) 22:29:05.76ID:APYGmZJZd
>>766
排他制御されていないCRTを探す方が難しい。
768デフォルトの名無しさん (ワッチョイ c161-2OKV)
垢版 |
2018/04/02(月) 23:11:46.09ID:ifLgvYYR0
はじめまして。
大学でプログラミング関係の授業を受けるのですが、それの復習、応用などをrpgツクールmvですることは可能でしょうか?

ちょこっと調べた感じプログラミング要素もあるらしいのですが、c言語はあんまり使わないとかなんとかという記事も見られました。

どうせなら楽しく勉強したいので、ゲームを作りながら学習できないもんですかね...。
2018/04/02(月) 23:22:32.32ID:k8TtPNR/d
>>768
プログラミングを授業で受けるなら、ゲーム制作はツクールMVよりUnityのがいいと思うけど授業内容は進むに連れてむしろツクールMVやUnityのようなのの中身についてになるから復習がてらにはしにくい
モチベ維持にはとても良いと思います
2018/04/02(月) 23:33:36.58ID:pVqQLih90
>>767
ありがとうございます
2018/04/02(月) 23:41:50.21ID:335Cb1sP0
バリアント型は何ビットなん?って話になるのがC++。
2018/04/03(火) 04:15:40.51ID:j/8PevsK0
>>766
目的はどっち??

文字単位で混ぜたい?
高速化したい?
2018/04/03(火) 08:36:15.92ID:cWIVDHVHa
O_DSYNCって使ったことある?
774デフォルトの名無しさん (アウアウカー Sadd-rlcN)
垢版 |
2018/04/03(火) 09:03:18.53ID:Lqpq4yV4a
ない
2018/04/03(火) 17:34:38.59ID:IRh8xu7sd
ないな
2018/04/03(火) 20:54:03.05ID:TORpZXhc0
ないっす
JFS用?
2018/04/04(水) 00:52:55.41ID:Ssb/YhXn0
同期I/Oだそうだ
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/open.2.html
778デフォルトの名無しさん (アウアウエー Sa23-HAdz)
垢版 |
2018/04/04(水) 02:32:43.57ID:h2UR4/YMa
でっていう
2018/04/04(水) 11:23:02.06ID:yTnGZmgQp
同期ってのは、処理が終わるまで帰って来ないって話だ。
下手すっと何秒も帰って来ないから、そこら中が固まる。
2018/04/04(水) 15:35:44.60ID:kI4IT8Vg0
同期というより直列だね
2018/04/04(水) 21:14:25.41ID:rBWooG9b0
動悸I/O
2018/04/04(水) 21:17:17.94ID:iV3ol7kd0
同期/非同期 ブロッキング/ノンブロッキング
783デフォルトの名無しさん
垢版 |
2018/04/04(水) 22:06:43.40
同期の絆
2018/04/04(水) 22:10:42.29ID:tDZB1fULM
貴様と俺とは同期のファイル
2018/04/05(木) 08:17:37.54ID:zuAyx/JN0
数値計算手法の一つである陰解法って陽解法とどう違うんだろう?まったく理解が進まん
陰解法での次ステップの状態を計算するには陽解法と違って次ステップでの値が含まれてる関係で行列の方程式?を解かなければならないらしいけど、その方程式で導く値がどう答えに結びついていくのかがわからない
(最終的にはC言語のプログラムに落とし込みたい。陽解法のプログラムはもう作ってあるんで多少なりとも流用できると楽なんだけどそう簡単にはいかんよね?)
2018/04/05(木) 12:42:25.18ID:O2KVno4c0
平たく言うと
100秒後の状態を得るのに途中の一つずつを100個全部求めなきゃいけないのが陽解法
10秒ごとの計算を10回、でいいのが陰解法

陰解法はかんたんに未来を得られる分、行列計算が面倒になる
787デフォルトの名無しさん (ワッチョイ 6d61-7DGm)
垢版 |
2018/04/05(木) 23:51:02.65ID:Un4TbCjZ0
これなんですけど、printfのとこの"%2c"で、
" %2c"
" %2c "
など空白を入れることで配列が変わってくるのですが、前に空白と後ろに空白のときの規則性がわかりません。教えて欲しいです。

https://i.imgur.com/QI86not.jpg
2018/04/06(金) 00:10:45.42ID:alNyslUNM
もっと具体的に
2018/04/06(金) 05:54:14.00ID:dKA/BnpB0
>>787
質問にある“配列”てのは、画面に出力される結果のことかな?
表示される文字やその順番は同じだけど、文字の間の空白の数が違う、と。

プログラミング界隈では“配列”って言葉は特定の意味を持った専門用語だし、
問題のプログラムはその意味での配列を使ってないから軽く混乱を招くかと。
2018/04/07(土) 07:48:11.30ID:mjL64jtF0
配置とかか?自分の試した結果で理解しろよ
2018/04/07(土) 13:51:14.96ID:Bd1xKzd/0
表示系の2バイト文字の扱い云々な気がする。
2018/04/07(土) 15:06:53.28ID:bMqQKRLP0
>>787
%2c の部分は右詰めで幅2文字の指定になるが c なので常に1文字の指定になり
引数の int 型数値は unsigned char に変換されて出力される。つまり %2c の部分
だけでスペース1文字と引数で与えた1文字が出力される。(もちろん端末によっては
引数の値によって1文字の扱いにならないかも知れないが、その辺は説明が長く
なるので省略)。

後はその前後にスペースを付け加えて出すかだけの問題。そのプログラムには
改行がないので全て繋がって出力される。(1回も改行を出力しないままプログラムが
終わるので実行環境によっては出力の後に続けてシェルのプロンプトが出るかも
知れない)。
793デフォルトの名無しさん (ワッチョイ 2d23-6Vn5)
垢版 |
2018/04/07(土) 15:19:36.81ID:vVe4gpjb0
判りにくい日本語だな
判るものもかえって判らなくなるくらいひどい
2018/04/07(土) 16:08:23.10ID:bMqQKRLP0
じゃあ分かり易く書き換えてくれ。
2018/04/07(土) 19:07:44.77ID:jn0jIz6fd
まず、%2cは必ず「ブランク*」(*は任意の1文字)になる。
その上で整形用のブランクはprintfを分けて、
ブランク以外の文字とかで試してみろ。
2018/04/07(土) 21:25:17.61ID:I35+hkP6a
>>745
アセンブラからきたわいCの楽さに歓喜
797デフォルトの名無しさん
垢版 |
2018/04/07(土) 21:49:40.43
Visual BasicとかPerlとかから入った自分としては、
Cのほうが簡単に書ける場面もあれば
VBSやVBAがいい場面もあればPerlがいい場面もあって
要はどの言語でも楽しく書ければそれでええやん
2018/04/08(日) 06:56:45.64ID:oETTfDn00
ワイはbash + sed + cの三点セットや
2018/04/09(月) 19:49:06.28ID:bmGQy2qQ0
>>787
こんなの試してみたら分かったりしない?(\nは改行)
printf("%c\n",'a');
printf("%1c\n",'a');
printf("%2c\n",'a');
printf("%3c\n",'a');
printf("%4c\n",'a');
printf("%5c\n",'a');
2018/04/09(月) 20:21:36.79ID:qxDYyi6TH
一切出てこない質問者の相手はいらんだろ
801デフォルトの名無しさん (ブーイモ MMe7-64l2)
垢版 |
2018/04/15(日) 15:16:14.29ID:iG9vZW44M
上の写真を見る限りjが増えたタイミングでprintfで改行コード入れてるっぽいけどそれならiのforが終わったタイミングで改行コード入れれば動くんじゃないですか?
なぜiが8までしか回さないのかわからないですが…
802デフォルトの名無しさん (ワッチョイ 93ab-ycE0)
垢版 |
2018/04/15(日) 15:38:09.01ID:MyboI2lC0
しょーもない質問ですいません

vs2017で勉強してるど素人なんですが
コードをミスして修正しようとすると文字が上書きされて
文字を挿入できないん時があるんですが、
なぜでしょうか?
803デフォルトの名無しさん
垢版 |
2018/04/15(日) 15:41:00.10
>>802
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%AD%E3%83%BC
2018/04/15(日) 15:42:04.62ID:CIuag2/D0
>>802
こっちで聞けよ

Visual Studio 2017 Part5
http://mevius.5ch.net/test/read.cgi/tech/1520336504/
2018/04/15(日) 15:50:05.64ID:ASLFteC6a
上書きモードに誤爆したろ
2018/04/15(日) 15:54:21.86ID:0gUBaoqj0
>>801
すまんが、どこに改行コードがあるのか、iが8までとは何の事か、
俺にはさっぱり読み取れねぇ
お前とは見えてる世界が違うようだ
807デフォルトの名無しさん
垢版 |
2018/04/15(日) 16:17:29.71
>>806
この程度読み取れないようじゃエスパーに向いてないよ

> どこに改行コードがあるのか
予想回答「int c=‘ ‘;」って改行コードですよね?
iが増えるたびに改行コードをprintしたいんですよね?

> iが8までとは何の事か
予想回答:すみません、jの間違いです!
2018/04/15(日) 16:20:53.00ID:LLURRdNlM
改行は'¥n'
' 'はスペース
2018/04/15(日) 16:30:24.50ID:bKUHpU4ed
>>806
大丈夫
おれもさっぱりわからん
2018/04/15(日) 19:02:55.57ID:+NxoeMlk0
C言語でのステートマシンの設計や、上手なコーディングについて
体系的に学べるお勧めの書籍やサイト教えて下さい。
2018/04/15(日) 19:08:40.56ID:+NxoeMlk0
連投で申し訳ないけど
この辺の技術ってC++勉強した方が身に付くのかな?
2018/04/15(日) 19:10:47.07ID:7zIgNBcs0
Cはライブラリが貧弱でほとんど自作しないといけない。
C++はその辺多少マシ。Boostとかあるし。
2018/04/15(日) 19:14:55.01ID:7zIgNBcs0
至極の名言教えてやるぜ。受け売りだけどな。
コードを効率的にしたり、最強の最適化だったりするそれが一番効くのは書かないことだ。
書くと何らかの負荷になる、コードもグチャグチャになる。
必要なことだけ書いて後は流れに任せるのが上達の道。
2018/04/15(日) 19:47:03.66ID:aZbHy3F9d
C++って言うほどライブラリ充実してるか?
2018/04/15(日) 19:59:11.25ID:+NxoeMlk0
うーん・・・人によって考え方が違うから正解なんてないし
2chのこのレスだけでは具体的な提示とか難しいよね

本当に必要な処理だけ書いてたら関数長くなって
見通し悪くなったりメンテし辛くなったりしない?
2018/04/15(日) 20:03:21.51ID:IgQGrpHk0
>>810
ない。
>>811
関係ない。

君は本質的な「プログラミングの腕前」を上達させる為に、体系的に学べる物を探しているんだろ?
ならそれは言語には全く関係ないことは分かるだろ。

そして、そんな物は今はない。なぜならプログラミングは今もまだ発展途上だから。
そもそも歴史が浅い。プログラミングには100年ほどの歴史しかないし、
プログラミング作法が学問として成立してからは50年ほどしか経ってない。
だから現在でも試行錯誤中なんだよ。
それは今更C#/C++/Javaがラムダを採用したことからも分かるだろ。
ラムダ自体はLispの昔からあった。
そしてこれらの言語はそれを知っていて不採用としたわけだが、
今更の方向転換=間違いを認めた、ということなんだよ。
まだそれくらいあやふやなものだって事。

勿論各自が「オレオレ流スーパーハッカー道」を上梓することは出来るのだけど、
実際そういう奴はいないようだ。

とはいえ、結果的に全ての言語が似たり寄ったりになってきているから、
これは成熟してきていることを意味する。
となると、今後は体系化されていくだろうし、そういうサイトや本が現れてきてもおかしくない。
今は>>813みたいな、一言集みたいなのしかないね。
https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/
2018/04/15(日) 20:18:14.92ID:CIuag2/D0
>>814
C に比べたら...
って話だろ
2018/04/15(日) 20:22:19.20ID:vjxfJMST0
>>816
C++/C#/Java のラムダ式ってラムダ式じゃないと表現できない「何か」を表現する、というよりは、シンタックスシュガーとしてのラムダ式であることが不満です
2018/04/15(日) 20:26:36.28ID:IgQGrpHk0
>>818
> ラムダ式じゃないと表現できない「何か」
とは何?
俺の理解では、これは存在しない。ラムダ無しでもチューリング完全だったろ。
2018/04/15(日) 20:31:05.37ID:vjxfJMST0
>>819
Y コンビネーターとか、どうですか?
2018/04/15(日) 20:33:38.79ID:8Bp5iafSd
>>818
ラムダ式じゃないと表現できない何かって何さ
定義した所の環境を使った第一級オブジェクトなプロシージャではだめなのか?
2018/04/15(日) 20:35:56.05ID:IgQGrpHk0
>>820
すまんが俺はLisp使いではないから、それについては知らない。
ただ、それが本当に役に立つものなら、C++は数年後に採用するだろうね。
2018/04/15(日) 21:29:24.63ID:7zIgNBcs0
>>815
一応言っておくと関数分割も必要なら必要なこととして処理されるべき。
ちなみに関数分割したほうが限度はあるけどキャッシュに乗って早くなる。
2018/04/15(日) 23:30:02.09ID:sXJBpbWg0
この板でチューリング完全て言葉をみるとは思わなかった
2018/04/15(日) 23:59:29.91ID:L6Qt+I9Ha
だいたい、どう抽象化するのがええのかって話でチューリング完全は関係ないからねえ。
前提としてはそうでないとあかんかも知れんけど。
2018/04/16(月) 00:40:26.76ID:qQ0bjYjD0
抽象化については「オブジェクト指向」で今のところ決着してるだろ。
これを否定する見解や言語は無いと思うが。
2018/04/16(月) 04:32:33.72ID:94linQhp0
コンビネータでも実装するか?
2018/04/16(月) 23:38:04.25ID:qQ0bjYjD0
>>820
>>827
お前ら知ってるのならそのメリットを(出来れば具体的に)書いてみてくれないか?
一応Wiki読んだが、
> 明示的に再帰を書かずに再帰を実現する為に用いる事ができる。
> なお、一般にそういった言語では普通に再帰が使えるので、
> プログラミングにおいてはパズル的なテクニック以上の意味は無い。
> https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
なら、いらねえし、採用されることはないと思うが。
2018/04/17(火) 00:06:31.67ID:gWiyCqxa0
>>828
その wikipedia の解説はちょっと本質からはずれている気がする
「明示的な識別子を含まないで再帰関数が記述できる」くらいか

ラムダ表現を採用している、というのなら不動点コンビネータくらいは記述できないといけないのではないか?
いいかえれば不動点コンビネータを表現できないラムダ表現は「何か大事な部分が欠けている」

ラムダ表現は理論的なモデル(計算可能性を論じるなど)として考案されたもので、実用とか効率とかからは遠く離れている
ラムダ表現を売りにする言語(lisp とか)ならともかく、C#/C++/Java のような実用・効率を求める言語で単に「ラムダ表現ができる」「簡潔だ」くらいの理由で採用されるのは、無目的に言語仕様を拡張しているという理由で個人的には不満

さらにはラムダ表現を老害フィルタがわりに使う者もいたりするが、そういうのには賛同しがたい
2018/04/17(火) 01:21:31.43ID:RhwG6Rqia
javascriptだとアリって気がするよな。
なぜかは知らんが。まあlisp感あるからか。
2018/04/17(火) 08:33:39.92ID:dXM64r3I0
javascriptにはなぜかオブジェクト指向が無いからな
コンビネータはC++には早晩実装されそうな気がする
2018/04/17(火) 09:37:19.33ID:tZLDyJo/0
C++やJavaはクラスベースのオブジェクト指向言語
JavaScriptはプロトタイプベースのオブジェクト指向言語
2018/04/17(火) 23:42:23.84ID:Yk52Q7IR0
>>829
今の仕様で不動点コンビネータが記述できるのかどうかは俺には分からないが、
焦点はその先で、「記述できたら何がうれしいのだ?」なのだと思うよ。
実用言語で重視されるのは当然「実用性」であって、「学術性」ではない。

逆に、実用性皆無なら、当該部分が削除された状態で採用されるべきだ。
例えばC#は意図的にインラインアセンブラを禁止している。
ヘルスバーグのインタビューがググッても出てこないのだが、心は、
「C#のコードならメンテできます」の為の必要知識量を抑えること、だった。
これは長期的に要員確保の難易度を下げ、結果的にメンテ性を上げる。
これも実用言語では重要だよ。
アメリカでPythonを使うのも、Python自体が良い言語だと思っている奴は皆無で、
「Pythonならみんな読めるし書けるから」だからね。
そのコードが10年以上使われることが分かっているのなら、
10年後に要員確保できない可能性がある言語を選択するのは間違いだし。

Cは、(時代的に無理ではあったが)何でもありの状態で、
文法は極めて簡単だが問題は中で何をやっているかで、読んでみなければ分からない。
「Cのコードならメンテできます」とか、簡単に言うのは無理だろ。
C#はイミフなコード構成(大体はCでも警告が出るもの)も禁止されており、
一応、エンジニアが「C#ならメンテできます」と言えることを目指している。
(上手く行っているとは言い難い部分もあるが)
酷い話だが、Javaは10年間全く進歩しないことによってこれを達成してしまっているし。

だから、話を戻すと、
実用言語においては実用性のある機能は取り入れるべきだが、
実用性がない機能は捨てられるべきなんだよ。
(大は小を兼ねる、多めに採用しとけ、ではない。同様に無駄に構文糖が多いのも問題)
今回ラムダが矮小化されて取り込まれているということなら、
取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
勿論今後覆る可能性もあるけどね。
2018/04/17(火) 23:55:44.13ID:zXGef27d0
そういうのは自宅の壁に
2018/04/18(水) 00:05:44.11ID:0XfxQo2f0
>>833
>取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
受動的な態度であればそうなるが、あえて私の感覚を述べるとすれば、

ラムダ式を C++/C#/Java(特にC++)に取り込む価値があったのか?
という点、C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい

シンタックスシュガーを全否定するわけではない
「ラムダ式」という偉大な名前に反して、実際にできることは一般的な「ラムダ式」のカバーする領域よりも狭くなっているのを「不満」と感じているだけなのかもしれない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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