とりとめのないことを書いております。
by tempurature
カテゴリ
全体
プログラミング
scheme
verilog
未分類
以前の記事
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 03月
お気に入りブログ
PHPで競技プログラミング
メモ帳
最新のトラックバック
ライフログ
検索
タグ
その他のジャンル
ブログパーツ
最新の記事
情報処理技術者試験 お疲れ様..
at 2016-04-17 18:55
基本情報技術者試験 平成27..
at 2016-04-14 04:48
基本情報技術者試験 平成27..
at 2016-04-13 23:03
苦い薬(ハーブ、サプリメント..
at 2016-04-09 14:03
「おバカ度チェックリスト」を..
at 2016-03-24 09:54
外部リンク
ファン
記事ランキング
ブログジャンル
画像一覧
<   2015年 12月 ( 40 )   > この月の画像一覧
【racket】REALM OF RACKET 5章まで読みました
5章では、2htdp/universeモジュールを使って、2つのGUIプログラムを作成します。

c0364169_22544731.png
Landing a UFO

UFOの画像が着陸するアニメーションを作成します。
(UFOの絵は私が書きました)

c0364169_22582545.png
Guessing Gooey

2章で作成したGuess My Number GameのGUI版です。

他のプログラミング本でも言えることなのですが、ソースコードを小出しにして説明していき、どっかこっかが抜けているという初心者泣かせの記述になっています。大丈夫、CとJavaができれば問題ないさっ!066.gif


2htdp/universeはよく出来たモジュールだと思います。下記ドキュメントのリンクをざっと目で追ってみてください。


[PR]
by tempurature | 2015-12-09 23:10 | scheme
【racket】Shift-JIS → EUC-JP に変換するスクリプト
改行コードは変えてません。


#!/usr/local/bin/racket

#lang racket

(current-locale "jp")

(define convert (bytes-open-converter "SHIFT_JIS" "EUC-JP"))

(define q '())

(let loop ([b (read-byte)])
  (unless (eq? b eof)
    (set! q (cons b q))
    (let-values ([(res num stat)
                  (bytes-convert convert (list->bytes (reverse q)))])
      ;(newline)
      (cond [(equal? res 0) (void)]
            [(= num 0) (void)]
            [(eq? stat 'complete)
             (write-bytes res)
             (set! q '())]
            [(or (eq? stat 'continues) (eq? stat 'aborts))
             (void)]
            [(eq? stat 'error)
             (write "?")
             (set! q '())]
            [else (write stat (current-error-port)) (error "ERROR")])
      (loop (read-byte)))))

(flush-output)
(bytes-close-converter convert)


[PR]
by tempurature | 2015-12-09 01:10 | scheme
【racket】subprocessを使ってみた
subprocessのサンプルを作成しました。
実行するにはcygwinがインストールされている必要があります。

(2015.12.8 ソースコードを修正)


#lang racket

(define-values (p i o e) (subprocess #f #f #f "C:\\cygwin64\\bin\\cat.exe"))

(write (read-line) o)
(close-output-port o)
(display (read-line i))
(display "\n")
(close-input-port i)
(close-input-port e)

(subprocess-wait p)
(subprocess-status p)


[PR]
by tempurature | 2015-12-06 23:54 | scheme
兄弟や知り合いからゲーミングマシンを譲ってもらったんだけど、使いみちある?
僕は一時期自作マシンにはまっていた時期があって、PCゲームなんかしないんだけど、5万円のGPUを2枚刺したり色々バカなことをやってました。結局、ゲーミングマシンはファンの音がうるさいので、全部処分したりしてるんですけどね。

それで、やっぱり同じような理由で、ゲーミングマシンを半ば押し付けられてるような人もいると思うのですよ。

そういう人はどうすればいいか、私の考えをまとめました。


<1> Virtual Boxをインストールする

Virtual Boxはタダなのでいいですよ。Linux OSをデュアルブートすると使い勝手が悪くなるので、Virtual Boxで仮想化するとLinux OSを快適に使えます。ここで、マシンスペックが悪いと非常にVirtual Boxが遅くなるので、ゲーミングマシンはVirtual Boxと非常に相性がいいです。

Linux OSは何に使えるかって?
Webサーバーの勉強をするときに使います(いいきり)。


<2> Chromebookでリモート接続する

Chromebookは3万円なのでいいですよ。PCをリモート接続して使うと、ファンの音がうるさいマシンを遠ざけることができます。しかもChromebookはハードディスクを積んでいないので、ソファやベッドなんかで雑に扱っても平気です。

ただ、Chromebookでリモート接続するとき、Chromeリモートデスクトップを使う事になると思いますが、アンダーバー「_」が入力できないという問題があるので、購入する前に詳細をWebサイトで確認しておいてください。


[PR]
by tempurature | 2015-12-05 06:15 | プログラミング
【racket】REALM OF RACKET 3章まで読みました
前の記事で、REALM OF RACKETはHtDPと変わらないといってましたが、大きな違いがありました。HtDPでは、choose languageでHtDP専用の言語を選択しなければならないのですが、REALM OF RACKETではちゃんと#lang racketしていました。

つまり、REALM OF RACKETはracket言語の入門書であるといえます。

また、この本には分からない英単語(特に形容詞)が出てきますが、非常に丁寧な説明なので読み飛ばせます。つまり、あまり辞書を引かなくても読める本なので、とにかく英語の本を1冊読みたい人にはおすすめかもしれません。

3章では、RacketのListとStructureについて解説していました。StructureはCの構造体とほぼ同じ概念なのですが、Schemeにはない概念だったと思います。RacketはCやJavaに似たような仕組みが沢山あって、それがRacketを使いやすくしているのですが、SchemerにとってはLisp感なくてがっかりさせてしまうのかもしれません。CやJavaの仕組みというのは、わかりやすいのですが、冗長でもあります。

また、Structureは、1個定義するとフィールドの数だけアクセサを定義します。これがどことなくpythonぽくていやなのです。慣れればなんということもないのでしょうけれども。

3章で特出すべきところとして、Racketのコメント形式について触れていました。Racketには、行コメント(line comment), ブロックコメント(block comment), S式コメント(S-expression comment)の3つがあります。

; 行コメント
; 行コメント
; 行コメント


#|
ブロックコメント

#| ブロックコメントは入れ子にできます |#

ブロックコメントの終わり
|#


#;(string-append
"S式コメント"
""
"ソースコードをスイッチさせて実行させたい時、"
"#;をS式の前に入れるとそのS式全部をコメントアウトできるようですよ")

(define (loop num)
  (unless (= num 10)
    ; S式コメントはローカル定義でも有効です。
    #;(display (string-append
              (number->string num)
              "ですよ\n"))
    (loop (add1 num))))


[PR]
by tempurature | 2015-12-04 03:25 | scheme
【racket】REALM OF RACKETの中身
REALM OF RACKETを2章までがんばって読んで、もしやと思い、残りのページをペラ見すると、HtDPとほぼ同じ内容であることがわかりました。

HtDPは、Web上に公開されているので、それを見ればいいと思います。


racketは、子供にプログラミングを教えるにはどうすればよいかという観点から始まっているようです。なので、プログラミングのつまづきがなくなるように、初心者に非常に丁寧に説明し、かつ、教材のようなライブラリも充実しています(ティーチパック)。

しかし、実用面で考えると、racketを実用的に使うための書籍がないことにがっかりします。公式のドキュメンテーションよりわかりやすい解説がないのです。

racketはLGPLであるし、どことなくアカデミック臭がします。

nutshellの使い勝手が半端ないし、haskellにしようかな〜


[PR]
by tempurature | 2015-12-03 00:19 | scheme
【racket】ゲス乙女ならぬ・・・
REALM OF RACKETのまえがき(Preface)、xvi項に次の文言があります。

[Can I Skip Chapters?]

You might think you can skip ahead and save Chad right away, but we highly recommend that you read this book from front to back. Each chapter depends on the knowledge you learned from the previous one, and we don't want you to miss out on any of Chad's adventures.

<<ブログ主による訳>>

[飛ばし読みできる?]

とっとと前に進んでチャド(この本の主人公)を救いたいと思うかもしれない。けれどもこの本を全部通しで読むことを強くおすすめする。各章はその前の章の知識を前提としているし、チャドの冒険をどれも見逃さないで欲しいのだ。


なんですけど、第2章のテーマが「The Guess My Number Game」。恐ろしく飛ばしてぇぇぇ〜〜〜


ちなみに、1章まではこんな感じです。

・Introduction : Lispうんちく。おもろい
・Chapter 1 : なんとなく使っていたDrRacketについてのまじめな説明。読む必要は、う〜ん。短いし読めば〜


[PR]
by tempurature | 2015-12-02 21:04 | scheme
Dr. Racketって...
Dr. Racketって、「ラケット医師」って意味じゃなくて、「ラケット博士」って意味だったんですね。REALM OF RACKETのDr. Racket像を見て気付きました。
[PR]
by tempurature | 2015-12-01 23:09 | scheme
【racket】英単語学習ソフトを作ってみた
せっかく英語の本を読んでいるので、英単語を学習するための簡単なソフトを作ってみました。

#lang racket

(display "Welcome to English word quiz!!\n")

(define *database*
  `("freshmen" "新人、一年生"
    "sophomore" "二年生"
    "expedition" "遠征"
    "novice" "初心者、未熟者"
    "engage" "従事する、携わる"
    "inquisitive" "そんなに根掘り葉掘り聞きたがるな/Don't be so ___."))

(define (loop rest)
  (unless (null? rest)
    (display (second rest))
    (if (equal? (read-line) (first rest))
        (display "Good!!\n")
        (display (string-append "Boo!! " (first rest) "\n")))
    (loop (cddr rest))))
(loop *database*)

(display "It's end. Good Job!!")


[PR]
by tempurature | 2015-12-01 22:10 | scheme
【racket】REALM OF RACKETを入手しました
c0364169_20384572.jpg
LAND OF LISPと同じ人が書いた本らしいです。とはいえ、racketの中心メンバーが数多く共著に名を連ねています。本の挿絵もLAND OF LISPとは違うのが入っていて、楽しめるようになっています。

本の巻頭には、なんと、ジョン・マッカーシーの似顔絵がドーン!!

「プログラミングGauche」と「Learn You a Haskell for a Great Good!!」と、どれ読むかすごく悩みます。

(ちなみにrealmはレルムと読むらしいですよ)

[PR]
by tempurature | 2015-12-01 20:56 | scheme