プログラミングビギナーなのですが、この夏の間に三流プログラマーぐらいになりたいです。
何から始めたら良いでしょうか。
今、興味があるのはPerl、PHP、Ruby、JavaScript(Ajax)、Haskellあたりです。
質問者のレベルはPerlは「初めてのPerl」がそろそろ読み終わる程度、PHPはPerlよりは少しマシぐらいです。
それ以外は未経験だとお考えください。
オブジェクト指向は概念的には理解した気になっていますが、実際に有効活用できるほどのスキルはありません。
また、Javaには苦手意識があります。
プログラムが得意な皆様、ご助言をよろしくお願いします!
冒頭に「夏休み」と書いておりますが、夏休み後ももちろん継続して勉強するつもりです。
Rubyやりましょう、Ruby!!
スクリプト言語なら、おそらくこれが最も綺麗に書けます。
で、Rubyといえば、はてなダイアリーの元にもなったtDiary。
こんなのを「教材」にさせてもらって全面的に書き換えてみる、
などのアプローチで、かなり実践的なテクニックが付いてくると思います。
Perlが分かっていれば、Rubyの言語仕様もすぐに覚えられます。
あとはいじりまくっているうちに、どうとでもなってきます。
言語というのは、自然言語でもプログラミング言語でも、
理解は後からでいいから、とにかく使ってみることが大切ですよね。
時あたかも7月。誕生石ならルビーです。
今取りかかれば、きっといいことありますよ。
実りある夏をお過ごしください!!
私はPHPをお勧めします。
柔軟で、親和性が高いのが理由です。
私の場合は、Web周りで何かが出来る言語が好きで、やっぱり実際に自分の目で見れる、他人にすぐに見てもらえる。
この点で「やった実感」があって面白いです。
これから結構流行るとも思いますし。
あと、上のリストにはありませんでしたが、
XMLもやってみると面白いと思います。
何をやるにせよ、プログラムは面白いので
がんばってください。
ご回答ありがとうございます。
すぐに形になるのがPHPの良いところですよね。
私は2005年12月頃に勉強し始めたのですが、それでもそれなりに使えるようになりましたし。
その反面、駄プログラムも量産されてしまっているような気がします。
フレームワークのソースを眺めたりしながら、正攻法を学んでおいた方が良いかもしれませんね。
XMLは、簡単なXSLTならなんとかなりますが、ややこしいのはちょっと苦手なので余裕が出てきたらもう少し突っ込んで勉強してみます。
simple_xmlが使えるPHP5では扱うのも簡単ですし、有効活用できるかもしれません。
今後はもう少し突っ込んだアドバイスをいただけると助かります。
具体的に、「このWEBサイトを読んでみると良いよ。」とか「このソースを読むと勉強になるよ。」あるいは「この書籍は間違いない!」などの情報をいただけると嬉しいです。
よろしくお願いします。
(お時間に余裕がある方は質問者のレベルを人力検索の回答履歴やダイアリーにて確認していただけると更に助かります。)
多少苦手でも、Javaをお勧めします♪
今意外と人気もありますしね^^
ご回答ありがとうございます。
Javaはいったいどこで人気があるのでしょう。
大規模なエンタープライズAP開発でしょうか。
個人が趣味としてのプログラミングでJavaを勉強することメリットを教えていただけると幸いです。
現状ではレンタルサーバなどもJavaに対応しているものは少なく、初学者に向く言語だとは思えないのですが。
オブジェクト指向を学ぶためにはJava学習も有益だとは思うのですが、別のLeight Weightなスクリプト言語(Rubyなど)でもオブジェクト指向を身につけるのは可能でしょうし。
(この疑問が晴れればJavaも勉強する気になれそうなのですが…。)
今後Javaをオススメされる方は上記の疑問に対する回答を含めていただけると幸いです。
Rubyやりましょう、Ruby!!
スクリプト言語なら、おそらくこれが最も綺麗に書けます。
で、Rubyといえば、はてなダイアリーの元にもなったtDiary。
こんなのを「教材」にさせてもらって全面的に書き換えてみる、
などのアプローチで、かなり実践的なテクニックが付いてくると思います。
Perlが分かっていれば、Rubyの言語仕様もすぐに覚えられます。
あとはいじりまくっているうちに、どうとでもなってきます。
言語というのは、自然言語でもプログラミング言語でも、
理解は後からでいいから、とにかく使ってみることが大切ですよね。
時あたかも7月。誕生石ならルビーです。
今取りかかれば、きっといいことありますよ。
実りある夏をお過ごしください!!
ご回答ありがとうございます。
はてなダイアリーの元がtDiaryだったとは初耳です。
有益な情報ありがとうございます。
Rubyはキレイなソースを書けて気分が良いみたいですね。
少し前まで(Ruby on Railsが流行る前まで)海外ではPythonの方が人気だったようですが。
ある程度磨き上げられたものを全面的に書き換えるのは私のスキルでは難しそうですが、夏休みの自由研究としては面白いかもしれないですね。
もう少しPerlを突っ込んで勉強してからRubyに移ろうかと思っていたのですが、ちょっとRubyに浮気してみても良いかな、という気分になってきました。
また、言語は使ってみるのが大切、という意見には賛同です。
(大学時代にならったドイツ語は全く使わないのですっかり忘れてしまいました…。)
それはそうと、今はすでに8月になっている気がするのですが。
TomCatさんクラスになると時空も超えられるということでしょうか。
色々とありがとうございます。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1939228
こちら参考になりそうです^^
脊髄反射の回答は不要です。
今後はPersonalized adviceを希望します。
なんて書くと少しワガママだと思われてしまうでしょうか。
ふーむ、案外難しい質問ですね…。質問者さんのスキルレベルがよくわからないし。
やはり何か目的を持って小さいプログラムでもいいのである程度のちゃんとした機能があるものを作り上げることが重要です。
大昔だと「3目並べ(tic-tac-toe)」や「ハングマン(hungman)」程度でそれなりに面白かったんですが、今だと何がいいですかねえ…。
ちょっと高度かもしれませんが、Google Mapsあたりを叩いてみてはどうでしょうか。
http://www.geekpage.jp/web/google-maps-api/
などをまずはなぞってみることから始めてみては?
ご回答ありがとうございます。
自分のスキルレベルを説明するのってなんだかとても難しいです…。
小さいプログラムを作ってみるのは確かに良い訓練になりそうですね。
今までは言語仕様を学んでいただけで、作業用のスクリプト以外にまともな何かを作ったことがないので、達成感を得るためにもそういったアプローチは良いかもしれません。
Google Maps APIはちょっと前のAWS同様に飽和している印象があって、なんとなく避けてしまっていたのですが、題材も多いのでサンプルプログラムを見ながら少し勉強してみようと思います。
それはそうと、Kumappusさんの回答は幅広いですが、いくつかの分野ではかなり深いですよね。
得意分野はどのあたりなのか気になるところです。
ありがとうございました。
まだまだ回答を募集いたします。
良い回答にはポイントはケチらないつもりです。
よろしくお願いいたします。
「コンピュータの気持ちが分かるプログラマ」になりたいと(勝手に)仮定するとCとアセンブラがお勧めです
C++も加えてもいいです
javaやperlなどのインタプリタは内部で何をやっているか全く分からず教育に良くないです
超有名なベンダーやアプリ開発の会社のエンジニアはプロのはずなのですがこういった言語で育っているせいか無茶苦茶なコードを書きます
ただ確かに便利なのは認めます
ご興味があれば終了後にいわしへ推薦図書を書いておきます
ちなみに私はjava専門のエンジニアです
ご回答ありがとうございます。
今までの回答者の方々とは全く違ったアプローチで新鮮でした。
「コンピュータの気持ちが分かるプログラマ」に憧れる部分もあるのですが、それは次のステップにしようかな、と考えていました。
時代の先端(not最先端)まで学んだ後、時代の流れを逆行するように学んでいって、最終的にマシンに近づいていけたら良いかな、ということです。
ただ、あくまでも今のところ趣味ベースで考えているので、そこに到達するまでにもっと色々とやっておきたいことがある、というのが率直な感想です。
推薦図書の件、次の回答に記載しておいていただけませんか。
今すぐ、というわけにはいきませんが、他の勉強に飽きた、行き詰った時に方向転換して読んでみようと思います。
質問を否定するようでなんなのですが、いろいろな言語をひととおりやってみることをオススメします。
それぞれの言語にいいところと悪いところがありますし、どれが性に合うかは人それぞれですので。
できればハイレベルなコードを参考に読むのが一番よいです。
どの言語を選んでもダメなコードはかけますし、美しいコードもかけます。オブジェクト指向もそれぞれの言語なりに実装されています。
あえて言うならば、作ったプログラムを使ってもらえる環境の方が大事でしょうか。
意欲もわきますし、実際に使われて始めて分かる問題も多いです。
ここまで言っておいてアレですが、個人的な趣向としては「はてな」でも使われている Perl です。
ご回答ありがとうございます。
質問を否定した回答にはなっていないと思います。
いずれにせよ、色々と勉強してみるつもりですが、とりあえずこの夏何が良いかな、という質問ですので、最後Perlというアドバイスもあり、回答としては問題はありません。
ただ、「どの言語を選んでも」の部分はちょっと納得しかねる部分があります。
同じことをやるにしてもキレイなソースになるものと読みにくいソースになるものがあると思います。
(このあたりは賛否両論だと思いますので、あまり深入りするつもりはありませんが。)
また、質問文に明記し忘れたのですが、もう少し具体的な提案をいただけると助かります。
例えばPerlをオススメしてくださるのであれば、Perlのハイレベルなコードはこんなものがあるよ、などと教えていただけると勉強に着手しやすくなります。
と辛口になりましたが、「それPlaggerで(ry」な世界に興味津々ですので、Perlは勉強してみようと思います。
質問文も少し変更しますが、以後はもう少し具体的な提案も書いていただけると幸いです。
(と思ったのですが、質問文は修正できないのですね。)
PHPのフレームワークをお勧めします。
私はPHPとPerl、Rubyができる程度です。
特に、三流プログラマーぐらいになりたいということであれば
PHPのフレームワークに挑戦されてはいかがでしょうか?
私は独学でPHPを勉強し、初めてフレームワークをやったときに
「ああこれが、オブジェクト指向か」
と心から理解することができ、
また、柔軟性のあるプログラムになるので非常に自信がつき、PHPの初心者を脱出できた感じが得られました。
超極めるPHP
ご回答ありがとうございます。
ご自身の経験を元にしたご助言ありがとうございます。
特に「PHPの初心者を脱出できた感じが得られました。」というフレーズは今の私にはインパクトが大でした。
ちなみに「超・極める! PHP」は持っており、一通り目は通しましたが、消化し切れておりません。
なんとなくsynfony、Ethna、Mapleなどフレームワークが乱立している印象があり、どれを勉強すべきか迷ってしまいます。
考え方はどれも似たようなものなのかもしれませんが、やはり時間の初期投資がありますので、将来性があるものを勉強したい!という気持ちなのですが、toyoshiさんはどのようにフレームワークを決めたのでしょうか。
引き続き回答を募集いたします。
Perl に限定したとして、
http://www.amazon.co.jp/gp/product/4756130577/
を読むことをオススメします。
なぜ Perl を使うのか?という問いにはっきりと答えてくれる本だと思います。ただし、基本的な文法の説明等は一切ありませんのでご注意を。
あと、サンプルコードは大量に読むに越したことはありません。
に大量のモジュールがあり、これ自体が Perl の最大の資産だと思います。
ご回答ありがとうございます。
この本は以前別の質問をした時にもオススメされました。
良書なんでしょうね、きっと。
個人的には近日中にPerlベストプラクティスの邦訳が出るようなので、そちらも気になってます。
http://www.oreilly.co.jp/books/4873113008/
CPANのコードを読む、というのは考えたことがあるのですが、正直どれから読んだら良いのか分からないです。
CPANの歩き方的な「素人はこのあたりから読んでみなよ!」といった内容を紹介したWEBサイト(blog含む)はないのでしょうか。
ご存知でしたら教えてください。
参考になるご意見ありがとうございます。
>プログラミングビギナーなのですが、
>この夏の間に三流プログラマーぐらいになりたいです。
>何から始めたら良いでしょうか。
コンパイラの本を一冊読破。
コンパイラの基礎理論の中にプログラミングに必要な要素が
ほとんど含まれているので。
私が10年以上よむぞーよむぞーと積読しているのが
Compilers 1/e plus Selected Online Chapters from Compilers 2/e Update Package
です・・・orz
(とうとうIT関連から退職してしまいましたが)
上の本は古典でオススメですが入手困難ですね。
学校の図書館にはあるでしょう。
いまなら、いい本が出ているでしょうなあ。
薄めで読みきれそうな本を書店で探してみては?
こ、コンパイラの本ですか。
素人が手を出しても大丈夫な領域なのでしょうか。
なんとなくすごい勢いで火傷しそうな気がするのですが、いかがでしょう。
とりあえず、すぐに動いてわーいわーいと言う気分になれる方が今の私には合っているようなので、コンパイラ本は心の引き出しにしまっておこうと思います。
表面をなぞるのに飽きてきたら、腰をすえて読んでみたいですね。
>オブジェクト指向は概念的には理解した気になっていますが、
>実際に有効活用できるほどのスキルはありません。
オブジェクト指向といってもピンからキリまで。
ていうか、派閥があったりするからいやらしい。
とりあえず、C++の抽象クラスと、デザインパターンをおさえとけばよろしかろーです。
C++については、いろいろ名著がありますが:
プログラミング講義C++ (柴田望洋プログラミングシリーズ)
を流して読めば判った気分になれます。
デザインパターンについては:
が古典ですが・・・ちょっと難解か
一度は触れて見るのもよし。
「委譲」と「継承」の使い分けですなあ。
こういう考えもあるんだなあ、くらいにとらえてくださいな。
入門書もいろいろ出ているようですから、薄めの本を読んでみてください。
とどめにSTLを使えれば文句なしですねえ。
Standard Template Libraryプログラミング
ちょっと古いか・・・時代を感じるなあ。
まあ、いろいろ本が出てるからよさげなものをどぞ。
ご回答ありがとうございます。
色々なご意見をいただきたいと思い、この質問をしてみたのですが、本当に色々な意見が出てきてビックリしております。
今度はC++ですね。
apple-eaterさんのオススメは今の私にはちょっと(どころじゃなく)厳しい感じがしますが、少し本格的にプログラミングを勉強しようと思った頃に再度この回答を参考にしてみようと思います。
ありがとうございます。
将来コンピュータ業界で生きて生きたいなら、PHP、JAVAをお勧めします。でもCも捨てがたいですね。
コンピュータ言語とかも大切ですが、その前のファイル環境、レコード環境も勉強してください。
指導担当の人が泣いています。
言語も大切ですがその前も大切です。
その上でオブジェクト指向は勉強してください。
ご回答ありがとうございます。
将来コンピュータ業界で生きていきたいのかどうか、正直よく分かりません…。
今回は趣味の話だとお考えいただけると幸いです。
PHP、Javaをオススメされる理由は何でしょうか。
2つ目の回答に対する返信でもコメントしたのですが、個人が趣味で勉強する場合、あまりJavaは向かないような気がするのですが、いかがでしょう。
ファイル環境、レコード環境とはどういう意味でしょうか。
いまいち理解できませんでした。
一般的な用語でしょうか。
Googleで検索してもレコード環境についての情報は出てきませんでした。
言語の「その前」とは何なのでしょうか。
「その上で」と前提になっている部分が理解できそうにないので、オブジェクト指向はとりあえず横に置いておくしかなさそうですね…。
ご紹介されているURLでの議論も素人の私には議論のための議論、学生の言葉遊びにしか見えませんでした。
もう少し詳しかったら頷きながら読めるのでしょうか。
残念です。
ご回答ありがとうございます。
はてなダイアリーの元がtDiaryだったとは初耳です。
有益な情報ありがとうございます。
Rubyはキレイなソースを書けて気分が良いみたいですね。
少し前まで(Ruby on Railsが流行る前まで)海外ではPythonの方が人気だったようですが。
ある程度磨き上げられたものを全面的に書き換えるのは私のスキルでは難しそうですが、夏休みの自由研究としては面白いかもしれないですね。
もう少しPerlを突っ込んで勉強してからRubyに移ろうかと思っていたのですが、ちょっとRubyに浮気してみても良いかな、という気分になってきました。
また、言語は使ってみるのが大切、という意見には賛同です。
(大学時代にならったドイツ語は全く使わないのですっかり忘れてしまいました…。)
それはそうと、今はすでに8月になっている気がするのですが。
TomCatさんクラスになると時空も超えられるということでしょうか。
色々とありがとうございます。