ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

ブログ5年目を軽く振り返る

いやはや、もうすぐブログ5年目も終わってしまいます。
今年もやります、この1年の振り返り記事です。

と、申しましても、今年度の成果として一番大きかったのは数学の勉強だったんですが、
数学の勉強は今年度というより去年の一月ぐらいから始めたので、年末に振り返るほうがキリが良くて昨年末に振り返ってしまったんですよね~。

ですので今さら書くことがない。

まあでも、数学の勉強してるってことはブログにたくさん書きましたけど、勉強内容をブログに書いたことってたくさんはないんですよね。

今年は勉強はいっぱいしたんですけど、ブログネタにせずひっそりとやっていたんですね。

まあ、ちょっと思い浮かんだアイデアとかをブログに書くのは簡単ですが、体系的に勉強してきた内容を書くのは長くなりすぎて気軽にはできませんしね。

まあ、数学とかでちょっと浮かんだアイデアを書いたことは数回ありましたか。


モチベーションの話で言うと、今年度が始まったばっかりの頃はそれ以前の調子の良さを引き継いでキレキレでしたね。

しかし、6月ぐらいからシークエント計算の述語論理に関する推論規則の固有変数条件の理解に苦しんで、それから夏季をまたいで勉強が滞るというスランプがありました。

ただ一番、今年度でアウトプットが多かったのは6月ですけどね。
アウトプットに集中していてインプットがありませんでした。

7月からは完全にクソブログ化します。

秋ごろからは勉強の勢いも復活してきて、勉強して思ったことの感想を近況報告として記事にしたりするのですが、実のある話題を記事にしたことは結局、現在に至ってもあんまりなかったですね。


あとはF#の勉強を十月とか十一月くらいから始めましたね。

群・環・体の勉強と並行して現在までやってまいりましたが、最近とうとう公開した、F#の勉強内容をまとめた記事「F#の基礎勉強まとめ (前編)」と記事「F#の基礎勉強まとめ (後編)」は今年度に書いた記事の中で最高傑作、努力の集大成だと思います。


というわけで、さっさとまとめると、今年度の前半は数理論理学の勉強、後半は群・環・体とF#の勉強をしていたということで、やはり昨年末に書いたことと同じですね。

とりあえずは今後も群・環・体とF#の勉強の続きを行ってまいります。
ただ、F#の勉強は一段落した感じなので、主に群・環・体をやっていきたいですね。

実はこの三月以降、上記リンクのF#の勉強内容まとめ記事の執筆に集中するため、まったくと言っていいほど群・環・体の勉強をしませんでした。

頑張ってリカバリしていきたいと思います。
まあ、もうすぐですが、6年目が始まったときに書く記事でも意気込みを書きましょうか。

直近のブログの予定ですが、今回もブログ5周年記念画像を作ってアップしますので、ご期待ください。
あとは6年目が始まったら意気込みを書いて、四月にプロフィールとかを更新して、それからは通常運行って感じですね。

ではでは、また近いうちにお目にかかりましょう。

tag: ブログ「サイバー少年」 周年 自分史 勉強 モチベーション

F#の基礎勉強まとめ (後編)

記事「F#の基礎勉強まとめ (前編)」の続きです。
前編を読んでいない場合は、F#の知識がない限り前編から読むことをお奨めします。

今回は、かなり長くなることが予想されますね。


最初に、前編で書いたことの訂正というか、多相型についての発見があったので記しておきます。

まず、多相型の名前は'aのようにシングルクォーテーションとアルファベットだと説明しましたが、実際はシングルクォーテーションと任意の名前で多相型を表せるようです。
処理系が多相型であると推論したときは自動的にアルファベット一文字が使われるというだけのことで、自分で書く多相型の名前はなんでもありです。


そして、関数の引数が多相型になる場合があると説明しましたが、引数の型が多相型であると明示できるようです。
そのためには後述するパターンの型注釈を使用して、型名を多相型にします。

let func (x:'a) = x

しかし、多相型の引数であると明示したとしても、たとえば

let func2 (x:'a) = x + 1

と書いたらxはint型しかありえません。
このように型を限定するようなコードを書いたら多相型がもっと狭い型へと“制約”されてしまうので、なんでもかんでも多相型に出来るわけではありません。

さらに言ってしまえば変数でも型注釈で多相型に出来てしまうのですが、値を入れた段階で多相型がその型へ“制約”されてしまうので、多相型の変数というのも宣言できません。


また、同じスコープ内で複数回、同じ名前の多相型を使う場合、それら全てが同一の型であるという前提のもとで上手な型推論が行われます。

たとえば
let func3 (x:'a) = let val:'a = x in val
これはvalの型はxと同じで、xは多相型ですからxに与えた引数によってvalの型や戻り値の型が決まるようなジェネリックな関数です。

let func4 (x:'a) = let val:'a = 3 in val
これはvalの宣言によって'aがint型に“制約”されるので、この関数に与える引数はint型でなければなりません。


この話題は依然として謎深く、個人的にさらなる研究が必要そうです。

続きを読む

tag: プログラミング F# 関数型 勉強まとめ 例外 リスト ジェネリックス パターン

近況報告というか話題のちゃんぽん

ただいま、記事「F#の基礎勉強まとめ (前編)」の後編を執筆中であります。
途中つなぎの記事を書くほど大規模なブログ記事を書くのは久しぶりですね。

現在、リスト、配列、タプル、レコードまで書き終わったのですが、判別共用体、パターンマッチ、例外を書いて手短に終わろうと思います。

ただし、パターンマッチが本当に内容的に濃い!
大変ですね。

さて、上記リンクの記事でも書いてあるように、F#の文法は解説しても、実際にプログラム書いたことがほぼ無いんですよね~。

というわけで、ちょっと前ですが、なにかプログラムを書こうということで、なんともベタなじゃんけんのプログラムを書きました。

せっかくなのでYahoo!ボックスに上げておきましたから、ご覧ください。
なにせF#の経験が浅いので、変な箇所があるかもしれませんが、ぷぷぷ~と笑ってないでコメントにてご指摘下さいませ。

Janken.txt (Yahoo!ボックス)
http://yahoo.jp/box/_9_RYk


このプログラムを書きながら思ったのですが、関数に引数として別の関数の戻り値を渡してもいいし、
関数に直接、別の関数を渡しちゃって、むこうの関数で引数を与えて戻り値を作ってもいい、というこの関数と値の区別のルーズさは特徴的ですね。

今回の場合は逆にそれがややこしくなって、変なプログラムになってしまったかもしれませんが…。

続きを読む

tag: プログラミング F# 数学 証明 論理学 勉強 群環体 結合法則 Nexus iPad

2月

コンピュータ関連で覚えた技術
・F#のモジュールや名前空間について学んだ。

その他で覚えた技術
・群について少し学んだ。
・一般結合法則の証明について調べた。
・可換群の性質についての問題を解いた。

コメント
数学について、たくさん勉強しているような書き方ですが、下の2つは短時間でちょこっと調べてみただけです。可換群の性質についての問題は、上の群の一般結合法則の証明が書いてあったPDFにありました。そして群・環・体の勉強に使っている本の、群の章を読み終えたので群の勉強は今回で完了です。F#の勉強も、サイトで基礎編と銘打っている部分は今回で読み終えました。

tag:

F#の基礎勉強まとめ (前編)

ついにやってまいりました。
今までF#の勉強をしてきたわけですが、勉強に使っているサイトで基礎編とされている部分を読んでいまして、とうとう読み終わったので内容をご紹介したいと思います。

学んだ文法を使って実際にプログラムを書けるかというと、まだちゃんとしたプログラムを書いたことはないし、正直、書ける気がしないんですけどね…。
記事「2017年 新年のご感想」でも書きましたが、文法を学ぶことと実際にプログラムを書くスキルを身につけることは別物なんだと思います。

それも含めて自然言語と人工言語という違いはあれど、新しいプログラミング言語を学ぶことは英語などの外国語を学ぶことと似ていると、今回F#の勉強をして思いましたね。

新しい言語機能を覚えれば新しい表現が可能なこと、それは他の言語機能で代用しても近い表現をすることは出来るのですが、新しい言語機能を使うほうが便利です。


というわけで、実践的なプログラムの解説をすることはスキル上の問題で出来ませんが、文法の解説をしていきます。

なお、めちゃくちゃ長くなることが予想されたので前編と後編に分けることにしました。

続きを読む

tag: プログラミング F# 関数型 関数 勉強まとめ

次のページ

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。