c言語教えてくれ (20レス)
c言語教えてくれ http://mevius.5ch.net/test/read.cgi/tech/1728823763/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
12: デフォルトの名無しさん [sage] 2025/05/24(土) 20:48:34.19 ID:aQkh9jD4 >>10 はい来ました。 他スレから参戦の方は https://mevius.5ch.net/test/read.cgi/tech/1663659983/947- 参照。 ということは、C言語学んで、あわよくばonigurumaのコードを自分で書き直しての正面突破狙いか? まあこのノリは俺は好き。(ゴネて何もしない奴等が多すぎるので) ただ、ポテンシャルは認めるが、onigurumaで上手く行ったのはかなり運が良かったのも事実なので、そのつもりで。 とはいえ、あっさり行ってしまうかもしれないが。 (俺はここ10年ほど本屋に行ってないので情報はどうしようもなく古いが) > おすすめのC言語本 これについては色々問題があるのだけど、結局の所は「K&R」のみ、となる。(ただし大学のHPでも可、後述) https://ja.wikipedia.org/wiki/プログラミング言語C 第三版が出ると聞いた気はするが…。 おそらく世界一有名なプログラミング本で、名著との評価も高い。 ただし、前書きにあるとおり、「他言語で既にプログラミング出来る人が、C言語だとどう書くかを学ぶ用」なので、 プログラミングの初心者がこの本を読んでも、全く機能しない。 なお90年代前半はC言語のシェアは92%(その当時のC++は今はCに分類されるレベルなので足していい) https://youtu.be/ZTPrbAKmcdo これは現在のPython/JS/Java/C#/TS/PHPを足したよりも多いので、 90年代にプログラミングを学んだ連中は、得意/不得意/好き/嫌いはあるにせよ、全員、C言語をある程度使えるし、 この本を知ってるし、ほぼ持ってる。(今なら中古で大量に出てるかもだが、それで十分) 大学の研究室や教授、高校ならパソコン倶楽部やその顧問なら、必ず持ってるから、借りてもいい。 http://mevius.5ch.net/test/read.cgi/tech/1728823763/12
13: デフォルトの名無しさん [sage] 2025/05/24(土) 20:49:02.37 ID:aQkh9jD4 しかし同時に、怨嗟の声もだいぶある。 前述の通り、最低要求レベルが「既に他言語で自分がやりたい事は何であれ一通り出来る」程度なのに、 Java以前はCしかなかったので、何も知らない初心者にこの本で学ばせるという無茶振りがされ、この時点で半分ほどは撃沈してた。 そして「ポインタ」でさらに半分は撃沈するので、最終生存者が1〜2割程度という状況だった。 多分、高校の物理を1年次に文理分けず全員必修の場合、 (余程の上位校でない限り、文系を選ぶ人達=)半分超が撃沈してた状況に近い。 勿論、(高校物理を突破した)理系連中だけに大学でプログラミングをやらせてたわけだが、それでもそうなってた。 今でも「三角関数なんて人生デハー」「方程式ナンテー」なんてのも偶に居るが、 (最近では橋下と出川、てか橋下は毎回言ってるので完全にトラウマで根に持ってるんだろう) それ以上に酷かったので、この本の言われ様も酷くもなる。 とはいえ、要求レベルを満たしてる人には機能するし、逆に、これ以外のCの本は全てゴミで読む価値はない。 これは資本主義の悪いところが出ている。 つまり、「売れる本」しか出版されないので、書く側は人数が多い、いわゆるボリュームゾーンを狙う事になる。 何であれ、人数は初心者>>>上級者なので、どうしても「初心者向け」の本ばかりになる。 しかもCの場合は「ポインタ」で半分撃沈するので、Cの本はほぼ「初心者向けのポインタ解説」ばかりで、読む価値がない。 (10年前の話だが、これは構造的な問題なので、今も変わってないと思う) 「ポインタ」は引っかかる人は割と永久に進めないのだが、 引っかからない人はすんなり、一読で突破してしまう。 何が違うのかは俺には分からんし、確実な突破方法もない。 (高校物理/数学で挫折した連中に対し、教えて確実に救済する方法が無いのと同様) http://mevius.5ch.net/test/read.cgi/tech/1728823763/13
14: デフォルトの名無しさん [sage] 2025/05/24(土) 20:49:53.31 ID:aQkh9jD4 ただしK&Rはペラペラで、内容は薄い。(頑張れば1週間で普通に読める程度) しかし、C言語の全てがそこに詰まっている。つまり、C言語も実はペラペラで薄い。 そしてここまで説明した事は、今の大学の教授/准教連中は当然知ってて、おそらくそれなりに考えて対策もしてる。 だから今なら、 1. まずPython等で、プログラミングが一通り出来るようになっておき、 2. どうしても本がよければK&R、 何でもよければ各大学のCS向けの「C言語講座」の講義内容がHPに上がってるだろうからそれで学び、 (10年ほど前は長崎大、数年前は東工大がいいと思ったが、今どこがいいかは知らん、が、まあどこでも似たようなものだし、問題ない) 3. ポインタで引っかかった場合は、C言語を書くのは諦める 4. 問題なく突破出来た場合、 4a. 下敷きとしてCを学びたいだけなら、めでたしめでたしで終わり 4b. onigurumaを書き換える気なら、さらに「C流のプログラミング」を学ぶ となる。 ただ4b.の場合はさらに問題があって、「C流のプログラミング」を学ぶ為の文献が、はっきり言って何もない。 これは前述の通り、資本主義の悪いところ、つまり精々1〜2割向けの人に書く人が誰も居ないし、居ても食えずに死んでるから。 ただC流のコードというのは厳然とあって、OSSのCソース見ればほぼ全員が守ってるイディオムが普通にある。 (これらを親切に纏めてくれてる本がない、というだけ) だからこの辺は実地でやるしかなく、君の場合はonigurumaにそのまま突撃するのも一つの手だとは思う。 (まあonigurumaがどのレベルのコードか分からんが…。 PHPの方は多分関わってる人も多いのでほぼ確実にC流ソースコードになってる事を期待出来るが。 GNUも割とボロクソ言われるけど、ソースコードはまあ妥当だとは思う。 《というか40年保守されてきてるので当たり前だが、読めないコードは淘汰済み》) http://mevius.5ch.net/test/read.cgi/tech/1728823763/14
15: デフォルトの名無しさん [sage] 2025/05/24(土) 20:51:02.59 ID:aQkh9jD4 >>11 断然IDE。初歩の理解にはブレークポイント/ステップ実行が使えるのは重要。 (90年代はIDEは有料だった事もあって初心者《=for/while/if等の動作もおぼつかない人》 にもprintfデバッグ強制だったから死人続出してた、というのはある) ただ、Pythonでこの辺既に知ってたらあまり関係ないだろうし、 結局の所、各大学の講座の丸パクでいい。 つまり、今の君の知識状況に似てる大学のCS講座を探してその環境を丸ごと真似る。 初心者にはどのIDE/環境が良いか、なんて考えてるのは講座持ってる連中くらいだし。 (この意味では各大学の講座が教科書指定してる本もそれなりに使えるはずだが) また、どの程度Cに深入りするかも丸パクでいい。 教授連中は一応「現代の学生向け最適ルート」をそれぞれ提供してるはずなので。 (多分Python->C->各種言語、となってるはず。Cを書く気がなければ同程度のC理解でいい) K&R+テキストエディタ+printfデバッグは古の方法であって、 無理ではないが、今ならもっとマシな方法もあるはずで、 それは各大学で教授連中がそれなりに考えてるだろうから、有り難く便乗させて貰えばいい。 (ただ古の方法でも悪くもない。 どのみち正規表現みたいな死ぬほどループするものをIDEのステップ実行でデバッグするのは不可能なので、 printfデバッグは出来ないと話にならないし、実際、結局の所一番役立つ方法でもあるので。 だからPython等でIDEで何が出来るのか知ってて、特に魅力も感じてないのなら、IDE無しでも問題ない) http://mevius.5ch.net/test/read.cgi/tech/1728823763/15
16: デフォルトの名無しさん [sage] 2025/05/24(土) 20:51:36.15 ID:aQkh9jD4 質問は>>9で多分行ける。回答してもらえるかは不明だが、聞くのは自由だ。 俺自身は「自分で」やる事には興味あるが、「他人に」教える事は全く興味ないので、 正直、初心者レベルの質問されてもウザイだけなので無視する。 (その他俺にとってはどうでもいい事も。 無限に馬鹿と初心者が沸くネットで全部構っててもキリがないので。 最初から言ってるように、俺はソースコードを読むダシに君を使っただけ。だから感謝して貰う必要もない。 俺の場合は「この仕様/機能の為にこのコード構成/戦略は妥当なのか?」を読むので、仕様知らないとどうにもならない) 連中も同じかもしれんが、少なくとも俺より断然Cの規格/文法周りには詳しいし、 暇人してたり、何かしら琴線に引っかかれば質問者そっちのけで議論開始するだろうし、見てれば参考にはなる。 ただ、Cは、知らない人が使えるようには出来てない。 地雷も落とし穴もそのまま放置されてる。 だから「どんなコードでも何とかなる」事は絶対にないのだが、 現実的な言語なので、「こう書けば済む」という方策は必ずあり、 グダグダ言わずにその方法でやってれば大体問題は回避出来る。(と最近は思ってる。 多分、「俺の好きなように書かせろ!!!」タイプが地雷を踏みまくるのであって、 「多少格好悪いがこう書け、と言われた通りに書く」タイプなら割と行けるはず) http://mevius.5ch.net/test/read.cgi/tech/1728823763/16
17: デフォルトの名無しさん [sage] 2025/05/24(土) 20:52:30.30 ID:aQkh9jD4 あともし、onigurumaを引き継ぐ気なら、開発順は、 1. 仕様を可能な限り厳密に確定させる 2. リファレンス実装を作る(遅くていいので自由度の高い設計を採用し、完全に仕様を満たす物を作る) 3. onigurumaの動作を確認し、仕様を満たせてない部分を確認する 4. onigurumaの改変で仕様を満たせるかを検討する 5. 改変で行けるならそれで、駄目なら大幅交換か、リファレンス実装高速化で対応するかを考える が正しい順となる。結果的に最終局面はアジャイルになるだろうが、最初からウォーターフォールを捨てるのは間違ってる。 分かってるとは思うが、コードは、 書く < 読む < 変更する(仕様追加する) < 削除する (同じ動作で冗長なコードを除く) の順で難しくなるので、「最初に言っておいてくれれば…」はよくある話。 出来るだけこれを防ぐ為に、仕様は可能な限り早く厳密に確定させないと駄目。 今現在、各者で見解が異なってる部分もあるだろうから、仕様を詰めきってから実装にかからないと、どうせ改修する事になる。 実装能力に不安がある奴はすぐにでも実装したがるものだが、却下して仕様を詰め切らないと駄目だ。 (ただ会社とは違い、OSSの場合は期限がなく、人も集まらないので、じっくりと仕様を詰めきる事は出来るはず) その後、リファレンス実装と等価な動作をすることを確認しながら開発していく。 onigurumaを止めてしまったのは、kkos氏の実装能力の問題ではなく、 おそらくonigurumaの構造の問題で、「高速だが自由度が少ない」実装を選択してる結果、 unicodeの(プログラミング論的には)デタラメな仕様に対応出来なくなった、或いは対応の手間が膨大に増えたからだ。 だからonigurumaと同じ戦略(≒速度重視)で開発を始めると、同じ轍を踏む事になる。 サロゲートペアとかかなりちゃぶ台返しなので、ここら辺も踏まえた上で対応出来る構造にしておかないと、最終的に詰む。 だから、初段階で、『遅くてもいいから』仕様を満たせる構造にしておく事が肝要。 高速化は実は割と何とかなるものなので。 http://mevius.5ch.net/test/read.cgi/tech/1728823763/17
18: デフォルトの名無しさん [sage] 2025/05/24(土) 20:53:12.58 ID:aQkh9jD4 だから、ongurumaを引き継ぐ気なら、1. は今すぐ初めてもいいし、 (可能かは知らんが)GitHubのonogurumaのリポジトリ上でこれまで同様、仕様について議論し続けてもいい。 2. については、勿論Cの方がいいが、クソ遅くても動くことが重要なので、Pythonでもいい。 主たる目的は「この構造で仕様を満たせるかを確認する事」であり、動作速度ではないので。 4. 以降はCを読み書き出来ないと話にならないが、1.2.3.もかなり時間はかかるので、並行するのはあり。 てな感じ。まあ頑張ってちょ。 http://mevius.5ch.net/test/read.cgi/tech/1728823763/18
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.467s*