はてなキーワード: javaとは
http://anond.hatelabo.jp/20070524111812
うちとこが良い情報工学科なのか悪い奴なのかは判らんが、
計算機における数値表現の方法、それによる誤差や精度保証の仕方。
必要になってきそうな部分を一通りかじってた。
低レベルな部分だとフリップフロップや論理ゲートの仕組みから始まって
一クロックずつ手で書きながら追ってみる、っていうのが面白かった。
その後アセンブラ、C、Javaなんかを順次やっていってたから
http://anond.hatelabo.jp/20070524004238
その後に集積回路の使い方を覚えるんだ。単に電子回路を集めてモジュール化しただけのものだから簡単なはずだ。
そうしたらCPUの作り方がわかってくる。CPUを動かすには機械語が必要だけど、どうして機械語でCPUが動くかがわかるはず。
これを地で行ってるのかもしれないね。
電子回路と集積回路関係が少なかったり(ちょっと触れたりするくらい+選択程度)。
あとはたぶん、CPU→アセンブリはちょっとは知っとけ程度で駆け抜けて、CかJava辺りで実習、そしたらUML等々の(詳細な実装を考えない)設計技法やら分析技法やらに入って、実習して、SEコースまっしぐら。
かなりの独断と偏見が混じってると思うけれど、経験と伝聞の限りではこんな感じだと思う。
この二行の間にはおっそろしいぐらいの溝があるな。慣れてる人だとその溝をすっかり忘れてしまいがちだが、冷静に初心者の姿を想像してみるとよくわかる。
http://anond.hatelabo.jp/20070523230747
C言語やrubyを中途半端に学校で習って、よく判らないまま単位だけとって卒業して、その後でJavaやらHaskellやらを最初だけ齧ってしまって結局全部混ざってしまい消化不良みたいな感じです。
まず電子回路の勉強しようぜ。0Vと5Vで電流が流れるだけだから簡単だ。物理的な裏づけもあってわかりやすい。
その後に集積回路の使い方を覚えるんだ。単に電子回路を集めてモジュール化しただけのものだから簡単なはずだ。
そうしたらCPUの作り方がわかってくる。CPUを動かすには機械語が必要だけど、どうして機械語でCPUが動くかがわかるはず。
プログラミングを始めようとして何度も挫折した。
教えるプロみたいな人に教えてもらっても駄目だったし、尊敬している人に教えてもらったけどやっぱり駄目だった。
才能以前なんだろうな。必死さが足りないって言われた。でも必死になるってどういう事なのか全然判らない。
あと、前教えてもらったことを自宅で復習しても全然出来なかった。
何がわからないのかもわからない。基礎の問題とか出して貰っても判らない。用語や文法みたいなレベルで既に躓くというか。なんというか、「言葉」って何で言葉って言うの?みたいな変な疑問ばかり湧いてきて進まないんだよね。
結局両方とも途中でやめてしまった。
諦めるしかないか。
http://anond.hatelabo.jp/20070523231848
なんかこれみたらとてもじゃないけど無理だと思いました。判らない事だらけで柔軟体操にすら入れないです。諦めます。
http://anond.hatelabo.jp/20070523233713
トラバ直しました。
わからないことは全て「おまじない」だと思って割り切る
どうしてもこれが出来ないんです。文法も、例えば1+1=2という式があったとして、なぜイコールがこの位置なのかとかくだらない事がずっと気になってしまいます。コロンが付いてたりとか括弧がどうだとか。例えばの話ですけれど、C言語やrubyを中途半端に学校で習って、よく判らないまま単位だけとって卒業して、その後でJavaやらHaskellやらを最初だけ齧ってしまって結局全部混ざってしまい消化不良みたいな感じです。
いくつか考えられるな
まず、if で書いた方が可読性が高い、という考え方。まあでも一行で書いてもすぐわかる以上はよっぽどのアホが入るかも知れないプロジェクトで考慮するようなことでしかなくて、まして短文合戦、トリッキー合戦になってるこの話題においてこの理由を持ち出すのは微妙だな。
次に、Java では一行にまとめる慣例があまり無い、と考えているから。確かに Java の場合、簡単な内容であっても C のマクロほど頻繁には一行にまとめないと思う。そもそも C のマクロみたいに関数へのジャンプのコストが無くなるという利点も無いしね。それでも if ぐらいは削ってもいいと思うが。
まあ元のコードが一行にまとまってないからそのままにしただけで、最後に C のマクロなら一行にするような内容だわな、と思って一文書き足して、コードは書き換えずそのまんま投稿、ってのが一番可能性高いとは思うけど。
public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this.last = last; this.fizz = fizz; this.buzz = buzz; } public static void main(String[] args) { new FizzBuzz(1, 100, 3, 5).execute(); } private void execute() { for (int i = start; i <= last; i++) { if(isMultiple(i, fizz)){ System.out.println("Fizz"); } if(isMultiple(i, buzz)){ System.out.println("Buzz"); } if( !isMultiple(i, fizz) && !isMultiple(i, buzz)){ System.out.println(i); } } } private boolean isMultiple(int i, int base) { if(i/base * base == i){ return true; } return false; } }
勝手に修正してみた。
Javaのクラスってコンストラクタとデストラクタって必須じゃなかったっけ?
あ、CならisMultipleは#defineするから一行で済むんだが…。
public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this.last = last; this.fizz = fizz; this.buzz = buzz; } public static void main(String[] args) { new FizzBuzz(1, 100, 3, 5).execute(); } private void execute() { for (int i = 1; i <= last; i++) { System.out.println((i) + (isMultiple(i, fizz) ? "Fizz" : "") + (isMultiple(i, buzz) ? "Buzz" : "")); } } private boolean isMultiple(int i, int base) { for (int j = base; j <= last; j += base) { if (i == j) { return true; } } return false; } }
先月、正式にリリースされたUbuntu Feistyなんですが、これが本当に使いやすい。自分は第一次Linuxブームの頃からずーっとLinuxを使ってきましたが、おそらく現在最高峰のディストリビューションじゃないかと思います。とはいえ、このことは知らない人には伝わらないと思うので、以下、個人的にスゴいと思うところを書き連ねていくことにします。
Ubuntuは、起動が速い・動作が速い・更新が速い、と三拍子揃っている。自動ログインに設定していると、本当にあっという間に立ち上がります。動作速度は、まあWindowsと比べるとまだまだなんですけど、過去に比べてべらぼうに速くなりましたよ。パッケージ管理も速い!一度aptを体験すると、もうyumには戻れません。
いや、OSXと比べるとまだまだなんですけどね。IPA系を入れて、Firefoxを明朝フォントで見ることにしたらびっくりするくらい読みやすい[1]。Windowsの場合、日本語で斜体のページなんてとても読めたものじゃないですからねえ。
みなさん100年のエディタ[2]使ってますか?実は、フリーなGnu EmacsはフリーなGUI環境であるX11上では、TrueTypeフォントの表示が出来ませんでした。WindowsとMac OS X上では余裕で出来るのに。これは最新版の開発ブランチで解決されてますが、まだ正式にはリリースされていません。
ところが、Ubuntuには最新版のバイナリパッケージ[3]があって簡単にインストールすることができます。自分でコンパイルしてもいいですが、パッケージで入れると他のElispパッケージ(Anthy.elとかphysical-line.elとか)が入れやすくていい。最新版なんで不具合が心配ですが、作業してて落ちたことはまだありません。ただし、M+1VM+IPAGフォントを指定すると何故か落ちます。
GNOMEは本当にどんどん便利になってきています。特に個人的に便利だと思うのは、Deskbar Applet[4]とNautilus g-script[5]の二つ。
前者はデスクトップ検索&ランチャ。デフォルトではタスクバーに表示されてないから自分で出す。Alt+F3でなんでも検索できるし、コマンドを打てば実行できる。ウィキペディア検索ができたり何かと便利。
後者はGUIシェルの拡張。Nautilus(Windowsでいうエクスプローラ)上でコンテキストメニューを好きなように設定できる。これがあれば「フォルダ上でマウスを使ってsvn up」なんて動作をあっというまに書けます。こんな風に。
# .gnome2/nautilus-scripts/SVN_Update* cd $NAUTILUS_SCRIPT_CURRENT_URI exec zenity --info --text="`svn up`"
レポジトリを有効にして、gstreamer系をインストールするだけ。Adobe Flashも(32bitCPUなら)Firefoxでyoutubeを見に行って、指示通りにインストールするだけ。いやあ、いい時代になったものですね。
Acrobat Reader, Google Earth, Picasa, Skype, Javaなんかが簡単にインストールできます。いやあ、いい時代になったものですね。個人的にはもっと、Linux上でも商用アプリが増えてもいいと思うけどなあ。
「他人と違う」ってのはそれだけで素晴らしい。違いすぎると苦痛ですけど、今のUbnutuレベルなら、やせ我慢してしのぐことができます。粋ですねえ。ファッションとしてのLinuxというのはいかがでしょうか。
http://www.geekpage.jp/blog/?id=2006/12/13
プログラミング言語ヒエラルキーにおいて、上位が下位に対してどう見下してるのかを書いてみた。詳しくない言語も無理して調べながら書いてある。あと、他言語に理解の無い人みたいで生々しいかと思って、刺激的かつあまり真っ当でない内容ばっかにしてみたよ!((FORTRAN から Java に「GO TO も実装されてないんですか?」とかそういう、馬鹿にすることを目的とした偏狭で的外れな発言ってことだよ!))((ここにある中では、C# に多重継承が無いことを馬鹿にする C++ プログラマーが真っ当でない指摘のわかりやすい例かな))
みんなが普段どういう不当な見下しをしてるかも教えてね!
「C++ の難解な仕様と戦うぐらいなら C で関数ポインタを使ったオブジェクト指向の方がスマートだね」
「STL は糞」
「多重継承したくなったらどうするの?」
「CPAN 見たって C でコア部分を書いてるライブラリばっかじゃん」
「なんでわざわざ use strict なんて書かなきゃいけないの」
「Python って明示的に object を継承した場合としなかった場合で挙動が違うって本当なの?」
「ライブラリ環境が全然整備されてなくて最悪じゃん。C や C++ で書かれたライブラリをラップしてるだけのはずなのに機能が減りまくってるのも多いし」
「簡単な処理をコピペで実装してるだけだね」
「As とか書いてて混乱しない?」
「C# があるのにまだ使ってるんだ」
「冗長でわかりやすいですね(笑)」
「DIVISION の概念って本気で言ってるんですか?」
「記述がわかりづらいね」
「ペンタゴンで使われてるだけじゃん」
「ガベージコレクタが無い……?」(あるらしいです><)
「昔 Apple で使われてただけじゃん」
「Del…phi…?」
「コンパイルも実行も遅いらしいけど何に使うんですか?」
「処理も記述できないのに何言ってるの」
http://anond.hatelabo.jp/20070429155517
えー、IME 任せは微妙だなあ。めんどくさくてもオンオフぐらいしようよ。状況に応じた大文字小文字の選択もしづらい(できない?)し微妙だよ。少なくともそういう入力方法を叩くプログラマーは少なくないと思う。
19世紀はgoto文の時代だと思ってましたよ。
goto文不要論なんてもう何十年も議論され続けてるよ。大体 90年代終盤にはそこそこ普及してた Java は既に goto が実装されてなかったでしょ。今でも実装されないままだし。
それから Amazon.co.jp で「オブジェクト指向」を検索して「出版年月日が新しい順番」にソートして一番ケツに飛ぶと 80年代のオブジェクト指向本なんて山程出てくる。
というかあまりオブジェクト指向のプログラムってみたことないかも。
なんかこのご時世におすすめないかな?
学生さんかなんかかな。もしオブジェクト指向の利点がまだ理解できてないなら、この話の増田ツリーのどっかにあったと思うけど、
ぐらいの経緯を辿ればまあオブジェクト指向の基本は掴めると思う。当然ある程度の大きさのプログラム(あんまり行数で言いたくないけど、せめて 1000行以上)を書かないと、各プロセスの絶望を知ることはできないと思うけど。必要は発明の母。あとは平行して適当に Amazon.co.jp で評価のいい本を読めばいい。
インターフェイスの概念については、一般に知られているものだと C のストリームで理解できると思う。
FILE *fp; fp = fopen("log.txt", "w"); fprintf(fp, "Starting log...\n"); fclose(fp);
これは log.txt ってファイルにログを吐いてるのね。でも fprintf() ってのは次のような使い方もできる。
fprintf(stdout, "Starting log...\n");
stdout ってのは標準出力で、そこに fprintf でデータを渡すと(Windows の場合)コマンドプロンプトに文字列を表示する。ファイルと標準出力は全く違うものだけど、インターフェイスが同じだから全く同じように出力処理を書けてるでしょ。これを発展させれば、
FILE *stream; if (log_kind == LOG_FILE) { stream == fopen("log.txt", "w"); } else if (log_kind == LOG_STDOUT) { stream == stdout; } fprintf(stream, "Starting log...\n"); /* この時点で stream の種類を知る必要が無い! */ if (log_kind == LOG_FILE) { fclose(stream); }
と書くことができる。年賀状と大学受験合格通知は違うものだけど、初期化(書き方)が違うだけでインターフェイス(ポストに投函)は同じ、みたいな。それよりよく考えたら C を知ってるとは限らんよな。めんどくさくなってきた。あとはしりません。
1年くらい前にKENTWEBでCGIを覚えた私はどれくらい時代にとり残されているんだろう。
でも、Java、JavaScript、VBScriptでならオブジェクト指向で書けるぞ。www
お二人さん、そのほか、参加してみようかと思っている方へ。
金曜日の夜か、土曜日の夜を考えています。夜9:00とか10:00くらいから、かな? アドレスはまたそのころ貼りに来ます。タカミン絵チャットなので、やったことのない人(つか、自分もあんまりやらない><)は予習しましょう! 自分はJavaをインストールしてなくて強制終了くらいましたぜ・・・。
タカミンお絵かきチャット http://www.takamin.com/index.html
チャットチェッカー http://www.takamin.com/oekakichat/check/index.html
使い方 http://www.takamin.com/oekakichat/manual32128/index.html
今日はなんかコードを書く気になれんので、開発環境でも整えよう。
自分の物理的な開発環境は、会社PCと自宅PC(デスクトップ)、自宅PC2(ノート)。
会社PCと自宅PCデスクトップはWindowsで自宅PC2(ノート)はUbuntu Linuxみたいな構成になっている。
基本的には、PHPのコードしかいまんとこ書いてないんだけど、まあいろいろ他のコードも書いたり。
いややっぱりPHPしか書いてないか。現在の構成は以下のようなかんじ。
会社開発環境:Eclipse + Aptana + PHPEclipse ほんで日本語入力がskk。あとは特になしデフォ。
自宅(デスクトップ)開発環境:萌ディタ + FFFTP。あんまこっちじゃ開発してない。
自宅(ノート)開発環境:gedit(なんか標準でついてるやつ)。これで書いて、ごにょごにょみたいな。(Apacheいれて)。こっちメイン。
ほんで、これを統括するリポジトリ、BTS。会社のリポジトリは、SourceSafeとSubversionがある。Subversionに移行中。
BTSはMantisとかいうのだったはず。導入したばっか。あと個人用にもSvnリポジトリがある。趣味の開発とかはこっちへ。
なんというか正直複雑するというか、結構面倒なんでいろいろ統一しようと思う。
まず自宅はノート遅すぎなので(このご時世にX20はねーわ)、デスクトップだけにしてノートはお蔵入り方向で。さようなら。
会社の開発環境もちょい変えよう。なんかEclipseはだめだ。僕みたいな初心者プログラマには便利すぎ。
なんかどんなコードを書いても動いてしまいそうな気がする。よくない(自分がだけど--)。
基本構成は、http://www.itmedia.co.jp/enterprise/articles/0703/07/news017.htmlを参考に。
会社と自宅のデスクトップにcoLinuxを入れて、上記3種の神器を入れる(ミーハーでごめん)。
次に全PCのIMEをSKKに。いい加減統一しないと指が変なかんじになってきている。
これでコードを書いたり、文書を書いたりできるようになった。次に開発動作環境。
Apacheとphpとrubyとgccとg++とnasmとjavaとhaskellとperlぶっこんどこう。jsはFirefoxで動くからすばらしいね。
次は、subversionとmakeとqemuいれとく。
社内環境はどうにも変えようもないけれど、BTSとかSVNに変更が発生したらIRCでメッセージ流すのはいいと思った。
http://www.itmedia.co.jp/bizid/articles/0703/01/news113.html
はやめにPG終わらせてやってみよう。
まあこんなかんじかなあ。だらだらと書いてしまった。まあよさげ。ちなみにこれ以外のごにょごにょは
デジタルホン時代は「トランシーバ」とか言われたけど、あれはあれでよかったんだ。
あれはきっかけだったんだ。
確かに・・
J-PHONE時代が全盛期だったような気がする。
SkyWebをすぐに導入し(パケット通信じゃなくて回線交換方式だったけど)、写メールを開発、SH03もすごかったし、SH04のカメラは30万画素、それでも出た当初はすごかった。画期的だった。ロングメールで3000文字(全角)送信できるって便利だったよ。
SH51のSDカードにMP3をSD-JUKEBOXを使って入れて、携帯プレーヤーとして使うなんて考えもよらなかった。
PE-02やDNシリーズ、KENWOODなんかも画期的な機種ばかりだったな、考えてみれば時代が早かったのかも知れない。
Webページ言語はMML(今はメインはXHTMLになってしまったが)で小さな携帯電話でも少量のデータでページが表示できる言語を採用してたし、Javaアプリの登場も早かったような気がする。
藤原紀香をCMタレントに起用、今でのタランティーノや南野陽子じゃなく新しい感じがした。
(フェイ・ウォンは失敗したけどね)
ああ、サーバは弱かったね。というか、爆発的にユーザが増加したからついていけなかったんだな。あの頃は。
特に夜間輻輳が激しくメールは送れない、通話はできない。基地局レベルで交換機がダウンしまくってたよ、毎日障害速報が出てたような気がする。
はてブの改善策を考えたいのだが、一人で考える事には限界がある
なので、ここに自分のアイディアを記すので、意見がある方は肯定、否定どちらでも構わないので、はてブカイゼンのタグを付けてエントリーを書いて頂きたい
当方Perl,PHP,Javaは扱えるので、アイディアが出来上がったら実装までこなす事も出来る
なので取りあえずこんなもん作って的な意見でも構わない
では本題に移る
そう考える理由は、はてブを現在のフローから将来のストックを構築するツールとして見ているからである
言い換えれば自分が面白いと感じたエントリーをブックマークしているユーザーを知ることで、将来に渡って情報のフローを掌握し、最終的にフローをストックに変えることが可能になるという訳である
この意味で現在のはてブは片手落ちである上にその片手も貧弱であると言える
自分が必要だと感じている機能は二つ
単にフローを積み重ねてもストックにはならない
フローとストックを分けるのは、それを自分なりに解釈し、アウトプットを出したか否かである
アウトプット部分ははてダに任せるにしても、特定のタグを自動で取り込んで、はてダでエントリーを書きやすい形にし(URLとタイトルを自動リンクする書式に書き換える)、一覧出来て、全文検索が行える仕組み機能を追加したい
現状存在するGreasemonkeyスクリプトでは、表示された1ページ内での人気エントリーを表示しているに過ぎず、日付別の人気エントリーをチェックすることが出来ない
これを改善する為に、日付別にお気に入り、もしくは指定したユーザーの特定タグを収集しカスタマイズされた人気エントリーを提供する機能の実装を行いたい
以上の二点が私の考えであり、提案である
話題の流れが自動的に視覚化されれば、みんなが幸せになれると思うよ。
掲示板やブログ間の言及合戦でもそうかもしれないが、増田でも普段から増田に常駐している人と、最近利用を始めたばかりの人との間に増田に対する理解に差があるね。
「匿名ダイアリーとやらに書いてみる」とか「増田って何?」みたいな短いポストを平然とできる人はニューカマーと考えていいだろう。増田に常駐している人々にすれば、「何をいまさらそんなことを書いているのか」と思うかもしれないが、増田ワールドになんの予備知識もなく入ってきたニンゲンにとって、増田内の作法やホットな話題をすばやく把握することは難しい。
増田でやりとりされているホットな話題やその中から形成されてきた暗黙の了解はニューカマーには見えにくいし、過去をさかのぼって学習することが難しい(というかめんどくさい)。なぜなら、
では、どうすればニューカマーにも優しい増田になれるのか?
技術的な方法としては、記事同士のつながりを明示化する機能をつければよい。はてなのおとなりMAPの記事単位版をつくればよい(おとなりMAPってもうなくなった?JAVAアプレットでうねうね表示されるやつ)。記事にMAPボタンがついていて、それを押すとその記事がリンクしていたり、リンクされている記事のつながりが芋づる式に図式化される。わんぱーく先生、よろしくお願いいたします!
増田民のボランティア精神に頼る方法としては、[まとめ]とか[前回までのあらすじ]とか[保護者のみなさまへ]みたいなタグをタイトルに付けて、任意の議論のまとめ記事を作ればいんじゃね?