星田オステオパシー

プログラミング日記 2021/11/04~

2021/12/21
 RacketでのCommonlispからのプログラム移植中。findfの動作を調べないと・・バイトのインターバルが二時間あるので宿直までに解決できるか?

find-if predicate sequence    predicate が真となる最初の要素を返す

 とのこと。シーケンスってのはリストとか要素が連続する形式らしいっすね。結果が(garden west door)だったってことは

 やっぱり(assoc *location* *edges*)の結果が渡されてるなぁ。cdrはどうなってるんだ・・

 佐藤優さんオススメのもう一度高校数学をヤフオクにに送料込み1000円くらいで購入、届いた。まだ先の話だけどRaketを使って数学の勉強をするのに使えたりしないかな・・と。予定ばっかりだけですけど~


2021/12/20
 宿直明けで神戸へ出張。その電車内でチェックしてみるとCametan42さんがブログを更新されていて・・・ウオオ!CommonLispとRacketの対応関数をまとめてくださっている!しかも注意点を完結にコメントしてくださってる上に各ドキュメントへのリンクまで・・これは保存版、すかさずブックマークや。いや~これ日本人のRacketユーザー増えるんじゃないですかね?
 帰りの電車で実用CommonLispを読みながら帰ってきたんですが、ちょうどLabelsとかFletとかの説明だったんだけど「オプションパラメーター」を使ったLengthの結合は結構感動的。これが一番融通効いてて合理的な印象を受けるなぁ

(defun length11 (list &optional (len-so-far 0))
 (if (null list)
  len-so-far
 (length11 (rest list) (+ 1 len-so-far))))

 プログラミング日記はこういうのを短期の復習をかねて抜書きしてゆくのが良さそうだなぁ~


2021/12/19
 CommonLisp用の魔法使いの家をRacketに移植するためにウンウン唸りながらキーボードに向かっているのだが・・その様子を見守ってくれているCametan42さんから驚の指摘!RacketじゃなくてLazy racketじゃねぇか!と。多分結構な期間これでやってたのでそのせいで動かなかったのもあったかも・・
 あ、こないだCametan42さんに書いてもらったdoを使ったCall/CCの脱出プログラムもちゃんと動いた!実はLazy racketでは動かなかったのですが言い出せなかったのです(^_^;) 今見たら、どうも「when」とかは動かない可能性あるみたいなのでそこで引っかかってたんでしょうねぇ

 
 これがRacketの言語選択画面なんですが・・このチェックを選択するだけではなくて、更に下の一見ただの説明にしか見えない #lang racket って部分をクリックしないと駄目っぽい?とにかくここで一番上のを選択したら動きました。すげーなーいまさらw

 あと、移植作業でかつてないレベルでちゃんと説明を読んでるんですが、返り値として真か偽を返すものが述語「Predicate」だったんか!今更ながら・・やっぱりちゃんと読まないと駄目だなw(これに関してはほぼ同時のタイミングでCametan42さんが詳細に説明してくださってました命名規則、そうだったのか!シンクロニシティ)

2021/12/17~18
 Land of Lispの魔法使いの家を日本語翻訳&Racket移植開始。この方式はもともと精読をしてこなかった僕にはとても有効だと思う。これはもう死ぬまでの暇つぶしには困らないな!環境にも優しいし良い趣味ですよプログラミング(^o^)

 Cametan42さんからRacketの公式ドキュメントを読んでみては?とのアドバイスをいただく。もちろん英語なのだけど・・ここで遂に強力ツールが役立つ時が来た!まずは「DeepL」。グーグル翻訳でもすごいなぁと思ってたけどこいつはそれを凌駕する!試しに冒頭の「Getting started」部分をコピペすると

「Racketを使い始めるには、Webページからダウンロードし、インストールしてください。初心者の方や、グラフィカルな環境を使ってプログラムを実行したい方は、DrRacketの実行ファイルを実行してください。そうでない場合は、Racket実行ファイルはコマンドラインのRead-Eval-Print-Loop (REPL)を実行することになります。

Windowsでは、スタートメニューのRacketの項目からDrRacketを起動することができます。Windows Vista以降では、DrRacketと入力するだけです。また、Program Files → Racket → DrRacket にあるフォルダから起動することもできます。

Mac OS では、DrRacket のアイコンをダブルクリックします。おそらくアプリケーションフォルダにドラッグしたRacketフォルダの中にあるはずです。コマンドラインツールを使用する場合は、Racket フォルダの「bin」ディレクトリに Racket の実行ファイルがあります(PATH 環境変数を設定する場合は、手動で設定する必要があります)。

Unix(Linuxを含む)では、drracketの実行ファイルがパスにあれば、コマンドラインから直接実行することができます(インストール時にUnixスタイルのディストリビューションを選択した場合は、おそらくそのようになります)。そうでない場合は、Racket ディストリビューションがインストールされているディレクトリに移動し、drracket の実行ファイルを "bin" サブディレクトリにインストールします。

www.DeepL.com/Translator(無料版)で翻訳しました。」

 自然すぎる!!そしてコピペせずとも単語さえ分かったら読めそうだな?という部分は(そういう部分が多いのだが)、「Mouse Dictionary」に「英辞郎」をぶっ込んで文字の上にマウスポインタをホバーさせれば瞬時に単語の意味、前後の熟語関係まで含めて表示されるのだ!ネット黎明期に「バビロン」ってのがあったけど、あれの超スゴい版って感じ。これも(英辞郎データは500円するが)無料って言うんだからテクノロジー万歳!って感じで。


 折角こういうツールが用意されてるんだから、もっとバンバン公式ドキュメントとか読んでゆこう


2021/12/16
 Racketの画面をキャプチャして貼り付けてコメントつけて・・の流れで背景が白なので分かりづらい。Racketの表示で今どきっぽくダークテーマとかあったらエエのに・・と思ったら
 出来ました。PreferenceがEditの項目にあるのはなんか不思議なんやが・・

 あと、ネット見てたら「虚数の情緒」の著者さんがLisp(と言うかScheme)を使って数学の解説をする的な本を書いてはると知り予約した。サブタイトルの「情報陛下のLisp」ってなんなんだ・・楽しみだ~

2021/12/15
 あれから一週間・・病院と高い薬(ヒサヤ大黒堂とか乙字湯)以外の方法でなんとか重度のいぼ痔を改善すべく努力を重ねた結果・・・!ついに再び座ることが出来るようになりました(T_T)
 ああ、私は今、喜びをお尻で踏みしめています。というわけでようやくRacket学習を再開できる運びとなりました。またしてもCametan42さんからお助けをいただきまして!二重ループはすごく大事っぽいのでネッチリとやらせていただきます!ありがとうございます~


2021/12/10
 今週の火曜日・・大阪は雨で寒かったんです。月曜日はとなりの市で宿直、翌日は同じ市での清掃バイトがあったんで、雨の中バイクで向かう。寒さの中清掃を終えて帰宅したら・・ぐあ!!ケツが痛い!

 ああ、重度のいぼ痔になってしまいました・・・。最近、うんこが細いなぁとか思ってたんですが、バイト連発と寒さ、おしっこの我慢などの条件が重なっていぼ痔が悪化してしまった模様・・ああ・・。

 普段、薬品を一切使わないんだけどこの痛みはどうしようもないので20年ぶりに痔の薬を使いました。加えてツボやら内臓テクニックやらを用いてなんとか改善を狙ってます。なんとしてもお医者さんでのアナル診断は避けたいんだよ~!

 という訳で、折角Cametan42さんからvector-refの入れ子アクセス方法を教えてもらったのに(これで引数が複数ある場合も怖なくないな!)、椅子に座れないんです。これ、寝転びながら打ってます。本当のいぼ痔ってこんなに痛かったのか・・

2021/12/06
 排便したらすごく頭がスッキリしたのでプログラミング学習再開じゃい!
 マップの管理、vectorで良さげ→listで良くない?あ、置き換えが出来無さそうやっぱりvectorか・・となったわけですが・・そもそもプレイヤーの位置やらマップって要素は最初から場所を与えてるわけだから探索不要じゃないか!と気づく。
 けど、まあ入れ子のvector内の探索が出来たら便利なのは変わらないのでちょっと挑戦してみようか・・と思ったら!vector内vectorにアクセスする方法が分からねぇ!vector-refで再帰したら入れるのでは?と思ったんだけど、そもそも入れ子になったvectorへアクセスする方法が分からないw
~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~
 リストだったらcarで取ってcdrで再帰して調べることが出来るけどvector-refはその書き方が出来ない!と思う。そもそもそういう使い方を想定してないのか・・。

 とか思ってたら!Cametan42さんから重要なヒントが「実用CommonLisp18章を見るが良い」とのこと。すかさず見る・・確かにオセロの盤面ってまんま二次元配列だけども・・
 複素数とか言われてもw。で、いくつか解決するための候補を出した最後に


 ファーッ!!! な、なるほど!!一次元だけど縦に積んでいく事で二次元をマッピング出来る!こういう刺激を求めていた~ これは(面白かった頃の)ジョジョ的発想・・微妙に違うけどジョリーンvsジェイル・ハウス・ロック戦を思い起こさせるじゃないか


 オセロの制作過程自体が非常に興味深いし、前に言ってたコードの日本語訳を実用CommonLisp→Racketで書き直ししつつやっていこうかな・・
 「ONE OUTS」とか「ライアーゲーム」の作者さんもゲームプログラミングやってたって言うし、やっぱりプログラミングって良いなぁ。Cametan42さん、いつもありがとうございます!!


2021/12/03
 行き詰まってしまってから一週間、なんだかキーボードに向かう気力が湧いてこなかった・・という訳でご無沙汰しております。いやちょっと時間と気力がね・・。借りてきた「ビューティフルコード」を読んだりしてました。Schemeでキー入力を反映させるために「Scheme」でゲームを作ってるページを探したりしてたら「HandyScheme」という謎のGUI処理系を見つけたり・・要するにグズグズとプログラミングから逃げていたわけだな・・

 そんなことをしていたら!Cametan42さんがWhitespaceというスペース、タブ、改行だけで書くプログラム言語?をRacketに移植してしまうという企画をされていた。くぅ・・ 僕もぼーっとしてる場合じゃない。更に昔のコンパイル苦労話サンプルとして「七度言語」という官能小説を自動で吐き出すというプログラムを作ってた方のページがリンクされていたのだけど、(以前チェックしていた伊集院光さんが審査員として強力プッシュされたというので興味が出たので読み始めた)・・閃いて作り始めてから、なんとか形になってケリが付くまで12年も取り組み続けたという・・12年って!!特に最初期の取り憑かれた様にプログラムを始めた頃の話はショッキングで「ぶっ倒れるほど熱中して書いてたプログラムは後で冷静になって見返してみると、ただPrint文で入力したテキストを表示させてるだけだった・・」という内容の部分は笑いながらだけど同時に恐怖を感じた。ブログの文章自体もなんか異様な迫力というか・・普通じゃない雰囲気がただよっていて思わず全部読んでしまったのでした。ま、でも何か作り上げるってのは・・そういう事なんじゃないかとも思う。励みになったな・・

 ところで「ビューティフルコード」だけど僕にはほぼ全部が意味不明だったんですが(^_^;) Rubyのまつもとさんの「エッセイのごときプログラム」と32章の「働くコード」は楽しんで読める内容だった。
 で、このページを見てハッとしたんだけど・・ひょっとして僕ってコードをちゃんと読んでないのでは無いか? ページ下のLispコードの読み方みたいにサンプルや他の人が書いたコードに対してコメント方式で行ごとに何をやってるのかを日本語で書いてゆくって言う翻訳の作業が必要なのかも知れん。日本語に訳せない行は理解できてないハズだけど、ついつい目で字面を追ってるだけで読めてる気になってるだけなのではないかと。意味があるか分からないけど、どうせだから何でもやってみよう。どうも自分が信用できん


2021/11/28
 今日は夜の宿直まで暇なのでたっぷりと挑戦できる!そして・・結果、Racketで何か動くものを作れるかな?は「う~ん作れないかな~」となりつつあるwのでした。まあ、狙ってたようなものはって事なんですけどね!ベクターをちゃんと理解してライブラリとか他の方が作った関数なんかを使えばなんとか・・って感じかなぁ~。
 とりあえずベクターとかちゃんと勉強してなかったので、これを機会にちゃんとやってみるか・・と。それか、もう一度最初からちゃんと復習していってその過程で「お!使えそう!」と思ったのをその都度部品の関数にして行くとか・・?
 displayの引数は1つしか駄目なのに(結果的に)複数渡しててエラーが出ててもそれが分かってないから無駄に時間を使ったりしてるわけで、定義をテキトーに流してしまう悪癖を直していこうか。

 あとその前にCametan42さんの棒倒し法の記事をじっくり読ませていただきます!


2021/11/27
 よーし!今日は午後から夕方までRacketにトライ出来るで!
 いや~・・別に義務感って事でもないんだけどやっぱり中途半端になってるのは気持ち悪いのでケリをつけたいところ。とりあえず夜のカタン大会までに実験を終えないと・・と焦る。一応狙った動きっぽくなってるかな?なんか再帰も怪しくなっていた(^_^;)

 図書館で予約していた「ビューティフルコード」「リーダブルコード」「達人プログラマー」が届く。早いよw まぁ、何かの精神的ヒントが得られるかも・・


2021/11/26
 宿直終了後、帰宅してシャワーを浴びてすぐさま清掃バイトへ。天気が良いので実に清々しい。そして夜は別の宿直!まあ、コードを打つ時間は・・・

 Cametan42さんのブログで色々と教えていただく。な、なるほどMac CommonLispって商用開発キットだったのか・・単にMacOSで動いてるだけでライブラリとかは他のフリー開発環境と共通してるのかと思ってました(^_^;) そして古いってのは・・まあ本の表紙でウスウスは気づいてたんですけどね!なんなんでしょうこのティーポットとカップはw リスプエイリアンよりも意味不明だ。
 UNIXの出力の話もなるほど・・逆に言えばスクロールに関しては可能って事はそういうつもりのプログラムだったらOKって事ですよね!ふむふむ・・。

 明日は午後からは時間が出来るので久々で挑戦の続きを!あと、図書館で予約していた本が届いたので宿直の時に持っていくか~


2021/11/23~2021/11/25
 おおっと!遂に毎日書くのを諦めてしまったか~(-_-;)

 いや、これがですねぇ~・・ありがたいことなんですが火曜日バイト漬け、水曜日は神戸まで出張、その後カードゲームのお誘い、木曜日本業漬け&宿直!妙に忙しいんです・・最近、色々と喜びを感じながら生きてるからやろか・・

 まず、Cametan42さんのローグライク棒倒し法の記事を拝見。
 ローグライクの歴史ってそーだったのか!パソコン通信時代に草の根ネットでオンライン版をやりましたわ~懐かしい。トルネコとシレンもスーファミでやってた!あの記号だけのゲームをトルネコのキャラを使ってリメイク(?)するってのは・・良い発想してますねぇ!
 棒倒し法は・・Racketを用いての完全な解答を書いてくださってる、ありがたい!と思ったので、とりあえずブックマークして封印。あっしのクソコードとの苦闘をお待ちくだせぇw。とりあえず「棒倒し」と聞いて想像していた方法では無さそうでした(^_^;)

 宿直中に「プログラミング道への招待」をようやく読了。もちろん練習問題とかは無視しましたけどね。最後の最後で「ま、結局楽しむのが一番だよ」という結論でしたけど、途中かなりしんどかったです。やっぱり文系こそプログラミングやるべきって話は出てましたね。
 Cametan42さんのお話に出てきたBrain Fuck・・インタプリタなんてワテに作れるとはちょっと思えないけど、何事も挑戦ですかね・・とりあえず頭の片隅に置いといていつか笑えそうなのを作ってみるってのを目標の一つにしても良いかな・・。例のゲーム会社に就職決まった女子と再会して「最近プログラミングやってます?」とか聞かれた時に「Lispを少々・・あとインタプリタ作ったりとか」なんて言ったらウケるだろうな~とは思う。
 


2021/11/22
 今日は宿直と宿直の合間に時間があったのでようやく、久々にRacketを使ってSchemeで何か動くものを作る!と活動を開始した。のだが!自分でも驚くほどに「どうやって書く」のかを忘れてるw。まあ、環境への適応力が高いと思っておこう。やっぱりいつも書いてないと駄目ですなぁ。

 先日、図書館で借りた本に「プログラミング言語Lisp 入門からマルチメディアまで」と言うのがありまして~・・Macで動くCommonLispを使ってる感じ?それでネットにつないだり音楽を再生したりグラフィックを表示したりする方法が書かれているので、いつか参考になるかも・・ 

 Cametan42さんの記事で紹介されていた昔のアメリカで出版された、Basicのプログラムが100本以上掲載されている本をちょっとだけ読む。すごい数!僕の子供の頃も「はるみのゲームライブラリ」とか「ベーマガ別冊のプログラムばっかり掲載されてる本(値段を覚えてる1500円)」なんかありましたね~。ただ、ゲームライブラリは10本くらい、ベーマガ別冊は全機種掲載なのでP6は10本も無かったかな(しかも過去の雑誌掲載分の再録だったはず)。アメリカではBasicであれば手直しなしで色んなマシンで動いたりしたのだろうか・・?
 3本目くらいに「Amazing」という迷路ゲームが。ぬ・・これをちゃんと読めば迷路の作り方がわかるかも知れん!


2021/11/21
 いよいよSchemeを使ってちょっとなりとコードを書くぞ!と言う気分にはなってるのだけど宿直が・・いやいや、自分でも分かってる。しばらく読書ばっかりしてて手を動かしてなかったので実際に打ち込むことにビビってしまってるのである。明日は絶対に打つ!

 辛うじて関係あることとしては・・スマホで見ていた実用CommonLispをKindleに移してみたり(見易い!)とか、「プログラミング道」を読んでてタライ回し関数って竹内さんが作ったんかwとか。あと、実用性ゼロのプログラミング言語として「空白、タブ、改行」なんかで作られた見えない言語とか!面白いこと考える人がいるもんだなぁ

 とりあえず今日は宿直のモップがけをしながらマップの自動生成について考える。「12歳から~」では最初にリストとしてマップのデータを手打ちしてたわけだけど、もしも自動生成しようとしたらどうしたら良いのか・・
 パッと考えついたのはまずは全部壁で埋めてしまって

##################
##################
##################
##################
##################

 スタート地点を決める。最初は画面端にするのが良いだろうから、今回は上端から。

########o#########
##################
~~~~~~~~~~
となって、そこで3つの乱数を出して、↑以外の方向を決めて対象が#ならそっちへo(道)を広げる・・ってのを繰り返すか・・と思ったけど、これだと出来ても一本道で迷路にはならんし、上にも戻れるようにすると貫通してしまうし。迷路作成のアルゴリズムは探せば見つかるだろうけど、どうせ掃除中なので、どうしたらエエんやろか・・と考えて過ごしました、と。

2021/11/20
 折角環境が整ったというのに全然コーディングが出来てない・・準備をするまでがノリノリでイザ本番となったら萎え萎え・・あるある!まあ、熱意は失って無いんですけどね・・なんか妙に雑用が出来たり宿直ですごく眠ったりボードゲームに呼ばれたり本業が今まで暇だったのに妙に忙しくなってきたり(これは良いんだけど)。まあ、なんとか興味がプログラミングに向かい続けるように、身の回りにプログラミング関連の物事を配置するようにしております。
 あ、そうだ!だからと言ってプログラミング関連の書籍の読書をするってのも程々にしておかないとな・・やっぱり出力よりも入力(になってるかも謎だが)の方が楽だから!ついついね・・それにしても竹内先生の「プログラミング道への招待」、もっと気楽な本かと思ったら・・「軽くて優しい口調とノリですごく負担かかることをやらせてくる」ってのが恐怖。


2021/11/19
 だだだ、大ニュース!!先程
 「じゃあ実用Common Lispを買うか~」と思ってKindleストアを開いたら

 え・・?なんか安すぎません?9100円のはずなのに5080円て・・うお!なんと表示ミスではなくて期間限定キャンペーンで安くなってる模様、これはLisp担当神のお導きに違いねェ!無事に格安でゲット出来た!いや~こんな事ってあるんですねぇ~

 関係ないけど、昨日Schemeで戦闘シーンを作る時に画像をグーグル画像検索から持ってこれたら愉快だなあ~と書いたけど、移動部分もゆくゆくはグーグルストリートビューと連動とかさせられたりせんだろうか・・あんまり使い込んでないけど、確かマウスでの矢印クリックでの移動量って固定だったような気がするんだよなぁ・・もし移動の方向だけでもグーグルストリートビューに送り込めたりするなら、おらが村クエストとかデキるやん!

 あと、図書館で先週リクエストしておいた別の市所蔵Lisp本が早くも届く。Lisp本はどんだけリクエスト通りやすいんだとw


2021/11/18
 
 Kindleストアで実用Common LispのサンプルをDLする。古典の大型本だとまんまページを画像としてキャプチャしただけとか言う可能性もあるのでチェック。おお、ちゃんとテキストデータ(?)になってるじゃないか。目次から飛ぶこともデキるし、これなら持ち運べる。Kindle版だと9100円って事で、ま、宿直で一晩泊まったらお釣りがくるくらいだし、僕には一生楽しめるボリュームとレベルなんで、よし、キミにきめた!
 今日は本業と宿直の充実コンボで学習とかにはならんかったなぁ~(MP切れ)。
 あ、でもボンヤリとSchemeへの「12歳から~」のダンジョン部分の移植について考える。ダンジョン部分は敢えて標準出力でやることに意義を見出してるわけですが、ゆくゆくはモンスターと遭遇して戦闘するというところとか、拡張してやってみたい(ボトムアッププログラミングや!)。戦闘シーンはやっぱりモンスターの画像が欲しいけど、画像データを作るのもちょっと・・。と、閃いた!外部ライブラリを使って別ウィンドウを表示できるみたいなので、そこにSchemeから(デキるか知らんけど)グーグル画像検索を呼び出して該当する画像を戦闘時だけ表示するってのはどうだろうか。画像のアドレスを決め打ちで選択しておいたら楽だけど、そこは敢えて「グール」とか「鬼ババァ」とかのワードで引っかかった上位の画像のうち一つをランダムで選ぶようにしたら意外性があって面白いかも知れんな!とか。


2021/11/17
 宿直明けで本業もあるので今週末には返さないといけないLisp本のおさらいを・・Cametan42さんの解説を読ませていただいたりして「やっぱり実用Common Lisp」やろな、と。ちょっと読んだ感じ、とにかく著者の「自信」がすごい。参考書籍を挙げておくが、もちろんこの本にはすべて入ってるけどね!的な。
 Common Lispの関数の多さに驚いた話に対してCametan42さんの記事、こんなん笑うわw 面白いのは実用Common Lispのお悩み解決みたいな部分に「プログラムを書いてて、なんか同じ機能の関数が既に組み込みであったような気がしてならない場合」とかあって笑う。まぁでもホントこの関数の数はスペルブック・・TRPGの魔法一覧みたいな感じですねぇ。昔から「全怪人怪獣大百科」とかTRPGのルールブックとか読むのが好きだったので結構楽しめるかも知れん・・

2021/11/16
 宿直明けで更にバイトデー。バイトの移動中、トイレにも行きたかったので隣の市の中央図書館へ。とりあえずパソコンコーナーへ寄る。面白そうなの無いかなぁ・・と眺めていると「プログラミング道への招待」という本が目につく。すごいタイトルだ・・って、おおっ!?例のLispの大物、竹内さんの本じゃないか!もちろん借りる。夜、バイト中に読んでみるが・・予想に反して手強いんですけど(^_^;) けどまあ、レジスタの話とかはいつか大事になるかも知れん・・

 Cametan42さんのブログにてCommon Lispの「Loop」と「Foamat」の話を読む・・あ・・これはようやくCommon Lispの恐ろしさが実感できた気がする。拡張するにも程があるだろw!
 更に、持ち出すことができないので昼間に「実用Common Lisp」を読み始めたのだけど・・
 関数、いくらでも新しいのが出てくるなぁ・・・と思ってたけど、700!って!そして更に恐ろしいのは、この上まだマクロを使って必要と思った機能を追加するという貪欲さですかね・・


2021/11/15
 宿直明け、次の宿直までに雑用を・・実験結果をまとめて、あともう少しの「Land of Lisp」を・・ようやく読み終える。良い本だったなぁ・・しかしどんどん新しい関数が出て来る。
 宿直のお供に「On Lisp」を持ち込む。なんかいきなりムズい・・と言うかなんか頭に入ってこないような?

2021/11/14
 いつも施術中には雑談をしたりするんですが、先日雑談の中で「最近Lispってプログラミング言語を勉強してて~」などと話していた方からLINEで

 「先生(一応こう呼ばれます(^_^;))、こないだ話に出たLispってプログラミング言語の話、うちの子供に数学に関係してるらしいで~とか言ってたら興味持ったらしくて面白いって言って勉強始めてますわ~」

 との報告が!ええっ!?マジかよ・・負けてらんねぇ!!

 ってところで目が覚めました。ゆ、夢っ!?ええっw?恐らく生まれて初めて見たプログラミング関係の夢でした。

 宿直待機時間を利用して「Land of Lisp」を読み進める。Loopすごい!(())ばっかり見てるので確かに違和感あるけど。例題の進化ゲームもお面白かったなぁ~・・こういうのが好きなのかも?Formatもこれでもかってくらいに整形のオプションがあって「テキストだったらPythonでやるからエエわ~」とか思ってたけど甘かったな。後は我慢できなくなってマクロと関数型プログラミングの章を先につまみぐい読み。マクロは実際に使ってみないと「なんで普通の関数では駄目なの?」ってありがたみが分からないかな・・「On Lisp」の前書きは超マクロ推しだったので、そっちで明らかになるかも。明日は飛ばした12章と13章を読んで一応終わりかな・・それから金曜日までに出来るだけ「実用Common Lisp」を読む、と。

 Cametan42さんの記事で「C言語は別にインタプリタ方式にしてはいかんという決まりは無い」というのに衝撃を受ける。そうなの!?早速「C言語 インタプリタ」で検索すると「Study C」というサイト(?)発見。思ったより長生きするようならこれも挑戦してみよう、いつか!


2021/11/13
 今日は宿直明けだけど久々でまとまった時間が取れるのでプログラミング関係のことを少々・・
 Clispをちょっと触ってみる。が・・もう全然使い方が分からない(^_^;) やっぱりIDEっつーんですか?エディタがついてないと僕には無理だ~・・と。ま、分かってたことなんですけどね。Xyzzyで書いてClispに読み込ませて実行ってのがもうね・・
 ちなみに使い方を検索していたら同じ様に悩んでいる人がいるみたいで・・おっ・・誰か回答してくれてるかな?
 C、Cametan42さんw お疲れさまです! 
 ところで超兄貴の記事(渡辺浩弐についての話が超面白い)で話題に出てたけど検索ね!これはクソ記事(アフィリエイト目的とか)でしょうもない同じような文章ばっかりが見つかって欲しい情報に(日本語独自の問題なのか?)にアクセスしにくくなってる問題をなんとかしないといかんですよね・・理想は(多様性は確保した上で)、漏れなく無駄なく情報が存在するって状態だろうから・・なんかWEBの上位存在としてAIで構築し直した漏れなし無駄なしの別のリファレンス専用電脳空間みたいなのが出来てくれないかなぁ・・エロから論文までジャンルは問わずだけど無駄なく整理されてるような。ま、検索ベタの言い訳ですけどね。
 そしてCametan42さんから紹介していただいた商用のLisp処理系「LispWorks」を試す。立ち上がりがすごく早い!そして問題のエディタ部分だけど・・
 む・・色々といじくっててようやく判明(マニュアル見ろよw)、Editor部分で書いた後、上のアイコン右端「Evaluate Definition」を押すと、Lister部のOutput内に結果が表示される、と。分かってしまえば保存して読み直しても同様に実行できるのでこれ便利だ!けど・・Emacsも一度は使ってみたいですよね・・明日かな!
 「Land of Lisp」ただの読書になってるけど8章まで。外部のグラフソフトを活用するってことで結局7章も読まないと・・これは実用Common Lispは一度返却して借り直しやな・・
 気分転換にネットでLisp関連情報を求めてうろつく。5ヶ月で5つの言語を習得して後、Cyanという言語を作ってしまったという高校生の記事を発見。目つきがただもんじゃねぇ・・。で、その学習方法が「読むだけ(メイン以外は)」だと・・・?そういうのもあるのか・・。で、この記事の聞き手になってる人が「Lispの大御所」である竹内郁雄という方らしい。NTTで仕切ってたという話なのでCametan42さんの話によく出てくるNTTのLisp部隊の司令官みたいな人だったのかな?国語が重要という話が面白かったので、解説記事も読む。オードリー・タンの先輩も母国語の国語力が重要という話をしていたらしいし、理系さっぱりだった身としては(まだ)救いがあるなぁ(※国語力も無いのだが)。ま、でもこれで一つ謎が解けたな。苫米地英人さん、Lisp関連の海外書籍やCametan42さんの文章が、しつこくなくそれでいて面白くナオカツ分かりやすいというのはプログラミングやってるからではなくて、そもそも国語力が高いのでプログラミングスキルも高いんやと(数式もプログラミング言語も「言語」ですもんね)。とりあえず竹内さんオススメの「ビューティフルコード」は覚えておこう。
 Cametan42さんのプログラミングの話であった「スタイル」、これって思想から出てきているはずなので、プログラミングがデキる人が書いた文章はコードじゃなくてもスタイルの勉強になると思うんだよな~



2021/11/12
 今日はスーパーバイトデー。まあ、ほぼプログラミングの学習が出来なかった。「Land of~ 」をちょっと読み進めようか・・と8章へ。ワンプスという大昔のゲームを今風にリメイクするという・・


めちゃくちゃ面白そうじゃないか!で、どういうゲームにするのか?ページをめくると・・
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
 声出して笑ったw うーん、7章がグラフを作るという地味なものであったこと、前ページのオリジナルゲームのショボいグラフィックが頭にあった事などいわゆる「フリが効いている」というやつで、まんまと狙い通りにオオウケしてしまったわけだ。しかし良いセンス・・こういうオッサンになりたい。具体的な学習は明日から~

2021/11/11
 今日は本業のほうが結構詰まっててLand of~ があんまり進まず・・嘘です、全然進まず。7章の外部のグラフ表示ソフトへ送るためのテキスト装飾って内容なんですけど・・テキスト処理は興味がある!けどきっとPythonでやるだろうしなぁ・・とか。
 「Racketみたいなのが良いなぁ~」とか言ってたらCametan42さんが様々なLisp処理系を紹介する記事を書いてくださった! なんか部分的に無料で使えるものもありそうなので、ここはちょっと片っ端から試してみるか!明後日以降だけど!
 とりあえず前に教えていただいてお手軽な感じだった「xyzzy」なんですが
~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~
 コードを書いてC-Jで評価。で、結構長めの内容になったのでファイルを保存したんですけど・・次に読み込んだら全然評価できない状態になってる。ファイルを保存して読み込むとdefunなど組み込み関数の色が青だったのが黒になってる。前のをコピペしても駄目で、完全にテキストエディタとしての機能しか果たさないようになってるっぽい?

~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
 今度は「セッションを保存」とあるのでそっちを試すと青のまま復活。環境が保存されている模様。これさえ分かればとりあえず学習は出来るな。こういう書いて即座に実行してどう動くか確認ってのに慣れてしまってるので、CLISPは面倒すぎてちょっとなぁ~・・しかしそう考えると昔のC言語とかやってた人はどんだけ短いのでもいちいちコンパイルしないと検証できなかったのだろうか?面倒すぎるw


2021/11/10
 久々で時間をかけて「Land of Lisp」を読みながら手打ちで学習。6章の「Lambda」まで一応終了。いや~・・・



 この程度のなら行けるか~・・とか思ってたらテキストアドベンチャーゲーム制作が始まって一気に難しくなる。これは・・じっくりやってたら絶対に終わらないので、最後まで一旦読んでしまうって方針で行くか・・まあ予習ということで。けどリストを使っての状況描写とかアイテム管理とか、感心するばかり。Lispはリストとシンボルの処理が得意なので出来るだけそれらで管理するようにするとか・・なるほどねぇ!あと、説明がすごく丁寧。ちゃんと読んで手を動かせば理解できる・・・ような気がする。
 あと、やっぱりRacketの使いやすさは別格でしたね。RacketでもCommon Lispサポートするとかいうわけにはイカンのかなぁ

2021/11/09
 今日はスーパーバイトデー。宿直後、帰宅して数時間後にマンション清掃のバイト!そして宿直w!やっぱりプログラミングを身に着けようと思ったら学生時代が最適だな、と。後は老後か・・老後の趣味にプログラミングって素晴らしいと思うな~
 そして遂に「ハッカーと画家」を読み終えた!いや、色々と刺激になりました。驚いたのはLISPがそもそもプログラミング言語として考えられてなかったというお話。苫米地英人さんは「コンピューターは発明されたんじゃなくて発見されたんだと思う。もともと宇宙にはコンピューターという概念が内包されていて云々」的なことを言われてたと思うんだけど、LISPも「発見」されたんだ、と。これは人智を超えててもおかしくない・・かも知れん。
 後は最後のハッカーになるための方法ってところ。

自分自身に対して次の契約を結ぶことだ。以降、退屈なプロジェクトの仕事は一切しなくてよい。その代わりに、絶対に中途半端な仕事はしない。

 これ、ほぼまるごとそのまま岡田斗司夫が「オタクになる方法」として言ってることと同じだ(たまたまか岡田さんがパクってるかは知らんけど)。んで、思ったんですよ・・僕もね~・・宿直バイトとスワップサヤ取りと土地代と超節約生活でしたくない施術とか別にする必要がないわけなんだから、ちょっと予定より前倒しだけど「興味のある施術しかしない」フェイズに移行する時が来たか、と。患者さんには「ノリノリでない時には受けないでください」とか言ってるのに、こっちがノリノリでない施術をするのは失礼だしなぁ・・。


2021/11/08
 宿直後、すぐさま京都まで出張。帰宅後、宿直!うーん、Racketが恋しいぜ。宿直中は時間があるので「ハッカーと画家」を読み進める。けど、思ったより進まないんだよなぁ・・一日あれば読めると思ってたのに。


2021/11/07
 朝から施術連続からの宿直!しっかり寝てるつもりなんだけど恐らく「負のプラシーボ効果」で脳が疲れてると思いこんでいる!宿直先で「ハッカーと画家」を読みすすめるが、、捗らず。2002年出版(日本語版)の本だけど、これからはWEBアプリだ!ってお話。確かに!chromeの拡張機能でアプリ作れたらイイなあ、、あ、でも自分だけで使うとかは出来ないのかな?しょーもないWEBアプリばっかりが公開されてるコミュニティとかあったら気軽に参加できるかもなあ。
 あと、WEBアプリだとやっぱり動画編集みたいにデカいデータの処理をするにはまだ速度がねえ。
 明日も施術と宿直なんで読書だけになりそう。


2021/11/06
 宿直明け、20年ぶりくらいで高速道路を使って関西空港へ、、あ~緊張した。そして本業の施術!
 schemeでGUIのアプリを作るライブラリをちょっと拝見。おお、、別ウィンドウが出て謎の数字パズルが!ほぉ〜、、他にも普通にスーファミっぽいゲームなんかもあって、、そこまでのを作りたいとは思ってないのだが、、(ショボ過ぎで笑けるのを狙ってます)。
 後はLand of Lispをちょっとだけ、、疲れていたのね


2021/11/05
 図書館に届いたLISP関係の本を借り出す。デカい!そして分厚い!ちょっと画像では伝わりにくいけどCametan42さんがおっしゃってた「電話帳」の例えは大げさでは無かった!OnLispはネットに一応日本語訳があるし、実用Common Lispはあまりにも手強そうなのでまずは・・「Land of Lisp」からやな。
 どの方言を選ぶかってのは誰もが悩むことらしく、それを解決してくれる心理テストが用意されている。ABCのうちどれを選ぶか?ということで僕はBを選んだわけだけど・・「Scheme」を推薦されてビックリ。確かに・・ゴテゴテしたものとか、あんまり外部のライブラリに依存したものとかって好みじゃないかも・・。
 しかし「On Lisp」もそうなだけど「前書き」が素晴らしい!むちゃくちゃやる気を掻き立てられる。洋書ってのはそういうものなのか、それともLisp愛好家は文章が達者なのか・・そう言えばいつもアドバイスいただくCametan42さんも文章が巧みだし、苫米地英人さんの本もすごく読みやすい(オーディオブックで聴くと明らかで、日本の本を朗読したものって「聴いてられない」ってのが多かった・・気がする)。
 宿直バイトに「ハッカーと画家」を持ち込む。まだまだ序盤だけどタイトルと同名の章にある「著者のプログラミングの学び方」はハッとさせられた。もっと気軽に、とっとと、手を動かしてこねあげるように取り組もう(^o^)


2021/11/04
 悪名高き3万字制限に達したので新しくなります。
 宿直から帰宅後、とりあえずPCを起動してSyntax-rulesを理解すべく、Scheme入門を読み始める。
~~~~~~~~~~~~~~

全然分からんw! と言うか書式が書かれてない気がする!見落としかも知れんが・・ b1... ってなんだ?
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
 しょうがないので他のページを見るか・・「独習Scheme~」を見ると・・Syntax-rulesどこいった?謎が深まる・・
~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~
更に「お気楽Scheme~」で調べると・・・ふんふん引数を取らない?
~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~
ふーん・・・?まあ、作るコツは最終的に好みのS式が吐き出されるように考えると?
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
 あ、なるほど・・マクロには2種類あってSyntax-rulesは「健全なマクロ」って言われる書き方だったのか。この書式を見てもピンと来ないが・・
~~~~~~~~~~~~~~~~


~~~~~~~~~~~~~~~~
 こちらの例でようやく書式が分かる(使いこなせるとは言ってない)。でもこれはちゃんと練習問題をやらんと駄目だな~。更に実際に必要に駆られて活用するって経験をしないと身につかん気がする(どれもだけど)。やっぱり一通り読んだら、何か「欲しいプログラム」を作ってみないとな~。しかし「お気楽Scheme~」の説明は分かり易い(気がする)。
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
という訳で最初から読んでゆくことにしました。Defineの理解も曖昧だったと判明w。最後に実行された処理の結果をその関数の実行結果として返すってのはちゃんと意識しないと・・(いまさら!?)
 明日はいよいよ「12歳~」を返却してLISP本4冊を借りる日、楽しみだ~

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事