* どの言語を学ぶべき? [#o7f2d040]

#contents

** 目的別で考えよう [#f46d3938]
どの言語を学ぶかは、「何をやりたいか」で考えると良いと思います。~
ゲームを作りたいとか、便利なツールを作りたいとか、そういう目標があれば楽しく学べるでしょう。

*** ゲームを作りたい [#a4f553aa]
-人昔前はゲームといえばC/C++という感じでしたが(さらに前はアセンブリ言語)、&br;
最近はPCの性能も上がり色々な言語が選べるようになってきました。&br;
なので、定番のC/C++以外でのおススメを考えてみました。&br;
しっかり学びたい方は少しくらい大変でもジャンルを問わずC/C++をやりましょう。

--3Dバリバリなゲームを作りたい場合、ほぼC/C++になります。&br;
最近ではC#もライブラリが充実してきています。

--2DならJava、C#、DelphiなどGUIの作りやすい言語や、&br;
ゲームライブラリのある言語(Pythonなど)がオススメです。

--また、ゲーム製作のための言語であるHSPや、&br;
エンジン部分がRGSS(Rubyの仕様を勝手に改造したものらしいです)で記述され、さらにそのコードをいじることが出来るRPGツクールXPに、&br;
高度なカスタマイズ機能を持つアドベンチャーゲーム製作環境吉里吉里/KAGなどもあります。&br;
ゲームがつくりたいだけならこれらの言語、環境もおススメです。&br;
有名どころでは、TypemoonのFate/Stay nightが吉里吉里/KAGで作られていたりします。(といってもアレはかなり改造されてるので吉里吉里とは別モンだとおもった方がいい)

*** GUIツールを作りたい [#da09e157]
-デスクトップで動くちょっとした小物(時計や電卓、システム情報を表示するソフトなど)のような小さめのGUIアプリを作りたい場合、&br;
GUIアプリの製作が簡単なVisual BasicやDelphi、Java、C#、VB.NET、なでしこなどをオススメします。

*** ちょっとした作業を効率よくやりたい [#hc7eb69e]
例えば、「nekomimiフォルダの中の全画像に対して、ファイル名の先頭に「neko_」とつけたい」などといった、日常でのちょっとした作業(でも、画像が100枚あったら大仕事ですよね)をささっとやりたい場合、スクリプト言語であるPerl、Ruby、Python、もしくはなでしこがおススメです。

Mac? MacでリネームするならAutomatorかAppleScriptの方が楽ですよ。

*** Web上で動くものを作りたい [#v0b8f0c6]
-掲示板やwikiなどのサービスを作成したい場合、サーバで動くプログラムを作成することになります。&br;
サーバでプログラムを動かすための仕組みとしては、

-CGI
--Common Gateway Interface(サーバーが、クライアントからのリクエストを受けたバイナリ、もしくは一行目にインタプリタの場所を指定してあるスクリプト言語のソースを実行し、その出力結果をクライアントに返すシステムのこと)の略なので、正確には言語の名前ではない。
--Perl、Ruby、Pythonなどが一般的で、C,C++等をコンパイルしたバイナリも存在する。拡張子はcgi。
--なぜスクリプト言語が主流かと言うと、コンパイルの手間がなく、保守性が高いため。また、どうしても"ユーザー<->サーバー"の双方向の"textでの"やり取りが多いために、文字列処理に特化しているPerlや、Perlから派生した言語が多い。
--一般的にPHPに比べて遅いとされるが、それはサーバーがシステムに投げてる手間がかかるため。例えばApacheの場合、mod_perlなどを使って、ApacheのmoduleとしてPerlなどを動かせば(つまりCGIでないようにすれば)PHPよりもはるかに高速で、使うメモリも少なくて済む。

-PHP
--普通PHPというと、サーバーのmoduleとして動かしているものを指すので、厳密にはPHPはCGIではない。(PHPをCGIとして動かすこともできる。)
--一般的にCGIよりも高速で動作するが、それは前述のためであり、PHPの言語としてのスピードは言うほど速くない。
--サーバーの設定によっては、使える関数が制限されていることもある。
--CGIと違いHTMLに埋め込むため、どこまでがコードなのか判定しづらい。読みやすく感じるのはおそらくPerlの難読性との対比のため。
--手軽さから、サーバーサイドプログラムとしては人気が高い。

-JSP
--Javaで記述。拡張子はjsp
--個人のページではあまり使用されているのを見ないが、企業では良く使われる

-ASP.NET
--.NET言語(主にC#)で記述。Windows系サーバーほぼ限定。拡張子はaspx
--Microsoftのページなどで見れる。それなりに個人利用もあるようだが、やはり企業での使用が中心

などがあります。おススメはPerl、Ruby、Pythonなどを用いたCGIやPHPです。&br;当然、他にHTMLの知識も必要になります。

*** Flashを作りたい [#uff1e9d3]
-Flashアニメや本格的なFlashゲームを作りたい場合、&br;
ActionScript2.0、またはActionScript3.0をオススメします。&br;
AS2であればフリーのツール「ParaFla!」がありますし、&br;
AS3であれば公式で開発環境を無料でDLできるので入りやすいです。&br;
&br;
最新版では、デスクトップアプリも作れるようになりました。

*** とにかくいろいろやりたい [#r5296ba0]
とりあえず、

-コンパイラ系(C/C++、Java、C#など)から一つ
-スクリプト系(Perl、Ruby、Pythonなど)から一つ
-サーバサイドWeb系(CGI、PHP、JSP、ASP.NETなど)から一つ
-クライアントサイドWeb系(HTML、CSS、JavaScript、ActionScript)から一つ

といった感じで身につけていくのはどうでしょうか。コンパイラ系とスクリプト系はどちらからでもかまいません。~
また、関数型言語(Lisp、Ocaml、Haskellなど)の世界に足を突っ込んでみるのも楽しいかもしれません。~
さらにPrologなどの論理型言語と呼ばれるものもあります。

*** プログラミングを楽しみたい [#r545f2bc]
プログラミングを楽しみたい人やプログラミング自体を勉強したいという方は、~
余計なことをあまり考えなくていい[[Ruby>プログラミング言語/Ruby]]や[[Python>プログラミング言語/Python]]といったスクリプト系がいいと思います。~
どちらも、WebのCGIプログラムからGUI、ゲームなどなど色々なものが作れますから、~
実用的にも覚えておいて損はないと思います。

*** スーパープログラマになりたい [#m07e1930]
-スーパープログラマと人々に呼んでもらうためには、「どの言語を使うか」より「何を作るか」の方が重要です。&br;
最近では、DHHという人がそれまで海外ではあまり普及していなかったRubyでRuby On Railsというソフトウェアを作り、一躍時の人となりました。&br;
Ruby On Rails以降、海外でRubyの書籍は一気に10倍以上売れるようになったそうです。&br;
頑張って超格好良いソフトを作ろう!&br;

*** OSたんをつくりたい [#efacf64b]
-アセンブリ!これさえあれば怖いものなし! --> Linuxのソースコードでもダウンロードしてお勉強しなさい。(Cです。)
-アセンブリ!これさえあれば怖いものなし! --> Linuxのソースコードでもダウンロードしてお勉強しなさい。(Cです。) --> その前に本を読んでOSの基礎知識を固めなさい(日本語です。)

*** 彼女を作りたい [#idfc8477]
-親から受け継いだ日本語…Priceless

*** 世界を作り変えたい [#qdea6875]
-VIP言語とあなたの頭

*** 働きたい [#idfc8477]
-親から受け継いだ日本語…Priceless


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS