2007/08/07 軽量プログラミング言語の恒例イベント、「Lightweight Language Spirit」(LL魂)。レポート第3弾は、自らプログラミング言語を開発している人々によるセッション「オレ様言語の作り方」の模様をお伝えする。日本語で書けるプログラミング言語を開発した人、高校で教師生活を送る傍ら独自言語開発を楽しむ人など、それぞれの立場で「オレ様言語」に対する熱い思いを語った。 日本語でプログラムできる言語「なでしこ」 「その当時好きだった女の子にひとこと、プログラミング言語を作ると言ったことが原因で作ることになった」。独自プログラミング言語「なでしこ」を作り始めたきっかけを冗談交じりにそう語るのは、酒徳峰章(クジラ飛行机)氏だ。事務処理の自動化を目的に、日本語によるプログラミングを可能にしたなでしこは、きわめてユニークな存在だ。文法はシンプルで難しい概念も出てこないが
ベンチマークみたいなあれです。 思えば、過去にいろいろしてきました。 フィボナッチ数列に関する3つのアルゴリズムの速度比較のRubyとPythonでの比較@Python, Ruby - CanI’s Diary とか。 で、rubyたんが1.9になったとか、pythonが3.0系になったとかいろいろあったので、改めて速度比較をしてみようかなと。 今回は、我らがIronpythonとIronrubyにも加わっていただきました。 @Ruby Source id:qnighyさんの フィボナッチ数列に関する3つのアルゴリズムの速度比較@Ruby - 簡潔なQ から。 以下、引用。 #!/usr/bin/ruby -Ku require 'matrix' def fib_recursive(n) case n when 0 return 0 when 1 return 1 else return
現段階では,IfやWhileなどのRubyの構文はサポートされていません.また,インスタンス変数やグローバル変数などもサポートされていません.他のクラスを継承するクラス定義が含まれたプログラムも検証できません. メソッド定義,クラス定義,メソッド呼び出しなどのみが,サポートされています. ダウンロード Typing Rubyは無保証のフリーソフトウェアであり,GNU GPL2でライセンスされます. YYYY-MM-DD: truby-revXX.tgz YYYY-MM-DD: nodedump-truby-revXX.tgz 2005年1月7日現在,まだダウンロードできるファイルはありません. 近いうちにリリースしますので,しばらくおまちください. Subversionリポジトリ 開発に利用しているSubversionリポジトリを公開しています. 匿名で最新版のソースコードをチェックアウト
OCaml のすすめ OCaml とはフランスの 情報技術系の研究機関の INRIA で開発されている関数型言語 ML (の方言) です。ML には多相型、型推論、ガーベージコレクション (GC)、 データ構造のパターンマッチング等、プログラミング言語理論の研究の 成果 (すごく最新のものと言うわけでは無いそうですが) が詰め込まれ ています。これらの目的・効用は、 コードの再利用の範囲が大きい (多相型) コードの記述量が短かくなる (型推論・データ構造のパターンマッチング) バグの入り込む余地が少なくなる (GC、関数的(副作用の少ない)プログラミング) 等です。私は OCaml を研究でのデータ処理をはじめ、作成するプログラムほとんど 全てにおいて日常的に使っているのですが、 とにかく開発効率が良いです。 コンパイル時の型チェックの厳しさには慣れないとちょっと面倒に感じる かもしれま
誰も見たことのないまったく新しいソフトウェアを創造する。 人の心を豊かにするハートフルなソフトウェアを生み出す。 人の生活や企業の業務を改善する便利なツールを提供し、社会に貢献する。 弊社は、創業以来上記の3つの理念を目標にして営業活動を行ってまいりました。 ソフトウェアの開発は、個人の創造力に大きく依存したアーティスティックな面と、作成過程においては、まるでビルを建築するときのような綿密な作業管理という工業的な面を備えています。どちらが欠けてもいいソフトウェアは開発できません。 われわれは個人のクリエイティビティを発揮し、また高度な専門性を備えたプロのソフトウェア開発集団として、クライアントに信頼される企業を目指して努力していきます。 21世紀のソフトウェアのキーワードはネットワークと人工知能であることは間違いありません。 これらの技術を使ってクライアント業務の改善・効率化に寄与するため
言語の中の言語 - Scripting はじめに 2004 年の JavaOne で、Java でスクリプトをサポートするという発表がありました。特にサーバサイドでの使用を前提にしてたようで、PHP がまず第一にサポートされるスクリプト言語ということになっていました。 もちろん、標準策定は JCP でおこなわれています。具体的には JSR-223 Scripting for Java Platform で標準策定されています。 そして、その機能が Java SE 6 で取り入れられることになったのです。 しかし、PHP ではありませんでした。Java SE 6 で標準でサポートされるのは JavaScript です。 JSR-223 は Java の中でスクリプト言語を使用するための標準で、スクリプト言語の種類を限定しているわけではありません。ドラフトの中で例として使われているものには P
プログラム言語は使うだけの道具ではありません。アイデアとやる気があれば,自分にとって一番使いやすいオリジナルの言語を作ることだってできるのです。言語処理系の実装には,ソフトウエア開発の様々な技術やノウハウがぎっしり詰まっています。何より,とてもクリエイティブで楽しい作業です。プログラムはどのようにして解析/実行されるのかといった言語処理の中身を知るだけでも,普段のプログラミングに大きなプラスになります。 誰かが作った言語をただ使うだけの日常からちょっと離れ,言語処理の世界を探検してみましょう!
テーブルコンストラクタ tslots := ( 'id' '=' exp | '[' exp ']' '=' exp ) [','] exp := '{' [tslots] '}' 新しいテーブルを作成する。 local a = {} // 空テーブルを作成する テーブルコンストラクタでスロット宣言を含めることもできる。これは次の書式を取る。 id = exp [','] キーとしてidを、値としてexpを取る新規スロットを作成する。 local a = { slot1 = "I'm the slot value" } 別の書式として次のようなものがある。 '[' exp1 ']' = exp2 [','] キーとしてexp1を、値としてexp2を取る新規スロットを作成する。 local a= { [1] = "I'm the value" } この2つの書式を混ぜて使用することができる
ひどく単純なVM #include <stdio.h> #define STACK_SIZE 30000 enum Instruction { I_PUSH, I_POP, I_DUP, I_ADD, I_SUB, I_JUMP, I_IF, I_NOT, I_EQ, I_RETURN }; typedef enum Instruction Instruction; struct Code { Instruction inst; int value; }; typedef struct Code Code; int exec(Code *program) { int stack[STACK_SIZE]; int stack_top = 0; int pc; for(pc=0;;++pc) { Code code = program[pc]; switch(code.inst) { case
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
2009年06月13日22:00 カテゴリLightweight Languages javascript - にはクラスはない かえってわかりにくくなっている感じをかつてさんざん実感したので。 JavaScriptのオブジェクトについて考察してみた - あと味 JavaScriptにおけるほとんど全てのデータはオブジェクトである オブジェクトの定義にもいろいろありますが、ここでは「メソッドを持つ」という狭い意味においても事実だということです。実際に見てみましょう。 p(true.toString()); p("String".toString()); p((1).toString()); p((3.14159265).toString()); p([0,1,2,3].toString()); p({q:"answer to life, the universe, and everythi
Java におけるコード進化パターン (Code Evolution Patterns in Java) asato shimotaki <asatohan at gmail.com> 最終更新日 : 2009/6/21 (2004/4/22 より) [...] For twenty years, I spent two or three hours a day looking at pairs of things -- buildings, tiles, stones, windows, carpets, figures, carvings of flowers, paths, seats, funiture, streets, paintings, fountains, doorways, arches, friezes -- comparing them, and asking my
拡張子・コメント モジュールの使用 関数定義 if文 パターンマッチ 参照型 type宣言 例外 レコード コマンドライン引数 モジュールシステム モジュール シグネチャ ファンクタ クラス 標準入出力 拡張子・コメント OCamlのソースファイルの拡張子は、普通"*.ml"になる。 また、コメントは次のように書く。ちなみにStandard MLと同じである。一行だけのコメントはない。 (* This is comment! *) モジュールの使用 モジュール内で定義された関数を使うには、モジュール名で関数名を修飾する必要がある。具体的には次の通り。 let sum = List.fold_left (+) 0;; fold_leftは左側から順番に畳み込んでいく関数で、Listというモジュール内で定義されている。よって、fold_leftを使う際にはモジュール名Listで修飾している。
近くの図書館 OCaml-Nagoya の「入門 OCaml」があった。 また、五十嵐淳氏の「プログラミング in OCaml」もあった。 両方を借りたので それらをもとに、少しずつ OCaml のことを書こう。 インストール 私は Vine Linux 4.1 を使っているが、 インストールした覚えがないのに、 ocaml とコマンドを打つだけで使える。 きっと、最初からインストールされていたのだろう。 バージョンは、3.10.1 である。 ocaml が ghci に比べて劣るのは、コマンド行の編集機能がないことだ。 ghci は、コマンドの履歴を Ctrl-p, Ctrl-n などで呼び出せるのだが、 ocaml にはそれがない。 なお、ocaml でも、関数はテキストファイルに書いて、 テストはトップレベルから呼び出すのがいいと思う。 読み込みは #use "filename.ml
LISP入門 LISPは、"ListProcessor" - リスト処理 に優れた言語です。 その歴史は古く、登場は40年以上昔に遡ります。 プログラム言語としては、最も古い部類に属します。 現在のアプリケーション開発の主流の言語ではありませんが、今でも様々な場面で活躍しています。 (例: CADやエディタの組み込みマクロ言語として) LISPの特徴: LISPの処理系はコンパクトである →LISPを動かすソフト自体のプログラムは比較的簡単なので、アプリケーションのマクロ言語として組み込まれていることがあります。例としては、EmacsなどのテキストエディタやCADソフトなどのマクロ言語などがあります。 関数型言語 C言語も、関数型言語と呼ばれることもありますが、LISPはより純粋な関数型言語です。 非手続き型のプログラミングに向いた言語で、人工知能関連の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く