IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
初めに Groovy とは? Groovy とは、Java プラットフォーム上で動く動的型付け言語です。シンタックスがほとんど Java と変わらないので、Java を動的型付けにした言語と考えてもらえば良いと思います。Groovy から Java のコードを呼び出せるので、既存のあらゆる Java のライブラリがそのまま使えます。 動的な側面だけでなく静的コンパイルもサポートされているのが Groovy の特徴です。静的コンパイルによって、動的な機能 (ダックタイピングや実行時のメソッド追加など) が制限される代わりに、動的なメソッド呼び出しに関するオーバヘッドがなくなるため、実行速度が Java と大差なくなります。 AST 変換とは? Groovy のソースコードをコンパイルすると、まず文法に則ってコードを木構造で表した中間表現に変換されます。これを 「AST (Abstract S
Introduction The desire to bring macros to Python came from my experience with Rust's procedural macros, so we're going to talk about Rust for a second. If you'd like to skip ahead to the Python stuff, click here. Rust is becoming more and more popular by the day for reasons that you've probably heard about: It's really fast. It has a nice, modern type system. It prevents lots of memory errors. Ho
何故Lisperがマクロについて語るのか。Lisperと議論してみても満足のいく答を得た人はそんなにいないと思う。 それはLisper自身便利とは思っていても何が便利なのかを意識してなくて他人に上手く説明出来ないからじゃないかと思った。 ちょっと思いついた範囲でまとめてみる。 最近ではマクロシステムを持つ言語は珍しくない。Rust, Scala, Template Haskell, Mirahなどなど。最初にCommon Lispのマクロと他の言語のマクロとの違いを少し考えてみたい。 Unless まず、unlessをマクロで書くことを考えてみたい。単純にifにnotをつければいい。 Common Lispではこうなる。 (if (not foo-p) bar) (defmacro unless (cond then) `(if (not ,cond) ,then)) (unless fo
# 構文解析にまつわる小話たち ---------------------- [#peg_study](https://twitter.com/search?q=%23peg_study&src=typd&vertical=default&f=tweets) === # About Me --------- ![κeenのアイコン](/images/icon.png) + κeen + [@blackenedgold](https://twitter.com/blackenedgold) + Github: [KeenS](https://github.com/KeenS) + サイバエージェントの新卒エンジニア + Lisp, ML, Shell Scriptあたりを書きます === # ウォームアップ === # 構文解析はバッドノウハウ -----------------------
前回はマクロの概要と Python でマクロを実装するための仕組みについて説明しました。 Python とマクロ、インポートフックと抽象構文木 - forest book 動作原理を理解した上で実際にマクロでどういったことができるのか、MacroPy というライブラリで提供されている機能をみながら考察してみます。 MacroPy の概要 Python でのマクロ実装の1つです。インポートフックでモジュール内のマクロ機能を AST 変換することで動作します。MacroPy で提供されているマクロ機能は以下のデコレーターを使って実装されています。 @macros.expr @macros.block @macros.decorator @macros.expose_unhygienic これらの仕組みを使って自分でマクロを実装することもできます。それにより Python の意味論 (seman
2012-07-31 マクロの作者として今注目を浴びている Eugene Burmako さんと、マクロを使って言語統合されたデータベース接続行うライブラリ SLICK の作者である Jan Christopher Vogt さんが今年の Scala Days で行った発表のスライドを翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年4月18日 Eugene Burmako、Jan Christopher Vogt 著 2012年7月30日 e.e d3si9n 訳 Scala マクロ (頭をおかしくせずに) コンパイラを拡張する権限を開発者に与える! これはコンパイル時に以下を行う: 検査 処理 AST 変換 コード生成 ランタイムへの AST の配備 訳注: Scala マクロは 2.10 より導入されるコンパイル時にコードを置換
[Chicken-users] macro systems and chicken (long) を読んだ(via http://fixedpoint.jp/)。R6RS で Scheme 標準のマクロシステムは syntax-case と syntax-rules になったが Chicken では他の様々なマクロシステムも使うことができる。以下要約みたいなもの。 背景マクロシステムには完全に直交するふたつの側面がある。健全である(Hygienic)か健全でないか、と、高レベルであるか低レベルであるか、ということである。健全であるというのは自動的に識別子の衝突を回避する仕組みがあるかどいうかということであり、低レベルというのは、入力となるソースコードを Lisp の基本関数を使って直接操作することを指し、高レベルというのは syntax-rules のように専用のパターン言語を使って構造を
Scala is a multi-paradigm programming language designed to be concise and type-safe for easy and fast creation of component software, combining functional and object-oriented programming capabilities.
2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編となる本記事では、C言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に“修繕”する匠の技をレポートする。後編では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 Cで書かれたlsのソースコードの問題点 「Real/Macro Metaprogramming On
どちらがきっかけだったのか忘れてしまいましたが、wikipedia:メタプログラミング か wikipedia:抽象構文木 について調べているうちに マクロ が出てきました。 私の中では、マクロと聞くと、C 言語の、プリプロセッサ (コンパイルの前処理) でコードに置き換えるものを漠然とイメージします。改めてマクロって何だったっけ?何が嬉しいのだっけ?と考えてみると、基本的なことが分かっていないことに気付いたのでマクロについて調べ直してみました。 マクロとは wikipedia からマクロの定義を引用します。 A macro (short for "macroinstruction", from Greek μακρο- 'long') in computer science is a rule or pattern that specifies how a certain input s
マクロを便利に使う マクロは自分で作るもんなのか?Clojureでばりばり書いている人からすると愚問で、「Yes」としか言いようがない質問だろうけども、前に、とある場所でClojureについてのLTをしたときに、「マクロとかagentとかは実際に使うもんなんですかね?」と質問を受けたことがあります。 『フレームワークで使うテクニックなんかはフレームワークを「使う側」が知る必要はない』みたいな話の延長なのか、あるいは、そもそも現場での使いどころがイメージできない、ってことなのか、つかみ損ねましたが、実例があると分かりやすいのかなあと思いまして、実際に自分はどういう風に使っているのか、ここに書いておこうと思いました。 文法をつくれ!やっぱり、実際に使う一番多い用途はこれだとおもうんですよね。新しい文法を作る。 とはいえ、ほとんどのClojureのテキストブックには、マクロに対するClojure
基礎の仕組みがわからないとマクロを書こうにも解説ページの読解もままなりません。自分なりに理解したことをまとめます。私は全くの独学なので不正確な箇所が多々あるかもしれません。 LibreOfficeはOpenOffice.org APIを操作して動かす (H26.1.9追記。正確にはOpenOffice.org APIではなくLibreOffice 4.2 SDK API Referenceです。) APIとはApplication Programming Interface(アプリケーション プログラミング インタフェース)の略です。 インターフェースとはざっくりいえば"操作盤"のことです。 LibreOfficeの"操作盤"をOpenOffice.org APIといい、これを操作することによりLibreOfficeが動きます。 LibreOfficeはOpenOffice.orgから派生
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く