* どの言語を学ぶべき? [#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のページなどで見れる。それなりに個人利用もあるようだが、やはり企業での使用が中心

-WebObjects
--超マイナーなJava サーブレットの一種だけれど、数百万もしたものが、Mac OS X にはランセンスタダ同然で付いてくる。
--比較的Cocoa の体系に近い(もともとObjective-Cだった)ぞ。iTunesStore や AppleStore はこれ。
--ちなみにMac OS X にはPerl、Ruby、Python、Module版PHPが最初から、10.5からはRuby on Rails までインスコされてるから、Apache を設定すればすぐ使える。

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

*** Flashを作りたい [#uff1e9d3]
-Flashアニメや本格的なFlashゲームを作りたい場合、&br;
ActionScript2.0、またはActionScript3.0をオススメします。&br;
AS2であればフリーのツール「ParaFla!」や「Suzuka」がありますし、&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などの論理型言語と呼ばれるものもあります。

*** Python [#idfc8477]
Pythonは、オブジェクト指向のプログラミング言語です。
初心者でも分かりやすいのですが、とても奥深い言語です。
習得が容易でありながら、アプリケーション作成、システム管理、ウェブプログラミングなど色々な事が出来ます。
C++やJavaと連携したCPython、Jythonなどもあるのでプログラマの方でも満足できると思います。
他には、IronPythonと言う.NET Framework上で動作するPythonまで出てます。
将来性に優れたPythonを始めても損はしないはずです。これを期にPythonを始めてはいかがでしょうか。

*** Mac っす(Objective-C) [#rbd505fa]
Carbon はやめたまへ。血をみるよ。サポート打切りの噂も絶えない。フツーのアプリなら Cocoa になさい。Xcode (Project Builder)を入れるといいよ。Mac OS なひとは今から何か作るのは無謀でないか。Xcodeでのアプリケーションは次のどれかとなるはづです。

-Objective-C
-Objective-C++
-C
-C++
-Java
-Ruby
-AppleScript
-JavaScript

以外におもうかも知れないけど、C++があります。これは 低レベル系の開発で使うだけのようです。

Objective-C++はC++にObjective-Cの拡張部分をつなげたもので、SafariはObjective-C++で組まれているそうです。

Ruby や Java は Objective-C の Cocoa API が使えます。先述の WebObjects では Javaを、RubyはグルーとしてもですがRubyCocoaとして一般のアプリケーションも作れます。それからAppleはJavaScriptも力を入れて居て、Widget なんかはコレ。

AppleScriptは知らないとわからないけれど、AppleScriptは(コンパイルして)保存した物を独立したアプリケーションとして使用できます(実体はOSレベルで実行されるアプリケーションコマンドの塊?で、gccされたのとは違うよ)。QuickTime などの基幹機能は AppleScript を遣ってムービー変換ができたりする優れもの。Mac OS の昔はこれを日本語で書けたけれど今は知らない。UNIX コマンドの呼出し(及びシェルからのAppleScriptの呼出し)などの拡張が Mac OS X から増えてます。AppleScript はプログラムで遣う配列やらの概念と簡単な英文法を知っていればすぐ理解できるはづです。

他にも「Quartz Composer」で簡易スクリーンセーバ(本格的なのはXcodeで作る)ができたり。「WebObjects Builder」でのWebObjects開発は、WebObjects Builderのコードが古いために 10.5 からはできません。Audio Unit、Metadata Importer(Spotlight)、Quick Look Generator、Preference Panel(システム環境設定書類)など小物用のテンプレもXcodeには揃ってます。

上にも述べたけど、Web サーバ系の開発も可能です。また UNIX(カーネルである Darwin は BSD系で 10.5からはUNIXになりました)として使用することもできるので、シェルで遊ぶこともできましょう。Objective-Cが今いちマイナーな言語ですから、言語の紹介を得るのがむつかしいのですが、それなりにドキュメントは揃ってるようです。

*** iPhone アプリってどうなのさ(Objective-C/Objctive-C++) [#dfb8f070]
流行ってるみたいだね。SDK のダウンロードも結構多いとか。Mac OS X と同じ体系になるけど、微妙に違うので別項として扱うよ。

iPhone SDK の開発言語は Objective-C の模様。理解レベルは「Mac OS X アプリケーション開発に必要な知識(ここ重要)」と「iPhone 用に拡張された API 及び iPhone のハードとしての擧動」を知る必要があります。ですから、Mac OS X アプリケーション(Objective-C、Cocoa API)に就ても参照してみて下さい。基本的にはMac OS X アプリケーションを作る際に必要な知識が大きな比重を占め、iPhoneのみの理解はごくごくわづかな比重となるかと思います。言語理解とCocoaの理解は並行して進めるとよいでせう。

面白いのができたら App Store に発表するべし。SDKとドキュメントはアップルのサイトにある。http://developer.apple.com/iphone/

*** プログラミングを楽しみたい [#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です。) --> その前に本を読んでOSの基礎知識を固めなさい(日本語です。)-->「OS自作本」もあるよー。ググレ。

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

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

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


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