#author("2023-11-11T06:44:56+09:00;2023-02-28T20:40:45+09:00","default:vip","vip")
* どの言語を学ぶべき? [#o7f2d040]
一般的には情報量の多さから、C/C++、C#、Java辺りから選ぶのがよさそうです。~
スクリプト言語は、変数に型をつけないなど比較的単純なプログラムを記述するため、~
初めてプログラミングを学ぶ人にとってはやや適切でない部分があるかもしれません(一概には言えませんが)。

#contents

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

*** ゲームを作りたい [#a4f553aa]
-一昔前はゲームといえばC/C++という感じでしたが(さらに前はアセンブリ言語)、&br;
最近はPCの性能も上がり色々な言語が選べるようになってきました。&br;
なので、定番のC/C++以外でのおススメを考えてみました。&br;
しっかり学びたい方は少しくらい大変でもジャンルを問わずC/C++をやりましょう。
*** ゲームを作りたい(C#、C/C++、Java、Delphi、Python、Ruby) [#a4f553aa]
今北産業: UnityでC#やれ(……と言えればよかったのですが、2023年にUnityがやらかして信頼を失っており困りどころ)。

--3Dバリバリなゲームを作りたい場合、ほぼC/C++になります。&br;
-2010年代以降は、まず作りたいものに合ったゲームエンジンの採用を検討、
そのあと要求される能力を習得、というのがよくあるパターンだと思います。~
そういう意味で「どの言語を学ぶべき?」に若干回答しづらい分野です。~
結局ゲームが作りたいだけなら「プロの作ったありものを使う」ので良いのであり、
その結果プログラミング言語を全く利用しない、ということもありえます。極端に言えばツクールゲーでいいならそれでいいのです。~

-一昔前はゲームといえばC/C++という感じでしたが(さらに前はアセンブリ言語)、
最近はPCの性能も上がり色々な言語が選べるようになりました。~
が、しっかり学びたい方は少しくらい大変でもジャンルを問わずC/C++をやりましょう。

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

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

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

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

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

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

*** Web上で動くものを作りたい [#v0b8f0c6]
-掲示板やwikiなどのサービスを作成したい場合、サーバで動くプログラムを作成することになります。&br;
*** Web上で動くものを作りたい(PHP、Perl、Python、Ruby、Java、C#) [#v0b8f0c6]
今北産業: PHPで作れ、あるいはPerl・Python・Rubyなどを用いたCGIで作れ。当然、HTMLの知識も必要になります。

-掲示板やwikiなどのサービスを作成したい場合、サーバで動くプログラムを作成することになります。~
サーバでプログラムを動かすための仕組みとしては、

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

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

-JSP
--Javaで記述。拡張子はjsp
--個人のページではあまり使用されているのを見ないが、企業では良く使われる
-サーブレット/JSP
--Javaで記述。JSPではPHPのようにHTMLにコードを埋め込むカタチで記述できる。
--個人のページではあまり使用されているのを見ないが、企業では良く使われる。
--低価格なレンタルサーバーでは利用できないことが多かったが、Google App Engineというサービスで利用できるようになったため若干敷居が低くなった。

-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 を設定すればすぐ使える。
***WEBページを作りたい (HTML、CSS、JavaScript)[#he0e59ae]
// Web用のページ作った方がいいな多分。。。
// 記事題の回答になっていない記述ばかりなのでほとんど消した 2023-11
//
以下の3つはどれも知っておいたほうがよい。

などがあります。おススメはPerl、Ruby、Pythonなどを用いたCGIやPHPです。&br;当然、他にHTMLの知識も必要になります。
-HTML
--「<h1>俺は見出しだ</h1>」「<p>僕は段落だ</p>」「<title>私は題名です</title>」というように、決められたタグで囲って構造を宣言しておくテキスト。
--基本的には文書である。だから[[「使える言語はHTMLです」>プログラミング用語#usable_html]]がジョークになるのだ。
--いろいろ規格があったがHTML5に至って落ち着いた。

*** Flashを作りたい [#uff1e9d3]
-Flashアニメや本格的なFlashゲームを作りたい場合、&br;
ActionScript2.0、またはActionScript3.0をオススメします。&br;
AS2であればフリーのツール「ParaFla!」や「Suzuka」がありますし、&br;
AS3であれば公式で開発環境を無料でDLできるので入りやすいです。&br;
&br;
最新版では、デスクトップアプリも作れるようになりました。
-CSS
--ページの見た目を担当する。
--位置・色・字の大きさなど設定できるのはもちろん、「要素がマウスオーバーでぷるぷる震える」といった効果もCSSだけで出来るようになった。

-JavaScript
--CGIのようなサーバーサイドプログラムではなく、これはブラウザ(クライアント)側で実行される。
--一番簡単な例だと「右クリック禁止!」みたいなアラート出したり。
--<canvas>要素でゲームを作ったり、Ajaxでサーバー側と連携して動的にページの一部を書き換えたり、割と何でもできるようになった。~
Linuxエミュレータとか動画エンコーダーといった狂気の成果物もあるほどだ。


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

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

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

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

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

-Objective-C
-C
-Objective-C(Cocoa API)
-Objective-C++
-C++
-Java
-Ruby
-Java(Cocoa API)
-Python(Cocoa API)
-Ruby(Cocoa API)
-AppleScript
-JavaScript

以外におもうかも知れないけど、C++があります。これは IO系の開発で使うだけのようです。
Objective-Cが今いちマイナーな言語ですから、言語の紹介を得るのが難しいですが、それなりにドキュメントは揃ってるようです。

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

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

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

上にも述べたけど、Web サーバ系の開発も可能です。また UNIX(カーネルである Darwin は BSD系で 10.5からはUNIXになりました)として使用することもできるので、シェルで遊ぶこともできましょう。Objective-Cが今いちマイナーな言語ですから、言語の紹介を得るのがむつかしいのですが、それなりにドキュメントは揃ってるようです。
//*** 最適化したいです。C?アセンブリ?機械?
// 記事題の回答にならない記述ばかりなうえ論旨が意味不明なので消した 2023-11

*** iPhone アプリってどうなのさ(Objective-C) [#dfb8f070]
流行ってるみたいだね。SDK のダウンロードも結構多いとか。Mac OS X と同じ体系になるけど、微妙に違うので別項として扱うよ。
//***Mac OS X と Apple(魔改造とは云わないで) [#af7aede3]
// 記事題の回答になっていない記述ばかりなので消した 2023-11

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]]といったスクリプト系がいいと思います。~
余計なことをあまり考えなくていい[[Python>プログラミング言語/Python]]や[[Ruby>プログラミング言語/Ruby]]といったスクリプト系がいいと思います。~
どちらも、WebのCGIプログラムからGUI、ゲームなどなど色々なものが作れますから、~
実用的にも覚えておいて損はないと思います。

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

*** OSたんをつくりたい [#efacf64b]
-アセンブリ!これさえあれば怖いものなし! --> Linuxのソースコードでもダウンロードしてお勉強しなさい。(Cです。) --> その前に本を読んでOSの基礎知識を固めなさい(日本語です。)
*** OSたんを作りたい(アセンブリ) [#efacf64b]
-初心者にはまったくお勧めできない。プログラマなら一度は憧れるOS開発。ネットワークやCPUなどの物理レベルの知識を一通り身に付けた後に挑戦し、CUIのOSを作ると言うのが趣味レベルでの流れ。
-OS自作本に従い、以下を並行していくとよいだろう
-- アセンブリ!これさえあれば怖いものなし!
-- Cのお勉強をすれば、Linuxカーネルのソースコードが読めるようになるぞ。
-- OSの知識を得る。タネンバウムのOS本など。
-「30日でできる! OS自作入門」が日本語書籍で筆者がお勧めする書籍。それなりに簡単。
- ハードウェアの変化に伴い、UEFIで高級言語の恩恵を受けられるようになった一方、入力装置が鬼門になっているらしい

*** 彼女を作りたい [#idfc8477]
*** 世を統べる真理を実装したい(人生、宇宙、すべての答え(([[42である。>https://ja.wikipedia.org/?curid=156092]]))を求める) [#se8e18a6]
-そんなアレげなことを望むあなたにはLispをおすすめします。~
Lispは歴史が古く、パンチカードでコンピュータが動いていた1950年に生まれました。~
人工知能の開発に使われたりするなどいろいろぶっ飛んだ言語です。
一見すると括弧だらけで使い辛そうですが、学んだが最後あなたはきっとLispの持つ魔力に吸い寄せられるでしょう。現代に残る謎の言語です。
-Lispは元々一つでしたが、拡張が進み、ある一定の共通性を持ったプログラミング言語の総称になっています。
なので厳密に言えば複数のLisp言語があります。これをLisp方言と言います。~
方言により関数がちょいちょい変わったりするのでどれか一つの方言をマスターしてから、他の方言に手を出さないと混乱します。
-- 代表的なLisp方言
--- CommonLisp
--- Scheme
--- EmacsLisp
--- Clojure
-CommonLispはLispの再統一を目指した言語でLispの事実上の標準方言です。
ですが、何が何だかわからない人はまず手始めにLisp方言の中でも教育向けと言われているSchemeをマスターしましょう。

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

*** 世界を作り変えたい [#qdea6875]
-VIP言語とあなたの頭
-[[VIP言語>プログラミング言語/VIP言語]]とあなたの頭

*** 働きたい [#idfc8477]
*** 働きたい [#idfc8479]
-親から受け継いだ日本語…Priceless
-TOEIC750点くらいあると捗ります


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