今の時代でC言語を学ぶ意義?

タグの編集
投稿者 リキュリエクレオン  () 投稿日時 2008/8/2 04:17:00
VBを過去に学びいくつかのプログラムを作りましたが 
あれから2年ほど遠ざかっていました。しかし、またプログラミングをやてみたく思い色々書籍やサイトをのぞいていますが、様々な言語が登場して驚いています。 
その中でもいまだにC言語の新書の図書が発刊されているのには驚いています。 
GUIのアプリケーションソフト及びオブジェクト指向が一般的になった今、VBやVC#には生産性に劣るC言語を学ぶ意義はあるのでしょうか?
投稿者 うたひこ  () 投稿日時 2008/8/2 05:45:00
こんにちは。 
 
>GUIのアプリケーションソフト及びオブジェクト指向が一般的になった今、VBやVC#には生産性に劣るC言語を学ぶ意義はあるのでしょうか? 
 
まず一つ意見ですが、細かな定義はさておいて、GUIアプリよりもWEBアプリの方が主流になっているように私には映ります。VBやC#よりもJAVAの方がより一般的だと思います。 
 
 
 
C++を学ぶ意義とのことですが、私的な例を挙げます。 
 
Adobe Illustratorというグラフィック業界では非常にメジャーなソフトがあり、僕はそのヘビーユーザーです。 
 
そのソフトは、いくつかのスクリプティング言語をサポートしており、VB.netもその一つです。 
しかしながら、VBによるそのソフトへのスクリプティングによる操作は限定的です。 
 
 
 
しかし、そのソフトには「その先」が用意されています。 
 
そのソフトはC++によるプラグイン開発もサポートされており、VBよりも遥かにコアな部分をいじくる開発ができるのです。 
 
 
 
要は、VBよりも凝ったことがしたい人には、 
C++に手を出す意義があるとの話でした。
投稿者 魔界の仮面弁士  () 投稿日時 2008/8/2 08:44:00
>>1 
話題に挙がっているのは、C++ 言語ではなく C 言語では無いでしょうか。 
 
D や C++ や C++/CLI は、オブジェクト指向が取り入れられていますが、C はそうではありません。 
(C言語で OOP を実現する方法も検討されてはいますけれども) 
http://tinyurl.com/6go8me 
 
 
>>0 
分野によっては VB/C# が主流となっている部分も確かにあるでしょうが、 
「一般的」という表現は、聊か極端では無いでしょうか。 
 
.NET が使えない分野や GUI 無しアプリの開発は、今でも数多く存在しますし 
Windows 用の市販ソフトでは、.NET を利用しない物が珍しくないでしょう。 
 
また、うたひこさんが Web アプリの事を挙げていましたが、私も同感で 
Web の分野においては、JAVA の方が ASP.NET よりも数が多いと思います。 
 
 
> C言語の新書の図書が発刊されているのには驚いています。 
Windows 系の開発がメインなら、C である必要は無いかも知れません。 
オブジェクト指向開発をしたいなら、C を覚える必要は無いかも知れません。 
VB で十分だと感じているなら、C を覚えずとも困らないかも知れません。 
 
ですが、その逆に C 言語の優位性が必要な場面もあります。 
より OS に近い部分の開発では、C++ あるいは C が利用されていますし。 
 
[プログラマがC言語を学ぶべき10の理由] 
http://www.geekpage.jp/blog/?id=2006/11/27 
 
[プログラマがC言語を学ぶべきたった一つの理由] 
http://blog.livedoor.jp/dankogai/archives/50700240.html 
 
 
ちなみに私は、C 言語が苦手です…。 
それでも仕事の上で、C で書かなければならない事はあるので、 
書籍や Web の情報などは、私にとっては重要な情報源です。 
 
 
> VBやVC#には生産性に劣るC言語を学ぶ意義はあるのでしょうか?  
意義の有無は、状況そして学ぶ人自身によるのだと思います。 
機械嫌いな人なら、VB/C# はおろか、そもそも 
「コンピュータ言語を学ぶ意義はあるのでしょうか?」 
と発言するかも知れません。 
 
# あまり回答になっていない気もするけれども。(汗
投稿者 リキュリエクレオン  () 投稿日時 2008/8/2 18:30:00
>>2 
たいへん詳しく、かつ明快に説明していただきよくわかりました。おまけに参考にあるサイトまで紹介していただき有り難うございました。
投稿者 ラキシス  () 投稿日時 2008/8/26 00:02:00
VBとは関係ない話なので、歓迎されないかな・・・ 
 
とりあえず、速度を求められる分野ではC言語は使われますね。 
分かりやすい所では、ゲーム機(PS3,XBOX,Wii,DS,PSP etc...)や携帯電話アプリ等。 
家電製品だとアセンブラなのかな? 
 
C言語でもアセンブラが扱えるから速度をかなり要求される場面ではアセンブラも部分的に書いたりします。 
 
対象をパソコンのみにした場合ならVBやC#の選択でほとんど問題ないと思いますが、対象が変わるとVBやC#なんかではやっていられないという場合もあるという事ですね。 
ちなみにC言語の仕様は今も細かい部分で修正や拡張などが行われており、C言語の仕様を全て網羅したコンパイラは無いらしいです。
投稿者 魔界の仮面弁士  () 投稿日時 2008/8/26 01:00:00
>>4 
> 速度をかなり要求される場面では 
> アセンブラも部分的に書いたりします。  
 
それで一つ思いだしました。 
# 元ネタ(C言語の意義)とは無関係ですけど。 
 
 
今の Visual Basic ではサポートされていない機能ですが、 
かつて、旧 BASIC 言語(Quick BASIC など)では 
 PEEK (メモリ領域を指定してデータを直接読み取る) 
 POKE (メモリ領域を指定してデータを直接書き込む) 
という命令が用意されていました。 
 
加えて、SEG とか CALL といった方言を持っている場合があり、 
これらを使うと、機械語を直接操作することができました。 
http://homepage2.nifty.com/kasayan/basic/basa2.htm 
 
現在でも、一部の「BASIC 登載のポケコン」等で使用されていたり。