パスワードを忘れた? アカウント作成
11810345 story
プログラミング

2014年現在、C言語の意義はどれぐらいある? 72

ストーリー by hylom
コンピュータの仕組みを知る上でも知っておいて損はないが 部門より
headless 曰く、

本家/.「How Relevant is C in 2014?」より。

1972年にC言語が作られて以降、数多くのプログラミング言語が生まれ、消えていった。Cプログラマーを対象にした求職情報の件数は突出しているとはいえず、RedditのCコミュニティーのユーザー数はC++の半分程度にとどまっているものの、C言語は2014年のTIOBE Indexですべて1位を獲得するなど、現在も高い人気を保っている。

David Bolton氏によれば、リビジョンの古いC言語を新しいCコンパイラーがサポートしている点、C言語で書かれた多くのソフトウェアが現在も使われており、インターネットの基盤にもなっている点、学習が容易な点など、複数の要素によりC言語が21世紀の現在も大きな意義を持ち続けているのだという。

「C言語を知ることで、C++やObjective-C、Perl、Python、Java、PHP、C#、D、Goといった、Cから派生したブロックの書式を持つ高度なプログラミング言語を容易に理解できるようになる」とのこと。皆さんはどう思われるだろうか。

  • by otterb (41547) on 2014年12月10日 20時33分 (#2725877) 日記
    解説。Cは2014も役に立ちますか?と聞かれてスペイン語でYes!って答えている。Cだけに発音がシー。本家より。
  • by Anonymous Coward on 2014年12月10日 18時58分 (#2725796)

    ではまだまだ現役だと思うけど
    ミドルウェアとかドライバとか・・・

    レジスタを直接叩くとか他言語(javaとかPHP)で出来るのかな?

    • by guicho2.71828 (38877) on 2014年12月10日 22時33分 (#2725956)

      できるか出来ないかで言うと、
      Common Lisp は アセンブリを書けますし ( http://g000001.cddddr.org/2011-12-08 [cddddr.org] )
      Java Bytecode 上の黒魔術はVMでアセンブリを書くようなものです。 ( https://github.com/brettwooldridge/HikariCP/wiki/Down-the-Rabbit-Hole [github.com] )

      C はやはりOSとのインターフェースを弄るのに時々必要です。
      資産が大きすぎますので、どうしても自分で描き直したい時を除き、Lisperは結構 libffi からC関数を叩きます。
      C++は中途半端なので使いませんが、最近は Clasp というものが出てきました。 http://www.infoworld.com/article/2687997/application-development/clasp... [infoworld.com]

      布教終了。

      --
      新人。プログラマレベルをポケモンで言うと、コラッタぐらい
    • by Anonymous Coward

      OSがCだもんね。あと、Cが使えないC++プログラマがいるのかいなと

      • by Anonymous Coward

        STL/boostを使うという風に徹底すれば、生ポインタとか生メモリとかは見なくても済みますよね。
        OSのフレームワークとか使おうと思うと、ポインタと無縁ではいられませんが・・・。

      • by Anonymous Coward

        Cが使えるC++プログラマってすごく減った気がするけど

    • by Anonymous Coward

      システム記述用を目的の1つとして作られてて、設計がよく合致できてるよね
      自身のランタイムや多言語のグルーとしても使われるあたりで証明になってるんじゃないかな
      他の言語を学ぶ時の橋渡しになるかは知らんけど、
      このハード叩くだとかのシステム分野ではずっと残るのじゃないかな

    • 高級アセンブラとしてのCの立場は、プロセッサが高級言語をバイナリ実行するようにならない限りなくならないのでは?

      巷のアプリで高級言語使えるのは環境としてのソフト(OS・ライブラリ)ががんばっているからでしょ。

      プロセッサが高級バイナリを実行できるようになるか、環境を新たに作る必要がなくなるまでは生き延びるよね?

    • by Anonymous Coward

      組込制御するのにオブジェクト指向とか無くてかまわないし
      規格がキッチリ定まってて過去の資産があるから科学技術計算のFORTRANと同じでいつまでたっても死なないよ
      古い時代の「効率重視」の言語だから今のトレンドにそぐわないところは多々あるが非力なプロセッサで使うには文句言ってられん

  • by Anonymous Coward on 2014年12月10日 19時07分 (#2725801)

    C言語しか出来ないSIerもいるんですよ!

    • by Anonymous Coward

      (^^;

    • by Anonymous Coward

      ネタコメなのかもしれないけど、
      Cのポインタやら構造体やらを理解して使いこなせるなら
      オブジェクトの概念なんて簡単に理解できると思うんだけど。。。
      本当にその人はC言語出来てるの?

      • 概念は理解できても、使いこなせない人は多いよ。
        どう見てもCの関数のようなクラスを作る人とか
        オブジェクトにせず配列で添え字をポインタのように使う人とか
        一応動くんだけど、全然オブジェクティブじゃない頭の人。

        • by guicho2.71828 (38877) on 2014年12月10日 22時38分 (#2725962)

          それは、オブジェクティブでないのではなく、
          オブジェクティブだがその言語のオブジェクト機能を使っていないだけですよ。

          オブジェクトの概念さえあれば、たとえCからstructがなくたってオブジェクト思考プログラミングは可能です。
          コンピューターがメモリのアドレスを元にして動いている限り、結局、structなんて配列の糖衣構文。
          もちろん迷惑なことに変わりはありませんが、その人がオブジェクト指向を理解していないわけではありません。
          ただたんに、言語の機能と頭の中のイメージが繋がっていないだけ、使い方を知らないだけです。

          --
          新人。プログラマレベルをポケモンで言うと、コラッタぐらい
      • by Anonymous Coward

        これ [wikibooks.org] を読むと、ポインタやら構造体やらを理解したところで、使いこなせるとは思えん。

        • by Anonymous Coward

          ???
          日本語の言語仕様知らなくたって使えてるでしょ。
          目的が達成できれば使いこなせていると思うが
          回りくどいと言われようがきたないと言われようが

    • by Anonymous Coward

      Cしか出来ないと言う人こそ、オブジェクトの概念は理解しているように見える。

  • by Anonymous Coward on 2014年12月10日 19時12分 (#2725806)

    数値計算プログラムのユーザーサブルーチンが
    C言語のみ対応とか、Fortranのみ対応とかもある。

    思想さえしっかりしていれば近代的なコード風に書くことできるでしょ?
    と指摘されれば否定できないが、コンパイラサポートがあった方が
    エラーチェックができて助かる。

    • by Anonymous Coward

      PythonやJavaがいくら速くなったといっても、やっぱりまだFORTRANやCでカリカリチューニングした方が速いし…。
      んでも、最近はPythonに浮気中。
      「馬車馬ルーチンはそのうちCに書き換えるぜ!」と思いながらも、「書き換えてチューニングする時間×時給換算した私の給料よりも、新しい計算機買ったほうが安い…」となってとん挫する。

      • by Anonymous Coward

        ランタイム上で動く言語の場合、新しいランタイムが入った新しい環境にバイナリを持って行くだけで化けることがあるからなあ(コードの修正、リコンパイル無しに)。
        いずれほとんどの場所では言語の速度など考えなくなるだろうし、そうなったらなおのこと、楽な方に流れる。

        亜流言語を学び易くなるというのも、どうなのかな。
        ポインタで挫折する人も結構見た。
        適正ない人は早く離脱して欲しいし、Javaしか知らない人は大抵理解度が…という思いはあるけど。

        #最近C使う案件が来なくて、JavaやawkやperlばかりのC大好き人間。

  • by Anonymous Coward on 2014年12月10日 19時22分 (#2725811)

    基本的にプログラミング言語はプログラマーからみた振る舞いは定義しても、コンピュータでどう実装されるかまでは定義しない。

    GCとかポリモーフィズムに必要な型情報は基本的にコンパイル時or実行時一回きりの使い捨てで再利用できるようになってない。
    Cも定義はされていないが、ハードに近いおかげで関数も構造体もアーキテクチャが同じなら大抵同じ構成になるから、OSやライブラリはCで実装するのが無難。

  • by Anonymous Coward on 2014年12月10日 19時25分 (#2725816)

    とりあえず、libcやglibc、CRTやMSVCRTを全削除すればええんやで(ニッコリ
    そしてCライブラリの無くなったその不毛な大地で、高度なプログラミング言語(笑)とやらを好きなだけ使えばええんや。

    # Cライブラリ無くして動作する、高度なプログラミング言語(笑)とやらがどれだけあるのか見物だwww

    • by Anonymous Coward

      Delphiとか?

      • by Anonymous Coward

        デルファイも演算子とかはC/C++で定義されていますよ

    • by Anonymous Coward

      ぴゅう太

    • by Anonymous Coward

      つ Go

      • by Anonymous Coward

        生成物はそうだけどGoコンパイラ自体はlibcが必要ですぜ

    • by Anonymous Coward

      本家の問いかけ方と違っちゃってるから。向こうは(あんたの日常や仕事に)どれだけCが関わってる?って聞いてると思う。
      直接関わってなくても重要な一部となってて意義があるということは当然ありうるんで。
      あ、あなたがおかしいと言ってるのじゃないよ。意義と言われたらそう答えて何もおかしくない。

      質問内容変えたいなら、丸ごと本家コメント引用で済ませないで何か書いて欲しいよと思いました。

    • by Anonymous Coward

      いや、ランタイムやライブラリなんてどうにでもなって、逆言うと過去の互換のためにそれらは残ってるだけ。
      一番悪臭を放ってる部分。

  • by Anonymous Coward on 2014年12月10日 19時59分 (#2725842)

    そういうのあれば、C言語が必要な場面、
    もう少し減るのでは???

  • by Anonymous Coward on 2014年12月10日 20時04分 (#2725846)

    といいつつ、最近arduino IDE使う羽目になった(´・ω・`)

    • by Anonymous Coward

      「といいつつ」が、いまいち結びつかない。

  • by Anonymous Coward on 2014年12月10日 20時05分 (#2725849)

    Perl, Python, JavaはALGOLの子孫じゃないの?
    Cは高級アセンブラだと思ってた
    Objective-CはSmalltalkの要素を取り入れたCか

  • by Anonymous Coward on 2014年12月10日 20時11分 (#2725857)

    C言語ができるから、見た目が似ているJavaやC#ができるつもりだとかぬかしているプログラマーは、
    全員死んでしまえ。

    人類に害悪しかもたらさない。

    • by Anonymous Coward

      逆も真なんだよなぁ

    • by Anonymous Coward

      .NET 2.xぐらいのC#で分かった気になってたけど久しぶりに見たらラムダ式、LINQ、並列処理、拡張メソッドetcで全然ソースを追えなくなってた

      • by Anonymous Coward

        2.xというか2.0しかないぞw

  • by Anonymous Coward on 2014年12月10日 20時36分 (#2725882)

    D言語はCを一行も書かずにCの関数が呼べる。
    おかげでもうC++はいらないだろうが
    CはWindowsがCで書かれている限り滅ぼせない。

    • by Anonymous Coward

      むしろLinuxがCだろ。LinusはC大好きだし。
      C++がDに置き換わって欲しいのは同意

  • by Anonymous Coward on 2014年12月10日 21時19分 (#2725907)

    /unix または /vmunix を書ける言語がほかにあるなら
    のりかえてもいい

    • by Anonymous Coward

      実績のあるPL/IやPascalだな

    • by Anonymous Coward

      アセンブラをお勧めします

  • ある意味言語中立な言語と言える

typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...