トップページtech
582コメント172KB

プログラミング言語 Lua

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Lua について語ろう。

http://www.lua.org/
0082デフォルトの名無しさんNGNG
IDはたまにかぶるよな。おかげでひどい目にあったよ
0083デフォルトの名無しさんNGNG
>各板のTOPに一定期間、お知らせみたいに貼ってたら?
テストの結果次第でこのまま運用が続いたら書くかもです。
0084デフォルトの名無しさんNGNG
■これまでの経緯

削除依頼を出したら
 →削除依頼板以外では受け付けませんよ。
  晒し?知りません

2chルールで削除依頼を出したら
 →2chの匿名は弱者保護です。内容の真実性の判断が出来ません。
  問題があれば裁判でもどうぞ。

状況が不利になってきたら
 →IP記録して問題は当事者どうしで、と言ってみるテスト

現在
 →全部にいれてみた。
0085デフォルトの名無しさんNGNG
誹謗中傷ってのも立場によって受け止め方も変わる
企業やある個人の内容について要望や改善点を指摘したつもりで書いたものが
誹謗と受け止められるようでは傲慢以外の何物でもない
ただの私怨であってもなんらかの事柄があっての書き込みだろうし
匿名だからこそ参加している者が多数いただろうし
魅力なくなるね
0086デフォルトの名無しさんNGNG
なにしとんねん!w
0087デフォルトの名無しさんNGNG
「あそこの病院は、イイ、悪いって」いうのは当然知っておくべき
情報でしょ?口コミだって立派な宣伝なんだから。あまりにも
現実とかけ離れた根拠のない発言はいけないと思うが
「あそこの病院で誤診された」とかっていうのはなんでいっちゃ
いけないの。おれも生まれたとき医者のミスで体の一部分を
無くしたんだが、うやむやになって結局手術台は自分持ちだった。
0088デフォルトの名無しさんNGNG
赤青ピンク白紺紫
全部混ざれば只の黒
フルート、オーボエ、ティンパニー、オルガン、ピアノ、チェロ、尺八、
チャルメラ、シチリキ、琴、ハープ、
一緒に鳴らせば只の雑音
0089デフォルトの名無しさんNGNG
幻の.kpドメインが見られるんでつか!!!
それは楽しみでつ。
0090デフォルトの名無しさんNGNG
内部告発されるようなことをするのが悪いと思うが。
0091デフォルトの名無しさんNGNG
だいぶ前にあった、2chのシステムを利用したオークションサイトができるという話はどうなったの?
0092デフォルトの名無しさんNGNG
http://www.maido3click.com/2ch/ranking.html
0093デフォルトの名無しさんNGNG
あれなんでスレストかかったの?
もう最後の方はさっぱり意味わかんなかったけど・・・
ってゆうかほろゆきが止めたのか?
0094デフォルトの名無しさんNGNG
は何なの?マドカですらちびりそうになった身としては怖くて開けない。
各板で見るけど。感想は「びびった」ばかり。
0095デフォルトの名無しさんNGNG
(´・ o ・`) ホー
0096デフォルトの名無しさんNGNG
は?おいらのこと?
おいらは2ちゃんの味方ですが?
コピペなんかした事ないし
0097デフォルトの名無しさんNGNG
神戸
0098デフォルトの名無しさんNGNG
日本の法>>>>>>>>>>(超えられない壁)>>>>>>>>>>>>>>>>2ちゃんのルール

今更の話題によく盛り上がってるな。年明け初2ちゃん組か?
0099デフォルトの名無しさんNGNG
自作PC板やハード板やDTM板がIEからのアクセスで見れません。
専用ブラウザでは見れます。対処お願いします。
0100山崎渉NGNG
(^^)
0101デフォルトの名無しさんNGNG
ID:1/uCJjOuは知的障害者
ID:ADTGAx9xはヒッキー

つーか、いつ寝てるんだ?>おまいら
0102デフォルトの名無しさんNGNG
age
0103デフォルトの名無しさんNGNG
この言語はオブジェクト指向言語ではないのか。
残念。

C言語onlyソースから呼び出して使うこともできないのか。
0104山崎渉NGNG
(^^)
0105デフォルトの名無しさんNGNG
The Year In Scripting Languages Lua/Perl/Python/Ruby/Tcl 2002
http://www.vendian.org/language_year/

Lua は激動の一年だったそうだ。
0106デフォルトの名無しさんNGNG
なんせ2chにスレが立ったからな
0107デフォルトの名無しさんNGNG
>> 103
できるよ
0108デフォルトの名無しさんNGNG
>>103
オブジェクト指向的使い方もできるよ。
luaのtableはかなーり柔軟。

http://lua-users.org/wiki/ClassesAndMethods
0109デフォルトの名無しさんNGNG
>>1
これかい?
http://homepage3.nifty.com/digikei/ten.html
0110山崎渉NGNG
(^^)
0111デフォルトの名無しさんNGNG
ほしゅ
0112 NGNG
最近、淋しいので…
>>103 C言語onlyソースから呼び出して使う...

system("lua");

さぶ〜
0113デフォルトの名無しさんNGNG
>>103 >>111
LUAのソースはC言語だし、組み込み用のヘッダファイルも全部C言語なのだがー
0114113NGNG
訂正。
gsub(>>113, ">>111",">>112")
0115デフォルトの名無しさんNGNG
ちらっと見るだけだといまいちそそられる感が無いんだけど
誰かどんな点が特徴として熱いのか熱く叫んで。
0116デフォルトの名無しさんNGNG
小さい。
0117Go LuaNGNG
あつい国ブラジルで生まれたんだYo-!!!
0118デフォルトの名無しさんNGNG
#include <stdio.h>
#include "lua.h"
#include "lualib.h"

int main(void){
 lua_State *L=lua_open(0);
 lua_strlibopen(L);
 lua_dostring(L, "a = 1*2*3*4");
 lua_dostring(L, "b = gsub('age sage', '(%w+)', '%1 %1')");
 lua_getglobal(L, "a");
 lua_getglobal(L, "b");
 printf("a = %f\n", lua_tonumber(L, -2));
 printf("b = %s\n", lua_tostring(L, -1));
 lua_close(L);
 return 0;
}
0119デフォルトの名無しさんNGNG
これmakeしないと使えない。。。
winでmakeする方法を教えてください。
0120デフォルトの名無しさんNGNG
makeでけた
0121デフォルトの名無しさんNGNG
luaユーザー募集age
0122デフォルトの名無しさんNGNG
あるところで、rubyのようでいてオブジェクト指向でない言語として
紹介されたんだが。。。

luaってどう読むの?「ルア」でいいの?

あと、流行ってますか?
0123デフォルトの名無しさんNGNG
かなり昔、Cマガで取り上げられたの見たっきりだな。
単純だという事以外には、特に利点も無さそうだ。
0124デフォルトの名無しさんNGNG
組み込み向け、サイズが相当小さい(100k以下)、ゆるいライセンス、が特徴かね。

Angband が使ってるね。
http://www.lua.org/uses.html
0125デフォルトの名無しさんNGNG
xwLuaあげ
0126デフォルトの名無しさん NGNG
(#゚Д゚)ルア!!
0127デフォルトの名無しさんNGNG
とりあえずここかな
http://lua-users.org/wiki/LuaAddons
0128デフォルトの名無しさんNGNG
Mailing list traffic 見れば結構盛り上がってるぞ。
http://www.lua.org/lua-l-stats.html
0129デフォルトの名無しさんNGNG
ゴッルア!でいいの?
0130デフォルトの名無しさんNGNG
lua は、オブジェクト指向的なプログラムも書ける。

http://www.iplab.is.tsukuba.ac.jp/protoku/lua/Lua.htm
0131デフォルトの名無しさんNGNG
ダウンロード&コンパイルしたけど。。。
こめんとが--というのが萎えた。。。
0132デフォルトの名無しさんNGNG
そういうな。' よりは良いぞ。
0133デフォルトの名無しさんNGNG
age
0134デフォルトの名無しさんNGNG
これ正規表現とか無いの?
つーか何に使うの?
0135デフォルトの名無しさんNGNG
Ruby-Lua
http://ruby-lua.unolotiene.com/
0136デフォルトの名無しさんNGNG
>var ::= `Name'
stdin:1:<name> expected near `:'

これの意味は何ですか? エラーぽいんですけど。。
0137デフォルトの名無しさんNGNG
BNF 記法。言語の文法を表したもの。
0138デフォルトの名無しさんNGNG
あと、==の反対が~=というのも萎えた。。。
0139デフォルトの名無しさんNGNG
これってこのソースを使って何かあたらしいスクリプト言語を
作るのに良さそう(w
0140デフォルトの名無しさんNGNG
うんこ
0141デフォルトの名無しさんNGNG
素晴らしい言語だが、細部でいままでの言語と趣の違いを感じる。
これがラテンなんだろうか?
0142デフォルトの名無しさんNGNG
有名どころだと tcl も結構妙ちきちんだぞ。
0143デフォルトの名無しさんNGNG
テーブルって微妙
0144デフォルトの名無しさんNGNG
>>143

テーブルは、かなり便利と感じたが。。。
0145デフォルトの名無しさんNGNG
テーブルっていうのは、COBOL の配列の事か?
0146デフォルトの名無しさんNGNG
コボルは知らんが、多分普通でいうところの配列
ただし、連想配列なのでAWKの配列のイメージ

このあたりはrubyよりかなりいい!
0147デフォルトの名無しさんNGNG
コメントって - なの?

それとも -- なの?
0148デフォルトの名無しさんNGNG
-- >147
0149デフォルトの名無しさんNGNG
>>148

ありがとう。

ところで、luaつかってますか???
0150デフォルトの名無しさんNGNG
使い方が分かりません
0151デフォルトの名無しさんNGNG
>>150
どういうこと?
マニュアルなら日本語の奴もある、
単に用途がみつからんということ???
0152デフォルトの名無しさんNGNG
なんかこれといって、特徴とか、売りとかがない気がする。
luaだからこんなことができる、とかあるのかな。

感想。
0)全ての文(?)の終端がendなのは萎える。
 rubyもそうだけど、これ、実はすごく読みにくい。
 結局、文の対応がインデントでしかわからない。
1)式の終端記号がない。危険な香りがする。
2)テーブル{}に関係する構文と操作全般がわかりにくい。
3スクリプト用途にしては、)returnとかfunctionとか長い名前が気になる。
 return不用、function → fn or lambda、 local → letとか。まあ修正すりゃいいけど。
4)elseifかよ。
5)local変数群への多重代入がややわかりにくい。
6)でも多値を返せるのは便利。
7)レジストリって何?
8)タグの有効な使い方ってなんだろう?
9)テーブルは慣れれば使いやすいかも。
0153デフォルトの名無しさんNGNG
>>152
> 7)レジストリって何?

組み込み/拡張用でわ

> 8)タグの有効な使い方ってなんだろう?

タグメソッドでわ

VectorTag=newtag()
function Vector(a,...) do v={}; settag(v,VectorTag); v[1]=a; for i=1,getn(arg) do v[i+1]=arg[i] end; return v; end; end
function dot_product(v, u) do s=0; for i=1,min(getn(v),getn(u)) do s=s + v[i]*u[i] end; return s; end; end
settagmethod(VectorTag, "mul", dot_product)

print(dot_product({1,2}, {3,4}))
print(Vector(1,2)*Vector(3,4))
0154デフォルトの名無しさんNGNG
>>152

確かにendって使いにくいね。
読みやすさが有ると言う意見もあるが、ちょっこりif文なんかいれて
end忘れたひにゃ。。。(以下略)

あと、キーワードが長過ぎるのも同感

多値リターンはすぐれものか?
0155デフォルトの名無しさんNGNG
ライセンスがMITなんだけどこれって本当にgpl互換なんだろうか?
0156デフォルトの名無しさんNGNG
>>155
MIT は修正 BSD 相当だから互換じゃないのか?
0157ヽ(´ー`)ノNGNG
>>154
end 使いにくいよね。Lua も Python もかじってみたいんだけど、俺的にネック。
0158デフォルトの名無しさんNGNG
>157
Python?
0159デフォルトの名無しさんNGNG
Pythonはendじゃないよね
0160デフォルトの名無しさんNGNG
rubyの間違い?
0161ヽ(´ー`)ノNGNG
あ、ゴメン、Ruby と間違えた。Python はインデントだっけ?
始めに触ったのが C だからブレースが無い言語は苦手…。
0162デフォルトの名無しさんNGNG
でも、そんなこと気にしてたらもったいないと思う
すぐに慣れるし、慣れたらそんなことどうでも良くなるよ
0163デフォルトの名無しさんNGNG
end を使うのはブロックの開始を省略できるかどうかによるんじゃないかな。
まあそれはいい。しかし
function f(x)
a = x+1
return a
end
print(f(1))
これのワンライナが
lua -e 'function f(x) do a = x+1; return a end end; print(f(1))'
になるのには少々驚いた。
0164デフォルトの名無しさんNGNG
おお、こういう書き方ができるのか。upvalue はなかなか画期的な文法かも。

plus = function(a) return function(b) return %a+b end end
print(plus(2)(3)) -- 5
0165デフォルトの名無しさんNGNG
>>164
それ高階関数だね。
ML風に書くと
val plus=fn a=>fn b=>a+b; print(plus 2 3);
テーブルの役割からすると意味的にはLISPと似てる。
(((lambda(a)(lambda(b)(+ a b)))2)3) ;;5
0166デフォルトの名無しさんNGNG
>165
むしろ upvalue を使ったスコープの制御が面白いかなと。

それと plus(x)(y) と書けるのは直観的だなと。
ruby だと変数名の後にカッコでは引数を渡せないから [] を使う必要がある:
plus = lambda{|a|lambda{|b|a+b}}
p plus[2][3] # 5
python ではどう書くのだろう。
plus = lambda a: lambda b: a+b
では駄目だし。
この点S式は比べにくい。
0167デフォルトの名無しさんNGNG
漏れ的に一番驚いたのは、複数戻り値が返せるという点

2番目は、そのソースとバイナリの大きさかな?
0168デフォルトの名無しさんNGNG
小さいのは builtin が少ないからだろね。おかげで速いのは良きかな良きかな。

多値や多重代入は python でも ruby でもできるよね。
% lua -e 'function f(x) return x*2,x*3 end; a,b = f(3); print(b,a)'
9 6
% python -c '
def f(x): return x*2,x*3
a,b = f(3)
print b,a'
9 6
% ruby -e 'def f(x) return x*2,x*3 end; a,b = f(3); p b,a'
9
6
0169ヽ(´ー`)ノNGNG
>>162
そうだね。とりあえず、Lua と Ruby を勉強してみるよ。ありがとう。

>>168
む〜、便利だな。Perl の list($a,$b) = f(3) とは違って、配列と同じ扱いじゃないの?

// 今ちょっとコンパイラが(゚Д゚)マズ-な事になってて Lua を入れれないのです。
0170デフォルトの名無しさんNGNG
>>169
lua の場合は一つの何かを返すわけではないので common lisp の values に近いみたい
しかしこう↓書けるのでさらにイカす
% lua -e '
function f(x,y) return x+1,y+10 end
print(f(f(0,0)))'
2 20

python と ruby は値を引数リストに展開するために f(*f(1,2)) と書く必要がある
多値といっても ruby は Array を、python は tuple を返すから
0171デフォルトの名無しさんNGNG
perl -e "sub f{(1+shift,10+shift)} $,=' '; print f(f(0,0))"
2 20
0172デフォルトの名無しさんNGNG
ルアってユーザいたんだ(w
0173デフォルトの名無しさんNGNG
luaってオブジェクト指向ですか?
0174デフォルトの名無しさんNGNG
ユーザっていうか、試用してる。
しかしendがウザイね。
return省いて多値返すときだけvaluesにしたらいいのに。
fun f(x,y) x+1,y+10; //カンマは演算子。y+10が関数の値
fun f(x,y) values x+1,y+10; //カンマはvaluesの区切り
0175デフォルトの名無しさんNGNG
>>173
どっちかっていうと、LISPみたいな関数型だな。
テーブルのタグ付けでそれっぽい事はできそうだが。
0176デフォルトの名無しさんNGNG
>>175
Lispみたいなというのはちょとちがうのでは?
0177デフォルトの名無しさんNGNG
>>176
簡単に言えば、
リストをテーブル(配列)にして、括弧無くしたLISPモドキ→Lua
でしょ
0178デフォルトの名無しさんNGNG
lispっぽいのは
・関数と変数に型がない
・call by value
・lambda 相当の function
・無名関数
くらいでは。eval がない点は大きく違う。
0179デフォルトの名無しさんNGNG
lispといえど、関数のeval使うことなんてほとんどない。
repl改造する時ぐらいじゃないか。
それに、lua自身もeval入れようと思えば出来るだろうし。
0180デフォルトの名無しさんNGNG
むしろlispとの大きな違いは演算子と、区間を限定する構文が
使える事だろう。
lispは括弧を閉じ忘れるだけで、エラー個所の特定が難しくなる。
0181デフォルトの名無しさんNGNG
eval に代表させたけど反射性は言語の大きな特徴だと思うよ
0182173NGNG
いろいろ情報ありがとう>>all

私も触ってみようと思いました。
ところで、最近endで区切るのが流行ってる(?)ような感じですが、
これってメリットあるのでしょうか?

(好みは別として)

なんか、素人丸出しで恐縮ですが、{}の方が閉じ忘れをすぐに見付
けることができるっぽいので(例:vi の % キー)良いような気もし
ています。
■ このスレッドは過去ログ倉庫に格納されています