• ベストアンサー

プログラミング全般について勉強したいのですが

今春に高校を卒業いたしまして、理工系の大学に進学を考えている者です。 それに先立ちまして、計算機科学に興味があることもあり、独学でプログラミングの勉強を始めてみたいと思いました。 そこで少し調べてみたのですが、使用される言語や理論が細分化されていて、現時点で知識のない私にとっては何から始めたらよいかわからなくなってしまいました。 それぞれの言語やパラダイムの特徴なども含めて、体系的に勉強することは可能なのでしょうか。 あるいは、まずなにか1つの言語が使えるようになった方が良いのでしょうか? それから、もしあれば初学者向けで役に立つ書籍も紹介していただけると幸いです。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

>そこで少し調べてみたのですが、使用される言語や理論が細分化されていて、現時点で知識のない私にとっては何から始めたらよいかわからなくなってしまいました。 これは簡単です。 「使用される言語や理論が細分化」されている事を無視すれば、単に「初心者でも扱いやすい」言語を選べば良いだけ、です。 現時点では、言語としてはRubyが一番良い、と思っています。 Ruby: http://www.ruby-lang.org/ja/ それは何故か、と言うと初心者向けの簡易な(かつ日本語で読める)「プログラミング入門」がWebで公開されているから、に他なりません。 プログラミング入門 - Rubyを使って - http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb 分量も1日1章進めても2週間以内に終わる計算ですし、春休みの時間つぶしにももってこい、でしょう(笑)。これである程度「プログラミングの概要」は分かるとは思います。 また、このチュートリアルは実際、千葉大学の方で「全くの初心者用のプログラミング入門」としてのテキストとして使われていた実績もあるようなんで、まあ、無難でしょう。 一方、理論面に真面目に興味がある、と仰るのでしたら、書籍 計算機プログラムの構造と解釈: http://sicp.ipl.t.u-tokyo.ac.jp/ と言う、「MITの初心者向けプログラミング入門コース」のテキストと言うのがある、と言えばあるんですが、超難解です(笑)。シャレになりません(笑)。 まあ、本当に「理論面に一番興味がある」と言うのでなければ手を出さないのに越したこと無いんですが、本当に「心の底から興味がある」と言う場合に応じて一応名前だけ、は紹介しておきます。 >それぞれの言語やパラダイムの特徴なども含めて、体系的に勉強することは可能なのでしょうか。 この場合「体系的」ってのは二つの意味があると思います。一つは単に「歴史的」って事でしょうね。それなら概要だけは「トリビア」程度では押さえられるのでは? 反面、「ハードウェアレベルから」と言うのなら難かしいですよ。恐らく。 基本、いわゆる「高級言語」ってのは所詮人間がデザインするものですから、「理論的な」体系、ってあるようでないようであるようで……ってのが本当のところじゃないか、って思うんですけどね。あるデザイン方法がメインストリームになるかならないか、と言うのも偶然が作用するような気がしますし、誰かのマーケティング力のお陰、と言う気もしますし(笑)、それは「良い/悪い」と言うのともまた別な気がしますし。 大体、「良い/悪い」と関係なく、人間側がトレーニングを受けて「使えるようになる」と言うのも事実ですしね。 >まずなにか1つの言語が使えるようになった方が良いのでしょうか? それはそう言うケースも多いでしょう。 あるいは「つまみ食い」が好きならそうすれば良いでしょうし。 目的次第、でしょうね。プロにでもなる、ってんじゃなければ「つまみ食い」もそれなりに有用な気もします。

un-smart
質問者

お礼

Rubyですね。早速少しかじってみようと思います。 理論については絶対的なものはない、ということでしょうか。確かにそう言われてみれば数学や物理を勉強するのとは違うような気もします。 私は時間には余裕があるので(笑)、できることから試してみようかと思います。 わかりやすい回答をありがとうございました。

その他の回答 (3)

noname#89477
noname#89477
回答No.4

結論から言えば、私はあえてC言語をまず理解されることをお勧めします。 なぜ、オブジェクト指向言語でなくC言語なのかと言えば、こうです。 残念ながら日本では、過渡期において間違った考えがまことしやかに語り継がれます。 たとえば、 「日本語で記述ができるから日本人にもわかりやすい」 と日本語COBOLや日本語で書けるプログラミング言語が存在しました。 しかし、プログラミングするのに必要なのは英語か日本語かではなく論理的に組み立てる力が必要なのです。 また、 「関数とサブルーチンは違う」 確かに違う言語も存在しました。 しかし、それもさほど大きな問題でもなく、関数にするかサブルーチンにするかよりも機能分けの仕方のほうが重要であったのです。 このように現在でも、オブジェクト指向と構造化プログラミングは大きな違いがあるかのように騒いでいる人がいますが、構造化プログラミングの基礎である「単一機能」という考えは、すべてのメソッドやサブルーチンでも同じです。 このような余計なことに流されるよりも、まずは構造化プログラミングの基礎を学ばれてからでも、いいのかと思います。 但し、私はひねくれ者ですので、これは少数派の意見として捉えてください。 それから、今はオブジェクト指向全盛期ですので、C言語(構造化プログラミング)の書籍がどれだけあるか、わかりません。

un-smart
質問者

お礼

実はC言語に関しては先日、ろくに下調べもせずに「K&R」を購入してしまったのですが、初心者の私には難しすぎて最初から詰まってしまいました(笑) それだけで諦めてしまうわけにはいきませんので、ひとまず簡単なことから始めてみます。 ご回答ありがとうございました。

  • KI401
  • ベストアンサー率53% (44/82)
回答No.3

計算機科学に興味があるならば、間違いなくSchemeのような関数型言語をやるべき。 C言語を先にやってもいいかもしれないが、どうせ大学でSchemeもCも両方学ぶだろう。 それなら、より計算機科学と関係の深いSchemeに先に手を出しておく方がいい。 C言語はより実践向きだが、Schemeの方が理論向きだ。 それに、一度手続き型言語の考え方に囚われると、計算機科学の理論に適応できないかもしれない。 (事実、Basic畑の友人は計算機科学・Schemeになかなか馴染めていない。) あるいは、どっちでもないとこを取ってJavaScriptもアリだと思う。 というのは、JavaScriptはオブジェクト指向でありながら関数型言語でもある。 # いわゆるマルチパラダイムってやつだ。この事実を認識している人は少ないが。 ブラウザさえあればいつでもできるし、重要なパラダイムである オブジェクト指向と関数型言語の両方を学べるのは大きいと思う。 ただし、下手すればどっちも身につけられない。 (ひどいサンプルや決まり事など、何かとノイズが多いので。) また、最初に手をつけるという意味では最適かもしれないのがRuby。 Rubyも同じようにオブジェクト指向だし、関数型言語と言い切るには少し抵抗があるが、 それに近いことも一応できる。 > まずなにか1つの言語が使えるようになった方が良いのでしょうか? マスターするなんて考えなくていい。必要最小限さえ身につければ、 むしろ他の言語の学習へ移行していくべきだと思う。その方が視野や考え方がずっと広がる。 まぁはっきり言って、初学者に重要なのは何を学ぶかとかではなくて、やる気だから。 何人も友人にプログラミングを教えているが、彼らのプログラミング力は、 単純に努力・やる気・勉強時間といった分かりやすい要素に比例している。 質問者さんも計算機科学に興味があるようだし、そのやる気さえあればすぐに伸びると思う。 是非とも頑張ってほしい。 まぁ、そんなこんなで、計算機科学に特化するならSchemeをオススメしておく。参考になれば幸い。

un-smart
質問者

お礼

計算機科学に対応する言語があったのですね!知りませんでした。 ただ、入門しやすいとのことなので、ひとまずRubyからやってみようかと思います。 時間はありますし、順次Schemeのことも勉強します。 ご回答ありがとうございました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

>それぞれの言語やパラダイムの特徴なども含めて、体系的に勉強することは可能なのでしょうか。 可能は可能でしょうが実用的というよりプログラミング言語学の様な学術的方向に向かってしまいますので、長い目で取り組むべきものかと思います。 私の認識する限りプログラム言語は、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングのパラダイムに分かれている思います。一部クロスオーバーしている言語もありますがそれぞれに違いが大きくあるため、一度に手を付けれるのはよほどの天才かと。 ●手続き型プログラミングの代表言語は、 COBOL,FORTRAN,BASIC,C言語などですね。 ●オブジェクト指向プログラミングの代表言語は、 Smalltalk,Java,C++です。 ●関数型プログラミングの代表言語は、 Haskellです。SchemeとCommon Lispは関数型寄りですが純粋な関数型ではありません。 代用的な言語を挙げましたが、現在の主流はオブジェクト指向プログラミング言語だと思いますので、JavaかC++をお勧めします。特に0から始めるならJavaが良いかも知れません。 それとパラダイムとは別に、用途別にプログラミン言語は選ばれている状況がありますので、そちらも説明しておきます。 ●WEBサイト用。ユーザーの入力に反応するWEBサイト構築用。 C/C++言語、ASP.NET、Java、Perl、PHPなど。開発規模や必要反応速度などで言語が選ばれます。例えば「はてな」だとPerlが使われているらしいです。それと楽天の一部はPHPで書かれています。 ●OSやプログラミング言語自体の開発用。 C/C++言語。 ●ゲームの開発用。 C/C++言語。C#を使った開発もアマチュアでは可能。 ●市販パッケージソフトなどの一般アプリ。 C/C++言語が多いかと。ただ、端末など業務用だとVisualBasicも多く使われているみたいです。 ●メインフレーム。銀行のシステムなど。 COBOLを始めC言語とか色々です。 ●大学などの研究用。 FORTRANが結構使われているらしいです。 参考になれば幸いです。

un-smart
質問者

お礼

やはり初めから網羅しようとするのは困難なのですね。実用性という見方も大きいようですし、手のつけられるところから調べてみようと思います。 大変ありがとうございました。

関連するQ&A

  • シミュレーションをプログラミングにより行う場合、何から勉強すべきでしょうか

    土壌物理学を専攻している者です。現在、土壌中での物質移動のシミュレーションを何らかのプログラミング言語を用いて行いたいと考えております。ただし、プログラミングの初学者のため、何から勉強して良いか分かりません。お勧めの教科書などあれば教えてください。

  • プログラミングの勉強法

    プログラミングに興味があり、独学で勉強しようと思ってます。PCはそこそこ使いこなせる程度ですが最初に勉強するとしたらどの言語がいいですか?javaとかC++に興味があるのですが・・・

  • プログラミング

    この春から東京理科大学理工学部情報科学科に入学した者です。ですが、今まで自分は全くパソコン を使った経験がありません。「ブラインドタッチだけ遅いが出来る」というような段階です。 そんな自分が、予習もかねてプログラミングを少しずつですが勉強していこうと決めました。 そこで質問ですが皆さんは、プログラミングを一から始めるときに、何から入りましたか?どのようにして始めましたか?お薦めの書籍などはありますか? 今、自分はかなり焦っています… とにかく情報が欲しいです。頼りないですがよろしくお願いします。

  • プログラミング

    この春から東京理科大学理工学部情報科学科に入学した者です。ですが今まで自分はパソコンを使った経験がありません。「ブラインドタッチだけなら出来る」というような段階です。そんな自分が大学での予習もかねてプログラミングを少しずつですが勉強していこうと決めました。そこで質問ですが皆さんは、プログラミングを一から始めるときに、何から入りましたか?どのようにして始めましたか?お薦めの書籍などはありますか? 正直、今、自分はかなり焦っています… とにかく情報が欲しいです。 こんな自分を助けてください。 よろしくお願いします。

  • プログラミング

    最近、プログラミングに興味を持ちはじめました。 プログラミングを独学でゆっくりと勉強しようと思っているのですが、Windowsでもできますよね? 始めるにはどの言語が分かりやすいですか? また、分かりやすい解説書やHPがあれば教えて下さい

  • プログラミング言語を作るには

    オリジナルなプログラミング言語を作ってみたいと考えています。 ただ、どうやって作ればいいかがわかりません。 私は、今のところ、Perl、なでしこ等々、簡単なプログラミング言語での プログラミングしか出来ません。 しかし、プログラミング言語を作ることによって、 プログラミングの勉強にもなると考えているのですが まずは、簡単なものでもいいので、それらしいものを作るには 何から勉強を始めればいいでしょうか、 又、他の言語を覚える必要はありますか。アドバイスを御願いします。 もしくは、例えば、参考になりそうなWEBサイトや、 書籍等々でも、結構です。宜しく御願いします。

  • プログラミングの勉強をかねてHPを作りたいです

    将来プログラマになりたいので、プログラミングの勉強もかねてホームページを作りたいと考えている者です。 そのホームページは、できる限り排他的に、身近な友人のみで、写真や動画などを使い易く共有できる仕様にしたいと考えています。 ちなみに、HPを作る上での私の知識は0に等しいです。 そこでいくつか質問です。 1・ホームページ作りは、プログラミングの勉強になるでしょうか?また、Yesの場合、どんなプログラミング言語が適しているでしょうか? 2・ホームページを作る上で、何かオススメの書籍はあれば、教えて頂きたいです。HTMLやCSSのみでなく、プログラミングも含まれた本があれば嬉しいです。 3・赤の他人は見られないようにしたいのですが、そのためのオススメの手段や、それが記載された書籍やサイトなどがあれば、教えて頂きたいです。

  • プログラミングについて

    素朴な疑問なんですが、皆さんプログラミングを始めるきっかけって何なんでしょうか? 僕の場合、パソコンをやり始めてまだ1年経っていないんですが、少しでもスキルアップしたいのと、在宅ワークに役立つと思って、あるJavaScriptのメルマガを見ながらやり始めました。JavaScriptが一番初心者向きのプログラミング言語らしいので。 でもプログラミングはやっぱり難しいです。独学で、しかもちゃんとした書籍も買わずにモノに出来るんでしょうか?

  • プログラミング言語の習得について

    プログラミング言語の習得について こんにちは。某大学の理工学部数学科に通う4年生です。 プログラミング言語について質問させていただきます。 僕は先日基本情報技術者試験を受験しました。 その試験ではプログラミング言語を1つ習得しないといけなかったためC言語の入門書を一冊勉強しました。 今家にはC++とJavaの入門書、C言語の中級書もあります。 そこで質問なのですが、 続けてプログラミング言語を勉強するには、C言語の中級書、上級書というように1つの言語を徹底的にマスターした方がいいですか? それとも、C++、Javaの入門書を一通りやってC以外の言語も一応使えるようにした方がいいですか? ちなみに大学院に進学する予定なのでまだまだ勉強できる環境にあります。 宜しくお願いします。

  • 高校三年生なのですがプログラミングの勉強始めたいと思っています。

    高校三年生なのですがプログラミングの勉強始めたいと思っています。 今はパソコン?プログラミングについての知識はほとんどありません。 この状態からgoogleなどの企業に就職できるレベルまでになりたいと思っています ここで質問なのですが 1.プログラミング言語よりパソコンの仕組みから学び始めた方が良いのでしょうか? 2.その場合どのような勉強方法で学べば良いでしょうか? 独学で学びたいので本の名前を挙げていただけたら光栄です。 よろしくお願いします!

専門家に質問してみよう