パスワードを忘れた? アカウント作成
7583655 story
GNOME

GNOMEでもJavaScriptによるアプリケーション開発を推奨? 88

ストーリー by hylom
選択肢の1つとしては悪くないが 部門より
あるAnonymous Coward 曰く、

InfoQの「JavaScriptがGNOMEの第一言語になる」という記事によると、Developer Experience Hackfestで、GNOMEのデスクトップアプリの開発にはJavaScriptが推奨されるとの発表があったそうだ。当然のごとくこの発表は物議を醸している。

HTMLのJavaScriptではJavaScript以外の要素……例えばCSS、HTMLタグ、Canvasなどで高機能なUIを作ることができる。そういったものが無いとC++もJavaScriptも大差ないと思うが、そういった高度なUIライブラリは用意されるのだろうか?

UIコンポーネントをJavaScriptから操作できるようになる、というのは当然可能になるのだろうが、このように宣言されるのはほかの言語の利用者によってはあまり気分のよいものではなさそうだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • JavaScript は、C++ や Python などと並んで GTK+/GNOME の公式 Binding の一つ [gtk.org]になっています。(リストにあるうち足跡マークがついているものが公式 Binding)

    私は GTK+ で JavaScript を使った事はありませんが、Hello World チュートリアル [gnome.org]を少し読んでみた限りでは簡単に作れそうな雰囲気です。

    ただ Python や Ruby などにあるような便利機能が無いので、それらと比べると JavaScript で書くのはちょっと面倒というか冗長かなぁ・・・。という感があります。慣れの問題かもしれませんし、CoffeeScript とか使えば問題ないのかもしれません。

    ちなみに、元記事にもあるように、JavaScript は GNOME Shell を拡張するための言語として採用されていますが(→GnomeShell/Extensions - GNOME Live! [gnome.org])、JavaScript で書かれた GTK+/GNOME のデスクトップアプリケーションというのは見当たりませんでした。

    • 現時点でも,
      - GNOMEのコアである gnome-shell のGUI部分
      - 漢字変換(ibus)のGUI周り
      で,かなり javascript が使用されています.

      興味がある人はソースコードを読んでみて下さい.拡張子が .js のファイルは全てjavascriptです.
      http://git.gnome.org/browse/gnome-shell/tree/js [gnome.org]

      親コメント
    • JavaScriptよりconfigureとかmakeを無くす/簡単にしろよって思った

    • * Gjs, based on Mozilla's Spidermonkey engine
      * Seed, based on WebKit's JavaScriptCore

      いま使えるランタイムがこれってショボすぎないか?

      あともう一つ疑問なのは、というかこっちの方が重要なことだけど、Webアプリ以外でJavaScript使いたいと思う?いや、逆に言い換えよう。JavaScriptでアプリを作るのにHTML5じゃなくてGtk+3なんかわざわざ使いたいと思う?

      • by Anonymous Coward

        WinRTとかUbuntu phoneとかtizenとかqtとかみてgnome/gtkもhtml5とjavascriptを取り入れないと、って流れじゃないかな。
        だからって「推奨」とか言っちゃうのはアレだけど、でもそれがgnomeって気もする。

  • 物議を醸す理由は? (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2013年02月22日 8時50分 (#2330417)

    物議を醸す理由がわからない。
    プログラマでない人にも分かるように説明して欲しい。

    • まったく物議をかもしませんね。
      S式からjavascriptに変換すればいいのさ〜

      #どうせ言語なんて木構造が機械語にどう変わるかの規約程度の違いしか無い

      --
      新人。プログラマレベルをポケモンで言うと、コラッタぐらい
      親コメント
    • by Anonymous Coward

      例えば今までその企業ではいくつかの言語のうちフランス語が主要言語だったのが今度からドイツ語になるようなもの
      宗教に例えてもいい
      とは言えGNOMEくらいならCなんかよりもスクリプト言語の方がずっとあってるのは確か

      • by Anonymous Coward on 2013年02月22日 10時49分 (#2330512)

        本質的にJavaScriptが欠陥言語だということ。
        優れた言語を目指して失敗した言語なので優れた部分はあるが失敗によるダメージが大きい。
        JavaScriptで良いコードを書く人なら当然知っている常識。

        オライリーからもJavaScript: The Good Partsという人気本が出ているくらいで、この本のタイトルには
        「悪い部分は多数あるのは認めるが良い所だけを使おう」という意味が込められている。

        もちろんJavaScriptでもまともな人が作法を守って作る限り普通にプログラミングができるが、他の言語ではあり得ない注意をしなければならない。
        どんな言語でも注意するべき箇所はあるが、JavaScriptの場合はその注意をプログラマーに要請する論理的な根拠が存在しない。

        親コメント
        • by Anonymous Coward

          JavaScript自体は良い言語だと思うけどなぁ。
          Webで使用された場合に、各ブラウザの互換性(DOM)がアレだったのが悪評の理由に感じる。

    • by Anonymous Coward

      GNOMEって元々言語中立の立場をとっていたからじゃね?コア部分をCで書いているのは言語バインディングを作りやすいから。

      • by Anonymous Coward

        gtk系統はコード規約やライブラリ特有の型名がひとつの言語と言っても差し支えない。

        10年前なら、まだ、環境の差を吸収するためにtypedefしまくるのは当たり前のように行われていた。でも、もう要らないでしょ。Cにしたって"標準化"が進んでいるんだから。

    • by Anonymous Coward

      UNIXでは伝統的な暗黙ルールとして開発言語はC言語という考えがあった。
      まぁ日本人は日本語でしょ。ってな感じ。
      そこをJavaScriptでというのは、UNIXにライドオンしたマカーのやりかで、
      つまりマカーによる浸食がついにここまで来たのかという驚きの表れなのさ。

      • by Anonymous Coward

        こういうこと言う人はEmacs好きな"自称"ハッカーだから近づかないのが無難

      • by Anonymous Coward

        そこをJavaScriptでというのは、UNIXにライドオンしたマカーのやりかで、
        つまりマカーによる浸食がついにここまで来たのかという驚きの表れなのさ。

        Mac OSデスクトップアプリの主要開発言語がJavaScriptであったことなど、ただの一度もない。
        どこがマカーのやり方なのか?

    • by Anonymous Coward

      国連が「これからは韓国語を推奨します」と発言した感じ。

      事実上、標準となった(プラットホームを作っている)団体が、
      長年標準で使われてた言語を差し置いて、
      新しく勢いがあるが癖のある新興言語を推奨するって言ったからさあ大変。

  • by Anonymous Coward on 2013年02月22日 10時57分 (#2330522)

    元々GNOMEの公用言語はguileだったわけだが、それはさておき
    GNOME4はMonoベースになるとかほざいて、それを信じたTomboyはわざわざMonoで作ったのに今じゃボロクソ
    ESounDの有用性を説いてaRtsをボロクソ貶してたかと思えば、気がついたらPulseAudio推進
    これからはgstreamer、時代はgstreamerとか散々吹聴してたのにABI変わりまくりで、KDE派も嫌気が刺してPhonon分派
    標準WindowManagerは変わりまくり、API/ABIなんて常時変わりまくり、UIすらも互換性なく変わりまくり
    なのに俺等は悪くねえ、悪いのはカーネル開発者だと責任転嫁
    もうな・・・・・・・・

    こいつらの言うことは話半分以下で聞いとかないと馬鹿を見るのはこっち
    今はJavaScript推奨してても数年後はどうなってるかわかったもんじゃない

    • by Anonymous Coward

      まあ、趣味の領域だから好きにやればいいがな。
      ビジネス的に実害も無いだろうし。

    • それはさておき

      >元々GNOMEの公用言語はguileだったわけだが

      あれは未完成すぎてSchemeインタプリタとしても言語中立のランタイム環境としても不十分だったもんね。

      >ESounDの有用性を説いてaRtsをボロクソ貶してたかと思えば、気がついたらPulseAudio推進

      aRtsの方が後じゃなかったっけ。ABI互換性の問題があったから簡単には捨てられなかったんだと思う。

      >これからはgstreamer、時代はgstreamerとか散々吹聴してたのにABI変わりまくりで、KDE派も嫌気が刺してPhonon分派

      あれはGNOMEプロジェクトの一部ではなく独立したプロジェクト。標準を目指してfreedesktop.orgでホス

  • バグってるからデバッガで追いかけてみたら、maxLengthのスペルミスでmaxlengthだったとか、そんなのが多くていやになるわ。
    世の中動的型の言語のファンが多いけど、こういうアホなミスをするのって俺だけなのか。
    最近はサーバーサイドまでjavascriptを使おうって動きがあるみたいだけど、ほんとうにかんべんしてほしい。

    • > maxLengthのスペルミスでmaxlengthだったとか、そんなのが多くていやになるわ。

      そういうケアレスミスは言語に関係なくあるよ

      親コメント
      • コンパイルエラーになるか、ランタイムエラーになるかの違いは、大きいと思うんだ。
        動的言語の場合、エラーにさえならないことがあって、よりたちが悪い。

        親コメント
        • 動的言語の場合、エラーにさえならないことがあって、よりたちが悪い。

          run-timeよりまえにバリデーションしたいなら、例えばjavascriptだったらjavascript lintにかければよいと思います。eclipseでjavascript lintをつかって事前validationしていた経験があります。
          https://www.google.co.jp/search?q=javascript+lint [google.co.jp]

          compilerやlinkerがエラーを出すのは原則的にはプログラマーのためでなく自分たちの(タスクが完了できない)ためで、その作業自体がないインタプリタ言語では。。。

          # インタプリタ言語の場合、run-timeと対になる意味でのcompile-timeってなんていうんだろ。。。

          親コメント
          • compilerやlinkerがエラーを出すのは原則的にはプログラマーのためでなく自分たちの(タスクが完了できない)ためで、その作業自体がないインタプリタ言語では。。。

            必ずしもそうではないし、インタプリタ言語もいまどきはJITコンパイルですよ。

            これはコンパイルの有無じゃなくて動的かどうかってことです。
            静的なら実行前に、その変数がどのクラスのオブジェクトか決まっていて、呼び出したメソッドがあるかどうかは実行前に決定されてるけれど、動的だとクラスは決まってないし、違うクラスでも実行時にメソッド追加されるかもしれないしで、実行時でないとそのメソッドの呼び出しがエラーかどうかがわからない。
            つまり言語仕様として許されているかどうかです。その意味ではプログラマのためではなくタスクが完了できない(許されない)ためではありますが。
            で、変数宣言とバグの話とかヌルポとかと同じく長所短所があって、lintで言語仕様以上に厳しく見たり怪しいところを探したりするのが有用なのはごもっとも。

            # インタプリタ言語の場合、run-timeと対になる意味でのcompile-timeってなんていうんだろ。。。

            perlはコンパイルフェーズって言ってます。
            pythonは特に名前なさそうですが、コンパイルフェーズ・コンパイルタイムどっちでも意味通るんじゃないかな。

            親コメント
            • by Anonymous Coward

              "コンパイルエラー"に対する発言ということで静的型付けだけで書いてたのでご指摘thxです。
              おっしゃるとおり、動的型付け言語ではrun-timeでしかつかまえられない、逆にrun-timeでしか、しかも動作する条件が揃わないと発見し得ないエラーが存在しますね。。。そういったrun-time errorに関して静的解析ツールもあるにはありますが、あたりまえですが一般的なコンディションしかチェックできませんし、結果的にはUnitTest的な解決法が無難かもです。(UnitTestで条件抽出の網羅性とか頑張る必要は当然あります)

              perlはコンパイルフェーズって言ってます。
              pythonは特に名前なさそうですが、コンパイルフェーズ・コンパイルタイムどっちでも意味通るんじゃないかな。

              コメありがとうございます。やっぱりコンパイルと言うんですね。勉強になります。

              • by Anonymous Coward

                あたりまえですが一般的なコンディションしかチェックできませんし、結果的にはUnitTest的な解決法が無難かもです。(UnitTestで条件抽出の網羅性とか頑張る必要は当然あります)

                で、
                大規模開発だと強制されなければ品質が保てない。過度に動的なのはバグの元、ってのと、
                静的だと柔軟性が損なわれ開発スピードが損なわれる。時代はアジャイル、ってのと
                java vs LLでよくあるパターン

                ま、用途ですよね。
                ちょっとしたアプレットやスキンとかの類ならpythonやjavascriptが合うだろうし、
                大きなアプリならやっぱりC++じゃないかと。現状がそうであるように。

              • >静的だと柔軟性が損なわれ開発スピードが損なわれる。時代はアジャイル、ってのと
                アジャイル開発と動的言語とは関係ないと思うが。
                たぶんアジャイル開発のことをよく分かって無い人の発言と思われ。

                そもそも静的だから開発速度が落ちるかというと、むしろ逆のことの方が多いかな。
                なにしろ動的言語だと、タイプ量は減ってもそれ以上にデバッグに時間がかかるから。
                規模が大きくなればなるほど致命的になる.

                親コメント
        • by Anonymous Coward

          V8はとか一部のJSエンジンは事前JITコンパイルで明らかに使われてない変数とかあった場合はちゃんとエラーを出すことができるよ
          ただブラウザ上では新しいスクリプトが読み込まれたりevalが急に使われる(アドレスバー等で)からOFFになってるだけ

          • by Anonymous Coward

            function f(x) {
             x.maxlength;
            }


            それはxにmaxlengthに存在するか、実行しなくても静的解析で分かるってことですかね。
            せめて未初期化のプロパティや変数を参照したら実行時にでもエラーになるようになればだいぶ楽なんだけど。

            • by Anonymous Coward

              なりますよ。

              Firefoxだと、about:configで"javascript.options.strict"を有効にすれば"エラー"ではなく"警告"がバンバン出ます。もしかしたら"javascript.options.showInConsole"も必要かもしれませんが。

              ちなみに、これを使うと、Gooogle等のサイトはいかに汚いコードを使っているかがよくわかります。そして、それはMozillaの公式サイトですら例外ではありません。こういうみそっかすをきちんと直しておけば、世界中のPCで使用される電力量が減って幸せな社会になると思うんですけどねぇ。

              • by Anonymous Coward

                フリーのサービスを享受しつつ内幕の作りをクソミソに言うような人は、幸せな社会があってもそれを知覚できないでしょう。

              • by Anonymous Coward

                x.mixlength = 0;

                も検知できるならすごいな。

      • by Anonymous Coward

        コンパイル時どころかソースを入力してる最中に教えてくれる言語もありますが。

    • バグってるからデバッガで追いかけてみたら、maxLengthのスペルミスでmaxlengthだったとか、そんなのが多くていやになるわ。

      perlならそんな程度のバグは-wやuse strict;を使っておけばコンパイル時に指摘されますが、rubyやpythonではどうなんですかね。

      親コメント
      • by Anonymous Coward

        PHPにはそういうのありますけど、自分が入るような現場ではまず使われてなくて、一度、自分が作業するときだけでもと思ってこっそり入れてみたら既存のコードから大量に警告がでてまったく使えませんでした。

    • by Anonymous Coward

      型システムが動的なのと定義されてない変数に寛容なのは別な気が

    • by Anonymous Coward

      creat/refererェ・・・

    • by Anonymous Coward

      おれはrust [rust-lang.org]が好きだー

  • by Anonymous Coward on 2013年02月22日 9時06分 (#2330424)

    GNOME 4.0はMonoベースに? [srad.jp]を思い出した

typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...