プログラミング言語(ソフトウェアの開発環境)の選択はどう考えるでしょうか。
会社の業務や既存のプロジェクトに参加している場合は、すでに使用している開発環境を指定されるでしょう。新しくプロジェクトを起こす場合も大抵は既存のプロジェクトの開発環境を踏襲することが多いと思います。プログラム言語も必然的に決まってしまいます。
会社でローカル(個人的)に効率化のためのツールやアプリを作る場合や、学生さんの研究などでは自分でプログラミング環境を選択できる場合もあると思います。テーマによって向いているプログラム言語を選択することになるでしょう。この場合はよく耳にするメジャーなプログラム言語から、自分が習得しているまたは習得可能なもの、できれば今後のスキルアップにつながればなおよい。という感じだと思います。
C/C++, Java, C#, PHP, Python, JavaScript, Golang, Rust...等々。
私の場合、仕事ではC言語を主に使用していましたが、40年ほど前にBorland社のTurbo Pascalに出会ってからPascal系言語をよく使います。
現在では、Pascal言語が注目されることは少なくなりました。名前だけは知っているけど実際にどんなものか知らない人も多いでしょう。現在ではObject Pascalとなり、商用ではEmbarcadero社のDelphi、オープンソースではFree Pascal / Lazarus / CodeTyphonなどがあります。これらは開発バージョンの更新も続いています。開発が終ってないということは使い続けるうえで重要なことです。
「備忘録」では、Object Pascalについて備忘録を残していきたいと思います。
私は、Windowsしかよく知らないので、基本的にWindows限定の話となります。
1970年にニクラウス・ヴィルト(Niklaus Wirth)によって開発されたプログラミング言語です。プログラミングの教育に適していて、多くの教育現場や研究に使用されていました。アルゴリズムのプログラム表現にも多く利用され、Pascal関連の書籍も多く出版されていました。現在ではC/C++やPythonなどの言語に焼き直された感じですが、アルゴリズムのプログラム化はその言語の表現力で左右されてしまうため実装イメージは微妙に変わってしまいます。
Pascal表現は今でも分かりやすい表現のひとつだと思います。
標準Pascalは正式な規格があります。参考文献[1]は標準Pascalの本です。
ISO 7185:1983 Programming languages Pascal (制定)
ISO 7185:1990 Programming languages Pascal (改正)
国際標準ベースのJIS規格版です。
JIS X 3008:1990 プログラム言語Pascal (制定)
JIS X 3008:1994 プログラム言語Pascal (改正)
3.3 プログラム例
「Hello, world!」を表示するプログラムの標準Pascal版。
program HelloWorld(Output);
begin
WriteLn('Hello, world!');
end.
拡張Pascalも正式な規格があります。
ISO/IEC 10206:1991 Progamming languages Extended Pascal
日本産業規格(JIS)には、対応する規格はないようです。
「Hello, world!」を表示するプログラムの拡張Pascal版。
プログラムをメインプログラム(HelloEx.pas)とモジュール(HelloMod.pas)に分けて構成することができます。
{ メインプログラム }
program HelloEx(Output);
import
HelloProcs;
begin
SayHello(Output);
end.
{ モジュール }
{ インターフェース部 }
module HelloMod interface;
export
HelloProcs = (SayHello);
procedure SayHello(var F: Text);
end.
{ 実現部 }
module HelloMod implementation;
procedure SayHello;
begin
WriteLn(F, 'Hello, World!');
end;
end.
Object Pascal自体にはISO規格などはありません。そのため統一的な定義はなく、発祥の経緯などもWebで検索するといろいろ出てきます。という感じです。
基本的には、Standard Pascalにオブジェクト指向の概念を導入したもので、ベンダーの製品やオープンソースでそれぞれ機能拡張されています。定義については各々のドキュメントを参照することになります。
現在、ベンダー製品ではEmbarcadero社のDelphi、オープンソースではFree Pascalが有名です。その他にもMicrosoft .NET Frameworkで動作するRemObjects社のOxygeneやオープンソースのPascalABC.NETなどもあります。
Delphi, Oxygene, PascalABCなどはIDE(統合開発環境)も付属しています。
Free Pascalには、別途Lazarus IDEとCodeTyphon StudioというFree Pascalを開発言語とするIDEが存在します。Lazarusはリリース版のFree Pasca(現在3.2.2)を同梱し、CodeTyphonは開発版(現在3.3.1)のスナップショットを同梱します。これらを使用するとDelphiのような開発環境イメージになります。
「Hello, world!」を表示するプログラムのObject Pascal(Free Pascal)版。
プログラムをメインプログラム(HelloFPC.pas)とユニット(HelloUnit.pas)に分けて構成することができます。
{ メインプログラム }
program HelloEx(Output);
{$MODE OBJFPC}{$H+}{$J-}
{$MINFPCONSTPREC 64}
{$CODEPAGE UTF8}
uses
SysUtils, HelloUnit;
begin
SayHello(Output);
end.
{ ユニット }
unit HelloUnit;
{$MODE OBJFPC}{$H+}{$J-}
{$MINFPCONSTPREC 64}
{$CODEPAGE UTF8}
{ インターフェース部 }
interface
uses
SysUtils;
procedure SayHello(var F : Text);
{ 実現部 }
implementation
procedure SayHello(var F : Text);
begin
WriteLn(F, 'Hello, World!');
end;
end.
「Object Pascal 備忘録」では、Object Pascalの中でも、Free Pascal / Lazarus / CodeTyphon を中心に備忘録を残す予定です。
開発環境は以下の設定を前提とします。
共通設定 - Windowsターミナル(wt.exe)の設定
ISOの拡張Pascal(Extended Pascal)はGNU Pascalがサポートしています。
ただし、開発は止まっているようです。
GNU Pascal のインストール(Dev+GNU Pascal版)
[1] Kathleen Jensen, Niklaus Wirth : Pascal User Manual and Report, Springer-Verlag, 1991. 原田 賢一 (訳) : PASCAL (原書第4版), 培風館, 1993.
[2] ANSI-ISO PASCAL
[3] Free Pascal - Online documentation
[4] ISO - International Organization for Standardization
[5] 日本産業規格(JIS) (METI/経済産業省関東経済産業局)