おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

数学の英語

「数学の英語」とまぎらわしいタイトルにしてしまいましたが、「数式などを英語でどのように表現するか」という意味です。 ネットを探したら、こんなブログを見つけました。

Glatsという会社の運営するKimini英会話のブログです。 別にその会社を勧めるわけではありませんので、誤解なさらぬようお願いします。

実は、私は今年後半から数学を英語で教えるボランティアをする予定なので、あらためてネットで「数学の英語」を調べていました。 そこで上記のブログを発見したわけです。

数式の読み方はあまり英語の授業で習いませんね。 このブログは英語で習わない部分を補完するのに役立ちます。

 1+2=3

日本語では「いち たす に は さん」「いち プラス に イコール さん」「いち たす に は さん に ひとしい」などと言いますが、英語ではどうでしょうか? ブログにあるように、

  • One plus two equals three.
  • One plus two is three.
  • One plus two is equal to three.
  • One and two is three.
  • The sum of one and two is three.

などが考えられます。

掛け算の方が変化があって、たとえば

 2\times 3=6

は、

  • Two times three equals six.
  • Two multiplied by three is six.
  • The product of two and three is six.

など。 「times」が掛け算を表すところがおもしろいですね。 「two times」というのは、通常「2回」という意味に使われ、「twice」と同じです。 それを数式で使うというのは、「2回分の3は6に等しい」ということなんでしょうか。 「times」を使う表現が簡単なので、一番使われるように思います。

はじめに紹介したブログには、他の表現も書かれているので、興味のある方はご覧になってください。

今後、自分の勉強を兼ねて「数学の英語」をブログに書いてみたいと思います。

GTK 4 チュートリアルに新セクション

GTK 4チュートリアルに新たにセクション30を追加しました。 前回書いたtcsvで得られたテクニックである次の2点がその内容です。

  • 編集されたセルをリストのアイテムにコピー(バインディング)する方法
  • 動的にリストのアイテムの変化をGtkListViewのセルに反映させる方法

これらはGtkSignalListItemFactoryを使うことによって実現できます。 もうひとつのファクトリーであるGtkBuilderListItemFactoryは、変化のない静的リストを表示するには便利なのですが、応用がききません。 このことはずいぶん前から分かってはいたのですが、今回のセクション執筆でより明確になりました。

詳しくは、GTK 4チュートリアルのセクション30をご覧ください。

CSVファイルを編集するプログラム「tcsv」

GitHubのtcsvレポジトリをアップデートしました。 少々大きいプログラムで全体を見直したので、時間がかかり、その間ブログの更新ができませんでした。

CSVとは

CSVとは、コンマと改行で区切られた2次元データ形式のことです。 2次元データとは、エクセルデータのように縦横に長方形状に広がったデータです。 そして、CSVはテキストファイルで、データひとつひとつがコンマと改行で区切られます。 1行に含まれるデータ数は、すべての行において同一でなければなりません。 また、最初の行は見出し行(ヘッダー)となります。

CSVは簡単なデータ構造なので、様々な2次元データ、例えばエクセル、データベースなどでインポート/エクスポートに使われます。

tcsvとは

tcsvはC言語で書かれており、GTK 4の上で動くアプリケーションです。 tcsvはCSVファイルを読み書きでき、編集をすることができます。 単にデータの追加/削除だけでなく、フィールドの変更もできます。

tcsvのスクリーンショット

tcsvの特徴

tcdvはGTK 4のGtkColumnViewの良い例となっています。 GtkColumnViewの例では単に表示のみをするのが多いのですが、tcsvではGtkTextを使って入力することをサポートしています。 ちょうどエクセルのセルに書き込んで保存できるようなイメージです。 これを実現するには、シグナル・ファクトリーを使い、GtkTextからリストのアイテムへのバインディングが必要になります。 つまり、表示とは逆方向のバインディングです。

このテクニックについてはGTK 4チュートリアルに書き加えたいと考えています。

tcsvは役立つのかというと、まあまあ、と答えるしかありません。 もちろん、実用的であるのは間違いないのですが、同じ作業はエクセルでもできます。 ですから、どちらかというと、GTK 4のGtkColumnViewを試して見るためのプログラムとして意味があったと思います。

今回のアップデートについて

今回のアップデートは大きなもので、1464行の追加と2287行の削除を行いました。

  • バグの修正。特にメモリーリーク。
  • バインディングの方法をより簡単なものに変更
  • GTK 4とGLibの新しいバージョンへの対応(GTK 4.8、GLib 2.74.3)
  • プログラムの無駄を省き、よりスリムに。使用するクラスもより簡明なものを採用。

これでしばらくはアップデートは必要ないはずです。

このところ、CとGTK 4に取り組んでいましたが、それは一段落したので、このブログの更新頻度をあげたいと思っています。

「GTK 4 チュートリアル」のアップデート(完了)

ようやく「GTK 4 チュートリアル」のマイナー・アップデートが終わりました。

セクション28のGtkExpressionの全面書き直しに時間がかかりました。 「おもこん」の記録を見ると、37日もかかっていました。 アップデートされたチュートリアルはバージョン0.85としました。

何が変わったのか?

まず、GTK 4のアプリケーション・フラグの定数が「G_APPLICATION_FLAGS_NONE」から「G_APPLICATION_DEFAULT_FLAGS」に変わりました。 これはすべてのアプリケーションに使われているので、すべてのプログラムを書き換えることになりました。

プログラムの見直しをすべてについて行いました。

  • 誤りの訂正もかなり多かった
  • より分かりやすく、短くした

本文の記述において、おかしな文章を直した(おかしな英文を直した)。

本文の記述において、

  • より正確な記述に努めた
  • 無駄な記述を削除した

最後に一部のセクションは全面的に書き換えました。

今後はどうなるのか?

今回のバージョンアップでわかったのは、とても時間がかかるということでした。 それは分量が多いということが主な原因だと思います。

それで、内容追加を考えていたのですが、慎重に行うことにしました。 今考えているのはドラッグ・アンド・ドロップですが、少し時間をおいてからにします。 また、それによって分量が大きく増えるようならやめるかもしれません。

現状のメンテナンスは続けていく予定です。

現在のUBUNTUGTK 4バージョンは4.8ですが、開発サイトの最新版は4.10です。 バージョン4.10ではかなり変更があり、depricatedになる関数も多いです。 それにチュートリアルを合わせるのは、今後の仕事(大仕事)です。 現状ではアップデートは時期尚早であり、タイミングとしてはUBUNTUが4.10をサポートするようになってからになります。

休養が大事

しばらくは休養をとりたい・・・

休むことは次の仕事の質的向上にとっても大事です。

ブログの内容も少し手軽なものにするかもしれません。

「GTK 4 チュートリアル」のアップデート(続き)

GTK 4 チュートリアルのセクション22,24,25をアップデートしました。

セクション25のTiny Turtle Interpreter も若干のアップデートがあります。

  • tl (tern left) 左への方向変更の命令が加わった
  • rp (repeat) 回数を指定したループ命令が加わった
  • リサイズ時に図形を表示し続けるようになった。

例えば次のプログラムは正方形(一辺が100px)を描きます。

pd              # ペン・ダウン。これにより、前進時に線を描く
repeat (4) {    # 4回繰り返す
  fd 100        # 100px 前進する
  tl 90         # 左に90度向きを変える
}

昔流行ったLOGOというプログラムの簡易版です。 しかし、これを使うとフラクタル図形が描けて、ちょっと面白いです。

雪の結晶を模したフラクタル図形

この図形はコッホ曲線を6つ繋げたものです。

画面はturtleのウィンドウで、左半分がテキストエディタ、右半分が描画エリアになっています。 プログラムは保存/読込が可能です。

「GTK 4 チュートリアル」の一部アップデート(続き)

新年あけましておめでとうございます。 今年もよろしくお願いいたします。

さて、GTK 4 チュートリアルのセクション17から21までをアップデートしました。 時間がかかってしまいましたが、それはエディタのプログラム(tfe6とtfe7)を見直すのに時間がかかったからです。 しかし、そのリファクタリングによって、プログラムの質は向上したと思います。

tfeはシンプルなエディタですが、「一応」使えるエディタです。 GTK 4のチュートリアル用で、実用を目指したものではないので最小限の機能ですが・・・

しばらくは、これを使ってみてバグだしをしようと思っています。 (ないことを願っていますが)

残りのセクション22から29までは、2回に分けてアップデートする予定です。 最も時間がかかりそうなのは、タートル・グラフィックスのプログラムで、それを思うと気が重い・・・

「GTK 4 チュートリアル」を一部アップデート

GTK 4チュートリアル」のセクション1から16をアップデートしました。 なお、このチュートリアルは英語で書かれています。

このチュートリアルは?

このチュートリアルLinux上でC言語GTK 4ライブラリを使うためのチュートリアルです。

おかしな英語を多少まともにした

このチュートリアルを書いたのが2年以上前でした。 今読み返してみると、おかしな英語が多々有り、力不足を痛感しています。 逆にいえば、2年間で多少英語のレベルアップができていたのかも・・・?

現在の英語力もまだまだに違いありませんが、それでもあえて英語で書くことで自身の勉強にはなるはず・・・と思っています。 いろいろご指摘いただければありがたいです。

プログラムの修正

サンプルプログラムのバグ取りをしました。 大きなバグではないのですが、小さなメモリーリークがあったり、動作の正確さに欠ける部分がありました。 また、無駄な部分を削除しました。

内容の追加

説明を少し詳しくしました。 例えばフローティング・リファレンスについてはサブセクションをひとつ作りました。

今後の予定

残りのセクションの修正を優先して行います。 その後は、まだ構想段階ですが、ドラッグアンドドロップを加えようかと思っています。 勉強もしなければ書けないので、時間はかかると思います。

ご興味のあるかたはぜひレポジトリをご覧ください。 GitHub PagesのHTML版のサイトもあります。