18/12/16 12:25:29.13 XNrlNwMM0.net
>>529
挿入ソートの場合は、挿入すべき場所に直接挿入すればよいので、
swapで何度も入れ替えないようにして、必要なところに直接挿入するのがいいかもしれません。
一瞬バブルソートのように見えて、挿入ソートってこんなのだっけ?と思いました。
最適化についてはこのコードだけではなんともいえませんが、
大まかでよいのであれば、全体をclock関数で時間計測したように
この関数の中で経過時間を計測してみるのもよいと思います。
効果のある場所が限定できると推測もしやすくなりますので。
607:デフォルトの名無しさん
18/12/16 12:47:37.29 GOuL0+IB0.net
>>575
おおお、私の挿入ソートの為にありがとうござます。お手数おかけしました。
ちゃんと内容を読めていないので、時間を取ってテストドライバのソースを読んでみたいと思います。
一旦ひとまとめすると、
一応私の書いたソートは動いていて、ちゃんと「挿入ソート」になっているという感じでしょうか。
やはり、>>579さんもおっしゃる通り、なぜ-O無しと-O1の最適化の有無で、ソート時間が大幅に変わるのかが気になります。
コンパイラって不思議ですね。
>>581さん、ありがとうございます。
挿入ソート内での時間計測もやってみたいと思います。
この挿入ソートを作る前にバブルソートも作ったのですが、
以下の様に書きました。
void bubble_sort(unsigned array[], unsigned length)
{
register unsigned *l = &array[0];
register unsigned *r = &array[length - 1];
while (r > l) {
while (l < r) {
if (*l > *r) {
swap(l, r);
}
l++;
}
l = &array[0];
r--;
}
}
これに関しては、最適化の有無で極端にソート時間が変わる、というのはありませんでした。
と言っても最適化有効の方が速くはなっていましたが。
608:デフォルトの名無しさん
18/12/16 13:49:55.21 1E8BbQgX0.net
乱数で特定のデータを作って、それがソートされてるっぽいから
アルゴリズムは正しい・・・って正しいのか?
609:デフォルトの名無しさん
18/12/16 14:02:59.03 YrIrW4/W0.net
ほぼ整列済みのにデータに対してだけ速い挿入ソートがランダムなデータにはクッソ弱いのなんて当たり前じゃん
610:デフォルトの名無しさん
18/12/16 14:11:58.83 Q57qqdXG0.net
URLリンク(ideone.com)
URLリンク(i.imgur.com)
忠実に書いてみて試してみたが
そういうほど効果はなかった
void insersion_sort2(aho_type_t* au_A, size_t n_A_length) {
const aho_type_t const* cu_end_of_data = au_A + n_A_length;
aho_type_t* au_j;
for (aho_type_t* au_i = au_A + 1; au_i < cu_end_of_data; ++au_i) {
611:// ① aho_type_t u_x = *au_i; // ② au_j = au_i - 1; // ③ for ( ; au_j >= au_A && *au_j >= u_x; --au_j) { // ④ *(au_j + 1) = *(au_j); // ⑤ } // ⑥ *(au_j + 1) = u_x; // ⑦ } }
612:デフォルトの名無しさん
18/12/16 14:12:26.99 Q57qqdXG0.net
/*
① i ← 1
① while i < length(A)
② x ← A[i]
③ j ← i - 1
④ while j >= 0 and A[j] > x
⑤ A[j+1] ← A[j]
④ j ← j - 1
⑥ end while
⑦ A[j+1] ← x
① i ← i + 1
① end while
*/
613:デフォルトの名無しさん
18/12/16 14:19:33.35 MKia07Gc0.net
またvoid君が暴れてたのかw
614:デフォルトの名無しさん
18/12/16 14:21:40.72 Q57qqdXG0.net
ちなみに乱数シードを変更して自動的に1000パターンのセルフチェックもやってみたが
>>529のコードの誤りは一度も検出されてない
種類を減らして重複を増やして試してみたりもしてる
コレでも>>529のコードの誤りは一度も検出されてない
出力された要素に入力された要素が含まれること
出力された要素の大小関係が適切であること
コレがひたすらプログラムでセルフチェックされてる
615:デフォルトの名無しさん
18/12/16 14:23:51.69 lv3vm4Nk0.net
>>576
さっきからマウントマウントって
盛りのついたサルみたいなのはおまえだけだ
registerと書いてあったら何がやばいのか
仮引数に[]と書いてあったら何がやばいのか
やばいといった張本人=おまえが説明することだ
こればかりはググれで逃げることはできないぜ
失言でマウント取り損なって真っ赤になってるサルめ
616:デフォルトの名無しさん
18/12/16 17:18:28.63 +TcxNu6P0.net
>>589
じつはぼく、やばさがわかりません、まで読んだ
617:デフォルトの名無しさん
18/12/16 17:23:33.91 lv3vm4Nk0.net
>>590
うん、おまえが言ったことがどうやばいのかは全然わかんねえ
525のコードに限らずとも
registerと書いたらどうやばいのか
仮引数に[]と書いたらどうやばいのか
早く言えよ脂ハゲ
それとも撤回か?
618:デフォルトの名無しさん
18/12/16 17:56:55.46 Q57qqdXG0.net
今回の最終コード(メモリ解放を忘れてた箇所を修正した)
URLリンク(ideone.com)
実行結果(挿入ソートの修正前後)
ideone
URLリンク(i.imgur.com)
オレのPC
URLリンク(i.imgur.com)
proc elms cts cts/100000elms
sort(修正前) 524288 34.736 6.625366
sort(修正後) 524288 21.109 4.026222
qsort 524288 0.074 0.014114
結論:挿入ソートを使うのは徒労
>>529のコード自体は一切問題ない
そして、コードの誤りは一切なかった
⇒ つまり、この板には低学歴知恵遅れしかいないことがまた実証された
つまり、低学歴知恵遅れがテキトーなことばっかりいってることがまた実証された
619:デフォルトの名無しさん
18/12/16 18:41:12.85 lv3vm4Nk0.net
撤回でいいんだな? おい脂ハゲ
620:デフォルトの名無しさん
18/12/16 19:16:02.98 +TcxNu6P0.net
>>591
>>593
>>574
まずはお前自身の論理に一貫性を持たせようか。
>>574なんて全く今のお前自身だろ。
ゆとりは本当にこれが酷い。
お前らが『失敗作』扱いされるのも当たり前。
621:デフォルトの名無しさん
18/12/16 19:55:13.86 MKia07Gc0.net
void君と半角君がいるw
622:デフォルトの名無しさん
18/12/16 20:22:05.70 +TcxNu6P0.net
>>595
お前も味方の>>593に何か教えてやったらどうだ?
お前も自分の意見すら表明出来ないヘタレだし、そもそも問題を理解出来ないから無理か?
まあこれがゆとりが『失敗作』扱いされる理由だ。
本当によく考えろ。
623:デフォルトの名無しさん
18/12/16 21:11:35.54 78j4CJdmd.net
んで引数voidの件にはダンマリかよ
Cの基礎も知らずによく上から目線でゆとりをバカに出来るよな
上司や部下から陰で笑われてるだろお前
624:デフォルトの名無しさん
18/12/16 21:47:08.64 +TcxNu6P0.net
>>597
このスレ&過去スレ読んでそれ言ってるのか?
なら重傷だな
625: ゆとりって、本当に連呼リアンと知能もモラルも同程度だな どうもお前らは連呼すれば既成事実が出来上がると本気で思っているようだが、そんなことはないから
626:デフォルトの名無しさん
18/12/16 21:55:54.72 GOuL0+IB0.net
>>592
本当に検証ありがとうございました。
今テストドライバのソースを眺め始めたところで、まだ読み終わっていないのですが、
10行目のマクロが do {} while (0) で囲ってあるのには何か理由や慣例のようなものがあるのでしょうか。
合わせて教えて頂けると嬉しいです。
627:デフォルトの名無しさん
18/12/16 22:00:32.41 MKia07Gc0.net
void君絶好調だなw
ゆとりを馬鹿にしているみたいだけどまだ若い分潰しが効く
それに引き換えvoid君は老害の一言に尽きる
引数voidって何だ?と書き込んだ時点でお前のレスの信憑性はお前の頭と一緒で限りなく薄いんだよ禿w
628:デフォルトの名無しさん
18/12/16 22:04:09.68 hxwpEJ+zM.net
引数void君の日曜日
629:デフォルトの名無しさん
18/12/16 22:14:09.84 +TcxNu6P0.net
>>600
ゆとりは知恵遅れすぎて整合性という概念がない。
王道と王道と(ryだ。
俺を信用しないのは自由だが、世界中の誰もそれをしないのには理由がある。
ゆとりはこのことすら認識出来ない。
だからゆとりは『失敗作』なんだよ。
なんつーか、普通に考えれば分かるだろ、が通じない。
そして無駄に議論が紛糾する。
お前らの足もお前らが引っ張ってるんだと思うぜ。
630:デフォルトの名無しさん
18/12/16 22:17:44.41 A7Qua2Dpa.net
>>599
1文での表現で、かつ、セミコロンない場合のエラーを実現するためだね。
631:
18/12/16 22:39:13.74 IjCemHtZ0.net
>>600
>10行目のマクロが do {} while (0) で囲ってあるのには何か理由や慣例のようなものがあるのでしょうか。
もう覚えなくともよい古代の小技でしかありません、気にしたら負け
632:デフォルトの名無しさん
18/12/16 22:40:10.46 GOuL0+IB0.net
なるほど、
if (a > b)
swap(a, b);
などを置き換えられたときにエラーが発生しなくなるのですね。
勉強になりました。ありがとうございます。
633:デフォルトの名無しさん
18/12/16 22:41:05.38 GOuL0+IB0.net
×などを
〇などが
634:デフォルトの名無しさん
18/12/17 03:25:30.31 SLvNUvmN0.net
>>600
引数に void を知らないのはかなりの初心者だと思うよ。
まあ、大昔のC言語にはなかったんだけど、その大昔からずっと使っているなら引数に void を入れておけば
引数なしを表すという規格になって、そしてあらゆる標準的なヘッダファイルの中で使われ始めて
man getchar なんてやって man ページ出すと int getchar(void); なんてのが出て来て、試しに引数に何か
セットして呼ぶように書いたらエラーが出たりして、ああこりゃ便利になったなあなんてことを体験したりして、
まず忘れる事はないだろうから。
635:デフォルトの名無しさん
18/12/17 06:30:07.34 QzDaCAv50.net
voidを知らないのは、K&R Cのまま更新が止まったボケ老人だ
若かった頃から不勉強の傾向が強かったやつね
636:デフォルトの名無しさん
18/12/17 09:37:10.86 nW56DxVi0.net
>>501
それは別のところで確保すべき話ではないの?
637:デフォルトの名無しさん
18/12/17 12:43:01.45 FuitD2SD0.net
VOIDと書いてスタークルーザーを思い出す。
638:デフォルトの名無しさん
18/12/17 12:47:32.91 I/0A0iGaM.net
今Cやってる人はなに作ってるんですか?
639:デフォルトの名無しさん
18/12/17 16:55:11.83 CFStKxet0.net
Javaのスキルが低すぎて干された人物でしょう
すると引数voidを初めて見たというセリフの整合性がつく
C言語ならマウンティングできると思ったんでしょ
640:デフォルトの名無しさん
18/12/17 17:08:16.23 epqh6mY00.net
オレは単なるジョークだと思ってたんだが、本気だったとは
641:
18/12/17 20:55:39.65 TMWWsAye
642:0.net
643:デフォルトの名無しさん
18/12/17 21:11:40.45 WCs/11MM0.net
void*は一旦char*なりにキャストしてやらないと演算できないのが惜しい。
644:デフォルトの名無しさん
18/12/17 21:18:03.63 ddAMIqrq0.net
演算だって???
645:デフォルトの名無しさん
18/12/17 21:26:23.72 WCs/11MM0.net
?
ポインタ演算知らない人?
646:デフォルトの名無しさん
18/12/17 21:51:10.09 epqh6mY00.net
分かるけど、省略はしない方が良い
647:デフォルトの名無しさん
18/12/17 21:57:32.13 tIzZYkqxa.net
mallocの戻り値がchar *みたいな
648:デフォルトの名無しさん
18/12/17 21:58:37.52 4lEE+Jgc0.net
惜しいもくそもない
キャストで演算結果がかわるから当たり前
↓もしかしてpとqは同じ結果になるとか思ってんの
void* p_aho;
void* p = (char*)aho+1;
void* q = (short*)aho+1;
まずポインタがなんなのか分かってない
頭わるう
649:デフォルトの名無しさん
18/12/17 22:06:29.28 4lEE+Jgc0.net
ジェネリックポインターがどういうもんかすら分かってない低学歴知恵遅れが
低学歴知恵遅れのvoid君をバカにしてんのか
コレは滑稽
650:デフォルトの名無しさん
18/12/17 22:08:35.85 epqh6mY00.net
void君かな?
651:デフォルトの名無しさん
18/12/17 22:09:18.40 4lEE+Jgc0.net
顔真っ赤にしてるし
652:デフォルトの名無しさん
18/12/17 22:10:03.38 4lEE+Jgc0.net
省略可能()だって
コレは面白いことをおっしゃる
653:デフォルトの名無しさん
18/12/17 22:40:03.34 kePHxvF20.net
初心者です。
voidが存在しない時代のC言語では、関数の戻り値などはどのように記述していたのでしょうか。
良かったら教えてください。
654:デフォルトの名無しさん
18/12/17 22:44:15.58 P/jTcJUAa.net
最初は戻り値はintのみのはず。
655:デフォルトの名無しさん
18/12/17 22:45:59.53 5htGqSBWH.net
何も書かないとint
656:デフォルトの名無しさん
18/12/17 22:46:17.04 YSKVu3hZM.net
>>611
Linuxのデバイスドライバ
657:デフォルトの名無しさん
18/12/17 22:53:04.98 kePHxvF20.net
>>626,627
なるほど何も書かずにいきなり関数名とかだったんですね。
そうすると自然に戻り値はint型として扱われる感じなんですね。
ありがとうございます。
658:デフォルトの名無しさん
18/12/17 23:10:51.39 m222wRI70.net
>>607-608
結局連呼しか出来ないのか。
そしてそれがお前自身初心者で老害な証明であることにも気づけないんだろ。
お前ら本当に終わってる。
が、まあ、それはさておき、他人を追い落としたいのなら、
ネガティブキャンペーンではなく、ポジティブな競争を仕掛けろ。
つまり、俺よりもっと的確なアドバイスが出来れば、当然俺より上だというわけだ。
半角君がいいとは思わないが、少なくとも彼はこれをやってるだけマシだ。
東亜板の連中なんて馬鹿が大半で、本質が見えてない。
だから非韓三原則や法則
韓国人は、助けない、教えない、関わらない
韓国人と関わると不幸になる
なんてのを「韓国人」属性に結びつけているが、実際はそうじゃない。
(理由は他にもあるが、一つには)連中はネガティブキャンペーン『しか』やらないから、
結果的にそれに巻き込まれ、不幸になるだけだ。
そしてそれは今のお前ら池沼ゆとりにも当てはまる。
ゆとりなんて叩きたがっている奴はいくらでもいる。
馬鹿共がそれに気づいたら、お前らもっと終わるぞ。
その癖はマジでさっさと直せ。
ウンコを投げ合っていたとしても、それがポジティブ方向への競争なら、
だんだんマシにはなるんだよ。
お前らもちゃんとそれに参加しろ。
659:デフォルトの名無しさん
18/12/17 23:38:18.98 4lEE+Jgc0.net
void君の場合、キミラみたいにとてつもなく頭悪いワケでない
void君は、頭おかしい
頭おかしいから無罪
責任能力がない
660:
18/12/17 23:58:26.51 TMWWsAye0.net
>>631 私とおんなじ刑法39条適用組ですね!
662:デフォルトの名無しさん
18/12/18 00:26:04.62 qkRcBu1Pa.net
みんな仲間さ
663:デフォルトの名無しさん
18/12/18 00:28:28.60 RutBA2Qm0.net
>>630
そもそもウンコだって分かってるのに投げるなよ
664:デフォルトの名無しさん
18/12/18 00:54:59.12 GicIxRpF0.net
>>634
> ワッチョイ aaf9-fk3u
死ね
つーか、お前みたいな奴しかいないからゆとりは駄目なんだよ。
文句言う前に何でもいいから知ってる範囲で何か言え。
そしてそれが有効打かどうかを競うんだよ。
それすらしない奴には文句を言う権利すらないんだよ。
お前らは分かってないんだろうが、マジな話、
「ゆとり★ちゃんねる(仮称)」が未だに存在しないのもおかしな話なんだよ。
お前らゆとりはゆとり内で確実に内ゲバしてる。(自覚症状はないのだと思うが)
原因はお前らのその態度だと思うぞ。足を引っ張り合ってる。
665:デフォルトの名無しさん
18/12/18 01:29:36.53 HuP+yDtL0.net
おだいじに
666:デフォルトの名無しさん
18/12/18 01:42:38.54 AChTjxH60.net
void* を大きさ1として演算できちゃう gcc 拡張がキモイ
667:デフォルトの名無しさん
18/12/18 06:36:55.66 xgHv4hiI0.net
> f34f-rp3U
効いてる効いてるw
668:デフォルトの名無しさん
18/12/18 09:31:46.74 92SsvGE7a.net
>>637
俺も最初知った時は驚いた。
669:デフォルトの名無しさん
18/12/18 09:36:54.35 6efkgyQbM.net
>>630
的確なアドバイスとかどこの口が言ってんだよwww
voidもunsignedも知らないレベルなのに初心者をとっちめて追い返してるだけじゃん。ホント屑
670:デフォルトの名無しさん
18/12/18 09:40:18.56 xgHv4hiI0.net
registerと書いたら何がまずいのか説明マダー?(tntn
671:デフォルトの名無しさん
18/12/18 17:11:09.05 272sPWG0H.net
#include<stdio.h>
#define N 5
int sum(int *p){
int wa=*p,i,a[N],k;
for(i=1;i<N;++i){
wa=wa+*(p+i);
}
return(wa);
}
main(){
int a[N];
int i;
for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("%d\n",sum(a));
}
672:デフォルトの名無しさん
18/12/18 17:11:45.38 272sPWG0H.net
#include<stdio.h>
#define N 5
int sum(int p[]){
int wa=p[0],i,a[N],k;
for(i=1;i<N;++i){
wa=wa+p[i];
}
return(wa);
}
main(){
int a[N];
int i;
for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("%d\n",sum(a));
}
673:デフォルトの名無しさん
18/12/18 17:12:09.11 272sPWG0H.net
#include<stdio.h>
#define N 5
#include<math.h>
float vecNorm(int *p){
int wa=*p**p,i;
float ans=0;
wa=0;
for(i=1;i<N;++i){
wa=wa+*(p+i)**(p+i);
}
ans=sqrt(wa);
return(ans);
}
main(){
int a[N];
int i;
printf("enter vec:");
for(i=0;i<N;++i){
scanf("%d",&a[i]);
}
printf("norm=%f\n",vecNorm(a));
}
674:デフォルトの名無しさん
18/12/20 01:12:02.01 PGlfyh8s0.net
PARI/GPでの多項式の割り算について
例えば Mod(x^5,x^2-x-1) と入力すると
Mod(5*x+3,x^2-x-1)
と出力されます。
この剰余類 5*x+3 を多項式として次に使いたいのですが
一度コピペして貼りつける以外の方法はありますか?
675:デフォルトの名無しさん
18/12/20 14:46:32.32 dwI07DhgH.net
うちの大学の線形リストのノードの削除方法が異端なんだけど、本当にあってるのか教えて
コードはコレ
URLリンク(www.cc.kyoto-su.ac.jp)
次ノードの繋ぎ変えしてないしワケわからん
676:デフォルトの名無しさん
18/12/20 14:49:53.65 dwI07DhgH.net
if文の中でやってるところが意味不明で
677:デフォルトの名無しさん
18/12/20 15:23:58.12 HJafH88zx.net
ヒント
ndPtrPtrは次のノードを示すアドレスが格納されている変数のアドレス、言い換え�
678:驍ニnextメンバのアドレス。
679:デフォルトの名無しさん
18/12/20 15:23:59.11 pLjZUA4qM.net
あってる。異端でもなんでもない
680:デフォルトの名無しさん
18/12/20 15:33:59.42 mvSJol6Sa.net
>>646
それ以外の方法あるか?
まあ変数の使い方はいろいろあると思うけど
681:デフォルトの名無しさん
18/12/20 15:56:04.93 7Qt44qX50.net
>free(*ndPtrPtr);
これを
free(ndPtrPtr);
と誤読してちょっと頭抱えた。
682:デフォルトの名無しさん
18/12/20 16:20:36.96 HdfUNn3W0.net
int nodeDelete(node_t **ndPtrPtr, int n) 内の
if (*ndPtrPtr != NULL) ...
が分からんとすれば、その前のwhileブロックから抜ける条件・
抜けたときの状態を把握できてないんだと思うぞ。
whileブロックの動作を再考する方が早いかも知れん。
n == 0 の場合
0 < n, n < リストのノード数 の場合
n >= リストのノード数 の場合
683:デフォルトの名無しさん
18/12/20 16:27:02.34 ebMind6hd.net
理解したわ
ポインタがなに指してるか理解不足だったわ
684:デフォルトの名無しさん
18/12/20 16:50:21.12 +Bqr0ubdM.net
自分の理解不足を棚に上げて人様の正統なコードを異端呼ばわりしたことについて一言。
685:デフォルトの名無しさん
18/12/20 18:53:47.26 As7dWUw1M.net
まあ初心者にはありがちだし正直に理解不足認めてるんだからくだらんことで話引っ張るなよ
686:デフォルトの名無しさん
18/12/20 20:34:36.71 RsFs7LFZM.net
>>646
異端じゃないがセンスはない
線形リストなんてlist_headが決定版なんだからそれだけ覚えておけばいい
687:デフォルトの名無しさん
18/12/20 23:55:08.25 y9sbY0Ic0.net
>>646
異端っちゃ異端。普通は以下。
typedef struct nodetag {
struct nodetag *next; // 走査を速める為に先頭、と言うか本質部分は前側に
data_t data; // dataが最後、と言うかオマケ類は全部最後、そうじゃないと継承出来ないし
};
int nodeDelete(node_t **ndPtrPtr, node_t *ndPtr); // n番目を指定とかありえん、リストはそういう使い方はしない
int nodeDelete(node_t **ndPtrPtr, data_t data); // またはこれ
コンテナ類なんてOOPがドフィットするんだから、OOP的に書かないと駄目なんだよ。
こいつはそれが出来ていない。
リストを使ったこと無い奴がとりあえず書いてみました、というコードであり、良いコードではない。
池沼ゆとりが多いようなので明記しておくが、
お前らは『老害』に『年齢条項』を入れてゆとり≒20代は該当しない、ということにしたがるが、それは間違いだ。
老害の定義は、公平には、
・その問題に、より効率的に対処できる新しい方法があるにも関わらず、
古い方法しか使わない/使えない馬鹿
の事だ。
OOPなんて30年前にC++により再定義され、大変素晴らしかったからほぼ全部の言語に採用されてる。
今時OOPを理解してないのも、またコンテナ等OOPに最適なものにOOPを適用しないのも老害だ。
そしてこの老害コードで学ぶ>>646もまた、最初から「老害」となる。
(642が悪いわけではないが、教科書のコードに問題があり、「老害」からのスタートになる)
分かるか?
老害の十分条件には「知っているけど使わない」のみならず、単に「知らない」も入るんだよ。
このコードに問題を検出出来ないのなら、その時点で老害だ。
それはOOPを知らない、ということだから。
重ねて言うが、老害に年齢は関係ない。実際、池沼ゆとりの大半が既に老害になってるだろ。
688:デフォルトの名無しさん
18/12/21 00:27:52.80 pse73zvs0.net
「そうじゃないと継承できないし」
見事に手段が目的化してるな。
OOPがクソ宗教
689:ってはっきり分かんだね。
690:デフォルトの名無しさん
18/12/21 00:46:55.39 e7/cJrp90.net
>>658
絵に描いたような老害乙
Javaみたいに全部無理矢理OOPは問題があるとして、
C++の範囲で普通に使う分には問題ないし、今更OOPに文句言うのも老害だろ。
第一世代はCが制覇したが、第二世代はOOPが制覇してる。
その理由を考えろ。
691:デフォルトの名無しさん
18/12/21 01:00:18.07 hN5N0o1Ma.net
リストは順序あるでしょ。
692:デフォルトの名無しさん
18/12/21 01:08:54.29 j37Ohb1y0.net
普通にほとんどのOSはCで書かれてる
いまでもCが天下
693:デフォルトの名無しさん
18/12/21 01:11:08.64 j37Ohb1y0.net
OSのアプリケーションインターフェースは
ほぼすべてC
Cのインターフェースをそのまま使えないウンコ言語なんか
使い物にならない
694:デフォルトの名無しさん
18/12/21 01:27:10.71 +b5aVjIs0.net
>>657
痛いなー。もういろいろ悔しくて仕方ないってことは伝わったよ
695:デフォルトの名無しさん
18/12/21 01:52:35.34 e7/cJrp90.net
>>660
お前もリスト使った事無いのに、何故文句だけ言うの?
それがゆとりが駄目なところだ。死ね。
ていうかマジな話、ゆとりが未だにゆとりなのはこれが原因だと思うぜ。
お前ら自身がおかしな方向に誘導しまくってる結果、
ゆとり『だけ』のコミュニティでは収拾がつかず、コミュニティを保てない。
だからお前らは年齢層が高くて居心地が悪いと分かり切っているここ2chに出張ってくるしかないわけでさ。
これは俺らにとっても迷惑だし、お前らにとっても不幸な話だぞ。
インタフェース自体は、実際使えば「これは間違いだ」とすぐ分かる。
n番目、でリストを管理するなんてあり得ないから。
ただ、使ったことが無くとも、C++等参考にすれば、正しい方向には進めるだろ。
それもせず、とりあえず文句を言うその癖はマジで早く直せ。
お前ら自身がそれで被害を被っている。(自覚出来ていないようだが)
URLリンク(ja.cppreference.com)
URLリンク(docs.microsoft.com)
C++は「イテレータ()」とかアホなことやってるから余計に分かりにくくなってるが、この場合は「ポインタ」だと思っていい。
(というか、OOPのイテレータは糞だ。これは認める。あれはおそらくJavaが元凶だが)
.NETはまんまだが、Node<T>は参照渡しになるからこれも「ポインタ」だと思っていい。
ここら辺も調べればすぐ分かる話でさ、この意味ではその京産大の先公は「老害」だと断定出来る。
過去スレで東工大のリストが出てたろ。あっち見た方がいいと思うぜ。
>>663
お前がな。
だだこねれば受け入れられるのはゆとりコミュニティ内だけの話であって、マジで迷惑だから止めろ。
上記の通り、そのコードは一般的に見て「かなり間違った」事をやってる。
それを見分ける能力もないのに文句だけ言うなゴミゆとり。
696:デフォルトの名無しさん
18/12/21 02:19:18.24 lfxw1L5ka.net
リストは順序あるよ
697:デフォルトの名無しさん
18/12/21 02:30:30.08 UIMsFVlQ0.net
あるある。
698:デフォルトの名無しさん
18/12/21 05:32:19.37 lsetsG4i0.net
C言語で継承とか意識しなくちゃいけないんですか?
699:デフォルトの名無しさん
18/12/21 05:50:21.94 FGbnqlsP0.net
>>657
1つの方法が絶対と思い込んでるおまえこそ老害の典型だ
頭固すぎ
700:デフォルトの名無しさん
18/12/21 05:51:36.03 FGbnqlsP0.net
>>667
そもそもだよな
701:デフォルトの名無しさん
18/12/21 06:29:14.35 PkTs+Gix0.net
最近継承とか覚え�
702:スから誰かに話したくてしょうがないんだろ w まあ気持ちはわかるが
703:デフォルトの名無しさん
18/12/21 08:37:47.92 UIMsFVlQ0.net
そう言えばそうじゃないと継承できないって、もしやC++特有の決まりなのかな?
クラスが作れる言語でクラス変数の宣言の順序が関係する言語を知らんのだけど。
704:デフォルトの名無しさん
18/12/21 08:51:45.23 9Mj5/4cfM.net
継承って、OOP三本柱、継承・多態・カプセル化のうち最も早く信用を失った要素じゃん。
今じゃ当のOOP界隈自身が継承より委譲とか言っちゃってる。
705:デフォルトの名無しさん
18/12/21 09:43:00.98 C5YB7rUV0.net
多態こそがOOPの本質だと思っているので
それ以外はオマケ程度にしか見てないです
706:デフォルトの名無しさん
18/12/21 12:03:47.45 FGbnqlsP0.net
スレチ
C++スレでやれ
707:デフォルトの名無しさん
18/12/21 12:08:33.02 coLyQ5Vra.net
メッセージングです
708:デフォルトの名無しさん
18/12/21 12:14:41.72 PRxQR0TH0.net
664 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 05:50:21.94 ID:FGbnqlsP0 [1/3]
>>657
1つの方法が絶対と思い込んでるおまえこそ老害の典型だ
頭固すぎ
665 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 05:51:36.03 ID:FGbnqlsP0 [2/3]
>>667
そもそもだよな
670 名前:デフォルトの名無しさん (ワッチョイ 236e-q1e7)[sage] 投稿日:2018/12/21(金) 12:03:47.45 ID:FGbnqlsP0 [3/3]
スレチ
C++スレでやれ
709:デフォルトの名無しさん
18/12/21 12:30:50.77 choQhZIjM.net
>>671
> そう言えばそうじゃないと継承できないって、もしやC++特有の決まりなのかな?
そんなわけあるか w
そもそも>>657の奴を継承って言うこと自体がちょっとおかしい
710:デフォルトの名無しさん
18/12/21 12:39:24.63 FGbnqlsP0.net
>>676
何か用か?
711:デフォルトの名無しさん
18/12/21 12:52:04.69 lfxw1L5ka.net
継承を頑張ったプログラムって、疎結合・高凝集からどんどん外れていく運命にあるんだよね。
712:デフォルトの名無しさん
18/12/21 12:56:17.53 choQhZIjM.net
そりゃ継承ごときで頑張らないといけない>>679ならそうなるだろうよ w
713:デフォルトの名無しさん
18/12/21 12:56:53.99 eqYC63Aux.net
継承はそのうち親子関係に矛盾が生じ、親クラスのメソッドやブロパティを隠したくなる。
714:デフォルトの名無しさん
18/12/21 13:48:48.03 FGbnqlsP0.net
下手な継承休むに似たりというだけ
継承そのものの是非とは無関係
その昔、多重継承をまず否定ありきで喚いていた連中とお前ら同じだ
715:デフォルトの名無しさん
18/12/21 13:52:55.77 Vi7rbNdd0.net
C++亡者はなんでCのスレで延々と雑談するんだろう
716:デフォルトの名無しさん
18/12/21 14:11:28.71 PiZ4lBZmM.net
継承より委譲。継承は間違いだったby OOPコミュニティ一同
URLリンク(refactoring.guru)
717:デフォルトの名無しさん
18/12/21 15:27:16.62 mfb3XB1ua.net
>>677
そうだよな。普通のオブジェクト指向言語は順序に関わらず継承できるよな。
とすると普通でない言語での話かまたは彼が何かを誤解しているということかな。
718:デフォルトの名無しさん
18/12/21 15:50:13.39 lfxw1L5ka.net
継承とはキャストと見つけたり
719:デフォルトの名無しさん
18/12/21 16:19:17.16 FGbnqlsP0.net
>>684
継承より委譲を使うべき事例を挙げているにすぎない
720:デフォルトの名無しさん
18/12/21 16:31:46.47 PiZ4lBZmM.net
継承より委譲を使うべきかは「あとで」発覚する。
犬クラスや猫クラスを哺乳類クラスから継承させて喜んでいるところに、問題(カモノハシ)は突然やって来るのだ。
そうなってからあわてるよりも、常に委譲を使い、継承のことなど忘れさるべきだ。
721:デフォルトの名無しさん
18/12/21 17:02:28.85 vKEYTKwK0.net
そういやgolangは継承捨てちゃったんだよな
722:デフォルトの名無しさん
18/12/21 17:07:16.46 FGbnqlsP0.net
>>688
1行目と2行目以後、言ってることが矛盾してるぞ
「あとで」か「常に」か、どっちなんだ
723:デフォルトの名無しさん
18/12/21 17:16:20.54 QpLg2mIsM.net
>>690
横からだけど、全く矛盾してないぞ?
どこが矛盾してるんだ?
724:デフォルトの名無しさん
18/12/21 17:31:07.39 mfb3XB1ua.net
うん。矛盾してない。
日本語よくわからない人かな?
725:デフォルトの名無しさん
18/12/21 20:19:10.57 lsetsG4i0.net
初心者です。
カモノハシは哺乳類ですが、哺乳類クラスを継承することでどのような問題が発生するのでしょうか?
よろしければ教えてください。
726:デフォルトの名無しさん
18/12/21 20:44:04.05 QZspeJhP0.net
妊娠メソッドが規約に違反してしまいます。
727:デフォルトの名無しさん
18/12/21 20:45:30.64 choQhZIjM.net
>>685
だから継承でもなんでもなくて構造体の最後の要素の長さを可変長にしてるだけ
99.9%問題ないけど厳密には規格違反だったと思う
728:デフォルトの名無しさん
18/12/21 20:47:05.89 b6qAhl4Oa.net
>>693
いつ哺乳類と分類できたんだという話だよな。
その分類もいろんな切り口があるわけだし。
729:デフォルトの名無しさん
18/12/21 20:57:17.23 lsetsG4i0.net
なるほど、カモノハシは胎生ではなくて産卵するので問題になりうる、ということですね。
ありがとうございます。
730:デフォルトの名無しさん
18/12/21 21:37:11.59 81A29Thc0.net
オライリーのアルゴリズムクイックリファレンス持ってる人居ませんか?
アルゴリズムを勉強したいんですけど、結構ソースコードがあって分からないです
731:デフォルトの名無しさん
18/12/21 22:40:36.57 HoIQMu/H0.net
あれ肝心なところは「ここでC++のテンプレートを使って・・」とか
「○○ライブラリを使って・・」となってて、結局よく分からんかった。
732:デフォルトの名無しさん
18/12/21 22:46:23.26 e7/cJrp90.net
本当にゆとりはどうしようもないな。
初心者は絶対的な知識量が足りてないから、やってることは結果的に「老害」と一致する。
C言語なんて20年ほぼ変更無し=ここ20年の進歩を「文法的には」取り込めてないのだから、
文法から入るお前らみたいな奴は必ず「老害」からのスタートになってしまうし、実際そうなってるだろ。
この点、やはり初心者は新しい言語からやるべきなのさ。
そうすれば、少なくともお前らのような「古くて非効率な手法しか使えない馬鹿=『老害』」にはならずに、
「新しくて効率的な方法しか使えない新人」になるが、こっちの方がずいぶんマシだ。
とはいえ、新しすぎて評価が固まってない言語も危険ではあるが。(具体的にはGoがゴミ)
「継承」に粘着している馬鹿は継承の実装を考えてみるといい。
C++は当初はトランスパイラ=C++文法をC言語に変換してCコンパイラを通すもの、だったと聞く。
同様に、C++でのOOPをC言語で実装する際、どう変換するか考えてみるといい。
正解は、他言語のOOPの実装をググれば得られるだろう。
継承については色々議論があるが、今回のようにコンテナの場合は、
ListBaseクラスを継承しテンプレートでデータ構造に幅を持たせるのがとりあえずの正解だよ。
おそらくstd::list<T>もそうなってると思うぜ。(ただし速度重視で全テンプレート展開もあり得るが)
そしてC言語においても同等のオブジェクトコードが得られるソースコードを記述しろ、という話であってさ。
(それ以前にコンテナが欲しければ素直にC++使った方がいいと思うが)
というか、C++は改良版Cなんだから、C++を食わず嫌いするのも典型的な老害なんだよ。
当然だがC言語が抱えていた問題点は修正されてる。
コンテナ等も完全に整備されてる。
スマポ()とかやってるC++erは馬鹿だから無視でいいが、
Cの問題点に直面してるのにC++を試してない奴は定義通りの老害だよ。
Cが出現した頃とはずいぶん状況が変わっているわけでさ。
URLリンク(cpplover.blogspot.com)
733:デフォルトの名無しさん
18/12/21 23:15:48.04 pse73zvs0.net
だったらC++スレ行けば?
PythonやJSのスレでRubyのウンコード貼り付けて宣伝する糞キチガイと同じ臭
734:いすんだわお前。クサい。
735:デフォルトの名無しさん
18/12/21 23:43:53.69 e7/cJrp90.net
>>701
文句言う前にOOPを理解しろよ。お前は完全に「老害」だぞ。
そしてCでもOOPに準じてコードを書け、という話であってさ。
ゆとりは幼稚すぎる。
もうちょっとましな反論は出来ないのか?
○○と同じ臭いがする、というのもまたお前らのパターンのようだが、
結局の所、当たってる奴がいないだろ。
それは、ゆとりの脳は1bitの容量しかなく、
「ぼくのすきなひと」「ぼくのきらいなひと」しか解像度がないからだ。
そんなことやり続けてるからお前らは幼稚園児のままなんだよ。
が、マジな話、C言語でもOOPを理解してコーディングするのとデタラメにやるのではずいぶん違うから、
OOPはマジで理解しとけ。
むしろC言語(というか各言語)は方言でしかなく、
プログラミングパラダイムとしてのOOPの方がつぶしが利くし、有用だ。
736:デフォルトの名無しさん
18/12/21 23:46:17.30 j37Ohb1y0.net
URLリンク(ideone.com)
animal
┣platypus
┗bird━penguin
普通にCでも継承はできる
低学歴知恵遅れだとCではできない
もともと継承なんか使ってもいいことなんかないからな
低学歴知恵遅れほど嬉しがって継承使う
737:デフォルトの名無しさん
18/12/21 23:58:01.00 j37Ohb1y0.net
何度もいうが
オレレベルぐらいでないとオブジェクト指向はムリ
何度もいうが
低学歴知恵遅れにオブジェクト指向は
キチガイに刃物
何度もいうが
この板にいるような低学歴知恵遅れに
オブジェクト指向はムリ
738:デフォルトの名無しさん
18/12/22 00:14:40.06 ruBkeT7Z0.net
>>703
毎回お前のその無駄な情熱はどこから来るのか謎だが。
一応言っておくと、parentを持つその方法は「包含」であって、「継承」ではないぞ。
この際大した問題ではないが。
739:デフォルトの名無しさん
18/12/22 00:18:09.34 b6CiPLFa0.net
低学歴知恵遅れは
vtableも知らないのか
レスから頭の悪さがにじみ出てtる
740:デフォルトの名無しさん
18/12/22 00:20:00.60 b6CiPLFa0.net
仮想関数でないメンバ関数は
はっきりいって普通のCの関数と同じだからな
まず低学歴知恵遅れは基本的なことがわかってない
こんなのがC++つかうとかムリ
741:デフォルトの名無しさん
18/12/22 00:22:20.24 ruBkeT7Z0.net
あとついでに言っておくと、リストについては、
・おそらくポインタに不慣れだから無駄に引っかかってるだけ
・どうせリストなんて使わない
(=事実としてその京産大の先生は使ったことがないから間抜けなインタフェースになってる)
・そもそもコンテナが必要ならC言語以外では普通に標準orフレームワークで整備されてる
(=ただ単に再開発してるだけ)
だから、引っかかった場合はとりあえず無視でいいと思うが。
742:デフォルトの名無しさん
18/12/22 00:23:04.93 b6CiPLFa0.net
もうな低学歴知恵遅れはレスすればするほど
低学歴知恵遅れなのを自白することになるからな
レスしないほうがいい
743:デフォルトの名無しさん
18/12/22 00:34:25.01 ruBkeT7Z0.net
>>706
vtableはフラットに構成されてるものなんだよ。
お前のは階層構成になってるし、実際、直接呼び出せてないだろ。(無駄にオーバーヘッドがある)
それは「継承」ではない。
まあ正直そこら辺は割とどうでもいいのも確かだが。
744:デフォルトの名無しさん
18/12/22 00:35:32.56 mRtO7h8x0.net
>>700
C言語なら俺に聞け 148
スレリンク(tech板:37番)
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
745:デフォルトの名無しさん
18/12/22 00:36:02.90 b6CiPLFa0.net
また低学歴知恵遅れが
もっと頭悪いこといいだしてる�
746:�
747:デフォルトの名無しさん
18/12/22 00:38:18.48 b6CiPLFa0.net
もうね
支離滅裂すぎて
コメントしようがない
それぐらいめちゃくなこと書いてる自覚が
低学歴知恵遅れにはない
748:デフォルトの名無しさん
18/12/22 00:41:48.52 b6CiPLFa0.net
頭悪すぎると
自己防衛本能が働くのかもしれないが
脳みそが空想の世界にいくらしいな
どうやったらそんな頭悪いええ加減なレスを
自信満々に淡々と書けるのか不思議でならないわ
749:デフォルトの名無しさん
18/12/22 01:48:01.62 ghZDfTzQ0.net
>>700
20年て、どこから出てきたマジックナンバーだ?
それを言うなら29年なんだが
750:デフォルトの名無しさん
18/12/22 07:52:56.06 gJp1vt+rM.net
Linusがcppを排したのは正解だったんだな
751:デフォルトの名無しさん
18/12/22 08:27:41.36 LEZtop+80.net
低学歴知恵遅れ&お前ら連呼の人が、引数 void って初めて見たぞ
の人と同一人物だったとは
752:デフォルトの名無しさん
18/12/22 10:05:42.90 Ym27DU080.net
C言語のスレだから、そろそろ話をC言語に戻そうよ
C++の話は専用スレでも立ててそこで継続してくれ
753:デフォルトの名無しさん
18/12/22 10:15:17.63 j02wAUXX0.net
iZ-Cは魅力的なAPIがいっぱいだよ。
754:デフォルトの名無しさん
18/12/22 11:12:54.97 BR4LVxYj0.net
新設するまでもなくC++のスレッドも複数あるからなぁ。
濃いネタばっかりで「C++はいいぞ、早くCから移行しろ」程度じゃ
相手にしてもらえないレベルだと思うけど。
…いや、俺も理解できてるわけじゃないがな。
755:デフォルトの名無しさん
18/12/22 11:51:34.32 aSH6WKCWa.net
Cでオブジェクト指向っぽく書くと継承しなくていいのがいいよね。
冗長にはなるけど。
756:デフォルトの名無しさん
18/12/22 12:11:28.34 q6a6sTJo0.net
OOP自体が間違い。OOP書きたいのにC使うのは間違い中の間違い。
757:デフォルトの名無しさん
18/12/22 12:26:28.69 1IcOSx0Ja.net
>>722
じゃあどう書くわけ?
デザインパターンを常に排除すんの?
758:デフォルトの名無しさん
18/12/22 12:55:54.08 FB4FQRnX0.net
関数の第一引数を構造体にするならファイルポインターもオブジェクト指向に
なっちゃうからな。
仮想関数テーブルとかつくっちゃってるのかな?
759:デフォルトの名無しさん
18/12/22 13:17:52.98 GdiBSH+o0.net
昔CでのOOPが流行った頃は「オブジェクト指向=継承」みたいな捉え方が主流だったから
構造体にvtable持ってピギーバックで継承して、って感じだったな。
760:デフォルトの名無しさん
18/12/22 13:20:28.89 ruBkeT7Z0.net
>>721
それは一理ある。
俺自身はCもclass構文を取り入れるべきだと思っているが、実際そうならないのは、
・分かっている奴が書けば何とかなる
からなのも事実だ。
そして「継承」が無駄に嫌われているのは、Javaでは関数ポインタを提供しなかった為、
継承を使うべきでない局面で使われまくり、余計に意味不明になる事が多かったからだ。
デザインパターン自体がバッドプラクティス集なのもそのせいだ。
あれも本来は「第一級関数」を持つ言語で書き直し、
既存のJavaで書かれたデザインパターンは老害ゴミとして捨て去られるべきなのさ。
ただ、本来「継承」を用いるべき局面については当然「継承」の方がフィットするわけで、
Goみたいに
× 継承に代わる便利なものを用意したから継承が不要となった
○ ただ単に継承/仮想関数を排除しただけ
の言語は完全に乗り遅れてる。あれならCで書いても同じだし。
(Goは元から80年代の言語だと揶揄されていたが、全くその通りだった)
とはいえ、Goを作った連中は君と同じ感覚なのだろうとは思う。
君はGoを気に入るかもね。
761:デフォルトの名無しさん
18/12/22 13:27:38.05 nwnvhQAlM.net
> 本来「継承」を用いるべき局面については当然「継承」の方がフィットする
設
762:計時どれだけそう思い込んでいても、のちに覆され得る。それは設計時には知り得ない。 単純に継承のことは完全に忘れ去ってしまうべきである。 そんなものは無かった。
763:デフォルトの名無しさん
18/12/22 13:50:48.44 Hmvw7Yp+M.net
老害ゆとりのvoid君
相変わらず言ってる事が支離滅裂で草
764:デフォルトの名無しさん
18/12/22 13:56:16.04 BEf9L/k+M.net
void君がよく「ゆとり」連呼してるけど
彼本人はどうなん?
発言内容からはキャリアを感じさせないし
そもそも年齢もせいぜい35くらいじゃないの?
765:デフォルトの名無しさん
18/12/22 13:59:01.93 Ym27DU080.net
カサブランカの世界だな
766:デフォルトの名無しさん
18/12/22 14:00:34.13 IG9dO8ZOa.net
>>725
そうね。便利なマクロ用意したら結局それC++じゃんみたいな。
無遅刻無欠勤がとりえでコピペの手間を厭わないsubversion大好きかつ注意深い人達が作った、再利用を全く考えないワンオフ物の超巨大クラス構造みたいなの見ると、継承は初めから無い方がいいなと思うよ。ほんとつらい。
767:デフォルトの名無しさん
18/12/22 14:03:16.29 ruBkeT7Z0.net
>>727
まあ実際それをやったのがGoな訳で。そう思う人がいるのも事実だろうさ。
(俺はGoはポシャると思っているけど)
768:デフォルトの名無しさん
18/12/22 14:26:09.40 9V9oS+990.net
>>721
書き方次第だよ。linuxで最も有名なライブラリの一つであるglibは継承してるし
769:デフォルトの名無しさん
18/12/22 15:34:01.41 ghZDfTzQ0.net
空想論の域を出てないなあ
770:デフォルトの名無しさん
18/12/22 21:50:01.34 H4+WRP2A0.net
死にたい
771:さまよえる蟻人間
18/12/22 21:56:40.29 Op/4E6E/d.net
死にたいのは何かが足りないから。
その何かを探しに旅行へ行こう。
旅人は旅に旅立つ。
772:デフォルトの名無しさん
18/12/22 22:42:35.80 Ym27DU080.net
片道切符に誘うのやめろ!
773:デフォルトの名無しさん
18/12/23 01:05:41.98 vlmCWjWkM.net
Cの世界へ逝こう
774:デフォルトの名無しさん
18/12/23 11:39:57.84 nNQ759QC0.net
>>735
Cぬな
775:デフォルトの名無しさん
18/12/23 12:16:27.31 qYRfL2gu0.net
全てがCになる
776:デフォルトの名無しさん
18/12/23 12:39:52.20 nNQ759QC0.net
С
777:デフォルトの名無しさん
18/12/27 23:00:48.46 1iKhYige0.net
全てがFになる
778:デフォルトの名無しさん
18/12/27 23:16:13.58 fn4IYFyt0.net
そして、全てはぬるぽ
779:
18/12/27 23:48:52.00 59YrudQc0.net
>>742
冷密=「冷たい密室と博士たち」の方が好きです他は雰囲気ワードを散りばめただけのどちらかというと駄作に見えてしまうのですが、唯一これは極上のロジックだと思うのです
780:デフォルトの名無しさん
18/12/28 06:05:14.46 4iocbykD0.net
このスレで全てがFつーたら、-1のことだろ
781:デフォルトの名無しさん
18/12/28 09:26:28.29 Bx5qAOnaa.net
255もよろしく
782:デフォルトの名無しさん
18/12/28 17:38:41.28 SNiJRt+t0.net
#defineを使って関数を定義するテクニックがあります
#define kansuu() (ここに関数の内容を書く)
一時的にその関数を無効にしたいときはどうしたらいいでしょうか?
#dfine kansuu()
こんな感じにkansuu()以降を空白にしておくのがいいですか?
783:デフォルトの名無しさん
18/12/28 17:40:24.93 FW6v28vq0.net
#define kansuu() (いっぱい書いてる)
#undef kansuu
#define kansuu()
784:デフォルトの名無しさん
18/12/28 17:54:33.91 4iocbykD0.net
void kansuu(void)
{
ここに関数の内容を書く
}
#define kansuu() (ここに関数の内容を書く)
int main(void)
{
kansuu(); //マクロ
(kansuu)(); //関数
}
785:デフォルトの名無しさん
18/12/28 23:36:56.58 le4HGTEI0.net
よくあるdebug printfのアレじゃね
786:デフォルトの名無しさん
18/12/29 00:42:29.78 bhEXf4Rq0.net
>>748
> #define kansuu()
kansuu()の後には何も記述し�
787:ネいのが正しいスタイルってことですね >>749 関数とマクロ、そういう使い分けができたんですか・・・
788:デフォルトの名無しさん
18/12/29 10:25:00.95 PBX00OFRa.net
-Dじゃあかんのか?
789:デフォルトの名無しさん
18/12/30 17:16:13.69 i7KTb38La.net
いいんじゃないか?
コンパイラのコマンドがどう解釈するかに掛かってはいるが。
790:デフォルトの名無しさん
18/12/31 21:39:38.58 MpZmteVw0.net
よくやるのは
#ifdef HOGE
#define func() ここに処理
#else
#define func()
#endif
で、-DオプションでHOGEの定義を切り替える。
好みや宗教により#ifdefを#if definedにしたり、HOGEの値により分けたり、プリプロセッサを使わず処理のifで分岐したり。
791:デフォルトの名無しさん
19/01/01 01:03:53.24 JA4reBf90.net
初心者です。
あけましておめでとうございます。
本年もよろしくお願いいたします。
792:デフォルトの名無しさん
19/01/02 20:01:12.90 RordgnsG0.net
かっぱらいプログラム言語と言うのが出来そうな予感がした。
793:デフォルトの名無しさん
19/01/03 09:41:01.80 MUpMksOg0.net
Linux環境のデバドラと組み込みの違いって何ですか?
794:デフォルトの名無しさん
19/01/03 10:32:23.68 H9RYMXki0.net
デバイスドライバというのはデバイスをドライブするプログラムである。
組み込みというのはまあ特定の製品を制御するための専用のシステムである。専用というのはつまり汎用ではないということで、要はPC向けではないということである。
795:デフォルトの名無しさん
19/01/03 10:38:18.81 MUpMksOg0.net
>>758
ありがとうございます!
796:デフォルトの名無しさん
19/01/03 16:57:06.44 38Nc8DQPa.net
LinuxならLinuxに合わせた形でデバイスとのやりとりを作る必要があるが、そうでないならその辺は自由になる。
797:デフォルトの名無しさん
19/01/03 17:09:14.18 MUpMksOg0.net
>>760
なるほど
自分はLinuxに合わせて作ろうと思ってます
798:デフォルトの名無しさん
19/01/03 19:27:30.38 Gl0+wAUb0.net
そもそも組込み機器でLinux使うこともあるから>>757の質問自体がイミフなんだが
799:デフォルトの名無しさん
19/01/03 23:20:49.06 x5GCx+Ws0.net
まあ、組み込みとだけ言ってしまうとなんでもありになってしまうな。
Windows Embedded なんてのもあるし。組み込みだからといってOSがないとは限らない。
というか今となっては何も入ってない方が珍しいかな?
800:デフォルトの名無しさん
19/01/04 07:14:05.80 w3lkHMGF0.net
わざわざ「組み込み」と言う意味があるかどうかだな
ノートPCをロボットの脳として搭載することもできるが
OSがWindows10 Homeじゃ組み込みとは言えないのか
801:デフォルトの名無しさん
19/01/05 18:26:16.82 pJbMq/2ja.net
今じゃ小さいの幾らでもあるからなんでも組み込みにできるな。
コストと耐久性の問題はあるが。
802:デフォルトの名無しさん
19/01/06 21:17:49.87 LPav389N0.net
一時はECUなど特定の分野を除いて組み込みもLinuxに席巻されそうになっていたけど、最近のIoTブームのせいか超小型超低消費電力のマイコンのニーズが高くなり昔ながらの職人芸的組み込みソフトが復権してきてるイメージあるわ。
803:デフォルトの名無しさん
19/01/06 21:36:48.83 rMmabB99a.net
まあプログラムはむしろ楽だね。
貧弱なプラットフォームの方が。
804:デフォルトの名無しさん
19/01/07 06:58:10.64 k1Vvc+OE0.net
PICなんかを使った、電子工作の延長みたいな
「Cでもプログラムできるワンチップ」ていうジャンルも
盛んになってるみたいだし。
あそこまで小さくなると、直接マシン語で考える方が
手っ取り早いような気
805:がするわ。
806:デフォルトの名無しさん
19/01/07 17:11:01.86 Cio2TleD0.net
気がするんではなく実際そうだ
あれはアセンブラで使うもの
807:デフォルトの名無しさん
19/01/07 17:19:52.92 YLZmdTQx0.net
アセンブラで出来てC言語で出来ないことがイマイチわからないです。
なんか具体的な例などあれば・・・
808:デフォルトの名無しさん
19/01/07 17:22:48.61 ArcgbVcT0.net
C言語使う為には最低限コンパイラが動く環境を
用意しないと行けないが
アセンブラは比較的簡単に実装できる
いざとなったら16進で入力すれば良いし
809:デフォルトの名無しさん
19/01/07 18:58:49.76 YLZmdTQx0.net
>>771
なーるほど!コンパイラがいらずでCPUやメモリ使えるってことですね!
それは確かに便利だありがとうございます。初めてアセンブラの利用価値に合点がいきました。アセンブラわからないですが(´・ω・`)
810:
19/01/07 19:01:38.90 c5u8F3uW0.net
>>770
自己書き換えプログラム、とかはどうですか?
811:デフォルトの名無しさん
19/01/07 19:06:52.70 ArcgbVcT0.net
8ビットCPUの頃はやった事あるけど
今のCPUだと難しいのではないかな
812:デフォルトの名無しさん
19/01/07 19:13:29.39 Cio2TleD0.net
真のハーバードアーキテクチャだとな
813:デフォルトの名無しさん
19/01/07 19:20:28.86 aW5a0RDY0.net
コンパイラが要らなくてもアセンブラは必要なものじゃないの?
814:デフォルトの名無しさん
19/01/07 19:34:19.06 VIu/Fipc0.net
>>776
8bit時代、サブルーチン程度ならニーモニックどころかダンプ直打ちしてた基地外もいた
815:デフォルトの名無しさん
19/01/07 19:41:40.02 0y/PgDfv0.net
おっさん世代はZ80ぐらいなら主要なニーモニックは未だにヘキサで覚えてる。
816:デフォルトの名無しさん
19/01/07 21:33:52.93 Cio2TleD0.net
>>777
ごめんな
コーディング用紙つかってた
I/Oの鬼ダンプとか今でも思い出すよ
817:デフォルトの名無しさん
19/01/07 21:46:22.29 E11lC+b50.net
このスレの平均年齢いくつなの……w
818:デフォルトの名無しさん
19/01/07 21:58:59.48 fnTlHl64a.net
>>772
それだけでなく本当にCだけではできない事があるのが普通だ。CPUにもよるけどね。
何か特定のレジスタに値をセットしないと何かの機能が使えないみたいな場合はCではレジスタの指定をして値をセットすることができないので最低でもその部分だけインラインアセンブラにしたり全部アセンブラで書いたりする(またはそれ用に拡張がされたCコンパイラを使う)。
その他、80系やx86系ってI/Oポートあるが、あれはCからはアクセスできないのでその部分はアセンブラにする。
まあしかしそういうのはほとんどデバイスドライバの中で必要になる事なので普通は一般ユーザは考えなくてもよくなっている。
819:デフォルトの名無しさん
19/01/07 22:02:17.91 fnTlHl64a.net
>>777
それ昔は普通に居た。何せアセンブラなかったりあっても高かったりで使えないことが多かったからな。
>>778
3E 00 LD A,0
のような。
820:デフォルトの名無しさん
19/01/07 22:31:49.44 VIu/Fipc0.net
>>782
XOR使おうぜ
821:
19/01/07 22:37:49.75 c5u8F3uW0.net
>>781
思い出した!たしか 386 にて real mode から protected mode に移る命令は C では書けませんね…
他にもなにか面白い話があったような気がしましたが、もう思い出せない…実は 286 はリアルモードに戻れるとか…
>>778
HALT を言ってみよ
822:デフォルトの名無しさん
19/01/07 23:02:03.29 HO7xoVU80.net
LD は ゼロやキャリーフラグ変化するんだっけ?
823:デフォルトの名無しさん
19/01/07 23:06:04.57 JlpUfKel0.net
オムニバースを解析するソフトウェアを開発するにはどうすれば良いですか?
824:デフォルトの名無しさん
19/01/07 23:11:49.25 ArcgbVcT0.net
>>784
逆じゃないか?
286では戻れずに、不便だったけど
386では戻れるようにしたとか
825:デフォルトの名無しさん
19/01/07 23:51:44.52 4vLmnBNE0.net
>>784
76
826:
19/01/07 23:54:17.89 c5u8F3uW0.net
>>787
>286では戻れずに、不便だったけど
通説ではそうなんですが、「実は…」という話があった気がします、そのため「だけ」に 286機を確保していたつもりだったのですが、うっかり捨ててしまった、やりたかったことを今思い出してしまった…
827:デフォルトの名無しさん
19/01/08 00:17:51.75 oEiIhl5B0.net
NECのPC98での話ですが、プロテクトモードとリアルモードを行き来するのに
リセットで実装していたと聞きました(死中に活ありみたいな感じ)。
「実は・・・」って話は知らないw
828:デフォルトの名無しさん
19/01/08 07:38:36.71 iKVSkTiF0.net
>>789
0F 05 LOADALL
829:デフォルトの名無しさん
19/01/08 07:56:15.99 hvlZBAYo0.net
なんか286はPC用じゃなく工業製品用を想定して設計されてたって記事読んだ記憶が。
830:デフォルトの名無しさん
19/01/08 08:00:10.01 3ZWgvjCS0.net
さあ、C言語の話をしようか。
831:デフォルトの名無しさん
19/01/08 10:13:36.31 qFTAFG9Fx.net
昔から疑問なんだけど、マップドIO制御を除いてC言語だけでRTOSのカーネルは書けるのだろうか?
タスク同士のシステムコール発行によるプリエンプトはsetjmp/longjmpで何とかなりそうだけど、割り込みハンドラからのシステムコールによるタスクディスパッチは何をどうあがいてもスタックポインタの直接書き換えが必要な気がしてならない。
832:デフォルトの名無しさん
19/01/08 10:40:29.19 qjoMs7mdH.net
ハンドラ内でsetjmpしたらどうなるんだろう
833:デフォルトの名無しさん
19/01/08 11:39:30.49 iKVSkTiF0.net
CだけでOSなんて、Cは元々そういう使い方を想定していない
実際UNIXは5%がアセンブラだった
特権命令は誰か言っていたとおりだし
PCとSPのようなCが前提にしているものの初期化をCでは絶対に書けない
834:デフォルトの名無しさん
19/01/08 13:48:48.48 we27gJDs0.net
でも最近のUEFIとかなら全部Cで書かれたOSでも起動できそうだけどね。
835:デフォルトの名無しさん
19/01/08 16:18:38.83 rMmlRXYeM.net
C言語を一番最初に学んで、C++、ほかスクリプト言語と使っているが、C言語で文字列処理ライブラリーってみんなどうしてる?
C++ だとboost C++ とかいろいろなライブラリがあって、オープンソースだったり商用利用できたり、物によってはGPLだったりするけど、そういうのに相当するC言語の文字列処理ライブラリってある?
各自で作りためたオレオレライブラリをみんな使ってるの??
836:0794
19/01/08 16:22:15.64 rMmlRXYeM.net
つまり今から俺が自分用に文字列処理ライブラリ(独りよがりのオレオレライブラリ)を作る意味があるのか、俺が知らないだけでboostみたいに出来合いの洗練されたライブラリがあるのか…な…?
Pythonとかは言語仕様で十分複雑なことが出来るし、ホントC言語だけなんでこんな毎回面倒な目に合うのだろう。
837:デフォルトの名無しさん
19/01/08 16:37:12.54 iKVSkTiF0.net
Cを修行中ならオレオレライブラリを作ることにも充分に意味がある
既製品を使うことしかできないくせに天狗になってるやつが時々いる
使っているライブラリがオレオレか既製品かといった手段ではなく
知的な旅でどこへ行けたかが問題であることを見失うな
838:デフォルトの名無しさん
19/01/08 16:56:52.52 LJT6VvGba.net
俺はboostを知らない。
Cではあまり複雑な文字列処理を書かないしな。
複雑なのはPerl使ったりする。
839:デフォルトの名無しさん
19/01/08 18:11:31.32 rMmlRXYeM.net
みんなありがとう
Cは全然修行中なわけではなく、別に必要にも迫られてない(C++もPythonも使える恵まれた環境)
ただ必要になったとき、みんなどーしてんだろうと。
C言語で文字列処理なんてするシチュエーションが少ない
840:、とかかな。 初めてPython使ったときは感動した。簡単すぎて。C++では修行中に文字列処理ライブラリとかオレオレライブラリ作成やってみたけど、できあがった物がどう見てもboostの下位互換で悲しかった。 だからC言語で良いライブラリがあったら知っておきたいと思ったんだ。
841:デフォルトの名無しさん
19/01/08 18:41:54.19 MwaFnBBQ0.net
>>796
頑張れば書けるよ!
Cというよりは Cの文法を使った何か になったけどな・・・
842:デフォルトの名無しさん
19/01/08 19:47:06.06 qjoMs7mdH.net
>>799
glibとか?
843:デフォルトの名無しさん
19/01/08 22:16:50.19 BZbwJw/70.net
ちょっとすみません
gccの最適化オプションの-O2を使った場合に動作がおかしくなったりすることはありますか?
844:デフォルトの名無しさん
19/01/08 22:19:56.62 oEiIhl5B0.net
あるかもしれないし、ないかも知れない
そういうソースがあるなら、晒して皆に確かめてもらえ
845:デフォルトの名無しさん
19/01/08 23:00:38.10 E9NMc6wba.net
>>805
ある。
多分これからvolatileに関するやりとりが始まる。
846:デフォルトの名無しさん
19/01/08 23:28:52.41 BZbwJw/70.net
>>806
最適化したことでおかしくなったと言うわけではないんですが
どうなのかなと気になったもので
具体的にはO2の中のどの最適化でバグが出ることがありますか?
あとgccではなくg++でした
847:デフォルトの名無しさん
19/01/08 23:31:24.43 BZbwJw/70.net
>>807
volatileというものに気を付けないといけないわけですか
848:デフォルトの名無しさん
19/01/08 23:45:28.12 3ZWgvjCS0.net
>>808
仕様上規定されていない部分は最適化によって挙動が変わることがある。だから不確定な処理や誤った処理を書いていた場合に、これまでたまたま上手く動くコードが生成されていただけで、最適化によって挙動が変わってバグが顕在化することがある。
例えば、評価順序が不確定な処理を書いていたのがたまたま期待通りの順序で実行するコードになっていただけとか、不正なアドレスのメモリを参照や更新してしまっていたがたまたま問題がなかっただけだったとか。
849:
19/01/09 00:17:56.61 BRCoi/pn0.net
>>807
volatile は一切使わないことにしました…
850:デフォルトの名無しさん
19/01/09 00:28:20.37 QEOONCVCM.net
volatileにすべきところでしないから最適化でバグるんだよ
851:
19/01/09 00:40:32.88 BRCoi/pn0.net
>>812
volatile すべきところ、って具体的にどういうところですか?それは本当に volatile にする必要があるのですか?
852:デフォルトの名無しさん
19/01/09 01:08:46.29 QEOONCVCM.net
>>813
メモリマップドIOと
共有メモリマルチプログラミングで
最適化時のアクセス省略防止。
853:デフォルトの名無しさん
19/01/09 02:45:48.52 cump+mlU0.net
>>810
ありがとうございます
そうであれば不確定な部分がなければバグはでないということですね
最適化用にプログラムの書き方も変える必要があるのかと思っていました
volatileはライブラリの中で使っていそうですがきっと大丈夫でしょう
854:
19/01/09 03:15:23.18 BRCoi/pn0.net
>>814
個人的には、memory-maped な世界はよくしらない(インテル系しかしらない…).
shared memory って、特別なことはありましたっけ?マルチスレッドなら排他処理用のオブジェクト(pthread-mutex/cond)を使っておれば問題ないし、fork() の中と外で同じ変数をつつくときは…はて、どうしてたっけ?
855:デフォルトの名無しさん
19/01/09 03:28:53.85 T8HUoC+c0.net
そういやvolatileってC言語の場合CPUによってはうまく行かない事がありうるのな。
例えば4バイトの整数にアクセスするとして、そのCPUが2バイトづつしか読み書きできなかったら必ず2回のアクセスになる。
すると上位バイトと下位バイトで取得した時間が違っていたり一度に4バイト全体の内容を書き換えられない。
856:
19/01/09 04:25:49.36
857:BRCoi/pn0.net
858:デフォルトの名無しさん
19/01/09 04:49:03.78 /QFmT4Vc0.net
マイコンなどのIO アドレスを、PC 側のメモリのアドレスに関連付けているのだろう(Memory-mapped I/O)。
これで、PC側のアプリでは、PCのメモリを読み書きするだけで、マイコンの操作ができる
PC側のメモリを読むと、マイコン側のメモリから読み込む。
読み込むと、マイコンの電圧が変わって、値が不定か逆などになる
通常は、pull up, pull down 抵抗などで、5V・0V にしているけど、
閾(しきい)値(Threshold)があって、
例えば、1V以下なら0V、4V以上なら5Vと判定される場合、1~4Vは、不定になる
まあとにかく、読み込むだけで電圧が変わる・リセットされるから、
読み込むだけでも、電圧の状態が変わる
だから、IOアドレスを読むだけでも意味がある・状態を変えているので、
コンパイラで最適化・省略してほしくない!
859:デフォルトの名無しさん
19/01/09 05:40:56.66 4Rn8lGBj0.net
>>819
volatileと一切何の関係もねえし
860:デフォルトの名無しさん
19/01/09 07:03:03.74 nmJLIVr10.net
いや、「Cのプログラムで変数(あるアドレス)を読むことが、
ハードウェア的には状態リセットの操作になっているから、
読めと指示した場所で必ず読み取り動作を行って欲しい」だから、
volatileの使い方のひとつとして正当でしょ。
ハードウェア的な内幕の説明が少々ぎごちない気がするけどね。
861:デフォルトの名無しさん
19/01/09 07:55:50.33 YaNn8N94x.net
>>817
多バイトアクセスがatomicに行われないのはvolatileの守備範囲ではなくinterlockの守備範囲。
なのでCPUによってはvolatileがうまく行われないってのはvolatileに対する名誉毀損になる。
862:815
19/01/09 08:02:53.56 /QFmT4Vc0.net
マイコンなどのIO アドレス(port)を読み書きするには、その装置の手順が決まっている
まず、制御ポートに、読み込むポート番号を教える。
そこで装置を制御できるようにするために、例えば、50μ秒待つ
次に、ポートから読み込む。
読み込まれたポートは、電圧の状態を変える
電気電子的動作の要件・時間が、厳密に決まっている。
ある回路を動作させるときに、回路を切り替えないといけない
電圧の高低で、ある回路の部分を止めて、異なる部分を動作させる(電流を流す)。
そのため、規定の時間よりも、速くアクセスできない
863:デフォルトの名無しさん
19/01/09 11:29:26.49 4Rn8lGBj0.net
電流を流すってのはバイポーラの場合だね
今ほとんどのコンピュータがCMOSで電流はゼロアンペアだ
寄生容量で交流成分が漏れたり貫通電流の問題はあるが
それは信号が電流表現ということではない
864:デフォルトの名無しさん
19/01/09 18:32:34.88 ur1geU61p.net
>>808
最適化でおかしくなる場合の例としては潜在的バクがある。そしてよく見るのは組み込み系。volatileもそうだがprintfいれたり-O0にすると動作が正常化するってのがある。
volatileの例だと
int* fifo=0x0001;
int data=*fifo;
のようなコードはvolatileつけないと順番入れ替えられたりコードそのものがなくなったりする。
-O0やprintf入れると直る系はキャッシュ周りのこともある。キャッシュを積極的に使うかどうかで、キャッシュを使わない場合に安定する。キャッシュをたくさん使うprintfのような関数を入れると再度積み直しになって安定する。
後者は潜在的なバグで発見が難しいことが多い。プログラミングはわかるけど組み込みを知らない人がやらかすバグの一つ。
865:デフォルトの名無しさん
19/01/09 19:37:23.10 pHvZAha70.net
キャッシュ
866:絡みの潜在的なソフトのバグってのは経験ないなぁ。キャッシュが化けるハードのバグなら経験あるけど。 キャッシュ絡みってシノニム問題のこと?
867:デフォルトの名無しさん
19/01/09 19:41:27.69 G9k7j+QI0.net
キャシュの話はC言語にかぎらずどの言語でも起こりそう
868:デフォルトの名無しさん
19/01/09 20:19:35.23 pHvZAha70.net
ああ、キャッシュ絡みのソフトバグ思い出した。
動的にプログラム入れ替えるソフト作ったときにIキャッシュをクリアし忘れてて誤動作したことあるわ。
Dキャッシュと分離されてる拡張ハーバードアーキテクチャの良い勉強になった思い出。
869:デフォルトの名無しさん
19/01/13 00:46:58.72 Yl3ShYz90.net
IMCCOやTecConfのエントリー作品を見る限り、
Cのコードゴルフって10年くらい前と短かさとかが変っていないように思えるんだけど
これはCが成熟しきった(所謂「枯れた」)言語である程度の成長限界があるからなのかな。
それとも凄腕プログラマの興味がPythonやらRubyなんかに移っちゃったのかな。
870:デフォルトの名無しさん
19/01/13 01:10:46.51 /M42Y9uV0.net
> コードゴルフ
意味無いから誰も参加しないだけでは
871:デフォルトの名無しさん
19/01/13 01:20:23.99 zp78LtJW0.net
>>770
アセンブラとC言語はまったく違うのに何を言っているのか?
872:デフォルトの名無しさん
19/01/13 01:23:29.53 zp78LtJW0.net
>>802
あのな、コンピータには文字列という概念がないのだよ。
873:デフォルトの名無しさん
19/01/13 01:50:41.81 IM9k4xNE0.net
> それとも凄腕プログラマの興味がPythonやらRubyなんかに移っちゃったのかな。
ハハッ、ナイスジョーク
874:デフォルトの名無しさん
19/01/13 10:13:49.80 yABfrIyE0.net
>>832
それを言ったら数値という概念もないよね
人間から見たら数値として扱えるように演算しているだけで
コンピュータにはビットのオンオフしかないよ
875:デフォルトの名無しさん
19/01/13 10:20:29.78 7BHWGbvy0.net
>>834
CPUがビット演算しか備えていないならそうかも知れないけど、整数や浮動小数点数の演算を備えているのだから数値の概念はあるだろう。
876:デフォルトの名無しさん
19/01/13 10:59:24.10 EaFLGn72a.net
それいったらあるのはせいぜい、アルファベットとか…
877:デフォルトの名無しさん
19/01/13 11:17:20.34 IIjq691iM.net
>>834
むしろ数値しかない
878:デフォルトの名無しさん
19/01/13 11:26:53.62 EaFLGn72a.net
チューリングマシンの説明に数値なんて出てこないでしょ
879:デフォルトの名無しさん
19/01/13 11:49:52.93 Mw9Ec3URa.net
>>838
チューリングマシンは計算機のひとつの仮想モデルだけど、いつからそれに限定した話になったの?
そもそもスレ違いだからこれ以上議論する必要はないけど。
880:デフォルトの名無しさん
19/01/13 11:56:05.87 EaFLGn72a.net
チューリングマシンでもコンピュータでもなんでもいいけど、記号操作をやってるんです。
数値なんてのはかなり抽象化した話です。
881:デフォルトの名無しさん
19/01/13 12:02:55.92 QSfXhXiJM.net
CPU の数値演算はビット列をAND、OR、 NOTの組み合わせで変換してるだけだしね
882:デフォルトの名無しさん
19/01/13 12:27:42.01 Ov2pIYHC0.net
まぁ根本的に機械にはビットも数値も文字も文字列も無いわな。電気的にHiかLowかって話だから。
そういう話するスレではないと思うが。
883:デフォルトの名無しさん
19/01/13 12:51:37.79 gz3n+4+q0.net
演算器を構成するゲートレベルなら話は別だが、CPUレベルなら整数の加算てのは
ひとつのプリミティブな操作だろう。
884:デフォルトの名無しさん
19/01/13 12:52:03.33 +ibs1ZYS0.net
C言語以外の話題になると、俄然盛況になるスレ
885:
19/01/13 13:19:44.44 QvV+lMh50.net
>>841
3種類もあるのかなあ… NAND または NOR どちらか一方だけじゃない?
886:デフォルトの名無しさん
19/01/13 13:37:24.61 Gq5QlaCR0.net
今どきはHDLで書いてLUTベースになってるんじゃないのん?
887:デフォルトの名無しさん
19/01/13 13:53:19.28 mc4jTf550.net
原子/分子
888:に文字の概(ry
889:デフォルトの名無しさん
19/01/13 17:00:14.26 T8nAK+of0.net
>>845
NAND だけで全ての論理回路を構成できるけど NAND だけで構成されてるかどうかはわからん
890:デフォルトの名無しさん
19/01/13 17:43:49.41 kE5YqrGT0.net
基本回路はNOTで、その出力で駆動する
スイッチング素子を直列に置くか並列に置くかでAND/ORにしてるだけ
出力を負論理にするのはIOL>IOHだったTTL時代の名残
891:デフォルトの名無しさん
19/01/15 07:09:12.36 nk6JBEGL0.net
根本は電子とホールの移動度の差
892:デフォルトの名無しさん
19/01/15 07:18:28.73 P3RuPPdOa.net
たとえば水流で動作するコンピュータがあったらと考えると電子とホールは全然本質じゃない
893:デフォルトの名無しさん
19/01/15 08:01:36.67 c3MJrubW0.net
そういや、スマートボール(まぁパチンコ台みたいなものと思ってくれ)式に
上の投入口からボールを落とすと、台に仕組まれたシーソーの傾きが変わって
後から入れるボールの流れも変わる、ていう「機械式計算機」の
モデルもあったな。
シーソーにラッチがついてて「メモリ機能」を持たせたり、
ボールを何個か積み上げるとラッチが解除される仕掛けで変更したり。
>>850 は半導体素子の原理説明だったかな。
P型、N型それぞれの中でも、電子と正孔の両方があったはず、だよね。
894:デフォルトの名無しさん
19/01/15 08:06:38.17 O800IQzp0.net
正孔なんてものは存在しない
あるはずの電子がない状態というだけ
電流の向きと電子の移動方向が逆ということを
どうしても受け入れられない石頭のための説明だ
895:デフォルトの名無しさん
19/01/15 09:33:53.56 biAsBETNx.net
>>853
あるはずの電子がない状態を「正孔」と定義してるのでは?
正孔が存在しないってのは定義を否定することになる。
896:デフォルトの名無しさん
19/01/15 10:10:49.40 O800IQzp0.net
>>854
ならない
おまえ個人のオレ様ルールで否定ということにしたいだけだ
897:デフォルトの名無しさん
19/01/15 10:24:18.70 ymCyYm1q0.net
つまり電子が無くなることなんて無かった…?
898:デフォルトの名無しさん
19/01/15 10:36:11.91 xc4OhZdf0.net
>>853
「あるはずの電子が無い状態」のことを性行っていうんよ
899:デフォルトの名無しさん
19/01/15 11:02:13.55 O800IQzp0.net
846みたいに陽電子と勘違するやつがいるから指摘しといたんだ
900:デフォルトの名無しさん
19/01/15 11:06:00.20 TmM1XKX0M.net
誤「あるはずの電子がない」
正「電子がある方が結合が安定する(けど陽子数と合わない)」
901:デフォルトの名無しさん
19/01/15 11:19:45.08 O800IQzp0.net
>>859
ほほう それでそれで?
____
/:::::::ヽ
f::/" ̄ ̄ヾi
|:リ _ _|
|r==( o)( o)
( ヽ _) i
__/ヽ ー== イ
/ヽ ヽ \__ノ
`/ i \_/、
/ r-、 ハ
レ⌒ヾi / / |
i  ̄`ー―-ヘ |
ヽ_____ノーイ
| \ ノ
 ̄ ̄ ̄ ̄
902:デフォルトの名無しさん
19/01/15 12:02:58.73 P3RuPPdOa.net
ホールはあるぞ。
電子も実はないんだとか言うならまだわかるが。
903:デフォルトの名無しさん
19/01/15 12:03:00.19 +hPQnyk+M.net
>>855
じゃあ、逆に聞くが正孔って何?
904:デフォルトの名無しさん
19/01/15 12:12:57.27 O800IQzp0.net
ブツではなく状態ということだ
905:デフォルトの名無しさん
19/01/15 12:46:21.45 biAsBETNx.net
なんだ、やっぱりその状態があるって認めてるじゃん。正孔(という状態)は存在する、と。
てか誰も「正孔というモノ」の話なんかしてなくて一人だけ勘違いしてるw
906:デフォルトの名無しさん
19/01/15 12:53:56.34 XHhYs/N9M.net
いや俺も勘違いしてるから二人にしと
907:け。
908:デフォルトの名無しさん
19/01/15 12:59:09.57 adxfbmcy0.net
じゃあ俺も俺も
909:デフォルトの名無しさん
19/01/15 12:59:28.21 uoTEW6ZSa.net
ところで何の話をしているのかね?
910:デフォルトの名無しさん
19/01/15 13:10:35.80 adxfbmcy0.net
過去レス読めばいい
911:デフォルトの名無しさん
19/01/15 15:48:52.44 O800IQzp0.net
>>864
絡んできたくせに結局849の日本語が通じてないだけかよ
相手して損した
912:デフォルトの名無しさん
19/01/15 16:17:51.71 Q775hXRk0.net
トムとジェリー 仲良くけんかしな
トムトムトムにゃーご
ジェリージェリージェリーちゅう
913:デフォルトの名無しさん
19/01/15 17:18:14.06 biAsBETNx.net
>>869
もうこの話題も飽きたので相手しないだけ。
914:デフォルトの名無しさん
19/01/15 17:23:42.61 TYEZC8N+0.net
昭和の香り
915:デフォルトの名無しさん
19/01/15 20:58:52.03 uoTEW6ZSa.net
昭和は遠くなりにけり
916:デフォルトの名無しさん
19/01/15 21:44:31.19 O800IQzp0.net
>>871
バイバイ、イソップのキツネ君w
917:
19/01/15 22:02:49.14 niK8DUcQH.net
>>870
猫にねずみが噛み付いた
あべこべだ猫たたき
ねずみっていきものさ!
猫だっていきものさ!
918:デフォルトの名無しさん
19/01/16 17:45:04.86 ECRqnYoc0.net
そういやトムジェリって一作目が作られたのが1940年なのな。戦前だ。
それで延々と続いて2017年にもOVAのDVDが出ている。恐ろしく長寿だ。
まあディズニー関係が一番長寿なんだろうけどね。
919:デフォルトの名無しさん
19/01/16 17:49:16.09 ryLt0Gqla.net
スーパーマンの1941年のアニメなんてすごいレベル高いよ
920:デフォルトの名無しさん
19/01/16 22:19:46.42 +bYxL46c0.net
ENIACの頃か
921:デフォルトの名無しさん
19/01/17 23:04:44.74 KvO4PGbE0.net
フラッグの状態によって引数を変更する必要があるのですが
どのやり方がベストでしょうか?
//A:冗長だけど単純で解りやすいと思う
if ( flag )
{
func(PARAM1, PARAM2, 1, "hoge1", 2, "hoge2", 3, "hoge3");
}
else
{
func(PARAM1, PARAM2, 2, "hoge2", 3, "hoge3", 1, "hoge1");
}
//B:いったん変数に入れてから function call
if ( flag )
{
n[0] = 1; n[1] = 2; n[2] = 3;
str[0] = "hoge1"; str[1] = "hoge2"; str[2] = "hoge3";
}
else
{
n[0] = 2; n[1] = 3; n[2] = 1;
str[0] = "hoge2"; str[1] = "hoge3"; str[2] = "hoge1";
}
func(PARAM1, PARAM2, n[0], str[0], n[1], str[1], n[2], str[2]);
922:デフォルトの名無しさん
19/01/17 23:05:39.65 KvO4PGbE0.net
//続き
//C:テーブルその1
const int table[2][3] = {{1,2,3},{2,3,1},};
const char *stbl[2][3] = {{"hoge1","hoge2","hoge3"},{"hoge2","hoge3","hoge1"}};
i = flag ? 0: 1;
func(PARAM1, PARAM2, table[i][0], stbl[i][0],table[i][1], stbl[i][1],table[i][2], stbl[i][2]);
//D:テーブルその2 順番が違うだけの場合だったらこれでもいける
const int table[3] = {1,2,3};
const char *stbl[3] = {"hoge1","hoge2","hoge3"};
int order[2][3] = {{0,1,2},{1,2,0}};
i = flag ? 0: 1;
func(PARAM1, PARAM2, table[order[i][0]], stbl[order[i][0]],table[order[i][1]], stbl[order[i][1]],table[order[i][2]], stbl[order[i][2]]);
//E:三項演算子 これは無駄に比較が多くなるから無しかも
func(PARAM1, PARAM2, flag?1:2, flag?"hoge1":"hoge2",flag?2:3, flag?"hoge2":"hoge3",flag?3:1, flag?"hoge3":"hoge1");
923:デフォルトの名無しさん
19/01/17 23:16:19.13 lB4jgDBk0.net
>>879
ケースバイケース
924:デフォルトの名無しさん
19/01/18 00:27:39.99 mQ1FzYrGa.net
引数が5個あるのはすでにおかしいという気もあ
925:デフォルトの名無しさん
19/01/18 00:39:40.92 2Bf08m/t0.net
個人的にはAが好きだけど
こういうの馬鹿にする人いそうなのが困る
926:デフォルトの名無しさん
19/01/18 01:55:40.31 b8LPMN8g0.net
引数でやりとりせず大域変数に渡したくなる
927:デフォルトの名無しさん
19/01/18 01:59:06.15 9Rl7pq
928:wkM.net
929:デフォルトの名無しさん
19/01/18 02:04:58.72 4oORRjeGM.net
構造体に入れてポインタ渡さない?
930:デフォルトの名無しさん
19/01/18 05:44:13.01 APqq2jRu0.net
この範囲だけで言えば A が見通しが良くて分かりやすいんじゃないかな。
1, 2, 3 の並び方が(順列で)6通り存在するとか、
1 と "hoge1"... だけでなく、1 と "hoge2" の組み合わせも発生しうるとか、
func()の呼び出しパターンがもっと複雑だったら、
「flagの値に応じて適切な引数でfunc()を呼び出す関数」を作ると思う。
call_func(int flag, [func()に渡す引数]); みたいな感じ。
[func()に渡す引数] の部分を、カンマで区切った引数群にするか、
構造体にまとめるかは、別の要素が絡むので、強く主張できない。
931:デフォルトの名無しさん
19/01/18 06:01:14.41 5rrYPQ5i0.net
俺なら次のようにする。
void *a[]={1,&"hoge1",2,&"hoge2",3,&"hoge3",2,&"hoge2",3,&"hoge3",1,&"hoge1"};
func(flag?a:a+6);
932:デフォルトの名無しさん
19/01/18 15:49:59.44 dETdnGdxa.net
>>879
その flag が 0 か 0 以外の値にしかならず 1 や 2 で違う動作になる事は未来永劫ない場合と、将来的になる可能性がある場合とでやり方は変えるかも知れない。
でも最初のやり方で良いんじゃないかな。あまり捻ると分かりづらくなるし。
flagの値によって何十通りもの違う呼び出しになるとかいうなら色々考えた方が後々良いのかも知れないが。
933:デフォルトの名無しさん
19/01/18 16:33:30.33 qQDJcXFa0.net
flagに1も2もあるかよ
Win32のGetMessageみたいなアホなケースはあるが
934:デフォルトの名無しさん
19/01/22 14:42:25.83 Um5Ij+zI0.net
突然のステマ(OSSについてだけど)
LuaTeXっていうTeXのLua拡張?(よく分からん)に付いてくる
pplibっていうPDFライブラリおすすめ。
ドキュメント↓
URLリンク(serveur-svn.lri.fr)
C向けのAPIでかなり最近に開発されたおかげか挙動が素直
935:デフォルトの名無しさん
19/01/22 15:04:03.04 zFHfz07h0.net
>>891
みえない
936:デフォルトの名無しさん
19/01/22 15:24:29.26 rPWXpeN+0.net
Username for Subversion luatex repository
とか入力を求められるけど、何やら登録が必要?
937:デフォルトの名無しさん
19/01/22 15:34:39.22 Um5Ij+zI0.net
>>893
ユーザー名: anonsvn
パスワード: anonsvn
938:デフォルトの名無しさん
19/01/22 15:35:11.14 Um5Ij+zI0.net
ていうかごめん。普通に匿名SVNであることを書き忘れてたわw
939:デフォルトの名無しさん
19/01/22 15:47:59.14 rPWXpeN+0.net
こちらも Subversion の公開レポジトリでは anonsvn が一般的と知らなかった。
案内ページも表示されないんで完全会員制の秘密クラブの扉でも
ウッカリ開いてしまったのかと、少々慌ててしまった部分もある。
940:デフォルトの名無しさん
19/01/22 16:00:45.48 J1mDHp9Ya.net
バカには見えないプログラムでございます。
941:デフォルトの名無しさん
19/01/24 09:31:07.67 0uzJSPSp0.net
確かにAPIはスッキリしてるけど機能が少なすぎるね>>891
Poppler使うわ。
942:デフォルトの名無しさん
19/01/27 03:05:06.13 y+WQJSAc+
Cで手軽に使えるエディタなにか教えて
今まではbcpad使ってたんだがWindows
943:の互換問題なのか起動するがコンパイルしようとすると落ちるんよね互換モード使っても使えんかったし,bcc32コンパイラはコマンドラインからは正常に使えたbcapdをDLし直したが駄目やった
944:デフォルトの名無しさん
19/01/27 03:07:35.22 y+WQJSAc+
VS持っているけど数百ステップのコードに使いたくないんよね
bcpad並みに気軽に使えるエディタを教えてくれ
最悪はAtomやサクラなんだが
945:デフォルトの名無しさん
19/01/27 17:56:04.26 dmqtxJI00.net
てす
946:デフォルトの名無しさん
19/01/30 19:18:19.67 lQux7EEV0.net
この板ってPCの書き込みは見れない仕様なの?
947:デフォルトの名無しさん
19/01/30 20:09:31.10 5GzTmkIQ0.net
は?
948:デフォルトの名無しさん
19/01/30 21:15:29.41 lQux7EEV0.net
>>903
この板をPCのクロームで見てみて
レス数が903なのに、メイトでは897なんよね
949:デフォルトの名無しさん
19/01/30 21:22:29.10 yhwdEVRM0.net
>>904
なんかNGしてるワッチョイでもあるんでは?
950:デフォルトの名無しさん
19/01/30 21:25:54.58 yhwdEVRM0.net
あ,なんかしょーもないレスの仕様だけ書き込むのもアレだから
ちょっとしたことだけど……
C99の仕様だとfor文の条件の中で新しい変数が宣言できるけど
(新規のプロジェクトでは)積極的に使っていいと思う?
for (int8_t __cnt_foo; __cnt_foo < 42; __cnt_foo++) {
...
}
↑こういうの。
951:デフォルトの名無しさん
19/01/30 21:33:33.88 uDOSlsoAM.net
>>904
2cH.scか2ch.Netみてるんでしょ
952:デフォルトの名無しさん
19/01/30 21:35:32.25 lQux7EEV0.net
LINEの入社試験でC選んだけど
forの中などで宣言できる仕様になってた
cppやjavaでも使えるし使っていってええんじゃ
それにi,j,kってどうでもええ変数やから頭でも書く必要もないような
953:デフォルトの名無しさん
19/01/30 21:43:46.06 5GzTmkIQ0.net
反復文のブロック外で使わない変数を、反復文の外で宣言しなければならない今までの仕様がむしろおかしい。
あと中で宣言すれば変数名ijklmn,,,なんて自体も避けれる。多重ループでなければ。
954:デフォルトの名無しさん
19/01/30 21:53:53.32 fRt/VtGE0.net
for での変数宣言は // の単一行コメントと同じ程度には使うかな。
むしろ変数名が __cnt_foo なのが気になる。2つの下線で始まってる部分。
__cnt_foo を宣言だけして、初期化してないのも怖いなぁ。
でも、今お手元のgccで試したところ、エラーも警告も出ないんだね。
あと、これは投稿番号904になるつもりだが、実際どうかな?
955:デフォルトの名無しさん
19/01/30 22:37:01.37 yhwdEVRM0.net
>>910
ブラウザで見てるが,レス番号は904だ。
あと初期化は単に書き忘れただけw
「2つの下線で始まる函数や変数は局所使用」
って結構いろんなプロジェクトで(OSSでもたまに)
みかけるんだけど,変かしら。
956:デフォルトの名無しさん
19/01/30 22:48:12.86 HCwEhiL7a.net
>>911
処理系で予約されてるんじゃなかったかな
957:デフォルトの名無しさん
19/01/30 23:09:19.54 TJoXpOJw0.net
>>911
_で始まる変数やマクロは原則予約語で使う表記になるから控えた方が良いって話だったような
958:デフォルトの名無しさん
19/01/31 04:33:42.98 9oWu7LhB0.net
>>911
うん、変だ
下線2つで始めるのは衝突を最高レベルに警戒する場合の不自然なスタイルで
たいていはスコープが効かないマクロやビルトインで何かするときだ
何の変哲もない局所変数でそんなことするのはひねくれ者だ