「java」を含む日記 RSS

はてなキーワード: javaとは

2009-02-23

何を勉強していいのかわからない。

何を勉強していいのかわからない。

プログラムというものに興味を持ち、独学で勉強した。

言語Hello Worldぐらいは書ける。erlangハノイの塔を解いた時はこんなに短く書けるのかと感動した。でもいずれの言語もちょっとずつしかかじって無くて、自分がこれから何を勉強していいのかわからない。

Java, C++, Ruby, Python, JavaScript, PHP, erlang, 最初は練習用の問題みたいなのを解いているのが楽しくて、ブログとかで目につく言語で気になったものを選びながら各言語でやってみた。でもこのあと何をしたらいいんだろう?

オブジェクト指向クラスと違うの?プロトタイプベース?何ソレおいしいの?

こんな僕は何を読んで、何を学べばいいのでしょう。

2009-02-22

もしも、あの言語で駅の券売機を作ったら

http://anond.hatelabo.jp/20090220065041

Brainf*ck

8つしかないボタンの順番を正しく押さないと目的地への切符が買えない。

COBOL

普通の英文による注文で切符が買えるハズなのだが、実際には専門家に頼んで注文を書いてもらわないと上手く買えない。

LOGO

亀を出発駅から到着駅まで移動させることで切符を買う。

Haskell

出発駅と到着駅の型が違う場合、適切な経由駅を設定しないと切符が買えない。

C++

任意の切符を発行するためのビルダーテンプレートインスタンスを生成できる。

JavaScript

切符は他の切符コピーで作られるため、切符をどう印刷するかについてのプログラムはまったく入っていない。

Prolog

到着駅と出発駅を入力すると、到達可能であることが示される。切符は出てこない。

Malbolge

この券売機切符が買えるのかどうか、まだ証明されていない。

Java

どの駅でも同じ操作で切符が買えるハズなのだけど、実際のところは微妙に違ってぬるぽで落ちる。

FORTRAN

カンマとピリオドを間違えて券売機が爆発。

ニコ生アラート Java

どこに書いたらみんな気づいてくれるのか分からないからここらへんにも書いておこう。

ニコ生アラートJava版作りました。マックでも動きます。

windowsだと終了できないかも。(javaw.exeを強制終了で多分いける)><

やっつけ仕事だけど多分動きます><

http://tinyurl.com/NicoNamaAlert

だれか改良してください><

=====================================

りーどみー

=====================================

中身

NicoNamaAlert.jar

プログラムファイル

setting.txt

設定ファイル

NicoNamaAlert.java

ソースコード

ReadMe.sjis.txt, ReadMe.utf8.txt

このファイル(と別エンコーディング版)

使い方

Javaが入っていない人はダウンロードしてください。

http://java.com/ja/

その際、勝手Yahoo!ツールバーが入る事があるので気をつけて。

setting.txtに、1行ずつ予約したいコミュニティまたはチャンネルIDを登録

channel/ch99999 とか community/co99999 といった感じで。

とりあえず1行ごとIDと比べているだけなので、

他に何か書いてあっても大丈夫なはず。

IDの行だけはID以外書かないようにしておいてください。

毎回このファイルは読み直しているので、変更しても再起動する必要はありません。

NicoNamaAlert.jarダブルクリック

30秒おきに新着をチェックします。

Macの場合はおなじみのコーヒーカップアイコンがDockに出てきます。

Windowsの場合は何も出てきません。

Unixはまだ試していません。

予約したコミュ生放送が始まると、ダイアログが出るので、

はい(Y)をクリックすると、アドレスコピーされる。はず。

それをブラウザペーストすればおけ。

終了するときは、Macの場合はDockのアイコンを選択して、

上のメニューから終了 または Cmd+Q

Windowsの場合はタスクマネージャからjavaw.exeを探して強制終了してください。

他にもjavaアプリを起動している場合は、javaw.exeが複数ある可能性があるので、

そのときは運試し。



言い訳

Macだけどニコ生アラートがうらやましくてつくりました><

javaブラウザを開く方法が分かりません(SE6ならできるっぽい)><

やっつけ仕事なのでソース超きたないです><

もっといい感じなの作れるひとお願いします><

ソースコードはもう適当に炒めちゃってください><

コマンドラインから起動すると中の人が何してるかなんとなく見えます。

settingに最初から入っている二つのコミュ

1つ目はお気に入りコミュ「おい、ゆとり英語教えてください。」で、

2つ目はニコ生アラートWin版)の生まれ場所です。

この2つの生放送がなければこのプログラムはできていませんでした><

仕組み

http://live.nicovideo.jp/recent から必要なデータ

1行1行検索して取り出しているだけです。

チャンネルコミュニティIDサムネイルファイル名から取れます。

ね、簡単でしょ?


今後の展望

アイコンコーヒーカップ以外にしたい(っていうとOSごとに実行ファイルが必要)

Windowsでもちゃんと終了できるようにしたい(まぁ本家使ってください)

チャンネルコミュニティの登録を簡単にしたい

以上。

2009-02-19

モダンPerl入門』を第1章だけ読んだ

巷のPerl Mongerな人たちの間で話題の『モダンPerl入門』を読み始めた。

第1章はオブジェクト指向トレンドの話で、とても興味深く読んだのだが、同時に「なんでこれPerlで実装せなあかんの?」と疑問に思った。ていうかオブジェクト指向やりたいならJavaC#でいいじゃん。

Perl5には本格的なOOPの仕組みが実装されていない。

継承という基本的な概念もないし、コンストラクタなんかも用意されていない。ゆえに、MooseとかのCPANモジュールを使って実装しなければいけないのだけれど、その分敷居が高くなって初心者には判りづらい。初心者でも現場に投入できるような、強力なオブジェクト指向機構が用意されているJavaC#といった言語StrutsASP.NETといったフレームワークなんかとは全然違う。

私はメインPHPASP.NET(C#)という人間で、Perlバッチプログラムとかクローラの実装とか雑用処理なんかに使っている。PHPは小規模プロジェクトアジャイルな開発がしたい時、ASP.NETは大規模プロジェクトに呼ばれた時用の懐刀という感じで使い分けている。PerlWebサービスを作ることももちろん出来るけれども、どちらかというとスピードが優先される開発に用いるものだと思うし、OOPを用いた大規模なプロジェクトPerlを使おうとする理由がよく判らない。無駄に難しいし、そもそも本書を読めるレベルPerlを理解している人の頭数がかなり少ないだろうから、実装しても保守コストがやたらかかる。Livedoormixiはてなのような大規模サイトPerlで動いているようだが。。。

モダンPerl入門』は内容も書き方も素晴らしい良書だけれど、その辺りが引っかかった。「PerlOOPを使う理由(APS.NETStruts+Java採用しない理由)」は何なのだろうか? 私のプログラマーとしてのスキルが低いだけだと思うが、よく判らないので誰か教えてくだしあ。教えてダンコーガイ

2009-02-16

イエス・キリストは神を指すポインタ

キリスト教の教義の中で難解だと言われる、三位一体Wikipediaによれば、「父なる神と子と聖霊が一体(唯一の神)であるとする教理」。

http://ja.wikipedia.org/wiki/%E4%B8%89%E4%BD%8D%E4%B8%80%E4%BD%93

高校時代から思っているのだが、これ、そんなに難しい概念なのだろうか?要するに、「父なる神」と「イエス・キリスト」と「聖霊」という3つのポインタがあって、みな一つの「神」という実体を指しています、ということだけでしょ?プログラミングをやっていれば、すぐに理解できる概念だと思うし、実際、プログラミングの例を引き合いに出して教えるのが手っ取り早いと思うのだけど、そうやって三位一体を教えている事例を見たことがないので、増田に書いてみた。英語圏では、とても誰か既にやっていそうな予感なんだけど、誰か知ってたら教えて。Java風に書くと、次のような感じ。(ポインタじゃなくて参照だけど。)

final class God {

private static God singleton;

private Singleton(){};

public static synchronized God getInstance(){

if(singleton == null){

singleton = new God();

}

return singleton;

}

}

class World{

God Father = God.getInstance();

God JesusChrist = God.getInstance();

God HolySpirit = God.getInstance();

}

簡単に書いておくと、三位一体キリスト教の基本的な教義で、いわゆるキリスト教は、どの宗派でもこれを認めているものが多い。なんでこの教義が基本的かというと、歴史上の人物であるイエス・キリストが、単なる人ではなく実は神でもあった、ということを信じることに繋がるから。「キリスト歴史上の偉人で神の教えを説いてくれたけど、単なる人で神ではない」という考え方も出来て、実際、この考え方が広まったことがあったが、325年のニケーア公会議というので異端になった。

2009-02-12

http://anond.hatelabo.jp/20090212222937

そっか。

でも、同じだけ小学校6 中学3 高校3 という年月を積んでいても、行ける大学という結果が違う。という学歴の例が一番よく分かるけど。

年数と経験関係ないだろ?

IT業界で言えば

C言語 経験 3年

JAVA 経験3年

 という履歴書職務経歴書)をよく見掛けるが、全く信用できない。

C言語 経験 1年でもすごくよくできる奴もいれば

C言語 経験 5年でも 1年の奴よりない奴もいる。

その辺から類推するに、経験スキル量だとしないならば、じゃぁ、社会経験って何なのさ?

2009-02-09

ActionScript vs C#

これからのWebサービスとかデスクトップアプリケーション市場ActionScriptC#の対立になると思っているんだけれども、

その2つを対比している事をあまり見たことがない。

それはたぶんプラットフォームの軸でまとめられているから黒子になっているんだと思う。

ActionScriptFlashAIRの開発言語で、それに対してC#WPFSilverlight

Flash VS Silverlight最近ちょくちょく目にするから対比構造はあるんだろうけれども

それがActionScript VS C#とはならないのはなんでかなぁ

/*

VSと書いたのは煽っているからだけど、もっとC#Javaのようなイデオロギー紛争になっていも面白いのになぁ。

ASJava系譜の流れなんだから、AS vs C#言語コンセプト論争もあってもいい気がするんだけれども)

畑が違うっていうけれどもAdobeMSも向かっている所は似たり寄ったりで、

事実技術採用の時にFlashか?Silverlightか?みないな話は水面下でちょいちょいあるはずだと思う。

(それで「やっぱりFlashかな」とかなるんだろうけど)

*/

仮にRIAっぽいことを目指すならFlashSilverlightかを選択肢にあがるけれども、

そこにはプラグインの機能有無や普及の優劣の話しか持ち上がらない。

ビジネス的にはもっともな論点だけれども、

デベロッパから見た選択理由としてプログラミング言語のあれこれを考えないはずがない。

それなのにその考えが全然見かけないよ。

2009-02-03

月収400万くらいのプログラマです。

フリープログラマです。月収で200~1500万くらい。年収で3000万~1億くらい。都内のボロいワンルームの1Fに一人で住んでテレビ冷蔵庫も食器もない部屋で毎晩コードを書いているだけです。昼は寝ています。ごはんは隣のコンビニですましています。何かを選ぶ気力も無いです。使っているパソコンThinkPad X30だけです。これで十分です。有料のソフト秀丸があれば何もいりません。

欲しいものはなにもないです。行きたいところもないです。会いたい人もいないです。友達も仕事以外では誰もいないです。学生時代の大半はいじめられっこだったので、基本的に人は好きじゃないです。2ちゃんスレを立ててもだいたい伸びないです。オンラインゲームも人と絡むのがすごい苦手ですぐやめました。惨事彼女なんているわけないです。セックスは有料でしたことがありますけど、zip同人誌を見てオナニーしてるほうが気持ちよくて、面倒くさくないと思ったのが感想です。恋をしたこともありますが、多くは色恋営業で、街で声をかけられて、数十万の絵を買わされたり、数千万の紙切れを買わされたりして、契約成立のあとは、一度も会ってくれない女の人に3人ほど恋をしました。一生虹でいいとおもいました。

コードを書くのだけは異常に速いと言われます。Webサイト構築でも、FlashでもAJAXでも、DSP開発でも、PGA/CPLD verilogでも、WindowsMacでも、JavaでもAirでも、BREWiアプリとかのケータイアプリでも、iPhoneAndroidアプリでも、PS2PSPのコンソール機のゲーム開発でも、組み込みの独自OSの開発でも、ドライバ開発でも、カスタムCPUコンパイラでも、なんでもこなしてきました。キモい38歳です。コードを書くだけがとりえです。それだけの人間なんだと毎日思っています。別に幸せでも不幸でもないです。ただ、やりたいこともないです。正直、明日にでも死にたいです。もう死んでいるかもしれません。みなさん、ありがとう

2009-01-19

http://anond.hatelabo.jp/20090119021750

Java使いはアレだな。どんだけ身体が疲れててもサボらずに家事や部屋の整理整頓をきちんとこなす主婦だな。

言語使いへの偏見の例

平和だなぁ。

2009-01-16

プログラマーのお前らに「簿記会計財務の違いエントリ」の間違いを説明する

これね。

簿記と会計と財務の違いについてまとめてみた - GoTheDistance

全くの嘘なので真に受けないように。

はてなブックマークプログラマ理系人間の集まりだからスルーされているが、少しでも簿記をかじった人間ならあまりのデタラメさに呆れたはずだ。

そのくらい間違いが酷い。

JavaScriptJava進化系です」と言ってるようなもの。

いかにデタラメかわかるだろう?



彼にとって門外漢な分野に首を突っ込んだのだし、間違ったこと自体は非難されるべきじゃない。

ただ、散々指摘されても修正しない態度はありえないよ。

直そうよ。

間違ってるんだし、たくさんの人が見てるんだから。

2009-01-08

法務省オンライン申請システム不具合

出来心法務省オンライン申請システムを使ってしまったのだが、ICカードデジタル署名ができない不具合があった。使っている人がいるのかわからんが、とりあえず対処法を増田に捨て流しておく。

症状

法務省オンライン申請システム上でICカードを使ったデジタル署名を施そうとしても、媒体選択画面でICカードの項目がグレーアウトして選択できない。当然、JREや申請システムクライアントは手順通りにインストールしてるし、ICカードドライバも問題なく、公的個人認証ユーティリティでも認識されている前提。

原因

申請システムクライアントデジタル署名用のドライバを探しに行く際、ユーザーディレクトリと同じパスを探しに行ってしまうため、プログラムファイルとホームディレクトリが別々のドライブになっていると、ICカードを見つけられない。つまり、Program FilesをCドライブに、Document and SettingsをDドライブに設定しているような環境下では、 本来はC:\Program Files\Common Files\e-gov_app\load_path\default.datを探しに行くべきところを、D:\Program Files\Common Files\e-gov_app\load_path\default.datを探しにいってしまうものの、当然そんなファイル存在せず、申請システムクライアントICカード認識せずにエラーになる。

対処法

とりあえずどうしようもないので、無理やりDドライブに同じパスフォルダを作り、default.datコピーすれば動作した。

その他

IEだとツール>Javaコンソールでログが見れるので、他にも問題があった時に対処しやすいかも知れない。

2008-12-31

365連休突破記念。db-view on stax

ついに365連休突破してしまった。

そろそろまずい。最近、鬱、障害者年金でggrようになった。

ところでなんだが、staxってとこがAmazonのEC2サービス上でTomcat無料開放しているらしいのだ。

http://jp.techcrunch.com/archives/20081216stax-networks-launches-google-app-engine-for-java/

で昔、作ったJavaアプリを置いてみようと思ったのだ。

で置いた。

http://db-view.johannes.staxapps.net/

ソースはここ

http://code.assembla.com/dmcsystemservice/subversion/nodes/db-view/trunk

MySQLROMユーザーアカウントを作りたかったのだが、USER追加のGRANT権限なしだってさ。

パスワード変えた人はここにログっていってくさい。

これ作ったころはGUIの閲覧ツールってAccessとかしかなくて、結構好評だったのだが、今はフリークライアントソフトがいっぱいでもう、俺の出番おわったわ。

以下、作業ログ


まずJavaを入れる。

http://java.sun.com/javase/ja/6/download.html

で、eclipseを入れる。

http://www.eclipse.org/downloads/

で起動してみる。

が。。。。起動しない。

でggr。

となんかeclipse.iniがおかしいらしい。

http://ajiblog.sblo.jp/article/17157448.html

eclipse.iniを修正して再起動

おっきした!!

で、svnclientに入れたくなかったのでggr。

と200Mまで無料svnサーバーがあった。

アカウントをとる。

http://code.assembla.com/dmcsystemservice/

eclipsesvnプラグインを入れる。

http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn15/eclipseplgn15_1.html

subversiveも使ってみたいなぁと思ったが、ここでeclipseがバシバシ落ちる。

eclipse.iniのXMXオプションをいじるがOutOfMemoryやら、libeay32.dll 序数が見つかりません。とか

秩序ってなんだよ。英語でそのままいってくれ。余計わからん。

でなんか、負けた気がしたが、Javaを5に落とすことにした。

http://java.sun.com/j2se/1.5.0/ja/download.html

XMXを768Mにして起動すると、落ちなくなった。

が、相変わらず、秩序が見つからなくなる。秩序って何。膣女?

こっちのsvnプラグインのほうがいいのかも。。来年やろう。そのうちやろう。ゆっくりしていってね!!

http://server.seasar.org/manual/install_subclipse.html

で、staxプロジェクトeclipseにimport

http://d.hatena.ne.jp/yuroyoro/20081222/1229922781

楽勝だ。

で、職場からこっそり昔作ったアプリをおいて見る。

で、また動かない。

Javaで動かない時は大体クラスパスだ。

もはやggrも再起動も再インストール無駄だ。

クラスパスを必死に設定するのだ。

で、動いた。が、履歴機能が動かない。

で、ソース修正。

ObjectInputStream、OutputStreamを使っていたのだがXMLEncoderとDecoderにした。

http://www.utj.co.jp/xml/dev/java/dxjava_7.html

ぉ。こんな便利なのが1.4からあったのか。

おもえば、これを最初に作った時は1.3だった。LinkedHashMapがなくてArrayList内包したMapを作っていた。

が、そんなのいらんので消した。で、履歴保持クラスもXMLEncoderからリフレクトできるようにガバガバプロパティをさらした。

そしたら、動く。履歴機能が動く。

ぉぉ。では早速、svnにあげよう。

で、eclipsesvnクライアント。相変わらず膣女が見つからないらしい。

去年だったかな、女の子ipodの音はどうやって大きくするの?と聞かれて、右にくるくる。と答えると、

あ、大きくなった。今度、のび太くんのもまわしてみよう。と言われた。

あれから右にくるくるされてない。泣きたい。あの娘は膣女だった。

そんなことを思いながら、エロサイトに誘導されて一回休みeclipseを落とす。

けっこうAVパッケージってカッコイイのが多い。誰が作ってるんだろ。

http://pics.dmm.co.jp/digital/video/h_155tdjk00001/h_155tdjk00001pl.jpg

で、eclipse再起動svnクライアント。相変わらず膣女が見つからないらしい。

eclipseは重くなるかもの理由で日本語化していない。

おれくらい帰国子女になれば、英語のメニューのほうが調子がいい。

と思っていたが、svnクライアントだけ微妙日本語化されている。

が、肝心なところが英語だ。よくわからん。CVSと一緒だろ。と思ってUpdateしたら、ソースが消えた。。。

俺は泣いた。

LocalHistoryから復元しようと思ったのだが、まんどくさい。

staxにDeployしたやつを再度ダウンロードしたら元に戻った。

びっくりした。バックアップソフトクラッシュする。そんなことも初心者には、おうおうにしてある。

だからバックアップバックアップ(ry無限ループにはまるシステムも少なくない。

あきらめが大事だ。ある程度であきらめないとキリがない。

で、再度svnクライアント。今度はCommitをちゃんと選ぶ。

が、明らかにUploadしていない。で、終わると、いくつかのファイルアップロードキャンセルされた。とかでる。

svnクライアントsvnリポジトリを再度設定。

で、再度svnクライアントまたまたCommitをちゃんと選ぶ。

ぉ。今度はうまくいく。あきらかにさっきより時間がかかっている。WireShirkで見てないが、あきらかにsvnサーバーにソケットをはっている。

で、おそるおそる、ブラウザからsvnリポジトリをみてみる。

http://code.assembla.com/dmcsystemservice/subversion/nodes/db-view/trunk

ぉぉ。あがっている。

さてタグを設定して、ブランチ作ってみたいみたいが、壊れそうなので怖い。いつからか大人の恋に臆病だ。

XMLEncoderの入出力をBufferedにしようと思ったが、もういいや。

で、寄り道している間に、こんなのを今更発見した。

http://tuigwaa.sandbox.seasar.org/index.html

これだ。俺が欲しかったのはこれだ。

これぐらい楽勝じゃないと、プログラマはわりに合わない。

さっそく落とす。

さっそくstaxインポートする。

が、動かない。誰のせい?それはあれだ。また奴だ。。。



そう。クラスパス。。。

もういい。まんどくさい。この金髪ブタヤロウ!!しね!しね!しね!と誰かにメールしたいが、やめておこう。

2008年12月31日 泰葉


あと、なぜかFaviconを使ってみたくなって、Favicon作った。

http://www.freefavicon.com/

http://anond.hatelabo.jp/20081231190326

そういうのはバッドノウハウとは言わないの?

関数ポインタバッドノウハウとは言わないでしょ。C言語自体がバッドノウハウの結果だと言うなら、当たりだけど:)

手続き関数という抽象まことに一般的な存在で(数学では汎関数というのもある)、それをC言語で直接的に表現したのが関数ポインタ関数的なものを オブジェクト指向言語オブジェクトとして実装するほうがバッドノウハウだと思う。 少なくとも私は JavaのComparableインタフェースよりも C言語の heapsort/mergesort/qsort の関数引数 int (*compar)(const void *, const void *) のほうがシンプルで どちらかといえば本質をよりよく表していると思う。 なぜ関数的なものを表現するのに オブジェクトとかinterfaceとか継承とか「余計な概念」を導入する?それこそバッドノウハウでしょ。 まあでもC言語にはクロージャが無いから、関数的なものも扱いづらいことこの上ないが、Cにクロージャが無いこと自体はバッドノウハウとは言わないでしょー。

逆も然りで、オブジェクトを表現するために 関数を使ってれば そればバッドノウハウだけど、オブジェクト関数ほど一般的な概念ではないと思う(オブジェクトなんか無くても別にいい、かも?)。

あ、もちろん難読化や最適化や動的ロードのために件のようなコードを書くのはバッドノウハウに近いだろう。

anond:20081230040914

あんま関係ないけど、

どうやって作るか?より、

何を作りたいか?から始めた方がいいんじゃないのかな

PICとかの組み込みが楽しそう!とかなれば、

やっぱりC覚えたほうが何かとらくちんだと思うし。

Webやりたい!だったらJavaScriptとかPHPあたりだろうし、

であれば、人によってはVBAから始める人もいるだろうなぁ。

ちなみにイマドキの授業とかでJavaやる場合、JavaVM(バイトコードだし)とかも対象範囲に入ったりするのかね。よくわからんけどさ。

http://anond.hatelabo.jp/20081230225149

C/C++にいくつか思うこと (ちなみに、プログラマ始めたのはCができた頃でC++よりも私のプログラマ歴の方が長い)

Cはポインタ というか、ポインタを使いこなすことで、チューニングしていく言語だから ポインタ使いたくない=チューニングしたくない

って人は他の高級言語で良いと思う。ただ、動画などの処理をC/C++又はアセンブラ以外で書く人というのは、あまり聞かないので

速度が必要=C/C++って事かと思う。

昔、全くチューニングしていない、CとJavaを比べて同じ速度だからJavaでもOKというレポートを読んだことがあるのだが、あれは酷かった。

Cはチューニングしたときに、もっとも伸びしろが大きく、必要な場合アセンブラと並記できることで、ほぼアセンブラという領域まで

チューニングできるところが魅力。その際、ポインタは無くてはならない。知っておくべき技術

繰り返しになるけどチューニングしない人には意味がない言語と言われればその通り。

また、ポインタだけではなく、レジスタについても知っておくとCでの伸びシロが大きくなる。

そして、少なくともアセンブラレベルでのPUSH,POP,CALLは覚えておいた方がよい。

関数コールをすると、レジスタ類の待避アセンブラレベルでは走り、その上、スタック引数返値を積んでジャンプするという

ものすごく遠大な処理がアセンブラレベルでは走っているが、Cレベルでは1行の関数コールに見える。

という事を理解しておくと、C++でのインライン関数重要性や、再帰関数が実行時にはかなり重い理由が頭の中に浮かんでくる。

最近コンパイラ最適化してくれる場合も多いけどw

こういう言い方をすると、最近はCPUが早いから大丈夫とか言う人が多いが、じゃぁWindows Vistaは売れましたか?と聞きたい。

少なくともチューニングが必要な事もある。必要ないこともある。という事で選択すれば良いと思う。

たかだか、数行のスクリプトチューニング不要ならそりゃ、Perlつかうさ

参考までに書いておくと、個人的感覚ではC++はオブジェクト指向言語ではない。

アセンブラにまで行き着く C言語を大規模開発する時に最低限必要となる抽象化をするための言語

そのために、まともにOOPで設計するとC++では重くなる事が多い。いかに、崩せるかがキモ

またC++使いか?エセC++使いか?の見分け方は

constを正しく使えるか?参照を正しく使えるか? vtableの説明ができるか?

という質問に正しく答えられるか?で見分けると結構見分けがつくと思っている。

http://anond.hatelabo.jp/20081230225149

元増田っす

言語仕様コンパクトなのがなぜ良いのかと言うと、実は2つ理由があります。

  1. 学ぶのが楽だから
  2. コンパイラを作るのが楽だから

1つめは「全体像を把握するのが楽」という理由で。C++JAVAだと全体像を把握するだけで疲れてしまうわけです。(使い方は奥深いけどね)

2つめはCOBOLを学ぶのと同じ後ろ向きの理由だけど、これからも活躍の場が多いだろうという予測。いまだに組み込みとかハードよりのところだとCは現役だったり、新製品の開発でももりもり使われてます。コンパイラが簡単に作れるし移植も楽だから。(これがCOBOLとかJAVAだと、開発環境を整えるのが大変なので選択されない。未来はわからないけれどもね)

標準ライブラリまで含めても、Cは異常に小さいよ。速いし。

Cのポインタってのは、値渡しのみにするとスタックコンパイラをすっきりかけるけど、じゃあどうやって柔軟に運用させるべーと考えた妥協の産物です。

だから標準ライブラリにすら文字列・集合・リスト配列を便利に扱えるものは入ってないし、ガーベジコレクションも多重のスレッドもヒープも入ってないわけです。(だからスタックと静的割り当てだけなんとかすればコンパイラが作れちゃう)知らなかったから作れなかったんじゃなくて、あえて切り捨ててる。

方向性として「間違いを少なくプログラミングする」とか「効率よくプログラミングする」ではなく、「コンパイラを簡単に作れるのが1番。でもできるだけプログラミングしやすいよう」にしてる。

そういう言語を2番目以降に学ぶのが良いのは、ハードよりの考え方(正確には、コンパイラよりの考え方)が出来るようになるから。これが「ポインタと言う概念を理解できる」ということに含まれてる。

メモリ意識したりポインタ概念を理解しておくと「なんで暴走するのか」「どうすると自分の足を撃てるのか」が理解できる。限界も面倒くささも便利さもわかるからね。(ポインタだからっつって暴走するんじゃなくて、C言語ポインタの実装だから、なんだけども。あと、ほんとは機械語アセンブリを学ぶのが良いとは思うけど、それはハードルが高い。出来ることも少なくなっちゃう)

ポインタが暴走するから隠蔽する・使わないようにする・ミスっても平気にする、ミスらないようにするというのは、言語としては正しい方向性だと思う。

誰がどう考えても「存在しない配列を参照したらエラーを返さずに黙って暴走する(そこにあるメモリを見ちゃう)」「仕様として不定な動作が多い」なんてのはまずいでしょう。けれども、なぜまずいのか知らないまま便利な言語に慣れちゃうのは、感覚として良くない様な気がする。

C#だと信じられないくらい簡単にアプリ作れるし、PythonPerlは普段使いの言語としてはすっごく便利。でもそれって、パック野菜やお惣菜を買ってきて晩御飯を作るようなものじゃないかな、と。ピーラーやミキサーは便利だし炊飯器はなきゃ炊事なんてやってられない。それでも、その道を学ぶのであれば「レシピを見れば料理は作れる」「包丁となべで調理できる」「なべかまでご飯は炊ける」なんてのは、必要じゃないかなあと。

今あえてC言語を学ぶのは、それが学びやすい(情報が手に入りやすい)最後の言語だから。

(まあ、何を目指すかによって違うとは思うけどね。僕の言ってんのは「いまあえてスペイン語だ!」って言ってるようなもんだし。違うか)

2008-12-30

http://anond.hatelabo.jp/20081230060518

とはいえ、参照や配列を理解するのにポインタは必須ではない、というか別概念だよね。

Cでは参照や配列を扱うときにポインタという生の実装がむき出しになってしまうけど。

OCamlSML (もしくはHaskell) のような、ぜーんぶ値渡し+必要なところだけ陽に参照(ref)型を使う、という言語を最初に使ってれば、ポインタを理解してなくてもJavaC#の参照もまあすんなり理解できると思う。

なまじ中途半端に参照と値渡しが構文的に区別されずに存在していたり、Rubyのように参照しかない(と思ってるんだけど)世界からはじめると、後々苦労するような。

CはもはやゲームとかOSとか組込みとか、リソース制約のきついソフトウェアを書くための言語にすぎないと思う。やっておくに越した事はないし、低レベルレイヤを理解しておくべきだし、言語間の関数呼び出しみたいなことをするのにも知っておいた方がいいけど(とはいえSWIGみたいなものもある)、より抽象度の高いところから手をつけるアプローチもあっていいんじゃないかなー。

# トラバ先を誤爆

2008-12-17

アセンブラ

アセンブリ言語ってメモリレジスタ間でひたすら読み書きするだけなので全然難しいことないと思うんだけどな。自分で書くぶんには。確かに面倒臭いし可読性は低いかもしれないけど。C言語ウルトラスーパーデラックスマクロアセンブラなのでちょうどいい感じ。

むしろ高級言語でいろんな人が各人の美学に基づいて設計したオレオレ概念を理解するほうが骨が折れる。アセンブラ脳に染まってると、ローレベルで何をどうしたらいいかは想像できてても、その言語ルール上でどう記述したらいいかが分からなかったりする。

JavaはややっこしいけどJavaバイトコードは素直なスタックマシンでわかりやすいよね、とか思ったりもする。

2008-12-12

http://anond.hatelabo.jp/20081212223025

C or JAVAじゃなくて、(CかつC++) or JAVAだと思うがなあ…。俺も1年目だけど(ただし他職種からの転職)。

ちなみに俺はCについてはK&Rをとりあえず1冊読んですぐC++に行っちゃったので、非オブジェクト指向設計が全くできない…。

Cで設計ってどうやんの?

プログラマーへの道

3Kだの7Kだの言われるプログラマー1年目のオレが

どうしようもなくIT業界に進むことになった学生に寝ぼける。

まずはひとつの言語をとことんやれ

プログラミング言語の種類にはC、VBJAVADelphiPHPPerlとか無数にあるが

どれでもいいからひとつ好きなの選んで学べ。

どれにしようかと迷うぐらいならCかJAVAやっとけ。

あまりマイナー言語プログラミグ嫌いになるからやめとけ。

まずは基礎だ

いきなり難しいことしようとは考えず、入門書通りに文字を表示したり

掛け算したりそういうのを確実にやれ。

FizzBuzzっていう基礎さえできてれば屁をこく方が難しいプログラミングがある。

1からどんどん数を増やしていくプログラミングだ。

3の倍数になった場合は数字の変わりに「Fizz」と表示させて

5の倍数になった場合は数字の変わりに「Buzz」と表示させる。

3と5の公倍数になった場合は数字の変わりに「FizzBuzz」と表示させるシンプルプログラムだ。

プログラミングできるって言っておいてこれもできない奴が結構いるわけだ。

学習の仕方

とりあえず入門書買って順々に進んで行け。

大抵のサイトはやり方と簡単な説明だけで詳細な説明が載ってないから本は買え。

そして一気にやろうとするな。先週やったことを30分でもいいから今週にもしろ。

ソースコピペじゃなくて自分の手で打ち込め。足でもいいぞ。

ミスすることはとてもステップアップに繋がるからな。

IDEや補完機能がついたエディタなんて使わないで

メモ帳で作って、コマンドプロンプトからコンパイルすること。

あと、目標を立てろ。1日10ページとか1章とかそんなんでいいから

そして最後の5分は今日やったことをノートでもブログにでも書け。

本とかの練習問題では目標タイムとか書いてあるからそれを守るように解いていけ。

時間を多めにとってある入門書の練習問題程度で目標タイムに届かなかったら前の章からやり直せ。

仕事生産性が非常に大切だ。 仕事遅いのにできる人より残業して給料貰ってる汚い大人にはなるなよ。

とりあえず基礎だ基礎。

基礎を学び終わったら

普通なら応用に進むのが普通だろうと思うが、これからプログラマになるわけだから

環境を変えてやってみるのもいいと思う。基礎さえ確実にマスターしておけば

応用的なものはその都度調べることの繰り返しで結構覚えれるもの。

ここからはメモ帳からサクラエディタ秀丸エディタに変えてプログラミングしてみたり

EclipseVisual Studioを使ってこういったツールが非常に便利であることを体験しろ。

仕事はこういったツールがないとやっていけない。

そして意外とこういったツールを使いこなせていないプログラマが沢山いる。

使いこなすことによって仕事量が増えるだけでなく、ミスも減らすことができる。

まだ余裕があるなら

英語できないならプロラミング関係英語を最低限覚えろ。

英語エラー吐き出されただけでため息出すようじゃ話にならん。

ネットで調べても英語サイトがよく引っかかるわけだ。

あと、エラーメモ帳作れ。これ以外と人にもつかえる。

2008-12-05

だいたい行数なんて意味ないよね

プロジェクトにもよるし担当箇所にもよる。

スクリプトエンジン作ってる場合はやたら行数増えるけど、ほとんど継承で済むボタンなんかは行数増えない。

C風に書く人と

func()

{

}

java風な人でも数こなしてると差が出てくる。

func(){

}

いらないってほど大量のコメントをだらだら書く人と的確に何をするクラス関数か書く人でも違う。

何でもかんでもIfしちゃう人と多様性を理解できる人もぜんぜん違う。

だいたい作ってる途中で整理して行数が減る日だっていっぱいある。

今更行数はないよ。

http://anond.hatelabo.jp/20081205130415

2008-12-03

諸君 私はサイエンスが 好きだ

諸君 私はサイエンスが 好きだ

諸君 私はサイエンスが 大好きだ

帰納法が好きだ 演繹法が好きだ 思考実験が好きだ 実証実験が好きだ 

代数学が好きだ 関数解析学が好きだ 集合論が好きだ 統計学が好きだ 情報理論が好きだ

Unixで Linuxで MatLabで Mathematicaで C++で Javaで 紙と鉛筆で 口頭で

全てのプラットフォームで行われる ありとあらゆる論証行為が 大好きだ

数列をならべた 並行スレッドの一斉実行が ファン音と共に他のプロセスを reniceるのが好きだ

ふと思いついて計算してみたモデルが 想定していた通りの結果をはじき出した時など 心がおどる

Athlonの64bit(フィア・ウンド・ゼヒツィヒ)でフェドラ7を使うのが好きだ

某M木先生さー、何でもかんでも「脳科学で説明出来ます」って擬似科学入ってるよねー、と言われた時は 我が意を得た様な気持ちだった

ラグランジュの未定乗数で ハミルトン原理の拘束が表現されるのを知るのは 楽しい

ゾラッティの ミラーニューロンに関する基調講演を聞いた時など 感動すら覚えた

還元主義のfMRI万能論者達の発表が 質問攻めと共に叩きのめされる様などはもう たまらない

居並ぶフックス型微分方程式が 私の押したEnterキーとともに

金切り声を上げるCPUに あっという間に計算されるのも最高だ

哀れなM$オフィスユーザー達が 雑な数式エディタで 健気にもフィッツヒュー・南雲モデルの方程式を書こうとしている時に

PCフリーズして ドキュメント過去時間分のテキストごと木端微塵にされるのを見ると TeX使いは ちょっと優越感を覚える

露助教授に「あなたの理論は間違ってる事が(ロシアで)20年以上前に証明されていてねぇ」と指摘されるのが好きだ(ラボ内だったからな)

必死に守るはずだった仮説が反証され 実験の不備が指摘され 論文リジェクトされるのは とてもとても 悲しいものだ

米国の物量(研究金的意味で)にものを言わせた研究所に 自分と同じ研究内容を先にPLoSに発表されるのだけは 勘弁だ

締切り(近々だと1月に1こ)に追いかけられ 太平洋標準時だからこっちの朝4時まで大丈夫!と徹夜するのは 体力的にそろそろ無理だ

諸君 私は博士課程を 地獄の様な博士課程を 望んでいる

諸君 教授に付き従う 戦友(D論的な意味で)諸君 

君達は 一体 何を 望んでいる?

更なる 論文発表を望むか? 

情け容赦のない 鬼の様なピアレビューを 望むか?

並列処理の限りを尽くし 三千世界CPUを焼き尽くす 嵐の様なシミュレーションを 望むか?

D論(クリーク)!! D論(カフェイン)!! D論(メンタルヘルス)!!」

よろしい

ならば学会発表)だ

我々は満身の 力をこめて 今まさに スライドを指し示さんとする レーザーポインタ

だが この暗い研究室の中で 3年もの間 堪え続けて来た 我々に

ただの論文発表ではもはや足りない!!

大論争を!! 

一心不乱の大論争を!!

。。。。えー、

「男が出来る気がしない」と、 http://anond.hatelabo.jp/20081127063438 を書いた増田ですが、

どーせ釣りだろと言われた/予想以上にHELLSINGに反応してくれた人がいた/NIPSに持ってかなきゃ行けないスライドがいつまでたっても終わんない/ので、ついカッとなってやった。反省はしている。

ログイン ユーザー登録
ようこそ ゲスト さん