1つのプログラミング言語で、プログラミングに必要なすべての機能をカバーできるわけではありません。
かつて、PL/I(ピー・エル・ワン、Programming Language One)という言語がありました。すべての機能をPL/Iでカバーしようと試みられましたが、失敗しました。プログラミングに必要な機能は次から次へと出現しますので、所詮無理だったのです。
今日では、殆どのプログラミング言語は拡張可能(extensible)なように設計されています。
その仕組みは、関数と外部ファイルからの関数の取り込み機能です。一般にはinclude文やimport文で外部ファイルから関数定義をプログラム内に取り込むことができるようになっています。
関数は関数名と引数の組合せで定義します。関数の呼出しも同じ形式です。関数呼出しは1つの文として扱われます。複数の関数を組合わせてファイルのオープン関数、読み込み関数、書き込み関数、クローズ関数のように定義することもできます。
関数定義と呼出しの構文はどのような機能に対しても同じですが、プログラミングで必要となる多くの機能を外部ファイルから取り込めるようにできます。
このような機能をもったプログラミング言語は拡張可能(extensible)であるといいます。
多くのプログラミング言語は、ここで述べたやり方で拡張可能となっています。OS(オペレーティング・システム)やDB(データ・ベース)の機能は、該当するプログラミング言語のライブラリとしてサポートされています。
以上から分かるように、プログラミング言語には中核機能に加えてライブラリが含まれますので、プログラミング言語の学習ではライブラリの学習も重要となります。
注意:拡張可能性を用いても、前稿「プログラミング学習の筋道」で述べた、各プログラミング言語の得意領域の壁を越えることは困難です。