タグ

言語処理に関するSiroKuroのブックマーク (84)

  • あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して

    あなたは,下記のコードを理解できない。 p f /g+h/i これはRubyのコードである。「p」は,コンソールに出力する関数である。 問: だいたい,何をやっているコードですか? ※例えば,四則演算など。 構文をおおまかに説明して下さい。 どれが変数で,どれが関数で,どれが演算子か? ↓回答 回答: 一意に決定できない。 下記に, このコードの複数の解釈方法と, この件が引き起こす問題 について述べる。 ※なお,この問題が起きるのは動的言語に限らず,静的言語でも同様に発生しうることを前もって述べておく。 (1)分数の計算とみなすパターン 先行するコードを下記のように書いた場合: test1.rb # 変数に数値を代入 f = 2 g = 1 h = 2 i = 1 # 演算結果をpで出力する p f /g+h/i 実行結果: >ruby test1.rb 4 「分数の計算」とみなされる。

    あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して
  • dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネット(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 ※1 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 ※1 レジストラ「GMO Internet, Inc. d/b/a Onamae.com」のシェア値を集計。 ※1 2020年8月時点の調査。

  • LL Decade

    ソフトウェア工学の古典「人月の神話」の「セカンドシステム症候群」によると、 二度目にデザインするシステムは、初回で実装を見送った要求を詰め込み過ぎて失敗作になりやすく なるため、適切な取捨選択が重要であると言われています。 これはプログラミング言語のデザインや実装にも適用される話なのでしょうか? セッションでは、過去に何度もプログラミング言語をデザインし実装し続けている 経験豊富な方々と、今回初めて言語処理系を自分で作ってみた方々の両方をお招きし、 現代的なプログラミング言語処理系のデザインと実装の課題についてディスカッションを行います。 出演 「next Perl5プログラミング言語Toraの設計と実装」@tokuhirom 「型安全なJavaScript処理系JSXを作ってみた」@kazuho 「世界で最も仕様に忠実なECMAScript言語処理系」@Constellation 「組

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    SiroKuro
    SiroKuro 2012/04/30
    kink、Rhino より遅いっていうのがちょっと気になるところ
  • ペログラム言語 Prpr

    ペロペロしたい人の名前を入力します(「ちゃん」等をつけるとよりレベルの高いペロリストになれます) 「生成」ボタンをクリックすると、自動でプログラムが生成されます。 「実行」ボタンをクリックすると、ペロペロします。

    SiroKuro
    SiroKuro 2011/11/10
    ペロッ……これはWhiteSpace!
  • JetBrains、独自の言語を作成/拡張できるIDE「MPS 2.0」をリリース | OSDN Magazine

    チェコJetBrainsは8月22日、目的に応じてプログラミング言語を作成/拡張できるソフトウェア開発環境「JetBrains Meta Programming System(MPS) 2.0」をリリースした。同社Webサイトよりダウンロードできる。 MPSは言語指向プログラミング(LOP)という独自コンセプトを実装した開発環境で、クラスやメソッドを作成する感覚で目的に応じたプログラミング/データ記述言語(ドメイン固有言語、DSL)を設計したり、プログラミング言語を拡張することなどが可能。開発者の効率よい作業を研究する同社内のリサーチプロジェクトを経て、2009年に最初の正式版が公開された。Apache License 2.0の下で公開されている。 最新版では、MPSプラグインという形で設計したカスタムDSLを配布できるようになった。設計したDSL向けにMPSベースのIDEを構築し、独自ブ

    JetBrains、独自の言語を作成/拡張できるIDE「MPS 2.0」をリリース | OSDN Magazine
  • Groovyでdef関数からdef関数が呼び出せないのか? - みちしるべ

    Groovyで特定文字(空白類文字)を含まない部分の長さを調べる Groovyで特定文字(空白類文字)を含まない部分の長さを調べる その2 で悩んできたのだが、根的に悩む内容が違ったようだ。 def 関数からdef関数が呼び出せないのか? def a(){ println "a" } def b(){ a(); println "b" } a() b() groovy:000> load defSample.groovy ===> true ===> true a ===> null ERROR groovy.lang.MissingMethodException: No signature of method: groovysh_evaluate.a() is applicable for argument types: () values: [] at groovysh_evalua

    Groovyでdef関数からdef関数が呼び出せないのか? - みちしるべ
    SiroKuro
    SiroKuro 2010/10/02
    よくわかんないけど、def a の "}" の直後に "; def b" って続けさえすれば、改行あっても動く気がする。
  • 『プログラミングF#』著者が明かすF#を使いこなすとっておきの秘訣!

    『プログラミングF#』の著者であり、またF#開発チームのメンバーであったクリス・スミスさんをお迎えして、秋葉原の書泉ブックタワーで9月22日にトークショーが開かれました。 技術監修者の頃末和義氏と、鈴木幸敏氏がインタビュアーとして、F#開発秘話、F#の特徴、魅力、関数型言語の威力、関数型言語をマスターする方法、F#を使いこなす秘訣など、さまざまなことをクリスさんにお伺いしました。とにかくナイスガイのクリスさん、多岐にわたる質問に笑顔でていねいにお答えくださいました。 もともとイギリス・ケンブリッジのマイクロソフトリサーチのDon Syme博士が個人の研究プロジェクトとしてスタートしたF#ですが、クリスさんはF#開発チームの4番目のメンバーとして開発に参加。開発チームは11人という少人数で構成され、またメンバーはイギリス、アメリカ、カナダ、中国と世界中に散らばっているとのこと。ビデオ会議やメ

    『プログラミングF#』著者が明かすF#を使いこなすとっておきの秘訣!
  • Rubyの可視化 - 西尾泰和のはてなダイアリー

    セキュリティ&プログラミングキャンプの参加者 TaKUMA7 の成果物が YouTube と Vimeo にアップロードされていた。素晴らしい!何が素晴しいってちゃんと英語で説明が書いてある!欲をいえばズームインしてちゃんと各クラスの名前やメソッドの名前を見せればもっと説得力があったかも。 Vimeo: http://vimeo.com/14294230 スクリーンショットはこちら: セプキャンで取り組んだ課題:『Rubyの可視化』(クラス定義時、メソッド定義時、インスタンス生成時にリアルタイムで関係性を表示。表示部分は Built with Processing.)

    Rubyの可視化 - 西尾泰和のはてなダイアリー
  • Jayの使い方(簡略版)

    prev← up↑ →next 4.jayの使い方(簡略版) jayはyaccのJava版です。 http://www.informatik.uni-osnabrueck.de/alumni/bernd/jay/ からダウンロードできます(jay tutorial examples という名前のものをダウンロードするといいでしょう)。 ここにもcode.tar.gzや code.zipが置いてあります。 インストールの仕方を見て、インストールしてください。 ここでは、lexのJava版としてはJFlexを使うことにして話を進めます。 jayのプログラムはyaccのプログラムと同じように、宣言部、ルール部、プログラム部の3部構成になっています。各部の区切り記号は、%%です。%%だけが書かれた行が区切りになります。 yaccプログラムの構成

  • http://twitter.com/kinaba/statuses/20638765822

  • Javaのラムダ式導入に関する最新提案の雑なまとめ - 矢野勉のはてな日記

    java7月頭に,Brian GoetzがJavaにおけるラムダ式導入に関する最新提案のドラフトを出しました。State of the Lambda 私はこの提案書と,提案書を元にした英語記事を読んだだけですが,Twitterで話していると,23日くらいにこの提案を元にしたソースがJavaのソースリポジトリにコミットされたらしい。ただし,中ではまだ議論続発してるらしい。ちなみに英語記事はラムダについての連続記事の4回目で,5回目ではWicketでラムダ式を使うとどうなるか,という考察が載っています。提案書のラムダ式とWicketの非整合部分についての考察で,Wicket好きの人は読んでみてもいいと思う。あと,空コンストラクタがないクラスについて提案書は明確なところ書いてないよね,みたいな指摘も。せっかくなんで,最新提案におけるラムダ式実装をまとめておきます。いままでのあらすじ最新提案書では

  • C++で論理型言語コンパイラを書いてみる

    C++ で、論理型言語(GHC)コンパイラを書く 論理型言語コンパイラを作る理由 基ポリシー: いろいろ諦める GHC の基 実装関連 C++ を使う理由 論理変数を実装する ゴールのコンパイル ゴールキューと疑似マルチタスク 疑似マルチタスクから当のマルチタスクへ 最適化 ガベージコレクション Boehm GC を C++ で使うための調査 ガベージコレクションの実装 JavaScript で GHC [JavaScript] 8-queen [JavaScript] Canvas を使った描画 [JavaScript] 組み込み述語の書き方 (メモ) KLIC との比較 GraphViz と GHC オブジェクト構造の可視化(案) GraphViz によるグラフィカルデバッグ GHC プログラミング 入出力と順序制御 竹内関数と遅延評価 [JavaScript] wait/1 と

    SiroKuro
    SiroKuro 2009/12/05
    これからはGHCの時代だ
  • プログラミング言語の特徴を視覚的に比較する - Radium Software

    The Computer Language Benchmarks Game のページでは,計 32 個のプログラミング言語処理系のベンチマークを集計して,そのパフォーマンスを比較している。そして最近,このページに新たなプロットが追加された。単純にパフォーマンスだけの比較を行うのではなく,パフォーマンスと「コードの長さ」を関連付けて比較を行うというものだ。上はそのプロットから一部を転載したもので,全体はこのページで見ることができる。 このプロットでは,縦軸が処理時間(上にいくほど遅い),横軸がコードの長さ(右にいくほど冗長)に割り当てられている。このようなプロットを行うと,多くの言語は3通りの偏り方を見せる ― 左上(簡潔だけど遅い)に偏る「スクリプト系」,右下(速いけど冗長)に偏る「システム系」,そして,左下(速くて簡潔!)に偏る「理想系」だ。ちなみに,右上(遅くて冗長)に偏る言語は無い…

    プログラミング言語の特徴を視覚的に比較する - Radium Software
    SiroKuro
    SiroKuro 2009/10/05
    すげーおもしろい
  • 流れるようなインターフェイス - ぐるぐる~

    なんか単に this を返せばいいって思っている人も多いようけど、ただ this を返せばそれが使いやすいかって言われると、正直微妙。 例えば、 public static class StringUtil { public static SubstrInfo Substr(this string str) { return new SubstrInfo(str); } public sealed class SubstrInfo { public SubstrInfo From(int from) { ... return this; } public SubstrInfo To(int to) { ... return this; } public SubstrInfo Length(int length) { ... return this; } } } なんてクラスは、 "hoge

    流れるようなインターフェイス - ぐるぐる~
    SiroKuro
    SiroKuro 2009/06/20
    Smalltalk 風メッセージ記述&部分適用もどきで対処できたりして。
  • 書籍「プログラミング言語を作る」が発売されます(amazonアソシエイトリンク追加) - K.Maebashi's はてなブログ

    下記のとおり、書籍「プログラミング言語を作る」が発売されます(宣伝のため、この記事はしばらく一番上に表示します)。 http://kmaebashi.com/programmer/devlang/book/index.html 6/19 22:11 amazonのリンクを追加(関連記事)。 書のテーマは「オリジナルのプログラミング言語を作る」ことです。 世の中には、現在広く使われているものだけでも、C, C++, Java, C#, Perl, Python, Ruby, PHP, Lisp, JavaScript……等々、すでに多くのプログラミング言語が存在します。これほど多くの言語が乱立している中で、なぜわざわざ新しい言語なんか作らなければならないのか、と思う人も多いことでしょう。 しかし、プログラムに関しては何でもそうだと思いますが、何かを深く知りたかったら、一番いいのはそれを自分

    書籍「プログラミング言語を作る」が発売されます(amazonアソシエイトリンク追加) - K.Maebashi's はてなブログ
  • IGDA「続・ゲームにおけるスクリプト言語の現状」レポート (へっぽこさんメモ)

    IGDA日ゲームテクノロジー研究会第13回研究会 「続・ゲームにおけるスクリプト言語の現状」 に行ってきました。以下、セッションごとの感想です。 ■「ごく簡単な並列処理スクリプトシステムの設計と実装」 小久保啓三氏(HAL東京) スクウェアに所属していた小久保氏によるスクリプトシステムの説明。 小久保氏が関わったタイトルとしては、ロマンシングサガ、FF5、クロノトリガー、FF7、シャドウハーツ。ツール提供としては、ロマサガ2、FF6、聖剣伝説2、ライブアライブ。 セッションの内容は、当時スクウェアで使われた並列処理スクリプトシステム ATEL(エーテル。Actice Time Event Language)の話が中心となった。 このスクリプトシステムを作るきっかけとなったのは、クロノトリガーでのフィールドからバトルへのシームレスな推移を実現したかったため。実装としては、所謂 ACTOR

  • LLVMを勉強中 : As Sloth As Possible

    ここ数日、LLVMについて少し勉強している。そもそもなんでLLVMを触り始めたかというと、Twitter上で「今コンパイル欲求に駆られている」と(割と何も考えずに)つぶやいたところ、 「じゃあDTコンパイルしようぜ」 srd! でもあれコンパイラとは名ばかりでぶっちゃけ文字列をRubyコードにtranslateしてるだけだったりするね 「DTパーサを改良してLLVMにブリッジして、クロスプラットフォーム環境で高速に動作するDT処理系にするといいよ」 何その無駄に敷居高いお仕事!誰得!でもなんか面白そう! というやりとりがあって、じゃあ当に誰が得するのかわからないけど面白そうだからLLVMをバックエンドで使ってesotericがサポートしてるコードからバイナリを生成するコンパイラ作ろうぜ、という流れになったから。実にLLVMの無駄遣いですね。この記事ブクマするときは「LLVMの無駄遣い」っ

    LLVMを勉強中 : As Sloth As Possible
  • Groovy(やgcc拡張)の?:演算子をOnionに追加してみた - kmizuの日記

    Groovyには、?:という演算子があって、たとえば、 x ?: y という式があった場合、 x != null ? x : y と同じような働きをする(xの評価が2回行われない事を除いて)。で、これと同じ働きをする演算子をOnionにも追加してみた。使い方はGroovyのそれとほぼ同じ。たとえば、以下のようなコードが動作する。 x: String = null; if(args.length > 0) { x = args[0]; } System::out.println(x ?: "BAR");コマンドライン引数が無い場合は、xがnullなので、"BAR"が表示され、そうでない場合、最初のコマンドライン引数が表示される。 ちなみに、Onionで型チェックやコード生成を行うやり方を思い出すためのリハビリがてらに追加してみただけなので、そのうち削除するかも。 追記: id:SiroKur

    Groovy(やgcc拡張)の?:演算子をOnionに追加してみた - kmizuの日記
    SiroKuro
    SiroKuro 2009/03/07
    よく確認していないけど C# の ?? 演算子と同じ?
  • 「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記

    Parsing Expression Grammar (PEG)をベースとした構文解析器を生成するパーサジェネレータMetalを作りました。Rubyで書かれており、Rubyのコードを生成します。 Metalの多くはOMeta: an Object-Oriented Language for Pattern MatchingをRubyに移植したものです。 Metalの特徴: Rubyでアクションが書ける オブジェクト指向(継承、Mix-in、委譲、オーバーライド、super) PEGの特徴はそのまま 曖昧さが無い 左再帰が書けない(いまのところ) メモ化する ソースコードはCodeRepos:/lang/ruby/metalにあるので、ガツガツいじれます。 使い方 Ruby gemsでインストールできます。 $ gem install metal 文法定義ファイルを書いて、metalコマンド

    「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記