漠然とだけど、好きなプログラミング言語使って好きなように自由にプログラムが作ることかな
GUIで無い、サーバーで動くようなものやライブラリなんか作りたいね
SQLを使わなくてもよくて、別にRDBとかとやり取りをしないものとかいいね
RDBとかSQLにはなんか嫌われてる気がするから
やっぱりGUIでもいいや、GUI楽しいもんね
なんか便利なライブラリとかあるんだったらGUIでもいいね
.NET Frameworkだとライブラリとしては少し物足りないけど
WPFとかどうなんだろうか、まあいいや
誰にでも動かせるように実行環境に制限があるようなものじゃなくてこっちで環境を指定できるようなものとかいいね
PHPしか動かないからPHPで作るとか最悪、吐き気モヨオス、ゲロゲロ
そうなるとJavaScriptで全部ダウンロードしてもらうことになるとできそうだな
一番現実味がありそうだな
だけどなるべくなら静的に型付けされている言語の方がいいような気がするんだけど
今まで動的型付けの言語で本格的に開発したことないから良く分からないんだよね
他には要求とかイチイチ考えなくてもいい、これ作れって指示されてそれを作るだけ
黙々とプログラム書くだけ
要求仕様を考えなくてよくてプログラムのことだけ考えればいい
どんなもん作るかは勝手に考えてくれてその機能を実現するだけ
使い方を俺に決めさせたら俺が一番使いやすい物になるに決まってるじゃんか
少し具体的に言うとHaskellでなにか作るってのが理想に近いんじゃないかなと思う
本当はCommon Lisp使いたいのだけど少し不安
Common Lispはとても魅力的だけど理想状態を考えるとHaskellの方が理想に近そう
あるいはErlangでもいいかな
なんか面白そうなプログラミング言語使って好きなようにプログラムできるんだったらなんか良さそうだなと思う
それが具体的になんなのかさっぱり分からないけど
エディタなんかもいいかもね
でもエディタだったらVimがあるからな
なんか楽しそうな案件ないかな
コンピュータサイエンスの話題、Common Lisp、すこしHaskellにも触れます 求職中 スキルとしてはVisual StudioでC#が得意 Webアプリケーション、データベースの一般的な操作に精通しています 要件定義から設計、実装まで問題なくこなせます 一般的なプログラミング言語なら問題なく扱えます
2012年3月30日
2012年3月26日
Google Code Jam練習問題
2011の予選問題に挑戦
Problem C.
相変わらず問題の意味は良く分からないですがとりあえずxorすればいいのかなってことで解きました
xorでまとめただけです
Problem C.
相変わらず問題の意味は良く分からないですがとりあえずxorすればいいのかなってことで解きました
xorでまとめただけです
(defun compute (lst)
(if (zerop (reduce #'logxor lst))
(reduce #'+ (cdr (sort lst #'<)))
"NO"))
(dotimes (i (read))
(let ((r nil))
(dotimes (j (read))
(setf r (cons (read) r)))
(format t "Case #~A: ~A~%" (1+ i) (compute (nreverse r)))))
2012年3月22日
Google Code Jam練習問題
Google Code Jam 2012のエントリー受付中なので早速登録しました
Lisper目指してますので回答はCommon Lispで挑戦していきます
事前準備と言うことで練習問題に挑戦しました
2011の予選問題に挑戦
Problem A.
は問題のまま素直にプログラム組むとターンで繰り返すようになりますが、そうすると遅そうなので距離をまとめて引き算して次のスイッチの距離までを一気に計算するようにしました
BなのかOなのかの判断がイマイチ野暮ったい回りくどい記述になっているなと思います
この辺りをなんとかするともう少しスッキリしたものになるんじゃないかなと
Problem B.
は問題の意味が分からない
英語が辛いです
Lisper目指してますので回答はCommon Lispで挑戦していきます
事前準備と言うことで練習問題に挑戦しました
2011の予選問題に挑戦
Problem A.
は問題のまま素直にプログラム組むとターンで繰り返すようになりますが、そうすると遅そうなので距離をまとめて引き算して次のスイッチの距離までを一気に計算するようにしました
BなのかOなのかの判断がイマイチ野暮ったい回りくどい記述になっているなと思います
この辺りをなんとかするともう少しスッキリしたものになるんじゃないかなと
(defun operate (input)
(labels ((getrobot (lst) (car (car lst)))
(getdistance (lst) (cdr (car lst)))
(getnextpos (robot lst) (if (assoc robot lst) (cdr (assoc robot lst)) 0))
(getdiff (pos lst) (abs (- pos (getdistance lst))))
(getpos (pos target dist)
(cond ((< pos target) (if (< (+ pos dist) target) (+ pos dist) target))
(t (if (< (- pos dist) target) target (- pos dist)))))
(rec (lst bpos opos turn)
(cond ((null (cdr lst))
(if (eq 'b (getrobot lst))
(+ turn (getdiff bpos lst))
(+ turn (getdiff opos lst))
))
((eq 'b (getrobot lst))
(let ((diff (getdiff bpos lst)))
(rec (cdr lst) (getdistance lst) (getpos opos (getnextpos 'o lst) (1+ diff)) (1+ (+ turn diff)))))
(t
(let ((diff (getdiff opos lst)))
(rec (cdr lst) (getpos bpos (getnextpos 'b lst) (1+ diff)) (getdistance lst) (1+ (+ turn diff)))))
)
)
)
(rec input 1 1 1)
)
)
(dotimes (i (read) i)
(let ((r nil))
(dotimes (j (read) j)
(setf r (cons (cons (read) (read)) r)))
(format t "Case #~A: ~A~%" (1+ i) (operate (nreverse r)))))
Problem B.
は問題の意味が分からない
英語が辛いです
2012年1月17日
ストラウストラップのプログラミング入門を読み終えて
すごく時間かけて全部読みきったのですけど感想について
すごく細かく丁寧に書かれている本
心構えや姿勢みたいなものまで触れている
内容は本当に入門だから、これを読み終えても他にもいろいろ勉強しないとプログラム書けるようにはならない
この本は本当に入門に適しているかと問われると疑問が残ると思います
覚悟ができていないとこれだけの量を読むことは難しいと思うからです
覚悟ができている人には適しているでしょうね
だけどこの本を読んでもC++の良さについてはあまり学べないような気がしますが、それはやっぱり他の言語を使ってみて分かることだと思うので
メタプログラミングの説明が無いですね
無くて正解だと思いますけどね
テンプレートの説明のついでにメタプログラミングについてさらっと触れられているのかと思ったけどそんなことなかったなあ
一番面白かったところは言語の紹介の22章かな
だったら別にC++の本じゃなくてもいいじゃないかって感じですね
すごく細かく丁寧に書かれている本
心構えや姿勢みたいなものまで触れている
内容は本当に入門だから、これを読み終えても他にもいろいろ勉強しないとプログラム書けるようにはならない
この本は本当に入門に適しているかと問われると疑問が残ると思います
覚悟ができていないとこれだけの量を読むことは難しいと思うからです
覚悟ができている人には適しているでしょうね
だけどこの本を読んでもC++の良さについてはあまり学べないような気がしますが、それはやっぱり他の言語を使ってみて分かることだと思うので
メタプログラミングの説明が無いですね
無くて正解だと思いますけどね
テンプレートの説明のついでにメタプログラミングについてさらっと触れられているのかと思ったけどそんなことなかったなあ
一番面白かったところは言語の紹介の22章かな
だったら別にC++の本じゃなくてもいいじゃないかって感じですね
2012年1月3日
2012年1月2日
25章
組み込みシステムプログラミグについて
オープンな環境ではなくて特殊だったり閉じた世界でのプログラミングについての注意点
例えばヒープが利用できない環境でvectorを利用したい場合どうするか
ものすごく低レベルなプログラムについて
ビット演算などとコーディング標準について
オープンな環境ではなくて特殊だったり閉じた世界でのプログラミングについての注意点
例えばヒープが利用できない環境でvectorを利用したい場合どうするか
ものすごく低レベルなプログラムについて
ビット演算などとコーディング標準について
2012年1月1日
24章
数値の桁数、オーバーフロー、アンダーフロー、切捨てなど
コンピュータが扱う整数と実数の間での差について
記憶領域のサイズや誤差について
行列計算を連立一次方程式と解きながら実践する
あと乱数や三角関数などの一般的な数学関数について
コンピュータが扱う整数と実数の間での差について
記憶領域のサイズや誤差について
行列計算を連立一次方程式と解きながら実践する
あと乱数や三角関数などの一般的な数学関数について
23章
テキスト操作について
C++にはstringが用意されているのでテキストは比較的容易に扱えるようになっています
その説明と正規表現について
テキスト処理と言えば正規表現なのですがC++の入門書で正規表現について記述があるものは珍しいと思うのですが知っていると非常に有利だと思うのでC++の範囲から外にでるけどきちんと習得しておくことをオススメします
C++にはstringが用意されているのでテキストは比較的容易に扱えるようになっています
その説明と正規表現について
テキスト処理と言えば正規表現なのですがC++の入門書で正規表現について記述があるものは珍しいと思うのですが知っていると非常に有利だと思うのでC++の範囲から外にでるけどきちんと習得しておくことをオススメします
22章
歴史ですね
黎明期に利用された、あるいは現在のプログラミング言語に影響を与えたようなプログラミング言語についての解説
C++が入っているのが笑える
この本がC++なんだから入れなくてもいいような気がするんだけど
この章は一般教養のようなものでしょうね
黎明期に利用された、あるいは現在のプログラミング言語に影響を与えたようなプログラミング言語についての解説
C++が入っているのが笑える
この本がC++なんだから入れなくてもいいような気がするんだけど
この章は一般教養のようなものでしょうね
2011年12月31日
HP 35s
Common Lisp脳を鍛えるために役立つかどうか半信半疑ですが、逆ポーランド電卓買いました
HP 35s
後置演算対応の電卓です
Common Lispは前置だから完全に一致しているわけではないのですが、中置よりは全然力になるかなと思いました
と、言うのは購入に対する言い訳で、昔会社の人と休みの日にサッカーしてた時期がありましてですね、せっかくなんでサッカー好きな友達を誘って一緒にやろうぜって誘ったんですけどその友達は確か結局1回か2回しかサッカーしなかったんですよね
結局スパイクが欲しくて、当時ベッカム全盛期だったのですけどその友達はベッカムモデルのアディダスのスパイクが欲しかった
ただサッカーしないのにスパイクだけ買うってのがどうもなっとくいかなかったみたいでそこで俺がサッカー誘ったからこりゃ絶好の機会だねってことで早速スパイク買ってましたよ
サッカーするんだからスパイクなかったら話にならないってことでスパイク買ってた
HPの逆ポーランド電卓かったのも完全に欲しかったからなだけで、Common Lisp脳を鍛えるなんてのは購入に対する言い訳でしかないのですけどね
HP 35s
後置演算対応の電卓です
Common Lispは前置だから完全に一致しているわけではないのですが、中置よりは全然力になるかなと思いました
と、言うのは購入に対する言い訳で、昔会社の人と休みの日にサッカーしてた時期がありましてですね、せっかくなんでサッカー好きな友達を誘って一緒にやろうぜって誘ったんですけどその友達は確か結局1回か2回しかサッカーしなかったんですよね
結局スパイクが欲しくて、当時ベッカム全盛期だったのですけどその友達はベッカムモデルのアディダスのスパイクが欲しかった
ただサッカーしないのにスパイクだけ買うってのがどうもなっとくいかなかったみたいでそこで俺がサッカー誘ったからこりゃ絶好の機会だねってことで早速スパイク買ってましたよ
サッカーするんだからスパイクなかったら話にならないってことでスパイク買ってた
HPの逆ポーランド電卓かったのも完全に欲しかったからなだけで、Common Lisp脳を鍛えるなんてのは購入に対する言い訳でしかないのですけどね
2011年12月30日
21章
STLアルゴリズムについて
と言っても一般的なアルゴリズムの解説ではなくてコンテナやイテレータを利用してSTLでどうやって汎用性のあるアルゴリズムを提供しているかについて
また、STLアルゴリズムの利用方法について
コンテナを選ぶときの基準
STLって不慣れな人にはすごく利用しづらいものだと思うので、例えばテンプレートとか引数とか一目見ただけだとなんのことなのか良く分からないと思うのでそれらの解説
アルゴリズムを利用する際の要になる関数オブジェクトについての説明、使い方
昔、関数オブジェクト全然理解できなかったのだよねってことを思い出しながら読みました
コンテナ、イテレータ、アルゴリズムが独立しているこのSTLの概念に触れるたびにすごいなと関心しっぱなしです、本当にスゴイと思う
と言っても一般的なアルゴリズムの解説ではなくてコンテナやイテレータを利用してSTLでどうやって汎用性のあるアルゴリズムを提供しているかについて
また、STLアルゴリズムの利用方法について
コンテナを選ぶときの基準
STLって不慣れな人にはすごく利用しづらいものだと思うので、例えばテンプレートとか引数とか一目見ただけだとなんのことなのか良く分からないと思うのでそれらの解説
アルゴリズムを利用する際の要になる関数オブジェクトについての説明、使い方
昔、関数オブジェクト全然理解できなかったのだよねってことを思い出しながら読みました
コンテナ、イテレータ、アルゴリズムが独立しているこのSTLの概念に触れるたびにすごいなと関心しっぱなしです、本当にスゴイと思う
20章
コンテナとイテレータについてとそれぞれの内部のカラクリに関して
それぞれがどうなっているか、どういった機能が必要でそれを実現する方法について
色々なコンテナ、イテレータを区別しないで利用できる利点、必要性に関して
それぞれがどうなっているか、どういった機能が必要でそれを実現する方法について
色々なコンテナ、イテレータを区別しないで利用できる利点、必要性に関して
2011年12月24日
19章
やっとテンプレートの説明登場。
待ってましたと言った感じです。
アロケータとかでてきましたね。
なんか一気にレベルが上がった気がするのですが。
テンプレートの登場で一気に抽象度が上がったように感じるな。
面白くなってきましたね。
アロケーターについて説明があってやっと意味が分かった。
意味と言うか存在理由というか、なんのためにこれがあるのか不思議だったので。
待ってましたと言った感じです。
アロケータとかでてきましたね。
なんか一気にレベルが上がった気がするのですが。
テンプレートの登場で一気に抽象度が上がったように感じるな。
面白くなってきましたね。
アロケーターについて説明があってやっと意味が分かった。
意味と言うか存在理由というか、なんのためにこれがあるのか不思議だったので。
18章
コンストラクタについて。
コピーコンストラクタ、代入の意味や扱い方について。
浅いコピー、深いコピー。
浅いコピー、深いコピーについはクラスを扱う上では絶対必要になる。
クラスにどんなコンストラクタ、デストラクタが必要かのヒント。
あとは構文の見た目が自然になるように演算子オーバーロードについて。
配列についての考察とポインタとの関連。
値渡し、参照渡し、ポインタ渡しについて。
ポインタの問題点、注意点が詳しく記述されているので特に注意しておくといいと思う。
コピーコンストラクタ、代入の意味や扱い方について。
浅いコピー、深いコピー。
浅いコピー、深いコピーについはクラスを扱う上では絶対必要になる。
クラスにどんなコンストラクタ、デストラクタが必要かのヒント。
あとは構文の見た目が自然になるように演算子オーバーロードについて。
配列についての考察とポインタとの関連。
値渡し、参照渡し、ポインタ渡しについて。
ポインタの問題点、注意点が詳しく記述されているので特に注意しておくといいと思う。
17章
vectorを作りつつ色々学ぼうということ。
vectorと配列の違いやポインタについて。
アドレスとかデリファレンスの説明やなんでそんなもんがあるのかなど。
この説明がやっと登場するあたりさすがC++って感じですね。
このポインタやアドレスの説明読むとまあしょうがないそりゃそうだと思えるのだけど世間でよく言うように普通に挫折してそしてPHPやらなんやらで満足することになるのだろうな。
確かに初学者がこれ読んで「なるほど面白い」と思えるかと言うと素直にそうは思えないですがこれは非常に重要なことなので是非この難関を突破して欲しいところですね。
そしてクラスの説明もやっと登場。
とてもとても初歩的なクラスの説明だけど基本は大事だからしっかり身につけたいところ。
vectorと配列の違いやポインタについて。
アドレスとかデリファレンスの説明やなんでそんなもんがあるのかなど。
この説明がやっと登場するあたりさすがC++って感じですね。
このポインタやアドレスの説明読むとまあしょうがないそりゃそうだと思えるのだけど世間でよく言うように普通に挫折してそしてPHPやらなんやらで満足することになるのだろうな。
確かに初学者がこれ読んで「なるほど面白い」と思えるかと言うと素直にそうは思えないですがこれは非常に重要なことなので是非この難関を突破して欲しいところですね。
そしてクラスの説明もやっと登場。
とてもとても初歩的なクラスの説明だけど基本は大事だからしっかり身につけたいところ。
2011年11月13日
16章
GUIについて。
あるいはWindowシステムかな。
ユーザーとの対話に利用するボタンやテキストの入出力をGUIでどうやって行うか。
前章まではプログラマが一方的に実行するだけだったものをユーザーとやりとりしてその変化を画面に表示させる方法。
あるいはWindowシステムかな。
ユーザーとの対話に利用するボタンやテキストの入出力をGUIでどうやって行うか。
前章まではプログラマが一方的に実行するだけだったものをユーザーとやりとりしてその変化を画面に表示させる方法。
14章
仮想関数とかオーバーライドを解説してある。
ここはいっきに難しくなっている。
抽象化とかについて。
仮想関数の実現方法なんかいきなり言われてもピンとこないだろうけど説明は必要だと思うのでちょっと難しくなっているのはしょうがないかな。
話がグラフィックから離れ気味でクラスについての説明、オブジェクト指向の考え方についてになっている。
p.453の
「言語の達人になることはお勧めしない。」
はなかなか感慨深いお言葉だと思います。
ここはいっきに難しくなっている。
抽象化とかについて。
仮想関数の実現方法なんかいきなり言われてもピンとこないだろうけど説明は必要だと思うのでちょっと難しくなっているのはしょうがないかな。
話がグラフィックから離れ気味でクラスについての説明、オブジェクト指向の考え方についてになっている。
p.453の
「言語の達人になることはお勧めしない。」
はなかなか感慨深いお言葉だと思います。
登録:
コメント (Atom)