• ベストアンサー

第二外国語はどれにしよう。。。

お世話になります。 今までJava言語を勉強し、1段落ついたと自分では思っています。(別に極めたわけじゃないです。) main関数(public static void main(String args[]))くらいは参考書みないでも書けるレベルです。 そこで第二外国語としてなにか新しい言語を勉強しようと思っているのですが、なにがお勧めでしょうか? 自分は ・理学系大学院卒(情報系ではないです。コンピュータは主にワープロ&表計算) ・会社の新人研修でC言語を2週間(当然理解できませんでした。) ・仕事で初めてJava言語を使いました。職歴は2年半 希望としては ・環境はフリー ・環境構築は楽 ・Windowsでできること。Cygwinを使うのはOK このままJava言語一筋でも当分仕事にはこまらなそうなのですが、複数の言語をマスターすることでその根底にある芯の部分をつかみたいと思います。 ネットでパイソンなるものを見つけましたが、 他にもお勧めはあるのかなぁと思い質問しました。

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

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.4

こんばんは、chi-kon さん。 こちらこそ丁寧なお礼、どうもありがとうございます。 回答する方もとっても励みになります~。m(__)m >もし各言語の使い手はこう呼ぶというのをご存知でしたら >教えてください!! まずは素直な方から。 Python→Pythonian(パイソニアン) Ruby→Rubyist(ルビイスト) 「Pythonian」は本来「Monty Python (Flying Circus)」愛好者のことで、 Guido さんがモンティ・パイソンのファンであることがうかがえます。 (私は「Mr Bean」の方が好きだけど) ハッカー(達人プログラマ)はモンティ・パイソン好きが多く、 彼らの習俗にもモンティ・パイソン文化が染みついています。 「SPAM(迷惑メール)」もモンティ・パイソンのギャグに由来しています。 Ruby の方は「Ruby hacker」というのもあります。 こちらはまつもとさん以下 Ruby のソースレベルでゴリゴリ改良したり 大規模なスクリプトをバリバリ書いてる人たちで、私には縁がありません。 また「Rubyist」になるにも条件があって、ただ利用しているだけではなれません。 条件は「Ruby に対して単なるお客さん以上の気持ちを持っている」こと。 ここでこうやって宣伝してる私にも Rubyist を名乗る資格はあるかなぁ。 これに該当しない人は単に「Ruby user」なのでしょうか。 一方、Perl の使い手はちょっと変わっていて、 「Perl Monger(パール・モンガー)」が正式です。 「pearl monger(真珠売り)」との掛け言葉でしょうが、「monger」には 「つまらないことに夢中になる人」の意味もあってしゃれがきついですね。 「pearl monger」を検索したら、スペリング修正候補で 「"perl monger" じゃないの?」と聞かれました。 Google は Perl Monger を知っている! 「Perler」もけっこう使われていますね。 そういえば「UNIX Magazine」に歌代和正さんが昔書いていた 「Little Perl Parlor」という連載もありましたっけ。 閑話休題。 Java と Python とでオブジェクト指向の捉え方がどのように異なるか、 Java のコードを Python スクリプトに書き直してみると面白いです。 私は今 Ruby でそれをやっています。 Python の参考書は以下のようなものが出ています。 http://www.oreilly.co.jp/BOOK/pythonp/ http://www.oreilly.co.jp/BOOK/python/ http://bookshelves.at.infoseek.co.jp/Html/script_language.html#Python ・他の言語について COBOL のこともおっしゃっていたので、OpenCOBOL についてもご報告します。 OpenCOBOL は西田圭介さんらが開発しているフリーの COBOL で、 現在は SourceForge が開発の舞台になっています。 ちなみに、西田さんと Ruby のまつもとさんはかつてネットワーク 応用通信研究所にいたときの同僚だったそうです。世間は狭いですね。 http://www12.ocn.ne.jp/~peg/ http://www.coboler.com/ http://www.ae.wakwak.com/~minen/cobol/index.htm OpenCOBOL を Windows で動かすには、Cygwin またはMinGW 環境をセットアップする必要があります。 MinGW(Minimalist GNU for Windows)とは Cygwin 同様 Windows 上に GNU 環境を構築するものですが、コンパイラなど最小限のもののみ インストールされ、ランタイムは可能な限り MS のものを使います。 http://hp.vector.co.jp/authors/VA028002/mingw/ http://www.coboler.com/mingw01.htm http://members8.tsukaeru.net/pegstyle/opencob.html 有償でエディタ込みの統合開発環境も手に入るようです。 http://b2c-1.rocketbeach.com/~bitwalk/product_0012.html http://www.ae.wakwak.com/~minen/cobol/win_index.htm また、マシンパワーとメモリが有り余っている今では 古くて新しい言語 Lisp も息を吹き返しているという噂です。 Franz Lisp の顧客は C++ を圧倒するほどの高い生産性を享受し、 時間とお金を大いに節約しているんだとか。 「bit」には Lisp の話がよく載っていたんですが、潰れちゃいましたね…。 (ああ、本職のプログラマでもないのに何でこんなこと知ってんだろ。 言語ミーハーな私) 後は下の方のおっしゃるように Java を究める方向に進むのもまたよし。 「日経ソフトウェア」の9月号では Perl と Ruby を対比させて かゆい所に手が届くスクリプト言語のポテンシャルを見せつけていました。 残念ながら Python のコード例はありませんでしたけれど。 Python は、このサイトでは名前が出るだけで まだスクリプトの組み方を尋ねる質問が立てられたことはないと思います。 でも将来 Python の普及が進んだら、 chi-kon さんがパイソニアンとしてお答えになるのでしょうか。 その時を楽しみに、健闘を祈っております。

参考URL:
http://www.python.jp/Zope/,http://www.f7.ems.okayama-u.ac.jp/~yan/python/,http://hp.vector.co.jp/authors/VA003670/python
chi-kon
質問者

お礼

再度のアドバイスをありがとうございます。 >こちらこそ丁寧なお礼、どうもありがとうございます。 >回答する方もとっても励みになります~。m(__)m いえいえトンでも御座いません。 こちらこそ丁寧な回答を頂き恐縮です。 >Python→Pythonian(パイソニアン) うーん、へんな感じですね。あんまりかっこよくないです。 折角Python(ニシキヘビ)なので勝手に「蛇使い」を名乗ってしまいましょう。「レッドスネークかも~ん」です 本当はCOBOLをやりたいところだったんです。 なぜならCOBOL資産としては莫大なものがあり、 JavaとCOBOLの両刀使いになっていれば当面仕事にこまらないであろうかという目論見です。 OpenCOBOLなるものがあるのですが。 ぜひチャレンジしてみたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • dietnma2
  • ベストアンサー率36% (7/19)
回答No.3

XMLをやるのはどうでしょうか。 XMLはjavaと仲良しですよね。 DOM、SAX、Digester(これかなり便利です!)など、 APIもたくさんありますし。 XMLは、XSLTというXML変換言語があって、 いろいろなプログラミングが可能です。 XSLTは、XMLで記述されます。 Tomcatの設定や、Strutsの設定なんかも全部XML なので、集中的にやってみるのもイイと思います。 XMLは、パイソン(フェイトンやと思ってました)や、 .NET、perlなんかにもAPIがあるので、 XML繋がりでいろいろな言語をやってみると、 イイかもしれません。 私は、言語はCやらVBやらperlやらjavaやらと、 いろいろとちょこちょこやっております。 記憶力がわるいので、だいたいコピペの 技術を磨くって感じですが・・・・ 参考になれば嬉しいです。

参考URL:
http://www.atmarkit.co.jp/fxml/tanpatsu/10xslt/xslt01.html
chi-kon
質問者

お礼

忘れていました、XML。。。 そうでした、実はこれも勉強しておかなあかんですね。 自分のなかでXMLはプログラミング言語という認識がなかったので思いっきり頭からすっとんでいました。 ありがとう御座いました。 大事なところを忘れてしまうところでした。

全文を見る
すると、全ての回答が全文表示されます。
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

こんにちは。最初カテゴリ違いかな?と勘違いしてしまいましたが、 なかなか粋なタイトルをおつけになりましたね(^^ さて、今まで話題に上った Java や C/C++, Delphi などは 「コンパイラ言語」に属するのに対し、「Python(パイソン)」などは 「インタプリタ言語」に属します。 (実際にはそう簡単に割り切れるものでもないのですが……後述します) インタプリタ言語はソースコードがコンパイラ言語に比べ短い性質を持ちます。 ソースコードを「脚本(スクリプト)」に見立て、解釈するプログラム(インタプリタ)に 脚本通り演じてもらうという意味で一般に「スクリプト言語」と呼ばれます。 この分野で現在最有力なのは「Perl(パール)」です。このサイトにも 独立したカテゴリがありますね。それだけ使用人口が多いことの現れです。 Perl は CGI のための言語としてより広く知られていますが、 単独でもありとあらゆる仕事がこなせます。モジュールも完備しており、 現在最も強力なスクリプト言語であることは確かです。 Perl は読み書きできた方がいいですね。 ただし、率直に言って Perl の仕様は汚いです。 Perl5 からはオブジェクト指向の機能が増設されましたが、 Perl でオブジェクト指向を始めようというのは無謀です。 以上 Perl にはこうした問題がありますので、 そのポストを狙うスクリプト言語として、 前述の「Python」と「Ruby(ルビー)」が名乗りを上げました。 Python はオランダの Guido van Rossum さん、また Ruby は 日本のまつもとゆきひろさんを中心にそれぞれ精力的な開発が行われています。 余談ですが、Ruby は初めて世界中で使われるようになった国産の言語です。 両者とも「本格的なオブジェクト指向」を売り物にしているのは同じですが、 スタイルはそれぞれ異なっており、Python はファイル単位のモジュール化と インデントによって制御構造が決められることが特徴です。 対する Ruby はオブジェクト指向を徹底して追求しており、 あらゆるものをオブジェクトとして統一した扱いができるのが特徴です。 国産だから日本語が意識せずに使えるのも当然ですね。 私は Ruby を使っていますが(ここでも何回か Ruby の問題に答えてます)、 組み込みの機能だけでも十分強力だし、 すっきりとした書き方ができるので気に入っています。 しかしながら、あなたがどちらを選ぶべきかは好みの問題としか言いようがありません。 実際に両方に触れて肌に合う方をお選びください。 (と言わないと宗教戦争になっちゃうので(^^; ユーザの間では激しい論争もありますが、Perl の作者 Larry Wall さんと Guido さん、まつもとさんはライバル同士ではあっても仲良しなのです) 利用できるライブラリの豊富さでは先行する Python がはるかに優れています。 Python は Java のようにバイトコードコンパイルもできるので、 コンパイル済みのスクリプトは高速に実行できます。 もともとプラットフォーム独立を念頭に開発されてきたので、 Windows や Mac OS でもあまりストレスを感じないでしょう。 これに対し、参考書は Ruby の方がずっと多く、選り取りみどりです。 今日本で最も熱い言語といっても過言ではありません。 出版界にもそれだけの勢いがあります。 C などで拡張ライブラリを作るのも容易です。 中でもネット方面のライブラリは充実しています。 元が UNIX ベースなので少し Windows では弱いかもしれません。 (でも私は Windows でも使っていますよ。Mac OS X でも標準装備になったようです) スクリプト言語の弱みとしては、GUI が組み込みでないこと、 標準の開発環境がないことです。 それでも、Emacs などの入力支援つきエディタを用いればかなり助けになりますし、 また SourceForge.net などには Java の開発環境「Eclipse」に対する 各種言語用プラグインがあります。 ・Ruby Development Tool(RDT) http://sourceforge.net/projects/rubyeclipse/ ・PyEclipse http://sourceforge.net/projects/pyeclipse/ ・Pe4Eclipse http://sourceforge.net/projects/pe4eclipse/ Windows 版 Ruby は3種類ありますが、詳しくは以下のページの 「Microsoft Windows版のビルド環境による違い」をご覧下さい。 http://www.ruby-lang.org/ja/20020102.html この他、ウェブ開発に特化した言語としては「PHP」があります。 ウェブページのソースに埋め込んで使います。 これもここにカテゴリがありますし、何よりこのサイト自体 PHP で運営されており、 データベースとの連携の実績もばっちりです。 なお、PHP の長所として「Perl の CGI より高速」ということがよく言われますが、 Apache の拡張モジュール mod_perl(Ruby では mod_ruby) を使えば Perl でも CGI の場合より良好なパフォーマンスが得られます。 ご参考まで。 ウェブページで使える言語には他に「JavaScript」や Macromedia Flash を制御する「ActionScript」というのもあります。 両者はよく似ていますが、それもそのはず、 JavaScript を基本に ECMAScript(エクマスクリプト)という オープンな標準スクリプト言語仕様が策定され、 ActionScript はそれに基づいているのです。 ECMAScript の仕様は改めて JavaScript にもフィードバックされています。 またまた余談ですが、Microsoft の JScript は実は JavaScript とほとんど同じものです。 「Java」の名前を嫌って独自拡張を行おうとしたものの総スカンを食い、 やむなく ECMAScript に準拠することで妥協したのですが、 ECMAScript は JavaScript そのものですから、 結局両者は大差なくなってしまいました。 http://www.interq.or.jp/student/exeal/dss/ref/jscript/about.html

参考URL:
http://www.ruby-lang.org/ja/,http://www15.web24.jp/~c01763n1/rubytips/,http://www.zob.ne.jp/~hide-t/comp/python/tut-ja/
chi-kon
質問者

お礼

丁寧なアドバイスを頂き大変感謝いたしております。 実はPython は名前がかっちょえーとおもって目をつけました。 私の勝手な価値観ですが、PerlよりRubyよりかっこいいなぁって思ってしまいました。 >利用できるライブラリの豊富さでは先行する Python がはるかに優れています。 おーなるほど。 さらにPython ポイントUpです。 ほんとうは仕事と絡めるとCOBOLを第二外国語にしようかなと思ったこともありますが、 ネットで調べたのですがWindowsでどうやって動かすんだ??っていうことになってしまい躊躇していました。 Python にしようかなぁ。 Python 使いってなんていうのかなぁ Pythonerかなぁ蛇使いかなぁ perl使いはperlerですか?パチンコ屋みたいですね。 うーん、よし!Python にしよう! もし各言語の使い手はこう呼ぶというのをご存知でしたら 教えてください!!

全文を見る
すると、全ての回答が全文表示されます。
  • azicyan
  • ベストアンサー率21% (368/1747)
回答No.1

プログラマーさんなんですね! うらやましい(*^_^*) 僕も目指しています! というわけで、次は・・・ということなんですが、 逆に簡単なやつをやってみるといいと思います。 JAVAをやってからDelphiをやると簡単さに涙がこぼれそうになります(おおげさ~) VBはソフトが高いのと、バージョンアップが早いのと、世間がマイクロソフト離れをはじめている、ランタイムがいる、等々のことからお勧めできませんが・・・ あとC++はわかりませんが、 JAVAの後にCを勉強するとわかりやすいです。

chi-kon
質問者

お礼

ご回答ありがとう御座います。 >プログラマーさんなんですね! >うらやましい(*^_^*) いえいえそんなことはありません。 SEとして入社したのにもかかわらず PGしかやらしてもらえないだけなんです。 もちろん SE>PGとかは思っていませんよ。 SEとPGはまったく違うだろ?って思っている今日この頃です。 話がそれてしまいましたが、 JavaのあとにCを勉強するとわかりやすいとのことですが、 Cは新人研修のときにちょっとアレルギー気味になってしまっています。 こんな私でも大丈夫でしょうか。。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 違いを教えてください。

    JAVA初心者です。勉強しててわからない事がたくさん・・・ まず、public static void main(String args[])と    public static void main(String []args) は同じ意味なのでしょうか?そもそも(String args[])の意味がよくわかりません・・・。argsってなんて読んだらいいのでしょうか? あと、extends継承してクラスを使うのと、importでクラスを使うのって意味は同じですか? 最後に、abstract抽象も使い方がよくわかりません。 教えてください!!

    • ベストアンサー
    • Java
  • javaの基本的な質問

    java初心者です。 サンプルプログラム等の宣言部分が下記の2通りで記載されていることがありますが、 カギ括弧の位置が違うこの2つは何か意味があるのでしょうか? それとも同じ意味ですか? ----------------------------------------- public static void main (String args[]) public static void main (String[] args) ----------------------------------------- よろしくお願いします。

    • ベストアンサー
    • Java
  • 10の302乗の計算またはDoubeのキャストについて教えて下さい。

    java言語で質問があります。よろしくお願い致します。 次のプログラムを作成し、2点質問をさせて下さい。 まずは10の302乗を計算したいときとキャストを調べたところdouble型はできないのでどう対処すればいいでしょうか。どうぞアドバイス下さい。class Enzanshi{ public static main(String args[]){ int num1; double num = num1*10^302; } } エラー内容はこうです。 C:\java>javac Enzanshi.java Enzanshi.java:2: メソッドの宣言が不正です。戻り値の型が必要です。 public static main(String args[]){ ^ Enzanshi.java:3: \65307 は不正な文字です。 int num1; ^ Enzanshi.java:4: \65307 は不正な文字です。 double num = num1*10^302; ^ エラー 3 個

  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 public static void main(String[] args)は何の意味があるのですか? http://www.task-notes.com/entry/20150930/1443582000 などを見てもイマイチ納得がいきません。 下記のプログラムでは public static void main(String[] args)がないためにエラーになりました。 解らないため適当な箇所に付け足したら、また異なったエラーになりました。 ;を付け足すとまた別のエラーが出ます。 ご多忙中恐れ入ります。 アドバイスのほど宜しくお願い申し上げます。 class Hero { public static void main(String[] args) private int point; Hero(int p) {point = p; } int getPoint() { return point; } void addPoint(int p) { point += p; } } コンパイルエラー C:\JAVA>javac Hero.java Hero.java:3: エラー: ';'がありません public static void main(String[] args) ^ エラー1個

  • この文章あっていますか?

    public class HelloWorld { public static void main(String[] args) { String message; message = "Hello Java World !"; System.out.println(message); } } これが正解文なのですが public class HelloWorld { public static void main(String[] args) { String message; message = "Hello java World"; System.out.ptintln(message); } } この文のどこが間違っていますか?ぜんぜんわからないので誰か教えてください。

    • ベストアンサー
    • Java
  • Processingでpure Javaモード

    Processingでstaticなメソッドを使いたいです。 wikipediaで調べると、pure Java モードを明示的に指定しなければならないとあります。 しかし、いくら調べてもpure Java モードの指定方法は載っていませんでした。 どのようにすればpure Java モードに指定することができるのですか。教えてください。 ちなみに以下のようなHello Worldのプログラムを試しに書いたのですが、staticだからダメだと動かすことができませんでした。 class Main{ public static void main(String[] args){ System.out.println("Hello World!"); } } よろしくお願いします。

    • ベストアンサー
    • Java
  • mainクラスのpublicの意味を教えて下さい

     お早う御座います、JAVA初心者です、宜しくお願いします。  main クラスの public をコメントアウトしてもエラーもなく走ります。  これは、「public static void main(String[] args)」を持っているクラスを自動的に「main クラス」と判断しているということでしょうか。 ============================================================ class Sub { void disp() { System.out.println(" a "); } } /*public*/ class Main { public static void main(String[] args) { Sub s = new Sub(); s.disp(); } }

    • ベストアンサー
    • Java
  • javaの基本的な質問

    下記を実行すると、上から順番にメソッドが実行され、 「Hello Java  Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }

    • ベストアンサー
    • Java
  • javaのmainの引数はなぜstring[]?

    Java初心者です。 基礎的なことなのですが、質問させてください。 javaのmainメソッド定義の public static void main (String[] args) について、String[] argsの部分がjavaコマンドで実行する際に与える引数であることは 理解できました。しかし、なぜStringの配列なのかが理解できません。 実行時の引数であれば、intやdoubleも使い道があるようにも感じるので、 プログラマの好きに定義できた方が便利な気がしますし、実行時に引数を与えないなら public static void main () としてしまったほうがわかりやすいとも感じてしまいます。 実はコンパイル時や実行時に裏の見えない部分でStringの配列を使っているとか、 何か理由があるのでしょうか? mainの定義は main (String[] args)と暗記でもいいのですが、 気になったので知りたく、質問させてください。

    • ベストアンサー
    • Java
  • Javaの文法

    Javaプログラミングの勉強をはじめたばかりですが、本を見てもいまいちよくわかりません。多分、わからないのはpublic sta…の部分を理解できていないからだと思います。public static void main(String args[])の意味がよくわかりません。public staticはどういう意味なんでしょうか?それとString args[]の部分がなぜ必要なのかがよくわかりません。どなたか教えてください。

    • ベストアンサー
    • Java