タグ

ブックマーク / hammm.blog21.fc2.com (5)

  • 空想具現化プログラミング [Lua] 暗黙の変数定義の闇

    管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 Luaでは、他のスクリプト言語でもよくあることですが、 a=10 というような代入によって暗黙にグローバル変数aが定義されます。これは「ちょっと動作を試す」ような場合には便利ですが、大きなプログラムの場合には問題を引き起こすことがあります。このことについて解決策などの考察とメモ。 Luaでローカル変数を作りたい場合は、関数(ブロック)内などに local a=10 とすれば、aはその行の後、ブロック内でのみ有効です。(ただしaがさらに外部から参照される場合は参照が残る限りガベコレされません。でもその話はここでは置いときます) さて、そこで問題になるのが、グローバル変数の安全性についてです。 多少大きい

  • 空想具現化プログラミング [Lua] SciTE 1.66:プログラミング用エディタ

    管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 2007/6/15 SciTEの設定はこちらにまとめました>SciTE@空想具現化プログラミング Luaの編集用に良いエディタはないかな・・・ということで、SciTEの最新版をダウンロードして、触ってみました。SciTEというのは、プログラミング用のテキストエディタで、さまざまなプログラミング言語の構文処理に優れています。 SciTE公式サイト http://www.scintilla.org/SciTE.html たぶんSciTEは「サイト」という読みなんだと思うのですが、そうすると上のURLは「サイト公式サイト」・・・げふんげふん 1年ほど前に触ってみた時は日語処理に難がある印象でしたが、今回触

  • 空想具現化プログラミング [Lua] SciTE1.66 使用感

    管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 SciTE(1.66)の使用感についてのレポート。 Luaスクリプトを編集した場合の使用感です。 日語用設定などは前回の記事をどうぞ。 良いところ ・タブでファイルを切り替えられる ・日語が特に問題なく使える(エディット・実行結果表示) ・構文解析はかなりしっかりしている。コメントが入り組んでいても間違いがない。 ・コマンドラインの実行結果が右側のペインに表示されるのは非常に便利。 ・ちゃんと設定すればファイルのコンパイルや実行などはメニューから可能 ・選択領域をタブキーでインデント、SHIFT+タブでアンインデントできるのは楽 ・動作は全体的に軽い 悪いところ ・検索で日語が使えない→1.67

  • 空想具現化プログラミング [Lua] Lua5.1のGC実行効率に関する考察

    管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 先日リリースされたLua5.1ですが、インクリメンタルGCが特徴のひとつとなっています。 GC(ガーベージコレクション)は、不要になったメモリを回収し、解放する機構のことですが、これが結構時間のかかる動作で、最近Luaを使った自作システムのプロファイルをAMD CodeAnalystで取ってみたら実行時間のほとんどがGCにかかっていた・・・ということもありました。基的には動作の早いLuaだけに、GCがある種のネックともなっています。 Lua5.1では、インクリメンタルGCによって、Lua5.0までは一括で全メモリに対して実行するしかなかったGCを、細切れに実行することができるようになりました。特にゲ

  • 空想具現化プログラミング [Lua] 明示的グローバル変数宣言モジュール

    管理人(はむ!)は最近スクリプト言語Lua(るぁ)に入れ込んでいます。と思ったら「ARカプセル」とかやってます。 ※iPhoneの方は右上の「PC」ボタンでPC用表示のほうが良いと思います。 先日のコードを少し修正しました。 とくちょう - 以下のようにグローバル変数を明示的に宣言できます。 global "myvar" 同時に値を入れる機能は削除しました。(空の関数でglobalを代替できなくなるため) - グローバル変数にnilを代入しても「存在」はそのままです。 (暗黙的に宣言されたグローバル変数は、use_explicit_global()時に自動的に「宣言済み」になります) - メインチャンク(=関数の外)での暗黙・明示をuse_explicit_global()の引数で選択できます。 (デフォルトは暗黙のほうです) - use_implicit_globals()でモジュールの

    izariuo440
    izariuo440 2006/03/04
    Luaでグローバル変数を明示的に宣言することで宣言していない変数へのアクセスをチェックできる。
  • 1