アカウント名:
パスワード:
Javaもnode.jsも使っていますが,適材適所で双方を使い分けるのが良いと思います
性能に関しては,まともなプログラマがコーディングすればJavaでもnode.jsでもそれなりの性能がでます.細かいところでは,セッションの生成はnode.jsとか,スループットはJavaとか色々ありますが,それらはケースバイケースで,どちらが良いとかは一概に言えません.
開発効率については大規模,特に複数人で開発をするなら Javaそれ以外,特に一人/数日で開発が終わるようなものは node.js が良いと思います
たとえば,Javaだと,Javadocやアノテーションがあり大規模なものを複数人で開発する際はとても効率良いです反面,小規模なものを短期間で作る場合だと,Javaでクラス設計とかアノテーションをいちいちやっても,工数の無駄でしかありません.自己満足で終わるだけです.
今は大規模開発に耐えうるよう静的型付けに対応させたTypeScriptがあるので開発規模による適正の差はさらに縮まりつつあるさらにJavaは関数が第一級関数でないため最近の関数型の潮流に追随できない致命的とも言える欠点があるそれでもJavaは実績と信頼感が大きいので当分需要は減らないだろうが長期的には言語の進化から取り残されシェアを失うだろう
>静的型付けに対応させたTypeScriptがあるのでそういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。
長期サポートする(つもりの)製品には採用しにくい。#長期サポートするつもりだったけど、短期でサービスが打ち切られる方が可能性は高いけどさ(涙)
>長期的には言語の進化から取り残されシェアを失うだろうそういう根拠のない個人的願望を書き連ねるのはいかがなものか。
> そういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。TSは「ESの先取り」言語なんだが。HaxeやCoffeeScriptやJSXみたいなクソ言語と一緒にされては困るんだよねぇ。
たまにはActionScriptちゃんのことも思い出してあげて下さい
型注釈の構文は多分変わらないだろうけど、TSの型注釈はあくまでコンパイル時にエラーを出すもので、ES7の型注釈はランタイムにエラーを出すものというのが、どうしても差を生む。特にJSは型としてのクラスが存在しないから、プリミティブの判定はまだ容易だとしても、様々オブジェクトの型をどういう風に区別するかは難題。最も現実的に考えると、如何なるオブジェクトもObjectとしてしか型注釈できないようになるだろう。もしくはJSにクラスベースモードを作るSaneScript/SoundScript構想も現時点で有力だが、それはそれでTSとは異なるものになる。
>Javaは関数が第一級関数でないJava8「」
8ではかなり改善されてScalaっぽくなってます、7までに慣れた人は戸惑うかもしれません。
int sum = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .filter(e -> {return e >= 5;}) .reduce(Integer::sum).get();
System.out.println(sum);//45
Java8は各日に次の世代の基準点ですよね。あるJava8前提のフレームワークとか最初に見たときはほんとに動くんかいなと思いました。
今のところ自分の範囲では第一級関数であるかどうかは必須条件では無いのでこれがないと致命的欠陥であるという意見は不思議ではあります。書き方面倒でも今までなんとかなってたじゃんとか関数型言語にすればすべての問題が解決するわけでもないじゃんと思います。ま、ケースバイケースということで。
「関数型の機能を取り入れればすべての問題が解決する」なんて誰も言っていないのに、「関数型の機能を取り入れてもすべての問題が解決するわけじゃない」という人が多いのはなぜなんだろうか。
関数型言語の機能は必須じゃないよ。もちろんなくてもコーディングはできる。オブジェクト指向言語の登場以前、クラスやインターフェイスがなくても何とか開発できていたように。ただオブジェクト指向が登場して、オブジェクト指向はすべての問題を解決するわけじゃないけど、すこし開発が楽になった。関数型の機能が導入されて、関数型はすべての問題を解決するわけじゃないけど、また少し開発が楽になる。それだけの話だ。勝手に銀の弾丸に祀り上げて勝手に失望してはいけない。
他の人も言っているけど、「適材適所」「ケースバイケース」「状況に応じて」はとても聞こえの良い言葉だし、間違ってはない。ただ、それは「高度の柔軟性を維持しつつ臨機応変に [nicovideo.jp]」というのと同じくらい具体性がない。何の指針にもならないし、何も言っていないも同然だ。
「関数型の機能を取り入れればすべての問題が解決する」わけじゃないかもしれませんが「関数が第一級関数でないことは致命的欠陥」らしいですよ。
> 何の指針にもならないし、何も言っていないも同然だ。
だから「開発者のマインドシェアを奪い合うJavaとNode.js」ってのは変な話でJavaとNode.js のどちらが良いかなんて議論しなくていいじゃん,って言ってるんですが…
第一級関数の市場価値は再帰と高階関数を使いこなせる開発者を基準に開発できるかによるでしょうね要するにプログラマの平均水準次第です
しっかし無駄が多いなぁStreamは
実際にはSystem.out.println( IntStream.range(1,11) .filter(e->e>=5) .sum());で終わり。なんでこんな冗長記述にしたのか謎。
なお静的型はES7以降のJavaScriptで対応予定となっているTypeScriptは未来のJavaScriptの先行実装として作られているため仮にMSの開発が終了したとしても支障なく開発を継続できるのも強みである
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
大規模ならJava,それ以外はnode.js (スコア:4, 興味深い)
Javaもnode.jsも使っていますが,適材適所で双方を使い分けるのが良いと思います
性能に関しては,まともなプログラマがコーディングすれば
Javaでもnode.jsでもそれなりの性能がでます.
細かいところでは,セッションの生成はnode.jsとか,スループットはJavaとか色々ありますが,
それらはケースバイケースで,どちらが良いとかは一概に言えません.
開発効率については
大規模,特に複数人で開発をするなら Java
それ以外,特に一人/数日で開発が終わるようなものは node.js が良いと思います
たとえば,Javaだと,Javadocやアノテーションがあり
大規模なものを複数人で開発する際はとても効率良いです
反面,小規模なものを短期間で作る場合だと,
Javaでクラス設計とかアノテーションをいちいちやっても,工数の無駄でしかありません.自己満足で終わるだけです.
Re:大規模ならJava,それ以外はnode.js (スコア:1)
今は大規模開発に耐えうるよう静的型付けに対応させたTypeScriptがあるので開発規模による適正の差はさらに縮まりつつある
さらにJavaは関数が第一級関数でないため最近の関数型の潮流に追随できない致命的とも言える欠点がある
それでもJavaは実績と信頼感が大きいので当分需要は減らないだろうが長期的には言語の進化から取り残されシェアを失うだろう
Re: (スコア:0, 荒らし)
>静的型付けに対応させたTypeScriptがあるので
そういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。
長期サポートする(つもりの)製品には採用しにくい。
#長期サポートするつもりだったけど、短期でサービスが打ち切られる方が可能性は高いけどさ(涙)
>長期的には言語の進化から取り残されシェアを失うだろう
そういう根拠のない個人的願望を書き連ねるのはいかがなものか。
Re: (スコア:0)
> そういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。
TSは「ESの先取り」言語なんだが。
HaxeやCoffeeScriptやJSXみたいなクソ言語と一緒にされては困るんだよねぇ。
Re: (スコア:0)
たまにはActionScriptちゃんのことも思い出してあげて下さい
Re: (スコア:0)
型注釈の構文は多分変わらないだろうけど、TSの型注釈はあくまでコンパイル時にエラーを出すもので、ES7の型注釈はランタイムにエラーを出すものというのが、どうしても差を生む。
特にJSは型としてのクラスが存在しないから、プリミティブの判定はまだ容易だとしても、様々オブジェクトの型をどういう風に区別するかは難題。
最も現実的に考えると、如何なるオブジェクトもObjectとしてしか型注釈できないようになるだろう。
もしくはJSにクラスベースモードを作るSaneScript/SoundScript構想も現時点で有力だが、それはそれでTSとは異なるものになる。
Re: (スコア:0)
>Javaは関数が第一級関数でない
Java8「」
8ではかなり改善されてScalaっぽくなってます、7までに慣れた人は戸惑うかもしれません。
int sum = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.filter(e -> {return e >= 5;})
.reduce(Integer::sum).get();
System.out.println(sum);//45
Re: (スコア:0)
Java8は各日に次の世代の基準点ですよね。
あるJava8前提のフレームワークとか最初に見たときはほんとに動くんかいなと思いました。
今のところ自分の範囲では第一級関数であるかどうかは必須条件では無いのでこれがないと致命的欠陥であるという意見は不思議ではあります。
書き方面倒でも今までなんとかなってたじゃんとか関数型言語にすればすべての問題が解決するわけでもないじゃんと思います。
ま、ケースバイケースということで。
Re:大規模ならJava,それ以外はnode.js (スコア:1)
「関数型の機能を取り入れればすべての問題が解決する」なんて誰も言っていないのに、
「関数型の機能を取り入れてもすべての問題が解決するわけじゃない」という人が多いのはなぜなんだろうか。
関数型言語の機能は必須じゃないよ。もちろんなくてもコーディングはできる。
オブジェクト指向言語の登場以前、クラスやインターフェイスがなくても何とか開発できていたように。
ただオブジェクト指向が登場して、オブジェクト指向はすべての問題を解決するわけじゃないけど、すこし開発が楽になった。
関数型の機能が導入されて、関数型はすべての問題を解決するわけじゃないけど、また少し開発が楽になる。それだけの話だ。
勝手に銀の弾丸に祀り上げて勝手に失望してはいけない。
他の人も言っているけど、「適材適所」「ケースバイケース」「状況に応じて」はとても聞こえの良い言葉だし、間違ってはない。
ただ、それは「高度の柔軟性を維持しつつ臨機応変に [nicovideo.jp]」というのと同じくらい具体性がない。
何の指針にもならないし、何も言っていないも同然だ。
Re: (スコア:0)
「関数型の機能を取り入れればすべての問題が解決する」わけじゃないかもしれませんが「関数が第一級関数でないことは致命的欠陥」らしいですよ。
Re: (スコア:0)
> 何の指針にもならないし、何も言っていないも同然だ。
だから「開発者のマインドシェアを奪い合うJavaとNode.js」ってのは変な話で
JavaとNode.js のどちらが良いかなんて議論しなくていいじゃん,って言ってるんですが…
Re: (スコア:0)
第一級関数の市場価値は再帰と高階関数を使いこなせる開発者を基準に開発できるかによるでしょうね
要するにプログラマの平均水準次第です
Re: (スコア:0)
しっかし無駄が多いなぁStreamは
Re: (スコア:0)
実際には
System.out.println(
IntStream.range(1,11)
.filter(e->e>=5)
.sum());
で終わり。
なんでこんな冗長記述にしたのか謎。
Re: (スコア:0)
なお静的型はES7以降のJavaScriptで対応予定となっている
TypeScriptは未来のJavaScriptの先行実装として作られているため
仮にMSの開発が終了したとしても支障なく開発を継続できるのも強みである