- 締切済み
これから学ぶコンピューター言語
c, c++, objective-c をかじってきた者です。 特に目的がある訳じゃないのですが、 この先需要のある、新しい言語を始めるとしたら何が良いと思いますか? その理由と合わせてお答え下さい。 Java ?? Ruby ?? Scala ?? c# ?? ...?? ...??
- みんなの回答 (12)
- 専門家の回答
みんなの回答
- a_bc
- ベストアンサー率100% (1/1)
私はc, java, Ruby, PHP, Scala, (javascript)と学習してきました。 結局用途による、という話なのでしょうが、ある程度何でもできるという意味であればおすすめはやっぱりRubyでしょうか。 ただ、プログラミングで目的が定まっていない場合は概念を学ぶことが大切だと思います。 その言語で何ができるか、というよりはその言語はどういう考え方に基づいてプログラミングをするべきなのか。 なにかやりたいことが見つかった時に,学んできた言語はその分野が苦手だったとしても学んできた考え方は無駄にはなりませんから。 最近のはやりはオブジェクト指向から関数型言語に移行しているように思えます。 手続き型はひと通り学ばれているようですから、これらの概念を学ぶことをお勧めします。 Rubyはオブジェクト指向の考え方を学ぶにはもってこいだったと思います。javaをやっても正直オブジェクト指向の概念の良さはあまりわかりませんでした。Cを経験されているという事なのでおそらくとても柔軟で簡潔な書き方に感動すると思います。また習得も容易なので概念の学習に集中できます。(言語事項の学習ばかりでは意味がありません。つまりどれだけたくさんの言語でHelloWorldを出力できても意味がないんです) また高階関数の存在など関数型っぽく書くこともできます。(関数型の考え方の学習という意味ではあまり...という感じですが) Scalaもお勧めです。javaを基底として作られた言語です。オブジェクト指向と関数型、両方を見事に融合させている言語だと思います。関数型というとHaskellやLispが浮かびますが、ちょっとそれはの文法は特殊すぎて概念の勉強の前に躓いて仕舞いそうです。 Scalaは文法もそこまで特殊では無いですし、最悪手続き型、オブジェクト指向のみで書くこともできます(あまり勧められたものではないですが)。そこから少しずつ関数型の考えを取り込んでいくという学習方法は、実用と学習を同時に勧められますから、お勧めです。 正直私は学習という意味でなくてもScalaの書き方や特徴が好きなので単純におすすめしたいというのもありますが(笑)
- PowerGuards
- ベストアンサー率30% (45/147)
初心者なら、もちろん Cからいいですよ。 Cはすべての基本ですよ。
- RURUFOU
- ベストアンサー率55% (5/9)
SEDとAWKなどいかがでしょうか。 理由としては、 (1) IBMの研修メニューにもある UNIX システム管理 - スクリプト実践編(sed、awk による文字列操作) http://www.school.ctc-g.co.jp/course/IB611.html (2) EXE一つで動く手軽さ sed http://www.kt.rim.or.jp/%7ekbk/sed/onigsed-20091031.zip awk ※ gawkですが http://www.klabaster.com/progs/gawk32.zip (3) 回答でテキスト処理を望まれていた事 私は、仕事でログ加工や自動化で使っています。 大がかりな処理なら、PerlやRuby等の出番だと思いますが UNIX由来の基礎ツールですので、スクリプト系入門の選択肢によろしいかと。
- lv4u
- ベストアンサー率27% (1862/6715)
個人的には、最小・シンプルなコーディングで目的とするプログラムが完成する言語が良いと思います。それは、仕事はもちろんですが、仕事と無関係に、趣味とかボランティアでプログラミングする場合などで有利になると思います。 まあ「仕事の需要がある言語」という点を考えれば、まずはJavaを選ぶことになる気もしますけど、「趣味でプログラミング」というシーンを考えると、Javaはありえないって感じています。 個人的には、スイス・アーミナイフ的に、ちょっとしたことを手軽に片付けるって目的で、PerlかRuby。(私はPerl派) 何度も使い続けるアプリ、素人・他人に使ってもらうGUIアプリなら、C#が良いのではないかと思います。 C#ですと、趣味のアプリが手軽に作れます。 ただ、C#は、C++のより進化した言語です(C++の2倍でC#)さらに、その土台に.Net FrameworkやADO.NETなどがあるため、言語のC#以外に、それらを学ばないといけません。たとえば、C言語仕様の学習が楽でも、C言語ライブラリの使い方を学ぶのに時間を要するようなものです。 もちろん、オブジェクト指向だけでなく、構造化プログラミング、複合設計の知識も必要だと思います。 特に目的がないっていうなら、C#(VS2010以降のバージョン、最低でもVS2008を使って)を学ばれれば、上記2つの目的をカバーすると思います。
- zwi
- ベストアンサー率56% (730/1282)
使い込んだことがない言語は、その本質を知ることは出来ません。 つまり、今までやった言語の本質は理解されなまま今に至っている思ってください。 なので仕事をやるにしても、趣味でアプリ作るにしてもc, c++, objective-c を使いこなせるとは思えません。 他言語をやる暇があるなら、アプリを1つでも作ったほうがよほど上達します。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
No.4です。 >仕事の為なら全くその通りですね。 ですよ。すでにプログラムの経験があれば、それぞれの言語の流儀に従うことは簡単です。こういうものって、大抵は無駄になるものですし、そもそも根気が続きません。必要は上達の母・・・です。 >テキスト処理をもっと効率的に行いたいと思う事が多々あります。 だったら、Perl・・たぶん最も応用が利く・・で、何かして見たら(^^)
お礼
2度もどうもありがとうございます。 Perlは役に立つ場面が多くありそうですね。 それとは別に、楽しみの為に、 関数型プログラミングに触れてみようかなとも思っています。
- kmee
- ベストアンサー率55% (1857/3366)
「需要」というやつはわかりません。 Fortran,COBOL等は、「前世代的で、もうじき消える」と言われ続けて何十年。いまだに現役で、一定の需要があります。むしろ、技術者が少ないので、重宝されるくらいです。 逆に、これらより「新しい言語」で、既に消えたも同然なものは沢山あります。 Objective-Cの「Objective」の部分は、Smalltalkという言語の影響を強く受けています。 iPhoneのヒットで注目を集めたObjective-Cですが、言語自体は30年近く前に開発されたものです(その後バージョンアップしていますが) 10年前(iPhoneの出る前)に、これらの言語を「需要がある」と言っていたのは、「信者」くらいではないでしょうか? 趣味でのプログラミングの勉強なら、今までと毛色の異るものがいいと思います。 その視点で、次の2種類を推薦します。 ○ スクリプト言語 : Perl,Ruby,Python,PHP コンパイル不要で動作します。 組込み、標準、追加等を合せたライブラリが豊富で、大抵のやりたいことは、「ライブラリの設定→実行」の数行~十数行のプログラムでできます。 また、Cとは比べものにならない程、文字列操作が楽です。正規表現を使ったテクニックを身に付けるのにもいいでしょう。 ○関数型プログラミング言語: LISP, Scheme等 C言語は、関数を多用していますが、その実、手続きを並べただけのものです。 こちらは、より数学での関数に近いものです。 作用/副作用という考えは、従来のプログラミングにも応用できます。 私自信も、LISPに触れる前後で、プログラミングスタイルが大分変わりました。
お礼
確かに自分にもFortranの知識が必要とされる場面が、今でもありますね。 それぞれ面白そうで悩みますね。 スクリプト言語は便利そうなので勉強しようかと思っていますが、 関数型プログラミングというのも触れてみたいですね。 SCALAもこれに含まれますかね。 ありがとうございます。
- notnot
- ベストアンサー率47% (4900/10359)
>特に目的がある訳じゃないのですが、 趣味で覚えるのか、 >この先需要のある、 求職中もしくは転職を考えているので、企業でニーズのあるものを覚えたいのか によって、違うでしょう。 趣味でなら、今ご存じの物と違うという意味で、Ruby か Scala。 すでに C++ Objective-C を知っていて JavaやC#を学んでも、おもしろさがRubyやScalaに劣ると思います。 JavaScriptというのもブラウザで色々動かせるのでおもしろいかも。 後者の場合、企業のニーズは業界によって大きく違います。 企業の業務システム開発なら、Java。まだまだCOBOLも使われていますが。 ウェブアプリなら、JavaScript PHP Ruby とかでしょうか。 ゲームは知らない。
お礼
少し毛色の違ったという意味で、Ruby, Scalaが面白そうですか。 JavaScriptで遊ぶのもたのしそうですね。 ありがとうございます。
- oooioi
- ベストアンサー率29% (16/55)
仕事の案件で必要になる言語覚えれば良いだけでしょ。
お礼
仕事ならばその通りですね。 ありがとうございます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
C,C⁺⁺,Object-Cと書くのでは?? >特に目的がある訳じゃないのですが、 なら、必要になったとき学べばよい。 >この先需要のある、 目的、プラットホームなどによって、どの言語を使用するかは決まります。ただ、拝見するところ、スクリプト言語やテキスト処理が得意な言語は学ばれていないように見えます。 普段使いでも役立ちますから、Perl,Rubyなどは身につけたほうがよいような気がします。 http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%80%E8%AA%9E#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E5.87.A6.E7.90.86.E8.A8.80.E8.AA.9E
お礼
>必要になったとき学べばよい 仕事の為なら全くその通りですね。 >スクリプト言語やテキスト処理が得意な言語 確かに、シェルスクリプトを使っていると、 テキスト処理をもっと効率的に行いたいと思う事が多々あります。 ありがとうございます。
- 1
- 2
お礼
何故か、回答に刺を感じますが。。。 c,c++に関しては仕事と趣味のマイコンで、 Objective-Cに関してはMacアプリを数個開発しましたが、 味わい尽くしたかと言われれば、私の感覚ではNOですね。 なるほど、御高説ごもっともですが、 この質問関しては、それほど難しく考えてはおりません。 異なる言語に触れてみるのも楽しそうだな、 さらに、その知識が今後、何らかの形で役に立ったらラッキーだな、 と言う話です。 そのために経験豊富な諸先輩方のお勧めをお聞きしました。