2011年のCプログラミング[終了]


19

何ヶ月も前に、私は主に幅広いOS(Linux、* BSD、HPUX、VMSなど)をサポートするPOP3サーバーを維持しながら、生活のためにCコードをカットしました。

私はCのスキルからさびを取り除き、Cで簡単なFORTHをコーディングすることで言語実装について少し学ぶつもりです。

しかし、2000年以降、Cの世界で物事がどのように変化したのか(またはそうでないのか)疑問に思っています。

  1. comp.lang.c
  2. 可能な限りANSI C(ただし、C99としてのC89はそれほど広くサポートされていません)
  3. gcc -Wall -ansi -pedantic 静的解析ツールの代わりに
  4. Emacs
  5. Ctags
  6. Autoconf + make(およびVMS、HP-UXなどの良さについてはポイント2を参照)

過去11年間C書いている人なら誰でも(もしあれば;-))何が変わったのか教えてもらえますか?

(他のニュース、聖なるがらくた、私はこれを10年以上行ってきました)。



3
まあ、emacsの代わりにviがありますが、私はそこに行きません。誰かがまだcomp.lang.cに投稿していて、難読化されたCコンテストでさえ停滞している場合(www0.us.ioccc.org/main.html)に驚かされるでしょう。悲しい時-次の新しいコンテストは、テキストメッセージフレーズを綴る難読化された文字列です。
ジェイエルストン

回答:


10

「わあ、10年前のCプログラミングはどうだった?」のように時間を振り返るのは本当に難しいですが、私が違うことをしていることを知っていることについて話すことができます。

  • comp.lang.cでPeter Seebachのような人を呼び出して、言語関連であると思われる特に間抜けなバグの助けを求めることができますが、ほとんどの場合、Cプログラミングのすべての質問はStack Overflowで例外的な回答を得ます。

  • 静的解析は、依然として苦痛の種です。Splint(少なくとも私の知る限り)はC99をあまりうまく処理していません。カバレッジグラフはまだ視覚化するのが少し面倒です。GCCの警告はかなり「改善」されています(引用符で囲まれているのは、尋ねる人によって異なるためです)。

  • Valgrindは、すべてのメモリエラーチェッカーの聖人であり、通常、静的解析ツールが見つけることができない/見つけることができないコードの問題を指摘します。100%完全ではありませんが、そうなるとは思いません。最近、私はGDBに触れる必要はほとんどありません。Valgrind massifツールは、非常に優れたヒーププロファイラーでもあります。

  • GCCには常に新しい拡張機能があり、その一部は微妙なため、移植性が大きな懸念事項である場合は-pedanticをお勧めします。初心者/さびたプログラマーにとって、拡張機能を「隠された」言語機能と混同することは簡単です。

  • CCANが登場し(CPANを考えるが、Cの場合)、離陸し始めています。すばらしいテストツールであるTAPの適応など、多くの便利な宝石があります。Cの文字列はいまだにひどいですが、それらに対処するためのライブラリの数と質は、過去10年間で確実に向上しています。

  • SConsとCMakeは、ビルド構成の人気が高まっています。Autoconf / Automake / Libtoolは今でも広く使用されていますが、多くの人はM4によって少し制限されていると感じています。それでも、それが使用したいシステムであれば、Autoconfマクロアーカイブはまだ健在です。

  • 明らかに今日より多くのエディターが利用可能です。Cで作業するときに邪魔にならない「IDE」をまだ見つけていませんが、それはおそらく、私が古くてかわいらしい、散らかったサンカ飲酒伝道者だからでしょう。

全体的には、しかし、私は(Cに関する限り)人生が10年前とは大きく異なることさえないとは思いません。しかし、多くの点で、実際には少し簡単です。ただし、経験よりもツールに起因すると考えるのは困難です。


15

glibは「新しい標準ライブラリ」かもしれません。プラットフォームに依存しないスレッド化とネットワーキング、コンテナデータ構造など、多くの標準から除外されていると感じるものの多くを提供します。


GNU Cライブラリ(GLibC)と混同していると思います
-Lekensteyn

7
いいえ、私は混乱していません。
zvrba

1
これは完全に有効な答えです。なぜ投票されたのか分かりません。glibは、Ulrich Drepperに不満を抱いている多くの人と、glibcがいかに「守られている」かから生まれました。
ティムポスト

1
ただし、GlibはGNOMEから完全に分離されました。私は関連性については議論していませんが、実際にはGNOMEやGTK +さえも完全に無視できるというだけです。(たくさんの?)コマンドラインとそれに書かれた非インタラクティブなプログラムがあります。
はっきりと

3
私はglibを「CのSTL」と呼ぶのが好きです
-Cercerilla

4
  1. StackOverflow ;)
  2. 私は主にマイクロチップのマイクロコントローラーのファームウェアを書くためにCを使用し、コンパイラーはGCCベースであるためC99を使用します(ただし、余分な機能については気にしません。主にスタック上のループ変数と動的配列のスコープを制限するためです)。Python拡張機能を作成するとき、誰かがMSVCでコンパイルする必要がある場合に備えて、C89に固執しています。他の人が何を使っているのか分かりません。
  3. スプリント(C89上の作品ではなく、C99)、およびクランの静的アナライザ -それらの両方がマクロ重いファームウェアコードにチョークするので、私が持っていない、が、大規模な彼らの経験の量を。実際、LLVMのものの多くはCオタクにとってかなり興味深いものです。
  4. さて、これは単なる神聖な戦争の餌です:P
  5. Ctagsを使用したことはありませんが、私はDoxygenに不満です。
  6. 私はAutoconfが嫌いです。嫌いです。Autoconfの泥の玉をゼロから作成することはできませんでした。プロジェクトにすでにあるものがある場合、私は既にそこにあるものを何でもやるだけになります。私が何か新しいことを書いている場合、私はり、絶賛し、代わりを探します。前回このサイクルを経験したとき、SConsに落ち着きました。

1
また、静的解析のためのCppcheckもお勧めします。
グレッグヒューギル

10
ポイント番号6に関して:「先日「Die Gnu Autotools」と呼ばれる本を見ましたが、「Heck Yeah!」と考えていました。タイトルがドイツ語であることに気付くまで」。
セルセリラ

2

2)および3)が変更されました。C99が主流であり、C90はますます時代遅れになっています。gcc -Wall -std=c99 -pedantic

それとは別に、他の回答でまだ取り上げられていない最も注目すべき2つの変更は次のとおりです。

  • C11。ISO 9899:2011。
  • MISRA-C:2004。

1

Cプログラミング言語は、最新の研究/調査でドブ博士のジャーナルでトップ2または3のプログラミング言語になりました。

言語の実装に関しては、Cを使用して、Go(golang.org)と呼ばれるGoogleで構築されている新しい言語を実装します。

私は近年、Cのusenetグループをフォローしていません。Freenode IRCチャンネルに頻繁にアクセスします。活発で多くの人が頻繁に訪れます。

新しいプログラムはCで作成されていますが、今年がたとえば1999年になった場合に得られるような宣伝はありません。

これらは心の頂点に来るものです。さらに多くの可能性がありますが、プログラマーの帽子と連絡を取り合ってほしいと思いますが、帽子のCモデルを頻繁に使用したことはないかもしれません:)


0

C99のサポートは、あなたが思うよりも優れていると思います。Visual Studioはそれをサポートしていませんが、私が考えることができる他のすべてのコンパイラがサポートしています(おそらく、いくつかの省略があります)。あなたがVSとの互換性を必要としないなら、私はC99と一緒に行くと言うでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.