再帰的頭字語とバクロニムについての話です。
再帰的頭字語は、主にIT業界で使われる用語と言っていいでしょうか。
ある頭文字の名称の中にその名称自体が含まれている単語のことを言います。
まず、再帰という言葉の原点?を理解するためにC#の再帰を使ったプログラムをご紹介します。
再帰を使ったプログラムの例
再帰とはあるプログラムが自分自身を呼び出すプログラムです。
実際の業務でプログラムを書く際にはバグを引き起こす原因として再帰的プログラミングを避けるべきという意見もある一方、再帰を使うとプログラムがとてもエレガントにも見えます。
ここでは、そういった業務でのアプローチはおいておいて、再帰の意味を深めるためにとても簡単なサンプルで説明します。
1+2+3+4+5+・・・・・+Nの和を求めるプログラムです。
プログラムとしては関数としてMとM-1を足すという作業をN=Mから初めてN=0となったときに終了です。
C#のプログラムを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Recursive { class Program { public static void Main(string[] args) { Console.WriteLine("Result is {0}", Sum(10)); } public static long Sum(int n) { Console.WriteLine("Sum({0}) called", n); if (n == 0) { return 0; } else { return n + (Sum(n - 1)); } } } } |
プログラムの実行結果は次の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sum(10) called Sum(9) called Sum(8) called Sum(7) called Sum(6) called Sum(5) called Sum(4) called Sum(3) called Sum(2) called Sum(1) called Sum(0) called Result is 55 |
Sumという関数の中でSum自身を呼び出していることが再帰的なアプローチと言えます。
ここで重要なのは終了条件です。
このプログラムではSumに与える引数が0以外の時は再帰的にSum自身を呼び出しますが、Sumに与える引数が0の時は、Sumを呼び出しません。
よって、Sumに与える引数が0のとき再帰的呼び出しが終了します。
終了条件がないと無限ループに陥ってしまいます。
再帰的頭字語の例
IT業界で比較的有名な再帰的頭字語の例としては以下のものがあります。
Cygnus – Cygnus, Your GNU Support
GNU – GNU is Not Unix
Linux – Linux is Not Unix (Linus Torvald’s UNIXの方がオリジナルかな)
PHP – PHP Hypertext Preprocessor (もともとはPersonal Home Page)
PNG – PNG is Not GIF
Wine – Wine is Not an Emulator (もともとはWindows Emulator)
他にもたくさん例があります。
上記で共通していることは、最初の頭文字の意味は何か?
を文字通りに追うと無限ループしてしまうことです。
GNUのGはGNUのGなので、更にGNUのGのGNUのGはGNUのGという具合ですね。
上記のC#のプログラムサンプルになぞらえると、終了条件のない再帰です。
再帰的頭字語とは再帰というアプローチを使った一種の言葉遊びと言っていいでしょうか。
バクロニム(bacronym)
一方、バクロニムとは元々存在した何らかの頭文字に後付けで意味を与えることを言います。
例えば、SOSというモールス信号にSave Our Shipという意味を与えるようなことです。
私の知りうることころでは、IBMのUNIXであるAIXは、もともとはAdvanced UNIXの略だったそうです。
ただ、著作権表示などでUNIXの商標が問題となった際に、AIXはAdvanced Interactive Executiveの略になったと聞きました。
これもバクロニムと呼んでいいと思います。
ちなみに、Wikipediaによるとbacronymの語源は、back(後で)+acronym(頭字語)だそうです。
文字通り、後付けの頭字語です。
再帰的頭字語とバクロニム、IT業界ではしばしば登場します。
新たに何かの名前を付けるときは、再帰的頭字語とバクロニムを使ってITっぽい名称としたいところです。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント
[…] […]