レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
ヒッキープログラミングスレ
-
プログラミングの話題のスレ
質問・相談
初心者からプロまで
プログラミングに関することなら何でもOK
-
>>877
javascriptに変換しなくても出来るのかすごいな
俺が想像してたのはhaxeだけどこれなら変換する必要ないな
-
ライフゲームといえば何年か前にヒキ板のプログラミングスレでアップしたことがあったなあ・・・
-
ファイル探してみたら2008年の10月だった・・・もう5年も前だったのか・・・
-
リファレンスマニュアル書いてたら眠たくなってきた
>>879
出来れば見てみたい
というかプログラミング歴長いのにライフゲーム作ろうと思うのか
-
歴は長くてもレベルは低いと言ったろうが!(藁)
-
うpたときのロダのリンクお気に入りに入れてたけど、さすがに5年も前じゃリンク切れか・・・
-
ほいほい、過去にうpったの再ageよ
http://www1.axfc.net/uploader/so/2938897.zip?key=hikky
-
javascript製、このファイルの中でzipファイルになってるのが過去にうpしたやつ
-
何というか無難に動くね
特にこれと言って言うこと無いから困るけど
-
だから、歴は長くてもレベルは低(ry
-
まったくw俺がレベル低いという話を全く信用してなかったのかw
小4からやってて20年にはなるが密度が濃くなったのは大学時代後期からで
それでも2〜3か月に数日思いついたことを試すくらいだと言うたのに
-
でもvisual basicでシューティングゲーム作れてるからね
-
シューティングだと・・・!?まさか純lispのページ以外も見ちゃったの・・・/(^o^)\
-
つかあのレベルのものはVB6のポトペタではそう難しくないと、しかも自機以外は全部手抜きという(爆)
-
いや、普通に見られるだろ・・・
-
VB6はシングルスレッド固定だし、JavaScriptほどではないが変数もかなり自由に色色格納できるし
GUIはポトペタで作れるし、Windowsアプリのやっかいなメッセージ処理いらんし
すごく簡単だよ
-
windows持ってないしMSに捨てられた言語はノーサンキュー
まあちょっとレトロな感じが魅力的だけど
-
VB6はエクセルのVBAやVBScriptと元が同じ系列だからね、エクセルのマクロ作ってる人なんてごまんといるし、難しい言語ではない
そもそも BASIC言語 のスタンス自体が初心者向きなんじゃなかったっけか・・・
まぁだからあのHPで公開してる程度はすごくも何ともないんよ・・・
-
>>874
こゆの作ってしまうあなたのほうが何倍もすごい
-
VB以外でGUIアプリを作ってみようと思ったけど色々考えなきゃならないことが極端に増えるからね・・・CとかJavaとか、煩雑すぎる・・・
unix系のGUIは入門書のサンプルコードを走らせるくらいしかしたことないけど、あれも分かりづらかったなあ(かなり古いやり方が載ってる本だったけどね)
-
うpしたもののさっきはブラウザで動かしてみたしかしてなかったけど
ソースコードのほう見たらイミフすぎてワロタ
-
どういう原理で動いてんのか自分ですら分からんw
for文多いし謎の処理やたら多いし
-
パっと見としては無駄が多そうな印象だったが、今ライフゲームを作ろうと思っても仕組みを覚えてないからソラでは作れないなあ・・・
-
こういうの悪い設計というのかなあ、可読性ゼロすぎだわ
-
というか似たようなファイルがごちゃごちゃしててどれがどれだかわからんよ
-
当時直しながら何度かageたから
どれがどれだったか俺も分からんからまとめてageた
-
純lispの論文見てて気になったんだけど
((label F (lambda (X) X)) (quote ABC))
こういう感じのって関数が実行されるの?
もしそうなら
((quote CONS) (quote A) (quote (B C))) とかも関数が実行されたりするの?
これで実行するようには俺の純LISPは作られてないからさ・・・
-
それともlabel (define)の戻り値は設定した値が戻り値になったりするの?
-
今んとこ俺の実装だと(label A (quote B))の戻り値はAになるんだけど、普通のlispがこれの戻り値がBになるのなら、作り直さなきゃならんのよね・・・
-
あ、普通のlispだとlabelじゃなくてdefineなんだっけか、
-
うーむ、こればっかはIBM704ってマシンの仕様ってことになるから誰にも分からんか・・・
-
リストの先頭は評価せず
特別式関数マクロ名(アトム)かlambdaのリストかlambdaのリストを設定してるlabelのリストなら関数として認識するってことか?
うーむ、仕様がよく分からん、やはり何らかの実装を試す必要があるのか・・・
-
暑いし、また明日考えるとするか、寝よう、熱帯夜すぎる
-
(define var value)でvarを返す仕様かvalueを返す仕様か決めるだけじゃないの
((label F (lambda (X) X)) (quote ABC))
このlabelがvalueを返す仕様ならFにlambdaをセットしてからvalueを返してるんじゃないかな
-
そこは仕様次第なのか、わかった、ありがとう
-
LISPについてググってたらガベージコレクションってLISPが発端だったんだな、驚いたわ
-
エラー検出時のメッセージどうしよう
-
どうしようというのは日本語文章にするか英語文章にするかみたいな悩み?
-
ちょっとここにメモらせてね
Lisp ・ oraccha/omicron Wiki ・ GitHub
https://github.com/oraccha/omicron/wiki/Lisp
-
ちなみの俺の純LISPのエラーメッセージは今でこそ英語メッセージだけど
でたらめ英語だからあとで全部を日本語に直していく予定
-
俺が困ってんのは表示するメッセージの話じゃなくて
エラー検出時にピンポイントで誤ってるところがわかるように表示する方法なんだよ
-
今初めてたどり着いたけどプログラミング言語の作り方を簡単に紹介してるサイトあったんだな・・・
プログラム言語を作る! - プログラム言語を作る!---目次:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060922/248698/
まぁITProに登録しないと肝心な記事が全く読めんのだが・・・
先日CodeZineにも登録したし、ここにも登録しといたほうがいいかな・・・
-
>>918
それはすごく難しそうだね・・・
-
BorlandのC++コンパイラなんかはデバッグ用のファイル(tds)を作って
コンパイル中にエラーがあったらそのtdsファイルから照会してソースコードの問題の箇所を特定するらしいよ
-
あれ?コンパイル中のエラーだったけかな?実行時のエラーだったけかな?どっちだったかよく覚えてないや、
-
とくにかくソースコード上の位置と変換後の機械語コード位置とを対応づける(おそらく)ようなファイルを作っててそこからソースコードの問題の位置を特定するらしい
-
コンパイル後の機械語コードにデバッグ情報をそのまま埋め込むやつもあった気がしたな・・・うーんBorlandのも埋め込んだデバグ情報とtdsファイルの情報とを統合して問題個所を特定してんのかな・・・?
-
今作ってるのはインタプリタだからなんか違う気がするなあ
でもS式オブジェクトに行番号を記憶させておくとか良さそう
-
listにだけ>>925をやってみたらうまく動いた
-
やったじゃん
-
wikipediaで静的スコープ、動的スコープの項を見てたら古典LISPは動的スコープらしいね・・・純lispを静的スコープで作っちゃったわ・・・
-
IBM704が動的か静的かは不明だが、古いマシンだしメモリ食いそうな静的ではないだろうね・・・まぁ動的・静的を切り替える仕組みとかを入れるのは今回の設計からはそんな難しくは無いと思うんだけどね
-
俺も静的スコープでやってるけど動的スコープの方がなんかかっこいいね
dynamic scopeという響きがいい
まあ機能的にはlexical scopeがいいんだけど
-
>>929
静的スコープが出来たのはschemeかららしいからその前はもちろん動的スコープだと思うの
-
>>931
その情報はありがたい
じゃあ動的スコープに直すわ
-
うーん、よく考えたら動的スコープに直すのは大変そうだな・・・
lambdaの仮引数を動的スコープの変数として扱うか静的スコープの変数として処理するか
純lispの論文のlambdaの再現の仕方あたりがヒントだろうか
-
そういえば純lispと言う表現は日本語wikipediaしかしてないが、いったい誰がこんなページ作ったんだろうか
-
純lispに拘るなら静的スコープ消せば?
-
この純lispを作ってるlisp8.jsをベースに数字や文字列を扱える簡易なレベルのlispも作ってみたいから
静的スコープの実現方法的にも単純に(lambdaの仮引数も含めて)全て動的スコープに参照させるだけなら変えるのは難しくないんだけど
-
つまり、拡張性を残して作ってあるので静的スコープの仕組み自体は消さないつもり
(純lispとしては要らない機能であり使わない機能を積んでることなってイミフに重たいソースになるけどね・・・)
-
実際に作ったlispでプログラミングしてるとちょくちょくバグが出てきてやな感じ
>>937
両方使おうとしてるのか
じゃあdefvarを使えるようにしないとダメだな
-
既存というか現存の実装系はどれも使ったことないからdefvarをググった
Common Lisp準拠ならグローバル変数を設定するマクロか
たしかにそういうのあると内側からのスコープからグローバル変数の内容の変更ができて便利そうだね
-
というかそれがないと動的スコープ使えないんじゃ
俺もあまり良くわかってないと思うけど
-
うーん、よくわからん
-
Emacs Lispのreferenceマニュアルも見たけど
これも挙動がちょっと違うようだね
細かい動作は実装系が好きに作ればいいって感じなのかな
-
emacs lispという方言でcommon lispと違うからじゃない?
-
たぶんそうだと思う
-
一般的なlispのスコープ形成というかブロック形成がどのように決まるのか分からんから
ひとまず評価すべきリストが来るたびに新しいスコープを持つブロックとしてリストを処理してたけど
スコープを形成する関数や特別式やマクロとスコープを形成しない関数や特別式やマクロがあるのか
ううむ・・・
-
どうもletというやつを使う場合に新しいスコープを形成するという感じなのか
-
(let ((var value) ...) body ...) は ((lambda (var ...) body ...) value ...)と同じ意味
だからletの中は新しくスコープが作られる
-
説明文でちらちら見かけるバインディングというやつかな
となると現在の作りではちょっと一般的なlispとスコープルールが異なる感じか
-
>>947
なるほどね、letの場合はlambdaで作られた関数内にスコープが形成されると同義なのね
-
ううーむ、どうもやっぱり俺が作った純lispの静的スコープの実装の仕方が間違ってるようだな・・・
開き括弧でスコープを作っちゃダメなんだな
schemeもcommon lispもemacs lispもスコープを作る・バインディング変数を形成する特殊な関数等としてlambdaやletやdoで作られるといことか
なるほどねえ
-
やっぱ何らかの実際の実装系を使ってみないとアカンのかもな、想像だけでlispの基本システムを作るのは無理くさいね・・・
-
それは俺が10日ほど前に指摘したと思う
-
マジか、それはすまなかった、もう色々とあって完全に忘れてたわ・・・
-
歳は取りたくないねえ・・・すぐにいろんなことを忘れてしまう・・
-
忘れるよりも早く
-
今Wikipediaの静的スコープと動的スコープのページを読み直したら、動的スコープと静的スコープの認識を間違ってることにさらに気づいた・・・
動的スコープ=全部グローバルスコープ だと勘違いしてたわ・・・うーむ、どんどんハードルが上がっていくな・・・
-
これは純lisp内に作った変数管理処理を丸ごと考え直さなければなさそうだな・・・動的スコープにするにしても静的スコープにするにしても・・・
-
今俺が作った純lispは動的スコープにも静的スコープにもどっちにもなってない謎スコープシステムだ・・・
-
しかしこうしたシンプルな構造と処理のみ実装の言語をひとつでも作りあげれば今後別言語作るときにも活かせそうだし踏ん張りどころといったとこか
-
つくづく思う、俺ってバカだなぁ・・・って
-
純lisp制作にあたってスコープに関する過ちのまとめ
・新しいスコープ突入箇所 −> × 評価すべきリストの開き括弧、 ○ lambdaやletやdoといったローカルバインディング(?)とかいうのをする箇所
・静的スコープ −> × 現段階のは動的スコープ的な挙動もしてる(呼び出し元のスコープも参照してる) 、 ○ 静的スコープなら呼び出し元のスコープを参照してはいけない、宣言時のみのスコープを参照する
・動的スコープ −> × 全部グローバルスコープ、 ○ 呼び出し元のスコープを参照できるというだけであって、グローバルスコープの意味じゃない
・純LISPのスコープ −> × 静的スコープで実装しようとした(実際は静的スコープにすらなってないが)、 ○ 古典LISPに分類されるので動的スコープで実装すべき
-
動的スコープ・静的スコープ
共通 ネストの外側の変数を参照できる
静的スコープ メソッド呼び出しなどは異なるブロックへ移動したことになり、メソッド呼び出し側のブロックから参照できる変数をメソッド側のブロックからは参照できない
動的スコープ メソッド呼び出しなどの異なるブロックへの移動であっても、一つ内側のネストであるかのようにメソッド呼び出しが側のブロックから参照できる変数もメッソドのブロックから参照できる
-
うーむ、日本語にまとめるのは難しい、考えをまとめるはずのメモのレスが余計混乱をまねきそうだ・・・・うううう
-
まぁいいや、とくにかくどう作り直せばいいのかだいたいの見当はついた気がする、明日くらいに修正にとりかかる
-
あと直さなきゃならんこととしたら
スコープ・ブロック・ネスト、この3つの言葉の意味をちゃんと理解することかなあ・・・・これもテキトー雰囲気で使ってるから正しい意味の使い方してない可能性が高い・・・
うーむ・・・
-
ひとまずここにメモっておく
スコープ - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97
ブロック (プログラミング) - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
ネスティング - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0
これも明日読むことにする、今日はもうプログラミングしない
-
不特定多数のボランティアが記述するWikipediaの内容をそのまま信じるのも何だがな
-
書籍にしろインターネットサイトにしろラジオにしろテレビにしろ専門家の講義にしろ
丸ごと鵜呑みにして信じるのはよくない
-
新聞だけ信じればいいのさ
-
とりあえず形になったから晒してみる
よかったら試してみてほしい
ソースはつけてないけどごめんね
ttp://www1.axfc.net/uploader/so/2941007
-
java -jar Lisp.jar
で起動してみたはいいけど
これってどうやって終了されるの?
-
EOFで終了するよ
-
そうなのか、loadでサンプル読み込もうとしたらなんか動いて無い気がして強制終了させちゃったわ
-
lifegame動いたよー
あとfib.lispってやつは
先日いってた性能テストするみたいなやつなの?
パッと見はフリーズしてるようにしか見えん
-
タスクマネージャ見たらめいっぱいCPU使ってるわ
-
fib.lispとtarai.lispはベンチマーク用だから数十秒~数分かかる負担にしてある
いうの忘れててごめんね
-
ベンチマークなら所要時間の結果を表示するとかしたほうがよかったんじゃないの
テキストエディタで開いてみるとそれっぽいコード書かれてないし
|
|
掲示板管理者へ連絡
無料レンタル掲示板