京大マイコンクラブが教える絶対に失敗しない言語の選び方

キミには TeX がオススメだ!

論文作成ソフトウェア

大学生にもなると,TeX を使ってレポートや文書を書くことも多いはずだ!!

TeX はいわゆる組版ソフトウェアで,数式が美しく書ける,テキストベースなので複数人での編集がしやすい,無料……などの特徴から,特に理系の文書作成で広く使われているんだ!

君が大学の新入生なら,早めに TeX を覚えておいて損はないぞ!!

チューリング完全性

TeX を作ったのは大計算機学者ドナルド・クヌースだ!!

自著の組版を美しくするために開発したらしいのだけれど,なんと彼はマークアップのための言語をチューリング完全にしてしまった!! さすが計算機学者だね!

癖のある言語

チューリング完全だから任意のプログラムを作れるはずだけれど,TeX 言語は癖が強いぞ!

見やすさのためにと改行やスペースを入れると意味が変わってしまったり,ローカル変数の概念がなかったり,函数がないのでなんでもマクロを使って頑張る必要があったり,\expandafter で展開順序を制御する必要があったり,……使いこなすためには相当な修行が必要なはずだ!!!

TeX を自在に使いこなせるようになったら君も黒魔術師と呼ばれるようになるかもしれないぞ!

文芸的プログラミング

TeX はクヌース博士の提唱する「文芸的プログラミング」を助けるものでもあるんだ!!

ぜひとも文学的なプログラミングをしていこう!!!

様々な拡張

でも,そんな TeX 言語を皆が使いこなせるわけがないから,簡単にするためにつくられた LaTeX とよばれる拡張(ラッパーのようなもの)が,文書作成のためには広く使われているぞ! LaTeX では様々な点が TeX よりも人間にやさしくなっているから,良い子のみんなは (plain) TeX 層にはあまり触れずに LaTeX 層だけを触るようにしようね!!

もとの TeX は欧文(1バイト文字)しか扱えなかったけれど,日本語を扱えるようにした pTeX や jTeX といった拡張もあるよ!

最近は Lua を組み込んだ LuaTeX とか,フォントの扱い方を簡単にした XeTeX とかの変種もいろいろ出ていて,TeX 界の動向から目が離せないね!!!

サンプルコード

%もともと組版ソフトウェアなので文字列の表示は書くだけ
すごーい! 君はFibonacci数を計算できるフレンズなんだね!

%変数(カウンタ)の定義
\newcount\Cntra
\newcount\Cntrb
\newcount\Loopi
\newcount\Tempa
%初期値の代入
\Cntra=0
\Cntrb=1
\Loopi=1
%最初の二項を表示
\the\Cntra\ 
\the\Cntrb\ 
%ループを回す
\loop \ifnum\Loopi<15
 \Tempa=\Cntra
 \advance\Tempa by \Cntrb
 \Cntra=\Cntrb
 \Cntrb=\Tempa
 \the\Cntrb\ 
 \advance\Loopi by 1
\repeat
\end