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

LispとObjective-Cを融合させたプログラミング言語「Nu」0.9.0 リリース 47

ストーリー by soara
ニウエの Lisper 部門より

hylom 曰く、

Objective-Cと Lispを融合させたプログラミング言語「Nu」のバージョン 0.9.0が 7月 2日にリリースされた(GitHubのコミット)。

NuはObjective-Cで実装されたオブジェクト指向のインタプリタ言語で、Lisp由来の文法と Objective-Cのクラス機構を備えているのが特徴。Mac OS Xの Cocoa APIや各種ライブラリにアクセスでき、OS Xのネイティブな GUIアプリの開発が可能。

Nuの歴史はまだ浅く、知名度も低いものの、作者はブログにて「Nuはそのバージョン番号やWebサイトのアクティビティから想定されるよりもずっと安定しており、重要なアプリケーションのプログラミングにも安心して利用できる」との旨を述べている。

Nu言語の日本語の記事としてはCodeZineの「Nuで Mac GUIプログラミング Twitterクライアントを作ってみよう」などが参考になる。コード中に括弧が少ないと落ち着かない、という人は試して見ては。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ストーリーにあるリンクとか全く読まずに印象だけ

    "()" と "[]" がすごい勢いで混ざっていそうだ。

  • がるぽっ! (スコア:0, すばらしい洞察)

    by Anonymous Coward on 2010年07月10日 10時20分 (#1793113)
    Nu!
    • by Anonymous Coward

      Nu言語は伊達じゃない!

      #死亡フラグ

    • by Anonymous Coward
      ヌ?
      オニイチャーン
  • by Anonymous Coward on 2010年07月10日 14時10分 (#1793173)
    RubyをS式で書いているだけのもののような。

    thenとelseって、何なのさ。それを使うことで可読性が増すかもしれないけど、わざわざ括弧で囲う必要はないし、括弧で囲うなら冗長なだけ。
    • by Anonymous Coward

      君が ruby しか知らないことは良くわかった。

      • by Anonymous Coward

        元ACだが、俺が最近使っているのは、SchemeとC++。以前にObjective-Cで遊んだこともある。でも、Rubyは知らない。

        ただ、リンク先を読むと、セマンティクスはRuby寄りとあるし、文字列の操作も気持ち悪い(見慣れていない)ので、Rubyが元なんだなと思いました。それで、そのthenとかelseとかもRuby由来かと思ったんだけど、違うの?

        Schemeのifは

        (if <test> <consequent> <alternate>)

        だけど、thenとelseを使いたいのなら、

        (if <test> then <consequent> else <alternate>)

        で良い

        • by Anonymous Coward

          thenとelseが関数で実装されてんのかな。んなばかな。

        • by Anonymous Coward
          > (if <test> then <consequent> else <alternate>)

          式の途中にキーワードを書くのは筋が悪い。

          Common Lisp派ならまだしも、Scheme派でこれはちょっとねえ。
        • by Anonymous Coward

          実際はどうなのか知らないが、

          (if <test> (then <consequent>) (else <alternate>))

          ならば、

          (if <test> (then <consequent>))

          (if <test> (else <alternate>))

          も簡単に実装可能なのでは?

          (if <test> then <consequent>  else <alternate>)

          だと、

          (if <test> then <consequent>)

          (if <test> else <alternate>)

          • by Anonymous Coward
            マクロでどうとでもなりますがな。

            括弧とキーワードの両方を使う理由が分からんだけですよ。
            • by Anonymous Coward
              > マクロでどうとでもなりますがな。

              ますます筋が悪い
            • by Anonymous Coward

              (if <condition> <consequent>)

              では、

              (if <condition> <alternate>)

              をどうするの?
              キーワードなしには実装できないでしょ。

              (if <condition> <block>...)

              のほうがすっきり。

              (case <condition> <block>...)

              とかも同じ理屈で実装できるのでは?

              • by Anonymous Coward

                (if <condition> <alternate>)

                <condition>が真のときにどのような値を返すかをお考えください。手続き型の言語とは違い、何らかの値を返さないといけないわけですから、キーワードの代わりに何らかの値を書けばいいのです。

                キーワードを使うか、括弧を使うかは宗教の問題。私は、省けるキーワードは省きたいし、余計な記号も使いたくないので、Schemeが好きですが、キーワードや多種多様の記号を多用する言語を批判するつもりはありません。宗教ですから。

                ただ、キーワードや多種多様の記号を使うのは、Schemeのように括弧だらけになるのを防ぐには良い手立てなのに、そこでまた、括弧をつけるというのが意味不明なのです。

              • by Anonymous Coward
                > ただ、キーワードや多種多様の記号を使うのは、Schemeのように括弧だらけになるのを防ぐには良い手立てなのに、そこでまた、括弧をつけるというのが意味不明なのです。

                式の途中にキーワードを入れるのはLispっぽくないんだよ
                だから筋が悪いと何度も言ってるんだ
              • by Anonymous Coward

                > <condition>が真のときにどのような値を返すかをお考えください。
                >手続き型の言語とは違い、何らかの値を返さないといけないわけですから、
                >キーワードの代わりに何らかの値を書けばいいのです。

                意味不明。

                (if <condition> <consequent>)
                <condition>がtrueならば、<consequent>を評価する。

                (if <condition> <alternate>)
                <condition>がfalseならば、<consequent>を評価する。

                これらをどうやって区別するかの問題だよ。なんの話をしているの?
                「何らかの値」って何?どこに書くの?

              • by Anonymous Coward

                だいたい、

                (if condition alternate)

                なんていらんだろう。

                (if (not condition) (alternate))

                で書ける。

              • by Anonymous Coward

                それを言うなら、

                (if <condition> <consequent> <alternate>)

                も要らない。

                おまえとはいっしょにコード書きたくない。コードメンテナンスとか、コード可読性とか考えてないよな。

                IF文は、

                IF <condition> GOTO <line number>

                しか使えないBASICを思い出すよ :-p

              • by Anonymous Coward
                IF(式)行番号1,行番号2,行番号3
                が使えないとヤダヤダ
              • by Anonymous Coward

                unless でいいような。

              • by Anonymous Coward

                >>キーワードの代わりに何らかの値を書けばいいのです。
                >意味不明。

                Lisper 的には意味不明でもない。
                ALGOL的な if の条件式じゃなくてcond の条件節みたいなものを想定してるんじゃないかな。

                (cond ((a-cond-func))
                      (t 'else-value))

                こうすれば、a-cond-func 関数の呼出し結果が真値であれば、そのままその値が cond の返り値になる。

              • by Anonymous Coward
                そんなことは自明。
                ifで評価するのはbooleanなんだから、tだろうがthenだろうが大差ない。
                読みやすさから言えば、elseがあるなら、thenのほうが分かりやすいんじゃないのか?
                ということ。そこに「なんらかの値」なんて入る余地はないと思うのだが。

                まあ読んでからにしてくれ!
                http://programming.nu/operators#controlflow
                ついでに言うと、untilもあるし。

                みんな、読まずに勝手な想像だけで話していることがよく分かったよ。
        • by Anonymous Coward

          cond式でいいじゃんかー

    • by Anonymous Coward

      開発者のサイトのリファレンスを見ると、thenは必ずしも必要ではないらしい。Schemeのように条件式の後に、1つもしくは2つの要素しか書けないというのではなく、上限は特に無くて、条件式が真のときはリストの先頭がelseで始まっていないもののみを評価、偽のときはelseで始まっているリストのみを評価するらしい。そして、thenはグルーピングのためにあるそうです。

      面白い仕様ではありますが、条件式を評価した後に、リストの先頭がelseでないかどうかをチェックすると言うのは無駄が多いような。

      ところで、thenの使用例の、

      (if (eq x 1)
          (then (puts "x is 1"))
          (else (if (eq x 2)
       

  • by Anonymous Coward on 2010年07月10日 18時29分 (#1793226)
    以前、SourceForge でアプリを公開している開発者に対するインタビュー記事が、
    シリーズとしてありましたけど、最近、インタビュー記事がありませんよね。
    どうしたんでしょうね。

    SourceForge の人気がなくなって、インタビューの価値がある開発者が
    いらっしゃらなくなったのでしょうか?
    • by Anonymous Coward

      単に記事として人気が無いからじゃない?
      PV稼げなきゃ意味ないわけだし。

      # 面白い物を出してるのにコメントがほとんど付かなかったりして
      # もう失礼じゃないかと思うレベルだったりw

  • by Anonymous Coward on 2010年07月10日 20時12分 (#1793246)

    よくわからんが、フラッシュ封じの為の例の禁則事項に引っかかるので
    この言語はApple製品の開発には使えないんだよね・・・?

  • by Anonymous Coward on 2010年07月10日 21時54分 (#1793275)
    Nu?

    nue じゃなくて?

    # 怒られるのでAC
  • by Anonymous Coward on 2010年07月11日 1時00分 (#1793319)
    Rubyや幾つかのSchemeの実装がObjective-Cのランタイムへのブリッジを持つけれど,そのような言語環境と比べてこのNuがもつメリットって何だろう.
  • CLでCLOS使うんじゃダメなの?

    • by Anonymous Coward
      Objective-C以外の言語からObjective-Cで記述されたライブラリ(主にAppleが提供するアプリケーション開発フレームワーク)を簡単に利用することが求められているのであって,Objective-CのOOシステムのみをCLOS上に実現できても,それだけでは嬉しくないんじゃないかな.
      • by Anonymous Coward

        そもそもObjective-CのオブジェクトシステムとFoundation(NSObject)のオブジェクトシステムは区別するべきだと思うんだけど、
        Appleはわざと混同しているような気がする。

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...