ここから本文です

C言語が好きなんですけど、C言語で楽しめる事なんか無いですか?好きな理由は論理...

sno********さん

2018/1/1313:39:06

C言語が好きなんですけど、C言語で楽しめる事なんか無いですか?好きな理由は論理構造を追求して楽しめるからです。他の言語は言語仕様が緩いイメージがあったり、抽象化した機能がいっぱいあったりしてあまり好きで

はありません。逆にソフトウェアより低い次元のハードウェアもあまり好きではありません。だからOSや組み込みにも興味がありません。自分は何かを作るよりプログラミングそのものが好きなタイプです。あくまで頭を使って論理構築する行為すなわちプログラミングそのものが好きなだけです。だから、抽象化された高度な機能を使うのは自分の能力が発揮出来ず嫌なんです。何かご存知であれば教えていただけないでしょうか。

閲覧数:
556
回答数:
5

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

man********さん

2018/1/1319:03:33

snow47260さん
C言語ならではの、”論理的”な追求が居るような、御題が欲しいというのですね。
では、”技術分野が全く異なる”御題を3題 紹介しましょう。

>あくまで頭を使って論理構築する行為すなわちプログラミングそのものが好きなだけです

何れの御題も、カレコレ2年近く、知恵袋に回答を出す程度のナンチャッテC言語プログラマには、正解者が出てきていないプログラムです。

(1) 「ラック&ギア」
「C言語は”基礎”から学べて良い」という人が多かったので、
「では、自動車も運転できるプログラマなら、歯車の動作原理も”基礎”から学んでいて、下記の歯車が回る絵を描くプログラムを修正できるよね?!」と、何度か挑発しているが、一向に正解プログラムが動いている様子を披露してくれた人が出てこない。

http://www.playmycode.com/play/game/manygods800/gear-rack-and-pinio...

このプログラムを修正するには、「歯車が滑らかに摺りあって動き続ける」という状態はドウ在るべきか?」という、歯車の動作原理も”基礎”とか、その前提の数学的知識だけではなくて、浮動小数点数の計算誤差の蓄積を避けるテクニックとか、結構な知識が要るものです。

最近、このように、”基礎”から学んでいない、ナンチャッテC言語プログラマが増えている様子から、「C言語系の古い言語は伸び悩むような凸凹仕様になっている。 だから、初学者には、モウ、C言語なんか使わないで、Ruby言語とか、モダンナ言語で、サックっとプログラムを作る方向に転換すれば~~」と言っています。

さて、C言語が好きだという方は、「己の信念の正当性を主張する気概」はあるのだろうか? そして”気概”の大きさを示すべく、この「ラック&ギア」位、サクッと修正して、「『C#リモート操作事件みたいに、悪因コードを送り込もうとしているのでは?』という懸念を抱かせない手段で、動いているプログラムを披露してくれるでしょうか?

(2) 究極の”高速ソート”;
下記のリンク先のソート処理よりも高速なソート処理を作ろうとすると、「頭ダケで考える」のでは無くて、「プログラムでソースコードを生成しなければ」という領域に達することができるでしょう。

・「『cmovというマシン命令の並列動作を活かした高速処理』を
スタッフが備していて、ソレより早いソーティング処理を作れ」という御題。
このプログラムは、生徒側が「ティーチング・スタッフが作った正解の自動判定機能を騙す」というプログラムを作っても、騙されないようにした工夫も入っています。
https://ideone.com/qOfaeu

・要素数を6個に固定した高速ソートルーチン;
https://ideone.com/WbpGxF

・5列のアミダクジを描くプログラム;
https://ideone.com/ErCJqD
上述の高速ソート処理を自動生成できるようなログラムを考え始めれば、どの経過でアミダクジを描くプログラムも考え出すでしょう。

(3) C言語の文法理解度を試すパズル;

☆「a*b*c; に括弧を入れたパターンの内、有効な宣言文と、それ以外(代入文や式等)として多重に解釈できるパターンを、出来るだけ沢山列挙してみてください」

例えば、
「"a(*b)[*c];"というパターンは、”double (*g)[*q]; ”という宣言にマッチしつつ、”strValFunc(*q)[*r];”という式にもマッチする。」
これで、1パターン、列挙です。
他にも4例の実行結果は、「https://ideone.com/j2vf1n」に示しています。

これも、C言語の文法に関する”基礎的”な論文を参考にしたパズルです。
・Expressing C-Language Syntax in Higher-Order Grammar
www.kmonos.net/pub/Presen/HiC.pptx
「Cの文法は文脈自由ではないと言われる.
C言語の文法定義を、yacc&lex以来BNF(バッカス・ナウア記法)の拡張構文定義で頑張るも、結局最後はC++。
なぜ揃いも揃ってチューリング完全な言語を使うのか。根性が足りない。」
とか、この問題の難しさの本質まで”論理的”に理解できる人は、中々、智恵袋には出てきていない。

  • man********さん

    2018/1/1321:41:04

    御題の難易度を強調し過ぎで、怖気づいたかもしれない。
    動機付けを 補足しておこう。
    コレらを「面白い」と感じることができるのが、C言語の使い手と言えるでしょう。

    御題(3)は、「C原語の文法の理解度」を試す御題だが、これが解けないということは、「Cコンパイラが出すエラーメッセージの意味を正確に理解して、1発でできるかどうか怪しい」。
    もし判らないなら、下記の文法書を読み直すべき。
    ・ANSI C ANTLR v3 grammar
    http://www.antlr3.org/grammar/1153358328744/C.g

    ・C Preprocessor
    http://www.antlr3.org/grammar/1166665121622/Cpp.tar

    御題(2) は、「C言語ならでは」の問題で、他の言語では、このような究極的な”高速性”は、追求できない。

    御題(1)は、「小学生でも、その作りかけのプログラムの動きを見れば、『誤っている』ことまでは判る。 それを修正できないのは何故か?」を問う御題。

    これらを解ける人、今度こそ出てくるかな?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

bas********さん

2018/1/1710:34:57

私も若干似ています。

私もC言語やC++が好きです。

理由1: 簡単に使えること ( as the user )

C#だと .NET Framework っていうのをインストールしないといけないし、javaなら Java ...とか。

ですが、CやC++なら DLLを使うようなソフトじゃないなら 実行ファイル一個あればいいし。

理由2: 理論追求? が可能

私は数字見ただけで発狂しそうですが、考えたりとかは好きなほうなので、C言語では「データ構造とアルゴリズム」を体感しやすいので楽しい。

理由3: やろうと思えばソフトでもゲームでも組み込みでも可能らしいこと

ソフトしかやっていませんが、いろんな範囲が可能らしい。

よってC言語やC++が好き。

で、質問者さんにお勧めしたいのが、

「作りたいものを作る」です。

( あくまで私の考えです。責任はとれませんので。 )

私のBlogですが。

http://blog.livedoor.jp/crackstars/archives/1734049.html

ほかの方法では、

ライブラリを自分で組むのもありかも。

チョーがつくほど簡単な例だとprintfの引数がめんどくさいですよね。

なので、

void Print( const char *msg ){
____printf( "%s", msg );
}

みたいにして使いやすくする感じ。

これを外部 ( 他のプログラマ向けに ) 公開するとか。

後は、アルゴリズムをもっと面白く説明するサイトを作るとか。

他には、「新しく言語を作る」とかもアリかも。

例えば、

https://web-camp.io/magazine/archives/4954

の「C言語が使われているもの」の項目を見ると、

Ruby, PHP などが内部でCが使われているようです。

そういう風に新しい言語を開発するのはいかがでしょうか?

後はC言語で 新しいアルゴリズムを生み出すとか。

( これは今あるすべてのアルゴリズムを理解していないといけませんが。 )

zz8********さん

2018/1/1521:10:50

ライフゲームで計算機を作ってみては?
ごく単純なルールを組み合わせ、理詰めの果てにコンピュータを実現します。
プログラミングによって、プログラミング可能なコンピュータを作るのは、あなたのような人にとっては相当楽しい事ではないかと思います。

プロフィール画像

カテゴリマスター

qui********さん

2018/1/1317:42:12

> C言語で楽しめる事なんか無いですか?
1. C言語で、楽しめることは なにかありますか、ありませんか?
2. C言語では、楽しめることなんて無いですよね、そうですよね?

論理構造を追求して楽しむ人が、自分が書いた文章に曖昧さがあるのを許しちゃいけないな。

好き嫌いの話はそれこそ好きにやってくれ、と思うけれど。

> 抽象化された高度な機能を使うのは自分の能力が発揮出来ず嫌
もしかして、そこそこ以上のプログラムを組んだことがないのでは? 小さな/単純な命令を集めていって段々抽象度を上げていって複雑な仕事をこなすようにするのがプログラミングだと思うのだけれど。となれば、小さな命令を集めていくことに労力を費やして内でより最初から抽象度の高い部品を使えばより高みに到達出来る...んじゃない?
もちろん、趣味としてならなんでもありだけど。

> 何かご存知であれば教えて
さて、一体どういう回答を期待してるのでしょう。質問全体を通しての論が見えない。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

tre********さん

2018/1/1317:13:03

知恵袋で回答するとか…

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる