C言語なら俺に聞け 144
■ このスレッドは過去ログ倉庫に格納されています
Pythonでも速度求めるんならスタック・キューはlistじゃなくてcollections.deque使うやろ >>174
py なのはインタフェースだけでしょ。 >>160
えっ?
データ構造を学んでるんでしょ?
その実装例がでてきたことに対して、実装する意義がわからないっておかしくない?
学習するためじゃないんかい…
車輪の再発明は無駄だけど、学習として車輪の作り方をトレースするのは有益。
とちょっと斜め上の視点をとってみた。 今からお前らが書いてるコードが全て車輪だってことなんだよなぁ... 2chにいる時点で端くれプログラマーなんだし世界で既に書かれたコードしか書いてないでしょ...() >>179
おまえさんは何かコードを書く前に
それを誰が書いたのか調べてクレクレしに行くのか?
すげー嫌われ者だろうな >>180
これは無能確定
何回も同じコードを書くのかい? 同じ仕様を満たすコードを何人もが独自に書くプロジェクトなんて、沢山あるだろw
誤ったオブジェクト指向の解釈が蔓延した弊害でなw 自分でコード書かないと npm left-pad みたいな問題が起きる
ブラックボックス的に使う部分と内製化する部分はきっちり区別して
内製部分はすべてのコードを完璧に把握しておくべきだ >>185
そりゃコードは把握すべきだよ
けど基本全部他かりゃ引っ張ってくりゃ解決するんだよなプログラムなんざ
プログラマーを神格化する風潮やめようぜ 知恵遅れでポインタすらも分からずギャーギャーわめいてるアホがコイツなんじゃねえの
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10184535725 >>189
確認したが、同意する。
質問/回答一覧できるのに、酷いな。 いやしかし、ひどい質問だなw
プログラムどころかアルゴリズムの時点で特許がどうの騒ぐ時代なのに、プログラムを全世界で共有とか頭悪すぎる。 部分的にはライブラリの配布みたいな感じで出来てはいるけどな。 正直車輪の再開発なんていってたら商売成り立たないよな
ほかの人に見せて第三者がそのコード使ったら普通に嫌だと思うんだけどコードの共有化とか利益と競争を考えてない綺麗事じゃないか?
コード使い回しなんて実際問題、会社内ぐらいでしかやらんだろ むしろ乖離問題で使わせてない。つか使わせたくないってのが本音。
資産だけど公開した途端にむしろ負の資産になる。 GNU汚染問題もあるし出所の怪しいコードをやたらとホイホイ取り込めないよな ライセンス絡みは面倒だから出来るだけ自分で書くのが一番いい 何も見ないで独自に作ってもある日サブマリン特許にやられたりする あれひでえよな
産みの苦しみを報うはずの制度が
産みの苦しみを突然否定しに来る
たった1人を報うために大勢が犠牲になる ソフト特許権絡みの問題なんて余程優れたアルゴリズムを実現でもしない限り発生しないだろ
少なくとも車輪の再発明レベルでは問題が起きようがない
ライセンス関係の問題の殆どは著作権絡みであって特許権の問題ではない 卑怯なことは一切せずに作ったオリジナルなものを
突然パクり呼ばわりされるんだぜ?
開発者としてこれ以上の侮辱があるかよ
いつそうなるかの予測もほぼ不可能だし
それで金よこせってまるで強盗かヤクザの集金だろうが >>202
そこまで言うなら自分で先に特許出願でも何でもして防衛しろよ
仮にパクリ呼ばわりされても先願が認められれば拒絶の申し立ても出来るだろ 自分で発明したものを後から特許とられて…って話でなければ
先に出願しとけってのは無茶、というか超時空理論だわな。
「サブマリン特許で攻められるのが嫌なら
何か作る前に全ての特許を調べておけ」という主張には、
「皆がそんな調査をする必要がある社会では何も生み出せないだろう」
という意見を出したいね。 いやいや製品開発では商品企画段階で先行技術調査はやってて当たり前のことだぞ
後で他社から特許侵害の訴えを受けると面倒くさいことになる
というか大手メーカの組み込みソフト技術者は、技術レポート作成や特許出願の年間ノルマが課せられることも多い
例え特許として特許庁に認められなくても出願したという実績さえあれば先行技術として認められる
サブマリン特許といえども既に世の中に公知されている先行技術のあるものに対して実施料を請求することは出来ない
米国はサブマリン特許に見られるように特許を攻撃戦略をとすることが多いが、日本企業の場合は防衛が特許戦略の中心とする傾向が強い 話が脱線気味だけど、特にソフトウェアに限って言えば余程のことがない限りコードの中身そのものが問題になることは少ない
ただし製品の制御方法についてはソフトが問題になることはある
例えば、炊飯器のご飯の炊き方や洗濯機の攪拌方法やエアコンの運転方法など、これらは特許(パテント)の出来損ないのペテントで
そのノウハウはがっちり固められてるし、下手すりゃ権利の侵害問題に発展することもある
ただし繰り返しになるけど、純粋なコードの権利については特許というよりは著作権の方が問題になることが多い そういえばMSもLinuxが特許侵害してるって言ってandroid使ってるスマホメーカーから金受け取ってんだよな。
技術的にはたいしたものではないらしいが。 プログラミングあんま知らんけどコードって著作権あるの?
俺普通に本とかの模写しまくってるんだけど...
もちろん勉学目的で商用してるわけじゃないけど大丈夫だよな...? 特許に必要なのは、新規性と独創性と再現性
技術的に高度でも既に知られているものは特許にはならない
技術的にたいしたものでなくても今まで誰も考えつかなかったものは特許になる
ソフトウェアでも既に知られているアルゴリズムでは特許にならない
全く新しい理論に基づくアルゴリズムを実現すれば特許になる >>210
個人利用の範囲で商用利用しなければ問題ない >>204
そこまで言うならって
俺は何か間違ったことや行き過ぎたことを言っているか? サブマリン特許は公開されてないから、「サブマリン」なんだが
それを誰が調べるの? >>217
それ昔の話
今は出願から一定期間経過したら公開されるし特許の権利期間も出願からの期間となってるからサブマリン特許はほとんどないよ >>219
これはプログラミングの話じゃなくてお前の日本語読解能力の問題。
13-3 の問題文にモロにヒントが書かれてる。 既にある連結リストにはqsortは使えない(これは常人でも考えれば分かる)
後からどうしてもソートしたいならマージソートを使う(これは常人がすぐに思い付くモンじゃないので知らないと出来ない、つまりは考えても無駄) >>210,212
著作権は商用かどうかは無関係。
個人で楽しむなどの目的で例外的に複製が認められるだけ。
もちろん勉強用なら複製は構わない。
それ以上の利用は本に明示してあることもある。 >>221
「だよねぇ」じゃなくて「13-3の3行目ですかねぇ」だろ。 ここで言っているコピーって、書籍に掲載されているロジックをそのまま借用するって事だよね >>219
「以下のプログラムの (1) (2) の部分を作成し」の「(1) (2) の部分」が見つからない >>226
ヒント:exit(1) の「(1)」のところかな?
言いたいことは分かるけど、まぁ…ね。 >>219
というか、これ学校の宿題レポートで先生が作った問題じゃないの?
こんな場でまるまる公開して教えてくれ、って大丈夫なのか。 >>219見てちょっと考えてみたけど、
初回だけ(topが未設定の場合だけ)場合分けで例外的な処理がいるの?
あと、大小で判定して挿入するとき、先頭もしくは末尾だけは例外的な処理がいるの?
かっこよくスマートに書けるやりかた教えて! 連結リストで検索すればお手本は大量に出てくる
この改まった場で今更説明するほどのものでもない >>234
なんも見ずに書いてみたけど(コンパイルもしてないけど)
片方向リストにしたらこんな感じかなあ
見た感じスマートじゃないからたぶん無駄なことしてるんだろうけど
// 打席数、安打数は省略
typedef struct PLAYER_tag PLAYER;
struct PLAYER_tag {
char name[20];
PLAYER *next;
};
int main() {
PLAYER *top; // 先頭の要素
PLAYER *p; // 追加する要素
PLAYER *q; // 現在の要素
PLAYER *z; // 一つ前の要素
(省略)
top = NULL;
while (EOFでない) {
// 1行読み込んで名前(name)、打席数、安打数を取得
(省略)
malloc(p, sizeof(struct PLAYER));
memset(p, 0, sizeof(struct PLAYER));
strcpy(p->name, name);
// topが未設定の場合だけは例外的な処理
if(top == NULL) {
// 先頭に挿入
top = p;
} else {
q = top;
z = NULL;
// リストの先頭から順に走査
while (q != NULL) {
// アルファベット順が大きい要素の直前に挿入
if (strcmp(p->name, q->name) < 0) {
if (z != NULL) z->next = p;
p->next = q;
break;
}
z = q;
q = q->next;
}
// 末尾に挿入するときだけは例外処理
if ((p->next == NULL) && (z != NULL)) z->next = p;
(省略) >>235
先頭に挿入した場合の例外的な処理も必要だった
if (z != NULL) z->next = p;
↓
if (z != NULL) {
z->next = p;
} else {
top = p;
} >>235
>struct PLAYER
PLAYER
の誤りだった とりあえず、実際にはリストとデータは分けた方がいいよね。
あと、リストのtopも実体にしたほうが、いい予感。 割とマジでvolatileって何に使うんだ。。。? >>239
volatile は揮発性のものってことで、読んだ次の瞬間に値が変わっている可能性がある変数に付けとくやつだ。
その変数は実際にはハードウェアによって変化するものに結びついているかも知れないし、他のプロセスや
スレッドによって書き換えられるものかも知れない。とにかくそのプログラムのメインの流れとは無関係に
変化する可能性があるということ。だから読む場合は必ずその変数の内容が読まれるようにコンパイルされる
必要がある。最適化してさっきから変更してないからレジスタに入ってる内容で代用しようみたいなコードに
なってはいけないわけだ。volatile を付けておくとそういう最適化をしなくなる。 >>239
知らないほうが幸せだよ
本当に必要なプロジェクトなら、過去に誰かがよく分からん不具合に何日・何週間も悩まされた末にコーディングルールに追加されてるから >>239
UARTのFIFOレジスタとかに使う。
ハードウェアを直接叩かなければ普通は要らない。 >>235
やっぱアセンブララッパー言語はゴミコードだな setjmp(), longjmp() 使う時も volatile 使わねばならない時がある。
https://www.jpcert.or.jp/sc-rules/c-msc22-c.html
ま、longjmp() 使うこと自体が稀だろうとは思うが。 長いことやってるがsetjump,longjump見たことない。 >>244
マルチスレッドとか使ったことないのか? longjmpはC++の例外のクソさに耐えきれなくなったときに使う >>249
普通は同期用の専用オブジェクト(mutex とか semaphoe とか)を使っておくね、それでいいよね… >>249
そのサンプルコード、ハンドシェークしてるんだが、そもそも普通これしないよな?
並列させたいだけなら、普通はシグナル(sleep/wake up)で同期させる。それの方が軽いはずだし。
スピンロックでハンドシェークって、完全非同期で独立動作してるときだが、
あまり用途は無いと思うんだが。 例えば、スイッチを入れると割り込みが入ってループから抜け出すプログラムとかでループ制御フラグをvolatileにする。 vbaを扱えるようになったんで次にC言語触ってみようと思うんですが、どう勉強してったらいいですか?これ作ればあらかた基礎コードや仕組みが学べるものってあります?
やることによるんだろうけど、例えばテトリス作れば基礎が固まるとか。ネット検索しても今一ピンとこなくて。
おすすめの参考書とかもあれば教えてください。 >>259
せっかくvba憶えたんならマシン語から入ってみては?
https://pf-j.桜.ne.jp/program/tips/vbasm.htm
ちな俺はBASIC->マシン語->Cで憶えたクチで
マシン語が透けて見えるCの特徴をありありと感じながら使えて
多重レベルポインタの**を全く悩まずにすんなり習得できた >>259
コマンドラインで使えるミニツール(dirなど)を真似て作ってみたら?
標準入出力、ファイルアクセス、データ編集の基礎が身につくと思う。 dirはファイルアクセスせんだろ
ファイルシステムに問い合わせをするだけで ディレクトリも一応ファイルと言えばファイルなわけで・・・ openもcloseもせんしデータ構造を理解してseekする必要もない >>259
Small-Cっていう C言語のサブセットがあって、
そのコンパイラを作るって本があったよ。
オレはこれで C言語の基礎を勉強した。
30年くらい前かな?
たぶん絶版で入手困難だと思う。
あと、アンドリュータネンバウム先生のMINIXオペレーティングシステムも勉強になる。
Linuxを作ったリーナストーバルズもアンドリュータネンバウム先生の教え子だったはず。 ディスクの挙動が知りたければ、Read Diagnostic だな 初心者は結城浩先生の
新版C言語プログラミングレッスン-入門編-
あたりで学習しときなyo! >>266
コンパイラつーか構文解析は何年たっても勉強する気が起きないわ
ほんと大変そうなんだもん プログラミング初心者なんだけどコマンドプロンプトとかの知識って必要なん?
一応簡単なバッチファイル作れるレベルまでは来たんだけど バッチファイルが作れるレベルでコマンドプロンプトの知識が必要かどうかがわからんとかあり得るのか... >>271
IDE build に頼らないで make する必要があるのなら
バッチファイルを作れる程度なら十分 >>271
君にとって必要かどうかは君がこれから何をするかによって変わる。 ■ このスレッドは過去ログ倉庫に格納されています