Hatena::ブログ(Diary)

++C++; // 管理人の日記


 ++C++;// 未確認飛行 C++

2011-01-28 TOP10簡易説明の C# のところ

プログラミング言語人気TOP10の簡易解説

などという記事が話題になっておりまして。

まあ、個人的な感想としては、「おそらく専門外であろう言語の説明にしてはよくできてるんじゃないかな」くらいのところ。

以前、まあ、言語/プラットフォームコミュニティごとの「非もて」談義に関して、twitterでかなり不快感をあらわにした批判をかけたことはあるんですが、あれも、実は内容そのものに関してはそこまで腹を立てていなかったり。(あの方、Android クラスターな人っぽく、そのAndroidは「非もて」だと言っていて、実は単なる自虐ネタくさいので。)

あの記事に関して何にそんなに不快感を示したかというと、「酔っぱらって書いたから、確信はないよ」の部分なので。

今回のこの記事に関して、突っ込みいれるとするなら:

  • Javaのコピー」
    • 実際、ドナドナされたあの会社がアレな感じでなければ C# は生まれず、MSJava に手を入れて、今の C# 3.0 的機能が Java に入ってたんじゃないかと個人的に思っています。
    • クロージャとか型推論」に触れているあたり、まあ、よくある「Java しか知らない人の偏見」と比べれば随分と「よく知っている」印象
  • 「Micorosoft頼み」
    • Mono な人に怒られるよ!
  • MSシンパな人、Windowsが大好きな人は、C#を学ぶことが義務付けられている」
    • ええ、義務付けられていますよ!… と、twitter でも言いかかったけども
    • 自分の場合は逆なんですよね。C# って言語に一目ぼれしたから今がある。さもなくば、MS シンパになっていない。
  • Windowsで動くGUIアプリを作りたい場合は、C#から始めるのもアリ」
    • C# の利点、GUI が作りやすいというのももちろんあるのだけども、.NET はカバー範囲が広いというのも大きな強みかと
  • 「参考図書: 独習Java」「なんかJavaっぽいなぁと思いながら書いたらちゃんと動いた」
    • これは、「世の中 COBOL っぽい Java で動いてるんだから、Java っぽい C# でもいいよね?」という自虐かと。
    • Java 屋さんからの転向組はこれでいいと思う。さすがに、これを真に受けた初心者が Java っぽい C# を学んでしまうとと少々悲しいけども。

moritamorita 2011/01/28 21:18 アリっていうか Windows の GUI で C# 以外を使う理由がおもいあたらない・・・・・・。

tolttolt 2011/03/10 06:14 始めましてtoltです。 ++C++;//未確認飛行C++ を見て、プログラミングをやってみようと思いました。 C#で初めてプログラムを作ったのですが、案外簡単でびっくりしました。これからも++C++;//未確認飛行C++にはお世話になりそうです。

通りかかった現役学生通りかかった現役学生 2013/03/22 19:50  私の研究室でもTeXを使って報告・発表・提出を行っています。個人的にはWordも嫌いで、今まで一太郎ばかり使っていましたが、この春からゼミにおける発表はTeXを用いるように指導されました。
 今は必死でTeXを使いこなせるように試行錯誤しています。TeX歴1ヶ月ちょっとの私としては、「使いにくさ、ここに極まれり」といった感じです。私の人力組版のスキルは全く役に立たないし、長たらしく複雑なコマンドを自在に使えないとまともな論文にならないし。

 ただ、一つ言えるのは、いかにWordの数式作成が進化しようと、いかに社会でWordが世界標準であろうと、「すべての学生が、人力組版がきちんとできるわけではない」ということです。往々にして、「よくもまあ、こんな汚らしい組版で発表する気になるな」という人が五万といます。
 その点、TeXは美しい組版がだれでも実現できるわけですね。学生のうちに、TeXを用いて、「美しい組版はどういう風か」を学ぶ。そして、社会に出たら、世界標準のWord(+一太郎)で、それを再現する。

 そういう意味で、学生時代にTeXを使う意味はあると考えています。

 駄文失礼いたしました。

通りかかった現役学生通りかかった現役学生 2013/03/22 19:55
Firefoxで認証が通らなかったため、IEにURLを貼り付けたらトップに飛んでしまっていました。
違うページの記事に対してです。大変失礼いたしました。

【管理人様へ】
システム上可能でしたら、本コメント諸共削除をお願いいたします。

ほわいとほわいと 2013/05/31 00:32 辞める必要はないでしょう、せっかく使えるようになったのに。
使わないでいるのはありですが。

出番は少ないかもしれませんが、Texの方が向いている局面はあります。私は、社会人で、普段Wordも使いますが、Texでないとやってられない文書も担当しています。Wordで代用はできないです。
そういう時もありますよ、使えば使うほど味があります、Tex。
もちろん、Wordで用が済むことがほとんどですから、なにからなにまでTexにせよとはいいませんよ。WORDだけで用が足りている人もほとんどでしょうから。

それから、主観かもしれませんが、出来具合はTexのほうがはるかによいと思います。WORDのスタイルも使っていますが、大きな文書になると限界を感じます。

気が向いたらTexを思い出してください。仕上がりをきれいにしたくなったら。
業者にだしたほうが仕上がりはもっとよくなるかもしれませんが、
Texはよいツールです。私は辞められません。

ほわいとほわいと 2013/05/31 00:37
Firefoxで認証が通らなかったため、IEにURLを貼り付けたらトップに飛んでしまっていました。
違うページの記事に対してです。大変失礼いたしました。

【管理人様へ】
システム上可能でしたら、本コメント諸共削除をお願いいたします。

わたしも、同じになりました。
http://d.hatena.ne.jp/ufcpp/20100216/1266337507
このページのコメントです。

2010-11-15

5×3 の例のアレ 08:57

追記: http://kidsnote.com/2010/11/15/35or53/ こういうのがホットエントリーに入ってるけども、やっぱり3×5のどっちが「掛ける数」でどっちが「掛けられる数」かの問いには答えられてないなぁ。あと、指導要領からして終わってることが発覚。

さらに追記: http://d.hatena.ne.jp/yetanother/20101114/1289759677 「3×5≠5×3」派の意見は、やっぱり「指導要領を部分的に読んで曲解」ってところっぽい。

かけ算の5×3と3×5って違うの?

http://togetter.com/li/68853

5×3は不正解派の人があんまりにも納得いかないんで今更釣られてみる。

正解派はもちろん:

  • ×付けられてどこが問題なのか気づける相手ならいいけど
    • 3皿5個のリンゴの数が、(皿に置かず)3行5列に並べても個数変わらず、さらにそれを横から見て5行3列にしても個数変わらないという脳内イメージができてる子供相手に、「5×3はダメ」を納得させられる?
  • 掛け算は可換だから気にすんな
    • 掛け算の可換性も確か同学年で教えるはずなのに、それと矛盾する
  • もちろん考える過程は大事だけども、こんな短い式から過程は読めない
    • 皿ごとにカウントしてって 3+3+3+3+3 と、お皿に1個ずつ乗せて各皿3個になるまでカウントして 5+5+5 と数えるのと、どっちも正解じゃない

なわけですが、そこで不正解派の人曰く、

  • 「掛ける数」と「掛けられる数」が違うからそこは厳密に

って言ってるわけですね。

じゃあ・・・

どっちが「掛ける数」?

「掛ける数」と「掛けられる数」が違うというところまでは、(少なくとも哲学的には)納得は行くものの、そこから先の説明がまるで納得できるものがない。

3×5、どっちが「掛ける数」で「掛けられる数」数なの?

  • 3に掛ける5 だから 5が掛ける数
  • 3を掛ける5 だから 3が掛ける数

どっちだよ!

「5皿に3個ずつ」と「3皿に5個ずつ」が違うのはいいとして、「3×5」を「3皿に5個ずつ」と読む根拠は?「5個を3皿」でないのはなぜ?

あと、順序気にしておかないと割り算の時に詰まるって?じゃあ・・・

  • 15個を3個ずつ皿に分ける
  • 15個を5枚の皿に分ける

やっぱ問題次第じゃないかと・・・

言語と語順

ここで、もう少し話をややこしくしてみましょうか。×って記法ヨーロッパでできてますよね。じゃあ、印欧系言語の語順で考えないといけないのでは!試しに英語にしてみましょうか。

  • 3 times 5 (5を3回)
  • multiplies 3 by 5 (5を3に掛ける)
  • 5 dishes of 3 apples (3個のリンゴが5皿)
  • 3 multipies 5 (3が5に掛かる)

ややこじつけなものの、でも、言語によって語順は変わるということは重要。

抽象化

こんな言語依存な話になっちゃうのって抽象化が足りないんじゃないですかね。だからこんな言語依存、読み方依存な議論になっちゃう。

数学(算数も後々には数学につながっていく)として、抽象化は非常に大事なわけですが。もちろんそんな話小学生相手にしても難し過ぎますけども、上記のような話が記憶の片隅に残って、抽象化が必要な歳になった時にそういう志向ができない子に育ったら嫌だなぁと。

最初にちょっと書いてますけども、この問題の場合、抽象化ってのは以下のような感じ

  • 3皿5個のリンゴの数が、(皿に置かず)3行5列に並べても個数変わらず、さらにそれを横から見て5行3列にしても個数変わらないという脳内イメージを作る
  • さらに、それはリンゴや皿である必要はない

このイメージができてる人相手に、「3皿5個と5皿3個は違うから3×5でないとダメ」って説明してほんとにいいものか。

可換性 13:02

3×5 の話題に付随して、そういや、掛け算の可換性についての話とかで盛り上がってる人もいるようで。

「可換性は自然なことではない」って。

3次元ベクトル外積とか行列とかを知ってると、そう思うじゃん?

体に限定すると?

3次元ベクトル外積も、行列の積も、あれって逆演算できないんですよね。掛けれるけど割れない。四則演算全部満足にできる体(たい, field)じゃなくて、環(かん, ring)。

非可換な環は結構多いけども、体となると非可換なのってすごく作りづらく。数の概念を抽象化して、環とか体って言葉が生まれたころですら、「体は可換」が普通だと思われおりまして。一般に、「体」とだけ呼べばその積は可換で、非可換な場合はわざわざ斜体と呼んだりも。

もちろん、非可換な体も作れはします。四元数(quaternion)がその例です。が、割と発見が遅かったという。

行列の Ax と xA

行列の積が非可換っていっても、じゃあ、

実はこれ、問題文が悪いんでどっちでも OK。x が縦ベクトルなら Ax だし、横ベクトルなら xA。

順序なんて記法の問題でしかなくて、どっちが正になるか、定義の仕方でなんとでも変えれます。

関数の適用

行列の Ax って表現、行列 A はベクトルに対する演算子になります。あるいは、ベクトルベクトル関数みたいなものです。A(x)。

一方で、プログラミングの経験ある人は、x.A() っていう表現にもなじみあるかと思います。特に、C# がわかる人は拡張メソッドを考えてみてください。A(x) でも apply A to x になりますし、x.A() でも同じく apply A to x。

要するに、演算子の前置きか後置きかの差でしかなく、やっぱり記法の問題。

集合的に見て

集合論で言うと、3 = { 0, 1, 2 }、5 = { 0, 1, 2, 3, 4 } っていう集合なんですね、3とか5って文字の意味するところは。さて、じゃあ、×の意味は?

一般には、掛け算の定義っていうと、

  • n+ を n の跡継ぎ元とする
  • f_n+(a) = f_n(a) + a となるような写像の列 f_n が作れる(ことが証明可能)
  • この f_n(a) をもって乗算を定義して、 a×n と書く

かな。あと、集合同士の直積の元の数で定義できたりも。3×5なら

  • {0,1,2}×{0,1,2,3,4} = { (0,0), (0,1), ..., (2,3), (2,4) } = 元の数15個
    • () は順序対(ordererd pair)で、(0, 1)と(1, 0)は別の意味
    • {0,1,2,3,4}×{0,1,2} だと { (0,0), (0,1), ..., (4,1), (4,2) } になって、集合的には別
    • ただ、自然数としての 3 とか 5 は「集合の元の数」で定義するんで、{(0,0), (0,1), ..., (2,3), (2,4) } と { (0,0), (0,1), ..., (4,1), (4,2) } はどっちも15と同値

腐女子演算

3が攻めで5が受けという意味なら 5×3 は不正解!

こればっかりは納得。

3とか5がどう擬人化されてるのかはちょっとわかりませんけども・・・

(ところで、最近のIMEときたら、腐女子を一発変換してくれるんですね・・・)

2010-09-29

萌えキャラ路線 01:33

まあ、もうかれこれ1年くらい、↓こんなことしてるわけですが。

実は作った当初のこと言うと、あんまり乗り気じゃなかったんですよね、擬人化やるの。正確にいうと、「ただ絵にして終わり」ってのはやりたくなかった。もしやるのであれば・・・

  • 半端はやっちゃいけない
    • 基本的に、擬人化とかは突っ込みどころ満載なので、いっそのこと「もう突っ込んだら負け」って言わせるレベル目指さないと。
  • 不自然にキャラが露出するのは嫌
    • そんなところにキャラを入れる意味はあるのか?みたいなのになるのは嫌。
      • 無意味にトップページからキャラ入ってるとか、全ページのわきにキャラ入ってるとか、ちょっと。
      • 見たい人が見るのと同じくらい、見たくない人が見ないで済むってのも尊重したい。
    • キャラの絵があることを有意義に使いたい。
  • 一過性のものにするのは嫌
    • なんか、一過性のものって「その後、あれどうなってるの?」とか言って検索した時に残念な気持ちになるので。

「やる」と決めたのは、C#擬人化の一次まとめ - 猫とC#について書くmatarilloの雑記 ←このあたりの話題がきっかけなわけですけども。これを見てていろいろとイメージ固まったんですね。ガチで、継続的にやれるイメージ。

  • なんかいろいろ裏設定思いついちゃった
    • 無駄に裏設定練りこむ → 半端はやらない
    • 漫画にしよう → 数本分、ネタ起こし → 絵を活かせる & 継続的にやれそう
      • 今主にやってるような、「あるある」ネタな感じのコメディ
      • 可能であれば、オーム社の「マンガでわかる」シリーズ的な感じで「マンガでわかる C#」やりたい
      • あと、裏設定で魔法少女設定とか無駄に作ったんで、やろうと思えばジャンプ漫画的なことできる(プログラミング関係ない、完全にネタ的なスピンアウト
  • これ単体で独立したコンテンツにもできそう
    • 不自然な場所で露出する必要ない
      • http://ufcpp.net/ の各所にキャラが出てくるとかいううざいことする必要ない
    • ほんとはブログも分けたいくらいだったけど、管理手間大変だから断念
      • せめてもと、タグはちゃんと設定
  • ちょうど絵の描ける知り合いがいたので、練った設定持って行って描いてもらうことに
    • ただ働きさせ続けるといつかくじけるだろうから、ちゃんとギャラ払ってやってもらう

とはいえ、最近、月1更新程度になってるのが惜しいところ…

やっぱ自分1人じゃ限界があるんで、いろいろと他の人巻き込みたいんですけどもね。まあ、実際、数名巻き込んでますけども。「みんな、C# たん描いて Pixiv ででも共有して!」とかやってるのもその一環。

ぶっちゃけ、商用利用含めて自由に使ってほしかったり。ライセンスがらみの条項、練らなきゃなぁ。C# の普及に一躍買ってくれるなら商用利用可!とか(線引き面倒だし public domain でいいかもしれない)。夜の方面にもうるさく言わないよ!自分じゃやらないけど、2次創作で色々やっていただいても。目指すはさのすけ(実は、C++ たんの部屋さのすけいたりする。)。

2010-09-25

論理的であれ、理性的でなく 21:36

たまに、論理的(筋道だてた説明を欲しがる/したがる)と理性的(本能や感情に流されない)が混同されがちな気がする。

論理的ってのは感情押し殺せって意味じゃなくて、感情すらも、その原因は何で、ならどうすればどう変わるか考えるってことよ。

食欲

というのも、 円満レトルト生活 - ++C++; // 管理人の日記なんてものをこないだ書いたわけですが、これに対して、「生物としての本能持ってるの?」などと聞かれる機会があり。

自分としては、おいしいとつい食べ過ぎるとか言ってる人よりも、栄養素の効率的な接種手段を求める自分の方がよっぽどピュアに本能に忠実な気でいるんですけども。

栄養の不足に対しても、食いすぎに対しても生命的な危機感を感じるというか。栄養足りてないと食欲がわいて、太り気味だと食欲控えめ。自分の好きなタイミングで、好きなものを、好きな分量だけ食う。本能的な行動だと思うんですけどねぇ。

群れを作る動物の本能

で、人の本能として、「楽したい」という気持ちと「人の役に立ちたい」という気持ちがあって、この2つは否定しちゃいけないことなんじゃないかと思います。その帰結として、以下のようなことはやっちゃダメ。

  • × 何の役に立つかわからないことに注力させる
  • × やることやった上での休憩を許さない

ぶっちゃけていうと、楽して儲けてる人すら否定しちゃだめ。儲かってるということは需要があるわけで、需要の先には何か役に立つものがあるはずで。むしろ、「楽したい」と「人の役に立ちたい」が両立している理想的なケースととらえるべき。(もちろん、現実的には、それが楽に儲かると周りも気づくことで参入者が増えて、すぐに楽な商売じゃなくなりますけども。)

働かざる者食うべからず」という言葉も、きっと、「楽するな」と解釈しちゃダメで、「人の役に立て、人を楽にさせろ」と解釈すべき。もしこれを「楽するな」と解釈するなら、たどり着く先は「仕事してるふり」でしかないと思う。理想形は「自分も含めて、みんなが楽できるようにする」。

聖人君子

他に普段からよく言ってるのでいうと、「聖人君子なんていない」とか「morale(士気)なくして moral(道徳)なし」とかいうセリフ。どっちも、「まず自分の身の安定なくして他人のことなんて気は回らない」「余裕をなくした人に道徳は期待できない」とかそんな意味合いで使います。

人に理性的であることを求める人は聖人君子を求めますけど、まあ、無理な話ですから。

感情や本能にあらがうのは並大抵の労力じゃ無理で、非効率にもほどが。効率を求めるなら、本能ときっちり向き合って、それを論理的に扱うべきかと。

2010-09-16

“s” 00:23

最近、twitter

自然言語に見られる理不尽な仕様、歴史をたどっていけばたいてい納得のいく理由は出て来る。けど、それは歴史あるから守ろうってものじゃなくて、たいていの場合負の遺産をしょっちゃってる状態。異文化交流進むほど消失する。

などとつぶやいていたわけですが。

英語が、他の印欧系言語比べてずいぶんシンプルになってるのも異文化交流の結果ですし、さらに言うと、まだ簡素化の余地あり。実際、英語ベースのピジン(他の言語と混ざってできた方言)だと、今の英語より簡素化されてたりします。

複数形

欧印系言語は、本来、格変化する代わりに語順が自由。英語は複雑な語尾変化をなくす代わりに語順の自由捨てたという言語です。

で、その複雑な語尾変化をなくす過程で複数形と三単元だけ残っちゃったと。残念なことに。

印欧系言語にとっては、「数を与える」ってのが大事なことだったりします。数を持たないと単語が具体化しないという。例えば:

  • dog: 漠然と、犬という種
  • a dog: 現実にいる「とある犬」

という区別。

昔は格変化があったので、原型が抽象、主格とか目的格にしたら具体化って区別できたはず。

  • dogで抽象的に犬という種
  • dogoで「とある犬」
  • dogosで「とある犬たち」

で、英語の、格変化の消失の過程で、この語尾の o が消えたと。その代り、数の概念は必要なので、冠詞か数詞をあためにつけなきゃいけない。

ただ、語尾変化なくす代わりに冠詞・数詞って発想まではいいけど、複数形だけ語尾変化を残したのがいただけない。複数形冠詞でよかったはず。

実際、ピジン語では these に相当する冠詞付けて複数形表すもの多いらしいです。英語の場合は some とかでもいいかも。冠詞らしく、sa とか som とか、妙に縮めてもいいだろうし。

  • dogで抽象的に犬という種
  • a dogで「とある犬」
  • some dogで「とある犬たち」

格変化が消失してるはずの言語としては、こっちの方が自然な感じが。

ちょっと余談: 原形=?

ちなみに、印欧系の場合、格変化前の原形は不定詞(英語でいうと「to + 動詞」的なの)に使われるせいか、原形のまま = 動詞的な印象があるみたいで。

日本語は逆ですね。たとえば、「走」という文字、「走る」というように「る」をつければ動詞、「走り」にすれば名詞的に使えるわけですが、「走」単体を見ると、どっちかというと「走り」の方の印象受ける。

というので、英語の場合だと、ほんとは、dog を原形のまま使うと、「犬のように何かする」(おそらくは、例えば、「従順になる/従順に言うこと聞く」みたいな)になるのかな。「犬という種」だと、dogoid とか、そういう語尾つけて。

you

英語の単複で変なのは、you もそうですね。I⇔we、he⇔they とかあるのに、you だけ複数形がない。

実際のところ、ないのは単数形の方なんですけども。というのは、古英語だと、

  • 2人称単数: thou thy thee
  • 2人称複数: ye your you

という区別があったので。thou 消失のからくりは、たぶん、フランス語の影響。フランス語だと、

  • 2人称単数 = 特定の個人をきっちりさして「あなた」 → 親しい人相手に「お前」
  • 2人称複数 = 漠然と大多数を指して「あなた」 → よそよそしく「あなた」

という感じで、単数形の tu は親しい人用、複数形の vous は敬語、みたいになっています。

英語も一時期、こんな用法になっちゃった上で、「結局めんどくさいから丁寧語の方で統一しようよ」みたいになって、単数形が消失。you だけが残ったという。

三単現

同じ理屈で変なのが三単現の s。これももともとは、1人称、2人称、3人称がそれぞれ別の語尾に変化してました。例えば、have だと、haf が語幹で、

  • I have
  • you hafst
  • he hafth

みたいな。(適当。というか、その当時は I とか have の形がそもそも違ったはず。)

それがなぜか、3人称単数現在形でのみ、それも、複数形の s と同じルールでの語尾変化が残ったという。

残った理由は、命令形かなぁと思われます。変なたとえですけど、

  • Mike! go home!(マイク、お前もう帰れよ!)
  • Mike goes home.(マイクは家に帰る)

って書けちゃうんですよね。三単現の s 取ったらこの区別がつかず。これも、昔だったら、命令形語尾があったから特に問題にならないんですけど、なぜか今の文法だと原形をそのまま使っちゃうので。

疑問形も、今の英語は「助動詞を倒置」とかいう意味わからない文法ですけど、普通の印欧系言語は動詞を倒置するはずで、動詞が頭にきます。今の do you have... みたいなのは hafst you... 的になるはず。活用なくなった今となっては命令形との混乱がありえそうな。

疑問形や命令形は、ピジン語で多いのは文末に感嘆詞をつけるってのですかね。日本語とか中国語がそうですけど、明示的な疑問形ってのを持たず、アクセントの付け方だけで疑問を表現。ただ、明示的に疑問を示した胃場合には語尾に「か」とか「ma」をつけたり。というのがあるので、中国語混じりのピジン語だとほんとに、平文+ma で疑問文を作ったり。命令文も、2人称現在形そのまま使うか、命令を明示したい場合は「平文+ba」とか。

ただの通りすがりただの通りすがり 2015/02/28 10:11 かけ算の順序で盛り上がっているようで・・・・
教師は大抵、文系人間
特に教員養成系大学出身で数学教師なんて、本来理系科目に弱くてもなれてしまう。
ましてや小学校教師なんて、ほぼ文系

文科省や教育委員会の言ってることしか勉強していないので
数学の達人達の言っていることが理解できていないだけ・・・
嘘だと思ったら、彼らに「群論」とか「アーベル群」って何?と聞いても
何一つ答えられない。
数学の奥深い世界を知っているだけで語り合いたい。