*プログラミング用語解説 [#yad1e869]
#contents
**表記に用いられている記号 [#b5b871d4]
[関]:関連した語句を掲載。~
[類]:類義/類似した語句を掲載。~
[反]:対義語を掲載。~
[n]:複数の意味がある場合、角括弧内に数字を入れて、よく使われている、あるいはより一般的であると考えられるものから順に解説している。

**A [#qed84927]
-&aname(android){Android(あんどろいど)};~
[1] Googleが旗振り役を務めて進行する、次世代携帯電話用ソフトウェアプラットフォームのこと。~
LinuxベースのOSとミドルウェアで構成される。~
[2] その開発に使われるライブラリのこと。~
JavaでありながらJavaでないというポジションが、Sun様からやや嫌われぎみ。~
そんなこともあってか、Eclipseと親和性が高く、Eclipseを用いて手軽にAndroid向けソフトウェアが書けるようになっている。

-&aname(ascii){ASCII(あすきー)};~
[1] American Standard Code for Information Interchangeの略称。 ~
[2] ASCIIコードのこと。~
[3] パソコン雑誌等で有名な日本の会社。~

-&aname(asciicode){ASCIIコード(あすきー~)};~
文字を取り扱う上での一番基本的な英数字・記号の規格。単にASCIIとも。~
PC-UNIX等のUNIX系システムでは、man asciiとすることでASCIIコードの一覧を参照することが出来る。

-&aname(atandt){AT&Tベル研究所(えーてぃーあんどてぃー~けんきゅうじょ)};~
おそらく世界でも5本の指に入る、ハイテク研究機関。~
研究所の名称は、電話の発明者であるベル博士に由来する。(AT&Tってのは、向こうのNTT的な存在)~
トランジスタの開発やUNIX、Cの開発など、情報産業に与えた影響は計り知れない。


**B [#m66f31e8]
-&aname(b){B(びー)};~
B言語。UNIXやCの生まれ故郷である、AT&Tベル研究所で開発されたプログラミング言語。~
Cの直接の祖先で、中間言語にコンパイルしてからインタプリタ実行するという、現在のJavaのような実行形式を有した言語であった。~
また、変数型にはスカラー型しかなく、Cに置き換えられる形で絶滅した。

-&aname(bsd){BSD(びーえすでぃー)};~
BerkeleySoftwareDistributionの略。~
広義にはカリフォルニア大学バークレー校によるソフトウェア配布物全般を指すが、通常BSDといえば、FreeBSDやNetBSD、OpenBSD、DragonFlyBSDに代表されるUNIXクローンのことを言っているとみてまず間違いない。


**C [#x57cf1fb]
-&aname(c){C(しー)};~
カーニハンとリッチーによる、UNIXを記述するために開発されたなんて伝説のある言語。~
当時の言語としては汎用性が高く、修得も容易だったとされることから広く普及した。~
でも本当は、優れたOSであるUNIXがCで書かれていたために、UNIXをいじるにはCの知識が必須だったからというだけで、別にCが優れた言語だからという訳ではない。~
中級言語などと呼ばれ、アセンブラに近い処理からあるていど抽象化した処理まで幅広くこなせる。~
数々のシステムで標準言語として用いられ、実に多くの開発現場で現役として働いている。~
「まず勉強しようと思うなら、Cからはじめておけば間違いないよ。」などという悪魔の囁きが実に多くの場所でなされ、今日もまた新たな被害者を生み出している。

-&aname(cp){C++(しーぷらすぷらす/しーぷらぷら)};~
・オブジェクト指向プログラミングは、すべての問題を解決してくれる神様みたいなものじゃない。~
・Cでプログラミングするなんてバカらしい。~
・安全じゃないプログラムの作り方というものを、俺が教えてやろう~
の三つを信条に設計された言語。っていうか言語仕様膨大すぎ。~
おかげさまで、言語仕様に即した入門書なんてそうそうありません。


**D [#jaa09837]
-&aname(d){D(でぃー)};~
D言語とも。~
[1] Digital Mars社のウォルター・ブライトが中心となって、C言語の後継を目指して開発されているマルチパラダイムプログラミング言語のこと。~
[2] システム情報取得ツールDTraceに向けて用意されたスクリプト言語~
[3] マイクロソフトが開発中の、非開発者を対象とした宣言型言語。

-&aname(debug){debug(でばっぐ)};~
バグを取り除く作業のこと。卓越したドMプログラマになると、この作業が快感でたまらなくなる。~
企業に入ると、普段のコーディングはてんでダメなのに、debugになるとやたらすごい能力を発揮する人が居るという、そんな作業。~
基本的には重箱の隅をつつくような地味な作業から、仕様通りに動かないプログラムを動くようにする作業までの幅広い作業全般を指す。~
日本で最も有名かつ優秀なdebugチームは、任天堂の擁するマリオクラブだと思う。たぶん。

-&aname(delphi){Delphi(でるふぁい)};~
CodeGearによって開発されている、Windows向けRADツール。~
Pascalを独自にオブジェクト指向拡張した、Delphi言語を用いてプログラミングを行う。~
驚異的なコンパイル速度ど、よく作りこまれたフレームワークが特徴で、熱狂的なファンも多い。~
Delphi7から.NETにも対応し始め、現在では.NET2.0程度のテクノロジーを利用できるようになっている。~
親会社が不安定だったことから、紆余曲折あったものの、現在もなんとかやっている感じ。~
開発環境がフリーで手に入る、VBより早い、データベースとの親和性が高い、手軽にプログラムが作れる~
などの理由から手を出す初心者も多いが、たいていは情報の少なさに挫折する。~
っていうかマイナーなんだよね。Pascalとか。俺は好きだけどさ。


**E [#id1c3f62]
-&aname(e){E(いー)};~
E言語。LSI検証のためのオブジェクト指向のテストベンチ記述言語。
そっち系の業界では結構有名。


**F [#p6ec6366]
-&aname(f){F(えふ)};~
F言語。Fortranのこと。特にFと表記する場合、Fortran77のことをさす場合が多い。

-&aname(fortran){Fortran(ふぉーとらん)};~
ヨード卵に似ているけれど、こちらは列記とした科学技術演算用プログラミング言語。~
現存する最古の言語だが、現在も計算工学分野など、科学技術系のプログラミングでは需要が高い。~
現在利用されているFortranには大きく分けて、Fortran77、Fortran90、Fortran95が存在し、年代があがるごとに変態度が増す。~
Fortran90あたりを学んでおけば、もしかしたら計算工学系の分野からお呼びがかかる様なことがあるかもしれない。~
もちろん、新規開発ではなく、既存プログラムの保守だがね。


**G [#ffa8a82b]
-&aname(g){G(じー)};~
G言語。モーター制御に特化したプログラミング言語。~
文法はBasic+アセンブラみたいな感じ。

-&aname(gnu){GNU(ぐにゅー/ぐにゅ)};~
[1] RMS率いるフリーソフトウェア団体。~
ソフトウェアに自由を!を合言葉に、クローズドソースなソフトウェアを駆逐しようと日々尽力している。~
主たる目標は、自由なソフトウェアで固められたUNIX互換のシステム(GNUシステム)を作り上げることだが、それ以外の活動も活発に行われている。~
特に注目すべき活動が、コピーレフトライセンスとして有名なGNU GPLとGNU LGPLの策定である。~
このライセンスは多くのソフトウェアに適用されており、ひいてはオープンソースソフトに影響を与えるものであるため、特にソースコードがオープンにされているソフトウェアへのGNUの影響力は、一流と呼ばれるソフトウェアベンダーよりも強いと考えられる。~
[2] GNU is Not UNIXの略称で、GNUが目指すUNIX互換の完全に自由なオペレーティングシステムのこと。~
現在は中核としてLinuxをすえた、GNU/Linuxがよく知られているが、プロジェクトが目標としているのはHurdというコアを用いたGNU/Hurdシステムの完成である。~
Hurdの開発は難航しているうえ、ソフトウェア業界が日々変化し続けていることから、GNUシステムの完成は永遠に無いと予測する技術者さえいる。

-&aname(gpl){GNU GPL(ぐにゅー<ぐにゅ>じーぴーえる)};~
単にGPLとも。~
GNU General Public Licenseの略称で、GNUが推進する真に自由なソフトウェアに適用されるべきライセンス形態のことを言う。~
日本語ではGNU 一般公衆利用許諾契約書と訳され、その名称から、ソフトウェア作者と利用者との間で交わされるライセンス契約のひとつであることがわかるだろう。~
基本的には、第0の自由からはじまる5つの自由を約束するライセンス形態のことで、~
 0.ソフトウェアは必ずソースプログラムが入手できるようにすること。
 1.ソフトウェアの使用、複製、変更、頒布したり、新しいフリーソフトウェアの一部として利用することを制限しないこと。
 2.変更、改良されたソフトウェアは同じくGNU GPLに従って頒布されること。
 3.プログラムの全部あるいは一部を用いて作られたソフトウェアはGNU GPLに従って頒布されること
 4.ソフトウェアは無保証であり、そのソフトウェアが原因でトラブルが生じても作者に責任はないこと。
が柱となっている。特に厄介なのが第2条と第3条で、第2条に関してはLinuxなどGNU GPLの適用されたソフトウェアを自社製品のベースシステムとして採用した場合、改変した部分(例えば、自社の特殊な製品に適合させるためにチューンした部分)なども含めてオープンにしなければならないため、たびたび訴訟問題煮まで発展している。エレコムの、Linuxは二度と使わない発言は、この第2条に端を発するものである。~
第3条に関してはGPL汚染という言葉で知られており、特にオープンソースの利用が盛んになってきた昨今問題視されている。詳しくは、GPL汚染の項を参照していただきたい。~
GNU GPLは、良くも悪くも、ライセンスの大切さを教えてくれるライセンスであるといえる。~
[類] GNU LGPL

-&aname(lgpl){GNU LGPL(ぐにゅー<ぐにゅ>えるじーぴーえる)};~
単にLGPLとも。
正式名称をGNU Lesser General Public Licenseという、GNUが提唱するソフトウェアライセンス形態のひとつ。~
日本語ではGNU 劣等一般公衆利用許諾契約書と訳される。~
GNU GPLと違い、本体に手を入れない限り、クローズドな開発が可能であるため、ライブラリの類に適用されることが多い。~
GPL汚染の危険性が低いことから人気の高いライセンス形態であるが、そこはコピーレフトを提唱するGNUの唱えるライセンスだけに、利用には十分な注意とライセンスへの理解が必要である。

-&aname(gplcont){GPL汚染(じーぴーえる汚染)};~
作成したソフトウェアが、GNU GPL2条および3条の縛りによってGPL化されてしまう現象のこと。~
例えば、自社製品の内部コマンドとして、GNU GPLでライセンスされたソフトウェアの一部のソースコードをコピーし、用いたとする。(GNU GPLでライセンスされたソフトウェアは非常に多いため、便利なソースコードが多く、こうして利用してしまう技術者も少なくない。)~
そうすると、そのソースコードはすべてGPLとして配布されなければいけなくなる。~
より恐ろしいのは、GPLでライセンスされたライブラリを、自分のソフトウェアにリンクした場合にも、GNU GPL3条の縛りによってGPL化しなければならなくなる場合である。~
主として、この二つの場合をGPL汚染と呼ぶ。~
本スレッドでも話題になる場合があるが、GPLでライセンスしましたと書いたソースコードをスレッドに貼り付けた場合、GNU GPLを拡大解釈すれば、そのスレッドに貼り付けられたほかのソースコードもすべてGNU GPLでライセンスされなければいけないと読み取ることも可能なことから、冗談交じりにスレッドが汚染されたという話題が飛び交うのである。~
スレッドの汚染は冗談だとしても、オープンソースの利用が活発になっている昨今、プロプラエタリな環境でコーディングをしているプログラマにとって、特に注意しなければならない問題であるといえる。~
最近よく耳にする、busyboxを自社製品に取り込んだことによって起こっているGPL訴訟の大部分は、このGPL汚染によるものである。~

**I [#l995cd1a]
-&aname(inheritance){inheritance(いんへりたんす)};~
オブジェクト指向プログラミングにおける継承のこと。

-&aname(instance){instance(いんすたんす)};~
メモリ上に実際に配置されたオブジェクトのこと。~
オブジェクトの実体。~

**J [#i1bd9459]
-&aname(java){Java(じゃば)};~
スペルが同じなので混同しがちだが、コーヒーで有名なジャワ島のジャワとは発音が違うので注意。~
コーヒーマークといまいち目立たない奇妙なキャラクターが有名な、Sun Microsystemsによるプログラミング言語。~
Cの親戚みたいな文法をしていて、C系言語の修得者なら、比較的容易に実につけることができるとされている。~
目指すところは「一回書いてコンパイルしたバイナリは、どの環境でも動く」というものだが、所詮それは理想論。~
むしろ世間的には、言語レベルでGUIとスレッドをサポートしている点が、当時高評価を受けた。~
後に登場するC#言語などに強い影響を与えたほか、後発のC#言語に奪われつつあるシェアを奪還するためか、近年オープンソース化もなされた。~
あーもう、だめかもしれんね。サン。


**M [#tb20bd06]
-&aname(malloc){malloc(えむあろっく/まろっく)};~
C言語において、動的にメモリを確保するためのひとつの方法。~
alloc系関数の一種で、プロトタイプは~
 void *malloc(size_t size);
sizeバイトを確保し、その領域へのポインターを返す。メモリの内容はクリアされないので、利用する前には初期化が必要になる。また、返されるのが汎用ポインタであるので、適切な型にキャストしてやる必要が生じる。確保したメモリ領域は自動的に解放されないので、適切なタイミングで解放してやる必要がある。

-&aname(matz){Matz(まつ)};~
Rubyをつくった人のいいおじさん。まつもとゆきひろのこと。~
日本が誇るハッカーで言語ヲタク。クリスチャンでもある。~
国内有数の「物言うハッカー」としても有名。

**N [#a443400a]
-&aname(new){new(にゅー)};~
C++言語において、オブジェクトのインスタンスを作成する時に用いる演算子。~
また、Cプログラマが、C++を使ったときにまず感動する演算子でもある。~
メモリの確保とコンストラクタの呼び出しなど、これまでmallocを使いながらちまちまやっていた処理を一手に担ってくれる、まさに神のような存在。~
けれども、実はmallocと同様、確保した記憶領域は自分で解放しなくてはいけないことを知り、早々にゲンナリさせてくれる演算子でもある。

-&aname(null){NULL(ヌル/ナル)};~
0、または空値。~
言語によってはnull、nilとも。

-&aname(nullpo){Null pointer exception(ぬる<なる>ぽいんたーえくせぷしょん)};~
Javaに含まれるクラスのひとつで、例外の一種。参照先がnullな変数やメソッドを呼び出したときに、この例外がスローされる。nullチェックをきちんと行えば、まず出会うことのない例外でもある。

-&aname(nullre){Null reference exception(ぬる<なる>りふぁれんすえくせぷしょん)};~
コード内に存在しないオブジェクトを参照しようとした時や、nullなオブジェクトを参照しようとした時投げられる例外。.NET系言語で出会うことが多い。

-&aname(nysl){NYSL(えぬわいえすえる)};~
 ・使用料を要求しない
 ・再配布や転載を制限しない
 ・改変・利用を制限しない
 ・変更・一部引用に関して、原作者の許可を取ったり、原作者の著作権表示を含める必要は無い
を柱とする国産のオープンソースライセンス。~
煮るなり焼くなり好きにしろライセンスの略。DDE(ドー・デモ・イーヨ)とほぼ同義。~
Everyone'sWareを合言葉とし、みんなで使えるソフトウェアのためのゆるゆるなライセンスとして人気が高い。~
また、ライセンス文書が日本語で書かれており、それ自体が法的効力を発するだろうと考えられることも、GNU GPLのように原本を当たらなくても気軽に適用できて良いと考えられる大きな利点である。

**P [#re1042b2]
-&aname(pascal){Pascal(ぱすかる)};~
SI単位系で、圧力の単位。単位面積当たりの力をあらわす。表記はPa

-&aname(perl){Perl(ぱーる)};~
[1] ラリー・ウォールによって開発された、テキスト処理に主眼を置いたスクリプト言語。~
いかにも後付け感のある、Practical Extraction and Report Language、またはPathologically Eclectic Rubbish Listerという言葉の略称であるとされている。~
「ひとつの結果にたどり着くための記述手法が、非常にたくさんある」ことでも有名な言語で、今日書いたソースでも、3時間後には読めなくなっている可能性がある。~
主としてCGIに使われたことで、ウェブの黎明期を支えた。~
現在でもCPANという強力なライブラリ管理ツールと共に、幅広いソフトウェア分野で利用されている。~
[2] Perlを処理するインタプリタのこと。このインタプリタをさす場合、正式にはperlと表記する。

-&aname(php){PHP(ぴーえいちぴー/ぴーえっちぴー)};~
正式名称をPHP : Hypertext Preprocessorという、お手軽言語の急先鋒。~
動的にウェブページを生成することに主眼を置いたプログラム言語で、主にサーバサイドで利用される。~
XMLや各種データベースを手軽に扱うための機能が充実していることから、ウェブに関連したアプリケーションの多くがPHPで書かれるようになった。~
その手軽さから初心者向け言語などと呼ばれるが、「初心者がウェブアプリを書くな」「言語使用が不安定」「そもそも初心者向け言語など存在しない」などといった理由から、嫌われることも多い。~
[類] ASP、JSP

**R [#rb5bbc30]
-&aname(rad){RAD(らど)};~
[1] Rapid Application Developmentのこと。~
プログラム開発手法の一つで、プロトタイプを何度も作りながら、目的とする完成形に近づけていく開発手法をさす。~
[2] RAD環境のこと

-&aname(radd){RAD環境(らどかんきょう)};~
プログラムの作成を、高速かつ確実にするために特別に作成された統合開発環境のこと。~
特に、GUI部分を要する複雑なアプリケーションの開発が容易に出来るものをさす。~
代表的なものにDelphi、NetBeans、Visual Basic、Visual C#などがある。~
[類] [[統合開発環境>プログラミング用語#ide_ja]]

-&aname(rms_full){Richard Mathew Stallman(りちゃーど・ましゅー・すとーるまん)};~
フリーソフトウェア活動家で、GNUの親玉にして、グルクラスのハッカー。~
日本国民から見れば、某宗教団体教祖様を髣髴とさせる風貌の、独身ヒゲ親父。~
欧州の絵画に登場する、キリストの風貌にも似てるかも。~
どちらにせよ、宗教家風味な風貌をしてることに違いは無い。~
でも、本人は無神論者。~
ただし、GNUという宗教の教祖であると言っても過言ではないと思う。~

-&aname(rms){RMS(あーるえむえす)};~
[[Richard Mathew Stallman>プログラミング用語#rms_full]]のこと。~

-&aname(ruby){Ruby(るびー)};~
[[Matz>プログラミング用語#matz]]が作った純国産オブジェクト指向スクリプト言語。別名MatzLisp。~

**S [#l7a7b937]
-&aname(scheme){Scheme(すきーむ)};~
A4で50ページ程度しかないという、言語使用の小ささが売りのLISP方言。~
最近のプログラム言語の機能でも、SchemeやLISPのものを参考にして作られた機能が数多くある。(call/cc、lambdaなど)

-&aname(sicp){SICP(えすあいしーぴー)};~
Structure and Interpretation of Computer Programmingのこと。邦題は計算機プログラムの構造と解釈。魔術師本、紫本などとも。~
MIT発のプログラミング初等教育に用いられる教科書で、Schemeを使ったいかに計算機がそのプログラムを理解するのか?という立場に立った解説がなされている古典的な書籍。~
どんなプログラマでも一度は読んでおくべきなどと勧められるが、訳書第2版の評判が芳しくなく、かといって原著にあたるのも骨が折れるという歯がゆい思いをさせてくれる書籍としても有名。~
書かれている内容はMITのお偉いさんが書いただけあってすごい。~
演習問題なども充実していて、スキルアップにはもってこいの一冊。~
値段が高くて買えないという人は、原著がwebで無償公開されているので、そちらで学習するのもあり。

-&aname(solaris){Solaris(そらりす)};~
太陽のロゴがトレードマークの、Sun MicrosystemsによるUNIX。~
近年オープンソース化されて話題を呼んだ。~
Linuxなどとは違う、ホンモノのUNIX(プラス、大企業のお墨付き)として動作実績を重視する現場、ミッションクリティカルな現場、サーバシステム、一部のマニアがデスクトップ用途になど、幅広く支持を集めている。~
フリー版に関しては、GNU謹製ツールをサクサク使うには、ちょっと面倒な設定が必要とか、フリーなのにATOK使えるの!?スゲーとか、そんな話ばかりをよく聞く。真偽のほどは定かではない。

**V [#e9cbbc49]
-&aname(vb){Visual Basic(びじゅある べーしっく)};~
Microsoftによるお手軽プログラミング環境。~
「Basic並に手軽に」プログラミング可能で、6.0まではプログラミング経験ゼロの素人でもそれなりのプログラムが書けることと、それに伴う人員確保の容易さ、環境そのものの特性からくる、工数の少なさやデータベースとの親和性も相まって、数多くの企業で業務用アプリケーションを記述するために用いられた。~
その時代に作られた負の遺産は現代でも行き続け、数多くのプログラマを苦しめているといわれる。~
もうね、正直疲れたんだよ。VB5世代のプログラムの保守なんてさ。~
だってバグだらけなんだもん。前任者探したら、もう退職したってさ。~
あーあ。ビルゲイツはなんてことしてくれたんだろうか…。

-&aname(vc){Visual C++(びじゅある しーぷらすぷらす)};~
変態的なクラスライブラリことMFCでおなじみのマイクロソフトによるC++言語開発環境。~
Windows上でC/C++プログラムを開発する際の事実上の標準となっており、利用者も数多い。~
一時期は標準対応への遅れや、環境そのもののバグなどが指摘されたが、最近は落ち着いている様子。~
.NET登場以後、Maneged C++などという、これまた変態的なC++拡張をサポートするも、現在でもVC++6が現場ではよく使われているため、.NET登場以後になされた環境の拡張に関しては認知されていないことが多い。~
近年無料版が登場したり、学生向けには無料で環境を手に入れられるようにするプログラムがスタートしたりと、VC++6当時、少ない小遣いを握り締めながら家電量販店でVC++6 Standard Editionを購入した俺に喧嘩を売っているとしか思えない施策をとり始めている。~
なんかね、もう信じられないわ。ビルゲイツが。

-&aname(vcs){Visual C#(びじゅある しーしゃーぷ)};~
マニュアル車にずっと乗ってた人が、初めてオートマ車に乗ったときに感じる、「ここまで至れり尽くせりだと、人間だめになるだろwwwJKwww」という感覚をプログラミングの世界でも味わわせてくれる、MicrosoftによるC#言語開発環境。~
DelphiのVCLを設計した人を引き抜いてまで.NETFrameworkとVC#に力を入れたと言われるほどMicrosoftが本気で取り組んでいるもので、VC++より簡単で、VBよりマシな環境を提供してくれる。~
なんだその、言語としてのC#ならそれなりに好きなんだけど、こうもVC#+.NETFrameworkでいろいろ楽にできすぎるとね、下手にDLLの関数呼び出さなくちゃいけない時とか、ライブラリに無い機能実装するときとか、ホンと、嫌になるよね。~
まぁ、プラモ感覚でプログラム組みたい中学生には向いてるんじゃねぇの?よく知らないけど。

-&aname(vjs){Visual J#(びじゅある じぇいしゃーぷ)};~
「もうやめてー!Javaのライフはゼロよー!!!」


**あ [#d6d70c3e]
-&aname(assembler-ja){アセンブラ};~
[1] 英語ではassembler。字面のとおり、アセンブルを行う者の意。コンパイルに対するコンパイラとおなじ位置づけの言葉。~
[2] アセンブラによってアセンブルすることのできる、機械語と一対一で対応したプログラム言語のこと。ニーモニック。

-&aname(assemble-ja){アセンブル};~
英語ではassemble。アッセンブルとも。~
コンパイルが機械語と一対一対応でないソースコードを機械語に翻訳する作業なのに対して、アセンブルは機械語に一対一で対応したソースコードを機械語に翻訳する作業を指す。

**い [#sb6c24f4]
-&aname(India-ja){インド};~
南アジアに位置する、インド亜大陸の大部分を占める連邦共和国。~
99x99の掛け算まで暗記させられるとか、小学校5年生で日本の中学校後半レベルの数学教育がなされているとか、数学教育に熱心なことで有名。~
そのせいか、非常に優秀なプログラマを多く擁する。~
これに人件費の安さもあいまって、現在世界からガンガン仕事を取り入れ、発展を続ける国である。~
日本のITドカタなど、彼らに比べればカスだという業界関係者もいるとかいないとか。

**う [#h5f610dd]
-&aname(wiz){ウィザード};~
本来は魔術師の意味だが、魔術師のようにプログラムを操る上位のハッカーをこう呼ぶ。~
ここにある種のカリスマ性が加わると、グルと呼ばれるようになる。~
基本的に変人が多いので、コミュニケーションをとるときには注意が必要。

**お [#g9f74ff3]
-&aname(object-ja){オブジェクト};~
プログラミングをする上で重要な概念のひとつ。~
プログラム上で登場する、各要素のこと。~
狭義には、データとそのデータに対して行う操作をパックしたものを指す。~
広義には、データそのものを指す。~
例)変数オブジェクト、クラスオブジェクトなど。

-&aname(oo-ja){オブジェクト指向(~しこう)};~
[1] プログラムをオブジェクトの集まりとして表現しようという概念。~
[2] プログラム上で発生するすべての問題を、簡単に解決してくれるのではないかという幻想を抱かせる魔法の言葉。もちろん、そんなおいしい話は存在しない。~
[関] ~開発、~設計。

-オブジェクト指向開発(~しこうかいはつ)~
オブジェクト指向を適用した開発案件のこと。~
継承、多態勢、カプセル化の三つを基本的な柱として、保守性、拡張性に優れた開発を目指す。~
[類] オブジェクト指向設計

-&aname(ood-ja){オブジェクト指向設計(~しこうせっけい)};~
オブジェクト指向を適用した設計手法のこと。~
設計段階にまでオブジェクト指向を引き合いに出し、根本的な設計から狭義のオブジェクトとなるものを洗い出してプログラムの設計を行う。~
[類] オブジェクト指向開発

**き [#y86b23fb]
-&aname(Project_book-ja){企画書(きかくしょ)};~
こんなアプリはどうでしょう?こんなアイディアおもしろくないですか?というアピールを上司にして、開発費を下ろしてもらったり、顧客に対して提案をするときにまず必要になる文書。新入社員が訳もわからず書かされ、上司に罵倒されるための道具でもある。~
ここで提出された企画書を煮詰めていって、仕様書などが作成される。~

-&aname(kikakudaore){企画倒れ(きかくだおれ)};~
企画書の段階では、とってもおもしろそうだったんだけどねぇ・・・。

**く [#vae5f363]
-&aname(guru){グル};~
guruとも。~
最高位のハッカーに与えられる敬称。~
カリスマ性を備えたウィザードのことをこう呼ぶ場合が多い。~
現在、グルと呼ばれるハッカーは世界に数人しか居ない。
[類] ウィザード

**け [#cd09196a]
-&aname(inh){継承(けいしょう)};~
オブジェクト指向プログラミングにおいて、あるクラス(スーパークラス、元クラス、親クラス、上位クラスなどという)の機能を受け継いだ新しいクラス(サブクラス、派生クラス、子クラス、下位クラスなどという)を設計、実装すること。~
inheritanceとも呼ばれるが、発音がinstanceに似ているため、混乱を防ぐ目的から継承と呼ばれることが多い。

**こ [#eb5eb957]
-&aname(compiler-ja){コンパイラ};~
英語ではCompiler。~
英語の字面を見れば推測できる通り、コンパイルを行う者の意。~
プログラムでは、実際にコンパイル作業を行ってくれるソフトウェアの事を指す。

-&aname(compile-ja){コンパイル};~
英語ではCompile。もともとは資料を収集するとか、辞書やリストを編集するという意味を持つ動詞。~
転じて、機械語と一対一に対応しているわけではないソースコードを、機械語に翻訳する作業のことを指す。~
広義にはリンクまで含めた作業を指すが、狭義にはリンク前のオブジェクトファイルと呼ばれるファイルを出力するまでの作業のことを指す。~
[類] [[アセンブル>プログラミング用語#assemble-ja]]

**し [#g1b69d8b]
-&aname(specifications-ja){仕様書(しようしょ)};~
プログラムがどう動作するべきか、どのような状態でどのような処理を行うべきかを細かく指示した文書。ここに書かれていることであれば、一見バグと思われる動作でも「仕様ですから」と言って切り抜けることが出来る。プロジェクトが進むにつれて、頻繁に書き換わることもあるため、プログラマのためのデスノートと呼ばれることもある。

-&aname(siyou-desukara){仕様ですから(しよう~)};~
「大豆ですから」のごとく発するべき、困った時の伝家の宝刀。~
この一言で、大多数の顧客は黙り込むという伝説が語られるほど、有名な一言である。~
例)Windows Meのブルースクリーン?あぁ、それ、仕様ですからww

**そ [#v515581e]
-&aname(source_code-ja){ソースコード};~
英語ではSource code。原始プログラムとも訳される。~
各プログラム言語で書かれた、コンパイル前のテキストファイルのこと。~
コンパイラが適切にコンパイルを行うために、ソースコードは次の決まりをもって書かれる。~
・内容は、用いたいと思っているプログラム言語の文法に従う。~
・文字の形や色といった、余計な情報がファイルに付加しない。(純粋なテキストファイルとする)~
・コンパイラで指定された文字コードを用いて記述する。

-&aname(source-kudasai){そのソースください};~
自分のやりたいことを、他の誰かが実現している時に発するべき言葉。空気を読まずに発すると、怪訝な顔をされることがある。もし自分が言われた時は、きちんとライセンスに同意させた上でソースを渡してあげよう。

**つ [#t5e16772]
-&aname(usable_html){使える言語はHTMLです(つかえるげんごはえいちてぃえむえるです)};~
非常に洗練された高度なジョーク。~
面接などで相手に「[[どんな言語が使えるの?>プログラミング用語#quest_usable_lang]]」と訊かれた時に使用する。~
また、初対面の相手とうち解けるために積極的に「[[どんな言語が使えるの?>プログラミング用語#quest_usable_lang]]」と訊いてみよう。~
「C言語を少々」や「アッセンブリ言語が使えます」などと答えるのはジョークを理解できない不粋物である。~
[関][[どんな言語が使えるの?>プログラミング用語#quest_usable_lang]]

**て [#i55eaab0]
-&aname(design_pattern-ja){デザインパターン};~
プログラミングでみんなが「あるあるww」とうなずけるパターンに対して適用可能な、効率の良い解法のこと。~
様々なパターンがあり、それぞれに大層な名前が付いているが、発動にすごいスキルが必要とか、事前にトラップカードを伏せておかなくちゃいけないなんてことは一切無い。~
ライブラリのロードぐらいは必要かもしれないが・・・。~
このデザインパターン、汎用性のあるパターンが多く収録されているため、あらゆる問題をデザインパターンで解決しようという気になったり、問題にブチ当たるとまずデザインパターンでなんとかできないか考えるようになってしまう一種の病気を発病する危険性を孕んでいる。それなりにプログラミングの学習が進んでからチャレンジしましょう。

-&aname(death){デスマーチ};~
あー。。。納期まであと三日かぁ。。。~
進捗?昨日の申し送り段階で、80%いったぐらいじゃない?

-&aname(debugger-ja){デバッガ};~
[1] debugを行うソフトウェアのこと。debugger。~
有名なものではGNUによるgdbやBorlandによるTurbo debugger、マイクロソフトによるワトソン博士などがある。~
原則として、プログラム言語に依存することなく用いることが可能である。~
[2] debugを行う人のこと。マゾヒスト。ドM。~
[3] プログラムは大してかけないのに、他人のプログラムのバグを見つけ、原因を特定するのが上手な、職場に一人はいるプログラマに対して用いられる敬称。~
例)~
「あの人、遊んでますけどいいんですか?」~
「あぁ、彼はデバッガだから、開発の初期段階では出番が無いんだよ」~
「でも、2chとかしてますよ?」~
「いいんだよ。デバッグのときに人の3倍は仕事するんだし。」

-&aname(debug-ja){デバッグ};~
[[debug>プログラミング用語#debug]]のこと。

**と [#u77da467]
-&aname(ide_ja){統合開発環境(とうごうかいはつかんきょう)};~
[[IDE>プログラミング用語#ide]]とも。~
デバッガやエディタなど、プログラムに必要な環境を総合的に提供してくれるソフトウェアのこと。~
特に高機能なものになると、プログラムをプロジェクトという単位で管理する機能やGUIフォームデザイナを提供してくれる。~
VisualStudioやEclipseといったものが有名。~
[類] [[RAD環境>プログラミング用語#redd]]

-&aname(quest_usable_lang){どんな言語が使えるの?(どんなげんごがつかえるの)};~
[[使える言語はHTMLです>プログラミング用語#usable_html]]というジョークと共に使われる会話の導入部。~
訊かれた場合「[[使える言語はHTMLです>プログラミング用語#usable_html]]」と答えなければならない。~
その他の言語(メジャ/マイナを問わず)を答えると、表面上は感心したような言葉を返して貰えるが、
心中ではバカにされていると考えるべきである。~
[関][[使える言語はHTMLです>プログラミング用語#usable_html]]

**ぬ [#nd5aee08]
-&aname(nullpo-ja){ぬるぽ};~
[[Null pointer exception>プログラミング用語#nullpo]]のこと。~

-&aname(nullre-ja){ぬるり};~
[[Null reference exception>プログラミング用語#nullre]]のこと。~

**は [#wdf44e8d]
-&aname(haker){ハカー};~
自称ハッカーに対して用いられる蔑称。~
より勘違いの激しいものにたいして、スーパーハカーという蔑称が用いられる場合もある。

-&aname(hug){ハグ};~
バグとよく混同されるが、こちらは人恋しい夜にほしくなるもの。~
濁点が無いだけで大分違うものになるので、言葉を使うときには注意が必要である。~
さて、ここで注意しなければならないのが、多くのプログラマの恋人は画面から出てくることができないという現実である。~
もし現実と真っ向から向かい合うことのできないプログラマを見つけたとしても、物言わないイラストの描かれた枕とハグをしていても、決して責め立ててはいけない。~
製作戦隊ツクルンジャーとの約束である。

-&aname(bug){バグ};~
英語表記はbug。本来の意味は虫のこと。~
SICP第2版では、本来の意味のまま、虫と訳されているが、指していることはここで説明するバグのことなので、読む際には注意が必要。~
バグは、プログラミング用語として用いる場合、プログラマが意図したとおりに動かない要素のことすべてをさす。~
どこまでがバグの定義かは難しいが、広義には製品出荷後に発生する実行時エラーまで含む場合があるし、狭義にはデバッグ段階で見つかったものまでをバグとすることもある。(すなわち、製品の出荷後に見つかった不具合は仕様となる。)~
エラーをどこまでバグとして扱うかは難しい問題だが、基本的にはプログラマ(あるいはソフトウェアの設計者)が意図したとおりに動いていないものは、すべてバグだと思っていい。~
スーパーファミコン世代は、「バグった」という言葉と共に育ってきたといっても過言ではないが、その多くはバグでないことは、この記事を読む読者なら了解済みのことだろう。~
もしゲームをしながら「うわwwバグったwww」とかいうクソガキを見つけたら、「仕様書も見ないでバグとかほざいてんじゃねぇよカス!」とやさしく語りかけてあげることが、大人としてのマナーであると筆者は考えている。


-&aname(hacker){ハッカー};~
英語表記はhacker。hackするものの意。~
よく言われることだが、クラッカーやスクリプトキディとは違うので注意。~
それらとの最大の違いは、ハッカーが好奇心で突き動かされているという点。~
具体的には、悪さをしたり、人が困る様がおもしろかったりするわけではなく、純粋に興味や知的好奇心、自分自身の正義のために技術力を使おうと考える点が異なる。~
無精で短気で傲慢という三条件を満たす人物は、その素質があるといっていい。~
ただし、ハッカーとは周囲から呼ばれる敬称であり、自分自身で名乗るものではない。~
自分自身で名乗ったら最後、ハカーと呼ばれることは間違いない。~
ハッカーの中でも特に優れた技術を持つものをウィザード、そこにカリスマ的人間性が加わったものや、ウィザードの中でも突出した変人をグルと呼ぶ場合がある。

**ふ [#b60c3505]
-&aname(first_class_object-ja){ファーストクラスオブジェクト};~
英語ではfirst class object。~
SICPによると、「変数として名前が付けられて、手続きに引数として渡せて、手続きの結果として返せて、データ構造に組み込める」というオブジェクトのこと。~
多くは変数そのものを指すが、LISPでは手続きもファーストクラスオブジェクトとして実装されている。~

-&aname(breakpoint-ja){ブレークポイント};~
プログラムをデバッグする際に指定する、プログラムの動作を一旦停止させたい場所のこと。ブレイクポイントとも。~

-&aname(blowser_game){ブラウザゲー};~
ちょっとした気分転換にはじめたはずが、気づくと日付が変わっている。~
そんなタイプのお手軽ゲームのうち、ブラウザ上で遊べるものをさす。~
特にプログラマスレでは、デバッグ中やコーディング中の気分転換として人気が高い。~
反面、その中毒性の高さから、自らブラウザゲーを禁じている住人も少なくない。~
VIPで立つ関連スレッドは、紛らわしいスレタイから嫌われることも多い。

-&aname(puyo_puyo){ぷよぷよ};~
その昔、「のーみそこねこね」のキャッチフレーズで一世を風靡したコンパイルという企業が販売していたパズルゲームシリーズの名称。~
同じ色の四つのぷよを集めると消え、得点になるという単純なルールからファンも多く、仕組みそのものも単純であることから、プログラミングの課題として使われることも多い。~
基本的なルールは~
・画面上部からふたつひと組の「ぷよ」が落ちてくる~
・同じ色のぷよは、四つくっつくと消える~
・画面内がぷよで一杯になってしまったらゲームオーバー~
というもの。~
実装する時にポイントとなるのは~
・二次元平面をどう表現するか?~
・壁際における「ぷよ」の探索をどう実装するか?~
・「ぷよ」同士が四つ以上くっついたことをどう判定するか?~
・くっついた「ぷよ」を画面から消した後の処理はどう行うか?~
・連鎖判定処理をどのように実装するか?~
などで、課題として用いられる場合、プログラミング初級~中級者向けとされる場合が多い。~
なお、初級~中級者に実装させる場合には、画面描画など面倒な部分をライブラリとして提供することも多くあり、APIや他人の作った関数の使い方を学ばせる教材としても適しているとされる。

**ほ [#p4c5cf99]
-&aname(pointer){ポインタ};~
何かを指し示すものの意。特にプログラミングにおいては、アドレスを指し示すものに関してポインタと呼称することが多い。~
この他、オブジェクトを指し示していたり、関数を指し示していたり(実態は、いずれもそれらの保持されているメモリの先頭アドレスである場合が多い)非常に幅広い使い道を持つ。~
C/C++を学ぶ上での鬼門とされ、よく「アセンブラを学べば簡単」といわれるほど、その概念の理解は一般に困難とされる。~
[類][[参照>プログラミング用語#ref]]

-&aname(pointer_val){ポインタ変数(~へんすう)};~
多くの場合、プログラムにおいてポインタを活用する時、そのポインタが「どこ」を指しているのかを保持しておく必要がある。~
その場合に用いられるのがポインタ変数と呼ばれる変数である。~
ポインタ変数は、先の説明どおり、ポインタがどこを指し示しているのかを保持する変数で、多くの場合にアドレスを保持する。~
ただし実態は変数なので、ポインタ操作を介さなければ、通常の変数のように活用することが出来る。(推奨はされていないので、行うべきではない)~
例えば[[malloc>プログラミング用語#malloc]]などで確保したメモリ領域の先頭アドレスを受け取るためにポインタ変数を用いる。~
一旦ポインタ変数にアドレスを保持しておけば、以後はそのポインタ変数の値とポインタを組み合わせて使うことで柔軟な操作を実現できる。

**よ [#x279567a]
-&aname(fairy){妖精さん(ようせい~)};~
長時間プログラミングをしていると見えてくるとか、眠気がピークに達した時に、プログラマの代わりにとっても不思議なコードを記述してくれるとか、そんな噂が耐えない不思議な生き物。~
しかし、これまで第三者によって妖精さんが観測されたことは無く、実在するのかは定かでない。~
「妖精さんが・・・」という言葉が頭をよぎった、あるいはそういった発言が見られた時点で、その人はある種の末期状態にあると判断することのできるので、ある種の基準として企業では幅広く利用されている。~
優良企業であればその時点で有休や睡眠などを勧められるが、劣悪な就労環境であればデスマーチが終わるまで放置されることも少なくない。~
後者の場合、労災が認められるケースが多数を占めるので、あきらめずに粘り強い交渉をしていくことが重要である。~
当然、その際に転職活動も忘れてはならないことを付け加えておく。

*プログラミング用語の解説サイト [#e2a8b261]

:[[IT用語辞典 e-Words>http://e-words.jp/]]|運営:株式会社インセプト (Incept Inc.)

:[[通信用語の基礎知識:コンピュータ>http://www.wdic.org/d/COMP]]|運営:NPO 通信用語の基礎知識 編纂委員会

:[[プログラミング用語辞典>http://ew.hitachi-system.co.jp/p/c-programming.html]]|運営:(株)日立システムアンドサービス

:[[プログラミング用語一覧>http://www.infogogo.com/id/606774]]|source: Wikipedia , license: GFDL,運営:infogogo.com

:[[C/C++マニュアル>http://www.db.is.kyushu-u.ac.jp/c/man.html]]|用語、記号・キーワードなど。 運営:九州大学 大学院システム情報科学研究院 金子研究室

:[[プログラミング辞書>http://www.kab-studio.biz/Programing/Dictionary/index.html]]|「 Visual C++ によるC++ ウィンドウズプログラミング」に関係した単語。運営:個人サイト KAB-studio

*コメント [#fc387de7]
#comment
// **おまけ [#m2b65e17]
// ***ソースコード検索 [#s3c5fa40]
// -[[見つけて得するソースコード専用の検索エンジン - @IT>http://www.atmarkit.co.jp/fjava/column/andoh/andoh33.html]]

// -[[gonzui: ソースコード検索エンジン>http://gonzui.sourceforge.net/]]

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS