• ベストアンサー

それぞれの言語の持っている特性を勉強したいです。

プログラミング言語の勉強をしようと思います。 具体的には、言語の書き方を勉強するのではなく、 それぞれの言語の持っている特性を勉強したいです。 最終的には、言語自体の設計・作成したいです。 なにかこの話題について有用な書物、サイトが ありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.3

私が思うに, 何でも良いので(本当に何でも良いとまでは行きませんが), 何か1つの言語に対して,とことんやってみるというのが一番確実な方法だと思います。 言語を何1つできない人が(質問者さまはどうか知りませんが), 机上の空論的言語を作っても意味がありませんし, 使い物にならないと思います。 例えば Web 上の言語だと, それぞれがかなり有機的に結びついています。 1つの言語ができれば, その言語の限界も見えますし,それをカバーすべき言語や, それぞれの言語の特性や関係がよく見えてきます。 言語の選択は, 一般的に良く言われるオブジェクト指向に基づいた言語が良いと思います。 例えば JavaScript(狭義の JavaScript,つまりブラウザに対する JavaScript)でもかまいません。 それをとことんやれば, どういう構想でこの言語が確立されているのかとか, 一見関係のないように思える PHP などがよく見えてきます。 もし,そこで新たなる言語が必要であると考えたなら, 新しい言語の開発をしてみるのも良いかもしれません。 JavaScript の知識は決して無駄にはならないと思います。 結局, 何かの目的を達するために言語があるのです。 何の目的も達しないような言語があっても,意味がありませんし誰も受け入れません。 必要があるからこそ言語が生まれ, そして必要があるからこそその言語は使われるのです。 言語が先にあるから使われるというようなことは決してありません。 言語の前に目的を見つけるのが先です。 と,私は思いますよ。 その前に, その言語を使う目的が必要ですけどね。 「何かを開発したい」という情熱や 「作らざるを得ない」という状況になって, 実際に何かを開発しないと, 本を読んだりしただけでは,何の言語をしても机上の空論に終わります。

otaks
質問者

お礼

ご回答ありがとうございます 具体的な方法を示してくれて助かります。 この方法を使おうと思います。 >実際に何かを開発しないと, >本を読んだりしただけでは,何の言語をしても机上の空論に終わります。 こればかりやっていました。。

その他の回答 (8)

noname#35109
noname#35109
回答No.9

ありゃ,そうですね。 #8さんご指摘ありがとうございました。 #7です。 どうも歳をとって,最近目が良く見えんようになりましてなぁ~。 どんだ勘違いをしてしまいましたのじゃ~(爆)。 質問者様, 長い長い意味不明な回答を書いて申し訳ございませんでした。 #7の回答は,意味不明な老人のわけのわからんボヤキだと思って適当に聞き流してくだされ。

otaks
質問者

お礼

ご回答ありがとうございます。 勘違いとはいえより詳しく説明して頂いて 僕にとってはうれしい限りです。 2回に渡り、丁寧な説明ありがとうございました。 とても分かりやすかったです。

回答No.8

どうでもいい横レスですが。 No7の方へ。 > 具体的な方法を示してくれて助かります。 > この方法を使おうと思います。 を 「具体的な方法を示してくれると助かります。」 と勘違いしてるようなきがするのですが…。 「具体的な方法を示してくれてありがとうございます」 といういみで、質問者さんは御礼していると思いますが…。

otaks
質問者

補足

No.7を見たときにひょっとしたらと 思いましたが確信が持てませんでした。 ありがとうございました。

noname#35109
noname#35109
回答No.7

#3です。 > 具体的な方法を示してくれて助かります。 > この方法を使おうと思います。 と書かれていますが, 具体的な方法は JavaScript を例に挙げて書いたつもりなのですが...。 もっと具体的に, ~~~~~~~~~~~~~~~~~~~~~~~ ------------------------------------------ <script type="text/javascript" language="javascript"> function showAlert() { alert("Hello World!"); } </script> <a href="javascript:showAlert();">Click</a> ------------------------------------------ と,メモ帳に書いて, 「Hello.html」 という名前で保存し, その HTML をブラウザで開いて, 「Click」 をクリックしてください。 次に, ユーザ定義関数 showAlert() の中を変更してみましょう。  … … … ~~~~~~~~~~~~~~~~~~~~~~~ など,ここまで具体的に答えなければなりませんか? それは勘弁してくださいよ。 いくら紙面があっても足りませんし, 別に JavaScript を限定して,「一言語してみましょう」と言っているわけではないので, 具体的には書けません。 上のように最初から実際に実験してやっていくと, 変数や配列変数が出てきたり, CGI などにその変数を送るようなものにたどり着くのです。 すると,CGI と JavaScript の連携や, お互いの言語の特性や,お互いの言語の限界が見えてきますということです。 でも, 普通は無目的に上のようなことをし続けていくことは不可能ですね。 実際は, 「JavaScript で特定な何かを作りたいという情熱」 を持ったとき,もしくは, 「これを作らなければならない状況」 に遭遇したときに普通はとことんやるものですよね。 と最後に付け足したのです。 ====================== 違う補足になるかもしれませんが,もう1つ補足として。 「言語を簡単に作る状況」になるのは比較的簡単です。 手っ取り早くは,自分でソフトを1つ開発すれば良いのです。 C か,Windows でしたら VB あたりで。 例えば(例えばですよ), 「ユーザーの指示に従って,飛行機がシミュレーション飛行をするソフト」 を開発します。 しかし「ユーザの指示」をソフトに伝えるかを考えなければなりません。 そこで, ユーザーがそのソフトの入力用テキストボックスに, -------------- 札幌→東京 -------------- と書くと, 札幌から東京まで飛行機が飛ぶというルールを作ったとします。 そうすれば,この, 「出発地→到着地」 はそのソフト上での言語になります。 ユーザーが,「沖縄→熊本」と入力すると,沖縄から熊本に飛行機が飛ぶでしょう。 立派な言語です。 しかし, 「札幌から東京だといつも同じ経路なので面白くない!」 という要望が来るかもしれません。 そしたら, 上の「出発地→到着地」だけでは不足だと言うことになります。 そこで,新しい文型を考えなければなりません。 ------------------- 札幌→(秋田)→東京 ------------------- これで, 札幌から秋田上空を通過し東京に着くということにすると, 新しい  「出発地→(上空経由地)→到着地」 という文法が生まれます。 しかし, 「2機同時に飛ばせないと面白くない!」 という要望が来るもしれません。 そしたら, 上の 「出発地→(上空経由地)→到着地」 だけでは不足だと言うことになります。 そして, 「2機ということは飛行機をオブジェクトとして扱うような言語体系に変えなければならない」 というような考えになるのです。 ----------------------------- 飛行機A(札幌→(秋田)→東京) 飛行機B(沖縄→(福岡)→熊本) ----------------------------- これで, 飛行機Aは札幌から秋田上空を通過し東京に着く, そして, 飛行機Bは沖縄から福岡上空を通過し熊本に着く, ということにすると, 新しい  「飛行機名(出発地→(上空経由地)→到着地)」 という文法が生まれます。 しかし,さらに, 「出発時刻を指定したい」とか 「飛行機ABの飛行経路が交差する緯度と経度を取得したい」  … …などなど の要望や必要性が出てくると思います。 するとまた文法の新規開発や改正変更をする必要が出てきます。 上の例では, という感じで1つの言語は作られて行くと思います。 必要があるから言語があるのです。 とはそういうことです。 何かを動作させようとするから 言語が生まれ,更新されて,ちゃんとしたものに確立されて行くのです。 必要がないのに言語を作っても無意味ですから誰も使いません。 以上の 「ユーザーの指示に従って,飛行機がシミュレーション飛行をするソフト」 は当然,机上の空論ですよ。 そんなソフトはこの世にありませんから,  飛行機名(出発地→(上空経由地)→到着地) という言語の一文法を作ってみても何の意味もありませんし, 誰も使いませんし,その前に誰も使えません(笑)。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.6

#4です。 個人的にまつもとさんとは知り合い(つってもそんなに深い付き合いではありませんが)ですので そっちもついでにコメントしておきます。 まつもとさんの元には毎日半端でない数のメールが届くということなので、 すぐに返事がもらえるということはないかもしれません。 ただまつもとさんの人柄を考えれば、きちんと書かれた内容のまじめなものであるなら、 無視されることはないはずです。 #あとspam判定されていなければ :) 以前にもプログラミングをどう勉強したらいいですかという質問のメールが来たとかで、 まつもとさんのblogでネタになっていました。 # http://www.rubyist.net/~matz/ あれもこれもで何回もやり取りするのは難しいでしょうが、まあ最初の一回くらいは 大目に見てくれると思いますよ :) で、 > 洋書は読んだことありませんが、大学入試レベルの英語を読む力があれば > 読めるものなのでしょうか。 特有の単語とかよく使われるフレーズを除けば構文的には そんなに難しくありません。辞書の選択が難しい(普通の辞書はコンピュータ関係の語句は それほど強いとはいえないので)ですが、 まあ読めないことはないと思いますよ。 つか、この方面で何かを深くやろうとしたら英語の文献を当たれないと 仕事になりません。 最後に。 Perl → Ruby ときたらつぎは Emeraldですよ #ヒント 活字の大きさ

otaks
質問者

お礼

ご回答ありがとうございます。 >まあ読めないことはないと思いますよ。 追々読もうと思います。 Rubyの語源は誕生石なのか、ルビのポイント数なのか、 両方ともパールとルビーは並んでいます

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

個人により開発され、今も現役で有名な言語については、(そして、私が実際に使用している言語では)perlとrubyがあります。perlはLarry Wall氏が作成しましたが、rubyは日本人のまつもとゆきひろ氏により作成されました。rubyは日本で生まれ、その言語は、日本だけでなく、世界中で使用されています。私がperlにはじめてふれたとき、その言語のもつパワフルさにわくわくしたものでした。rubyはそのパワフルさを引継、そして、きれいな言語となっています。もし、あなたが、本気で新しい言語を開発したく、いろいろな言語を勉強したいなら、まつもとゆきひろ氏に直接連絡をとられてみることをおすすめします。まつもと氏は100以上の言語を研究されたらしいです。そしてその結果、rubyが生まれました。まつもと氏のメールアドレスは、参考URLからたどり、メーリングリストに参加すれば、容易に知るが出来ます。まつもと氏は、rubyと言う名前自体が好きだった為に、ずっとrubyの開発を続けてこられたと、いってました。あなたが、新しい言語を作る場合も、その名前がもっとも重要になります。世界中のひとに覚えられやすく、そして、愛着のもてる名前を付けてください。 パールときて、つぎがルビーなら、そのつぎは、サファイアが日本から生まれることを祈ってます。 まつもとさんの紹介URL http://www.chienowa.co.jp/frame1/ijinden/Matsumoto_Yukihiro.html

参考URL:
http://www.ruby-lang.org/ja/
otaks
質問者

お礼

ご回答ありがとうございます 直接連絡を取るのは、まだほとんどプログラミング言語と いうものを理解できていないペーペーの僕がやるのは 少し気が引けます。。

otaks
質問者

補足

名前を考えると、イメージが描きやすくなりそうです。 面白い意見でした。参考にさせていただきます^^

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

なかなかに厳しい意見が並んでいますが違った見方で。 とはいうものの、個々の言語の特性を知るにはやはりその言語を使ってみるのが一番でしょうし、 一度に複数の言語に手をだすのは得策ではないと思います。 一口にプログラミング言語といっても、大きく幾つかのグループに分けることができます。 手続き型言語/関数型言語/論理型言語/オブジェクト指向言語 … そのような類型にどういうものがあり、どのようなコンセプトを持っているのか ということを知りたいのであれば Concepts of Programming Language http://bookweb.kinokuniya.co.jp/guest/cgi-bin/booksea.cgi?ISBN=0521780985 この辺の本になるでしょうか。

otaks
質問者

お礼

ご回答ありがとうございます 洋書は読んだことありませんが、 大学入試レベルの英語を読む力があれば 読めるものなのでしょうか。

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

>具体的には、言語の書き方を勉強するのではなく、 >それぞれの言語の持っている特性を勉強したいです。 プログラム言語は「書けてなんぼ」です。 特性だけ知っていたって大して役に立ちません。 特に、将来自分で言語を作ろうと言う大志を持っているならなおさらです。 まず、複数の言語を自由に使えるまで習得しましょう。

otaks
質問者

お礼

ご回答ありがとうございます 現在C++の本を読んでいますが、読むペースが 遅くこのままでは埒があかないと思い質問しました。

回答No.1
otaks
質問者

お礼

ご回答ありがとうございます

関連するQ&A

専門家に質問してみよう