汎用ってなんでしょうか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ただの屍のようだ

汎用ってなんでしょうか

#1

投稿記事 by ただの屍のようだ » 7年前

GWもいよいよ終わりですが、C++もいよいよSTLに入るところなので。
GW課題として汎用なスタックを作ることにしました。
進捗:テンプレートクラスによる実現 → テンプレートでは多用性が低いと感じてvoid*使うことにした → もはやC++ではないと感じた(Cに逆戻り?)
もう一つの主旨をいうとエラーにぶち当たりました。void*にNULLを返そうとすると異常終了してしまいます。

コード:

#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;

enum {NOTHING,CHAR,INT,DOUBLE,STRING};

class stack{
	stack *head,*next;
	const void *value;
	int type;
public:
	void push(const void*,int);
	int get_type();
	const void *pop();
};


void stack::push(const void *obj,int t){
	stack *p = new(nothrow) stack;
	if(!p) return ;
	p->value = obj;
	p->type = t;
	p->next = NULL;
	if(head) p->next = head;
	head = p;
}

int stack::get_type(){
	return (head) ? head->type:NOTHING;
}

const void *stack::pop(){
	stack *p = head;
	const void *obj;
	if(!p)	return NULL;
	obj = p->value;
	head = p->next;
	delete p;
	return obj;
}

int main(){
	stack stk;
	int t;
	int a=12;
	double b=3.34;
	char c='\\';
	const void *v;
	stk.push(&c,CHAR);	stk.push(&b,DOUBLE);	stk.push(&a,INT);	stk.push("is ",STRING);	stk.push("pen ",STRING);	stk.push("this ",STRING);
	while((t=stk.get_type())!=NOTHING){
		v=stk.pop();
		switch(t){
			case CHAR	: cout << *(char*)v;break;
			case INT	: cout << *(int*)v;break;
			case DOUBLE	: cout << *(double*)v;break;
			case STRING : cout << (char*)v;break;
			default : exit(1);break;
		}
	}
	return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#2

投稿記事 by softya(ソフト屋) » 7年前

なんか、ナナメに突っ走ってますね。
> テンプレートでは多用性が低いと感じて
これの意味が不明です。説明をお願い出来ますか?
もしかして1つのスタックに多用なデータを入れようとしたって事ですか?

boost::anyを使うと幸せになれるかも知れません。

それと、これをデバッグできないのは別の問題なのでデバッガで調べる技術を身につけられた方が良いでしょう。
デバッガは使われていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#3

投稿記事 by ただの屍のようだ » 7年前

スタック構造のメモリのようなものを作ろうとしました。

結局のところVC++使いこなせず、サクラエディタ+MinGWコンパイラでやってます。
デバッグツールは自分の両眼、トレースは脳内で行います。。。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#4

投稿記事 by softya(ソフト屋) » 7年前

MinGWならGDBを使ってください。
ただの屍のようだ さんが書きました:デバッグツールは自分の両眼、トレースは脳内で行います。。。
そのデバッグツールに問題があるから提案しているのです。

【追記】
そういえば、ポインタをスタックしているだけなので実際にはデータをスタックしているわけではないってのが最大の問題かもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#5

投稿記事 by ただの屍のようだ » 7年前

ポインタをスタックしているのは単純にいちいちメモリ割り当てるのがめんどくさいからです。
AdvancedWindowsに入る前、一度入門書?など使ってVC++を習うつもりなので、
今は稼働率100%のデバッグツールを修正しながら、C++を学習していきます。

今のところ、自分のデバッグツールが『const void* vに NULLが入ってもwhile(!v)でループを抜け出せないのが原因』と言っています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#6

投稿記事 by softya(ソフト屋) » 7年前

ただの屍のようだ さんが書きました:ポインタをスタックしているのは単純にいちいちメモリ割り当てるのがめんどくさいからです。
AdvancedWindowsに入る前、一度入門書?など使ってVC++を習うつもりなので、
今は稼働率100%のデバッグツールを修正しながら、C++を学習していきます。

今のところ、自分のデバッグツールが『const void* vに NULLが入ってもwhile(!v)でループを抜け出せないのが原因』と言っています。
そこじゃないですね。
デバッガを使わないのは無駄な努力だと私は思うわけです。
と同時にデバッグのいろんな方法を考えられないのは、プログラムを組めないのと同等以上の問題が有ると私は思うわけで「AdvancedWindows」の前にやることあるでしょう。です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#7

投稿記事 by ただの屍のようだ » 7年前

訂正:while(!v) → while(v)
でも、const void *v=NULLにしてもループ抜け出せないのは少し驚きです。

今はまだプログラムの規模小さいから人力デバッガでなんとかなりますし、脳トレと思えば案外やりがいあります。
アプリ作りにステップアップすればいやでも使います。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#8

投稿記事 by ただの屍のようだ » 7年前

まだエラーが残っているようです。
空のエディタwhile(v)試したところ、普通に動きますが、上げたコードの最後にくっつけると実行されないようです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#9

投稿記事 by softya(ソフト屋) » 7年前

ただの屍のようだ さんが書きました:まだエラーが残っているようです。
空のエディタwhile(v)試したところ、普通に動きますが、上げたコードの最後にくっつけると実行されないようです。
冷たいと思われるでしょうが、デバッガも使わない&デバッグ技法も使わないで脳トレだと思うなら自分で頑張って頂くしかないと思います。
学習程度と質問に最適だと思われる答えを提示したつもりですが、それを否定されるとなると私の出る幕ではないと感じました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#10

投稿記事 by ただの屍のようだ » 7年前

がんばってデバッグしました。headが初期化されていないのが原因でした。
コンストラクター追加してエラーを防げました。

×デバッガ使わない
○まだ使う時期ではない
と判断しただけです

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#11

投稿記事 by ISLe » 7年前

ただの屍のようだ さんが書きました:×デバッガ使わない
○まだ使う時期ではない
と判断しただけです
というかまだC++に手を出す時期でないのでは?

C言語レベルでも、データとデータタイプでまとめるべきだという判断はできると思いますけど。
その発想がないとオーバーロードのありがたみが分からないと思います。

まいどスレタイと内容の乖離を感じます。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#12

投稿記事 by ただの屍のようだ » 7年前

タイトルと内容のズレはしかたないです。(たとえば小説とか)
Cを一通り学んだのでC++に入りました。
C++の学習は前も一度書いたが独習C++からさらに何冊も使ってスキルアップを狙います。
開発ツールの使い方とか、今の段階では後回ししても問題ないと思います。

C++流行ってないときはCやほかの言語で済ましてきたと思うので、
いまさらオーバーロードとか継承とか便利だと思えば使えばいいじゃないですか?

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#13

投稿記事 by ISLe » 7年前

ただの屍のようだ さんが書きました:いまさらオーバーロードとか継承とか便利だと思えば使えばいいじゃないですか?
じゃあ使えばいいじゃないですか。
オーバーロードとか継承とか自体はむかしもいまも変わってませんよ。
使っているうちにC++言語が変わるわけではありませんよ。
意識して使い方を変えたり新しいことを覚えたりしないといつまでたっても便利にはなりません。

コード:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 *  スタックのモジュール ここから
 */

/* スタックはデータの実装を知る必要ないし知るべきでない */
struct data;

struct stack {
	struct stack *head, *next;
	struct data *data;
};

void stack_init(struct stack *stack) {
	stack->head = stack->next = NULL;
}
struct stack *stack_make(void) {
	struct stack *p = malloc(sizeof(struct stack));
	stack_init(p);
	return p;
}
void stack_push(struct stack *stack, struct data *data) {
	struct stack *p = stack_make();
	p->data = data;
	if (stack->head) p->next = stack->head;
	stack->head = p;
}
/* データタイプとスタックの状態は無関係。メソッドとして意味のあるものを */
int stack_is_empty(struct stack *stack) {
	return stack->head == NULL;
	
}
struct data *stack_pop(struct stack *stack) {
	struct data *data;
	struct stack *p = stack->head;
	if (p == NULL) return NULL;
	stack->head = p->next;
	data = p->data;
	free(p);
	return data;
}

/**
 *  データのモジュール ここから
 */

enum data_type { CHAR, INT, DOUBLE, STRING };

struct data {
	enum data_type type;
	char value[1];
};

struct data *data_make(const void *data, size_t size, enum data_type type) {
	struct data *dt = malloc(sizeof(struct data) + size);
	dt->type = type;
	memcpy(dt->value, data, size);
	return dt;
}
#define DATA_MAKE(v, t) data_make(&v, sizeof(v), t)
void data_free(struct data *data) {
	free(data);
}

/* 実装を外部に出さないことで保守性は向上する */
const char *data_2strz(char buf[], const struct data *data) {
	switch (data->type) {
	case CHAR   : sprintf(buf, "%c", *(char*)data->value);   break;
	case INT    : sprintf(buf, "%d", *(int*)data->value);    break;
	case DOUBLE : sprintf(buf, "%f", *(double*)data->value); break;
	case STRING : sprintf(buf, "%s", (char*)data->value);    break;
	default: buf[0] = '\0';
	}
	return buf;
}

int main(void)
{
	struct stack stk;
	int t;
	char strbuf[256];
	int a=12;
	double b=3.34;
	char c='\\';
	struct data *v;
	stack_init(&stk);
	stack_push(&stk, DATA_MAKE(c, CHAR));
	stack_push(&stk, DATA_MAKE(b, DOUBLE));
	stack_push(&stk, DATA_MAKE(a, INT));
	stack_push(&stk, DATA_MAKE("is ", STRING));
	stack_push(&stk, DATA_MAKE("pen ", STRING));
	stack_push(&stk, DATA_MAKE("this ", STRING));
	while (!stack_is_empty(&stk)) {
		v = stack_pop(&stk);
		printf("%s", data_2strz(strbuf, v));
		data_free(v);
	}
	return 0;
}

ただの屍のようだ

Re: 汎用ってなんでしょうか

#14

投稿記事 by ただの屍のようだ » 7年前

自分のコードをC基準にして、うまく組み替えた感じがします。
適当に作って上げた自分のコードと違ってきれいなコードですね。
自分のスキルはあくまで読んだ本の数量に比例するので、まだまだヒヨコです。
(きれいなコードみれたので満足です、問題にぶつかったらまたきます)

usao

Re: 汎用ってなんでしょうか

#15

投稿記事 by usao » 7年前

コーディング時に ”変数の初期化” 等といった事柄が頭から抜け落ちてしまう時点で
テンプレートとかSTLとかいう方に進む前に,基礎をちゃんとやるべきと思います.

コード:

stack A;
stack B;
A = B;
stack C(B);
とか書かれたらどうなんの? とか,ポインタなメンバ変数を用意した時点で真っ先に考えると思いますけど…

ただの屍のようだ

Re: 汎用ってなんでしょうか

#16

投稿記事 by ただの屍のようだ » 7年前

なかなかいい質問ですね。
引数付きコンストラクターは用意してないので、stack A(B)はサポートしないとして。
A = Bの解決法はですね。=演算子のオーバーロードです。
別にコピーコンストラクターでもいいですが、どうも引っかかるんでね。コピーコンストラクターが呼びだされる場合と呼び出されない場合。
どちらにせよ、char value[1]; → struct data *dt = malloc(sizeof(struct data)+size);よりはシンプルでわかりやすいし、対策もとりやすいと思います。
(自分は一度あのコーディング技法を本で読んだことあるので理解できますが、他人だとひっかかるんじゃないでしょうか)

usao

Re: 汎用ってなんでしょうか

#17

投稿記事 by usao » 7年前

ごめん,あなたが何言ってるか全然理解できない…

>とか書かれたらどうなんの?
は,質問ではなく,コーディングするときに,そういうことを真っ先に考えるでしょ? という「指摘」です.

コード:

class stack{
    stack *head,*next;
    const void *value;
くらい書いた時点で(というか,これを書こうと思った時点で) 変数初期化も含めて

コード:

public:
    stack() : head(NULL), next(NULL), value(NULL) {}
private:
    stack( const stack & );
    stack &operator=( const stack & );
くらい書かないと「まずい」と思うのがあたりまえという感覚になっていないのならば,
テンプレートが云々いうのは早いんじゃないの? という.

>引数付きコンストラクターは用意してないので、stack A(B)はサポートしないとして。
本当にそうでしょうか?

ただの屍のようだ

Re: 汎用ってなんでしょうか

#18

投稿記事 by ただの屍のようだ » 7年前

usaoさんがなぜ頭に血が上がっているのかは置いといて『指摘』ありがとうございます。

usao

Re: 汎用ってなんでしょうか

#19

投稿記事 by usao » 7年前

Oh...

助言のつもりが,余計なおせっかいだったようです.

YuO
記事: 943
登録日時: 10年前
住所: 東京都世田谷区

Re: 汎用ってなんでしょうか

#20

投稿記事 by YuO » 7年前

ただの屍のようだ さんが書きました:×デバッガ使わない
○まだ使う時期ではない
と判断しただけです
デバッガを使う時期ではない,などという時期はありませんよ。
あったとしても,その判断をするためにはデバッガを使える能力が必要です。
デバッガが使えない環境のためにデバッガを使わずにデバッグする手法というのはありますが,デバッガがあるのに使わないのは無駄もいいところです。
ブレイクポイントとウォッチ,ステップ実行程度ならば,大抵のデバッガに機能として付いてきます。
デバッガを使ったデバッグの基本は,この3つを使って想定と違う動きをする場所を見つけだすことです。
# ちなみに,8086ではブレイクポイント用としてINT 3のみオペコードCCが定義されています。通常のINT命令はオペコードCDとBYTEオペランド1つをとります。
  • デバッガを(故意に)使わない
    デバッガを使う技術があり,使う利点と欠点を比較した上で「使わない」という判断を下した
  • デバッガが(環境的に)使えない
    デバッガが対象の環境には提供されていない,実動作環境等でデバッガをインストールできない,インストールする権限を持っていない等,対象の環境が原因で利用できない
  • デバッガが(能力がないために)使えない
    デバッガは存在するが,それを使うための勉強をしていないために使えない。
上2つなら,デバッガを使っていない理由を時期にはしないでしょう。
ただの屍のようだ さんが書きました:タイトルと内容のズレはしかたないです。(たとえば小説とか)
何が言いたいのでしょうか。
タイトルは内容の要約であるべき,ということに対してズレは仕方がない,というのは,要約する技術を持っていません,と言っているように見えます。
プログラム云々ではなく,質問の仕方を学ぶべきなのではないでしょうか。
このスレッドの一番最初の投稿でも,「何を質問したいのか」がはっきりと書かれておらず,softya(ソフト屋)さんがわざわざ「ここが質問ではないか」という点を探して回答されています。
この掲示板では,質問用のテンプレートまで用意してくれているのですから,それにのっとって質問してみてはどうでしょうか。

例示されているのが小説であるのも意味がわかりません。
質問と小説は目的が異なる (質問は問題となっていることに対する回答を得るための物,小説は物語であって一般に回答を得ることを主題としたものではない) ので,例示するのに不適切です。
ただの屍のようだ さんが書きました:引数付きコンストラクターは用意してないので、stack A(B)はサポートしないとして。
サポートしないならば明示的にサポートしないことを示すべきです。

コード:

stack (const stack &) = delete; // for C++11 or later
や,

コード:

private: stack (const stack &); // 実装は提供しない
などとすることで,コピーコンストラクタを利用する場合にエラーとなります。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#21

投稿記事 by ただの屍のようだ » 7年前

辛口コメントでフルボッコされました。
要点をまとめて答えましょう。
1.能力がないためデバッガ使いません → その通りです
2.タイトルと内容のズレ → 
最初に上げた主旨はこうです:①汎用なコードを書こうとして汎用性のラインはどこか?②(元)原因不明なエラーに遭遇しました。
そのあとは受けたコメントに対して適切と思う返事をしていくので”主旨から離れるのはしかたないことです”
3.あくまで「自作」演習課題なので、ほとんど深く考えずに作ったし使用者も自分だけなのでなにをサポートするかしないかを明示させる必要はないと判断しただけです

今度からタイトルはあらかじめ『主旨:1...2...』としたほうがいいみたいですね。

usao

Re: 汎用ってなんでしょうか

#22

投稿記事 by usao » 7年前

せっかくだから 頭に血が上った感じでコメントすると,

多分,勉強の一環なんだろうけど,
「汎用」とか言うなら, ”ちゃんとしっかりした状態まで作ってみる” と より勉強になるはず.
そういう意味で,コピーコンストラクタとoperator=のことも書いた.
たとえ書いたコードの使用者が自分だけ であっても,こういうことはしっかりやっておくと,後々引き起こすバグが大きく減り
結果として自分を助けることになる.
わかったうえで端折っている,というような雰囲気を醸しているにもかかわらず,
それにしては変数の未初期化によるバグで質問してくるレベル.ちぐはぐ.

まぁコピーの際がどうの,の話は置いといても,
いろいろ手を広げたいのかもしれないが,まずは 変数初期化くらいしっかりやる ということも身につかないままでは
かえって遠回りだろうから,Cの基礎の基礎からちゃんとやったほうがいい時期だと見受ける.

あと,C++に進んだら「Effective C++」おすすめ.

ただの屍のようだ

Re: 汎用ってなんでしょうか

#23

投稿記事 by ただの屍のようだ » 7年前

アドバイスありがとうございます。
初期化によるエラーはおそらくもうおきないでしょう。
Effective C++はすでに本棚においてあるが、STLを少し使いこなせるようになったら読もうと思っています。

M.R

Re: 汎用ってなんでしょうか

#24

投稿記事 by M.R » 7年前

>2.タイトルと内容のズレ → 
>最初に上げた主旨はこうです:①汎用なコードを書こうとして汎用性のラインはどこか?②(元)原因不明なエラーに遭遇しました。
>そのあとは受けたコメントに対して適切と思う返事をしていくので”主旨から離れるのはしかたないことです”
それがどう小説と関係するのか?が分からないのです

usao

Re: 汎用ってなんでしょうか

#25

投稿記事 by usao » 7年前

>Effective C++
多分STLに触るよりも前の段階で読んだ方がいいと思うよ.
(自分がもってるのは 改訂2版 というやつで,ちょっと古いからかもしれないけど,STLを使う記述はほぼ載ってない)

手前から順に読んでいくというのではく,
C++の(文法とかの)勉強すすめる→内容がどうにか読めるようになった箇所から順次見ていく
といった感じで.

ホヅミ
記事: 110
登録日時: 10年前

Re: 汎用ってなんでしょうか

#26

投稿記事 by ホヅミ » 7年前

最初の質問に戻りまして。
屍さんが求める汎用とはどういうものですか?

僕からの質問で
屍さんはC言語は完璧でしょうか?C++の理解度は何%くらいだと自分で思っていますか?

汎用性を求めるのはC,C++の理解度を100%もとい150%くらい理解している必要があると思います。
当たり前ですがプログラミングだけでなくメモリの動きも理解していないといけません。
デバッガの使い方を理解してからコーディングに移ったほうが絶対にいいですよ。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#27

投稿記事 by ISLe » 7年前

相手が知ってる前提で特定の答えを期待して質問すると、それはそのまま自分に跳ね返ってきます。
質問者でも回答者でも同じように。

例えば「これは問題あるでしょう?」という指摘は、相手にそれを解決する能力がなければ期待する回答を得られません。
解決する能力があればそもそもその指摘をすることにならないですから、その指摘自体が無意味です。

指摘をするなら「こうしておかないとこういうときに問題になる」という形式を取らなければいけないということになります。
ISLe さんが書きました:
ただの屍のようだ さんが書きました:いまさらオーバーロードとか継承とか便利だと思えば使えばいいじゃないですか?
じゃあ使えばいいじゃないですか。
ここで「じゃあなんで使わないのですか?」と書くと炎上に向かうわけです。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#28

投稿記事 by ISLe » 7年前

最初はこれまでのスレから考えて、プラットフォームフリーとか読み易いという意味で汎用と言っているのかなと思いました。
質問のコードを見たらvoid*のことかと思いましたけど。
もちろん聞き返したりはしません。


Cで書いたことよりもchar配列で内部表現を記録していることのほうが重要なんですけどね。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#29

投稿記事 by ただの屍のようだ » 7年前

とりあえず、質問に答えます。
・自分の求める汎用性について:
”メモリ”です。自分は遠回りでOSに向かって進めているつもりです。アプリとか組みなれてからインサイドを読むという流れからもわかると思います。
最終的にはメモリの動きも理解してないと自作OSにはたどり着けないから、余裕が目に見えるようになってからアセンブラに入ると思います。

・C/C++の熟練度について:
完璧をすなわち「どんなコードも読めるし、書ける」とするならばまだまだヒヨコです。
C++は文法20%,STL80%と思っているのでC++の理解度は今のところ約20%ですね。

ついでに、STL使い慣れてからEffective C++に入る理由について:
[第3版の内容紹介から引用します]
リソース管理、テンプレートを使ったプログラミングに関する章を追加し、例外の存在、デザインパターンの適用、
TR1という新しい項目に関する解説も加えました。すべてを初めから組み立てなおし、実際に半分以上が新しい内容になっています。

M.R

Re: 汎用ってなんでしょうか

#30

投稿記事 by M.R » 7年前

>2.タイトルと内容のズレ → 
>最初に上げた主旨はこうです:①汎用なコードを書こうとして汎用性のラインはどこか?②(元)原因不明なエラーに遭遇しました。
>そのあとは受けたコメントに対して適切と思う返事をしていくので”主旨から離れるのはしかたないことです”

上記のたとえがなぜ小説になるのか?にも答えてもらえますか

ただの屍のようだ

Re: 汎用ってなんでしょうか

#31

投稿記事 by ただの屍のようだ » 7年前

小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから。
(この質問ラッシュが最初の主旨からけっこう離れてるのと同じです)

M.R

Re: 汎用ってなんでしょうか

#32

投稿記事 by M.R » 7年前

>小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから

書いている途中で方向性を変える作家で成功している人がいるのでしょうか。例えなので一般的に知られているのですよね

またこの質問はタイトルと内容にズレがあるものの例えに対するものですよね
書きながら方向性を変えたとして最初に決めたタイトルが内容にそぐわないけれども変えずに公開した作品って例えば何ですか?

M.R

Re: 汎用ってなんでしょうか

#33

投稿記事 by M.R » 7年前

流れを整理すると以下な感じでしょうか

質問の趣旨とは無関係にやってもらわなければならない事はいくつかあります。
 ソースコードをタグで囲う -> なっていないと読みにくい -> 回答しにくい
 インデントを揃える -> なっていないと読みにくい -> 回答しにくい
 質問を要約して議題を付ける -> 答えられる質問を一覧から選別しにくい -> 回答しにくい
これらはルールで決められているので守られていなければ当然注意されるものです。

当然のように
「議題が質問の要約になっていないね~」
 →「それは仕方がない事です(例えば小説)」
  ↓
仕方ない事ないよね~。ルールだから守ってもらわないとね。
拙いのは仕方ないけどね。そこは努力してもらわないとね。
というような回答があると
 →「最初に上げた主旨はこうです:①汎用なコードを書こうとして汎用性のラインはどこか?②(元)原因不明なエラーに遭遇しました
   そのあとは受けたコメントに対して適切と思う返事をしていくので”主旨から離れるのはしかたないことです”」
  ↓
ん~途中から趣旨が離れていく事に関しては誰も何も言ってないのね~
意図が分からないね。例えに出している小説にその意味が隠されているのかね~?
「なぜ例えが小説なの?」
 →「小説も作者の感情次第で流れがとんでもない方向に向かうところが案外似てると思いましたから。
   (この質問ラッシュが最初の主旨からけっこう離れてるのと同じです)」
  ↓
そんな小説聞いた事ないねぇ。彼の周りにはよくあるのだろうか。
もしかしてそれを知る事ができれば彼の知識水準も分かってより適切な回答をする事ができるかもしれない
「その小説は何ですか?」
  ↓
 →返事がない、ただの屍のようだ

回答者は質問または返答に意味の解らない事があれば説明を求めます。
無視するわけにいかないですからね。それが真摯な対応と言うものです。

彼の返答を見る限りではその質問に答える事で趣旨と離れていっているともとれるので
上の流れを見れば誰が何処でどのように趣旨から外しているのかがよく分かるかと思います。

これは「タイトルが適切でない」事象に限定したものですが全ての要素で同じ事をしているので収集つかなくなっているように思えますね、

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#34

投稿記事 by ISLe » 7年前

屍さんは汎用ポインタを使ってデータ型を特定しないことを汎用性と言っているのではないでしょうか。
メモリを汎用に扱いたいとはっきり書いていますし、わたしは質問で汎用ポインタを使っているのを見てそう思いました。

屍さんは『汎用性』という言葉自体を理解していないものと思われます。
それを考慮すれば、スレタイは不十分ではありますが主旨を表していると言えます。

あいかわらず質問の体を成していない感想のようなスレタイと文章ですが、それと小説に例えたことは関係ありません。
行動原理は関係あると思いますが。

屍さんに肩入れするつもりはないですが、趣旨を曲げるような質問あるいは回答をしたのは屍さんではないと思います。

その場しのぎであろう回答に、執拗に追求を繰り返し、答えに窮するのを嘲るのは、荒らし行為と言えるのではないでしょうか。

M.R

Re: 汎用ってなんでしょうか

#35

投稿記事 by M.R » 7年前

自分はここを「学び場」だと解釈しています。

回答に対していい加減な返答をして、それに対して言及されたら
"実は真意はこうだったんですよ。分からなかったのですか?"
的な対応をして「今回は乗り切ったぜー」と思わせていてはいつまでたっても直りません。

確実に言える事は彼が今後どういう道に進もうと
いずれ同じ理由で上司に怒られます。

出来る事なら深刻な問題を引きこ起こす前に学んでほしいと考えています。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#36

投稿記事 by ISLe » 7年前

「言い訳するな」
とか
「どうして言い訳するんだ」
と追求することで問題の行動が無くなるのでしょうか。

わたしは自分にとっての「学び場」と考えます。
屍さんのようなひともいるということを知ることも学びのひとつだと考えます。
他人を矯正する場ではないと思いますしそのような権利が自分にあるとも思えません。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#37

投稿記事 by ただの屍のようだ » 7年前

『めんどくさい』この一言がMRさんへの答えです。
MRさんがなにを言いたいのかMRさんの文面を見てなにも感じてないとでも思っていますか?

ええ、他”人”をきつい言葉で批判するのは性に合わないといったのは覚えています。
”MRさん”を整理してみましょう。
その1:揚げ足を繰り返して取る → ただの例え、にも関らず意味を持たせようと何度も追求してきた。
その2:揚げ足から人格批判に移る → 小説に成功例を知らない、さらに揚げ足を取ろうと追求する。
その3:これ以上揚げ足取れないと判断したとたん過去のコメントを身勝手な解釈で人格批判を行う → 流れを整理すると(以下略)
その4:MRさんはここは”勉強場”といいながら勉強に関する質問を一つもしてない

少なくとも自分は最初から長いコードはタグで囲っていた、インデント揃ってないなんて一度たりともいわれたことがない。
スレは質問者と回答者の両方で成り立っている。要するにみんな”作者”というのを主張していた。
その場しのぎで答えたのはたった一回だけ、MRさんへの答えがそうだ。
さて、そもそも自分がどういう人か、なにを目指して失敗しようが成功しようがMRさんにとってそんなに大事なのかね?
フォーラムルールに違反すると思われる内容があったので修正させて頂きました。
ただの屍のようだ さんも他の方も自重したください。
特に ただの屍のようだ さんの書いた内容は差別的なものです。
フォーラムルールを今一度ご覧ください。 → http://dixq.net/board/board.html

なぉ、これ以上個人同士での質問に関係のない過剰な言葉でのやり取りが続くようなら、このトピックを書き込み不能にさせて頂きます。


M.R

Re: 汎用ってなんでしょうか

#39

投稿記事 by M.R » 7年前

では最後に分かってもらえることを期待して一度だけ

「言い訳するな」とか「どうして言い訳するんだ」と追求はしてませんよね。
もっと言えばタイトルと内容がずれていると指摘したのも私ではありませんし、小説と関係するとも言ってませんよね。

発言には責任が伴います。社会に出れば新人だから、アルバイトだからなどという言い訳は通用しません。
屍さん自身が「小説だ」と言ったのだからそれを説明する機会を与えただけです。
間違えたのなら「間違えた」。その場しのぎで言ったのなら「売り言葉に買い言葉的に言ってしまいました」と言えば済む話です。

話をずらしたのが誰であるという事も言ってませんよね。
どこに間違いがあったのかを知ってもらうための材料を用意しただけです。
それをどう解釈するかは屍さん自身です。
ISLeさんが「屍さんが趣旨を曲げたと言いたい様だけど…」と読みとったのならそれがあなたの答えです。

>わたしは自分にとっての「学び場」と考えます。
というのはISLeさん自身の話ですよね。それに関しては私は関知しません。
私は屍さんに今のうちに知ってもらって大きな失敗をする前に直してほしくてやっています。

ISLeさんは部下なり何なりが取引先との応対で適当な返事をしたために
先方が「どれはどういう意味ですか?説明してください」と明らかに怒って電話してきた時に放っておく事で改善したのですか?
私は数件そのような事態に遭遇していますがそれで解決した例を知りません。

それに私はプログラムを学ぶ者は全て後輩だと思っています。
実際ここで質問している人達が私と仕事をする確率も決して低くないと思っています。
私にとっては他人ではありません。

ただどういう対応が適切なのか、という事に関しては未だに答えが出ていないのは事実です。
ISLeさんは優しさからフォローに回ったのだと思いますが
確実な解決方法だというのならば真剣に聞いてみたいのも本音ですね。


>屍さん
どこにもあなたがインデントを守ってない、コードタグで括ってないとは書いてませんよね。
そういう返答をするとこちらも「どこにそんな事書いたの?」と返さなくてはなりません。

回答者は回答するのに時間を割いています。調べ、時には検証して
そんなアドバイスに対し「やりたくない」というだけで上から目線で捌くなど回答者に対する侮辱ですよ。

ミスはだった一度で致命的です。
「めんどくさいなーコイツ」で済んでいるうちに学んでもらえる事を願っています。
私のよく見る能力が伴わないのにプライドだけが高いやつにはならないでください。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#40

投稿記事 by ISLe » 7年前

どうして相手と同じ土俵で勝負したがるのですかね。
相手を見下しているのならあなた(※)も同レベルだということになります。
※同様の行為をするすべての人に対してであり特定の誰かを差しません。
本人は気付いていないかもしれないですが傍から見ればくだらないガキのケンカです。

ホヅミ
記事: 110
登録日時: 10年前

Re: 汎用ってなんでしょうか

#41

投稿記事 by ホヅミ » 7年前

トピック主は解決となってますから、無暗に上がらないようにしてみたらどうですかね。
書き込み禁止とかにできるなら、したほうがよろしいかと。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#42

投稿記事 by softya(ソフト屋) » 7年前

極力、こちらからはルール違反以外は強制したくないって思っています。
今度ケンカ口調が飛び出したり同じ様な内容で繰り返す様なら、禁止とさせて頂こうかと思いますがよろしいでしょうか。

なお、sage機能はないです。ご了承ください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#43

投稿記事 by ISLe » 7年前

M.R さんが書きました:「言い訳するな」とか「どうして言い訳するんだ」と追求はしてませんよね。
もっと言えばタイトルと内容がずれていると指摘したのも私ではありませんし、小説と関係するとも言ってませんよね。
これは関係ないのに口出ししたと認める発言ですかね。
あるいは屍さんの言い訳とそっくりですね。
M.R さんが書きました:発言には責任が伴います。社会に出れば新人だから、アルバイトだからなどという言い訳は通用しません。
屍さん自身が「小説だ」と言ったのだからそれを説明する機会を与えただけです。
間違えたのなら「間違えた」。その場しのぎで言ったのなら「売り言葉に買い言葉的に言ってしまいました」と言えば済む話です。
具体的な作家や作品を挙げろと迫ることにはどんな意味があるのでしょう。
M.Rさん自身が答えを用意して質問しているのでなければそれはただの脅迫であり、掲示板にとっては荒らし行為です。
M.R さんが書きました:>わたしは自分にとっての「学び場」と考えます。
というのはISLeさん自身の話ですよね。それに関しては私は関知しません。
私は屍さんに今のうちに知ってもらって大きな失敗をする前に直してほしくてやっています。
M.Rさんがどう思おうと勝手ですが、そういうことはわたしと関係しないところでやってください。
他人を関知しないのはかまいませんが他人の存在を無視していいわけはないでしょう。
自由を履き違えてますね。
屍さん以外のこのスレを見る掲示板利用者を軽視してますよね。
M.R さんが書きました:ISLeさんは部下なり何なりが取引先との応対で適当な返事をしたために
先方が「どれはどういう意味ですか?説明してください」と明らかに怒って電話してきた時に放っておく事で改善したのですか?
私は数件そのような事態に遭遇していますがそれで解決した例を知りません。
わたしが上司ならわたしが責任を持って解決します。
部下には「どうしてそんなことをした」と詰問せず「どうしたらそうならないか」を考えさせて報告書を書かせます。

取引先ではないですが、リーダープログラマの立場でアルバイトを使うことが何度もありましたがその手の問題はそもそも発生しないかあるいは発生してもほぼ改善しました。
詰問すると萎縮して報告・連絡・相談そのものをしなくなってしまうので最後に大きなツケがやってきます。
少なくともわたしが関わったプロジェクトでアルバイトを契約時間外まで働かせたりデスマーチになったりしたことはありません。
M.R さんが書きました:それに私はプログラムを学ぶ者は全て後輩だと思っています。
実際ここで質問している人達が私と仕事をする確率も決して低くないと思っています。
私にとっては他人ではありません。
わたしは後輩であろうと下に見たりはしません。
後輩だろうがアルバイトだろうが丁寧語で話しますし仕事をやってもらうときはお願いしています。
上から目線はM.Rさんも同じですよね。
M.R さんが書きました:ただどういう対応が適切なのか、という事に関しては未だに答えが出ていないのは事実です。
ISLeさんは優しさからフォローに回ったのだと思いますが
確実な解決方法だというのならば真剣に聞いてみたいのも本音ですね。
M.Rさんの投稿でスレが荒れたのもミスと言えるのではないでしょうか。



繰り返します。
回答の用意がない脅迫目的の質問は個人間でやってください。
当人以外には迷惑でしかありません。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#44

投稿記事 by ISLe » 7年前

#見落としてました。
なんか勘違いされているようですがわたしは誰の味方でもありません。
あとからスレを見たひとに何か得るものがあれば良いですが、当人以外(というか当人にすら)何も得るものがないことでスレが無駄に伸びていくのが許せないだけです。
個人的には主旨がズレてもかまわないと思っています。

屍さんに対してはとうに言葉が通じるとは思っていません。
言葉が通じない以上、調子に乗って限度を超えれば実力を行使します。
そのときはもちろん掲示板利用者に迷惑を掛けないよう配慮します。

投稿者は書いた内容に対して責任があります。

ということで以後は実力行使に移りますので、このスレへの投稿はこれが最後になると思います。

usao

Re: 汎用ってなんでしょうか

#45

投稿記事 by usao » 7年前

今繰り広げられている話題と全然関係ないですが,


(私は「C++以前にまずはCの基礎を云々…」とか言いましたけど,それは置いといて)
質問者様の(質問時の)状況としては,
 Cを終えてC++に進んだ→勉強がてら
ということで,「C++の勉強のための課題」という側面があったのではないかと思いますが,
完全にCな(C++でない)別のコードが示された時点で「解決」ということでよかったのかなぁ?とか…
ご本人の勉強に役立っているのならばよいのですが.

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: 汎用ってなんでしょうか

#46

投稿記事 by softya(ソフト屋) » 7年前

usao さんが書きました:今繰り広げられている話題と全然関係ないですが,


(私は「C++以前にまずはCの基礎を云々…」とか言いましたけど,それは置いといて)
質問者様の(質問時の)状況としては,
 Cを終えてC++に進んだ→勉強がてら
ということで,「C++の勉強のための課題」という側面があったのではないかと思いますが,
完全にCな(C++でない)別のコードが示された時点で「解決」ということでよかったのかなぁ?とか…
ご本人の勉強に役立っているのならばよいのですが.
本来の話ですね。
ご本人はC++の有用性とか必要性を感じていないと理解しました。
私としては疑問ですがご本人に問題が無いのなら、それはそれで正解なのだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 汎用ってなんでしょうか

#47

投稿記事 by ISLe » 7年前

最後と書いておきながらすみません。
主旨に関する話ですので。
usao さんが書きました:完全にCな(C++でない)別のコードが示された時点で「解決」ということでよかったのかなぁ?とか…
ご本人の勉強に役立っているのならばよいのですが.
あのコードはわたしが書いた「C++に手を出す時期でない」という指摘を補強するために書きました。
屍さんの反応を見るに指摘は正しかったと勝手に解釈しました。
C言語でもオブジェクト指向っぽいことはできると示したいという意図がありました。
そして汎用ポインタ(void*)を使うことが主旨であることを確認する意味もありました。

どうして乖離をズレと解釈したのかは分かりませんし、小説の例えに関しては意味不明です。
食い付いたところで何の得にもならないのは明らかでしたのでスルーしました。

屍さんがどうなるとかはわたしの関知しないところです。

ただの屍のようだ

Re: 汎用ってなんでしょうか

#48

投稿記事 by ただの屍のようだ » 7年前

C/C++もそうだが、言語なんて所詮道具に過ぎないと思います。
最初の主旨の一つである汎用について、Cのコードでも十分な指摘になったと感じます。

それをどうやってオブジェクト指向に沿っていて、なおかつ無駄のないC++コードにするかは、
C++を勉強していくにどのみち克服しなければならない課題で、自力で解く必要があると感じました。

(それにしても、ずいぶんと荒れたコメントがあふれていますね。まぁ、自分がカッとなって引き金を引いたのが悪いでしょう。)
(実力行使かぁ、ちょっと気になりますね。)

閉鎖

“C言語何でも質問掲示板” へ戻る