!extend:checked:vvvvv:1000:512
↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
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言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 149
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ af9f-7TBo)
2018/10/28(日) 22:01:44.38ID:D9Gt7gmT0219デフォルトの名無しさん (ササクッテロ Sp47-FLrG)
2018/11/28(水) 23:24:49.65ID:30WXuBf5p >>218
puts は改行するので、文字列の末尾に \n を付けると2回改行することになる
puts は改行するので、文字列の末尾に \n を付けると2回改行することになる
220デフォルトの名無しさん (ワッチョイ 63b3-jnO+)
2018/11/28(水) 23:26:32.45ID:MBR3DrMT0 あっー 指摘ありがと
221デフォルトの名無しさん (アウアウオー Sa92-LBlS)
2018/11/29(木) 02:39:17.93ID:d0mF96D3a >>216
#include <stdio.h>
int main(void){
int i, j, k, n, m;
n = 0;
m = 0;
for (i = 1; i <= 9; i++){
n += 3;
m += 2;
k = n;
printf("%3d", k);
for (j = 1; j <= 9; j++){
k = k + m;
printf(" %3d", k);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
int main(void){
int i, j, k, n, m;
n = 0;
m = 0;
for (i = 1; i <= 9; i++){
n += 3;
m += 2;
k = n;
printf("%3d", k);
for (j = 1; j <= 9; j++){
k = k + m;
printf(" %3d", k);
}
printf("\n");
}
return 0;
}
222デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 04:25:22.53ID:+QhJBOyD0 int main() {
char *ary[] = { "AAAA" , "BBBB" , "CCCC" };
printf("%s\n%s\n%s\n" , ary[0], ary[1], ary[2]);
printf("%x\n%x\n%x\n" , ary[0] , ary[1] , ary[2]);
printf("%x\n%x\n%x\n" , &ary[0] , &ary[1] , &ary[2]);
return 0;
}
実行結果
AAAA
BBBB
CCCC
405064
405069
40506e
61ff24
61ff28
61ff2c
っていうのでよくわからなくなったんですが
0061FF24==00405064で00405064==41414141
なのに、同じary[n]で参照?してるアドレスが違うのは%sが特別だからですか?
それと、AAAA,BBBB,CCCCはどの変数にも格納されていなくて、ただポインタがその文字列たちを指しているっていう理解であってます?
*がよくわからない・・・・・
char *ary[] = { "AAAA" , "BBBB" , "CCCC" };
printf("%s\n%s\n%s\n" , ary[0], ary[1], ary[2]);
printf("%x\n%x\n%x\n" , ary[0] , ary[1] , ary[2]);
printf("%x\n%x\n%x\n" , &ary[0] , &ary[1] , &ary[2]);
return 0;
}
実行結果
AAAA
BBBB
CCCC
405064
405069
40506e
61ff24
61ff28
61ff2c
っていうのでよくわからなくなったんですが
0061FF24==00405064で00405064==41414141
なのに、同じary[n]で参照?してるアドレスが違うのは%sが特別だからですか?
それと、AAAA,BBBB,CCCCはどの変数にも格納されていなくて、ただポインタがその文字列たちを指しているっていう理解であってます?
*がよくわからない・・・・・
223デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 04:37:33.83ID:+QhJBOyD0 ああ直接ポインタを作っててそれで変数がある必要もないのかな?
AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
224デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 05:10:38.21ID:ljP5qN1x0 any[]には各文字列のアドレスが格納される。文字列へのポインターの配列。
%sはポインターが指すアドレスの文字列を、%xはポインターに格納されたアドレスを表示する。
&any[]とすると、ポインターそのもののアドレスを取得して表示する。
61ff24 -> 405064 -> "AAAA"
みたいになってる。
%sはポインターが指すアドレスの文字列を、%xはポインターに格納されたアドレスを表示する。
&any[]とすると、ポインターそのもののアドレスを取得して表示する。
61ff24 -> 405064 -> "AAAA"
みたいになってる。
225デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 05:25:57.02ID:ljP5qN1x0 一つのポインターでオフセットを指定することはできるけど、
"AAAA"はAAAAの4byteではなくて、文字列の終端である0を含めた5byteになる。
char *any = "AAAABBBBCCCC";
こういうイメージで+4や+8でアクセスしようとしたら
%sで表示したとき意図する結果にならないかもしれない。
文字列として扱わなければ問題ないです。
char *any = "AAAA\0BBBB\0CCCC";
こんな書き方もできますが、*を理解したほうがよいと思います。
アドレスやオフセットの概念は理解しているようですので。
"AAAA"はAAAAの4byteではなくて、文字列の終端である0を含めた5byteになる。
char *any = "AAAABBBBCCCC";
こういうイメージで+4や+8でアクセスしようとしたら
%sで表示したとき意図する結果にならないかもしれない。
文字列として扱わなければ問題ないです。
char *any = "AAAA\0BBBB\0CCCC";
こんな書き方もできますが、*を理解したほうがよいと思います。
アドレスやオフセットの概念は理解しているようですので。
226デフォルトの名無しさん (ワッチョイ 2393-abuG)
2018/11/29(木) 07:00:11.93ID:f12HiZt90 >>222 の実行結果を解釈すると...
文字列 "AAAA" "BBBB" "CCCC" の実体は 0x405064 から格納されていて、
16進ダンプだと
0x405064: 41 41 41 41 00 ; {'A', 'A', 'A', 'A', '\0'}
0x405069: 42 42 42 42 00 ; {'B', 'B', 'B', 'B', '\0'}
0x40506e: 43 43 43 43 00 ; {'C', 'C', 'C', 'C', '\0'}
という具合に(アラインメントのためのパディングなしに)詰め込まれている。
行分けせずに
0x405064: 41 41 41 41 00 42 42 42 42 00 43 43 43 43 00
と書けば「詰め込む」のイメージが分かりやすいかも。
charへのポインタの配列 ary[] は 0x61ff24 から配置されていて
番地: 0x61ff24 == &ary[0], 値: 0x00405064 == ary[0] (== "AAAA"の先頭番地)
番地: 0x61ff28 == &ary[1], 値: 0x00405069 == ary[1] (== "BBBB"の先頭番地)
番地: 0x61ff2c == &ary[2], 値: 0x0040506e == ary[2] (== "CCCC"の先頭番地)
これで分からんかな。
ポインタが指す実体(文字列)の番地、その(文字列の)番地が格納された配列の値、
(値としてポインタが格納された)配列要素の番地。
文字列 "AAAA" "BBBB" "CCCC" の実体は 0x405064 から格納されていて、
16進ダンプだと
0x405064: 41 41 41 41 00 ; {'A', 'A', 'A', 'A', '\0'}
0x405069: 42 42 42 42 00 ; {'B', 'B', 'B', 'B', '\0'}
0x40506e: 43 43 43 43 00 ; {'C', 'C', 'C', 'C', '\0'}
という具合に(アラインメントのためのパディングなしに)詰め込まれている。
行分けせずに
0x405064: 41 41 41 41 00 42 42 42 42 00 43 43 43 43 00
と書けば「詰め込む」のイメージが分かりやすいかも。
charへのポインタの配列 ary[] は 0x61ff24 から配置されていて
番地: 0x61ff24 == &ary[0], 値: 0x00405064 == ary[0] (== "AAAA"の先頭番地)
番地: 0x61ff28 == &ary[1], 値: 0x00405069 == ary[1] (== "BBBB"の先頭番地)
番地: 0x61ff2c == &ary[2], 値: 0x0040506e == ary[2] (== "CCCC"の先頭番地)
これで分からんかな。
ポインタが指す実体(文字列)の番地、その(文字列の)番地が格納された配列の値、
(値としてポインタが格納された)配列要素の番地。
227デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 09:05:40.33ID:Msn7clch0 どうでもいいけど略すならaryじゃなくて,arrでは。
228デフォルトの名無しさん (アークセー Sx3b-Gcmv)
2018/11/29(木) 09:24:21.59ID:b4PauqdMx >>227
aryもまれによく見る。
aryもまれによく見る。
229デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 12:11:40.55ID:+QhJBOyD0230デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/11/29(木) 16:00:56.19ID:Pq9K3tWa0 >>216-221
Ruby で作った
NUMBERS = ( 1..5 ).to_a
Count = NUMBERS.length
# 九九の表、Times Table ( Multiplication table ) を作る。
# map は1次元配列を作るので、each_slice で、2次元配列にする
Multiplication_table = NUMBERS.product( NUMBERS ).map { | x, y | x * y }
.each_slice( Count ).to_a
result = [ ]
Multiplication_table.each do | ary | # 1行ずつ処理する
result.push ary.each_cons( 2 ).map { | x, y | x + y } # 隣同士を足す
end
p result
結果
[[3, 5, 7, 9], [6, 10, 14, 18], [9, 15, 21, 27], [12, 20, 28, 36], [15, 25, 35, 45]]
Ruby で作った
NUMBERS = ( 1..5 ).to_a
Count = NUMBERS.length
# 九九の表、Times Table ( Multiplication table ) を作る。
# map は1次元配列を作るので、each_slice で、2次元配列にする
Multiplication_table = NUMBERS.product( NUMBERS ).map { | x, y | x * y }
.each_slice( Count ).to_a
result = [ ]
Multiplication_table.each do | ary | # 1行ずつ処理する
result.push ary.each_cons( 2 ).map { | x, y | x + y } # 隣同士を足す
end
p result
結果
[[3, 5, 7, 9], [6, 10, 14, 18], [9, 15, 21, 27], [12, 20, 28, 36], [15, 25, 35, 45]]
231デフォルトの名無しさん (アメ MMff-egAi)
2018/11/29(木) 16:15:48.88ID:qd4rCcG0M >>230
Rubyすげぇ〜!!!
https://gigazine.net/news/20181116-top-programming-languages-2018/
https://www.softantenna.com/wp/software/the-state-of-the-octoverse-2018/
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
https://findy-code.io/engineer-lab/github-programming-language-ranking
大人気Ruby!
Ruby大人気!!
Rubyすげぇ〜!!!
https://gigazine.net/news/20181116-top-programming-languages-2018/
https://www.softantenna.com/wp/software/the-state-of-the-octoverse-2018/
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
https://findy-code.io/engineer-lab/github-programming-language-ranking
大人気Ruby!
Ruby大人気!!
232デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 16:20:18.55ID:Msn7clch0233デフォルトの名無しさん (ワッチョイ a7c3-o5Pc)
2018/11/29(木) 18:14:40.72ID:ljP5qN1x0 (´-`).oO(aryだったのね……)
234デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 18:49:51.71ID:Msn7clch0 いやarrやろ(しつこい)
235デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/29(木) 19:09:36.82ID:8tueZiBHa array
236デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/11/29(木) 19:12:17.70ID:sIB7nB920 いいやaryもまれによく見る。
俺は省略せずarray派だが。
俺は省略せずarray派だが。
237デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/29(木) 19:19:19.48ID:Msn7clch0 まあarrayくらい省略するなって話よな
creatじゃないんだからw
creatじゃないんだからw
238デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/29(木) 19:46:28.81ID:8tueZiBHa >>236
「まれによく見る」とは?
「まれによく見る」とは?
239デフォルトの名無しさん (ワッチョイ 83b3-YERU)
2018/11/29(木) 19:51:20.93ID:lt3dDpp60 総体としての頻度は稀だが、とある人の書いたソースには悉く ary として書かれており、
その書いた人というスコープ内においては良く見る
その書いた人というスコープ内においては良く見る
240デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/11/29(木) 19:53:37.10ID:sIB7nB920 >>238
weblio辞書より
まれによくある
別表記:稀によくある、稀に良くある
起こり得る事柄を形容して用いられることのある言い回し。
滑稽な表現であるが、あからさまな形容矛盾であり、日本語としては意味をなさない。
「ブロント語」として広まったインターネットスラング。
「まれによくある」の語のニュアンスは、使用者や使用場面によって異なるといえるが、
「頻繁に起こるとも言えるし、めったに起きないとも言える」といった意味合いだったり、「特定の人においてはよくあるが、その他の人には起こらない」といった意味合いだったり、あるいは、いわゆる「あるあるネタ」を指していたりする。
weblio辞書より
まれによくある
別表記:稀によくある、稀に良くある
起こり得る事柄を形容して用いられることのある言い回し。
滑稽な表現であるが、あからさまな形容矛盾であり、日本語としては意味をなさない。
「ブロント語」として広まったインターネットスラング。
「まれによくある」の語のニュアンスは、使用者や使用場面によって異なるといえるが、
「頻繁に起こるとも言えるし、めったに起きないとも言える」といった意味合いだったり、「特定の人においてはよくあるが、その他の人には起こらない」といった意味合いだったり、あるいは、いわゆる「あるあるネタ」を指していたりする。
241デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 20:38:21.77ID:+QhJBOyD0 ちなみに>>222のやつは入門サイトにあったやつを少しいじったやつです
242デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/29(木) 21:38:47.98ID:FncUCYw3a スッキリわかるC言語と苦しんで覚えるC言語
どちらで勉強するか迷ってるんですがどっちがいいと思いますか?
どちらで勉強するか迷ってるんですがどっちがいいと思いますか?
244デフォルトの名無しさん (ワッチョイ baf9-+PYh)
2018/11/29(木) 22:01:35.59ID:kX/wXhND0 >>242
立ち読みして自分にとって説明が理解しやすいと思った方を選んだら?
立ち読みして自分にとって説明が理解しやすいと思った方を選んだら?
245デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 22:30:54.22ID:+QhJBOyD0 苦CのほうはWebにサイトがあるのでそっちを見ては?
246デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/29(木) 22:40:45.52ID:FncUCYw3a まだ新しいスッキリわかるC言語をベースにウェブで分からない時に苦しーも見る方針に決めました
皆さんありがとうございます
皆さんありがとうございます
247デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/11/29(木) 22:48:01.10ID:TPe/tu+/0 >>241
IDEを使ってメモリウインドウから>>226の内容を納得いくまで確認しろ。
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
それを222で君がやっているように見えるが。
書き方が気に入らないのなら、以下でも多分行ける。
for (int i=0;i<3;i++) printf("%s", *(ary+i));
他言語とは文字列の扱いが異なる。Cの方がより原始的で、はっきり言って使いにくい。
他言語:文字は長さ1の文字列
C言語:文字はcharで、文字列はcharの配列
ただ、char周りなんてどうせ大して使わないから飛ばしていい。さらに言うと、
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
なんてのはbotとかでも作るわけでなければ使わない。
printfべた書きで大体事足りる。
IDEを使ってメモリウインドウから>>226の内容を納得いくまで確認しろ。
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。みたいなのってCでできるんですか?
それを222で君がやっているように見えるが。
書き方が気に入らないのなら、以下でも多分行ける。
for (int i=0;i<3;i++) printf("%s", *(ary+i));
他言語とは文字列の扱いが異なる。Cの方がより原始的で、はっきり言って使いにくい。
他言語:文字は長さ1の文字列
C言語:文字はcharで、文字列はcharの配列
ただ、char周りなんてどうせ大して使わないから飛ばしていい。さらに言うと、
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
なんてのはbotとかでも作るわけでなければ使わない。
printfべた書きで大体事足りる。
248デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/29(木) 23:07:20.28ID:+QhJBOyD0 >>247
一応プロセスメモリエディタとか使いながらやってたんですよ、それでも混乱するので聞きました。
多言語はやったことないのでよくわかりませんが、高級言語のよくわからずに使う感じが苦手なので、むしろ原始的なのは好きです。
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
っていうのがbotを作るうえで必要というのは初めて知りましたが、botは作りたいと思ってました。
一応プロセスメモリエディタとか使いながらやってたんですよ、それでも混乱するので聞きました。
多言語はやったことないのでよくわかりませんが、高級言語のよくわからずに使う感じが苦手なので、むしろ原始的なのは好きです。
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
っていうのがbotを作るうえで必要というのは初めて知りましたが、botは作りたいと思ってました。
249デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/11/30(金) 00:06:17.84ID:tn7d6mNM0 >>248
> プロセスメモリエディタ
なんじゃそりゃ?と思ってみてみたが、どっちかというとハッキングツールだな。
マジな話、IDE使え。個人開発レベルの糞ツールとは次元が違うから。
俺はVSがいいと思うが。
言い忘れてたが当然return文にブレークポイントを当てて止めて見るんだよ。
というか他に何言語やってるんだ?
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
これは全くの初心者の発想ではないはず。
明らかに他言語ではこう書ける、これをCでやりたい、というように読めるが。
> っていうのがbotを作るうえで必要というのは初めて知りましたが
というか、文字列を配列に持って切換ながら使う=それらの文字列は同列に扱うべき、
という使い方をすることがほぼ無いんだよ。他の言語でも、アプリでも。
大体文字列なんてリテラルでその場で使って終わり、が殆どだ。
それ以前に、charを主として使うアプリ(bot含む)をCでやろうというのも間違いだが。
char出力は結局UIであって、どうせI/Oで引っかかるから、Cの優位性(速度)が生かせない。
そして原始的な分、生産性自体は悪いから、そのデメリットだけ受けてしまう。
AIbotとかで演算部分に相当速度が必要でない限り、スクリプト言語で作った方がいいと思うぞ。
この意味で、Cでの文字出力はほぼログ生成でしかなく、
だからこそ貧弱なライブラリでも間に合ってる訳だが。
> 高級言語のよくわからずに使う感じが苦手
いやこれは違う。
「余計なことを考えなくて済む」という意味で後発言語はよく出来てるんだよ。
まあこれはじきに分かるだろうさ。
> プロセスメモリエディタ
なんじゃそりゃ?と思ってみてみたが、どっちかというとハッキングツールだな。
マジな話、IDE使え。個人開発レベルの糞ツールとは次元が違うから。
俺はVSがいいと思うが。
言い忘れてたが当然return文にブレークポイントを当てて止めて見るんだよ。
というか他に何言語やってるんだ?
> AAAA,BBBB,CCCCを普通に配列で作って、それを1つのポインタでオフセットを指定して選ぶ。
これは全くの初心者の発想ではないはず。
明らかに他言語ではこう書ける、これをCでやりたい、というように読めるが。
> っていうのがbotを作るうえで必要というのは初めて知りましたが
というか、文字列を配列に持って切換ながら使う=それらの文字列は同列に扱うべき、
という使い方をすることがほぼ無いんだよ。他の言語でも、アプリでも。
大体文字列なんてリテラルでその場で使って終わり、が殆どだ。
それ以前に、charを主として使うアプリ(bot含む)をCでやろうというのも間違いだが。
char出力は結局UIであって、どうせI/Oで引っかかるから、Cの優位性(速度)が生かせない。
そして原始的な分、生産性自体は悪いから、そのデメリットだけ受けてしまう。
AIbotとかで演算部分に相当速度が必要でない限り、スクリプト言語で作った方がいいと思うぞ。
この意味で、Cでの文字出力はほぼログ生成でしかなく、
だからこそ貧弱なライブラリでも間に合ってる訳だが。
> 高級言語のよくわからずに使う感じが苦手
いやこれは違う。
「余計なことを考えなくて済む」という意味で後発言語はよく出来てるんだよ。
まあこれはじきに分かるだろうさ。
250デフォルトの名無しさん (ワッチョイ 6a80-6Zjp)
2018/11/30(金) 01:05:40.46ID:qUT8id4/0 void君は相変わらずだな
251デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/11/30(金) 01:14:13.61ID:dHzryZqK0 プログラミングというより解析系に興味があっていろいろ調べてただけです。
Cのこともプログラミングのこともまだ全然わからないです
Cのこともプログラミングのこともまだ全然わからないです
252デフォルトの名無しさん (ワッチョイ db64-VZvV)
2018/11/30(金) 01:40:17.87ID:ZZJKHSVT0 puts()関数とかの「s」ってストリングのsなんだね。
今までずっとputの三単現だと思ってたわw
今までずっとputの三単現だと思ってたわw
253デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/11/30(金) 08:28:07.36ID:VjmtC3o00 >>242-246
スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
単純な言語の文法書ではない
前半はフレームワークを使う人の立場で、後半はフレームワークを作る人の立場での解説。
だから初心者は、後半を読まなくてもよい
苦しんでC は、手順書。
14歳以下とか、中学生に教えるたぐいの本。手順を教えるだけ。
たいていのAndroid アプリの本と同じ
なぜ、こういうデザインパターンをするのかとか、概念の説明などはない。
漏れは、2時間で読める。
理解して考える要素がないから、ライトノベルと同じ
スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
単純な言語の文法書ではない
前半はフレームワークを使う人の立場で、後半はフレームワークを作る人の立場での解説。
だから初心者は、後半を読まなくてもよい
苦しんでC は、手順書。
14歳以下とか、中学生に教えるたぐいの本。手順を教えるだけ。
たいていのAndroid アプリの本と同じ
なぜ、こういうデザインパターンをするのかとか、概念の説明などはない。
漏れは、2時間で読める。
理解して考える要素がないから、ライトノベルと同じ
254デフォルトの名無しさん (ワッチョイ ff7b-egAi)
2018/11/30(金) 08:32:59.05ID:xQIq6Uyn0 理解して考える脳の無いRuby厨であった
255253 (ワッチョイ 4e80-gjgg)
2018/11/30(金) 08:36:47.97ID:VjmtC3o00 例えば、WEB+DB 106号の「実践 Android/iOS アプリ設計」を読んでみ
DI, MVVM, Flux とか、なぜこういうデザインパターンを使うのか、
自分で理解して考えないといけないから、こういう概念の話は難しい
デザインパターンを参考にして、Ruby などでいじくり回すのが、最も身につく。
ポインターのバグ取りに、時間を取られないし
DI, MVVM, Flux とか、なぜこういうデザインパターンを使うのか、
自分で理解して考えないといけないから、こういう概念の話は難しい
デザインパターンを参考にして、Ruby などでいじくり回すのが、最も身につく。
ポインターのバグ取りに、時間を取られないし
256デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/11/30(金) 09:22:30.92ID:KWzr3gbka DIって外部の設定を使いましょうって話なんですか?
257デフォルトの名無しさん (アウアウウー Sa47-gzl5)
2018/11/30(金) 09:39:20.17ID:vcs52++Va >>253
スッキリわかるC言語はパズドラ作りながらC言語が学べるみたいです
スッキリわかるC言語はパズドラ作りながらC言語が学べるみたいです
258253 (ワッチョイ 4e80-gjgg)
2018/11/30(金) 10:35:00.21ID:VjmtC3o00 DI は、C++ の、p-impl パターン。
外部から、後に作られる、依存性を注入する
class A { new B(引数); }
class A { b = 構築メソッド }
上のように、クラスA 内で、直接B を作らず、
構築メソッドで、Bインスタンスを作る
例えば、クラスBの引数の変更が、クラスAに及ばないように、疎結合にしている。
クラスA・Bの作者が、同一でない場合に、効果が大きい
間接的に、Duck Typing, Interface を使う事で、インターフェース・構築メソッドが固定されるが、
同じ構築メソッドを使うことで、似たようなクラスを扱いやすい
外部から、後に作られる、依存性を注入する
class A { new B(引数); }
class A { b = 構築メソッド }
上のように、クラスA 内で、直接B を作らず、
構築メソッドで、Bインスタンスを作る
例えば、クラスBの引数の変更が、クラスAに及ばないように、疎結合にしている。
クラスA・Bの作者が、同一でない場合に、効果が大きい
間接的に、Duck Typing, Interface を使う事で、インターフェース・構築メソッドが固定されるが、
同じ構築メソッドを使うことで、似たようなクラスを扱いやすい
259デフォルトの名無しさん (ワッチョイ a79f-C0zt)
2018/11/30(金) 14:03:17.31ID:wR5wJL4H0 苦Cから入ったけどつまずいて1年くらい何も触らなかったおもひで
260デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 16:07:52.38ID:cYaYTjx50 何もわからんうちからえり好みしないでK&R
これですんなり入れることが適性試験
これですんなり入れることが適性試験
261デフォルトの名無しさん (JP 0H63-X2R9)
2018/11/30(金) 17:16:53.52ID:fQi4U1HQH ループとか条件分岐とか関数とかは別言語で十分習得したという前提でならそれでよい。
262デフォルトの名無しさん (ワッチョイ a79f-C0zt)
2018/11/30(金) 17:20:44.30ID:wR5wJL4H0 アセンブラの入門かじった程度でもイメージはつかめるしCで躓くことはかなり減ると思う
263デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 18:19:25.99ID:cYaYTjx50 俺はサブルーチンが関数な言語を1つも知らずにK&Rで憶えた
強いて言うならBASICのUSR関数くらいか
強いて言うならBASICのUSR関数くらいか
264デフォルトの名無しさん (アウアウウー Sa47-2q9Y)
2018/11/30(金) 18:33:32.23ID:vx8Iixcxa BASICの全てグローバル変数だとか行番号に苦しんでいた時に徐々にMS-DOSでCが使える状態になってきて、PC-98でMS-DOSが使えるようになり、TurboCとかも出て俺は救われた。
しかしその後UNIX関係の仕事になったのでCができて当たり前の環境になってしまった。
しかしその後UNIX関係の仕事になったのでCができて当たり前の環境になってしまった。
265デフォルトの名無しさん (ワッチョイ 0e30-C0zt)
2018/11/30(金) 19:07:15.02ID:m3TSK4YL0 大学でunixでCをやるようになってvim系の操作が気持ち悪かったからノリで大学を辞めた
人生で最悪の選択をしてしまった
人生で最悪の選択をしてしまった
266デフォルトの名無しさん (バットンキン MM77-Gcmv)
2018/11/30(金) 19:17:21.91ID:9hh85ykUM >>263
BASICならGOSUBだろ。
BASICならGOSUBだろ。
267デフォルトの名無しさん (ワッチョイ 0ed6-C0zt)
2018/11/30(金) 21:49:44.97ID:cYaYTjx50 >>266
GOSUBが、どのように関数なんだ?
GOSUBが、どのように関数なんだ?
268デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/11/30(金) 22:03:56.69ID:5CDqtXe60 関数と言えるのは、DEF FN かな?
>>253
>スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
私が知りたいのはスッキリC++(そんなものが存在するのですか?限りなく胡散臭いですね)の話です
>スッキリJava は、250ページにも及ぶ、猿向けにオブジェクト指向を解説した、伝説の書。
私が知りたいのはスッキリC++(そんなものが存在するのですか?限りなく胡散臭いですね)の話です
271デフォルトの名無しさん (ワッチョイ b3af-C0zt)
2018/11/30(金) 23:34:56.47ID:PIchVJHi0 #define C Java
273デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/01(土) 07:43:03.30ID:7EJdQB2R0 PC6001でBASICを覚えてPLAY,SOUNDで音楽作ってたな
PSGの音を聞くだけで懐かしい気分になる
そしてMSXでMSX-Cを覚えた
cursesがあったからローグもどきのゲーム作って遊んでたよ
PSGの音を聞くだけで懐かしい気分になる
そしてMSXでMSX-Cを覚えた
cursesがあったからローグもどきのゲーム作って遊んでたよ
274デフォルトの名無しさん (ワッチョイ 1761-o5Pc)
2018/12/01(土) 07:47:36.67ID:+NY+xI8A0 サブルーチンって用語はもう消えた?
275デフォルトの名無しさん (ワッチョイ 9ab3-TLTW)
2018/12/01(土) 09:16:07.78ID:4Hoi4/y50 C言語以降関数と手続きを区別しない言語が増えたこととOOPでは一部がメソッドと呼ばれるようになったので使用頻度は下がったな
なくなってはいないけど
なくなってはいないけど
276デフォルトの名無しさん (ワッチョイ 2393-abuG)
2018/12/01(土) 09:27:06.02ID:TOuK5lWF0 関数と手続きを総称して、「メインルーチン」に対して「サブルーチン」って
言い方なら今でも使うんじゃないかな。
プログラミング教育の初期の段階での説明。
BASICでの「サブルーチン」は言語仕様での用語だっけ?
言い方なら今でも使うんじゃないかな。
プログラミング教育の初期の段階での説明。
BASICでの「サブルーチン」は言語仕様での用語だっけ?
277デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 09:27:25.60ID:piawvWud0 サブルーチンと関数って違うのか(無知)
>>276
GOSUB 命令がありました
GOSUB 命令がありました
279デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/01(土) 10:14:48.66ID:/TQ/ikyba ラベルはなかったね
280デフォルトの名無しさん (ワッチョイ b78a-+5zm)
2018/12/01(土) 10:27:11.17ID:tI2T+oTI0281デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 16:05:57.68ID:piawvWud0282デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/01(土) 16:11:09.57ID:oMoZEV7I0 アセンブラだと値返していようがいまいがサブルーチンっていうよね
今曖昧だってことは元々曖昧だったのかな
今曖昧だってことは元々曖昧だったのかな
283デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/01(土) 16:42:04.42ID:mW7z3f7A0 もともとは呼び出しがステートメントであって返値というものが存在しないサブルーチンと、
値を返して式の一部となる関数という区別だね。
式+;が文になるという単純化を行ったCではその区別もなくなってそれが主流になった。
副作用のないものが関数、ありえるのがサブルーチン、と定義を変えて復活はあるかも。
値を返して式の一部となる関数という区別だね。
式+;が文になるという単純化を行ったCではその区別もなくなってそれが主流になった。
副作用のないものが関数、ありえるのがサブルーチン、と定義を変えて復活はあるかも。
284デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/01(土) 16:58:01.89ID:6zv/O1Bm0 void以外は関数って事だな
285デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv)
2018/12/01(土) 17:11:46.73ID:FtOkB0gI0 言語(VBとか)によっては明確な違いがあったりするけど、概念的にはサブルーチン⊃関数というイメージあるわ。
286デフォルトの名無しさん (ササクッテロレ Sp3b-4pMt)
2018/12/01(土) 18:36:37.73ID:qSa8BGaMp 副作用のある手続きをほんとは関数とは呼ばないのだろうけど
Cではそんなことに頓着せず全て関数に単純化したからね
ただ本来サブルーチンとはメインルーチンと対立する文脈で語られていたものかと
これは単なる呼び出し関係だけでなく、古い言語では変数のスコープなども異なる
Cではこれも単純化してしまった
main は単にスタートアップルーチンから最初に呼び出されるという以外は
特別なスコープを持つわけでもなく、他の関数と何ら違いがない
他の関数から main を呼ぶことも、普通やらないだけで問題なく可能だ
Cでサブルーチンという名前がしっくりこないのはこの辺が理由でもあるかと
Cではそんなことに頓着せず全て関数に単純化したからね
ただ本来サブルーチンとはメインルーチンと対立する文脈で語られていたものかと
これは単なる呼び出し関係だけでなく、古い言語では変数のスコープなども異なる
Cではこれも単純化してしまった
main は単にスタートアップルーチンから最初に呼び出されるという以外は
特別なスコープを持つわけでもなく、他の関数と何ら違いがない
他の関数から main を呼ぶことも、普通やらないだけで問題なく可能だ
Cでサブルーチンという名前がしっくりこないのはこの辺が理由でもあるかと
287デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/01(土) 19:00:11.99ID:mW7z3f7A0 ああ、関数と対比されるのはサブルーチンじゃなくて正しくはプロシージャ(手続き)だね。
288デフォルトの名無しさん (ササクッテロレ Sp3b-4pMt)
2018/12/01(土) 19:53:46.70ID:qSa8BGaMp >>287
そうだけと、その辺の用語も統一されてるとは言い難いところがあるよ
AdaなどのPascal系の言語ではprocedureとfunctionという区別があるよね
まぁ値を返すかどうかという違いでしかないわけだけど
VBではPascalのprocedureに相当するのはSubであって、SubとFunctionをまとめた
上位概念としてプロシージャと言うからね
そうだけと、その辺の用語も統一されてるとは言い難いところがあるよ
AdaなどのPascal系の言語ではprocedureとfunctionという区別があるよね
まぁ値を返すかどうかという違いでしかないわけだけど
VBではPascalのprocedureに相当するのはSubであって、SubとFunctionをまとめた
上位概念としてプロシージャと言うからね
289デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 21:37:27.03ID:piawvWud0 mainが特別扱いされてると言えばOSが受け取れる返り値は0--255なのにint型を指定するってところとかかな。
290デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/01(土) 22:24:12.87ID:3EVAE8120 Perl ではサブルーチンは sub で始まる。これはCの関数のようにも使える。
291デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/01(土) 22:38:01.02ID:VxENaYkZ0 >>286
> 副作用のある手続きをほんとは関数とは呼ばないのだろうけど
> Cではそんなことに頓着せず全て関数に単純化したからね
逆だぞ。関数型が馬鹿やったから「副作用」なんて言葉が必要になったのであって。
元々Cの関数は副作用がない。これは単純に、Cの場合は引数で渡すしかないからだ。
(当たり前だがグローバルは使わないとする)
だからC全盛の時代には「副作用」なんて言っている奴すら居なかった。
関数型の連中が副作用(キリッとか気にする必要がでてきたのは、クロージャを濫用したからだ。
単純に言えば、関数に対しての値の渡し方は、
・引数
・グローバル
・this(OOPの)(=インスタンス内グローバル)
・クロージャ(=レキシカルスコープの場合は階層内グローバル)
とあって、クロージャは使い方を間違えば結合を強めてしまうんだよ。
(thisの場合は最初からクラス界面で切る《=public/privateを意識して設計する》
からそこまで酷くはならない)
Cはそれがないから、便利に書けない反面、無駄に結合するって事もない。
(少なくとも、結合していることは明示的に見える)
伊達に50年近く現役な訳でもないのさ。現役で居続けられた理由がある。
>>288
AdaとかPascalとか、最早死んで誰も使わないし使う価値もない言語を持ち出しても、
何の意味も無いと思うぜ。
それらが死んだのは、それなりの理由があるんだよ。
> 副作用のある手続きをほんとは関数とは呼ばないのだろうけど
> Cではそんなことに頓着せず全て関数に単純化したからね
逆だぞ。関数型が馬鹿やったから「副作用」なんて言葉が必要になったのであって。
元々Cの関数は副作用がない。これは単純に、Cの場合は引数で渡すしかないからだ。
(当たり前だがグローバルは使わないとする)
だからC全盛の時代には「副作用」なんて言っている奴すら居なかった。
関数型の連中が副作用(キリッとか気にする必要がでてきたのは、クロージャを濫用したからだ。
単純に言えば、関数に対しての値の渡し方は、
・引数
・グローバル
・this(OOPの)(=インスタンス内グローバル)
・クロージャ(=レキシカルスコープの場合は階層内グローバル)
とあって、クロージャは使い方を間違えば結合を強めてしまうんだよ。
(thisの場合は最初からクラス界面で切る《=public/privateを意識して設計する》
からそこまで酷くはならない)
Cはそれがないから、便利に書けない反面、無駄に結合するって事もない。
(少なくとも、結合していることは明示的に見える)
伊達に50年近く現役な訳でもないのさ。現役で居続けられた理由がある。
>>288
AdaとかPascalとか、最早死んで誰も使わないし使う価値もない言語を持ち出しても、
何の意味も無いと思うぜ。
それらが死んだのは、それなりの理由があるんだよ。
292デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/01(土) 22:43:10.84ID:6zv/O1Bm0 >>291
ねえねえ、Fortranは?
ねえねえ、Fortranは?
293デフォルトの名無しさん (アメ MMff-egAi)
2018/12/01(土) 22:58:40.52ID:fkjVwInMM なんだCの関数には副作用なかったのか。これで安心してprintfできる
294デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/01(土) 23:00:40.61ID:piawvWud0 Cに副作用の概念はないって……それは流石に嘘でしょう。
箇所は失念してしまったがK&Rにも関数を指して「文字列を出力したりする場合もあるので純粋な関数とは呼べない」
みたいな記述あるくらいだし。
箇所は失念してしまったがK&Rにも関数を指して「文字列を出力したりする場合もあるので純粋な関数とは呼べない」
みたいな記述あるくらいだし。
295デフォルトの名無しさん (ブーイモ MMff-6Zjp)
2018/12/01(土) 23:07:56.71ID:8rj5PksfM void君は今日も平常運転
296デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/01(土) 23:11:44.86ID:VxENaYkZ0297デフォルトの名無しさん (アウアウウー Sa47-7zod)
2018/12/01(土) 23:56:03.97ID:C49O7CpGa 引数voidって初めて見たぞ
298デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/02(日) 00:31:53.73ID:jISJOvCb0 void君人気っすね。羨し…くはないなw
299デフォルトの名無しさん (ワッチョイ 4e81-C0zt)
2018/12/02(日) 00:39:59.56ID:qwr+Mk5T0 秋田
300デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 00:45:19.85ID:Bx+z5yQP0301デフォルトの名無しさん (ワッチョイ ff05-ZETi)
2018/12/02(日) 00:53:05.03ID:+Qh0SqlG0 よく分からん捨て台詞だな
302デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/02(日) 00:55:37.62ID:twRH93OM0 https://ja.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E4%B8%96%E4%BB%A3#%E5%AE%9A%E7%BE%A9%E3%83%BB%E7%AF%84%E5%9B%B2
ゆとり世代については明確な定義、範囲はなく諸説ある。
小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
ゆとり世代については明確な定義、範囲はなく諸説ある。
小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
1966年度生まれ以降。
303デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:01:50.46ID:Bx+z5yQP0304デフォルトの名無しさん (ワッチョイ 9a2b-lzSb)
2018/12/02(日) 01:23:06.59ID:26H0WWJ10 >>291
まず、副作用という言葉は C が生まれる前から使われていたし意識されていたことですよ
Lisp をやってれば分かることだけど
C 全盛時にCプログラマが副作用という言葉を使わなかったのは当然でしょうね
C は副作用そのものであるノイマンアーキテクチャを素直に表現できる言語と
目されていたわけで (i++ とか)、それこそ最初はグローバル変数も使いまくりだったのでは
また、引数で文字列を渡すにもポインタを使わざるを得ないので、それが破壊されることを
防ぐ手立てがなかった (今でもないか)
引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
C 界隈で副作用うんぬんが取り沙汰されるようになったのは const 引数の導入や、
グローバル変数の弊害が意識されるようになって、むしろ民度が上がってきたと見るべきかと
あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
あの文法は Ada そのものなんだけど
まず、副作用という言葉は C が生まれる前から使われていたし意識されていたことですよ
Lisp をやってれば分かることだけど
C 全盛時にCプログラマが副作用という言葉を使わなかったのは当然でしょうね
C は副作用そのものであるノイマンアーキテクチャを素直に表現できる言語と
目されていたわけで (i++ とか)、それこそ最初はグローバル変数も使いまくりだったのでは
また、引数で文字列を渡すにもポインタを使わざるを得ないので、それが破壊されることを
防ぐ手立てがなかった (今でもないか)
引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
C 界隈で副作用うんぬんが取り沙汰されるようになったのは const 引数の導入や、
グローバル変数の弊害が意識されるようになって、むしろ民度が上がってきたと見るべきかと
あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
あの文法は Ada そのものなんだけど
>>302
1966以前と1966以後では教育内容で変化があったのですか?数学に関する限り一時期は線形代数も微積分もやる、という過剰な状況だったと思っています
1966以前と1966以後では教育内容で変化があったのですか?数学に関する限り一時期は線形代数も微積分もやる、という過剰な状況だったと思っています
306デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
2018/12/02(日) 01:41:19.09ID:1UGGVPSQ0307デフォルトの名無しさん (ワッチョイ a7c3-lF2n)
2018/12/02(日) 01:45:35.26ID:1UGGVPSQ0 >>305
そうですよね。いま働いている日本人のほとんどはゆとり教育です。
ただ昔は教科書に載っているだけでまともに教えていないと思います。
学年トップレベルだったという年配の多くが義務教育の範囲さえ、完全に忘れているか、知らなかったりします。
そうですよね。いま働いている日本人のほとんどはゆとり教育です。
ただ昔は教科書に載っているだけでまともに教えていないと思います。
学年トップレベルだったという年配の多くが義務教育の範囲さえ、完全に忘れているか、知らなかったりします。
308デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:46:50.51ID:Bx+z5yQP0 >>304
> 引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
> 任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
それは「副作用」ではなく「バグ」と言うんだよJava以外では。
その他諸々色々勘違いするのは自由だが、
さすがにそれだと話が通じなさすぎて煙たがられてるだろ。
> あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
> あの文法は Ada そのものなんだけど
無いね。
ただ、Oracleがそうなら、Ada文法がまだ生き続けていることにはなる。この点は訂正しよう。
とはいえ、それが「参考にする意味があるか」とは別だよ。
本当に意味がある物は、「オブジェクト指向」や「クロージャ」のように、
ほぼ全ての言語でサポートされる事になる。
現状、procedure/function/Subを区別してない言語がメジャーで、
区別した言語(Ada/Pascal/VB)はことごとくマイナーだし、
最近のクロージャのようにC#/C++/Java等のメジャー言語が
相次いで方針を変更してサポートした、ということもない。
それは不要だった、ということで結論は出てる。
それを反例と持ち出してきても意味がないだろ。
> 引数経由でなくても、ポインタが使えるということは、そこに任意のアドレスを設定でき、
> 任意の場所に書き込めるということなので、C の関数で副作用を防ぐ手立てはないわけですよ
それは「副作用」ではなく「バグ」と言うんだよJava以外では。
その他諸々色々勘違いするのは自由だが、
さすがにそれだと話が通じなさすぎて煙たがられてるだろ。
> あと、Oracle のストアドプロシジャ PL/SQL をやったことはないですか
> あの文法は Ada そのものなんだけど
無いね。
ただ、Oracleがそうなら、Ada文法がまだ生き続けていることにはなる。この点は訂正しよう。
とはいえ、それが「参考にする意味があるか」とは別だよ。
本当に意味がある物は、「オブジェクト指向」や「クロージャ」のように、
ほぼ全ての言語でサポートされる事になる。
現状、procedure/function/Subを区別してない言語がメジャーで、
区別した言語(Ada/Pascal/VB)はことごとくマイナーだし、
最近のクロージャのようにC#/C++/Java等のメジャー言語が
相次いで方針を変更してサポートした、ということもない。
それは不要だった、ということで結論は出てる。
それを反例と持ち出してきても意味がないだろ。
309デフォルトの名無しさん (ワッチョイ bebe-lzSb)
2018/12/02(日) 01:48:13.42ID:jISJOvCb0 老害がブチ切れてて草
変ったのは世の中じゃなくてお前の脳味噌やぞ老いぼれ
変ったのは世の中じゃなくてお前の脳味噌やぞ老いぼれ
310デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:50:31.40ID:Bx+z5yQP0311デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 01:55:27.80ID:Bx+z5yQP0312デフォルトの名無しさん (ワッチョイ 769f-C0zt)
2018/12/02(日) 02:36:57.19ID:twRH93OM0 自分がゆとりであることに気付かずにだからゆとりはと言い出すやつばかり。
それが今の時代。
それが今の時代。
313デフォルトの名無しさん (ワッチョイ e3f2-r3MB)
2018/12/02(日) 07:38:01.21ID:3j0ioh6B0 >(当たり前だがグローバルは使わないとする)
副作用について議論するうえでこんな変な条件付ける人はいない。
あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
副作用について議論するうえでこんな変な条件付ける人はいない。
あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
314デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 10:14:19.71ID:Bx+z5yQP0 >>313
> こんな変な条件付ける人はいない
君がグローバルを普段から濫用している人だとは理解した。
> あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
勿論。
というか、まともに議論する気があるのなら、明確に条件を確定させなければならない。
何も言わないのなら、C言語での『標準的な』コーディングを各自が想定することになる。
君が普段からグローバルを濫用しているのは理解したが、それは俺の『標準』ではないし、
君みたいな馬鹿が出てきて無駄に議論が空回りするのが嫌だから、俺は明示的にそれを除外した。
そしてこの条件付けは『標準的』であり、問題ないと俺は考えている。
君がグローバルを含めて副作用を議論したいのならそうすればいい。
俺はその議論には意味が無いと思うから参加はしない。
君の言うように、俺は「参照透過」は以下の2種類に分けて考えるべきだと思っている。
・狭義の参照透過…sin()等
・広義の参照透過…qsort()等やthis
・参照透過でない…その他全部、つまりクロージャやbindやグローバルを用いるもの
通常の文脈で言われる『副作用』はおそらく関数型()言語から来ている。
それは上記「参照透過でない」物を濫用した結果だ。
Cの場合は最初からそれが出来ないから、その議論が発生することはなかっただけ。
それとは別に、意識高い系関数型()の「『狭義の参照透過』だけでプログラミングすべき」、
というのは当たってはいるが、実際の所それは多値を返せないと厳しい。
そして多値返しよりも参照を返してそこからアクセスしろ、というのがメインストリームの言語だろ。
それの方が楽だから。
> こんな変な条件付ける人はいない
君がグローバルを普段から濫用している人だとは理解した。
> あと当然だが、引数によって参照される関数スコープ外の値を変化させるのも副作用だ。
勿論。
というか、まともに議論する気があるのなら、明確に条件を確定させなければならない。
何も言わないのなら、C言語での『標準的な』コーディングを各自が想定することになる。
君が普段からグローバルを濫用しているのは理解したが、それは俺の『標準』ではないし、
君みたいな馬鹿が出てきて無駄に議論が空回りするのが嫌だから、俺は明示的にそれを除外した。
そしてこの条件付けは『標準的』であり、問題ないと俺は考えている。
君がグローバルを含めて副作用を議論したいのならそうすればいい。
俺はその議論には意味が無いと思うから参加はしない。
君の言うように、俺は「参照透過」は以下の2種類に分けて考えるべきだと思っている。
・狭義の参照透過…sin()等
・広義の参照透過…qsort()等やthis
・参照透過でない…その他全部、つまりクロージャやbindやグローバルを用いるもの
通常の文脈で言われる『副作用』はおそらく関数型()言語から来ている。
それは上記「参照透過でない」物を濫用した結果だ。
Cの場合は最初からそれが出来ないから、その議論が発生することはなかっただけ。
それとは別に、意識高い系関数型()の「『狭義の参照透過』だけでプログラミングすべき」、
というのは当たってはいるが、実際の所それは多値を返せないと厳しい。
そして多値返しよりも参照を返してそこからアクセスしろ、というのがメインストリームの言語だろ。
それの方が楽だから。
315デフォルトの名無しさん (ワッチョイ 9a33-o5Pc)
2018/12/02(日) 10:48:22.22ID:3LBO8TR+0 少なくともCにおける「副作用」はずっと昔からの規格で定義されている用語だから、
独自定義で話されるのは困る。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,
> 又はこれらのいずれかの操作を行う関数の呼出しは,すべて副作用(side effect)と呼び,
> 実行環境の状態に変化を生じる。...
独自定義で話されるのは困る。
http://kikakurui.com/x3/X3010-2003-01.html#13
> ボラタイルオブジェクトへのアクセス,オブジェクトの変更,ファイルの変更,
> 又はこれらのいずれかの操作を行う関数の呼出しは,すべて副作用(side effect)と呼び,
> 実行環境の状態に変化を生じる。...
316デフォルトの名無しさん (ワッチョイ 2b4f-y69T)
2018/12/02(日) 11:25:56.48ID:Bx+z5yQP0317デフォルトの名無しさん (ワッチョイ 0bb3-C0zt)
2018/12/02(日) 12:58:23.54ID:mXB0v2zh0 C言語使う人ってアドレスって言ったほうがわかりやすい場合でもポインタっていうよね
ポインタの意味が多くて混乱する
ポインタの意味が多くて混乱する
318デフォルトの名無しさん (ワッチョイ 4e80-gjgg)
2018/12/02(日) 14:18:51.99ID:uIlAasYL0 副作用は、volatile とか、何かの状態を変えること
関数型のmonad とか、
Vuex, Nuxt.js みたいに、1方向のライフサイクルを作って、
状態は、Mutation からしか変えられないとか
どこかのタイミングに、絶対に変化していない、ポイントを作る
WEB+DB 106号に載っている、Flux。
状態管理のデザインパターン、単一方向のデータフロー
関数型のmonad とか、
Vuex, Nuxt.js みたいに、1方向のライフサイクルを作って、
状態は、Mutation からしか変えられないとか
どこかのタイミングに、絶対に変化していない、ポイントを作る
WEB+DB 106号に載っている、Flux。
状態管理のデザインパターン、単一方向のデータフロー
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
