レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
ヒッキープログラミングスレ
-
プログラミングの話題のスレ
質問・相談
初心者からプロまで
プログラミングに関することなら何でもOK
-
>>555
検証ありがとう
正しいなら安心して取り組めるわ
-
>>541をちょろちょろっと読んでるうちに感じたこととしては
今作っている純LISPは本当は設計からやり直さないとダメぽいな
うまく純LISPとして動作すればよいのだが・・・このペースだと一応の完成にあと1週間はかかりそう
-
ここ数日すっかり純LISPとmciSendStringのMP3プレーヤーの制作とネット麻雀三昧で小遣いサイトからのメールがたんまり溜まってしまったよ・・・今はそちらを先に処理したい
-
lambdaをどうやって作るかはだいたいイメージすることはできたけど
lambdaに関係ない他の問題が発生した
eqとcondだ,この2つについてもう一度調べなおす必要がでてきた・・・
はぁ・・・lispの一般的な仕様をよく調べずとりかかったのがマズったわ
-
lambdaは思ってたほど難しくなさそうとイメージできたからいいけど
無知は思考だけではどうにもならん、また調べる作業か・・・1日にlispに割ける時間はせいぜい多くて3〜4時間だってのに・・・
-
Common LispのEQの仕様読むの疲れた・・・英語能力が中卒レベルなのがアダになった
Google翻訳とヤフー辞書とスペースアルクを駆使してなんとかEQの仕様を理解した
同じメモリを参照してるならTrueにしろってことか、わかってきたぞ
-
英語資料にこだわる必要はあるのか
俺は日本語資料だけで済ませてるけど
-
condは実装によって仕様が結構異なるようだな・・・
純lispの論文のはCommon LispともSchemeとも仕様が違うようだな
前者は条件式のみの定義の場合、および全条件が偽の場合は戻り値は未定義で
後者らは条件式ののみの定義の場合は条件式の結果を、全条件が偽の場合はCommon LispがNILでSchemeが未定義かな
Common Lispは最後は(T nil)を指定するのが望ましくてSchemeはelse節といのがある、ということか
まぁひとまず純lisp論文のほう準拠で作ってくことにしますかね・・・
論文のほうはまた別のlispのようだね、他ではdefineという名前のがlabelとう名前になってるし
-
>>562
俺の検索能力の無さが原因、仕方なしに英語資料を読んでる、まぁ英語力もアップするだろうし、プログラミングは英語文献が大半だし、我慢のしどころってとこかな・・・
-
純lispの論文で使われているlispはIBM 704というマシンに搭載されてたlispのようだな、IBM 704は約60年前のマシンか・・・すごいなlispの歴史は
-
ああ、IBM 704自体は60年前のマシンだがlispが実装されたのはもう少し後のことなのか、んでもってlispが最初に乗せられたマシンなのか、すごいな
-
今はやりの大衆言語は何十年も前にすでにLispが通った道っていうのがすごいね
しかも型指定してコンパイルすれば速度がC並になるししなくてもそこら辺の言語よりは十分速い
構文はリストとアトムで簡潔、マクロを使えば無限に構文を定義できる、どんな時代にも対応できる全ての言語の頂点の最強の言語
しかし人気がない
-
ひとまず
EQはCommon Lispの仕様に則って同一メモリ参照ならTrue、それ以外はFalse (っていうか純LISPの論文からじゃEQの仕様が分からん)
CONDは純LISP論文のIBM 704の仕様に則って作ることにした
IBM704のCONDは条件式と対応する戻り値式が1対1だけど
Common LispとかSchemeは戻り値式は好きなだけ並べていいという感じだし煩雑になりそうだからやめる
-
っていうかCommon LispとかSchemeのCONDはマクロだしね・・・IBM704のCONDはマクロかどうかは知らんが他の関数と特別式では再現できないからたぶん特別式だと思う
-
>>567
人気ないのは構文の可読性が悪いってとこだろうな
-
ひとまず、時間的に任されてる家事のほうをやらねばならない、つかlispに時間かけすぎたわ・・・今日のlisp時間は終わりだ、はぁ・・・作業が遅々として進まん、ヒキニートだのに時間が足りんとは
-
Common LispとかSchemeのCONDがマクロなのはCONDの条件処理が効率や使い勝手が悪いってことなんだろうな、
-
効率や使い勝手のいい条件処理の特別式があればCONDは必要ないが、他のlispと合わせるために一応CONDを用意したってところか、しかもマクロ再現という
-
というかif定義した後マクロでcond定義したほうが楽だからね
-
つまりCONDは要らない子って感じか
-
いや、そんなことはない
(if pred1 expr1
(if pred2 expr2
...
と字下げが深くなるからcondのほうがいい時のほうが多い気がする
-
なるほど、そういう需要はあるのかCONDは要る子だったか
-
純LISPの論文よく読んだらEQの定義がちゃんと書いてあった、同じシンボルならT、それ以外はFと、なのでこっち採用する。
-
html5 でゲームを作るなら
enchant.js これが良いらしいね
ただツールをhmtl5で作るとなるとよく解からん
-
html5でツールか
グラフ描いたりとかかな
-
そういやhtml5ってスマホがメインの技術か
-
firefox OS 積んだスマホがKDDIから出る予定らしい
そこで何かが変わるかも
-
どんどん新しい技術が投入されてくんだな・・・おいつけそうにない
-
な、なんとか純LISPが一応の完成をした・・・
簡単なテスト処理として
(label subst (lambda (x y z) (cond ((atom z) (cond ((eq y z) x) ((quote t) z))) ((quote t) (cons (subst x y (car z)) (subst x y (cdr z)))))))
がちゃんと動いた・・・
これの動作のために一番手こずったバグがcondを処理するメソッド内で変数宣言の忘れでおかしな動作になってたw
-
あとは
使いやすい形態にまとめるのと
もうちっと見やすいコードに整形してくのと
くらいすれば完成としていいかな
-
まぁちゃんと純LISPとして正常動作してるかevalを書いてチューリング完全性再現してるか試すというのもあるけど
論文どおりにeval書いてけば難しくはないだろうけど、かなり広い範囲の英語を読まねばならん・・・
自分でeval処理を考えて再現するってのも面白いだろうけど
-
今回作ったlisp3.jsをうまくまとめたら
今度はちゃんとしたリスト構造のlispを作ってみようかな(そのほうがコンピュータぽいし)
今回のは二分木ぽいツリー構造で処理しちゃってるし
リスト構造だとマシン語みたいにプログラムカウンタとかをスタックに上げるとかそういう処理が必要そうだな
インタプリッタぽく字句解析しながらその場で処理するとかがいいかな
-
今回は2分木ぽい構造にしちゃったことでやや複雑化した感がぬぐえない
昔のコンピュータに乗るくらいだからすごく単調単純な構造で作れるはずなんだよね
すなわち今回俺が作り上げたlispたんはすごく無駄の多いバカlispということで・・・
-
tarai関数でベンチマークしよう
-
tarai関数ね、純lisp用のtarai関数を考えるのが大変そう・・・
-
結構簡単だと思うけど
(label tarai (x y z)
(cond ((<= x y) y)
(t (tarai (- x 1) y z)
(tarai (- y 1) z x)
(tarai (- z 1) x y))))
こんな感じじゃないの?
-
うわミスった
(label tarai (x y z)
(cond ((<= x y) y)
(t (tarai (tarai (- x 1) y z)
(tarai (- y 1) z x)
(tarai (- z 1) x y)))))
こうか
-
そういえば不等式実装してないのか
それなら難しいかも
-
不等式どころか数値とかいう概念がないからね、種別がシンボルとリストだけだし
-
数値の概念がないので足し算引き算もない
純LISPはチューリング完全をテストするための必要最小限しかないから
-
そう言えばそうか
-
強引に足し算を作ってみた
(label add1 (lambda (x) (cond ((atom x) (cond ((eq x '0) '1) ((eq x '1) '2) ((eq x '2) '3) ((eq x '3) '4) ((eq x '4) '6) ((eq x '5) '6) ((eq x '6) '7) ((eq x '7) '8) ((eq x '8) '9) ((eq x '9) '(0 . 1)) ('T 'nil))) ('T (cons (cond ((atom (add1 (car x))) (add1 (car x))) ('T (car (add1 (car x))))) (cond ((atom (add1 (car x))) (cdr x)) ('T (add1 (cdr x)))))))))
(add1 (add1 (add1 '(7 9 . 9))))
-
一箇所間違えてたw
((eq x '4) '6) → ((eq x '4) '5)
-
足し算といっても1を加算するだけだけどw
-
リスト構造と言う考え方を少ししてみたら
>>518氏が問題視してたとこがやっとわかった
ようはC言語の文字列みたいに処理の最後にnull(nil)が来ることで処理を打ち切るのだとしたら
(A . B)みたいなリストはやたらと扱いにくい、つかリストの終わりが発見できないのな
IBM704ってのはどう解決してたんだろうか
-
ああ、1文字ずつ処理を続ければnilじゃなく閉じ括弧で判断すればいいのかな、ドットの有無で何らかのフラグとか立てておけばよさそうだし
俺がやったみたいに全部読み込んで変換してじゃ昔のマシンじゃメモリ不足だろうしね
-
前も行ったけど字句解析と構文解析を混ぜて考えないほうがいいよ
先頭のトークンを取り出してそれが括弧かアトムかで処理をしていくのがいいと思う
他の人の実装見てもそんな感じだったし
-
なるほど、括弧の情報を残してリスト化するのか、そういう発想に至らなかったわ
他の人の実装みたりとか勉強熱心だね、
-
ひとまず純lisp作りにとりかかっておきながら
パーサとか字句解析とか構文解析などこれらの単語の意味が分からないので
ググってくるは
今回みたいな一連のコードからプログラム起こす処理なんて初めてやったことだし
無知すぎてアドバイスすら理解してない自分が情けない(´・ω・`)
-
自分で使っておきながらSyntax Errorの意味すら知らんかったりする
N88-BASICで遊んでた頃よく出てきたエラーメッセージだから何となく使ってみただけ
-
おけおけ、分かった、パーサって構文解析って意味なのか、字句解析のほうだと勘違いしてた、
字句解析はスキャナやトークナイザって言うのね、
>>482で書いたhoge関数はパーサじゃなくてスキャナやトークナイザってやつのほうだったよ
日本語も外来語も難しす
-
> 自分で使っておきながらSyntax Errorの意味すら知らんかったりする
直訳すればすぐにわかるだろww
というかN88-BASICの頃からプログラミングやってんのか大先輩だな
-
構文解析のほうは>>484で書いたhoge2関数のほうね
つまり一応はアドバイス通りに字句解析と構文解析は分離してたは
よかったよかった
-
>>607
先日書いた通り英語力が壊滅的なので語彙力がない
まぁ英和辞書使えば分かるだろうけど面倒だったし、特に広く公開するフリーソフトにするわけでもないし
そこらへんはテキトーでいいかなと
-
ちなみにN88-BASICが使えるパソコンが家にあっただけで
N88-BASIC全盛期にやってたわけじゃないよw
N88-BASICで遊んでたころはWindows98とかWindowsMEとかWindows2000が出てた頃だから
過去人や老人ってわけじゃないよw
-
まぁまだあの時期はベーマガにN88BASICのプログラム投稿とかまだまだあったけどほとんどVBに成り代わっていったなあ
-
それでも10年くらいやり始めた年が違うよ
3年前にハローワールドで喜んでたくらいだし
-
当時は型の古い廃棄予定のパソコンを貰ってきて遊んでたから
時代はWindows98とかMEの時代だったのにWindows3.1だったからねあのパソコンw
ベーマガ掲載の投稿プログラムをちょろちょろ試すくらいしかしてなかったな
-
しょぼいのやってたときもプログラミング歴として加算してもよいのかねwそんなこと言ったら小4のときから学校のクラブでロゴライター2使ってたし
初めてプログラミングに関わったときからの時間なら単純に20年経過になるけど、だからといって年数分のレベルがあるかというとそうではないしなw
日本は能力主義じゃなく変な年歴主義なのはどうかと思うがプログラミングのスキルやレベルなら>>612のほうがかなり高いと思うよw
-
いや、lisp処理系がうまく作れるかどうかだけだからそういう判断はできないよ
web関連はさっぱりだしGUIはtcl/tkのラッパーとjavaのswing少しくらいしか使えないしMP3プレーヤーも作れない
-
俺はこの人生でプログラミングをやりこんできたわけじゃないしね
最近は純lisp作りに夢中になってたせいで毎日のようにやってたけど
多くて2〜3か月に1回くらいの頻度で思いつきを形にしようとして途中で飽きるを繰り返してきてるし
実質的な能力でいえばプログラミング歴1年くらいの人にも劣ると思ってるわw
-
この純lispもちゃんと仕上げるかどうかは飽きるか否かにかかってるしねw
たぶんまた日が経つとパーサの意味を忘れてると思うわ
-
>>615
俺っちvb6を使ってるからgui開発はかなり楽ちんな言語だし
mp3プレーヤーなんてmciSendStringでの作り方紹介してるサイトのコピペだけで作れるし
javaのswingなんてhello world表示するの作っただけで途中で投げちゃったわw
-
web関連も俺っちも詳しくないからかなり酷い作りになってるの多いしね
外部ライブラリ拾ってきて使うのあんま好きじゃないからjavascriptのライブラリのjQueryとか使ったことすらないしw
-
純lispは完成したんじゃないの
気に障ったのなら謝る
-
まぁまぁ遊んだことある言語の羅列なら
ロゴライター2、N88-BASIC、QBASIC、CA-Realizer、Visual Basic6.0、Java ME、JavaScript、PHPってとこくらいかなあ
ちょっと触ったくらいの言語は(ハローワールド書いただけどか)
C言語、C++、C#、ActionScript、Java、Visual Basic .NET、VBA、VBScript、HSP、Delphiってとこかなあ
GUIで何かアプリ作るのなら慣れたVB6でなら多少のものは作れるけどだいたい途中で飽きて投げ出すし
エディっションがLearning Editionという機能制限版だから出来ることが非常に少なくて
ある程度使えるようになった(6〜7年くらい前か)あたりで機能制限が問題にはなってきてたね
-
>>620
ああ、なんかゴメン、他のスレとかでよく「w」を使うからつい
純lisp完成でテンションあがってたので何か気を悪くするようなレスしてたらすまない
-
俺の態度が何か尊大だったりしてるのなら、そういう性格だからヒキになってしまったと思ってくれればいい、周りとの衝突が多かったからな
-
人間関係を築くすべもないし、まぁこう自分語りのレスを超連投しまくったりするわけだしね、他のスレでもよくやって注意をよく受けるよw、以降気を付けます
-
>>620
純lispの完成っていうかなんていうか
間違いのないlispのコード入れたらちゃんと処理されるというだけで
たとえば括弧の数が合ってないコード入れたり、複数行に分けて書いたりとかそういうのは読み込めなくて処理できないし、コメント行も文頭以外は処理できないから
純lispのevalを作って試すには使い勝手が悪すぎなので大幅な手直しが必要なのと、
あとメンテしやすいようにソースコードの整形や名前等のつけなおしとかしたいし、全体のアプリとしての完成はしてないんよ
プロセッサというやつ(?)だけが完成したってかんじ
-
字句解析やら構文解析やらを作れたのは今回が初めてだから今もすごく興奮してるっていうか
以前にもBASICを作ろうとかjavascriptとかの文法ミスを見つけるのとか思ったことはあるんだけどどれもかなり序盤のほうで放り出しちゃってるし
唯一Java MEで作ったプログラミング(?)ぽいのは字句解析とか構文解析とか必要ない作りだしね
-
まぁこれで数値計算とか文字列処理とかできるレベルのlispまでに作りこむことができればプログラマの初歩レベルくらいの今の能力を超えられるかもしれんが
流石にそれは面倒だし、lisp用のエディタがないとlispコードを書くのはかなりしんどい、括弧の数が合わなくて何度エラー出たことか、
純lispの論文も括弧の数がおかしなことなってて解釈に苦労したし
-
じゃあ次はリファクタリングだな
俺は必要な機能一覧をTODOにざーっと書いてそれをひとつずつ満たして言ってる
Javaだからswingを使ってグラフィック機能も作れそう
-
あとどちらかっていうと今の興味は純lispだけで数値演算ぽい処理できたら面白いだろうなと思ってる感じだし>>597みたいなのね
-
lisp用のエディタならemacsが王道かな
windowならxyzzyの方がいいと思うけど
俺もwindows手に入れてxyzzyとUnixのツールを移植したものでプログラミングしたいよ
-
まーたググらせやがって、リファクタリングとか知らんちゅうの(笑)、
変数導入時にあるていど整理したからさほどの整理量じゃないけど、整理することをリファクタリングというのか
ただ整理するだけというわけじゃなく改良・修正とバグ取りもするからリファクタリングという処理の段階ではないね・・・
-
unix系なのか、すごいな
unix系はちょろっとだけ触ったことあるけど本当にちょろっとなので勝手とかほとんど分からないわ(藁)
javaスレで見かけた話だとunix系でのjavaは特にguiは具合が悪いとか聞いたな、まぁ試したことないから知らんけどね
-
上のコード見て思ったけどなんかjavascriptの割りには文字列処理のやり方チマチマしてるな
もっとズバーと置換とか分割とかやってうまくやる方法あると思うけど
-
> unix系でのjavaは特にguiは具合が悪い
gtkを使ったものと比べればそう感じる時はあるね
でもjava/swingで作ったv2cなんかは人気だしそれほどでもないのかもしれない
-
先ほどもいったけどプログラミングレベルはプログラミング歴1年未満の人にも劣ると自信を持って言えるレベルなので(爆)
javascriptもちゃんとした文献読んで勉強したってわけじゃなくて、javascriptスレでも嘲笑される とほほの入門 とかいうサイトでやったもので
-
javascriptに定番のテクニックとかほとんど知らんのよ、javascript使う機会も多いわけじゃないし、調べよう覚えようって気にならないし
-
んで、ベーマガとかに掲載されてたのは化石レベルのコードばかりだからスタイリッシュな現代のコード事情にも精通してないしね
-
つかベーマガにも素晴らしいコードとか載ってたはずだろうけど、俺が理解できるのは初心者投稿のプログラムばかりだったから特に役にも立って無いとく感じかなw
-
こう思ってくれればいいよ
毎月1回だけ腕立て伏せを5〜6回するという生活習慣を20年続けたら腕の筋肉はムキムキになるか?そりゃならんだろうw
俺のプログラミングレベルもスキルも知識もそういう次元だから
あまりまっとうは話はちょっと分からんw
-
そういやふとsyntaxが気になったので辞書引いてくるわ
-
やっべ、くだらん自分語りレスを続けたせいでポイントサイトめぐりが終わらんかった・・・orz
-
自分でも分かってるんだけどね、自分語りのレスなんて他人が読んでも面白いもんってわけじゃないし、時間の無駄だって、学習能力低すぎだわ、まったく2chは恐ろしいところだ(ここ2chじゃないけど藁)
-
ネットを利用した小遣い稼ぎってどれくらい貯まるの?
前から興味あるけど手が出せない
-
ポイントサイト・小遣いサイトはうまくやる人は結構稼ぐみたいだけど
俺は毎日3〜4時間はかかって年間で3〜4千円程度にしかならないよ
-
ちなみに複数の小遣いサイトをめぐるから3〜4時間かかって
ここの小遣いサイトだと年間で500円前後くらいしかたまらない
全部合わせて年間3〜4千円
-
平仮名になっちゃったけど「個々」ね
-
ちなみにブログにアフィリエイトリンク貼ってるけど偶然に1回入ったことあるくらいでこの6〜7年でそれ以外の成果ポイントは無し、そもブログの更新頻度やリンク貼りが怠慢だから仕方ないけどね
-
そんなに厳しいのか・・・
もしかして巡回プログラム作れば動かしてるだけでお金が入ってきたりするかな
-
無職板のプログラミングスレの人みたいにアプリ開発とかで稼げればいいのだろうけど
残念ながらそういう次元じゃないし、飽きっぽい性格ゆえちゃんと完成させたアプリなど無いし
(ハローワールド出力をそれを持って完成とするなら、あるにはあることになるけど笑)
-
>>648
巡回プログラムというのがどういうもんか分からんけど
javascriptやflashなど動的コンテンツや検索行為でポイントを貯めるのが多いから
そういうのって出来るのか分からん
それと、俺がやってるのはクリックとかコンテンツプレイや検索行為とかで貯めるポイントばかりだから
普通の主婦とかの会員は小遣いサイト経由での買い物やサービス利用や登録で結構稼いでるようだよ
一銭も金使わずにポイント貯めようというのがそも無理ゲーな感じではある
-
あと一銭も使わずにポイント貯めていこうとすると、毎日やらんとほとんどたまらない、毎日やって年で多くて500円前後だからね・・・
ヒキってる事情が弱いなら素直に脱ヒキしてバイトしたほうが何千倍も稼げる
-
無職板のプログラミングスレ見てみたらテンプレが関数型言語ばかりでワロタ
>>650
やっぱり無理そうか
でも検索して貯まるならまだ作れそうな気がする
-
検索も検索ワードをチェックしてるからそれなりに単語を用意せねばならんし、javascriptやcookie必要なの多いし別窓開くのばっかだし
単純なpostやgetだけでいいのなら簡単だのにね
-
テンプレまじまじと読んだことないから分からんかったがlispとかもあったんだなあのスレ
-
ひとまず気になるので「関数型言語」というのを調べるか、
俺ぜってー共同開発とかそういうの無理だわ、言葉知ら無さ杉はコミニュケーション取れないからな
情報処理試験(?)の問題とかに載ってる言葉とかあれの大半は覚えて扱えないと
職業プログラマとかは無理なんだろうな、意味が通じない相手じゃ仕事にならんもんな・・・
|
|
掲示板管理者へ連絡
無料レンタル掲示板