PHPとLinuxサーバの管理で生きています。20代前半でWeb系に2年くらいいます。PHP以外の言語を使えるようになりたいのですが、これから勉強するならばどの言語をはじめるべきでしょうか? お勧めの言語とライブラリなど組み合わせを教えてください。メリットとデメリットも知りたいです。PythonやJavaまたはRubyやPerlで悩んでいます(社内ではJavaを勧められています)。サーバサイドがいいです。実務で使いたいです。会社の中ではオープンソースのチームに居て、自分自身もそれに満足しています。よろしくおねがいします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/25 18:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント20pt

この先の業務によって変わると思います。

一般論として、基幹系業務に就くならJava(EJB)、Webフロントエンドを担当するなら Ruby でしょうか。


オープンソースを使い続けるかどうかは、会社の方針があると思います。

GPLについては、過去質問「オープンソースライセンスのGPLにおけるリンクの扱いについて」などにも記されているように、日本の開発習慣にそぐわない点もあるので、GPLな言語だけで大丈夫かと言われると、何とも言えません。

余裕があれば、C#も学んでおくと良いかもしれません。

id:hibariya

ありがとうございます。Ruby面白そうです。C#は綺麗なソースをみたときからこっそり好きです。

2008/05/18 19:58:59
id:garyo No.2

回答回数1782ベストアンサー獲得回数96

ポイント20pt

>PythonやJavaまたはRubyやPerl

*Perl vs Ruby

Rubyは元々「Perlをオブジェクト指向にして使いやすくしたい」ということから作られているので

Perlを学ぶよりはRubyを学んだほうがいいと思います(Rubyの名前は6月の誕生石がパールで次の7月がルビーだからということにちなんでいるそうです)

*Java vs Ruby

流れ的にはJavaからRubyへ、となっているようでs。

JavaからRubyへ ―マネージャのための実践移行ガイド

JavaからRubyへ ―マネージャのための実践移行ガイド

  • 作者: Bruce A. Tate
  • 出版社/メーカー: オライリー・ジャパン
  • メディア: 単行本(ソフトカバー)

http://www.google.co.jp/search?q=Java%E3%81%8B%E3%82%89Ruby%E3%8...

「静的オブジェクト指向は設計者が苦労を背負込むシステム」こちらでは

http://blogs.wankuma.com/nagise/archive/2008/05/10/137150.aspx

逆にJavaのような静的オブジェクト指向といのは初心者の軍を率いて戦うには向いていると思います。業務用システムのような、大量の仕様を人海戦術で捌かなければならない状況によくマッチする。

RubyなどのLLは中級以上で少数の人による開発に向いていると書いてあります。

静的型付け言語に比べてRubyの動的型付け言語はとても自由で面白いです。少しさわってみるだけで「こんな考え方もあるんだ」と驚かれるでしょう。

*Python vs Ruby

共に構造化スクリプト言語で似ているので好みの問題かも知れません。

*ライブラリ

Rubyのライブラリはgemsで管理されています。「gem install ライブラリ名」で大体インストールできます。一番人気はRuby on Railsでしょう。

個人的なお勧めはRubyですが、質問者さんの状況を考えると以下の考えもあります。


>サーバサイドがいいです。

サーバーサイドとのことなので、同じような言語になってしまいますが、覚えるなら、カバーする領域がまったく異なるものの方が、問題解決能力が広がるという点でいいと思います。

よく言われるのはコンパイルして実行する言語を1つとLLを1つ覚えるというものです。

既にPHPを覚えられているのであれば、クライアント側のソフトも作れるJavaを選択するというの手もあるかも知れません。

id:hibariya

今まで全く避けてきたRubyに興味が出てきました。

gemとは素敵な名前ですね。Ruby on Railsは是非チェックしてみたいと思います。

コンパイラ言語も覚えておきたいですね、やることが沢山あります!

Pythonには少し興味があったのですが、今回はその分Rubyに注力しようと思います。

ありがとうございます。

2008/05/19 07:05:20
id:ahirusan No.3

回答回数229ベストアンサー獲得回数3

ポイント20pt

やはりJavaとRubyですね。どちらもJava系と言えますが。Perlは言語自体は簡単ですが、正規表現(1)正規表現(2)を覚えるのが大変です。しかし、正規表現を覚えることで多様な面でのスキルアップに繋がります。Perlのみならず sed/awkなどのスクリプト言語、find, grep, vi, emacs などのツール(コマンド)使いに直結します。もちろんJavaでも正規表現は使用できますし、DBMSへのアクセス言語であるSQLでも使えます。特にこれらのスクリプト言語はLinux(UNIX)のシステム管理には必須ではないのでしょうか。

なので、WEB面ではJava, Ruby、システム管理の面ではPerlを勉強することをお勧め致します。ソフトウェアエンジニアが複数言語に精通しているのは割と普通のことです。複数の言語を同時に勉強しても良いでしょう。

id:hibariya

むむ、正規表現ですね。これは是非きちんと覚えておきたいです。

ひとの書いたawkコマンドはいまだ魔法にしか見えません。

Java+Ruby+Perlですね。確かに同時に勉強するのも効果がありそうです。

ありがとうございます。

2008/05/19 07:17:22
id:rubikitch No.4

回答回数120ベストアンサー獲得回数22

ポイント20pt

今はRuby on RailsがアツいのでRubyがいいと思います。

今、Ruby on Rails本ラッシュなのでどれかを当たってみましょう。

RubyやPerlやPythonといったスクリプト言語をやっていると、

日常業務の自動化を促進できるというオマケがついてきます。

オマケというか、スクリプト言語はもともとそれが主眼ですが…

素早いスクリプティングができるのが魅力です。

ああ、めんどくせぇと思ったらスクリプト言語の出番です。

最終的にJavaをやることになったとしても、スクリプト言語を身に付けておくと楽です。

id:hibariya

ちょちょっと書いてさっと解決できる。やはりRubyですか、覚えるのが楽しみです!

詳しくは知らないですが、この頃はRubyの案件増えたみたいですね。

ありがとうございます。

2008/05/19 07:15:42
id:ahirusan No.5

回答回数229ベストアンサー獲得回数3

ポイント20pt

自分の回答にコメントを付けてしまいましたけど、5回まで回答できるんですね。Hatena初心者なのでご容赦願います。

サーバーサイドということであれば、PHPもある意味サーバーサイドですね。もちろんサーバーサイドで代表的なのはJavaで記述したServletなどがあり、

はじめてのJSP&サーブレットプログラミング―Eclipse WTP 2.0対応 (TECHNICAL MASTER)

はじめてのJSP&サーブレットプログラミング―Eclipse WTP 2.0対応 (TECHNICAL MASTER)

  • 作者: アイティーブースト
  • 出版社/メーカー: 秀和システム
  • メディア: 単行本

、JavaScriptなどをサーバーサイドで使用することによる動的WEBページの生成なども可能です。

サーブレット&JSP逆引き大全650の極意

サーブレット&JSP逆引き大全650の極意

  • 作者: 川崎 克巳
  • 出版社/メーカー: 秀和システム
  • メディア: 単行本

JSP業務アプリケーション短期開発入門

JSP業務アプリケーション短期開発入門

  • 作者: 竹形 誠司
  • 出版社/メーカー: ラトルズ
  • メディア: 単行本

id:hibariya

ぼくも初心者ですです。ポイントの使い方もいまいち分かっていないかもです。

(ポイントについての指摘や罵倒を是非!)

> JavaScriptなどをサーバーサイドで使用

こんなこともできるんですね!

Javaは大きくて複雑でとても奥が深そうなので、長い目で勉強していきたいと思います。

お勧めいただいた本、チェックしてみます!

2008/05/19 07:25:22
  • id:ahirusan
    追伸: C言語、C++言語なども必須言語と言っていいでしょう。また、Linux使いであればC言語によるPThreadプログラミングやSYSTEM Vの主機能であるセマフォ、共有メモリ、メッセージキューに関する知識があると、プログラマとして楽しく生きてゆくことができまし、かなり大きなシステムを組むことができるようになります。オープンシステムによるミドルウェア開発などには上記3要素は必須項目です。結果的にはHTML,XHTML,XML、C,C++、Java,JavaScript,PHP,Ruby、Perl,sed,awkなどの技術要素が複雑に絡んできます。これらを知っていて、初めてソフトウェアエンジニアの中級者と言えるレベルです。
  • id:ahirusan
    4番目の回答、異常に見づらいものになってしまってごめんなさい。「JSP」と書いてあったんです。
  • id:hibariya
    ahirusan いえいえありがとうございます!
    > これらを知っていて、初めてソフトウェアエンジニアの中級者と言えるレベルです。
    肝に銘じておきます。
    ミドルウェアの開発もできるようになれた自分がまだ想像できませんが、徐々に確実に身につけたいです。
  • id:ahirusan
    // Small sample code for Java

    public class Hello {
    static public void main(String[] args) { // the same as (String args[])
    System.out.println("Hello Java World!") ; // % java Hello
    } // Hello Java World!
    } // message display on your screen.
  • id:ahirusan
    spaceでつけたインデントがなくなってしもた。こういうのを非常に下品なコードと呼びます。通常であれは、エディタでTABを使用して4カラムづつインデントさせます。

    public class Hello {
      static public...... {
        ........ ;
      }
    }
  • id:dev_zer0
    サーバ管理だったらまずはbashを覚えるべきだと思う
    あと、PHPとPerlは文法的には対して変わらない
     
    PHPを知っていればPerlではまることは多分ない
  • id:hibariya
    ahirusann さんサンプルありがとうございます。
    Javaは綺麗に書けるのがとても魅力的だと思います。
    tomcatせっかく入れたので、少し練習してみますね!
  • id:hibariya
    dev_zer0 さんありがとうございますです。
    bashもちゃんとおさえておきたいです。
    サーバの起動スクリプトくらいちょいちょい書けるようになりたいです。
    Perlは何となく読める感じなのですが、書く練習もしてみないとですね><
  • id:ahirusan
    codeが綺麗だと感じる感覚は、非常に重要なものです。貴方にはとてもすばらしい素質があります。ソフトウェアの美学を追究してくださいね。そのためには、オブジェクト指向、デザインパターンを勉強することをお勧めします。特にデザインパターンには目から鱗もののコードが大量にありますから。デザインパターンを簡単に分類すると 1.生成、2.振る舞い、3.構造、という三要素の記述になります。コードを書くのもそうですが、設計するのがとても楽しくなります。がんばってください。
  • id:garyo
    Rubyで面白い所は、徹底してオブジェクト指向な所ですね。
    数字も文字列も全部オブジェクト。
    puts 20.to_s+8.to_s
    puts "1234".to_i*2
    数字や文字列に直接メソッドが書けるのは新鮮でした。
    だから、型はすべてオブジェクト型。
    こんなこともできます。
    def add(x,y)
    return x+y
    end

    puts add(1,2) #答えは1+2で3
    puts add("1","2")#答えは"1"+"2"で"12"
    '+'というメソッドを持つオブジェクト同士を上記の関数に与えるとちゃんと答えを返すのがすごいと思いました。
  • id:humiya_r
    こだわる必要はない…

    どれかに一つの言語にこだわる必要はないと思います。
    それぞれ一長一短があるので…

    どれが一番食べていけるか?
    という観点で言ったら

    非同期通信とjavascriptのAJAXと答えておきます。
    AJAXは言語ではありません(仕組みです)が

    今一番求められている技術です

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません