はてなキーワード: javaとは
ねぇXちゃんさぁ。なんでこんな動的なオブジェクトをstaticにしてんの?
これさぁ、そこそこ重いけどさ、セッションごとに生成される一時的なインスタンスで持ってるだけでも十分パフォーマンス的に問題ないよね?
なんでプロセス間でわざわざ共有してんの?
ネットワークリソースつったって利用者はたかだか数百人でしょ?
その中でリソースを同時利用するってゆってもたかだか十数人でしょ?
プロセス内でこのオブジェクトを全共有することでリソースの削減なんてたかが知れてるよね?
それをわざわざプロセス内でこのオブジェクトを全共有ってマジ管理できるの?シンクロナイズドとか書いてっけどさぁ?削減できるリソースの量に比べて超危険すぎねぇ?
コミットログ見たけど、ぜんぜん性能問題とかと関係のない問題の修正だったみたいだけど、なんでこんな危険なコードになったわけ?
Xちゃんさ、そもそもコードが品雑なんだけど、これエンプラJava案件なのよ
なんでCの組み込みコードみたいにif文の鬼ネストとか、引数に空のList渡して破壊的に値を設定するような、読みづらいコード書いてるわけ?
Listくらい普通に返り値で返しなさいよ…
状態管理もif文の鬼ネストやめて専用クラスとかEnum使ってコマンドパターンで対処しなさいよ
もしかして、Xちゃんオブジェクト指向にピンときていないのかな?
俺ちゃんはどっちかってーっとPHPパーなので、ゴリゴリのオブジェクト指向はそりゃ専門じゃないよ
それでもさ、interfaceとか使って、各処理の実装を切り分けるとか、やりようはいくらでもあるじゃん。
あと不要なnullチェックも多すぎです。コンストラクタで初期化が保証されているfinalなフィールド値がnullかどうかなんて確認しないでください
ユーザー入力、DB入力、環境リソースとか、外部の情報起源じゃない変数がnullとか、明らかなバグなんだから暗黙的なぬるぽでクラッシュさせましょう
こんなバグが出荷に乗ることなんてありえません。わざわざ専用のエラー処理で専用の例外飛ばすとか無意味です。
いちいちなんか冗長で複雑なんですよねぇ。
俺ちゃんみたいな若造が、ベテランのXちゃんにこんなこといいたくないけどさ、
Xちゃんのコード。どこか昭和の匂いがするんだよねぇ。悪い意味で。
Javaのfinallyはreturnの直前に実行されない。
ググると Javaのfinallyはreturnの直前に実行され「る」という記事を見かけてしまったので、んなわけ無いだろうって、
直感的には return 文が評価されたあとに実行されるという肌感覚だったが、確証がないので動かしてみた。
try { return sub(); } finally { System.out.println(42); }
もし記事の言うようにreturnの直前にfinallyが実行されるなら、
上記みたいなコードではsubが実行される前に、「42」が表示されるはずだが、subの中身が実行されたあとにfinallyは実行される。
なので、finally は return の直前に実行されるのではなくreturn の右辺が評価され終えた直後に実行されます。
まぁ普通の結果ですね。
俺の古典的な認識ではさ、JavaScriptってHTMLにくっ付いて、Webページの内容を書き換えたりするものだと思ってるんよね。
だからどんなに言語仕様が洗練されて高度なことができるようになっても、最終目標は「Webページの制御」に留まるというか、それを越えられないと考えちゃう。
一方で俺の思ってるプログラミング言語、C系列とかJavaとかは、最終的にexeファイルやそれに類するものを作成するのが目標なわけで。
だから「C#でアプリケーションを作る」っていう文は成り立つと思ってるけど「JavaScriptでアプリケーションを作る」っていう文は変だと俺は捉えてしまっている。
JavaScriptはWebの制御をしているだけで、その場合「HTMLでアプリケーションを作るfeat.JavaScript」みたいな認識が正しいんじゃないかと。
でも俺のこういう認識はおそらく物凄く古臭い考え方だとも感じてしまうんだよね。
なんか、俺の認識のどこが古臭いのか、目を覚まさせてくれるような一言が言える人は、是非ぶつけてほしいな。極力そのまま受け入れようとするつもりだから。
このプログラミング言語はMtGだと多分この色の組み合わせだろう。
みたいなのをまとめたら次のようになった(TIOBEのランキング順トップ50)。
後半は知らない言語もあって怪しいが、おおよそこのようになると思われる。
※改めて見てみると何箇所か違和感があったので最初の版からちょっとだけ修正した。
順位 | プログラミング言語 | 色の組み合わせ | 内訳 |
---|---|---|---|
1 | Java | アブザン | 白黒緑 |
2 | C | ゴルガリ | 黒緑 |
3 | Python | ティムール | 緑青赤 |
4 | C++ | ジャンド | 黒赤緑 |
5 | C# | バント | 緑白青 |
6 | Visual Basic .NET | セレズニア | 緑白 |
7 | JavaScript | ボロス | 赤白 |
8 | PHP | グルール | 赤緑 |
9 | SQL | 無色 | |
10 | Swift | 4C(緑欠色) | 白青黒赤 |
11 | Go | ゴルガリ | 黒緑 |
12 | Assembly language | 黒単 | 黒 |
13 | R | イゼット | 青赤 |
14 | D | グリクシス | 青黒赤 |
15 | Ruby | 赤単 | 赤 |
16 | MATLAB | イゼット | 青赤 |
17 | PL/SQL | 無色 | |
18 | Delphi/Object Pascal | アゾリウス | 白青 |
19 | Perl | ラクドス | 黒赤 |
20 | Objective-C | エスパー | 白青黒 |
21 | SAS | アゾリウス | 白青 |
22 | Visual Basic | 緑単 | 緑 |
23 | Dart | ジェスカイ | 青赤白 |
24 | Scratch | 白単 | 白 |
25 | Scala | 5C | 白青黒赤緑 |
26 | Groovy | ナヤ | 赤緑白 |
27 | Transact-SQL | 無色 | |
28 | F# | アゾリウス | 白青 |
29 | Rust | マルドゥ | 赤白黒 |
30 | COBOL | オルゾフ | 白黒 |
31 | ABAP | アゾリウス | 白青 |
32 | Lisp | シミック | 緑青 |
33 | Kotlin | 4C(緑欠色) | 白青黒赤 |
34 | Logo | 白単 | 白 |
35 | RPG | ディミーア | 青黒 |
36 | Lua | 緑単 | 緑 |
37 | Fortran | スゥルタイ | 黒緑青 |
38 | PowerShell | ジェスカイ | 青赤白 |
39 | Ada | ディミーア | 青黒 |
40 | LabVIEW | ディミーア | 青黒 |
41 | Erlang | 緑単 | 緑 |
42 | Julia | イゼット | 青赤 |
43 | ML | 青単 | 青 |
44 | Scheme | シミック | 緑青 |
45 | Haskell | エスパー | 白青黒 |
46 | TypeScript | ジェスカイ | 青赤白 |
47 | OpenEdge ABL | アゾリウス | 白青 |
48 | LiveCode | アゾリウス | 白青 |
49 | PostScript | 無色 | |
50 | ActionScript | ジェスカイ | 青赤白 |
見返してみるとおおよそ次のルールに従って決めているような気がした。
緑の判定があやふやな気が若干しないでもない…
色 | イメージ |
---|---|
白 | 高レイヤ、初心者向け |
青 | 浮世離れ、ベンダー |
黒 | 低レイヤ、黒魔術 |
赤 | 速い、先進的 |
緑 | 基盤、グルー |
無色 | 道具 |
C言語:
Linuxとかサーバープログラムの内部で使われることが多いけど、
C++:
実行速度が超高速なのと複雑怪奇な構文が特徴だよ!
ゲームプログラミングや動画編集ソフトといった高いパフォーマンスが
求められるシステムで使われるイメージがあるから、最初は近づかなくても良さそうだね!
C#:
Microsoft にズブズブな印象が強いのがちょっと気になっちゃうね!
Java:
Androidアプリとかサーバーアプリ作るのに使えるよ!
最初は近づかないほうが懸命だと思うよ!
Javaの強化版で、Androidアプリとかサーバーアプリ作るのに使うよ!
もしAndroidアプリを作るなら最初にこれを学ぶと良いかも???
iosアプリを作るのに使えるよ!
iosアプリ作ってる時にどうしても触らなきゃいけないときが来るんだよね...。
iosアプリを作るのに使うよ!
もしもiosアプリ作りたいんだったら実質これしか選択肢は無いから覚悟してね?
書きやすい方だから身構えなくても大丈夫だけど、Macが無いと書けないから気をつけて!
PHP:
PHPのお仕事はいっぱいあるからこれが出来ると飯が食えて嬉しいね!
Ruby:
個人的には本当に好きじゃないけど、仕事も人口も多いのが特徴だね!
JavaScript:
環境を整えたり流行を追ったりするのがちょっとだけ面倒くさいけど、
Go:
Googleで開発された言語で、書いてるとドーパミンが出るよ!
僕が大好きな言語なんだけど残念ながら仕事は少ないね、本当に残念だ。
Lua:
ほとんど見かけないのに何故かたまに書かざるを得ない事がある言語だよ!
既存のアプリケーションのプラグインを書く時に強制されたりするかな?
言語自体は単純だから、使う時が来たら覚えるぐらいでいいと思うよ!
Perl:
遥か昔に広く利用されていた言語だよ!
きっと今でもどこかの世界では使われてるんだろうけど、
令和だったら他の言語も学びやすい環境が整ってるから学ばなくて良いかもね!
まつほろひとゆきが作った日本産のコンピューター言語。パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的なWebフレームワークはtDiary
C
デニス立地さんがNTTで開発した言語。マルチクスというOSを作成するために作られた。わざと複雑な言語仕様にすることで自分の役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミのゲーム制作にさえ使えなほどの超高級言語
おまじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様に曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境で動作しないなど)
オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。
主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。
代表作はOpenGL、DirectX、Window10、LibreOffice など
JavaScriptから派生した言語。読み方は(ジャワ。ジャワ島のジャワ。)。もともとはOracleの創始者の博士が趣味で作成して、現在のOracleデータベースの基礎となるテクノロジー。アプレットという実行するための専用プログラムをインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークはコーヒーだと思われがちだが、紅茶(ジャワティー)である。
アンドロイドOSを作成するためにも使われており、アンドロイドのOSカーネルはJavaで制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。
対策するためにはGC戦略を見直してヒープ領域のサイズやメモリに乗せるキャッシュのサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。
このように業務用データベースから携帯電話まで幅広く使われているので、Javaの技術があっても市場価値は殆どないと言われている。(みんな使えて当たり前)
晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーションを作成するために使われている。PはパナソニックのP。を略してPHP
かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバルで評価できたりするなど、洗練されていてとても便利な言語である。
HTMLやメール本文の中にもPHPの処理を書き込むことができる。
この世のすべてのサーバーに実行環境が存在するので、PHPのコードさえあれば、コンパイルも不要でどのような環境でも動作する。
C言語の100倍生産性が高く、Wikipedia、Facebook、Slackなどの超一流のサイトやサービスで大量のアクセスを捌いている。
WardPressと呼ばれるフレームワーク(全世界のWebサイトの3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWebは存在していない。
データベースとも親和性がある、などと言われることもあるが特に根拠はない。
韓国人棋士を倒したAIに特化したプログラム言語。Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在はDartという言語は存在していない。
AIに特化しているというだけあり、低レイヤむけの実行ファイルを作成する必要があるため、コンパイルが必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。
デフォルトでディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。
JavaScript
Javaの元になったプロトタイプベースのオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブにWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。
それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。
並列プログラミングが不可能な作りのため、コールバックを多用して、スパゲッティーコードを量産することができる。
NPMを使う奴らは、JSがブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。
Javaと同じくJavaScriptから派生した言語。Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。
$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。
JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである。
jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である。
JavaやjQueryなどと同じくJavaScriptから派生した言語。Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。
型に特化した言語であり、Microsoft製のVSCodeというIDE環境でしか開発、実行が出来ない。(ただしMacやLinux上でも動作可能)
TypeScriptを動かすにはサーバーにVSCodeもインストールする必要があり、言語やIDEのバージョンアップも多いため、メンテナスンスが困難である。
前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSのメンテナンスもままならない、という理由で最初のバージョンがわずか14日間で作られた言語。