ブログ「サイバー少年」

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

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

2017年が終わる

いや~、昨年末の記事「気がつけば年の暮れ 2016」も真夜中に書きましたが、今年も真夜中というか曙というか…。
毎年、大晦日は夕方に起きて、オールナイトして元日の朝を満喫して寝るんですよね。
それに今から合わせています。

2017年、今年も終わりますね。
昨年末の上記リンクの記事でも言っていたことですが、同じく今年も早かった!

ところで、時間の流れが早いというのは、どういうことなのでしょうか。
いや、なにか時間以外の次元があって、それの進捗状況と時間との対応が普通より早いときに早いと表現するのは分かるのですが、

その理屈でいけば時間が早いというのは時間と時間を対応させているわけで、その対応は早いも遅いもなくて常に変わらないですからね。

一年の“満足度”という次元と時間を対応させて早いと言っているんですかね。
ただ、“満足度”の定義が曖昧で、なにをもって“満足度”を測るのか分かりませんが…。
考えると、「今年も早かった」というのは解釈が難しいセリフです。


なんて話は置いといて、今年の始めの記事「2017年 新年のご感想」で、「今年の抱負」なんてものは設定するのはやめたけど、目標程度は書きました。


というわけで、まとめればコンピュータ系との関わりを持つというのが、今年の目標ですね。

考えてみれば、サイバー少年という名前まで付けて、プログラミングについて書くブログだと銘打っているのに、数学ばっかりに傾倒してるのも、なにかおかしいですからね。



と、書いたのですが、なにかおかしい状態がさらに激化した一年でございました。

今年の三月まではF#の勉強をやっていたんですけどね。
それ以降は数学(とりわけ群・環・体)しかやってねえ!

続きを読む

tag: 数学 群環体 目標 新年 勉強 FE 情報 プログラミング サルでもわかる小遣い帳

イロイロ快挙!&注目を浴びることの難しさ(Tehuに捧ぐ)

それはそれは昔、5年以上前、中1の頃に私が作ったソフト「混色シュミレータ&三原色解析ソフト「イロイロ」」ですが、先日、メールフォームの

ソフトウェアのバグ報告、意見、要望、質問 - サイバー少年
http://form1.fc2.com/form/?id=930235

宛に質問がありました。
このメールフォームに質問が来たのも、今頃かよ!って感じですが初めてだったので驚きましたが、

なんと質問者は美容師をやっている方で、ヘアカラーの染料(?)を作るのに使っているとのこと!

マジか!!!!!
真面目に使ってる人いたのかよ!!
(制作者としての自覚を欠いた発言)

遊びで使う人しかいないだろうというノリでした。


で、質問内容が外部の挙動だけでなくソースコード見ないと判別つかないような質問もあったので、5年前に作ったもの覚えてるわけがありませんが、
そこはバッチリ、ソースコードを保存してあったので、ソース読み直してご回答いたしました。


そしたらご返信がありまして、なんで美容師の方なのに、こっち業界の事情を知ってるのか分かりませんが、「プログラムの方向性とかから察するに基礎を持った方が作られているのですね」とお褒めの言葉を頂きました。

キャーーーやめて照れちゃう(*ノωノ)
(女子高生)


ただ正直、あの頃は、まあよく覚えていませんが、基礎とかありましたかねぇ。
過去に当ブログに綴った記録を見るに、VB.NET始めてから1年ちょいですよ。

まあ、あのときは習得ペースが半端じゃなかったので、すでにほとんどの言語機能を学んで、オブジェクト指向の概要とかもわりと理解してたはずですが…。

しかし正直、実務で使っていただけるようなレベルのものを作れているか自信がないですね~。
その直後に制作した「何進数でもオッケー」も致命的なバグが発覚してVectorでの公開は取りやめていますし…。

なんか、当時は「よっしゃプログラミング覚えたけん、なんでもいいから作ったっちゃるわ(??)」みたいな若気の至りで、適当にパパパッと作ってたんですよね。
中2あたりから慎重に時間をかけて作るようになって、その集大成が「サルでもわかる小遣い帳」ですけども。

続きを読む

tag: プログラミング イロイロ サルでもわかる小遣い帳 自作ソフト Vector 世間 Twitter Tehu

タッチパネル時代のプログラミング

この前、Scratchっていう、ビジュアルプログラミングの開発環境のひとつで流行しているものがあるようなので、ちょっと遊んでみたのですが、
正直プログラミングに飽きていた私にも、久しぶりにワクワク感を味わえてなかなか楽しかったです。

主に子供向けのプログラミング学習用の開発環境なんですよね。
同じ類としては日本の文部科学省が提供している「プログラミン」っていうのも遊んでみたことありましたが、こちらも面白いですが、

Scratchのほうが断然自由度があって、そのうえフレームワークが優れていて思ったことを直感的にプログラムにしやすいです。


Scratchを遊びながら、ちょっと考えたのですが、まず前提として現在のプログラマはテキストでコードを書くほうが圧倒的に快適にプログラミングできるので、
ターゲットのデバイスがタッチパネルであろうと、開発はパソコンでコードを書いて行うというのは流儀のひとつとして長く存在しつづけると思います。

しかしながら、タッチパネルでプログラムの要素を組み立てられるビジュアルプログラミングが、遊びや教育用の範疇を超えた新たな開発の流儀として、キテいるのではないでしょうか。


ましてや、今後の子供たちはScratchなどのビジュアルプログラミングで教育を受けてくるわけですから、プロになってもビジュアルプログラミングのほうが馴染みがある状態になるのは容易に想像できます。

そうなると、なおさらビジュアルプログラミングの市民権は大きくなります。

強めの表現を使うと、今後は少なくともアマチュアのプログラマの間ではコードを書くよりビジュアルプログラミングが覇権を握ると思います。


また、言語機能の面でも今まではコードを書くことを想定して作られていたので、多少なりともビジュアルプログラミングには向かない仕様があるはずです。
ビジュアルプログラミングは文字列ではないので、言語と称していいのかは微妙ですが…。

例えばScratchは変数の管理が面倒だなと思いました。
変数はビジュアルプログラミングには向いていないので、どのようなアイデアかは分かりませんが、新たなアイデアで解決に向かうと思います。

あと、関数とかも色々な画面を行ったり来たりして読むなんてやってられないので、廃れるんじゃないですかね。

さらに、Scratchはこの点では優れてるなと思ったのですが、一箇所に多くのオブジェクトを管理する処理を書くのは向いていないので、オブジェクトごとに自分自身を管理する処理を書くことになると思います。

まあ、それはオブジェクト指向設計の理想形なので、コードを書く場合と同じことなんですけどね。
さらにその必要が迫られるという。


最初は今までのプログラミング言語を視覚化するだけだと思いますが、徐々にビジュアルプログラミングが流行るにつれて、少しずつ、結果的には大規模にパラダイムシフトが行われる気がしますね~。

そして、その成果はプロの世界にも入り込んでくると思います。
ビジュアルプログラミングがプロにも流行るということです。

ただ、コードを書くことの利点もありますから、そこらへんでビジュアルプログラミングと競合しちゃって人材が二分化してしまうのは問題ですけどね。


久しぶりにコンピュータについて考えてみて、未来に思いを馳せた瞬間でした。

tag: プログラミング ビジュアルプログラミング Scratch 言語 タッチパネル 教育

情報処理への未練

もう数学のほうメインに移ってから2年ほど経ってしまうサイバー少年であります。
F#を半年前くらいにやっていましたが、じゃんけんゲームしか作ってないですし…。

サルでもわかる小遣い帳」を完成させられたことはプログラミングに対するいい思い出なのですが、ちょっと情報処理方面の成果としては小さすぎるかなという未練がありますね~。

一番の未練はPICマイコンと、プログラムのライターを買ったのに、何もしていないことですね。


数学という論理的思考の遊び場に足を踏み入れたキッカケはプログラミングですし、今の私の学問に対する志みたいなものの基礎を作ったのは、プログラミングなんですよね。

数学を現在やっていますが、ずっと頭を使いすぎて疲れたのか分かりませんが、最近は頭のキレが悪いです。

というわけで、ちょっと情報処理の方面に“帰省”しようかな、と思ったりしています。

情報処理はまあ、アルゴリズムとかは難しいですが、基本的には数学よりは頭を使うというか知識力を重視する学問ですから、今のコンディションならそっちのほうがいい…のか??

正直、集中力とかより記憶力の低下のほうがシビアですので、より不適当かもしれませんが…。


ただ、ちょっと数学の頭を使うハードワークから、一時的に逃避したいなと考えております。
将来の夢は数学教授ですが、んなもんなれるかボケということならプログラマーになると思います。
となると、一時的どころか人生をプログラミングとともに寄り添っていかなければなりません。

ただ、プログラミングの世界って日進月歩ですので、職業プログラマである以上そこについていかなければならないわけですよ。
そんなバイタリティもないんですが…。

続きを読む

tag: 勉強 資格 プログラミング 情報 目標 FE 能力

勉強のモチベーションと限界と

最近は数学を何時間も通してする機会がいくらかありました。
特に先月は数学4部作として、4つも数学についての記事を書いたわけで、当然その裏では記事を書くために考察に時間を費やしていました。

昔と比べて、最近はだいぶ数学などの勉強をする頻度や時間が増えていますね~。

もちろん、勉強しなければという義務感があって、勉強を成し遂げたときの充実感はすごくあるのですが、疲労感が溜まっていって今月はどうも疲れてしまいましたね。

やはり限界というものがありますね…。


正直、もともと数学が好きでやっているというより、数学で分からないことがあって、分からないままにしておくのが気分が悪いので、分かる状態になりたいという思いから数学やってるんですよね。

まあ結果だけみると数学をやるモチベーションがあるということになるのだと思いますが。

でも、これって諸刃の剣といいますか、分からないということのストレスを裏で抱えて数学やってますので、それがまあ分かるようになったときの達成感でカバーされているのですが、ぜんぜん分からない場合にはストレスばかり溜まってしまいます。


というのはいいとして、なんにせよ最近は数学をやりすぎて疲れてしまいました。

最近は疲労でペースも落ちて、数学との関わりもYahoo!知恵袋でちょっと分からないところを聞く程度でしたね。
(姉妹ブログの記事「Yahoo!知恵袋で長丁場」を参照)


疲れた原因というのは、数時間、数学をやるというのをいくらか繰り返しただけなんですけどね~。
ヘタレだなと思います。

大学の数学教授になりたいと言っていますが、まずなれるかという問題もあることながら、なってしまった場合に、数学漬けの人生になりますからね。

このヘタレな自分がやっていけるのかというのは不安です。
というか、大学教授になる以前に、大学で数学科に入ってやっていけるのでしょうか。

続きを読む

tag: 数学 勉強 プログラミング 目標 職業 モチベーション 休暇 クソ記事

数学ネタは人気が出ないのか…

先日、記事「PowerShellでジェネリックス!」にて、

ありがとう 参考になりました

というコメントを頂きました。


このブログの方針として、何か疑問に思ったことを検索したらこのブログがヒットして、それを見て疑問が解決する、みたいなブログになりたいと考えているので、
このようなコメントを頂けたのはとても光栄なのですが、

数学ネタをメインにしていくのは閲覧者のニーズに合致しているのか…!!??


なんか数学のネタに全然コメントが来ないし、このまえ記事「数学の勉強について雑記…」に一回だけ来ましたけど情報系の学部の大学生の方でしたし、

当ブログの閲覧者ってやっぱりプログラマとかプログラミング好きとかそういう方々だと思うんですよね。


まあプログラマというと数学好きを兼ねてる割合が高めだと思うんですが、数学好きじゃない人も多いですし、数学好きだとしても数学メインじゃないからコメントできるほど数学の知識もなかったり、数学の長文の記事を読むつもりもない、みたいな感じですか。


数学に傾倒したら駄目なのかチクショーーー!!!!!
どうやったら数学屋の方々にたくさん見てもらえるブログになれるんでしょうか。

ただ、数学好きの方々に見てもらえない理由はいくつか思い当たるんですけどね。


・数学好きの絶対数がプログラミング好きより少ない。

・プログラミング好きの人はブログなどのインターネットの文献を重要視している一方で、数学好きは書籍とか見てて、Webでもブログみたいなのは見ない。

・とくに当ブログのような新規性のないクソブログは見ない。


そもそも当ブログの閲覧者がほぼリピーターで固定であると思われるというのもあるので、既存の閲覧者に数学好きになってもらうしかない!!!

頑張れ閲覧者!!!!!!

続きを読む

tag: 勉強 数学 ブログ 閲覧者 プログラミング コメント 群環体 方程式

やはり数学力がない

群・環・体ですが、三月はまったく勉強をせず、四月に入っても前半は勉強をせず数日前になってようやく再開したんですが、しばらく勉強しないと理解力が衰えるもんですね。

久しぶりに本を開いたら意味不明でビビりました。
まあ、2回目以降はそれなりに理解力も復活してきましたけどね。


前回記事「将来の夢について書く」で数学科の大学教授になりたいと書きましたが、このごろ自分の数学力のなさを再認識させられて、やっぱり無理じゃねえかなと思ってしまいますね~。

いや、何度も申しますが理論を読んで理解するのは大丈夫なんです。
しかしその理論に関する証明問題などの問題を出されると、もう出来ないと。

大学で数学科に入ったら、講義で教えている理論をちゃんと理解しているかどうかを確認するために証明問題などを出題するということがよくあると思うんですが、そういうのは多分、私にはなかなか出来ないんじゃないかと思いますね。

問題が解けなければ、「こいつは理論を理解していない」と判断されかねないですが、決して理論を理解していないわけではないんですけどね。
ただ私の脳に入り込んで理論を理解しているかどうかをチェックするなんて無理なんで、問題を出すという方法でチェックするしかない。

なかなか、つらいですね…。


昔も書いたかもしれないですが、理論をどうやって重ねていくかの道筋を立てることが出来ないわけです。
スタートから一気にゴールに行けるような証明を考えるんですが、そんなのあるわけないと。

あと、普通の人って紙などにちょっとずつ思考している内容を記録していくみたいに、紙を使って証明するということも多いと思いますが、それが私には無理なんですよね。

頭の中のイメージをどのように紙に記せばいいのか戸惑いますし、戸惑っている間に考えていたことを忘れてしまうのです。
さらに、もし紙に記せたとしても、そこから元のイメージを復元するのに時間がかかる。

だから、それでスタートからゴールに一気に行かざるをえないというのもありますね。


証明を組み立てる力って身に付くんですかね。

私にとっては論理の世界というのはすごくぼんやりしていて、なんの目印もない広大な砂漠を歩いているようなもので、どこを歩けばいいのやら分からないですが、

数学の教授や数学が得意な人は、正しい歩き方を知っているのでしょうか。

続きを読む

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

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

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

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

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

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


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

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

続きを読む

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

次のページ

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