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から派生したブロックの書式を持つ高度なプログラミング言語を容易に理解できるようになる」とのこと。皆さんはどう思われるだろうか。
Si! (スコア:1)
Ge! (スコア:0)
free忘れた
シーン・・・ (スコア:0)
死。
組込み業界 (スコア:0)
ではまだまだ現役だと思うけど
ミドルウェアとかドライバとか・・・
レジスタを直接叩くとか他言語(javaとかPHP)で出来るのかな?
Re:組込み業界 (スコア:2)
できるか出来ないかで言うと、
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]
布教終了。
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re: (スコア:0)
OSがCだもんね。あと、Cが使えないC++プログラマがいるのかいなと
Re: (スコア:0)
STL/boostを使うという風に徹底すれば、生ポインタとか生メモリとかは見なくても済みますよね。
OSのフレームワークとか使おうと思うと、ポインタと無縁ではいられませんが・・・。
Re: (スコア:0)
Cが使えるC++プログラマってすごく減った気がするけど
Re: (スコア:0)
システム記述用を目的の1つとして作られてて、設計がよく合致できてるよね
自身のランタイムや多言語のグルーとしても使われるあたりで証明になってるんじゃないかな
他の言語を学ぶ時の橋渡しになるかは知らんけど、
このハード叩くだとかのシステム分野ではずっと残るのじゃないかな
プロセッサと人間をつなぐもの(Re:組込み業界) (スコア:0)
高級アセンブラとしてのCの立場は、プロセッサが高級言語をバイナリ実行するようにならない限りなくならないのでは?
巷のアプリで高級言語使えるのは環境としてのソフト(OS・ライブラリ)ががんばっているからでしょ。
プロセッサが高級バイナリを実行できるようになるか、環境を新たに作る必要がなくなるまでは生き延びるよね?
Re: (スコア:0)
組込制御するのにオブジェクト指向とか無くてかまわないし
規格がキッチリ定まってて過去の資産があるから科学技術計算のFORTRANと同じでいつまでたっても死なないよ
古い時代の「効率重視」の言語だから今のトレンドにそぐわないところは多々あるが非力なプロセッサで使うには文句言ってられん
やめてください (スコア:0)
C言語しか出来ないSIerもいるんですよ!
Re: (スコア:0)
(^^;
Re: (スコア:0)
ネタコメなのかもしれないけど、
Cのポインタやら構造体やらを理解して使いこなせるなら
オブジェクトの概念なんて簡単に理解できると思うんだけど。。。
本当にその人はC言語出来てるの?
Re:やめてください (スコア:1)
概念は理解できても、使いこなせない人は多いよ。
どう見てもCの関数のようなクラスを作る人とか
オブジェクトにせず配列で添え字をポインタのように使う人とか
一応動くんだけど、全然オブジェクティブじゃない頭の人。
Re:やめてください (スコア:2)
それは、オブジェクティブでないのではなく、
オブジェクティブだがその言語のオブジェクト機能を使っていないだけですよ。
オブジェクトの概念さえあれば、たとえCからstructがなくたってオブジェクト思考プログラミングは可能です。
コンピューターがメモリのアドレスを元にして動いている限り、結局、structなんて配列の糖衣構文。
もちろん迷惑なことに変わりはありませんが、その人がオブジェクト指向を理解していないわけではありません。
ただたんに、言語の機能と頭の中のイメージが繋がっていないだけ、使い方を知らないだけです。
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re: (スコア:0)
これ [wikibooks.org] を読むと、ポインタやら構造体やらを理解したところで、使いこなせるとは思えん。
Re: (スコア:0)
???
日本語の言語仕様知らなくたって使えてるでしょ。
目的が達成できれば使いこなせていると思うが
回りくどいと言われようがきたないと言われようが
Re:やめてください (スコア:2)
hello worldを書いてみることを目的にする人にとって、それができたら言語を使いこなしたといえるのか?
Re: (スコア:0)
Cしか出来ないと言う人こそ、オブジェクトの概念は理解しているように見える。
数値計算業界 (スコア:0)
数値計算プログラムのユーザーサブルーチンが
C言語のみ対応とか、Fortranのみ対応とかもある。
思想さえしっかりしていれば近代的なコード風に書くことできるでしょ?
と指摘されれば否定できないが、コンパイラサポートがあった方が
エラーチェックができて助かる。
Re: (スコア:0)
PythonやJavaがいくら速くなったといっても、やっぱりまだFORTRANやCでカリカリチューニングした方が速いし…。
んでも、最近はPythonに浮気中。
「馬車馬ルーチンはそのうちCに書き換えるぜ!」と思いながらも、「書き換えてチューニングする時間×時給換算した私の給料よりも、新しい計算機買ったほうが安い…」となってとん挫する。
Re: (スコア:0)
ランタイム上で動く言語の場合、新しいランタイムが入った新しい環境にバイナリを持って行くだけで化けることがあるからなあ(コードの修正、リコンパイル無しに)。
いずれほとんどの場所では言語の速度など考えなくなるだろうし、そうなったらなおのこと、楽な方に流れる。
亜流言語を学び易くなるというのも、どうなのかな。
ポインタで挫折する人も結構見た。
適正ない人は早く離脱して欲しいし、Javaしか知らない人は大抵理解度が…という思いはあるけど。
#最近C使う案件が来なくて、JavaやawkやperlばかりのC大好き人間。
ABI互換性 (スコア:0)
基本的にプログラミング言語はプログラマーからみた振る舞いは定義しても、コンピュータでどう実装されるかまでは定義しない。
GCとかポリモーフィズムに必要な型情報は基本的にコンパイル時or実行時一回きりの使い捨てで再利用できるようになってない。
Cも定義はされていないが、ハードに近いおかげで関数も構造体もアーキテクチャが同じなら大抵同じ構成になるから、OSやライブラリはCで実装するのが無難。
Re:ABI互換性 (スコア:2)
以前に書いた日記 [slashdot.jp]で、その辺の面倒な事があったなー、と。
64ビットな構造体の返し方が、CとC++で異なっているという。
C言語が必要ないというのなら (スコア:0)
とりあえず、libcやglibc、CRTやMSVCRTを全削除すればええんやで(ニッコリ
そしてCライブラリの無くなったその不毛な大地で、高度なプログラミング言語(笑)とやらを好きなだけ使えばええんや。
# Cライブラリ無くして動作する、高度なプログラミング言語(笑)とやらがどれだけあるのか見物だwww
Re: (スコア:0)
Delphiとか?
Re: (スコア:0)
デルファイも演算子とかはC/C++で定義されていますよ
Re: (スコア:0)
ぴゅう太
Re: (スコア:0)
つ Go
Re: (スコア:0)
生成物はそうだけどGoコンパイラ自体はlibcが必要ですぜ
Re: (スコア:0)
本家の問いかけ方と違っちゃってるから。向こうは(あんたの日常や仕事に)どれだけCが関わってる?って聞いてると思う。
直接関わってなくても重要な一部となってて意義があるということは当然ありうるんで。
あ、あなたがおかしいと言ってるのじゃないよ。意義と言われたらそう答えて何もおかしくない。
質問内容変えたいなら、丸ごと本家コメント引用で済ませないで何か書いて欲しいよと思いました。
Re: (スコア:0)
いや、ランタイムやライブラリなんてどうにでもなって、逆言うと過去の互換のためにそれらは残ってるだけ。
一番悪臭を放ってる部分。
pythonやruby の静的型版を作ってよ (スコア:0)
そういうのあれば、C言語が必要な場面、
もう少し減るのでは???
Re:pythonやruby の静的型版を作ってよ (スコア:1)
RPythonで書いて、PyPyでコンパイル...はちょっと違うか
# 制約がるのはまあ > RPython
M-FalconSky (暑いか寒い)
Re: (スコア:0)
角を矯めて牛を殺す。。
#それなんてjavaや?
Re: (スコア:0)
Groovy使えば?
「はじめてのC」を超える入門書が必要だ! (スコア:0)
といいつつ、最近arduino IDE使う羽目になった(´・ω・`)
Re: (スコア:0)
「といいつつ」が、いまいち結びつかない。
ALGOLの子孫 (スコア:0)
Perl, Python, JavaはALGOLの子孫じゃないの?
Cは高級アセンブラだと思ってた
Objective-CはSmalltalkの要素を取り入れたCか
呪いあれ (スコア:0)
C言語ができるから、見た目が似ているJavaやC#ができるつもりだとかぬかしているプログラマーは、
全員死んでしまえ。
人類に害悪しかもたらさない。
Re: (スコア:0)
逆も真なんだよなぁ
Re: (スコア:0)
.NET 2.xぐらいのC#で分かった気になってたけど久しぶりに見たらラムダ式、LINQ、並列処理、拡張メソッドetcで全然ソースを追えなくなってた
Re: (スコア:0)
2.xというか2.0しかないぞw
D言語 (スコア:0)
D言語はCを一行も書かずにCの関数が呼べる。
おかげでもうC++はいらないだろうが
CはWindowsがCで書かれている限り滅ぼせない。
Re: (スコア:0)
むしろLinuxがCだろ。LinusはC大好きだし。
C++がDに置き換わって欲しいのは同意
カーネル記述言語 (スコア:0)
/unix または /vmunix を書ける言語がほかにあるなら
のりかえてもいい
Re: (スコア:0)
実績のあるPL/IやPascalだな
Re: (スコア:0)
アセンブラをお勧めします
Cのライブラリの言語バインディングはみんな利用してるだろ (スコア:0)
ある意味言語中立な言語と言える