@wikiメニュー編集表示ツールヘルプブックマーク登録RSS登録
ログイン
新規ページ作成
すでにあるページをコピーして新規ページを作成 スレッドフロート型掲示板から引用して新規ページ作成(α版) ブログの内容から引用して新規ページ作成(α版) ファイルをアップロードして新規ページ作成(α版) 他のホームページから引用して新規ページ作成(α版)
[PR] 無料ホームページ @PAGES [PR] オークション@pedia [PR] 2ch型無料レンタル掲示板 @chs
@wikiで新規wikiを作成
このページを編集 このページを編集(メニュー非表示編集;α) このページをコピーして新規ページを作成 このページのページ名を変更 このページの編集モードを変更 このページの閲覧/編集権限の変更
このページにファイルをアップロード
このウィキにファイルをアップロード(FTP機能/管理者のみ利用可)
メニューを編集(メニュー部分は非表示で編集) 右メニューを編集(メニュー部分は非表示で編集)
このページの最新版変更点このページの編集履歴(バックアップ) このページへのリンク元 このページへのトラックバック
このページをPDFで表示(α版)
関連ページ(α版) 関連ホットワード(α版)
このwikiのページ一覧 編集履歴(バックアップ)のあるページ一覧 このwikiのタグ一覧 このwikiの更新情報RSSこのwikiの更新情報RSS このwikiの新着ページRSSこのwikiの新着ページRSS
このwiki内を検索 @wikiパーツ▶  @wiki便利ツール▶  このwikiの管理者に連絡
@wiki助け合いコミュニティ @wiki助け合い掲示板
wiki(ウィキ)って何?
初心者ガイド
ご利用ガイド 良くある質問 プラグイン一覧 編集モードの違いについて 不具合や障害を見つけたら 管理・設定マニュアル
はてなブックマークする FC2ブックマークに追加 Livedoor クリップに追加 Yahoo!ブックマークに登録 del.icio.usに追加
はてなRSSに追加 livedoor ReaderにRSSフィードを登録 Yahoo!にRSSフィードを登録 BloglinesにRSSフィードを登録 NewsGator OnlineにRSSフィードを登録 iGoogleにRSSを追加
@wikiパーツ:あなたのサイトにWikiデータを簡単表示!
最近更新したページの一覧を表示する 最近作成したページの一覧を表示する このwiki内を検索するフォームを表示する このwikiのタグクラウドを表示する 自動リンク辞書を利用する
@wiki便利ツール:トップページ
まとめサイト作成支援ツール RSSかんたん作成 興味キーワードをチェック!!(RSSナビ) いろんなblogのRSSかんたん作成ページ アマゾン商品検索(簡単アフィリエイト) wikiに株式情報(日本)を表示 wikiに株式情報(中国)を表示 かんたんHTML直接入力 Q&Aサイトかんたん連携作成 wikiに為替情報を表示 はてなアンテナと簡単連携
ところてん

日記

日記とか、電波とかそんな感じ。
Howitzerサポートページ

プログラミング教育用言語の設計



プログラミングシンポジウムにおける明治大学の宮下先生のHMMMMLについての発表で、参加者全員に火がついた。
http://www.youtube.com/watch?v=HJH3q3E3ab0
去年のプロシンで発表された原田康徳さんのviscuitもそうだったが、プログラミング教育というのはみなすごく困っているらしい。

その結果、夏のプロシンはまだ発表されてないけど「みんなが使えるみんなのためのプログラミング」ということになった。

自分も火がついたうちの一人だ。
なので、夏のプロシンに出してみようと思う。
そのためにプログラミング教育に何が必要か考えてみる。

現状の教育の問題点をいろいろと考えたけど、おおよそはこんな感じだと思う。

俺すげー感

Hello Worldだとか、そんなのを今更やっても何にも面白くない。

自分は自分が書いたコードで円が表示されたときは、飛んで喜んだ。
これでなんでもできると思って、すごくうれしかった。

昔のコンピュータはできることが少なかったから、プログラムを書かなきゃ何にもできなかった。
今のコンピュータはマウスクリックひとつでなんでもできちゃうから、今更Hello Worldをやっても何にも面白くない。
Hello Worldやりたきゃ、Hello Worldってキーボードでタイプすりゃいいじゃん。
なんでわざわざプログラム書かなきゃだめなの?
何が楽しいの?

プログラミングの時系列

プログラムは時系列を伴うが、高校までの数学教育は時系列を伴わない。
a=a+1 という書き方は数学ではありえないため、
プログラムには時系列があるという概念を獲得しないといけない。

しかしHello Worldだとか、forループを回して0~10まで表示するだとの初めの第一歩は時系列を含んでいない。
そしてこのようなことをやった次に、バブルソートだとか、時系列の塊が必要なものを教えられる。

そのため、時系列の概念を獲得しないままに次に進んでしまうため、挫折してしまう。

構造化プログラミングの必要性

学生に構造化プログラミングを教えても全く理解されないと嘆く先生が多かった。
いくら素晴らしさを伝えても、それを理解してくれないと。

そもそも、構造化プログラミングってなんで素晴らしいの?
構造化プログラミングって、スパゲッティコードにならないように書けるから素晴らしいんでしょ。
スパゲッティコード書いたことない学生にどうやって構造化プログラミングを教えるの?

オブジェクト指向を教えるって言っても、構造化プログラミングで大規模コードを書いてグチャグチャになった経験がないと利点がわからんでしょ。

プログラミング言語の設計方針

以上のようなのを踏まえたうえで、夏のプロシン用に教育用言語を作ろうと思う。

  • 俺すげー感
    • 少しのコードでエキサイティングなことができる。
    • 多少の構文エラーは吸収する
  • 時系列を含むモノを取り扱う
    • 音楽
    • 料理
    • ロボット制御
    • その他いろいろ
  • コピペ推奨でスパゲッティコードを誘発させる
    • gotoを使いやすくする
    • forやwhileは後から教えてもいいようにする

大体はこんな感じかなー。
方針は定まったけど、言語仕様の設計とか、何を題材にするかとか、スパゲッティの誘発方法だとかを考え中。



カテゴリ: [日記] - TrackBack(0) - 2010年01月17日 03:21:57
名前: コメント:

迷路を解くやつを書いてみた




アルゴリズム考えるのに10分、書くのに25分。
ダイクストラっぽい何かで実装。

  1. #coding: utf-8
  2.  
  3. import copy
  4. import sys
  5.  
  6. inputdata = '''**************************
  7. *S* * *
  8. * * * * ************* *
  9. * * * ************ *
  10. * * *
  11. ************** ***********
  12. * *
  13. ** ***********************
  14. * * G *
  15. * * *********** * *
  16. * * ******* * *
  17. * * *
  18. **************************'''
  19.  
  20. def solve(data):
  21.  
  22. #データ構造を作る
  23. start = None
  24. goal = None
  25. y = 0
  26. field = []
  27. for linedata in data.splitlines():
  28. x = 0
  29. field.append([])
  30. for w in linedata:
  31. if w == ' ':
  32. w = 100000
  33. if w == 'S':
  34. start = (x, y)
  35. w = 0
  36. if w == 'G':
  37. goal = (x, y)
  38. w = 100000
  39. field[-1].append(w)
  40. x += 1
  41. y += 1
  42.  
  43.  
  44. #距離の算出
  45. searchList = [start]
  46. def check1(x, y , step):
  47. if field[y][x] != '*':
  48. if field[y][x] > step:
  49. field[y][x] = step
  50. searchList.append((x,y))
  51.  
  52. step = 1
  53. while searchList != []:
  54. temp = copy.copy(searchList)
  55. searchList = []
  56. for (x, y) in temp:
  57. check1(x+1, y, step)
  58. check1(x-1, y, step)
  59. check1(x, y+1, step)
  60. check1(x, y-1, step)
  61. step += 1
  62.  
  63.  
  64. #ゴールから逆順にたどる
  65. x, y = goal
  66. step = field[y][x]
  67. def check2(x, y, step):
  68. if type(field[y][x]) == str:
  69. return False
  70. if field[y][x] < step:
  71. field[y][x] = '$'
  72. return True
  73. while step >= 0:
  74. if check2(x + 1, y, step):
  75. (x, y) =(x + 1, y)
  76. elif check2(x - 1, y, step):
  77. (x, y) =(x - 1, y)
  78. elif check2(x, y + 1, step):
  79. (x, y) =(x , y + 1)
  80. elif check2(x , y - 1, step):
  81. (x, y) =(x, y - 1)
  82. step -= 1
  83.  
  84. #表示する
  85. field[start[1]][start[0]] = 'S'
  86. field[goal[1]][goal[0]] = 'G'
  87. for linedata in field:
  88. for w in linedata:
  89. if type(w) == int:
  90. sys.stdout.write(' ')
  91. else:
  92. sys.stdout.write(w)
  93. sys.stdout.write('\n')
  94.  
  95. solve(inputdata)
  96.  
  97.  

出力
**************************
*S* *$$$$                *
*$* *$ *$ *************  *
*$*$$$* $  ************  *
*$$$ *  $$$$$$$          *
**************$***********
* $$$$$$$$$$$$$          *
**$***********************
* $$$  *$$$$$$$$$$$$$$G  *
*  *$$$$$ *********** *  *
*    *        ******* *  *
*       *                *
**************************
 

追記
なんかおかしいと思ったらprint文だと勝手にスペースが挟まるのか。
stdoutにwriteして修正。

最短性の検証は、ゴールから山登り法っぽいことしているので最短のはず。
コードが汚いのは仕様。


カテゴリ: [日記] - TrackBack(0) - 2010年01月12日 01:39:51
名前: コメント:

ハイスペックなグラフィックカードを刺す時のバッドノウハウ



あまりの寒さにGefoce GTS 250っていう暖房を買ったんだけど、
それをちゃんと動かすのにちょっと手間取ったのでメモ。

結論から言っちゃうと、ハイスペックなグラフィックカードを刺したときは、ATX電源に商用電源を入力してからしばらく放置してからPCの電源を入れろ。

商用電源をATX電源に入力してからしばらくしないと、電圧安定化用のコンデンサにチャージが貯まらない。
ハイスペックなグラフィックカードは、カード自体に大量のコンデンサが積まれており、電源投入時の突入電流が非常に大きい。
そのため、突入電流>ATX電源のコンデンサのチャージ という状態になると電圧降下が起こり、グラフィックカードが正常に起動しなくなる。

オシロで電圧を見たわけじゃないけど、たぶんこういう現象だろう。


商用電源を刺す、PCの電源を入れてもPCが起動しない。
商用電源を抜いて、メモリを抜いてみる
商用電源を刺す、PCの電源を入れてもPCが起動しない。
商用電源を抜いて、CPUを刺しなおしてみる
商用電源を刺す、PCの電源を入れてもPCが起動しない。
以下略っていう感じで4時間以上を無駄にした。

長いこと自作やってたけど、ハイスペックビデオカード刺したの初めてだから、こんな現象知らなかったよ。


カテゴリ: [日記] - TrackBack(0) - 2010年01月04日 01:10:38
名前: コメント:

Howitzer C77 抽選漏れ版



C77には出す予定はないですが、三月くらいまでには店舗に出す予定。
効果音と演出のテスト中。バランス調整はこれから。

C76版用のバージョンアップパッチ出します。


没になった演出とか。
http://twitpic.com/u5t2u
http://twitpic.com/o4s7c


カテゴリ: [同人] - TrackBack(0) - 2009年12月17日 23:59:04
名前: コメント:

銀河帝国の興亡 1




いやー、面白かった。
これはすごい。

なんつーか、悔しいくらいに面白かった。



カテゴリ: [読書] - TrackBack(0) - 2009年11月30日 01:29:18
名前: コメント:

更新履歴

2010-01-17

2010-01-12

2010-01-04

2009-12-18

2009-11-30

2009-11-25

2009-11-20

2009-11-03

2009-10-29

2009-10-17

2009-10-14

2009-10-13

2009-09-20

2009-09-07

2009-09-06

2009-08-24

2009-08-17

2009-08-16

2009-08-14

2009-08-13

2009-07-29

2009-07-21