2ch勢いランキング 全部 1- 最新50

【node.js】サーバサイドjavascript 5【Nashorn】


[] 2018/02/13(火) 22:21:33.91:moEhrPrC
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
ttp://jump.5ch.net/?http://nodejs.org/
ayo.js - node.js 互換で Rod の影響からの脱却を目指す処理系
ttp://jump.5ch.net/?https://github.com/ayojs/ayo
Nashorn - Java8 からRhinoに代わって同梱されているJavaScriptエンジン
ttp://jump.5ch.net/?http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-JA17-Nashorn.pdf

ayo.js の経緯
ttp://jump.5ch.net/?https://web.archive.org/web/20170821212745/https://github.com/nodejs/TSC/issues/310
javascriptはrubyと比較してもかなり速い
ttp://jump.5ch.net/?http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
基礎から学ぶNode.js
ttp://jump.5ch.net/?http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
ttp://jump.5ch.net/?http://gihyo.jp/dev/serial/01/realtimeweb/0002

前スレ
【node.js】サーバサイドjavascript 4【io.js】
ttp://mevius.5ch.net/test/read.cgi/tech/1460359714/
【node.js】サーバサイドjavascript 3【io.js】
ttp://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
ttp://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
ttp://toro.2ch.net/test/read.cgi/tech/1310087535/
[sage] 2021/12/26(日) 08:00:15.12:iIGCgNg3
Promise, async/await で無駄なのは、デタラメ解説の数々、ほぼ全滅だろ、酷い惨状だねー。
[sage] 2021/12/26(日) 09:04:50.48:S+a9i6vw
それを言ったらWeb系言語は全部デタラメ解説で駄目だろ
初心者が情報公開の練習として解説を書くからそうなる
[sage] 2021/12/26(日) 10:12:00.53:6ScHvZpk
それはしゃーない、正確さにこだわりすぎて萎縮する方がデメリットが大きい
読む方が気を付けて取捨選択するしかない
[sage] 2021/12/26(日) 10:19:35.71:jog3O69G
c++とかjavaとか含めて進化してる技術の古い解説はことごとくゴミ化してるし一緒だわな
[sage] 2021/12/26(日) 11:04:07.34:4h95DB/2
classは非推奨にして欲しい。
中途半端で使いにくい。
[sage] 2021/12/26(日) 13:04:22.56:PmcDL+gd

どういう所?
[sage] 2021/12/26(日) 13:40:10.35:S+a9i6vw

同意だが、C#はかなりマシ
一般的に上級者は初心者向けの説明なんて書きたくないものだが、
プログラミング自体について語りたい連中も多少はおり、そいつらを上手く取り込んでる
[sage] 2021/12/26(日) 17:59:34.28:4h95DB/2

上っ面だけのクラスベース。
内容はプロトタイプのまま。
[sage] 2021/12/26(日) 18:08:44.18:PnBrsUGe
上っ面といってもそこで整合とれていて内部の問題が表に現れないなら別に問題ないと思うが。
まぁ、中途半端というなら何かそういう部分が見えているということなんだろうが。
[sage] 2021/12/26(日) 18:30:25.89:oeLmweY9
定期的に呟いてる人だから気にせんでいいよ
[sage] 2021/12/26(日) 18:50:24.76:PmcDL+gd

オブジェクト指向的センスが無いと言う事だね

今の時代、両方出来ないとプロだと厳しいと思うがね
[sage] 2021/12/26(日) 18:55:49.66:S+a9i6vw
プロトタイプの方が表現出来る空間が広くて、実際にただの糖衣構文でクラスを実装出来てるだけだろ
クラスで閉じて使ってる限りプロトタイプの側面は見えないはずだが

混ぜて使うのってありだっけ?(class宣言した物にgetPrototypeOfとか)
class構文の時にどうプロトタイプが配置されるか仕様で確定してないと駄目だと思うが、これってしてるのか?
[sage] 2021/12/26(日) 19:35:46.48:kUhTwtcg
GoやRustなんかの新しい言語がクラスベースのオブジェクト指向を採用しないご時世
時代遅れとなったC++やJava風のクラス構文を導入する必要はなかったわな
TC39的にはES4で入れ損なったから悲願だったんだろうけど
[sage] 2021/12/26(日) 20:25:20.58:M+F+5/6j
プロトタイプベースのオブジェクト指向ってIDEや静的型付けと相性悪いのでは
[sage] 2021/12/26(日) 20:48:01.50:S+a9i6vw

仮にそうだとしても、IDEの都合を優先してプログラミング言語を簡素化するのは完全に本末転倒だろ
初心者専用のオモチャが欲しければScratchで満足しとけ
[sage] 2021/12/26(日) 20:54:53.04:M+F+5/6j

既存との互換を保ったまま機能追加されてるわけだから言語自体は簡素化されたのてはなく複雑化されたのでは
それはさておき従来の機能が使えなくなるわけでもなく何が不満なのかわからない
[sage] 2021/12/26(日) 21:02:39.16:4h95DB/2

してない。
だから細かい設定が解りづらい。
[sage] 2021/12/26(日) 21:18:20.64:S+a9i6vw

糖衣構文を導入した分言語は複雑化してるし、IDEも余計に対応する必要がある。
IDEを優先するなら何もしないのが最善。
(もちろん仕様を削れるのが最善だが、JSの場合はこれはかなり無理なので)


仕様で確定してないのなら、混ぜて使う事は禁止だし、
クラスで閉じて使う分にはプロトタイプベースは見えないから問題ないだろ。
何を問題視してる?
[sage] 2021/12/26(日) 21:26:19.15:PIvfFszt

ECMAScriptの仕様書も読んだことない低脳が堂々と嘘を書くなよ
ES2020の14.6.12
[sage] 2021/12/26(日) 21:33:51.63:PIvfFszt

自己レス「ES2020の14.6.13」の書き間違い
[sage] 2021/12/26(日) 22:43:28.35:M+F+5/6j

そもそもプロトタイプベースの方が静的解析難しいからちゃんと補完できるIDE作るの難しいと思うよ
例えばプロトタイプベースでtypescript作れるかというと結局クラス宣言的な物を導入せざるを得ないと思う
構文解析なんかは大して難しい話ではない
[sage] 2021/12/26(日) 22:59:58.91:vgGpFQt6
実際にTypeScriptはinterface導入してるし何も問題ないだろ
[sage] 2021/12/26(日) 23:27:54.98:S+a9i6vw

最終的に何が言いたいのかさっぱり分からんが、既に言ったとおり、
IDEの都合でプログラミング言語の仕様を決めるものではない。それは逆だ。

プロトタイプベースではIDEを構成出来ないからクラスベースを導入した、と考えてるのなら、上記の通り。
IDEの為にプロトタイプベースを廃止してクラスベースに一本化すべき、でも上記の通りだし、JSでは無理。
IDEの為にクラス構文なんてそもそも導入すべきではなかった、と考えてるのなら、それもありだし個人的には賛成だが、
一般論としては現在の、メジャー言語でほぼクラス導入済みの状況で、JSだけ不採用も、メジャー言語としては難しい。
GoやRustは今も今後ともマイナー言語でしかないし、勝手にやってろでしかない。

静的解析自体はクラスの方が簡単だろうけど、だからどうしたでしかない。
実行エンジンはあるのだから、実装難易度の上限は実行エンジンを実装する程度でしかなく、出来る範囲だ。
最悪、実行エンジンをそのままコールして結果を得る事も出来る。Flycheckとかそういう構造のように見えるけど。

ちなみにTSが型を導入したのも、IDEを作るためではなく、
プログラマが型を明示的に示す事によって、間抜けなエラーを静的に検出するためだぞ。
そこにIDEが勝手に乗っかっただけであって、IDEが無くとも型の導入自体は意味も効果もある。
型無し言語出身者は型をIDEでの補完をするための物だと勘違いしてるが、そうじゃない。
[sage] 2021/12/27(月) 00:11:53.01:Btn3kp2t

言いたかったこととしてはプロトタイプベースがクラスベースの機能包含しているとしても
静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ

実行エンジンを実装してもあらゆるパスが評価できるわけでないので宣言的記法の方に軍配が上がると思うが
実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?

flycheckってemacsのパッケージのことだと思うけどあれも静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?

IDEのためだけではないというのはその通りで、途中から略して書いてしまっているが ではIDEや静的解析といっている
[sage] 2021/12/27(月) 05:27:18.08:5b2Vj92V

> 静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ
IDEの「実装」をプログラミング言語の「仕様」比較(スーパーセットかどうか)に含めるのがおかしい。

それは「○○は△△のスーパーセットではない。なぜなら『僕が』それを『実装』出来ないから」と言ってるのと同じだろ。
IDEは開発をサポートする道具であり、サポート対象はプログラミング言語だ。
よって、仕様上どんなに構文解釈が難しかろうが、必要ならやるしかないし、それだけだよ。
上下関係で言えばプログラミング言語の『仕様』が完全に上であって、
IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。

> 静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?
俺が使ったのはGoだけど、見た目は実際にコンパイルを走らせてそれをアノテートしてただけ。
でも確かにこれが一番生産性が高いんだよ。

当たり前だが、コンパイラはエラー時には何行目の何文字目でこけた、という情報を持ってる。
だから静的解析が目的ではなく、ソースコード作成時にエラーを表示する事が目的なら、これでいいんだよ。
最大のメリットは構文解釈を自前で実装する必要がない事。
構文解釈機の再開発をやめ、本体コンパイラのエラー情報をより詳細に出す事にリソースを突っ込み、
IDE側はその詳しいエラー情報を解釈してアノテートするだけに徹する。
これで言語側の仕様変更に自動的に追従するようになる。
IDEの数だけ構文解釈機を再開発するのは手段が目的化してる。

> 実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?
Flycheckは外部から呼んでるだけ。でもそれでコンパイラが吐くエラー(=静的エラー)は全て検出出来る。
しかも自前の実装もなしだから、最も生産性が高い。

自前の構文解釈機でコンパイラ/ビルドシステム以上のエラーを検出する気なら、
それはIDEではなくリンターと呼ぶべきだが、
それが出来るのなら、コンパイラ/ビルドシステムにそのリンターを内包して、
IDEはそのエラーを表示する事に徹するのが最も生産性が高い。
IDEで構文解釈するのではなく、エラーを出来るだけ早い段階で検出して修正するのが目的だから。
[sage] 2021/12/27(月) 08:32:17.24:Btn3kp2t

> IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。
なぜそうあるべきなのですか?
近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが

また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?

なぜか構文解析の話になっていますが意図してたのはintellisenseのような意味解析が必要な機能です
プロトタイプベースの記法では解析のためにコードの実行パスを追いかけプロトタイプの設定箇所を検出しなければならないのに対して
宣言的記法であればスコープ内のクラス宣言を見ればだいたい事足りるので実装難易度は大幅に異なるかと
[] 2021/12/27(月) 09:13:46.85:mFj7RPUl
今時プロトタイプベースがぁ、って言ってるのが時代遅れじゃねーの。
クラスベースじゃないからってRustやGoを出してるがそれらはプロトタイプベースですらないわけで。
[sage] 2021/12/27(月) 09:41:04.48:VqPkBZyA

はクラスベースを時代遅れと書いたんだが
ぶっちゃけオブジェクト指向が過去のものになってきてるのみんな分かってるだろ
[sage] 2021/12/27(月) 10:22:30.58:5b2Vj92V

> 近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが
「多い」というのならまず具体的に名前を複数挙げてみろ。
出来なければそれは君の妄想だね。

> また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?
違うぞ。それは今の話に関係ない。(どっちでもいい)

> 意図してたのはintellisenseのような意味解析が必要な機能です
だから何?これも君の考えが間違ってる。
flycheckのやり方でも原理的にインテリセンスは出来るんだよ。
インテリセンスで出なかったキーワードだとコンパイルエラーになるのなら、
仮にコンパイラが無限に速ければ、ソース内の全キーワードで試せば、コンパイルが通るキーワードのリストは得られる。
実際こんな事をしてる物はないと思うが、構文解釈で100%絞る必要なんて無くて、
候補が数個程度なら全部試してエラーが出なかった物を出す程度でも十分実用的なんだよ。
今時emacsでもインテリセンスするようだから、そんなにIDEが気になるのなら、彼等のアプローチを確認してみるといいよ。
全言語向けに自前でやってる事なんてないと思うよ。

プロトタイプを自分で追うのが技術的に無理なら、evalさせてgetPrototypeOfやinstanceofを使って追えばいいだけ。
自前の構文解釈器でソースからデータツリー構築をする気だからおかしくなる。
それはevalすれば実行エンジン内に構築されるものでしかないのだから、完全に再開発だろ。
eval出来る環境があり、それが一番近道なら、やればいいだけ。

君は多分「生産性」を勘違いしてる。
むしろ再開発しすぎてるし。


現状どうなってるのか知らないのだけど、メジャーなIDE、
例えばVSCodeとかだとクラスベースならインテリセンス出来るが、プロトタイプベースだと無理とかなのか?
誰か使ってたら教えてくれ。
[sage] 2021/12/27(月) 10:51:32.02:gEDfakwV
ラクラスベース
○クラス構文

クラス構文で書いてもプロトタイプベースなのは変わらん
[] 2021/12/27(月) 11:21:14.15:mFj7RPUl

確かにクラスベースがってよりオブジェクト指向が時代遅れって感じだね。
JS自体は関数プログラミングもいける。
[sage] 2021/12/27(月) 11:22:05.04:lxgQYw9b
言語仕様も分かってないIDEも使ってない部外者の素人同士が長文レスバって地獄だな
[sage] 2021/12/27(月) 11:54:45.10:Btn3kp2t

> 「多い」というのならまず具体的に名前を複数挙げてみろ。
例えばgolangやrustはコアチームがツール開発に積極的ですね
ツールのチームがコア言語に対してフィードバックしていたりする

> eval出来る環境があり、それが一番近道なら、やればいいだけ。
"構文解釈機" という言葉を使っているから静的解析を意図してるのかと思ったけど動的解析も含んで言っていたのね
それで実用に耐えうる速度と精度が実現できるならそういうアプローチもありかもね

それから別にIDEが自前で静的解析器を開発すべきなんて主張はしてないから藁人形論法はやめてくれ



オブジェクト指向というか継承が忌避されてる気はする
[sage] 2021/12/27(月) 12:21:31.31:VwNgBMvN
オブジェクト指向ならではの筆頭が継承だから継承が忌避されてる=オブジェクト指向が忌避されてるってことよ
OOPLが提供していた継承以外の特性の多く(カプセル化など)は抽象データ型から来ていてそれは時代遅れになってないし忌避されてもいない
[sage] 2021/12/27(月) 13:11:44.45:+2NyFcdP
クラスの定義だけど、
classとfunctionを混在した書き方でも問題ないの?
[sage] 2021/12/27(月) 13:40:18.86:Uq9DqbRx

混在した書き方っての次第だが

class A {}
A.prototype.x = () => {}
a = new A()
a.x()

こんなのは当たり前に動くぞ
つかまずは自分で試せよw
JSなんかブラウザあれば動かせるんだからさー
[sage] 2021/12/27(月) 15:00:45.57:5b2Vj92V

> 例えばgolangやrustはコアチームがツール開発に積極的ですね
それで、それらの言語のどの仕様がIDEの都合で採用されたものなの?

> 藁人形論法はやめてくれ
なら最初から分かるように主張しろ。
何が言いたいか分からないからエスパーして複数挙げてみただけ。
馬鹿は無視してきっちり自分の意見を書ききれ。
3行しか読めない馬鹿はプログラミングなんてどうやっても出来ない。
MDNその他のリファレンス見りゃ分かるが、そんな世界じゃない。
5ch程度の文にすら手こずるようではどだい無理だよ。

解釈が動的か静的かは意味無い。
出来るだけ早い段階でエラーを検出して修正したいだけであって、それが出来れば何だっていいんだよ。
その手段の一つが静的解析でソース作成時にエラーを表示する事であって。
でも、エラー表示だけなら、コンパイラやevalにぶち込めば出来るし、それをやってるっぽいのがflycheck。

構文解釈器を自前で作るとしても、クラス構文でもプロトタイプ構文でも、大して難易度は変わらない気もするが。
実際に問題になるのは、構文解釈そのもの、具体的にはJS的な様々な書き方でも問題なく動くパーサの構成だろ。
構文解釈後の親class/プロトタイプ追跡なんて辿ればいいだけだからアホでも出来る。
それで今時のIDEで実際どうなのか聞いたんだよ。
もしプロトタイプ構文ではインテリセンスが動かないのなら、何か理由はあるのだろうけど。


継承が忌避されてるのは、JAVAでは関数ポインタが使えず、同様の事をするためには継承をこねくり回すしかなくて、
それの残骸がデザインパターンなのだが、
結果、継承すべきでない局面での継承で酷い事になってるからだよ。
でも、継承すべき場所では継承した方がよくて、全部捨ててるGoはいちいち全部書かないといけないのが糞。
あれは1周目はまだしも、2周目以降でそのコピペされたソースにメンテコストがかかるから、先すぼみになると予想してる。
Rustはやってないから知らん。
[sage] 2021/12/27(月) 15:36:34.22:KDGmbGA4
何言ってるか分からない相手にエスパーして反論って藁人形そのもので完全に異常者
[sage] 2021/12/27(月) 15:55:56.69:h2/Ma5NI
いい加減スレチだから他所でやってもらえんかね
このスレ伸ばすにしてもnodeにScheduling APIが入ったとか普通にネタあるだろ
[sage] 2021/12/27(月) 16:04:01.18:XkNPDe9x
最近アツいサーバサイドJSはnodeよりもdenoよりもCloudflare Workers
[sage] 2021/12/27(月) 16:21:39.89:U0LFk7o9
denoって全然使われてないの?
[sage] 2021/12/27(月) 16:28:54.26:XkNPDe9x
denoは苦戦してるみたいだねー
それでexpressなどnode用のライブラリが動くように互換性を高める方針になった
でもそれならnode使い続ければいいやってなりそう
[] 2022/01/05(水) 00:01:04.66:XksPZRYQ
puppeteerを使って投票サイトの投票を自動化したいのだけど、
実行してもエラーを起こさず無反応なんだよね

Headless Recorerを使ってるからHTML部分の間違いはないと思うのだけど、
UserAgent以外で何か対策ないっすかね
[sage] 2022/01/05(水) 00:22:23.97:n516+jFB
いくらでも試すことはあるけど悪事の片棒を担ぎそうで怖いな
一般論として言えるのはpuppeteerでも普通にWebページのコンテキストからDOM APIを叩ける
[] 2022/01/05(水) 00:33:19.61:XksPZRYQ
んじゃ、逆にWEBサイトを作る側はどんな対策をしているのでしょうか?
[sage] 2022/01/05(水) 10:54:49.76:4mwV9n2W
reCAPTCHA使ってんじゃない?
[] 2022/01/05(水) 15:02:25.17:XksPZRYQ

使ってるところは諦めてるんだけど、使ってないところはどうやってるのかな~と思って
UserAgentをガラケーにしてみたり、プレステにしても無反応なんだよね
[sage] 2022/01/05(水) 15:47:16.38:w42D9Ab/
手動で操作した時のリクエストヘッダーの中身を解析して
間違いなく妥当なリクエストが投げられてるのが大前提

あとは“how to detect headless browser”でググるといいよ
[sage] 2022/01/06(木) 22:16:32.70:vwKSLmqQ
npmがぶっ壊れたらどうすればいいですかapt でuninstall installしても治りません
[sage] 2022/01/10(月) 00:21:58.20:MINWORCd
スレ立てるまでもない質問はここで 158匹目
ttps://mevius.5ch.net/test/read.cgi/tech/1635193843/538

ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた

基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理

Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている

これほど、良い教科書が揃っているフレームワークはない!

Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw

日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング 全部 1- 最新50 プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したキャッシュです。元のページはこちら。削除についてはこちら