はじめに
「日本語トランスコンパイラ言語」という処理系のシステム開発現場での需要があるのかという疑問に対して、わたしは「あるかも」と考えておりまして、主たるターゲット層としては、実装スキルを消失させた中高年システムエンジニアを考えております。
詳しい利用シーンのイメージはこちらへ
この記事内容の作業目的
日本語トランスコンパイラ言語 Re:Mind という自作言語の制御構文をターゲット言語のそれと比較して検討する。
とりあえずif文。elseやelse ifはなしとして、あとで考えます。
この記事内容の保証
※この記事には実装的な情報が含まれます。各言語で書かれた引用ソースの妥当性は保証されません。また、開発中(というよりまだ企画段階)の仕様のため、本記事に開示された自作言語の仕様は予告なく変更される場合があります。
ターゲット言語の構文イメージ
ターゲット言語とは
プログラミング言語としてのソース言語を日本語を母語とするテキスト(自然文ではない)として、その変換対象となるプログラミング言語のことです。
現在、下記の言語を想定しています。全機能全ライブラリのサポートは目的としておらず(独自に対象言語のライブラリはインポートして日本語ラッパ上で使えるようにしたいとうい願望はあり)基本的な制御構文のトランスコンパイルが可能としています。
-
Java
-
C#
-
TypeScript
-
Go
このあたりのグループはC言語を祖先として構文似てるかも的な思わくあり。 -
VBA(Excel用)
オフィスワーカーにとってステップアップスキルとしてまだまだ需要あり。 -
Mind
-
DNCL
日本語プログラミング言語グループ
各ターゲット言語のIF文
では、「Re:Mind」 (自作言語リマインド)と他言語との構文比較第一弾として、各ターゲット言語のIF文を比較して、自作言語のIF文を検討します。
最初に長くならずイメージが比較しやすいよう、elseやelse ifはなしとして、あとで考えます。また、比較判定用の変数の宣言も割愛します。
また、あたらしめの言語がもっている糖衣構文もとりあえず今回対象外です。Mindで「もしも」つけれるとか含む。
Javs
if(i>0){
//todo
}
C#
if(i>0)
{
//todo
}
TypeScript
if(i>0){
//todo
}
Go
if i>0 {
//todo
}
VBA(Excel用)
If I>0 Then
'todo
End If
Mind
Iが 0より 大きい
ならば ※todo
つぎへ
DNCL
もし i > 0 ならば
//todo
実行する
各言語のIF構文の間に挟まれているtodoは各言語のコメントアウト符号によるコメントです。
ソース言語の構文イメージ
ソース言語のIF文
Re:Mind
◇i > 0 の場合
//todo
◇ここまで
おわりに
システムエンジニアというとプログラミング得意なのではと業界外の人は思っていらっしゃるかと存じますが、特に業務システムのエンジニアはそうでもないのが実情です。分業が進んでいる環境ですと、実装工程は製造とかいってアウトソースしたり若手にまかせたりというシーンが少なくないように思われます。ただ、経験値的に、あるいは地頭的に複雑なロジックを組み立てることはできるので、若手のデベロッパーをそういう面から支援している場合は多くあります。
そこで、昨今のこまごまとしたフレームワークの細かい小技はわからないけど、きもとなるロジックはこれだ的なシーンで、年配エンジニアやマネージャ層でも記述できる言語があったらいいなと考えたしだいでございます。
この企画を実現・設計・実装していくには、スキル上の課題や未獲得の知見など多数あることが予想されます。Qiita様の場をお借りして、獲得したスキルや知見の共有、いたらない点のご支援をいただければと考えています。
参考リンク