パスワードを忘れた? アカウント作成
11928641 story
プログラミング

注目を集め始めるプログラミング言語「Nim」 60

ストーリー by headless
注目 部門より
本家/.「Nim Programming Language Gaining Traction」より

Nimは最近注目を集め始めている新しい静的型付けプログラミング言語だ。入門用としては「Nimの特別な点は何か」「何がNimを実用的なものにしているか」「どのように導入するか」といった記事を読んでみるといいだろう。言語的にはPythonやPascalの影響を受けた文法を使用しており、優れたパフォーマンスやC言語とのインターフェイス、そして強力なメタプログラミング能力などを提供する。「Unix in Rust」の作者がRustを捨ててNimに移行したほか、アーリーアダプターの企業でも使われ始めている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年02月21日 11時37分 (#2765142)

    ケースバイケースにしても,たいしたものだ…

  • by Anonymous Coward on 2015年02月21日 12時13分 (#2765155)

    こういった新言語は毎年のように出ていますが、皆さんはどれぐらい乗り換えているもんでしょうか?

    自分は一応試しては見るのですが、使いこなせる段階になる前に元の言語に戻ってしまいます
    皆さんが新興言語の中で日常で使っているもの、あるいはきちんと自分のモノにした言語の数はどれぐらいでしょう?

    • Re:習得 (スコア:3, おもしろおかしい)

      by Anonymous Coward on 2015年02月21日 13時30分 (#2765198)

      というか、既にアーリーアダプター(笑)にRustが見放された、という点に笑った。

      親コメント
      • by Anonymous Coward on 2015年02月21日 17時04分 (#2765305)

        Rustは関数型言語のパラダイムで再設計したC++なので、
        C++を理解したプログラマーはRustを使う必要がなく、C++が理解できないプログラマ―にはRustも同様に理解できない。

        親コメント
    • by Anonymous Coward on 2015年02月21日 16時07分 (#2765286)

      よく言われる統計のウソ

      結婚するカップルの5組に一組は離婚する、という話。
      じゃあ、結婚した経験のある5人にひとりは離婚経験者かというと、そんなことはない。
      同じ人がなんども離婚、再婚するから。

      同じ人が何度も新しい言語覚えるだけでしょ。

      親コメント
    • by Anonymous Coward

      私もいつも疑問に思っています。
      みんなそんなにホイホイ次々と言語を覚えて乗り換えられている(覚えることができる)んですかね・・・

      有能な人や、仕事も普段の生活もプログラミングにどっぷり浸かっている人とかの場合、
      乗り換えるというより、自分のスキルセットの中に片っ端から加えていくって感じなんですかね?

      それ以外の人の場合、(能力そこそこ、普段の生活はプログラミングにそんなに浸かっていない人の場合)だと、
      1つの言語(よくて2,3の言語)に噛り付くので精一杯な気もしますが。

      # 気が付いたら、習得する必要のある言語がどんどん増えていて泣きたくなってきている件。
      # C, C++,JAVA, Perl, Ruby, Python, javascript, Bourne Shell, kermit script, Lua, R, assembly, vim script, emacs lisp, C#, VB...
      # 一つの言語さえ覚えれば後はすぐ覚えられるというのはまやかし。

      • by Ryo.F (3896) on 2015年02月21日 14時33分 (#2765240) 日記

        # 気が付いたら、習得する必要のある言語がどんどん増えていて泣きたくなってきている件。
        # C, C++,JAVA, Perl, Ruby, Python, javascript, Bourne Shell, kermit script, Lua, R, assembly, vim script, emacs lisp, C#, VB...
        # 一つの言語さえ覚えれば後はすぐ覚えられるというのはまやかし。

        え! そんだけ習得しといて?

        それとも、習得する必要があるのに習得してない、って話なのかな?
        それにしては、kermit scriptとかvim scriptとかemacs lispとかが謎。

        親コメント
        • by wood377 (46309) on 2015年02月22日 17時43分 (#2765711) 日記

          いや、それだけ、必要だった事が驚き。
          興味あるは色々、あるのだが、縁が無い。
          今までの経験から、仕事とかで、必要になれば、一週間もあれば、何とかなった。
          # ただし、とりあえず使えるレベル。
          # マニュアル無しで、他人のコードと、コンパイラのみで覚えたのもあった。
          興味だけだと、未だに覚えられないものが多数。

          面白そうだけど、使える仕事ください。

          親コメント
        • by Anonymous Coward

          え! そんだけ習得しといて?

          それとも、習得する必要があるのに習得してない、って話なのかな?
          それにしては、kermit scriptとかvim scriptとかemacs lispとかが謎。

          習得する必要があったので習得しようとしたのだけれどもまともに習得しきれていなかった(いない)、ってところですね。

          仕事などで、案件的に使わなければならなくなったので覚えようとしたんですが、
          たいして習得できないうちにその案件が終わってしまい、また次の案件ではまた別の言語を・・・
          という感じのループで今まで来ています。

          # とてもじゃないけどこんな状況で使用経験言語の中に加えたくないです・・・
          # 業務にガッツリC一筋5年! ってのなら加えていいと思うんだけど。

          • by Ryo.F (3896) on 2015年02月22日 22時28分 (#2765866) 日記

            # 業務にガッツリC一筋5年! ってのなら加えていいと思うんだけど。

            会社員だと高々8個しか習得できないですね。

            親コメント
            • by wood377 (46309) on 2015年02月23日 0時11分 (#2765892) 日記

              アセンブラを一つに数えても 8は越えてる気がする。
              まあ、長く Cだったけど、最近は縁が無いか? もっとも昔と今では、
              微妙にルールが異なっているので、別とも言えなくも無いが。
              # K&R と 最近のと、、初期は、全て英小文字だったのが、大文字が混じりだして、
              # 見た目も違って、まるで別言語。

              微妙なコードを別にすれば、どれも何とかなる。
              微妙なコードなんて、そんなにあるわけでも無いし、

              ただ、アセンブラだと、十数行が Cだと、一行なんてのがあるので、効率的には
              色々あるけど。 最近の方がもっと効率良いかも知れないですが、
              一行のコードでも実行モジュールサイズが、大きいので、用途次第。

              親コメント
      • by Anonymous Coward

        「~乗り換えられている(覚えることができる)~」
        趣味でやっている人が大半で、既存(C,C++,Jave,etc)の言語とのインターフェイスが整っていれば、システムの一部分
        にそれも一時的に採用してもいいかなぐらいでは。(局所的 = パフォーマンスを改善したい場所の部分に色々当てはめてている等)
        「覚える」というよりも「パーツ」として、内容もシンプルな書き方で運用しているんじゃないかなー。
        これはフレームワークにも当てはまる事では。

      • by Anonymous Coward

        今は全命令、文法丸暗記の時代ではありませんし。
        デバイス、OS、プログラミング言語は設計思想と仕様分かれば、使うのはそう難しくないと思いますが?
        向き不向き無視しなければ。。

        ディープな技、不自然、冗長なコードが必要になるときは、何かが設計思想、仕様からずれてる、使い方が変なケースが多いんです。

        • by Anonymous Coward

          参考までにどんな言語を使ってきたのか遍歴を教えていただけないでしょうか…
          例を上げてもらえると助かります

      • by Anonymous Coward

        覚えると言うほど大げさなもんでもなく、新しいシミュレーションゲームに手を出すような感じですかね。

        面白そうなシミュレーションゲームがあったら、とりあえず起動してヘルプ見ながら何となく一通りプレイしてみて、
        本当に面白そうだったらもうちょっとのめり込むし、そうでなければそれで終わり。

        このゲームではこのポイントを貯めたらこれが出来るようになるんだなとか、細かな違いはあっても、基本は同じ。
        基本的にプレイヤーが楽しく遊べるように作ってあるんだから、気合いを入れてこのゲームを習得するぞとやるほどのことでもなく。
        全くやった事がないFPSにいきなりチャレンジなどだったら混乱もするだろうけど、
        大ざっぱに言って関数型言語を除けば今時の言語はどれも同じジャンル。

        プログラミング言語は、それぞれ何らかの意味でプログラマが使いやすいように作ってあるんだから、似たような雰囲気。

        # リソースなどの制約があって、実際に使いやすいようには作れませんでした、
        # という言語も少なからず存在するけど、使いやすいように作ろうとはされている

    • by Anonymous Coward

      >皆さんが新興言語の中で日常で使っているもの、あるいはきちんと自分のモノにした言語の数はどれぐらいでしょう?
      JavaとPHPくらいかな。
      #キリスト教だって2千年前なら新興宗教。

      だって、そのくらいしか仕事に繋がるくらいに普及した言語がないんだもの。

      • by Ryo.F (3896) on 2015年02月21日 14時36分 (#2765241) 日記

        JavaとPHPが「仕事」に繋がるなら、同じ「仕事」にJavaScriptも繋がりそうなもんだが。

        普通に仕事で求人がありそう、って話なら、他にもいろいろありそうなもんだけど。
        CでもRuby (on Rails)でも。

        親コメント
        • by Anonymous Coward

          親コメントの発言者の仕事と、あなたのいう仕事の定義とが違うだけでしょ。

    • by Anonymous Coward

      プログラミング言語の比較をしているサイトは多々あり、
      ほとんどのサイトで「○○より使いやすい」だの何だのと色々書いているということは
      紹介する全ての言語をひと通り使いこなしてから書いているはず。

      彼らは一体どうやって習得をしているのだろうか?
      彼らは一体なぜ新しい言語に挑み続けているのだろうか?
      そして彼らは一体普段何を書いて居るんだろうか・・・?

  • by Anonymous Coward on 2015年02月21日 12時19分 (#2765163)

    従来、パターンマッチングによる置き換え最適化はコンパイラへの埋め込みでした (sinとcosをsincosにまとめるなど)。
    そのため、非標準ライブラリを使用するコードの自動最適化には限界がありました (まぁ、C言語にはCoccinelleというセマンティックパッチ言語もありますが)。
    このNimのTerm rewriting macros [mit.edu]は待ち望んでいた機能ですね。

    とはいえ、ざっと見た限りでは、精度と値域と速度のトレードオフの問題や、構造体に中間物を入れる場合 (例えば平方根を計算しないで比較しソートする場合)など、
    自動最適化が難しい面への解決策とまでは行かないような印象です。

    • by Anonymous Coward

      おっと、間違えた。Coccinelleはツールで、セマンティックパッチ言語はSmPLです。

    • by Anonymous Coward

      実用言語のとしてのnimは素晴らしいものだとは思いますが、term rewriting macrosは部分評価のサブセットに見えますし、
      数十年前のアイディアが今になっても限定的な形でしか取り込まれていないことには(取り込むのは非常に難しいです!!!)、
      少々いらだちがつのることろではあります。

  • by Anonymous Coward on 2015年02月21日 14時55分 (#2765247)

    Windowsでnimファイルをコンパイルしようとして、エラーメッセージ化けてて最初ワケわからんかったわ。
    インストール時にMingWも含めてコンパイルの時はパス通しておかないとだめ。

  • by Anonymous Coward on 2015年02月21日 12時14分 (#2765157)

    ポストC/C++言語にはDとかRustとかあるけど
    もうひとつ加えられるのか…

    言語が乱立してると、結局C/C++を使い続けることに
    なりそうだな
    個人的にはC++を置き換える言語は欲しいけど・・・

    • by Anonymous Coward on 2015年02月21日 13時11分 (#2765189)

      C/C++が担っている低レベルなプログラミングに注力しているようには見えません。

      トップページにefficient, expressive, elegantとあるように、
      Pythonくらい簡単な文法で、C/C++並みに高速化するには、Lisp並みの表現力を得るにはどうするのか、というのがコンセプト。

      コンパイル時計算が非常に簡単で強力です。const付けるだけ。
      マクロとテンプレートも、別言語を使わされているような見た目にはなっていません。
      反面、型システムはそれほど凄いわけではありません。built-inな型でかなり楽をできますが。

      Pythonライクな文法を、自身と似た文法で拡張できるってのが印象的です。Lispの如くマクロを使えということなのでしょう。
      奇怪なASTを晒してメタプログラミング可!とふんぞり返る言語が多い中では好感が持てます。

      bare metalな世界に安全性と表現力を持ち込もうとしているのがRust、
      pythonに速さと表現力を持ち込もうとしているのがNim、
      # GoはGoogleのGo。すいません知らないんです。

      親コメント
    • C++も14ならば、newとdeleteのほぼ完全な駆逐も可能だし、置き換えるにしてはNimも説得力がイマイチな気が。
      (tutorial part I しか読んでないけど)
      あとC++に今すぐ欲しい機能はstatic ifとマトモな標準ライブラリかなぁ

      というか、Cythonと被って見える。

      親コメント
      • by Anonymous Coward on 2015年02月21日 20時22分 (#2765414)

        C++とかC系言語の最大の問題点は「○○が出来ない」ではなく、「○○が出来てしまう(その上、問題が検出もされずスルーされるのが危なすぎる)」だと思う

        親コメント
        • by Anonymous Coward

          でも、インラインアセンブラ禁止したら怒るんでしょ。

          ムーブコンストラクタのせいで個人的にC++熱が再燃しているんだけれど、ムーブを実装していないと、一部の標準関数は実行時エラーになるのは何とかしてほしい。

          • by Anonymous Coward

            実行時エラー>たとえばどれ?
            あとコンパイラはなんですか。

    • by Anonymous Coward

      本当これ
      乱立することでユーザーも分散するからどれも流行らない
      新しい言語を乱立するんじゃなくて協力し合えないのかな

      • by Anonymous Coward on 2015年02月21日 13時28分 (#2765197)

        そこはほれ、nim [wikipedia.org] ですから、なんというか、パイの奪い合いというか。

        親コメント
      • by Anonymous Coward

        新しい言語を乱立するんじゃなくて協力し合えないのかな

        ああゆうのは、俺の考える高速で安全なC/C++代替言語なので協力できるわけがない。何を保証して何を保証しないかは言語作成者によってバラバラだからね。

    • by Anonymous Coward

      C/C++ を置き換えるなら、
      SSE2/AVX/OpenCL/OpenMP あたりにも対応してくれないと意味ないよね。
      nim は対応してるんだろうか?

    • そもそも難しいのは低レベルなプログラミング自体であって、CやC++の問題は、言語仕様が低レベルなコードを記述することを前提にしている結果でしかない。

      DやRustも今時のスクリプト言語に比べれば、言語仕様が複雑なのはかわりない、安全に低レベルな操作を提供する場合、安全が保証できる範囲を言語側で定義するして守らせる必要がある。
      要するにこの手の言語が保証する安全は、スクリプト言語とかの適当に書いてもそれなりに動くものではなくて、プログラマーの自由をガチガチに制限するタイプだ、
      まあ、それだけじゃ間に合わないのでunsafeブロックみたいな、非安全なコー

    • 細かい言語仕様()なんてどうでもいいんだよ。
      どうせ同じだからどっちが勝つかしか興味ない。
      同様の問題でPythonもRubyもどちらかが滅びるべきだと思う。

  • by Anonymous Coward on 2015年02月21日 12時16分 (#2765159)

    誰か日本語の紹介記事教えてくれ

  • by Anonymous Coward on 2015年02月21日 13時37分 (#2765200)

    Python風インデント構文で、コンパイラはC++を上回るトップ性能という事で
    Pythonから入った人にはウケがいいのだろう。

    でも影響を受けたのはPascalらしいので、Delphi使いの流浪の民が
    流行を取り入れて新しい宗派を始めたという事なのかもしれないな。

    Delphiのような統合開発環境に発展したら、かなり流行るのではなかろうか。

  • by Anonymous Coward on 2015年02月21日 13時57分 (#2765223)

    と思ったらいつの間にか名前変わってたのか…

    # サイトデザインが大幅に変わった時も一瞬別なページ見てるのかと思ったけど

  • by Anonymous Coward on 2015年02月21日 17時24分 (#2765317)

    30年ばかり色々とやってきて、もうあまり、新しい言語は…という気になっている。
    (現在はJavaメイン)

    個人的には、awkの拡張言語ができればそれでいいかな…。
    いや、基本文法はawk、文字列と変数はPerlがいいか。
    関数の呼び出しは、なんだったっけ。割と最近出た言語のようなのがいい。
    func(width,height,depth)に対してfunc(1,2,3)でも呼べるしfunc(width=1,depth=3,height=2)でも呼べる。

  • by Anonymous Coward on 2015年02月21日 20時12分 (#2765411)

    http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3AScheme%E3%83%97... [practical-scheme.net]
    他の言語のデザイナが演算子の優先順位や文法に使う記号の善し悪しを 議論しているのが遠い世界のように感じられる。

  • by Anonymous Coward on 2015年02月22日 3時53分 (#2765540)

    Nim!

typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...