はてなキーワード: javaとは
PHPとjavascriptとC言語は独学で取得したので、javaとVBを学ぼうと思ってる。
自分はMacメインなプログラマじゃないので、ズレたこと言うかも知れませんが……。
参考書も参考サイトも無数にある。その中にはプログラミング未経験者を対象にしたものも多い。しかもJavaなら将来WindowsでもLinuxでも通じるし、Webアプリなどにも利用出来る。C++様信者の私としては悲しいけど、時代はJavaだ。
ネイティブアプリを真面目に作ろうと思ったら、Objective-Cが基本っぽい(C++ではCocoa使えず、Carbonになってしまう)。
ただ、Objective-Cの参考書・サイトは、C/C++やJavaなんかと比べて絶望的に少ない上、ざっと見た感じCocoaな部分やXCodeの機能とごっちゃに記述されているものが多く、初心者にはとっつきにくい(理解しづらく、書かれている通りに打って動かす以上のことを行いにくい)点が多々あると思うので、まずはCでプログラミング(コンソールアプリ製作)を知っておくのが良いかも知れないです。
何にせよ、プログラミング言語というものは何か一つやっておくのが重要なので、(もの凄ーく悔しいですが)Javaが無難なんじゃないかなーと思います。
基本情報レベルのJavaが読め・書ける程度でプログラミングを簡単だと思うならEffective Javaを読んでみればいい。牧歌的に思えた野原にどれだけ地雷が埋まっているか理解するはずだ。C++のクラスが書けポインタが使える程度でプログラミングを簡単だと思うならModern C++を読んでみればいい。登っている山はまだまだ高く険しいと知るだろう。
現状、この業界は上流工程を担当する大手・優良企業(NTTデータ、富士通…等)と、下流を担当する有象無象の中小企業および規模だけは大きな独立系企業とに大分(一部例外あり)され、一般に上流の方が難しい業務、下流は比較的簡単な業務とされている。
確かに、下流の業務は簡単だ。仕様を満たすアルゴリズムの実装を、規約に従った書式によって行えば良いだけだ。基本的には、薄っぺらい参考書一冊で事足りる知識しか必要としていない。
けれど、僕らは知っているはずだ。プログラミングというものがもっと遥かに深い味のあるものだということを。極めるのがどれだけ困難なことかを。
基本情報レベルのJavaが読め・書ける程度でプログラミングを簡単だと思うならEffective Javaを読んでみればいい。牧歌的に思えた野原にどれだけ地雷が埋まっているか理解するはずだ。C++のクラスが書けポインタが使える程度でプログラミングを簡単だと思うならModern C++を読んでみればいい。登っている山はまだまだ高く険しいと知るだろう。
こうした使われざる技術は、本来、下流の仕事をより素晴らしいものとするはずのものだ。しかし、使われない。
これは上流の陰謀なのではないだろうか。上流としては、下流の仕事が高度になるのはあまり歓迎すべき事態ではない。それは上流の優位を奪うか、上流の仕事をより困難にするかのいずれかとして働くだろう。上流からすれば、下流は上流の理解できる、簡単な範囲でのみ活動してほしいのではないか。
もしこの考えが正しいのなら、下流の仕事が簡単だといって蔑んではいけないのだろう。本来、高貴なものになるべき下流を貶めているのは上流かもしれないのだから。僕らは負い目や憐憫をこそ感じるにせよ、軽視、蔑視するのは間違っているのではないだろうか。
……上流の仕事に傾倒しPGを軽視する同期を見て、言い知れぬ不満のようなものを感じ、数日間その思いがわだかまっていたのが、やっとすっきりした。
JAVASCRIPTとVBAとPHPなんて、IT業界への就職を考えるなら「挙げるのが恥ずかしくなるレベル」だろ。野球部に入るのに「バットとボールの形の違いがわかります!」とか言ってる程度の。
カウンセリングするほうもそれがわかってるから、「あー、まあ、基礎くらいは知っとけ、お前」という意味でプログラミングとデータベースを習え、と言ってるわけだ。JAVAもORACLEもその一例にすぎん。
独学は望み薄だろうから、金銭的余裕があるなら専門学校に行った方がいいのかもしれないが、アレな学生に巻き込まれてダメになる可能性も高い。
というか、元増田はそもそも何になりたいんだ?
PGとして働き始めて約4年…
「もっと何がしたい、何ができるのかをアピールして欲しい」と言われた。
もともと就職時の面接で「技術の好きな人を求めている」と言われていたのだけど
「新しい事を知るのは好きです」とか適当な事言ってたらとってくれた。
でも今の状態から成長しなかったら数年後(もっと早く?)見限られるのかな?
業務はちゃんとこなしてるけど、業務以外で勉強しないとやっぱり駄目なのかな…。
PGやSEやってる人はやっぱり好きでやってる人が多いんだろうか。
私はといえば「なんかカッコイイ」「手に職をつけて安定した生活を送りたい」
「実力優先なので低学歴な自分でもやっていけるかも」という理由でこの業界に踏み込んだ。
ギークと呼ばれる人達に憧れるけど、勉強すればするほど自分は一流になれないと思い知るばかり。
けれどどのバイトやっても1年続かなかった私が
4年同じ仕事を出来てるんだから適職なのかなとは思う。
プログラムを組んで何かを創り出すこと自体は好きだ。
ただ絵を描くのが趣味なので、技術書読んでる暇あったら絵描いてたいんだよなぁ(笑)
絵は食べていけるようなレベルではなく(本気で上手くなりたいけども!)
プログラムも公開するといいという話を聞くので、プライベートでも何か作って勉強していくべきなのかな…。
ちなみに私はWeb系プログラマー(今Perl使い、PHPとJavaは経験有)です。
だらだら書いたけど技術者の多いはてなで誰かに喝を入れて貰えたらと思って。
向上心ないってタイトルに入れてるけど、レベルアップできるものならしたい。
出来る事ならこの仕事をずっと続けていきたいから。
■追記
少し気持ちが軽くなりました。
ふと、はてなでの言語シェアってどんなものかと思った。ので調べる。といってもはてブ人気度だけど。
現在の301番目のエントリーの日付から300エントリーまでの経過日数を出し、一日平均を出す。
言語 | 日付 | 経過日数 | 日毎 |
---|---|---|---|
javascript | 2009/03/06 | 25 | 12.2 |
perl | 2009/02/13 | 46 | 6.6 |
ruby | 2009/02/13 | 46 | 6.6 |
java | 2009/01/18 | 72 | 4.2 |
python | 2008/06/30 | 274 | 1.1 |
c++ | 2008/05/19 | 316 | 0.95 |
c | 2008/04/19 | 341 | 0.88 |
思った以上にpythonの人気がない。そしてruby軍団恐るべし。
本当はそれなりのサンプル数で分布を取るべきだけど、手軽に5users以上最新25エントリーの平均を取ってみた。
言語 | 平均ブックマーク数 |
javascript | 55 |
perl | 33 |
ruby | 24 |
java | 62 |
python | 32 |
c++ | 63 |
c | 43 |
あてにならなかった。
http://d.hatena.ne.jp/mamoruk/20090327/p1
「いちばん」かどうかはわかりませんが、うちの会社の製品ではpythonを主力に使った自然言語処理を含む製品を販売しているので、実際の感想を。
うちでは、pythonを元データの整備のための運用バッチ処理から、客が最終的に手にする情報の生成、実際に客が使うWEBインターフェースまで、pythonを主力にしています。
別のチームが作った別の製品ではS2Struts(JAVAね。)でWEBを作っている部分もありますが。
mecabが使えて、Unicodeが使えて、正規表現が使えれば、まあ、どの言語を使ってもそんなに大差はないのではないでしょうか。
あとはsennaのような日本語用の全文検索エンジンなども使いますが、そこらへんに近い部分は基本的にC++で書きます。
pythonとは言っても、速度を重視する部分はやはり迷わずC++です。
C++で書いたものはswigを使うか、又はC言語で手書きのbindingを使ってpythonに接続します。
でもこないだswigでつないで製品をリリースしたら、WEBからの並列アクセスにswigがうまく対応できず、リリースした日に急いで手書きbindingを書いた経験があります。swigの使い方はきちんと理解していないので非常に難しい。
nltkとか、wordnetの話はたしかに使えそうかもと思ったことはありますが、nltkはうちでは使っていません。
うちの会社では自然言語処理の研究段階から自社で行っているので、nltkにあるようなできあいのルーチンを実戦投入する事はなく、基本的に地味に自分達でpythonで書いています。
自然言語処理と言っても、核心の処理はやはり泥臭い個別事例への対処が多いです。不要語処理とか。
自然言語処理のアルゴリズムは8割程度の精度を出すのは簡単で、すぐに思いつきで書けるものですが、残り2割の精度をいかに埋めて行くかが、頭のいい人とそうでない人の差が現れる部分だと思います。
どうしてもいいアルゴリズムを思いつかない場合は、泥臭い個別事例処理がうねうねと並んだプログラムになります。学術的なものではなく商売になればいいので、うちはとりあえずそれで十分。(これは自然言語処理に使う機械学習のアルゴリズムたちも同様。というか自然言語処理と機械学習て、区分けがあいまいな部分が多いですよね。)
そういう感じなので、pythonの可読性の高さは非常に有効。
また、変数名や関数名などをexplicitに書く文化も業務で使うのに適していると思います。(他の言語でもexplicitに書けばいいだけですが、それを言語開発者自身が推奨するほど強調はしていないですよね。)
英文の処理で、wordnetの辞書データの一部を研究に使った記憶はある。
しかし、あそこまで精緻な辞書データを使う程高度な処理は今の所必要ない。
うちで自作した不要英単語辞書と、特別扱いする英単語辞書で間に合わせていたと思います。(その辺記憶があいまい。)
djangoは非常に明快で、快適。
画面の機能を追加するのに、例えばS2Strutsのアクションの定義の煩雑さに比較すると、天と地との差ほどにdjangoは簡単。
あと、pythonを使える開発者は日本には少ないとの事ですが、うちでもそれは同様です。
しかし、自分の隣の席の同僚はperlに非常に熟達していて、彼はすぐにpythonの達人に変わりました。
優秀な方にとっては言語なんて何をつかってもあまり変わらないみたい。
一応プログラマ(というよりはソフトウェア開発者)として仕事してるんだけど、俺はギークにはなれないなとつくづく思う。
ぶっちゃけプログラミングとかコンピュータ・アーキテクチャ、ネットワークプロトコルみたいなものに興味が無いんだよね。
俺にとってプログラミングは、その背景にある数学的モデルをマテリアライズあるいはマネタイズするためのツールでしかない。
○○ハックとか、どの言語が有利だとか、凝ったコーディングテクニックだとかデータ構造の細かな工夫なんかには全然興味が無いんだ。
ぶっちゃけそこそこ習得能力はある方じゃないかと思う。コーディング始めてまだ1年経ってないけどオブジェクト指向(C++)でバリバリ書ける。
JavaやC#みたいにガベージコレクタがあって抽象度の高いオブジェクト指向言語なら(たぶん)少し慣れればかなり書けるだろう。
でも興味無いんだよね。だからコンピュータ大好き少年のようにどんどん新しいことを覚えて勝手にのめり込んでいくようなことができない。
勉強しなきゃなとは思うから本とか読むけど、あくまで義務感でやってるだけ。
プログラミングそのものには興味が無いから、作るシステムの目的がつまらなかったらやる気が無くなる。
それから、LINUXとかにも興味が無いので、なかなか使いこなせなくて困ることがある。
ギークにはなれない。どうやって生きていくのがいいかなあと思う。
ものすごく簡単なところから始めた方がいいんじゃない?
わからないのは当たり前です。大丈夫です。
テキストは簡単なところから始めましょう。
http://d.hatena.ne.jp/asin/4797331828
やさしいシリーズは最初のとっかかりとしては良いんじゃないかと思ってます。
ネットならこの辺りでも見ればいいんじゃないかな?
http://www.javadrive.jp/index.html
障害では…とのことでしたが、「鬱で仕事できない」状態なら生活保護は貰えます。
その場合「貯金がなくなったら来てね」って言われるのと「家族に養ってもらえないの?」
とは必ず言われますけど。
の
http://www.seiho110.org/seido/frame.htm
あたりを参考にどうぞ。
このくらいしか言えなくて悪いけど。
どうでも良いと言えばどうでも良いんだけど
Equalsって大抵、有意に遅いよ?
そこまで気にするならJava自体使わない?まぁ、ごもっとも
丁度,同じようなこと書こうとしていたところだ.
昔,IT系の学校に行って,情報技術やプログラミングなど勉強していたんだけど,
それで何が出来るのか分からなくて,卒業はしたが今は全く別の仕事をしている.
最近,それが懐かしくなって,頭もあまり使ってないし,日曜プログラマにでもなろうかと思っていたところ.
# 以下,何年も前の話で,うろ覚えなので些細な間違いは見逃してほしい.
学生時分は,プログラミングだったら C, Java, はとりあえず一通り勉強した.
C だと手続き型で.変数の宣言の話から配列,ポインタ,構造体と進む.
Java ならオブジェクト指向で,手続き型と違って,汎用的なクラスを作成すれば
再利用できて…とか,それを継承できて…とかで開発効率・生産性が高い云々とか,
そういう話から,で実際それをプログラムにするとこうなりますよ.という流れ.
これで一通り言語自体の知識は身に付くのだけれど,で?っていう状況になったのは,
元記事の増田と同じだ.結局,それらの言語にどういう特徴があるのかは,
仕事などで本格的に開発をする人たちにとっては重要なことかもしれないけれど,
初心者にとっては,とりあえず,そんなことはどうでもよくて,何が出来るのかが分からない.
逆に言えば何を作りたいかが分からなければ勉強しても何の意味もない(これが昔の私かも)
でも,とにかく何か作りたい.何故だかよく覚えていないけれど,
C でテトリス作りたいと思っていたのは今でも記憶に鮮明に残っていて,
当時も試みたのだけれど,コマンドプロンプトでしか動かせないようなプログラムしか書けなくて
どうしてウィンドウを作って表示するようなプログラムが書けるのか分からなかったし,今でも分からない.
(今もあるのか知らないけれど)VB とか Visual Studio とか Eclipse みたいな統合開発環境を使えば
そんなこと知らなくても,ウィンドウは作れたし,ボタン配置したり,その他色々簡単にできるんだろう.
でも,先に言ったように,開発効率などどうでもいいし,出来ればいいということでもない.
どうしてウィンドウが出来るのかが,分からないのが気持悪くて統合開発環境使う気になれなかった.
仕事ではないのだから,ただひたすらキーボード叩いて全部一から手打ちでプログラム書きたい.
タイプ数カウントするプログラム常駐させて今日は何千何万打も叩いたぜ!!というただの自己満足だけ.
とにかく,ソース汚くてもいいから「これを作りたい」ってのがないと続かないんだろうなと思う.
別にプログラムだけでなく,何に関しても言えることかもしれないけどね.
全然質問の解答になってないな.長文失礼.