comments-in-computer-languages の注釈

comments-in-computer-languages は、かなり恣意的に分類しているため、 その言語の特性や他との類似点を調べてから記載しています。 その調査で分かったことなどをだらだら書き連ねてあるだけ。
下に行くほど昔なので、無知になっていきます。

$Id: comments-comp.m4,v 1.7 2024-01-09 20:29:56+09 kabe Exp $

ABC Progress ABL Adblock Plus filter AFL Agda AGI LOGIC Alloy Query ANTLR Apex AppArmor AQL AQL AsciiDoc Aseba Asterisk dialplan ATL AutoGen AutoIt Bakefile Befunge Befunge-96 Laravel Blade BLISS CPL bolt Boo Boogie IVL BrightScript C/AL C0 CAPL Cap'n Proto Chameleon/TAL Chapel ChordPro ChucK CIF Basic Control Engine Cisco VPN Solutions Center template Clafer Clipper Clojure CloverETL Transformation Language CMake Coccinelle Xilinx .COE CoffeeScript CPL Concordance Programming Language Crystal Csound CSPro CUPL Cypher Query Language Cython Dart DCL Deluge djbdns DokuWiki DOT Drools rule DTML Dust CA Easytrieve ECL EEL Egison EGL EJS Elixir Elm Emblem EPL Siebel eScript ESI ExpressionEngine False FASTBuild FileMaker Pro formula FileMaker Pro script FitNesse Flamingo template Foobar2000 FormCalc Forth Fountain FreeMarker F# Galen Gallina GAMS GAUSS Gaussian Gentee Gherkin OpenGL Shading Language GML GNU ld linker script Go Google CodeのWiki Go html/template Gradle GrADS GraphQL groff Groovy h2o Hack Haku HAML Hamlet Harlowe HCL Haskell Haxe HiveQL Hjson HLA HOC HTL HyPhy Icinga 2 ICM script IDL Idoc Idris Igor Pro ILLGOL ILOG OPL iMacros ImageJ Apache Impala InfluxDB Line Protocol Informatica PowerCenter Transformation Language intbigot INTERCAL Io Isabelle Jade JAL Java .properties JavaServer Faces Facelet template JBehave Jess Eclipse JET JEXL JHipster AutoSys JIL Jinja 2 JSL JSON Jsonnet React JSX Julia Karel Kefir Kentico macros 華和梨インラインスクリプト Kitten Kivy Kotlin KQL kramdown LabTalk Ledger LEF/DEF Less libconfig Liquid LSP Lumerical Lush LUSTRE "M" Modeling Language (Oslo) MakeCAB directive Mako Markdown Mason GNU MathProg Maxima MAXScript mCRL2 micro:bit Touch Develop Minitab macro mIRC Modelica MODX MoinMoin Monkey MoonScript Mosel MPW Shell MQL Mustache MVEL N1QL Nasal NASL NATURAL NCL NED netCDF Nim Nimrod NScripter NSIS NuSMV OAL ObjectScript OpenSCAD Oval Ox PDL Perfect Perl 6 Processor Expert macro-language pgScript phpBB template Pig Latin Pine PJL PL/B PlantUML PmWiki gettext po PocoScript Popcorn Scripting Language Power Query (M) Formula Language PRACTICE PRADO Framework template Processing Promela protocol buffers pug Puppet PVS PxPlus q QiChat QML QPL Q# R Racket Raku Razor RD Red RELAX NG reStructuredText Robot Framework MicroTik RouterOS Globus RSL RSP Rust SakuraScript Sass Scala Scratch Scribble SenseTalk Sentient SIDOPS+ SilverStripe template SIMPL+ simplate Slim Smarty SPICE Manipulation Language Snowman SPEL+ SphinxQL Spice Spin SPL SQL*Loader SQR Squirrel Stan *W Stata Sterling Connect:Direct Process Structured Text Stylus SugarCube Swift syslog-ng SystemTap Tableau TableGen Taskjuggler Tcl TDF TECO Tempate Toolkit Textile for Textpattern Textile TextMate Thymeleaf TICKscript Tiger Topaz Tornado template T-Plan Robot TurtleScript Twig Twirl TypoScript うんこスクリプト Unlambda UnrealScript var'aq Varnish Configuration Language VDIF Velocity VEX Volt V+ Voyager USB 3.0 Exerciser Generation Script Language WebVTT Why3 Wikidot Xbasic XQuery YAML YARA Yices Yorick Z3 Zephir ( 333 entries )


CAPL
(2023-01-09) Vector社の 組み込み用の言語。Cに酷似しているが、 ポインタはなく、連想配列が基本型としてある。安全。

CAPLは主役ではなく、 処理ブロックをビジュアル的に組み立ててシステムを作る。 CAPLはブロックでは書けないややこしいものを書く。 イベントドリブン型で、main()に相当するものは on start になる。

Cに似ているので、注釈は /*...*/ が使えそうなのだが、 例題(KB0012437)では //... の他に、ホットコメント /*@!Encoding:1252*/ が見える。 #pragma も色々拡張されているようだし、 Cだと思って書くと穴にはまるかも。

on start
{
  write("辺区田 太郎");	//.pdfの例題では全角カッコだった
}
//...

ABC
(2022/10/25) BASIC とぱっと見は似ているが、自然言語の英語に似せた プログラミング言語はどうなるのか、を体現したような言語。 代入は左向きの = ではなく、右向きの PUT .. IN を使用。
HOW TO RETURN (a, b) over (c, d):
    PUT c*c+d*d IN rr
    RETURN (a*c+b*d)/rr, (-a*d+b*c)/rr
\...

Haku
(2022/05/04) Raku をベースに日本語プログラミング言語化したもの。

サンプルを見ても 現代詩のようにしか見えず、「動き」が読めない。 「本(真)」 が main() に相当する。

歩くとは無限大のことです。
忘れるとは件で「記憶に心を奪われて」を見せるのことです。

本真とは歩くことを忘れてしまったと言う事です。
	
	註 ...。
	注...。

Raku
(2022/05/04) Perl6 の後継言語。 何故改造したのかはいまいちよくわからないが、 演算子は一部変更されている。
grammar Foo { token TOP {\d  \d} };
my $parsed = Foo.parse: "3 3";
say $parsed; # OUTPUT: ≪「 」≫ 
	
注釈形式はPerl6を踏襲。
	#...
	#`(「『...』」)
	=begin comment
	...
	=end comment
	

NATURAL
(2018/3/21) Software AG 製の大型機用の言語。4GL (第四世代言語)という触れ込み。 データベースアクセスとユーザー入力用のコマンド類を標準装備する。
概要:NATURAL Essentials

#NAMEの#に特殊な意味はなく識別子の一部で、 ローカル変数は#で始めるというお約束によるもの。 文字列長は253バイトが最大。
行番号は必須ではない。たぶんエディタがつけてくれるもの。

0010 * THIS PROGRAM TAKES INPUT FROM THE USER AND THEN PRINTS IT
0020 DEFINE DATA LOCAL
0030 1 #NAME (A20)
0040 END-DEFINE
0050 INPUT 'WHAT IS YOUR NAME?'#NAME
0060 WRITE 'HELLO ' #NAME
0070 END
	

ON ERROR 文やフィールド再入力用のREINPUT文を持っているが、 GOTOは無さそうなので例外処理は苦手そうな印象を受ける。 どうしてるんだろう。

* ...	行頭のみ
**...	行頭のみ ****** という使いかたを想定
/* ...
	

Stan (.stan)
Stan is an imperative probabilistic programming language. It is an instance of a domain-specific language, meaning that it was developed for a specific domain, namely statistical inference.
(2018/02/18) 確率的プログラミング言語。 ハミルトニアンモンテカルロ法を使い、 統計的データモデルの統計的推定を行うシステム。 同類:PyMC

文面的にはC++に似る。 最終的にはC++に変換されてコンパイルされる。 ので、型はコンパイル時に静的に決まらないといけない。 理由は不明だが配列とベクトルと行列は可換ではない。

data {
  int N; // number of observations
  int P; // number of covariates
  matrix[N, P] X; //covariate matrix
  vector[N] y; //outcome vector
}
parameters {
  // We need to define two betas--the first is the restricted value, the next are the others. We'll join these in the next block
  real<lower = 0> beta_1;
  vector[P-1] beta_2; // the regression coefficients
  real<lower = 0> sigma; // the residual scale (note that it's restricted to be non-negative)
  real<lower = 0> nu; 
}
transformed parameters {
  vector[P] beta;
  beta <- append_row(rep_vector(beta_1, 1), beta_2);
}
model {
  // Define the priors
  beta ~ normal(0, 5); // same prior for all betas; we could define a different one for each, or use a multivariate prior. The first beta will have a prior of the N+(0, 5)
  sigma ~ cauchy(0, 2.5);
  nu ~ cauchy(7, 5);

  // The likelihood
  y ~ student_t(nu, X*beta, sigma);
}
generated quantities {
  // For model comparison, we'll want to keep the likelihood contribution of each point
  vector[N] log_lik;
  vector[N] y_sim;
  for(i in 1:N){
    log_lik[i] <- student_t_log(y[i], nu, X[i,]*beta, sigma);
    y_sim[i] <- student_t_rng(nu, X[i,]*beta, sigma);
  }
	
	//...
	/*...*/

Cython (.pyx)
(2018/02/18) PythonのCの拡張(*.so)を書くための言語。 文面はPythonに準ずる。一旦Cに変換されてからコンパイルされる。
#...
IF 0
	...
IF 形式はcppの #if 0 に相当する選択コンパイル用の文法。 (インデントが途中でずれると無効ですね)

Pine (TradingView)
TradingView is a global platform for researching financial markets and blogging your ideas.
(2018/02/18) 株価監視・分析SNS TradingViewで、 自分でグラフ描画や分析を行いたいときに使う言語。 株価は時系列データなので、時系列ベクトルデータのまま 各種演算や表示を行う。 同類:Amibroker AFL
study("MACD")		//MACD (Apple Computer Inc.)の株価を監視
fast = 12, slow = 26	//変数代入
fastMA = ema(close, fast)	//指数平滑移動平均(exponential moving average)を終値、定数fastで算出
slowMA = ema(close, slow)	//指数平滑移動平均を終値、定数slowで算出
macd = fastMA - slowMA
signal = sma(macd, 9)		//単純移動平均(simple moving average)
plot(macd, color=blue)		//macd を青色でグラフ描画
plot(signal, color=orange)	//signal をオレンジでグラフ描画
	

インデントは行継続の為に使うので、 普通のインデントは(できるようには見えるが)不可。

//...
パーサーの都合だろうけど、 インデントされている箇所では注釈は入れられませんというのは不便だと思う。

お試し期間を過ぎると自動的に課金されますよ、というのは 危なっかしいサービスではある。

JAL (V2)
(2018/01/28) Just Another Language
MicroChip PICマイコン用の高級言語。 注釈文法については 文法書 には記載がない。
-- You may want to change the selected pin:
alias   led      is pin_A0
pin_A0_direction =  output
--
forever loop
   led = on
   _usec_delay(250000)
   led = off
   _usec_delay(250000)
end loop
--
	
--...

Q#
(2018/01/28) Microsoft製の、量子コンピュータ用のプログラミング言語。 量子ビットQubitを基本型として持つ。 体裁はC#と同様。
//...
/*...*/型の注釈は持っていない。 ///... でMarkdown形式のドキュメントコメントを書く。

Jsonnet
(2018/01/28) データテンプレート言語。JSONを出力する。 計算や繰り返しのあるJSONを生成するのには汎用言語を使うことが多いが、 そういうのは馬鹿らしい、わかりづらい、JSON生成専用の言語があってもいい、 という思想で造られた。 自称はテンプレート言語だが、他の普通のテンプレート言語のように バックエンドに他の処理系がいるわけではないので、プリプロセッサに近い。 式の書き方はPythonに似るが、実装はC++。
// example_operators.jsonnet
{
    foo: [1, 2, 3],
    bar: [x * x for x in self.foo if x >= 2],
    baz: { ["field" + x]: x for x in self.foo },
    obj: { ["foo" + "bar"]: 3 },
}
	
	//...
	/*...*/
	

Java .properties
(2017.12.19) Javaで設定ファイルを書く際に使うもの。 XMLではなく key=valueの形で設定ファイルが書ける。 しかし .properties だからといって全てのプログラムが APIを通して読んでいるわけではないようで、エスケープコードを入れると たまに変な動作をするプログラムもある。
	#...	行頭のみ
	!...	行頭のみ
	

Kitten (.ktn)
(2017.12.19) 関数型言語。 スタックマシン型で、関数が後置記法なので 見た目がForthっぽいのが他の関数型言語と違う。

"meow" say  // Kittens don't speak English.

ただ見辛さに耐えかねたのか、四則演算子は中置記法で書く。

5 -> x; x * x //xに5を代入し、自乗

Haskellのような純粋な関数型言語は「引数」が重要な概念なのだが、 実体が分かりにくい。Kittenはそこを「スタック」だ、と 割りきってしまっている所がわかりやすい。

	//...
	/*...*/	入れ子可
	

SIMPL+
Symbol Intensive Master Programming Language
(2017.08.16) Crestron社のAV機器制御装置のビジュアルプログラミング環境 SIMPLで、ビジュアルだけではできないような 複雑なことをさせたい時に使う記述言語。 ファイル入出力や文字列演算も可能。
DIGITAL_INPUT trigger;
STRING_OUTPUT output$;

PUSH trigger
{
output$ = “Hello, World!”;
}
//...
/*...*/
#IF_DEFINED notdef
...
#ENDIF

OAL (BridgePoint)
Object Action Language
(2017.08.16) Shlaer-Mellor Object-Oriented Analysis (OOA) に基づいて アプリケーションの設計を行う際に、 オブジェクト間の作用を表記するために使う Action Language の実装の1つ。仕様記述言語の類。
    declare n as Integer;
    declare fibonacci_n as empty or one Integer;
    if (n < 0)
        fibonacci_n = ?;
    elif (n == 0)
        fibonacci_n = 0;
    else
        fibonacci_n_minus_1 = 1;
        fibonacci_n = 1;
        i = 2;
        while (i < n)
            fibonacci_n_minus_2 = fibonacci_n_minus_1;
            fibonacci_n_minus_1 = fibonacci_n;
            fibonacci_n = fibonacci_n_minus_1 + fibonacci_n_minus_2;
            i = i + 1;
        end while n - 2;
    end if;
//...

TableGen (LLVM) (.tb)
(2017.08.16) LLVMプロジェクトで使われているマクロ言語。
let Defs = [EFLAGS],
    isCommutable = 1,                  // X = ADD Y,Z --> X = ADD Z,Y
    isConvertibleToThreeAddress = 1 in // Can transform into LEA.
def ADD32rr  : I<0x01, MRMDestReg, (outs GR32:$dst),
                                   (ins GR32:$src1, GR32:$src2),
                 "add{l}\t{$src2, $dst|$dst, $src2}",
                 [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
//...
/*...*/

Hack
(2017.08.16) Facebook製の、型を静的にしたPHPの改良言語。 実装はC++とOCaml。 拡張子は.phpのままだが、 処理指令は<?hh ...
<?hh

namespace HHVM\UserDocumentation\BasicUsage\Examples\CommandLine;

function fibonacci(int $number): int {
  return intval(round(pow((sqrt(5) + 1) / 2, $number) / sqrt(5)));
}

function main(array<string> $argv) {
  echo 'The ' . $argv[1] . ' number in fibonacci is: '
      . fibonacci((int) $argv[1]) . PHP_EOL;
}

main($argv);
	//...
	#...
	/*...*/
	
注釈文法はPHP互換だが、 注釈についての記述はGitHubに埋もれている

Cisco VPN Solutions Center template
(2017.08.16) Ciscoの設定ファイルをテンプレートを使って自動生成するツールには Cisco Configuration Engine というものがあって、これは Apache Velocity をそのまま使っているので 処理指令は #...。 しかし、VPN Solutions Center のは独自実装らしく、注釈文法が違う。
!
#repeat ($ACL, $i)
{
access-list $ACL[$i] permit ip $Source_IP_Address[$i] $Source_Mask[$i] 
$Dest_IP_Address[$i] $Dest_Mask[$i] precedence 7
}
//...

AQL (IBM)
Annotation Query Language
(2017.08.16) 構造化されていない大量のテキストデータを扱うIBM InfoSphere BigInsights で使うデータ問い合わせ言語。 SQLの類だが、問い合わせよりテキスト解析を行う部分の方が多い。
module RevenueByDivision_BasicFeatures;
create view Revenue as
extract regex /((.\s*)?(first|second|third|fourth)\s*-\s*quarter)?\s*(revenues?)/
	with flags 'CASE_INSENSITIVE'
	on between 1 and 5 tokens in R.text
	return
		group 0 as match
from Document R;
output view Revenue;
--...
/*...*/

KQL
Keyword Query Language
(2017.08.16) Microsoft SharePoint で使われる検索言語。 属性値も扱える正規表現のようなものだが、複雑な文字列検索機能は 持っていない。Googleの検索文字列の修飾辞に近い。
author:"John Smith" AND filetype:docx
1行で書ける程度の検索を書くものなので、注釈は書けないっぽい。

Gentee
(2017.08.16) C++と似ているようなそうでないような言語。 WindowsとLinux用のバイナリが準備されている。 実装はC99。2006年にオープンソースになったが、 ソースコードの注釈はロシア語で書かれている。
str   input
uint  high i j

print("This program uses \"The Sieve of Eratosthenes\" for finding prime numbers.\n\n")
high = uint( congetstr("Enter the high limit number ( < 100000 ): ", input ))
if high > 100000 : high = 100000

arr  sieve[ high + 1 ] of byte

fornum i = 2, high/2 + 1
{
   if !sieve[ i ]
   {
      j = i + i
      while j <= high
      {
         sieve[ j ] = 1
         j += i
      }
   }
}
	
/*...*/
//...
もともとはオブジェクト指向にするつもりはなかったようで、 オブジェクトの扱いは薄め。単純な手続き型言語を目指している。

式やステートメントは改行で区切られるので、 Cのように;だらけにはならないが、 1行でマルチステートメントを書けるように、 改行の代わりに;{ }の代わりに: を使うことができる。

この2つの書き方は同じ。
if a == 10 : a = b + c; c = d + e 
if a == 10 
{
	a = b + c
	c = d + e
}
	

PRACTICE
(2017.08.11) Lauterbach社のマイコンデバッガ TRACE32 の自動化スクリプト。 文面はBASICによく似ている。
IF OS.FILE(data.tst)
	PRINT "File exists"
ELSE
	PRINT "File doesn't exit"

WHILE Register(pc)==0x1000	;step until pc=1000H
{
  Step
}

RePeaT 100. Step	;step 100 times
RePeaT 0. Step		;step endless

ON ERROR GOTO errorexit
	;...
	//...

V+
(2017.08.11) Adept社の機器制御装置のプログラミング言語。 工業用機器やロボットの制御を行う。 昔のBASICのように、プログラミング言語とOS環境の両方の性質を持つ。
AUTO $ans
TYPE "Welcome."
PROMPT "May I have your name please? ", $ans
TYPE $ans, " is now at the keyboard." 
;...

ICM script
Internal Coordinate Mechanics
(2017.08.11) 生化学数値シミュレーターICM を駆動するスクリプト言語。 用途も文面もシェルスクリプトに似る。
#!/icm3/icm -s

HELP = "Usage: " + File(last) + " [-h] [-chargeAmines] [-chargeAcids] [input.sdf] [output.sdf]"
if Getarg( "-h", no delete ) quit HELP
chargeAmines = Getarg( "-chargeAmines" no )
chargeAcids = Getarg( "-chargeAcids" no ) 
#
files = Getarg( list )
if (Nof(files) != 2) quit HELP
if !Exist(files[1]) quit HELP
if Exist(files[2]) delete system files[2] # or ask for confirmation 
# read input file
read table mol files[1] name="t" 
if (chargeAmines) then
  modify t.mol "[C;^3][N;D3]([C;^3])[C;^3]" "C[N+](C)C" exact l_info = yes
  endif 
if (chargeAcids) then
  modify t.mol "CC(=O)[O;D1]" "CC(=O)[O-]" exact l_info = yes
endif 
# saves the result
write table mol t files[2] delete

quit 
#...

Z3 (Microsoft,)
(2017.08.11) Microsoft Research 製の SMT (Satisfiability Modulo Theories) ソルバ。 同類:Yices
; This example illustrates basic arithmetic and 
; uninterpreted functions
(declare-fun x () Int)
(declare-fun y () Int)
(declare-fun z () Int)
(assert (>= (* 2 x) (+ y z)))
(declare-fun f (Int) Int)
(declare-fun g (Int Int) Int)
(assert (< (f x) (g x x)))
(assert (> (f y) (g x x)))
(check-sat)
(get-model)
(push)
(assert (= x y))
(check-sat)
(pop)
(exit)
;...

PDL (CA,)
Procedure Definition Language
(2017.08.11) CA Ideal(tm) for CA Datacom(R) で使われるプログラミング言語。 データベースアクセスのステートメントを組込で持つ。 BASICとSQLを混ぜ合わせたような文面。
FOR EACH DELINQUENT-ACCT
    WHERE BALANCE > 200
       DO CONTACT-COLLECTOR  :if qualification needed,
ENDFOR                       : use DELINQUENT-ACCT.field
	:...
	--...
	
:がプログラム上で特定の用途に使われておらず、 注釈文字になっているというのは珍しい。

Globus RSL (.rsl)
Globus Resource Specification Language
(2018.08.11) 分散計算機環境におけるジョブ管理を行うシステム Globus Toolkit で、 ジョブの記述を行う言語というかフォーマット。
+( & 
   (resourceManagerContact="nickel.sao.nrc.ca")
   (count="1")
   (directory="/usr/people/gabriel")
   (executable="/usr/people/gabriel/cpi")
   (jobtype="mpi")
   (environment=("GLOBUS_DUROC_SUBJOB_INDEX" "0" ) )  
   (label="subjob 0")
   (stdout="/usr2/people/gabriel/cpi.out")
   (stderr="/usr2/people/gabriel/cpi.err")
)
	
(*...*)

Yices
(2017.08.11) SMT (Satisfiability Modulo Theories) に基づいて 与えられた条件式に矛盾がないかどうか調べる処理系。 定理証明システムの一種。 文法的にはまるっきりLisp。 同類: PVS, Z3
(define f::(-> int int))
(define i::int)
(define j::int)
(assert (= (- i 1) (+ j 2)))
(assert (/= (f (+ i 3)) (f (+ j 6))))
→ unsat 
;...

gettext po (.po)
(2017.08.11) プログラム類のメッセージを国際化するためのフレームワーク GNU gettextの 翻訳データファイル。 ツールでソースコードから文字列が.poに抜き出されてくるので、 対応する翻訳文を人間が追記する。
# Wikipedia says that ‘etrurski’ is our name for this script.
#: viewpart/UnicodeBlocks.h:151
msgid "Old Italic"
msgstr "etrurski"
	
# ...
.poファイルそのものがコンパイルされるときは #... がすべて無視されるようだが、 .po生成時は 元コードから翻訳者への注釈 #.、 元コードの位置を示す #: などが含まれる。 # ... は、翻訳者が次の翻訳者に向けて書く、 .po 再生成時にも保存される注釈。

TextMate Language Grammars
(2017.08.11) MacOS X 専用の汎用テキストエディタ TextMate で、 編集対象のテキストファイルの文法を記述するための言語。 何がキーワードか、何が注釈か、みたいなことを書く パターンマッチ的な設定ファイル。
{  scopeName = 'source.untitled';
    fileTypes = ( );
    foldingStartMarker = '\{\s*$';
    foldingStopMarker = '^\s*\}';
    patterns = (
	{  name = 'keyword.control.untitled';
	   match = '\b(if|while|for|return)\b';
	},
	{  name = 'string.quoted.double.untitled';
	   begin = '"';
	   end = '"';
	   patterns = ( 
	      {  name = 'constant.character.escape.untitled';
		 match = '\\.';
	      }
	   );
	},
    );
}
	
//...
当の文法記述ファイルそのものの注釈への言及はなく、 //...が例題で使われていることだけが手掛かり。

CJKには対応していない わりには、なぜか 日本語のマニュアルがある のが謎ですが。

syslog-ng
(2017.07.27) facility や severity 以外にも、ログの送信元、プログラム名、時間 などで柔軟に出力先を振り替えられる強力な syslogd 。 データベースに直接ログを押し込んだりもできる。
source s_local {
    system();
    internal();
};
destination d_local {
    file("/var/log/messages");
};
log {
    source(s_local);
    destination(d_local);
};
	
#...
基本文法は}の後に;を必須とする BINDチック な文法だが、 注釈は //.../*...*/ではない。 オープンソース版(OSE)のマニュアルには注釈文法の 記載がなく、 Premium Edition (PE)のほうに載っている

Oval
(2017.07.17) 球形ロボットSpheroの プログラミング言語。Cのサブセット。 /*...*/については記載がないので使えないのかもしれない。
void startProgram() // don't forget to aim your bot
{
    setRgbLed(0, 0, 255);
    controlSystemTargetSpeed = 60;
    delay(1);
    controlSystemTargetSpeed = 0;
} 
//...

AppArmor profile
(2017.07.17) Linux上でアプリケーションの動作を制限する機構 AppArmor のルール記述。 Debian系のLinuxで標準装備されている。
 /profile {
    /path/to/file*            r,  # allow read
    /path/to/file1            w,  # allow write
    deny /path/to/file2,      w,  # deny write
    audit /path/to/file3      w,  # allow write with logging
    audit deny /path/to/file4 r,  # deny read with logging
 }
	
# ...

NuSMV
(2017.07.17) 仕様を有限状態機械で記述し、 BDD (Binary Decision Diagram)法により 状態の到達性の検査などを行う処理系。 同類:mCRL2
-- 3ビットの2進カウンタ
MODULE counter_cell(carry_in)
 VAR
   value : boolean;
 ASSIGN
   init(value) := 0;
   next(value) := (value + carry_in) mod 2;
 DEFINE
  carry_out := value & carry_in;

MODULE main
 VAR
   bit0 : counter_cell(1);
   bit1 : counter_cell(bit0.carry_out);
   bit2 : counter_cell(bit1.carry_out);
	
--...
他の処理系との連携は考えられていない。 仕様からコードを生成したり、既存のプログラムの検査というより、 仕様そのものが矛盾していないかどうかを仕様を書きながら 検査して仕上げていくためのツールなんだと思う。

Modelica
(2017.07.17) 汎用数値シミュレーション用言語。 単なる = は束縛条件で、 破壊代入は :=。 Pascal風味だが、注釈はC++系。
algorithm
  y := 0;
  xpower := 1;
  for i in 1:n+1 loop
    y := y + a[i]*xpower;
    xpower := xpower*x;
  end for; 
	//...
	/*...*/
	
普通の注釈の他に、 宣言文の後に任意の文字列リテラルを置いて注釈を付けられる。
partial model OnePort "Superclass of elements with two electrical pins"
  Pin p, n;
  Voltage v;
  Current i;
equation
  v = p.v - n.v;
  0 = p.i + n.i;
  i = p.i;
end OnePort;

model Resistor "Ideal electrical resistor"
  extends OnePort;
  parameter Real R(unit="Ohm") "Resistance";
equation
  R*i = v;
end Resistor; 
また、専用の annotation 文で 図やライセンス情報などの構造化された注釈を置くことができる。
annotation (
  Icon(coordinateSystem(extent={{-100,-100}, {100,100}}),
       graphics={Rectangle(extent={{-100,-100}, {100,100}}),
                 Text(extent={{-100,-100}, {100,100}}, textString="Icon")}));
	
ごっそりブロックコメントアウト用の構文は持っていない。 普通は統合環境(IDE)で使う前提だから問題ない?

Apache Impala
(2017.07.17) Hadoopクラスタ上で動かす分散データベース Impala の問い合わせ言語。 SQLの類。 Apache HiveQLの上位互換。 こちらはちゃんと注釈の書き方が文書化されている。
	--...
	/*...*/
	

JHipster Domain Language (JDL) (.jh)
(2017.07.17) Springで動かすJavaアプリケーションミドルウェア JHipster で、オブジェクトの関係を記述する言語。 泥臭いUMLのようなもの。
// an ignored comment
entity A {
  name String, /** My comment */
  count Integer
}
	
は、カンマの具合でMy comment のJavadocは count要素のほうにつくよ、という 注意書きの例。
//...
Javadocにならない /*...*/ が使えるのかどうかは不明。

Gradle (build.gradle)
(2017.07.17) Groovy ベースのビルドツール。 実装もGroovy。 ビルド専用ツールではあるのだが、専用文法は持っておらず 素のGroovyに近い書きかたをする。 taskがMakefileのターゲットに相当する。
task taskX(dependsOn: 'taskY') {
    doLast {
        println 'taskX'
    }
}
task taskY {
    doLast {
        println 'taskY'
    }
}
	
User Guide には地の文は Groovy である、としか書いておらず 注釈文法についての記載がない。 Stack Overflowで質問が出る 程度には知られていないらしい。 Groovy互換であれば
	//...
	/*...*/
	
Groovy互換なら入れ子は不可のはず。

Coccinelle (.cocci)
(2017.03.08) 普通の patch は完全一致でしかパッチを当ててくれないが、 spatch (Semantic Patch) はソースコードの構造パターンマッチを行い、 同じような変更を複数箇所に当ててくれる。 APIの変更でコード全体にパッチを当てたい時などに使う。 実装はOCaml。 Linuxカーネルの scripts/coccinelle/ にもスクリプトが含まれている。

処理系全体の名前が Coccinelle(こっちねる、テントウムシ) で、 .cocci に書くパッチ変換言語は SmPL (Semantic Patch Language) となっている。

@@
declarer name DEFINE_SPINLOCK;
identifier xxx_lock;
@@

- spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED;
+ DEFINE_SPINLOCK(xxx_lock);

@@
expression E;
@@

- E = SPIN_LOCK_UNLOCKED
+ spin_lock_init(&E)
	
	//...	行頭のみ
	/*...*/	行頭のみ、ほとんど使われない
	

Deluge
(2017.02.17) ビジネスアプリケーション環境 Zoho Creator で使う言語。 データベースアクセス機能を組込で持つ。 クラウドで動かすためか、 再帰は75段まで、 1回のアクションで実行できる文は5000まで、 といった制限がある。
Void calculateNetPay(Employee emp)
 {
 for each emp1 in emp
 {
 emp1.NetPay=(emp1.BasicPay+emp1.HRA)-(emp1.PF+emp1.TAX);
 }
 }
	
	//...
	/*...*/
	
組込関数はExcelを参考にしたような普通のものしかなく、 微妙に直交性が悪い。 サンプルコードではインデントがされていない (HTML上もされていない) のは何かの嫌がらせだろうか?

Agda (.agda)
Agda is a dependently typed programming language / interactive theorem prover.
(2017.02.14) 型依存の強い関数型言語。 関数が返る時は必ず型が確定していなくてはならない (Haskellは型の確定が遅れても良い)。 実装はHaskell。
  -- 再帰関数は何でも書けるわけではなく、
  -- コンストラクタが減っていくもののみ
  data Nat : Set where
    zero : Nat
    suc  : Nat -> Nat

  plus : Nat -> Nat -> Nat
  plus zero    m = m
  plus (suc n) m = suc (plus n m)

  natEq : Nat -> Nat -> Bool
  natEq zero    zero    = true
  natEq zero    (suc m) = false
  natEq (suc n) zero    = false
  natEq (suc n) (suc m) = natEq n m
	
	--...
	{-...-}	入れ子可
	
注釈文法の字句構文はHaskellと同じ。

h2o
(2017.02.14) Django風のHTMLテンプレート。 実装はPHP5。 処理指令は {{var}} {% tag %} {*comment*} だが、設定で変えることも可能。
	{*...*}
	{% comment %}
	...
	{% endcomment %}

C/AL
Client/server Application Language
Microsoft Dynamics NAV is a complete enterprise resource planning (ERP) software solution for small and mid-sized organizations that is fast to implement, easy to configure, and simple to use.
(2016.01.27) ビジネス管理ソフト (?) Microsoft Dynamics NAV で使う言語。 Pascal風で、大文字小文字は区別しない。 属性名に空白も使えるので、 文字定数に代入したり属性を参照したりしているように見えることがある。
WITH Cust DO BEGIN
  Cust := Rec;
  Dept.Code := "Department Code";
  IF PAGE.RUNMODAL(O,Dept) = Action::LookupOK THEN BEGIN
    "Department Code" := Dept.Code;
    VALIDATE("Department Code");
    Rec := Cust;
  END;
END;
	
	//...
	{...}	入れ子可
	

Haskell (.hs)
非常におカタい関数型言語。
	--...
	{-...-}	入れ子可
	
-- は注釈なのに --> は字句であって注釈にならない というのはなんか不公平感がある。

{-...-}は入れ子可なのだが、ブロックコメントアウトに使うと 文字列中の-}と干渉する。 (Cでも同じ問題があるが、#if 0で逃げられる)

Isabelle (.thy)
Isabelle is a generic proof assistant. It allows mathematical formulas to be expressed in a formal language and provides tools for proving those formulas in a logical calculus.
(2017.01.26) 定理証明システム。 実装はMLとScala。 入力は専用IDE、最終出力はLaTeXを想定しているようで、 チュートリアルでもASCII文字での入力の扱いが薄い。 同類:Why3
theory MyList
imports Main
begin

(* list の定義 *)
datatype 'a list = Nil | Cons 'a "'a list"

(* append の定義 *)
fun app :: "'a list => 'a list => 'a list" where
"app Nil ys = ys" |
"app (Cons x xs) ys = Cons x (app xs ys)"

(* reverse の定義 *)
fun rev :: "'a list => 'a list" where
"rev Nil = Nil" |
"rev (Cons x xs) = app (rev xs) (Cons x Nil)"

(* (True False) のreverseは何か計算せよ *)
value "rev(Cons True (Cons False Nil))"

end
	
(*...*)	入れ子可、ML準拠
{*...*} --... \<comment>... は ベタテキストの埋め込み。

IDL
Interactive Data Language
(Exelis Visual Information Solutions/Harris Geospatial,)
IDL is the trusted scientific programming language used across disciplines to extract meaningful visualizations out of complex numerical data.
(2017.01.23) 汎用数値処理系 IDL の言語。 データ型は複素数まであり、リストや任意次元の行列も作れる。 型を持つが検査はゆるい。 同類:GAUSS

サブルーチンへの引数は参照渡しが基本。 ただ配列要素や構造体要素は値渡しに変換されてしまう。 比較演算子は EQ, LE, GT などだが、 < > は 最小値・最大値演算子に使うため。 NaNを食わせると結果は不定。

; Create a randomly-ordered array of integers
; from 0 to 9999:
array = SORT(RANDOMU(seed,10000))
n = N_ELEMENTS(array)

; Find where in array the value 5 in located:

FOR i = 0,n-1 DO BEGIN
   IF (array[i] EQ 5) THEN BREAK
ENDFOR

PRINT, i
	
;...
大型機時代にそうするしかなかった不便な点を そのまま現代まで引きずってしまっている言語のような気がする。

C0 (.c0)
(2017.01.23) 教育用のCのサブセット。 REPL(coin)とコンパイラ(cc0)を持つ。

@requires @ensure @loop_invariant @assertで contractを記述することができるが、 組込予約語ではなく、なぜか注釈文法を流用。

/* file log2.c0 */
int log(int x)
//@requires x >= 1;
//@ensures \result >= 0;
//@ensures (1 << \result) <= x;
{ int r = 0;
  int y = x;
  while (y > 1) {
    y = y / 2;
    r = r + 1;
  }
  return r;
}
	
	//...
	/*...*/	入れ子可
	
なぜ/*...*/が入れ子可なのかは理解しがたい。 C0からCへの移行 が示されているくらいなら入れ子不可でもよかった気がする。

FileMaker Pro formula
(2017.01.23)
Case(
PatternCount("MrMsMrs", LeftWords(Name, 1)), /* returns true if the first word in fieldName matches anyone of the titles Mr, Ms or Mrs*/
LeftWords(Name, 1) /*extracts the title */
)
	
	/*...*/	入れ子可	
	//...
	

FileMaker Pro script
Perform Find [Restore]
If [Get (FoundCount) = 0]
        Show Custom Dialog ["Find Records"; "No record was found."]
Else If [Get (FoundCount) = 1]
        Go to Layout ["Invoice Details"]
Else
        Go to Layout ["Invoices"]
End If
	
#...

FileMakerデータベースのテキスト言語には script と formulaがある。 script は処理の自動化、 formula は出力が1つだけの式言語。 script で式を書く箇所には式の注釈も書ける(まぎらわしい)。

formulaは入れ子可の注釈を持つが、scriptは # のみ。 scriptにはブロックコメントアウト構文がない。 エディタの機能でカバー?

Igor Pro
Igor Pro is an integrated program for visualizing, analyzing, transforming and presenting experimental data.
(2017.01.23) 科学データ解析・表示ツール IGOR Proのプログラミングに使う言語。 汎用に使えるが、主な用途は信号処理・統計解析など。 基本データ型は数値、文字列と Wave (y=f(x)な系列データ)。 GUI操作がコマンドとして残るので、操作マクロとしても使えるが、 言語は汎用なので、自前の信号処理を頑張る事も可能。 同類:LabTalk
Function CreateNormalizedCopy(input)
   Wave input
   // Get the stats on input wave
   WaveStats/Q input
   Variable maxValue = V_max
   // Generate name of output wave
   String outputName = NameOfWave(input) + "_norm"
   // Create output wave
   Duplicate/O input, $outputName
   // Create a wave reference for output wave
   Wave output = $outputName
   // Do the normalization
   output = output / maxValue
End
	
	//...
	#if 0 ... #endif
//だけの言語は珍しい。

GAMS (.gms)
The General Algebraic Modeling System (GAMS) is a high-level modeling system for mathematical programming problems.
(2017.01.19) 数学的計画法ソルバ。 同類:Mosel, MathProg(AMPL)

=E= =L= は = <= の意。

VARIABLES             Z;
POSITIVE VARIABLES    Xcorn ,    Xwheat , Xcotton;
EQUATIONS     OBJ,  land ,  labor;
OBJ..  Z =E= 109 * Xcorn + 90 * Xwheat + 115 * Xcotton;
land..             Xcorn +      Xwheat +       Xcotton =L= 100;
labor..          6*Xcorn +  4 * Xwheat +  8  * Xcotton =L= 500;
MODEL farmPROBLEM /ALL/;
SOLVE farmPROBLEM USING LP MAXIMIZING Z
	
	*...		1カラム目
	$ontext ... $offtext
	!!...		行末注釈 $oneolcom オプションが必要
	/*...*/		$oninline オプション
	$hidden ...	.LST出力に残らない
	

GML
GameMaker Language
(2017.01.19) 2Dゲーム作成ツール GameMaker: Studio で使う言語。 対応プラットフォームがやたら多い。 簡単なものはDrag&Dropで作れるが、凝ったことはGML言語で書く。
{
 var i, total;
 i = 0;
 total = 0;
 repeat (10)
    {
    total += array[i];
    i += 1
    }
 draw_text(32, 32, total);
 }
	
	//...
	/*...*/
	

Jess (.clp)
Java Expert System Shell
Jess is a tool for building a type of intelligent software called Expert Systems. An Expert System is a set of rules that can be repeatedly applied to a collection of facts about the world.
(2017.01.19) Reteアルゴリズムを使ったエキスパートシステム構築用の処理系。 実装はJava。Javaに埋めこんで使うことを想定。文面はLISP。 拡張子の .clp は、元は Clips言語の実装だったことに由来する。
	;...
	/*...*/
	

Tableau
https://www.interworks.com/blog/tcostello/2014/05/13/comment-your-code-tableau
Tableau is business intelligence software that helps people see and understand their data.
(2017.01.19) エンタープライズ用データ分析ソフトウェア。 営業口上ばかりで どんなツールなのかさっぱりわからない。
//...

AQL (ArangoDB)
ArangoDB query language
(2017.01.19) ArangoDB用のデータ問い合わせ言語。SQLの類。 データの入出力はJSONで行うのでスキーマは緩い。 SELECTが無く、FORで普通の問い合わせを行う。 複数のqueryは詰められないので、;は不要。 (subqueryは可能)
FOR u IN users
  FILTER u.type == "newbie" && u.active == true
  RETURN u.name
	
	//...
	/*...*/
	

Stylus
(2017.01.19) node.jsで動かすCSSプリコンパイラ。 カッコの省略、mixin、階層記述など この手の処理系としてはよくある機能を搭載。 とくに尖った点は見当たらない。 カッコを省略するので、閉じはインデントで制御。 同類:Less, Sass
border-radius(n)
  -webkit-border-radius n
  -moz-border-radius n
  border-radius n

form input[type=button]
  border-radius(5px)
	
	//...
	/*...*/
	/*!...*/	出力のCSSに残す
	

React JSX
(2017.01.18) JavaScriptの中にHTML断片を埋め込むプリコンパイラ Reactの HTML断片部分。 HTMLテンプレートっぽい箇所に {value} を埋めこんだ記述を、 動的な DOM生成に置き換えてくれる。

地の部分は JavaScriptそのものなので、JSX部分独自の 注釈文法はないことになっている。 しかしJSX部分の注釈はHTML出力に残ってしまう? 出力から消したい場合は一応、JSX中にて 下記の方式でできるらしい

	{/*...*/}
	{//...
	}
	

Red (.red)
Red is a new programming language strongly inspired by Rebol, but with a broader field of usage thanks to its native-code compiler, from system programming to high-level scripting, while providing modern support for concurrency and multi-core CPUs.
(2017.01.18) REBOLの方言。 システムプログラミングからアプリケーションまで全部カバーしようという 野心的な言語というか処理系。 なかなかに面白そう。 全部込みの処理系なのに大きさが1MBしかない。 実装はREBOL。
p-buffer!: alias struct! [buffer [c-string!]]

set-hello: function [
   s [p-buffer!]
][
   s/buffer: "hello"
   s			;-- equivalent to C's char **
]

foo: func [
   /local
       c [p-buffer!]
][
   c: declare p-buffer!
   set-hello c
   print c/buffer
]

foo			;-- call foo function
	
	;...
	comment {...}
	
comment {...}は、複数行文字列定数をcommentコマンドに食わせる、 という意味になる。

{ }ではなく [ ] を多用するので Tclっぽく見えることもある。 GUIプログラムの雰囲気もTcl/Tkに似ている。

OpenGL Shading Language (GLSL)
(2017.01.17) OpenGLで規定されている、シェーダーを書くための言語。 体裁はC。 4x4までの行列とテキスチャへのハンドルを組み込み型として持つ。 整数型はループなど用のオマケで、 古い規格では16bit以上だった。 文字列は無い。
// swizzle
vec4 pos = vec4(1.0, 2.0, 3.0, 4.0);
vec4 swiz= pos.wzyx; // swiz = (4.0, 3.0, 2.0, 1.0)
vec4 dup = pos.xxyy; // dup = (1.0, 1.0, 2.0, 2.0)
	
	/*...*/
	//...
	#if 0 ... #endif
	

"M" Modeling Language (Oslo)
The Microsoft code name "M" Modeling Language Specification
(2017.01.16) 構文記述言語。 2009年に"Oslo"として発表された時の評判では使いやすそうな印象を受ける。
	//...
	/*...*/
	#if notdef
	...
	#endif
	
マイクロソフト内では "M" という名前は Power Query用に取られてしまったらしく、その後の資料があまりない。 2010年にプロジェクト中止。 さらに "Oslo" の名称はその後、Office 365の自動検索システム Delveに使われる。

Kentico macros (K#)
(2017.01.16) CMSシステム Kentico で使うマクロ(テンプレート言語)。 処理指令は {% ... %}。中身の文面はC#。
	{% //...
	   /*...*/
	%}
	
「K#」という名称はOverviewページでしか使われていない。 どの程度プロモートしている言語名なのか疑問がある。

Informatica PowerCenter Transformation Language
(2017.01.16) データフロー処理系Informatica PowerCenterの式言語。 データベースなどの入力をGUIでデータフロー的に 組み立てて出力を得る。テキスト言語の出番はあまりないのだが、 値を加工する部分は Transformation Language で書く。 文字列の結合が || なのがちょっと特徴的。
DIFF = DATE_DIFF(END_DATE,START_DATE,'DD')
out_END_DATE = ADD_TO_DATE(out_START_DATE,'DD',DIFF)
	
	--...
	//...
	

CIF
Crystallographic Information File
(2017.01.15) 結晶学で標準的に使われるデータフォーマット。 X線回折で得られた結晶の構造を記述する。 データ交換用の標準規約で、人間が編集するものではない。
#...

Icinga 2
(2016.01.15) GPL配布の死活監視システム Icinga 2 の設定ファイル。 設定の継承の他に、notification と service と host を 動的に計算して関係を記述するための計算文がある。 分岐・ループ構文もある。 類似:Nagios
object Host "my-server1" {
  address = "10.0.0.1"
  check_command = "hostalive"
}

object Service "ping4" {
  host_name = "my-server1"
  check_command = "ping4"
}

object Service "http" {
  host_name = "my-server1"
  check_command = "http"
}
	
	/*...*/
	//...
	#...
	

SPL (Splunk,)
Search Processing Language
(2017.01.13) ログなどの大量データ検索およびリポート作成環境 Splunk で、 データ検索に使う言語。SQLの類。 検索条件とフィルタをパイプ(|)でつないで欲しいデータをまとめあげていく。
sourcetype=access_* status=200 action=purchase
[
    search sourcetype=access_* status=200 action=purchase
    | top limit=1 clientip
    | table clientip
]
| stats count AS "Total Purchased",
  dc(productId) AS "Total Products",
  values(productName) AS "Product Names" BY clientip
| rename clientip AS "VIP Customer"
`comment("...")`
`macro`マクロ呼び出しの文法。

TICKscript (.tick)
(2017.01.13) InfluxDBに流れこんでくる時系列データを解析してアラートを上げる システム Kapacitor で、アラート条件を書くスクリプト。 データフローっぽい文法。実装はGo。 同類:EPL
stream
    |from()
        .measurement('cpu')
    |alert()
        // Compare values to running mean and standard deviation
        .crit(lambda: sigma("usage_idle") > 3)
        .log('/tmp/alerts.log')
	
//...
//...だけの言語は珍しい。

Hjson
(2017.01.12) JSONを書きやすくしたフォーマット。 クオートやカンマを省略して書ける。 ''' による複数行文字列もサポート。 使用時はJSONに変換する。変換器の実装はJS,C#,Goなど 色々用意されている。 同類:JSON,YAML,HCL
{
  // use #, // or /**/ comments,
  // omit quotes for keys
  key: 1
  // omit quotes for strings
  contains: everything on this line
  // omit commas at the end of a line
  cool: {
    foo: 1
    bar: 2
  }
  // allow trailing commas
  list: [
    1,
    2,
  ]
  // and use multiline strings
  realist:
    '''
    My half empty glass,
    I will fill your empty half.
    Now you are half full.
    '''
}
	
	#...
	//...
	/*...*/
	

EJS (.ejs)
(2017.01.12) JavaScriptを丸ごと埋め込むテンプレート言語。 同類:PHP
	<%...%> <%_...%> 処理指令
	<%=...%>	値
	<%-...%>	HTMLエスケープしない 他のテンプレート言語と違う
	<%#...%>	注釈。ブロックコメントは不可ですな
	<%% %%>		生の <% %>
	<%...-%>	改行を削除
	
<%#...%>

ANTLR (.g4)
(2017.01.12) Java用の構文解析器。実装もJava。 EclipseのXtext の バックエンドとしても使用。 同類: yacc(1)+lex(1), JFlex
	/*...*/
	//...
	

Chapel (.chpl)
(2017.01.12) Cray製の並列処理言語。Linuxなどでも動く。 いったんC(もしくはLLVM)に変換されてからコンパイルされる。 文面はC++系。

forall, begin, cobeginといったステートメントで 並列処理を指示する。 セマフォアは変数に sync や single 修飾子を付けて扱う。

var sy$: sync int=1;  // state = full, value = 1
var si$: single bool; // state = empty, value = false

si$ = true; // state = full, value = true

var sy = sy$; // sy$: block until full, then state = empty
var si = si$; // si$: block until full, then state = full
	
// Data-parallel hello world
/* This program uses Chapel's data parallel features to create a
   parallel hello world program that utilizes multiple cores on a
   single `locale` (compute node).
 */
config const numMessages = 100;
forall msg in 1..numMessages do {
  writeln("Hello, world! (from iteration ", msg, " of ", numMessages, ")");
}
	
	//...
	/*...*/	入れ子可
	

NCL (.ncl)
NCAR Command Language http://www.ncl.ucar.edu/
NCL is an interpreted language designed specifically for scientific data analysis and visualization.
(2017.01.11) 科学データ解析・可視化ツール。 汎用に使えるが、 気象関連の応用例が多く、組込関数も地球科学関連のものが多い。 実装はFortranとC。 同類:gnuplot, LabTalk, ImageJ, GrADS

変数に対するメタデータがいろいろある。 主に使われる netCDFのデータ構造を反映している。

a = (/1,2,3,4,5,6,7,8,9,10/)	; 配列
a := (/(/"I", "am"/), (/"string", "now"/)/)	;再代入。バージョン6.1.1以降で可能

b = (/ (/1.0,2.0,3.0/), (/4.0,5.0,6.0/), (/7.0,8.0,9.0/) /)	;2次元配列
b@units = "none"	;変数自体に対する属性
b!0 = "dim0"		;次元に名前をつける
b!1 = "dim1"
b&dim0 = (/.1,.2,.3/)	;次元に対し、「座標」を付随させる
b&dim1 = (/10,100,1000/)

vl = [/ (/1,2,3/), 5.0, (/10000.d, 23.45d/), "abcde" /]	;可変長リスト

temperature(0,5,6)	;要素の参照
temperature(1:3,5,6)	;部分配列
temperature(:,:,:)	;全部

file1 = addfile("file1.nc", "r")
a = file1->temperature(0,:,:,:)	;ファイルから値(配列)を取り出す
	
;================================================;
;  conwomap_2.ncl
;
; Concepts illustrated:
;   - Drawing a simple filled contour plot
;   - Selecting a different color map
;   - Changing the size/shape of a contour plot using viewport resources
;
;================================================;
begin
  f    = addfile("cone.nc","r")
  u  = f->u(4,:,:)                
  wks  = gsn_open_wks("png","conwomap")   ; send graphics to PNG file

  res                     = True          ; plot mods desired

  res@cnFillOn            = True          ; turn on color
  res@cnFillPalette       = "gui_default" ; set color map
 
  res@vpWidthF            = 0.5           ; change aspect ratio of plot
  res@vpHeightF           = 0.3

  res@gsnMaximize         = True          ; maximize plot size

  plot = gsn_csm_contour(wks,u,res)       ; contour the variable

  end
	
;...

netCDF (.nc)
(2016.01.11) 気象データ交換用のバイナリデータフォーマット。 ヘッダにデータ幅や次元単位を記載しておいて、 データそのものはどんどん追記していける。

注釈は素の netCDFでは定義されておらず、 CF協約にて comment 全域属性が提示されている。 データを無効化するコメントアウトに相当する形式は無い。

	CDL:
	    :comment = "...";
	バイナリ:
	    0x0c, n, 7,"comment", 2, n,"..." ...
	

SQR
Structured Query Reportwriter (Hyperion Production Reporting Language)
http://docs.oracle.com/cd/E12032_01/doc/epm.921/pr_developer_vol2.pdf
http://docs.oracle.com/cd/E12032_01/doc/epm.921/pr_developer_vol1.pdf
(2017.01.10) データベースからレポートを作成する言語。 同類:RPG, EasyTrieve
begin-program
   do list_customers
end-program

begin-procedure list_customers
begin-select
phone
   if &phone = ''
      print 'No phone' (,1)
   else
      print &phone (,1)
   end-if
   position (+1)
from customers
end-select
end-procedure ! list_customers
	
	!...
	#IFDEF notdef ... #ENDIF
もともとはラインプリンタ出力だったのを、後付けでHTMLやPS出力に 対応させたような気がする。 やや饒舌な文面は確かにちょっとCOBOLっぽい。

ImageJ macro
ImageJ is a public domain Java image processing program inspired by NIH Image for the Macintosh.
(2017.01.10) Javaで実装された科学的画像解析ツール。 手で実行した加工をマクロとして吐かせられる。 同類:Origin LabTalk

メニューから選べる処理が十分強力なので、処理は そちら(run("..."))に任せる。 スクリプトで画像加工を頑張る思想ではない。

// The macro demonstrates how to count cells
// using the Process>Binary>Find Maxima command.

  run("Select None");
  run("Cell Colony (31K)");
  getRawStatistics(nPixels, mean, min, max, std, histogram);
  run("Find Maxima...", "noise=&std output=[Point Selection] light");
  getSelectionCoordinates(xCoordinates, yCoordinates);
  print("count="+ xCoordinates.length);
	
	//...
	/*...*/

UnrealScript (.uc)
(2017.01.10) 3Dゲームエンジン Unreal で使うスクリプト言語。 イベントドリブン、ステートマシンと時間を管理。 言語の体裁はC。
	//...
	/*...*/
	`if(0) ... `endif
	

pgScript
(2017.01.10) Postgres用の管理ツール pgAdmin で 使える簡易スクリプト。 基本は生のSQL文を書くのだが、自前の変数展開やループ構文を持つ。 連番になったデータベースの初期化なんかに便利。 pgAdmin III までの機能で、pgAdmin 4 以降では機能が削除された模様。
DECLARE @I, @T; -- Variable names begin with a @
SET @I = 0; -- @I is an integer
WHILE @I < 20
BEGIN
   SET @T = 'table' + CAST (@I AS STRING); -- Casts @I
   CREATE TABLE @T (id integer primary key, data text);

   SET @I = @I + 1;
END
	
マニュアルには記載がないが、 パーサーの作りによると
	--...
	/*...*/

Haxe
(2016.01.09) クロスプラットフォームな言語とライブラリ。 クロスプラットフォームはWindowsとLinuxという意味ではなく、 出力が Flash/JavaScript/Neko/PHP/C++/Java/C#/Python という意味。 NekoはネイティブなバイトコードVM。

コンパイラの実装は OCaml。 コンパイラは GPLv2+ だがランタイムのライセンスはMIT。 商用利用に抵抗が少ない。

言語の体裁は Java系 (ActionScript)。 マニュアルに注釈の説明がない。

	//...
	/*...*/
	

FormCalc (Adobe)
(2017.01.09) Adobe のインタラクティブ帳票作成ツール LiveCycle Designerで、 フォームの自動計算を行わせるための言語。 体裁は普通のスクリプト言語だが、複利計算関連の関数を組込で持つ。 Get, Put, Post でhttp:の通信もできる。
foreach Item in (xfa.record.lists.list1.display[*]) do
$.addItem(Item,"")
endfor
	
	;...
	//...
	

Power Query (M) Formula Language
The Power Query Formula Language is a powerful query language optimized for building queries that mashup data. It's a functional, case sensitive language similar to F#, which can be used with Power Query in Excel, Get & Transform in Excel 2016, and Power BI Desktop.
For computer language theorists: Power Query is a mostly pure, higher-order, dynamically typed, partially lazy, functional language.
(2017.01.08) 様々なデータ源からデータを引っ張ってきて合成する データ問い合わせ言語。関数型。
	//...
	/*...*/
	
F# と似た言語、と説明されているが、あまり似てはいない気もする。 例題がほとんど無いので雰囲気がつかめない。

JBehave
(2017.01.08) Java用の Behaviour Driven Development (BDD)を実現するためのテストフレームワーク。 同類:Gherkin
We want to show that failures in @AfterStories methods will appear in the AfterStories report.

Scenario:  

Given the alert status is OFF
Given a trader of name Mauro
And the alert status is OFF
Given a stock of symbol STK1 and a threshold of 1.5
When the stock is traded at price 2.0
Then the alert status is ON
When the trader sells all stocks
Then the trader is left with no stocks
	
!--...
BDDについての説明は http://behaviour-driven.org/Introductionに 丸投げしているが、画面が派手なだけで内容が全然無い。わからん。 Gherkinとやっていることは同じはず。 というか Gherkinからのコンバータも持っている。

SQL*Loader
(2017.01.08) CSVなどの汎用ファイルをOracleデータベースに高速に取り込むためのツール。 入力ファイルの形式を SQL*Loader control file に記述する。
-- This is a sample control file
LOAD DATA
INFILE 'sample.dat'
BADFILE 'sample.bad'
DISCARDFILE 'sample.dsc'
APPEND
INTO TABLE emp
WHEN (57) = '.'
TRAILING NULLCOLS
(hiredate SYSDATE,
 deptno POSITION(1:2)  INTEGER EXTERNAL(2)
         NULLIF deptno=BLANKS,
  job    POSITION(7:14)  CHAR  TERMINATED BY WHITESPACE
         NULLIF job=BLANKS  "UPPER(:job)",
  mgr    POSITION(28:31) INTEGER EXTERNAL 
         TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS,
  ename  POSITION(34:41) CHAR 
         TERMINATED BY WHITESPACE  "UPPER(:ename)",
  empno  POSITION(45) INTEGER EXTERNAL 
         TERMINATED BY WHITESPACE,
  sal    POSITION(51) CHAR  TERMINATED BY WHITESPACE
         "TO_NUMBER(:sal,'$99,999.99')",
  comm   INTEGER EXTERNAL  ENCLOSED BY '(' AND '%'
         ":comm * 100"
)
	
--...

WebVTT
Web Video Text Tracks Format
(2016.01.08) テレビの字幕を書くためのフォーマット。 同類:Fountain
WEBVTT

00:01.000 --> 00:04.000
Never drink liquid nitrogen.

NOTE I’m not sure the timing is right on the following cue.

00:05.000 --> 00:09.000
- It will perforate your stomach.
- You could die.
	
	NOTE ...
	...
		←空行
仕様的には CSS で指定するレンダリング形態についての 記述が圧倒的に多い。 時間同期関連は絶対時間(同期対象のストリームの開始が00:00)が 規定されているだけで、相対時間での指定ができないので、 手で編集するのは非現実的だと思う。

GraphQL
(2017.01.06) Facebook発案の、クライアント=サーバシステム用の JSON風のデータ問い合わせフォーマット。出力側はJSONそのもの。 出力データの階層形式を入力側であらかじめかっちり決めて投げる必要がある。
mutation {
  likeStory(storyID: 12345) {
    story {
      likeCount
    }
  }
}
	
#...

Minitab macro
(2017.01.06) 統計分析ツール Minitab で使うマクロ言語。 グラフ描画と分析機能を大幅強化した Excel のようなもの。 手動で行った分析をマクロとして固めて再実行できる。 同類:JSL, Stata
GMACRO 
NOMISS    
LET K90 = COUNT('X') 
DO K91 = 1:K90 
  IF  'X'[K91] = '*' 
  DELETE  K91:K90 'X' 
    BREAK 
  ENDIF 
ENDDO 
ENDMACRO
	
#...
個別の集計関数などの説明はあるが、 LET や DO や GMACRO の 解説文が見つからない。製品のヘルプには含まれてるんだろうか?

AutoSys JIL
Job Information Language
(2017.01.05) バッチジョブ定義言語というかフォーマット。 見た目は attribute: value を羅列しているだけ。 特定の語句がコマンド(jil subcommand)になっていて、そこから 定義が始まる。 このテキストを jil < file_name.txtで食わせる。

02:00に作られるはずのSALES.RAWファイルを受け取り、filter_dataで SALES.SQLを生成し、データベースに投入する:

# Example of a Machine
insert_machine: lowgate
type: a

# Example of Jobs
insert_job: Nightly_Download
job_type: box
date_conditions: yes
days_of_week: all
start_times: "02:00"

insert_job: Watch_4_file
job_type: ft
box_name: Nightly_Download
watch_file: /DOWNLOAD/MAINFRAME/SALES.RAW
watch_file_type: generate
machine: lowgate

insert_job: filter_data
job_type: cmd
box_name: Nightly_Download
condition: success(Watch_4_file)
command: filter_mainframe_info
machine: lowgate
std_in_file: /DOWNLOAD/MAINFRAME/SALES.RAW

insert_job: parse_data
job_type: cmd
box_name: Nightly_Download
condition: success(filter_data)
machine: lowgate
command: isql -U mutt -P jeff
std_in_file: /DOWNLOAD/MAINFRAME/SALES.SQL
std_out_file: /LOG/parse_data.out
std_err_file: /LOG/LOG/parse_data.err
	
	#...
	/*...*/
	

Csound
(2017.01.04) 汎用オーディオシンセサイザ。 音色(orchestra)と鳴らし方(score)を与えて音を合成する。
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac      ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o foscil.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

kcps = 440
kcar = 1
kmod = p4
kndx line 0, p3, 20     ;intensivy sidebands

asig foscil .5, kcps, kcar, kmod, kndx, 1
     outs asig, asig

endin
</CsInstruments>
<CsScore>
; sine
f 1 0 16384 10 1

i 1 0  9 .01    ;vibrato
i 1 10 .  1
i 1 20 . 1.414  ;gong-ish
i 1 30 5 2.05   ;with "beat"
e
</CsScore>
</CsoundSynthesizer>
	
	;...
	/*...*/
	

Idoc
(2017.01.04) Oracle の CMS である WebCenter Content の HTMLテンプレート言語。 処理指令: <$cmd$>
[[%...%]]

素の[[ ]] に特殊な意味はなさそう。 <$#...$> とかじゃないのは、ブロックコメントを 想定しているのかも。

Hamlet
(2017.01.04) Yesod Webフレームワークで使われる HTMLテンプレート言語。 実装はHaskell。 インデントで閉じを制御する。 処理指令: $cmd #{var}
doctype 5
<html>
    <head>
        <title>#{pageTitle} - My Site
        <link rel=stylesheet href=@{Stylesheet}>
    <body>
        <h1 .page-title>#{pageTitle}
        <p>Here is a list of your friends:
        $if null friends
            <p>Sorry, I lied, you don't have any friends.
        $else
            <ul>
                $forall Friend name age <- friends
                    <li>#{name} (#{age} years old)
        <footer>^{copyright}
	
$#...

Haskell で書かれたプログラムの解説文は 明晰な感じがする。 言語の使い手にそういう人が多いのか、 言語の性質がそうたらしめるのか、 単にわかりにくいから丁寧に説明する必要があるのか、は不明。

Wikidot
(2017.01.04) Wikiサービス。一応オープンソースとなっているが、 ダウンロードする場所が見当たらない。あまり出したがってはいない様子。
[!--...--]

Harlowe (Twine,)
処理指令: (cmd:...)
<!--...-->	HTMLから削除

Snowman (Twine,)
処理指令: <%...%>
/*...*/	HTMLから削除
//...	HTMLから削除

SugarCube (Twine,)
処理指令: <<...>>
/%...%/	HTMLから削除

https://twinery.org/forum/discussion/5071/how-to-comment-commenting-syntax
(2017.01.04) テキストアドベンチャーもしくはインタラクティブ小説作成ツール Twineの スクリプト言語。 実装はNode.js。ローカルで動かすバイナリも配布。 ベタテキスト部分はWiki系。 プログラムを書くエンジンにHarlowe, Snowman, SugarCubeと種類がある。

Volt
(2016.12.29) WebフレームワークPhalconのHTMLテンプレート言語。 PHPから使うが、実装はコンパイラ(Zephir)なので高速。 文法はJinja系。 処理指令は {{expr}} {%statement%} 同類:Jinja
{# ... #}

Zephir (.zep)
Zephir is a compiled high level language aimed to the creation of C-extensions for PHP.
(2016.12.29) PHP用のC拡張を書くことに特化した言語。体裁はC。 *.zep をCに変換し、gccでオブジェクト化する。 型は静的と動的両方こなせる。 静的にすれば速い。ただしArrayやObjectにはできない。
/* 動的型変数 */
var a;
let a = "hello";
let a = 10;

/* 静的型変数 */
boolean b;

let b = true,
    b = 100, // automatically casted to true
    b = null, // automatically casted to false
    b = "hello"; // throws a compiler exception
	
	//...
	/*...*/
	

phpBB template
(2016.12.29) PHPの掲示板システム phpBB のHTMLテンプレート。 処理指令は {expr} <!-- statement --> 拡張子が .tpl から .html に変わったのは、単にエディタのハイライトが 行われるから、ということらしい。
<!-- IF postrow.S_PROFILE_FIELD1 -->
	<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
	<br /><b>{postrow.PROFILE_FIELD1_NAME}:</b> {postrow.PROFILE_FIELD1_VALUE}
<!-- ENDIF -->
	
	<!-- IF 0 -->...<!-- ENDIF -->
	
この IF 文は普通の処理指令で、コメントアウト内はwell-formedで なければならないはずだが、チュートリアルでコメントだと言っているので 注釈文だとしておく。

Xilinx .COE
(2016.12.29) FPGA のメモリ内容の初期値を設定するファイル。 進法とデータ幅を宣言した後、データをずらずら並べるだけ。 .COE というのは coefficient (係数) のことらしく、 もともとはデジタルフィルタのインパルス応答の係数を食わせる ためのフォーマットだったことに由来するらしい。
;...

simplate
(2016.12.29) PHPによるHTMLテンプレート言語。 Smartyを参考にしてはいるが、 機能を削り落としてある。処理指令は <{...}>
<{*...*}>
本気エスケープのための<{literal}>を Smartyと同様に持つが、 JavaScriptで <{}> を使うことはまずないのであまり出番がない。

Boogie IVL
The Boogie intermediate verification language
(2016.12.28) 仕様記述言語。ドキュメントが大幅に未完なので、 どんな雰囲気の言語かすらわからない。C++やDart系?
//...

XQuery (XML Query)
(2016.12.28) XMLを検索するための言語仕様。SQLの類。 Smileyに見えるのは嫌いだという意見もある。
(:...:)	入れ子可

bolt
(2016.12.28) iOSやAndroid用のWebアプリケーションバックエンド Firebase で、 アクセス権の設定を行う言語。 ネイティブにはJSON(YAML)で設定するのだが、間違いやすいので betaながらC構造風に書ける boltが提供されている。 同類:BlueCoat CPL, Varnish VCL
path /users/{uid} is User {
  // Anyone can read a User's information.
  read() { true }

  // Only an authenticated user can write their information.
  write() { auth != null && auth.uid == uid }
}
	
	//...
	/*...*/
	

EEL
DataFlux Expression Engine Language
(2016.12.27) エンタープライズ用データ処理環境。 DataFlux Data Management Studio のできあいの処理でできないものは EELを使って処理を書く。
/* How do I count the number of records in a table using the EEL? */
// Pre-Expression 
// Declare and initialize an integer 
// variable for the record count 
integer recordCount 
recordCount=0 

// Expression 
// Increment recordCount by one 
recordCount=recordCount+1 
	
	/*...*/
	//...
	
データベースアクセス機能もあるようだが、ろくすっぽドキュメントがない。 汎用のファイル入出力と文字列処理で頑張る言語のように見える。

OpenSCAD
OpenSCAD is a 2D/3D and solid modeling program which is based on a Functional programming language used to create models that are previewed on the screen, and rendered into 3D mesh which allows the model to be exported in a variety of 2D/3D file formats.
(2016.12.26) 3Dモデリングツールのスクリプト。 同類:MAXScript, VEX

変数に代入した値は、そのブロック内でしか値を保持しない。 以前はグローバル変数にブロック内で再代入すると コンパイルエラーになっていた。 関数型言語なのかな?

a=0;
if (a==0) 
  {
    a=1; //  before 2015.03 this line would generate a Compile Error
	 //  since 2015.03  no longer an error, but 
	 //  the value a=1 is confined to within the braces {}
  }
	
	//...
	/*...*/
	

EGL
Enterprise Generation Language
EGL is a specification-level language. Using EGL, you can perform the following tasks:
  • Define data.
  • Generate the logic that operates on the data.
  • Customize user interfaces to present the data.
(2016.12.26) IBM Rational のビジネスアプリケーション記述言語。 フロントエンドは JavaServer Faces (JSF)を使っている。 同類:PxPlus, ABL
package jsfhandlers;
import eglderbyr7.data.*;
import eglderbyr7.StatusRec;
import eglderbyr7.access.CustomerLib;

handler allcustomers type JSFHandler
  {onConstructionFunction = onConstruction,
    onPreRenderFunction = onPreRender,
    view = "allcustomers.jsp"}

  customers Customer[0];
  status StatusRec;

  Function onPreRender()
    CustomerLib.GetCustomerListAll(customers, status);
  End

  Function onConstruction()
  End
End
	
	//...
	/*...*/
	

MoonScript
(2016.12.26) Luaにコンパイルされる小型言語。インデントで閉じを制御する。 オブジェクト指向が生のLuaより簡単に書ける。

Person!は引数なしで Person を呼ぶ。 a\give_item でメソッド呼び出し。

class Person
  new: =>
    @clothes = {}
  give_item: (name) =>
    table.insert @clothes, name

a = Person!
b = Person!

a\give_item "pants"
b\give_item "shirt"

print item for item in *a.clothes
	
--...
Luaの #...--[[...]] には対応していない。

Boo
(2016.12.27) .NET/Mono をランタイムとして使う Python似の言語。 C#と同様に静的型付け。.exeにコンパイルして使う。 実装はC#。 Pythonの #... の他に、C++コメントも使える。
	#...
	//...
	/*...*/	入れ子可
	

LabTalk
Origin is an industry-leading scientific graphing and data analysis software. LabTalk is a scripting language native to Origin.
(2016.12.26) 科学データ解析・グラフ描画ツール Origin のスクリプト言語。 C, Python, R, Mathematica, MATLAB, LabVIEW とも連携可能。 類似:gnuplot, R, Stata, JSL

= が普通の代入で、:= が仮引数への代入。

/* Interpolate Data on given X Vector */
pe_mkdir Interp1 path:=aa$;  //make a folder in the project named Interp1
pe_cd aa$; //open the folder Interp1 in project
 
fname$ = system.path.program$ + "Samples\Mathematics\Interpolation.dat";
newbook;
newsheet cols:=4 xy:="XYXY"; 
impasc;
 
Range rTime1 = 1; // col(1) of active sheet
Range rData1 = 2; // col(2) of active sheet
Range rTime2 = 3; // col(3) 
Range rData2 = 4; // col(4) 
 
interp1 ix:=rTime2 iy:= rData1 method:= spline ox:=rData2 ;
 
plotxy iy:=rData1 plot:=200 color:=1;
plotxy iy:=rData2 plot:=200 color:=2 ogl:=1;
	
	//...
	/*...*/
	

Progress ABL
Advanced Business Language
Advanced Business Language (ABL) is a high-level procedural programming language that helps developers to develop applications optionally using its own integrated relational database and programming tool.
(2016.12.26) Progress OpenEdge のビジネスアプリケーション構築言語。 同類:PxPlus
/* This REPEAT block loops through its statements until the user
   presses the END-ERROR (F4) key. */
REPEAT:
  PROMPT-FOR customer.cust-num.
  FIND customer USING cust-num.
  DISPLAY customer WITH 2 COLUMNS.
END.
	
	/* ... */	入れ子可
	// ...		行頭か、直前は空白 11.6以降 (経緯)
	&IF 0 &THEN ... &ENDIF
	

\はファイル階層セパレータとして使うので、 文字列のエスケープ"~r~n" など。

10進数(BCD?)のDECIMAL型がある。金勘定には必須。 ただし最大50ケタ、小数点以下は10ケタまで。 丸め方向の設定をどうするのかが見当たらない…。

Lumerical
(2016.12.26) 光学素子の設計などに使うFDTD法の電磁場シミュレータ Lumerical で使う スクリプト言語。 当然、行列を組込型として持つ。複素数は 1+2i のように書く。

for文はあるがwhileが無い。forで代用する。

# equivalent implementation of a while loop in Lumerical script language
x=1;
for(0; x<10; 0) {
  ?x;
  x=x+1;
}
	
#...

DokuWiki
(2016.12.26) Wikiエンジン。 単独では注釈文法を持っておらず、プラグインで追加する。 DokuWiki 2016-06-26版で使えるプラグインは2種類ある。 Comment Syntax Pluginでは
	/*...*/
	//...
	~~...~~
	
~~...~~ は特殊マクロ文法の流用。 DokuWikiは //italic// なので、 //...のパターンマッチは 少々手が込んでいる。 プラグイン作者は日本人なので、イタリックへのこだわりが ないのかもしれない。

micro:bit Touch Develop
(2016.12.26) BBCの教育用マイコン micro:bit のプログラミング言語の一つ。 何種類か選べる(PXT, ブロックエディタ, Python, JavaScript, Touch Develop)。
//...

iMacros
(2016.12.26) Webブラウザ操作自動化ツール。WindowsのFirefox,IE,Chromeのみサポート。 ツールにブラウザ画面をはめこんでいる関係と思われる。 ツールで記録した操作はスクリプトにして手で加工できる。 簡単な画像照合 もできる。 同類:AutoIt, SenseTalk
URL GOTO=http://www.iopus.com/imacros/demo/v6/images/bigbee.jpg
ONDOWNLOAD FOLDER=* FILE=*
'Download the picture by either of the following:
TAG POS=1 TYPE=IMG ATTR=HREF:http://*.jpg CONTENT=EVENT:SAVEITEM
'TAG POS=1 TYPE=IMG ATTR=HREF:http://*.jpg CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT
	
'...	行頭のみ
Note: Navigating through fields with the keyboard (i.e. using the TAB key) is not supported and will not be recorded.
え?めんどくさいな。選択しただけでJavaScriptが動くページとかも ある以上、しょうがないかもだけど。

JavaServer Faces Facelet template
(2016.12.26) JavaのWebアプリケーション構築環境 JavaServer Faces (JSF) て使う HTMLテンプレート言語。テンプレートはXHTMLで書く。 <!--...--> では出力に残ってしまうので、 完全に消したい時は
<ui:remove>...</ui:remove>

YARA
YARA is a tool aimed at (but not limited to) helping malware researchers to identify and classify malware samples.
(2016.12.25) バイナリデータ検索ツール。 ファイルが、与えられた条件に該当するか調べる。 実装はC。
rule silent_banker : banker
{
    strings:
        $a = {6A 40 68 00 30 00 00 6A 14 8D 91}
        $b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
        $c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
    condition:
        $a or $b or $c
}
	
	/*...*/
	//...
	

Sass
Syntactically Awesome StyleSheets
Sass is an extension of CSS, adding nested rules, variables, mixins, selector inheritance, and more.
(2012.12.25) インデントで閉じを制御するCSSプリコンパイラ。 実装はRuby。 単なるSassは「古い」文法で、新しいSCSS (Sassy CSS)はCSS互換。 同類:Less
#main
  color: blue
  font-size: 0.3em
	
	/*...*/	出力のCSSに残る
	//...	残らない
	  ...	インデントブロックでも有効
	

JEXL
Java EXpression Language
JEXL is a library intended to facilitate the implementation of dynamic and scripting features in applications and frameworks written in Java.
(2016.12.25) Javaに、後から設定可能なスクリプト式を評価させるためのライブラリ。 基本は変数の参照・設定・計算だけを行う。 あまり大げさな処理を書くことは想定されていない。 一応、if と for と while も持っている。
((G1 + G2 + G3) * 0.1) + G4	//評価時にG1,G2,G3,G4には値をセットしておく
	##...
	//...
	/*...*/
	
出力は式の評価値なので、出力用の構文はない。 文字列のマッチはできるが文字列演算ができないので、 「ビールが99本」は実現不可。

Clipper
(2016.12.25) BASIC風のコンパイラ言語。Clipperにはいくつかの実装がある。 方言:xBase, X# 代入は :=で、let文はない。
&& C:\hb31\bin\hbmk2 -quiet -oc:\test.exe mesi.prg -run
DECLARE months [12]
? LEN (months)
&& We shall now load some data into our arrays
PRIVATE month_names: = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
PRIVATE months: = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

&& Let us make some output (using a FOR loop - see below)
FOR I: = 1 TO LEN (months)
? month_names [i], "is", months [i], "days long."
NEXT
	
	* ...
	//...
	&&...
	/*...*/
	

libconfig
(2016.12.25) 設定ファイル記述。Cの構造体風に階層化されたデータを書き連ねる。 同類:BIND, YAML
# file: test.cfg
info: {
  name = "Winston Churchill";
  @include "quote.cfg"
  country = "UK";
};
	
	#...
	/*...*/
	//...
	

Ox
Ox is an object-oriented matrix programming language with a comprehensive mathematical and statistical function library.
(2016.12.24) 組込型に行列を持つ数値計算処理系。体裁はC++。 同類:Julia
	/*...*/	入れ子可
	//...
	

Twirl (Play Framework template engine)
(2016.12.23) Webアプリケーション構築環境 Play のHTMLテンプレート言語。 処理指令は @{...}で、Razor似。 実装は Scala。 同類:Razor
@*...*@

PRADO Framework template
PRADO is a component-based and event-driven programming framework for developing Web applications in PHP 5. PRADO stands for PHP Rapid Application Development Object-oriented.
(2016.12.23) Webアプリケーション構築環境 PRADO のHTMLテンプレート。 実装はPHP。 処理指令は<%...%>だが、特殊タグが多い。
	<%= PhpExpression %>
	<%% PHP Statements %>
	<%# PhpExpression %>
	<%$ ParameterName %>
	<%~ LocalFileName %>
	<%[localestring]%>
	<%/ image.jpg %>
	
<!---...--->
syntax highlightに問題があったから<!--...-->から変えた、とあるが、 何が問題だったんだろう。

FASTBuild
FASTBuild is a high performance, open-source build system supporting highly scalable compilation, caching and network distribution.
(2016.12.23) 分散環境にも対応したビルドツール。makeの類。 再ビルド不要な場合の判断が速い。 MacOSX や Linuxでも使えるが、Windowsが主たるターゲットっぽい。

バックスラッシュは特殊エスケープではなく普通の文字 (ファイル階層セパレータ)。

.BaseIncludePaths   = ' /I"./"'
                    + ' /I"$VSBasePath$/VC/include/"'
.CompilerOptions    + .BaseIncludePaths

Executable( 'HelloWorld' )
{
    .Libraries          = { "HelloWorld-Lib" }
    .LinkerOutput       = 'Out\HelloWorld.exe'
    .LinkerOptions      + ' libcmt.lib'     // Std Lib (Multi-Threaded, Static, Release)
                        + ' kernel32.lib'   // Kernel functions
}
	

	//...
	;...
	

SphinxQL
(2016.12.23) 全文検索エンジン Sphinx のデータベース問い合わせ言語。SQLの類。
/*...*/
--...は使えない。理由は不明。 /*...*/もMySQLとの互換性のために追加されたようなので、 あまり深く考えて実装されたわけではなさそう。

Tempate Toolkit
(2016.12.22) Perl用のテンプレート言語。 処理指令は [%...%]
	[%# ...
	    この処理指令を全部無視
	%]
	[% # 行コメント
		theta = 20 # 行コメント
	%]
	

kramdown
(2016.12.22) Markdown の方言。実装はRuby。
	{::comment}...{:/comment}	<!--...--> に変換される
	
Markdown準拠なら <!--...-->でもよさそうだが、 HTMLエスケープされて見えてしまうのかな?

Flamingo template
Flamingo is an online service that will help your site look and feel elegant on any mobile device.
(2016.12.21) モバイルデバイス用のサイトを用意するサービスFlamingoの テンプレート言語。 自サーバーにインストールするものではなく、Webサービス。 処理指令は <!--{...}-->
	<!--{/*}--> ... <!--{*/}-->
	<!--{ /* ... */ }-->
	
仕方ないといえばそうなのだが、注釈に7文字も使う言語は珍しい。

Ledger
(2016.12.21) 簡易会計ツール Ledger のjournal(仕訳) のフォーマット。 注釈の一部は取引の詳細情報としてプログラムに読まれる。
2015/9/30 gift received
  assets:cash   $20
  income:gifts

2015/10/16 farmers market
  expenses:food    $10
  assets:cash
	
; this is a global comment that is not applied to a specific transaction
; it can start with any of the five characters but is not included in the
; output from 'print' or 'output'

2011/12/11  Something Sweet
    ; German Chocolate Cake
    ; :Broke Diet:
    Expenses:Food                  $10.00 ; Friends: The gang
    Assets:Credit Union:Checking
	
オリジナルの Ledger (C++) では6種の注釈が使えるが、 他の実装のhledger (Haskell) では ; と # と comment のみ。
; This is a single line comment,
# 行頭のみ
% 行頭のみ
| 行頭のみ
* 行頭のみ

comment
    This is a block comment with
    multiple lines
end comment
	

Textile for Textpattern
(2016.12.21) こちらのTextileの実装は注釈文法を持つ。実装はPHP。 同類:HAML
	###. comment
	more comment

	not comment
	

MODX Template tag
CMSの MODX のHTMLテンプレート。 実装はPHP。 処理指令は [[...]]
[[-...]]	おそらく入れ子可
以前は専用の注釈文法がなく、 [[this is a comment]] で this に対応するコード(snippet)が 無いときに無視される作用を使っていた。 のであれば、入れ子可、のはず。

Robot Framework
Robot Framework is a Python-based, extensible keyword-driven test automation framework for end-to-end acceptance testing and acceptance-test-driven development (ATDD).
テスト記述フレームワーク。 実装は Python。 同類:Gherkin

入力は表形式で行う。 ベタテキスト表現では、

スペース1つは区切りにならない。識別子扱いであることに注意。
*** Test Cases ***
Add two numbers
    Given I have Calculator open
    When I add 2 and 40
    Then result should be 42

Add negative numbers
    Given I have Calculator open
    When I add 1 and -2
    Then result should be -1

*** Keywords ***
I have ${program} open
    Start Program    ${program}

I add ${number 1} and ${number 2}
    Input Number    ${number 1}
    Push Button     +
    Input Number    ${number 2}
    Push Button     =

Result should be ${expected}
    ${result} =    Get Result
    Should Be Equal    ${result}    ${expected}
	
#...	テーブルセルの頭にて

Clafer
Clafer (class, feature, reference) is a lightweight modeling language. Lightweight modeling aims at improving the understanding of the problem domain in the early stages of software development and determining the requirements with fewer defects.
(2016.12.20) 軽量の仕様記述言語。 実装はHaskell。 同類:Alloy Alloy用の出力を吐き出せる。

親子関係はインデントで制御する。

abstract Book 
  title -> string
  subtitle -> string ?	// subtitle does not have to be a child of the title because title is  
  // mandatory, although conceptually subtitle is a point about title as well 
  page -> integer	// if we don't really care about individual pages, just the number 
  [ page >= 2 ]
  or format	// the choice between xor and or depends on the context. For example, 
    paper	// whether the book store has a single entry for a book with multiple 
      hardcover ?	// formats or whether there must be a separate entry with exactly one 
    electronic	// format at the time 
  kind -> Kind	// can be modeled as an enumeration 

enum Kind = textbook | manual | reference | fiction | nonfiction | other
	

注釈に関するマニュアルが見当たらないが、 パーサーの作りによると
	//...
	/*...*/
	

Adblock Plus filter
(2016.12.20) Webブラウザ用の広告削除ツール Adblock Plus の ブラックリスト・ホワイトリスト設定。
!...
ただしいくつかの予約語は処理される。 特に ! Redirect: URL は 即フィルタの再ダウンロードを行う非注釈。

建て増しを繰り返して文法がかなり汚くなった見本。

	ads		adsを含むものをブロック
	@@headset	headsetを含むものは通す
	swf|		末尾一致
	||example.com/ads	サブドメイン一致
	! comment	注釈
	*/ads/*$script,match-case	フィルタオプション
	/banner\d+/	正規表現
	##div.textad	<div class="textad"> を削除
	example.com#@#div.textad	example.comでは削除しない
	

RELAX NG
(2016.12.20) XMLのDTDというかスキーマを簡便に書くための言語。 Cの構造体風にXMLのスキーマ階層を書ける。 データ型も付随させることができる。 同類:YANG
The DTD (as an internal subset) would be as follows:
<!DOCTYPE addressBook [
<!ELEMENT addressBook (card*)>
<!ELEMENT card (name, email)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT email (#PCDATA)>
]>
A RELAX NG pattern for this could be written as follows:
element addressBook {
  element card {
    element name { text },
    element email { text }
  }*
}
	#...
	##...	XML annotation [a:documentation [...]] に変換される
	
なお前身のRELAXは XML形式なので、似ているのは概念だけ。

ChordPro
(2016.12.19) ギター用の歌詞カードを作るためのテキストフォーマット。 参照処理系はChordiiだが、 他の処理系もある。
chordii provides guitar players and other musicians with a tool to produce good looking, self-descriptive music sheets from text files.
chordiiの実装はC、出力はPostScript。
{title:Love me tender}
{subtitle:Presley/Matson}

[G]Love me tender [A7]love me sweet
[D7]Never let me [G]go
[G]You have made my [A7]life complete
[D7]and I love you [G]so
	
#...

Foobar2000 Titleformat
(2016.12.19) Windows用メディアプレーヤFoobar2000で、アルバムタイトルなどを 表示させる部分で使うスクリプト。 文字列処理やif文はあるが、ループ構文はない。

Find first occurence of character X and last occurence of character Y, and return everything in-between

$puts(char1,X)$puts(char2,Y)$puts(tag,%tag%)
$puts(spacer1,$strchr($get(tag),$get(char1)))
$puts(spacer2,$strrchr($get(tag),$get(char2)))
$trim($substr($get(tag),$add($get(spacer1),1),$sub($get(spacer2),1)))
	
//...	行頭のみ
どこに分類しよう。基本はデータファイルだが、 言語と言える程度の複雑さはある。

InfluxDB Line Protocol
(2016.12.18) 時系列データを扱う InfluxDBで、データ投入を行うプロトコル。 8086番ポートに対し HTTP POST で投入する。
#...

ExpressionEngine Template Language
(2016.12.18) CMS (Content Management System)のExpressionEngine で使われる HTMLテンプレート言語。 実装はPHP。 処理指令は{...}
{news_image} {!-- shows: <img src="image.ext" alt="file_name" /> --}

{news_image}
    File name: {file_name}
    File extension: {extension}
    Url: {url}
{/news_image}
	
{!--...--}
テンプレート側で生の { } が欲しいときはどうするんだろう。 &#123; とか? JavaScriptを埋めたい時とかは? →{ と }が別の行にあれば素通しするらしい。

EPL
The Event Processing Language (EPL) is a declarative language for dealing with high frequency time-based event data.
(2016.12.18) 大量時系列イベントデータ処理システム Esper のSQL風の問い合わせ言語。 株価分析、侵入検知、交通量監視などに使う。
	select tick.symbol from StockTick.win:time(10) as tick, News.win:time(10) as news
	where news.symbol = tick.symbol
	//...
	/*...*/
	
--...が使えない理由は不明。 特に演算子として使われている様子はない。

DTML
Document Template Markup Language
(2016.12.18) Webアプリケーションフレームワーク Zope のテンプレート言語。 実装はPython。 DTMLはレガシーな機能で、新規に起こすならZPT (Zope Page Templates) が推奨されている。 ただしHTML以外(CSS,ベタテキスト)を出力したいならDTMLを使う。

<dtml-command> な形式の疑似タグで制御を埋め込む。

<dtml-comment>...</dtml-comment>
ZPTを再実装して高速化したものがChameleon。 →Chameleon/TAL

CoffeeScript
(2016.12.16) JavaScriptへコンパイルされる小型言語。 インデントでブロックの閉じを制御する。 レイヤが厚くないので出力のJavaScriptが予測しやすい。 関数型言語っぽい記述ができる。 生のJavaScriptを入れたいときは `...` で逃げられる。
perfectSquares = ->
  num = 0
  loop
    num += 1
    yield num * num
  return

window.ps or= perfectSquares()
	
この例はyieldを使っているので、JavaScript側にもyieldが必要。
	#...

	###
	出力のJavaScriptに/*...*/として残す
	###
	

LSP
LocalSolver Programming Language
(2016.12.16) 非線形を含む数学的計画のソルバ LocalSolver の問題記述言語。 同類:MathProg, Xpress Mosel, ILOG OPL
/********** toy-knapsack.lsp **********/

/* Declares the optimization model. */
function model() {

    // 0-1 decisions
    x_0 <- bool(); x_1 <- bool(); x_2 <- bool(); x_3 <- bool();

    // weight constraint
    knapsackWeight <- 10*x_0 + 60*x_1 + 30*x_2 + 40*x_3;
    constraint knapsackWeight <= 102;

    // maximize value
    knapsackValue <- 1*x_0 + 10*x_1 + 15*x_2 + 40*x_3;
    maximize knapsackValue;
}

/* Parameterizes the solver. */
function param() {
    lsTimeLimit = 1;
}
	
	//...
	/*...*/
	

Emblem
(2016.12.16) HAML風のHTMLテンプレート言語。実装はNode.js。 出力はHandlebars (Ember.js) 用の入力になる。 Handlebars単体では<tag> や{{ }}が多くてめんどくさい、 のを何とかしたかったのが目的。 同類:HAML, Slim, pug(Jade)
	/ ...

	/ ...
	  ...
	

SilverStripe template
(2016.12.16) CMSシステム SilverStripe で見た目のカスタマイズを行う際に 使うテンプレート言語。実装はPHP。 処理指令は <% cmd %> $var ${var}
<ul>
    <% loop $Children.Sort(Title, ASC) %>
        <li>$Title</li>
    <% end_loop %>
</ul>
	
<%--...--%>

HCL
HashiCorp Configuration Language
(2016.12.16) JSON上位互換のデータファイル形式。 JSONではどうしても冗長になる部分を省略形で書ける。 実装は Go。
Objects and nested objects are created using the structure shown below:
variable "ami" {
    description = "the AMI to use"
}

This would be equivalent to the following json:
{
  "variable": {
      "ami": {
          "description": "the AMI to use"
        }
    }
}
	
	//...
	/*...*/
	

Tornado template
Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
(2016.12.16) Webアプリケーション構築のフレームワーク Tornado に添付の テンプレート言語。テンプレートは主要構成物ではなく、 非同期I/Oやコルーチンに力点が置かれている。 実装はPython。

テンプレート言語自体の処理指令はJinja系の {% cmd %} {{ expr }}。 任意のPythonコードを埋められるわけではなく、 ループや制御構造は基本的なもののみ。

	{#...#}
	{% comment ... %}
	
生の {{ {% {# が欲しいときは {{! {%! {#!を使う。

テンプレート起動が以下のように2行でできる処理系というのは、 ありそうでなかなかなかったりする。

	t = template.Template("<html>{{ myvalue }}</html>")
	print t.generate(myvalue="XXX")
	

CMake
(2016.12.16) メタMakefileジェネレータ。 Imakefileと違い、cmd(arg arg ...) の形式をとる。
set(srcs archive.cpp zip.cpp)
if (LZMA_FOUND)
  list(APPEND srcs lzma.cpp)
endif()
add_library(archive SHARED ${srcs})
if (LZMA_FOUND)
  # The archive library sources are compiled with -DBUILDING_WITH_LZMA
  target_compile_definitions(archive PRIVATE BUILDING_WITH_LZMA)
endif()
target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)

add_executable(consumer)
# Link consumer to archive and consume its usage requirements. The consumer
# executable sources are compiled with -DUSING_ARCHIVE_LIB.
target_link_libraries(consumer archive)
	
	#...
	#[[...]] #[=[...]=] #[==[...]==]	(v3.0以降)
	
通常の行注釈の他に、 Lua風のbracket argumentを使ったブロック注釈がある。

あんまり使いやすいようにも見えないが、 ろくすっぽドキュメントが無いImakefileよりはましだと思う。

Twig
PHP用のHTMLテンプレート言語。 文法は Jinja2/Django と同じ {% code %} {{ expr }} (というか、オリジナルはJinjaの作者が書いた)
{# ... #}

Eclipse JET
Java Emitter Templates
https://eclipse.org/articles/Article-JET/jet_tutorial1.html
(2016.12.15) テンプレート動作をするJavaのクラスを吐き出すテンプレート言語。

<%--...--%> はテンプレートの動作には影響しない注釈と なっているが、出力のJavaのコメントとして残る。

TypoScript
(2016.12.15) CMSシステム TYPO3 の設定データ表現形式。 PHPのarrayに詰めるデータを書き連ねるだけだが、簡単なif文なら書ける。
asdf {
  zxcvbnm = uiop
  backgroundColor = blue
  backgroundColor.transparency = 95%
}

When parsed, this information will be stored in a PHP array which could be defined as follows:
$TS['asdf.']['zxcvbnm'] = 'uiop';
$TS['asdf.']['backgroundColor'] = 'blue';
$TS['asdf.']['backgroundColor.']['transparency'] = '95%';
	
	//...
	#...
	/*...	1カラム目のみ
	...
	*/...
	attrib {...
		block
	}...
	
{ } の後の文字も全部無視する。 なぜ /*...*/に1カラム目のみの制限が付いているのかは よくわからない。行単位の構文解析器の都合?

Elixir
(2016.12.15) Erlang VM で動かす関数型言語。実装はErlang。

おカタい関数型言語と違い、変数は再代入が可能。 陽にマッチさせたい時は ^ を使う。

	iex> x = 2
	2
	iex> x = 1
	1
	iex> ^x = 2
	** (MatchError) no match of right hand side value: 2
	
パイプ演算子 |> もある。
	iex> odd? = &(rem(&1, 2) != 0)
	iex> 1..100_000 |> Enum.map(&(&1 * 3)) |> Enum.filter(odd?) |> Enum.sum
	7500000000
	
#...
ブロックコメントは無い。 なお Erlangの注釈の%は Elixirでは連装配列の指定に使うので、注釈にできない。

Dust
(2016.12.14) JavaScriptもしくはNode.js用のHTMLテンプレート言語。 処理指令は {...}。 生の { } が欲しいときは {~lb} {~rb} を使う。
	{!...!}
	

HTL
HTML Template Language
(2016.12.14) Adobe の CMS (Content Management System), Adobe Experience Manager で使われる HTMLテンプレート言語。 ${...} で変数参照。 処理指令は既存タグに data-sly-* 属性をつける。 同類:Thymeleaf (どっちが先行かは不明)
<dl data-sly-list="${currentPage.listChildren}">
    <dt>index: ${itemList.index}</dt>
    <dd>value: ${item.title}</dd>
</dl>
	
	<!--/*...*/-->
	

Go html/template
https://golang.org/pkg/text/template/
https://golang.org/pkg/html/template/
(2016.12.14) Goで用意されているテンプレート言語。 {{...}}が処理指令。 同類:Mustache
	{{/*...*/}}
	
生の {{...}} が欲しいときはどうするんだろう。 {{`{{...}}`}} とか?

Thymeleaf
(2016.12.14) Java用のHTMLテンプレート言語。 処理指令は独自タグではなく、既存タグの属性に押し込んで使う。

<p th:text="${value}">Default text</p> で <p> の内容をそっくり入れ替える。 デフォルト値を平文で入れるので、テンプレート単体でも XHTML準拠だし、 直接ブラウザに食わせてもデザインチェックはできるのが特徴。

<table>
  <tr>
    <th>NAME</th>
    <th>PRICE</th>
    <th>IN STOCK</th>
    <th>COMMENTS</th>
  </tr>
  <tr th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'">
    <td th:text="${prod.name}">Onions</td>
    <td th:text="${prod.price}">2.41</td>
    <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
    <td>
      <span th:text="${#lists.size(prod.comments)}">2</span> comment/s
      <a href="comments.html" 
         th:href="@{/product/comments(prodId=${prod.id})}" 
         th:unless="${#lists.isEmpty(prod.comments)}">view</a>
    </td>
  </tr>
</table>
	
	<!--/*...*/-->

	<!--/*--> 
	     you can see me only before thymeleaf processes me!
	<!--*/-->
	
独自タグがないので、ブロックコメントをどうするかは ちょっと悩んだあげくの記法ではなかろうか。 注釈に記号6文字も使う言語はなかなかない。

Liquid
(2016.12.13) HTMLテンプレート言語。実装はRuby。 処理指令は {% tag %}{{ expr }}。 任意のRubyコードを混ぜ込める訳ではない。 あまり複雑なことはできない(させない)、 テンプレートは見た目に特化、という思想。
	{% comment %}...{% endcomment %}
	
Django(実装:Python)と似ているが {#...#}は持っていない。

JSL
JMP Script Language
JMP (pronounced jump) is a powerful and interactive data visualization and statistical analysis tool.
(2016.12.13) 統計解析ツールJMPをバッチ駆動するための言語。 手で行った解析結果は、スクリプトとして吐かせて再利用できる。 同類:R, Stata

Interactive Graphs/Handle()

a = 5;
b = 5;
win = New Window( "Powers",
	Graph Box(
		Frame Size( 200, 200 ),
		X Scale( -10, 10 ),
		Y Scale( -10, 10 ),
		For( i = 0, i < 1.5, i += .2,
			Pen Color( 1 + 10 * i );
			Text Color( 1 + 10 * i );
			Y Function( i * x ^ Round( a ), x );
			Handle(
				a, b,
				a = x; b = y;
			);
			h = 9 - 10 * i;
			Text( {-9, h}, b, "*i*x^", Round( a ), ", i=", i );
		) ) );
	
	//...
	/*...*/
	

ESI
Edge Side Includes
(2016.12.13) Apache の SSI (Server Side Includes) のようなもの。 include,HTTPリクエストに基づいた変数参照、簡単な分岐、ができる。 あまり複雑なことはできないが、これはエッジサーバー (surrogate,リバースプロキシ)上で動かすことを想定しているため。
	<esi:comment text="..." />
	<esi:remove>...</esi:remove>	削除。ESIが無効の時はブラウザへ素通し
	<!--esi content -->	周りを削ってcontentを処理。ESI無効時はブラウザには見えない
	

HiveQL
https://cwiki.apache.org/confluence/display/Hive/Home
https://cwiki.apache.org/confluence/display/Hive/LanguageManual
(2016.12.13) Hadoopクラスタ上で動かす分散データベースの問い合わせ言語。 マニュアルには注釈文法が載っていない。 コマンドラインツールのベースとなっている SQLLine の ソースコード上では
	--...
	#...
	

Laravel Blade
HTMLテンプレート言語。PHPで動かす。 @command {{expr}}が処理指令。
	{{--...--}}
	
Handlebarsなどの{{ }}系テンプレート言語で後処理したい時のために、 @{{...}} は@を削って素通しする、という機能がある。

Slim
(2016.12.13) HTMLテンプレート言語。Ruby用。 文面はHAML/Jade系で、< > がなくインデントで閉じを制御する。 処理指令は #{変数}= コード
	/ ...
	/! ...	出力に<!--...-->として残る
	

Stata
http://www.stata.com/
Stata is a statistical package for managing, analyzing, and graphing data.
(2016.12.12) 統計解析ツール。コマンドラインとグラフィック出力がある。 回帰曲線の算出などができる。 コマンドラインの操作を固めてバッチファイル(do-file)にできる。 同類:R
	*...	行頭のみ (SAS準拠?)
	/*...*/
	//...	ただしhttp://... は非注釈
	///...	次の行をこの行に結合する
	

QPL
Questionnaire Programming Language
(2016.12.12) 米国 会計検査院のアンケート作成用の言語。 元はDOSと電話ベースのアンケートシステムまで遡る。 現行のQPL6はFirefoxのアドオンになっている。 *.pg6→*.qpl→HTML+PHPへのコンパイラがWin/Linux/MacOSXのみの提供。 いちおうデータベースアクセス機能もある。 同類:CSPro
*! ********************************************
   PROGRAM: sample.pg6 
     TITLE: SAMPLE QPL QUESTIONNAIRE
*! ********************************************

* Global commands...

.TITLE = "Sample QPL Questionnaire"

* Questions...

.QUESTION = NAME, TYPE = STRING
What is your name?
.ANSWER = 15
.NEXT
	
	*...
	*! ...
	...
	*! ...
	
*!の勘定を間違えると大惨事になる。ためか、 ブロックコメントはコンパイル時に開きと閉じでWarningが出る

NED
Network Description
(2016.12.08) 分散システムシミュレーションライブラリ OMNeT++ のトポロジー記述言語。 メッセージ交換で動くモジュール群のシミュレーションを行う。 実装はC++。 モジュール自体もC++で書き、 モジュール間の結合をNEDで書く。 同類:Promela, mCRL2 ただ OMNeT++ はプロセス代数よりはもっと実践的なシミュレータ寄り。
module RandomGraph {
    parameters:
        int count;
        double connectedness; // 0.0<x<1.0
    submodules:
        node[count]: Node {
            gates:
                in[count];
                out[count];
        }
    connections allowunconnected:
        for i=0..count-1, for j=0..count-1 {
            node[i].out[j] --> node[j].in[i] if i!=j && uniform(0,1)<connectedness;
        }
}
	

自動でドキュメント用の注釈を抜き出してツールに表示する。 Javadocのように特別な文法があるわけではなく、 定義の直上もしくは同じ行にある注釈をドキュメント扱いする。 ので、 ソースコード的には注釈だがドキュメント的には処理指令である 文法がある(HTML埋め込みや@includeなど)。

	//...
	//#...	ドキュメントからも抜く
	

DCL
Dialog control language
(2016.12.07) ユーザーインタフェース記述言語。 AutoCADで自前のダイアログボックスを作る時に使う。 *.dclの読み込みとバックエンドの動作はAutoLISPで書く。 同類:UIL
minimaldcl : dialog
{
  label="Minimal Example";
  ok_only;
}
	
	//...
	/*...*/
	

QiChat
人型ロボットPepperやNAO の会話を定義するための簡易言語。 類似:IRC bot
#...

Scribble
(2016.12.07) 文書記述言語。 処理指令は @cmd[data]{args}。 LISPのようなS式(Racket式)を埋め込める。 出力はHTMLか、LaTeX経由のPDF。 実装はRacket

デフォルトで用意されている出力が HTML, Racketマニュアル、 Book, Report, SIGPLAN論文, JFP論文, LNCS論文、 なので、そういう人には便利だと思われる。

	@;{...}	入れ子可
	@;...
	

Racket
http://docs.racket-lang.org/
(2016.12.07) LISP/Schemeの方言。実装はC。
	;...
	#;...	次のS式を無視
	#|...|#	入れ子可
	#!...	\で次の行と接続
	

Mustache
(2016.12.06) HTMLテンプレート言語。{{...}}が処理指令。 データはJSON(YAML)で投入する。

実装はRubyだが、処理指令でRubyが使えるわけではない。 分岐もループもない単純な文法なので、JavaScriptなど他の実装もある。

{{!...}}
この注釈文法ではコードのコメントアウトができないので、 方言:Handlebars, Curlybars では {{!--...--}} も導入。入れ子はできない(と思う)。

MicroTik RouterOS
Linuxベースのルーターの設定ファイル。 コマンド出力を tcl みたいに [ ]で キャプチャしてバッチ処理を書ける。
#... 1カラム目のみ

Fountain
(2016.12.06) 平文ベースの脚本記述用のマークアップ。 強調体の指定などはWiki/MarkDownに準ずる。 提供されている処理系の実装はObjective-C(cocoa)。 類似:SPL
/*...*/
平文ベースだが、ブロックコメントしかない。たぶん入れ子はできない。

Mason
Perlを使うテンプレート言語。 類似:Mako
	<% $perl_expr %>
	% perl code
	
	<%doc>...</%doc>
	<%#...%>
	<%
		#...
	%>
	

Sentient
宣言型言語。問題の解は処理系が探す。 実装はJavaScript。 再帰は書けない。 同類:mCRL2

3x3の魔方陣:

array3<array3<int>> magic_square;
int target;

magic_square.each(function^ (row) {
  invariant row.sum == target;
  invariant row.all?(*positive?);
});

magic_square.transpose.each(function^ (column) {
  invariant column.sum == target;
});

left_diagonal = magic_square.map(function (row, index) {
  return row[index];
});

right_diagonal = magic_square.map(function (row, index) {
  return row.reverse[index];
});

invariant left_diagonal.sum == target;
invariant right_diagonal.sum == target;

expose magic_square, target;
	
targetは実行時に外部から与える(んだと思う)。
#...

Egison
(2016.12.05) 「パターンマッチ指向プログラミング言語」 実装はHaskell。 非順序集合に対してもパターンマッチが可能。 () <> [] {} [||] {||} が 関数、帰納データ、タプル、集合、配列、ハッシュを表していて、 文面が独特。
;; Extract all twin primes from the infinite list of prime numbers with pattern-matching!
(define $twin-primes
  (match-all primes (list integer)
    [<join _ <cons $p <cons ,(+ p 2) _>>>
     [p (+ p 2)]]))

;; Enumerate first 10 twin primes
(take 10 twin-primes)
	
;...
Haskellの不満を解消しようとした言語のようなので、 まずHaskellを理解できていないとさっぱりわからない。

Crystal
(2016.12.05) Ruby似の汎用言語。型が静的、Cとの連携重視。
#...

Siebel eScript
(2016.12.05) CRM (customer relationship management) スイート Siebel の カスタマイズ言語。 JavaScript互換。 ただECMAScriptのようなクロージャは持っていない。 functionは常にグローバルスコープで、 functionの中でfunctionを定義するのは禁止
	//...
	/*...*/
	

q
http://code.kx.com/wiki/QforMortals3
kdb+ is a powerful database that can be used for streaming, real-time and historical data. q is the SQL-like general purpose programming language built on top of kdb+ that offers high-performance, in-database analytic capabilities.
(2016.12.05) 時系列データの扱いが得意なデータベース kdb+ の問い合わせ言語。 SQLの類。 記号の使い方が他の言語とずいぶん違うが、理にかなっている。 リストが処理の基本型。Lispっぽい処理が書ける。

q)はプロンプト。

/ 変数n を 1000000に更改
q)n:1000000;
/ 変数 item をリスト(`apple;`banana;`orange;`pear) に更改
q)item:`apple`banana`orange`pear;
q)city:`beijing`chicago`london`paris;
/ tab: tab変数を
/ ([]...) キー無しのテーブル
/ time: timeという名のカラム
/ asc 昇順ソート
/ n?0D0 長さnの乱数リスト、値域は0~0D0
/ n?item; 長さnの乱数リスト、値域は itemの中から
q)tab:([]time:asc n?0D0;n?item;amount:n?100;n?city);

q)select from tab where item=`banana                                            
time                 item   amount city   
------------------------------------------
0D00:00:00.466201454 banana 31     london 
0D00:00:00.712388008 banana 86     london 
0D00:00:00.952962040 banana 20     london 
0D00:00:01.036425679 banana 49     chicago
0D00:00:01.254006475 banana 94     beijing
..
	
/...

Yorick
http://yorick.sourceforge.net/
http://dhmunro.github.io/yorick-doc/
(2016.12.05) 大規模データ処理環境。グラフ描画も可能。MATLABみたいなもの。 一見C風だが、(+) で行列・ベクトル演算ができる。 インタプリタなので、$cmd でシェルコマンドが起動できる。
For example, if x is a 12-by-25-by-35 array, y and z are vectors
of length 35, and w is a 9-by-12-by-7 array, then:
x(,,+)*y(+)	is a 12-by-25 array
y(+)*z(+)	is the inner product of y and z
x(+,,)*w(,+,)	is a 25-by-35-by-9-by-7 array
	
	/*...*/
	//...
	

Pig Latin
Pig is a dataflow programming environment for processing very large files.
(2016.12.05) Hadoopクラスタ上で動かす並列データ処理系。データフロー処理言語。 LOADでデータを読み込み、FOREACHなどで加工してDUMPかSTOREで吐き出す。
REGISTER ./tutorial.jar;
raw = LOAD 'excite-small.log' USING PigStorage('\t') AS (user: chararray, time: chararray, query: chararray);
clean1 = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);
clean2 = FOREACH clean1 GENERATE user, time, org.apache.pig.tutorial.ToLower(query) as query;
houred = FOREACH clean2 GENERATE user, org.apache.pig.tutorial.ExtractHour(time) as hour, query;
ngramed1 = FOREACH houred GENERATE user, hour, flatten(org.apache.pig.tutorial.NGramGenerator(query)) as ngram;
ngramed2 = DISTINCT ngramed1;
hour_frequency1 = GROUP ngramed2 BY (ngram, hour);
hour_frequency2 = FOREACH hour_frequency1 GENERATE flatten($0), COUNT($1) as count;
hour_frequency3 = FOREACH hour_frequency2 GENERATE $0 as ngram, $1 as hour, $2 as count;
hour00 = FILTER hour_frequency2 BY hour eq '00';
hour12 = FILTER hour_frequency3 BY hour eq '12';
same = JOIN hour00 BY $0, hour12 BY $0;
same1 = FOREACH same GENERATE hour00::group::ngram as ngram, $2 as count00, $5 as count12;
STORE same1 INTO 'script2-local-results.txt' USING PigStorage();
	
データフローですっきり書ける処理に向く。 複数の要素が絡み合うようなデータ処理は不得意そう。 組込関数は貧弱なので、ちょっとした処理は外部の REGISTER *.jar に書いてやる必要がある。
	/*...*/
	--...
	
名前は冗談系言語のようだが、そうではなく大真面目に作られている。

ATL
Atlas Transformation Language
(2016.12.02) EclipseでModel Driven Engineering (MDE) を実現するため言語。 UMLで表せるような「モデル」(最終的にはJavaオブジェクトに落ちる)と、 「こういうモデルがあったらこういう別モデルを作る」という 宣言的ルールを積み重ねてシステムを作る。 同類:Drools rule
--...

RSP (R.rsp)
The RSP markup language makes any text-based document come alive. RSP provides a powerful markup for controlling the content and output of LaTeX, HTML, Markdown, AsciiDoc, Sweave and knitr documents (and more), e.g. 'Today's date is <%=Sys.Date()%>'.
(2016.12.02) テンプレート言語。 統計解析ツール R を TeX に埋め込む ことを想定。 処理指令は <%...%>
	<%--...--%>	ハイフンは2つ以上、一致する--%>で終端
	<%---...---%>
	<%----...----%>
	<%if test-"exists" name="notdef"%>...<%endif%>
	

MVEL
(2016.12.02) Javaクラスを使うJava風言語。型は動的に決まる。 ラムダ式もある。
	//...
	/*...*/
	
ParseTools.java を見た限りだと /*...*/は入れ子不可。 似た処理が4ヶ所に書かれていてなんかすっきりしない。 プリプロセッサは偉大。

PxPlus
http://manual.pvxplus.com/ (要JavaScript)
PxPlus is a powerful programming language used in the development of sophisticated business applications.
(2016.12.02) 「ビジネスアプリケーション構築言語」。 体裁はBASIC、機能は汎用。 基本データ型は数値と文字列のみ。 構造体はオブジェクトにするんだと思われる。 連想配列もあるにはあるが、 配列はデータファイルに書き出して使う想定っぽい。

「ビジネスアプリケーション」用というのはどういう言語なんだろうか? データベースアクセスが組み込まれている、とか? PxPlusもODBC経由で普通のデータベースアクセスもできるが、 単体で入出力可能なのは単純なKey-Valueストアのファイル。

普通は . を使うメンバアクセスに ' を使う。

Cst= NEW ("Customer")
Cst'Find("012345")
	
00100 PROCESS_TAXCODE:
00110 LiquorTax=0,SalesTax=0,ServiceTax=0 
00120 SWITCH UCS(TaxCode$)
00130 CASE "X","Z" ! two codes are tax exempt
00140 BREAK ! stop processing for case "X" here 
00150 CASE "L" ! liquor pays all liquor,sales and service tax 
00160 LiquorTax=cost*LiquorTaxRate 
00170 ! no break here, logic falls through 
00180 CASE "S" ! pays sales and service tax 
00190 SalesTax=cost*SalesTaxRate 
00200 ! no break here, logic falls through 
00210 CASE "V" ! service tax 
00220 ServiceTax=cost*ServiceTaxRate 
00230 BREAK ! end processing for this case and any that fell through 
00240 DEFAULT ! enter here if case not found 
00250 MSGBOX "Unknown tax code","Error" 
00260 END SWITCH 
00270 TotalTax=LiquorTax+SalesTax+ServiceTax 
00280 RETURN 
	
上はBREAKの例だがさすがに例だと思いたい。 仮引数を陽に指定してサブルーチンを呼びたいなら CALL で呼び出して ENTER 変数 で受ける。
	REM ...
	!...
	

Sterling Connect:Direct Process
(2016.12.01) ファイル転送システム Sterling Connect:Direct の制御用言語。 超豪華なFTPのようなもの。

UNIXからz/OSへのファイルコピーをz/OSから指示する:

PROC2	PROCESS		SNODE=UNIX.NODE
STEP01	COPY FROM	(DSN="/company/payroll/monthly/jan"	-
			SYSOPTS=":datatype=text:"		-
			SNODE)					-
	TO		(DSN=OS390.PAYROLL.MONTHLY.JANUARY	-
			DISP=(NEW,CATLG)			-
			SPACE=(23040,(2,1))			-
			DCB=(RECFM=U,LRECL=0,BLKSIZE=23040,DSORG=PS)	-
			PNODE)
	
	*...
	/*...*/
	

CA Easytrieve
CA Easytrieve is an information retrieval and data management system designed to simplify computer programming. Its English-like language and simple declarative statements provide you with the tools to produce comprehensive reports and screens.
(2016.12.01) 「バッチ・アプリケーション開発言語」。 固定長レコードのデータを加工して出力する。 大型機時代の雰囲気を色濃く残すというか、 大型機時代の人材を活用できるよ、という謳い文句。
FILE PERSNL FB(150 1800)                            
  EMPNAME  17  8  A                                 
  EMP#      9  5  N                                 
  DEPT     98  3  N                                 
  GROSS    94  4  P  2                              
JOB INPUT PERSNL NAME FIRST-PROGRAM                 
  PRINT PAY-RPT                                     
REPORT PAY-RPT LINESIZE 80                          
  TITLE 01 'PERSONNEL REPORT EXAMPLE-1'             
  LINE 01 DEPT EMPNAME EMP# GROSS    
	
*...

SPEL+
(2016.12.01) EPSON製の産業用ロボットの制御言語。 VisualBasic似だが、独自実装。 ファイル入出力や文字列操作もできるので、機能的には汎用。
	Function InitRobot
	    If Motor = Off Then
		Motor On
	    EndIf
	    Power High
	    Speed 50
	    Accel 75, 75
	Fend
	
	'...
	#ifdef notdef ... #endif
	
Rem 文は持っていない。

DOT
(2016.12.01) グラフ描画ソフトウェア GraphViz で、 有向グラフを描かせるために使う言語。 古いとされているが dotguide.pdf がわかりやすい。 同類:PlantUML
digraph G {
	main -> parse -> execute;
	main -> init;
	main -> cleanup;
	execute -> make_string;
	execute -> printf
	init -> make_string;
	main -> printf;
	execute -> compare;
}
	
	/*...*/
	//...
	

AFL
AmiBroker Formula Language
(2016.12.01) 株価表示・分析ツール AmiBroker のカスタマイズ言語。 画像表示用の関数が豊富。 時系列データは配列なので、配列のまま各種計算を行う。
	MyVariable = ( High + Low )/2;	// High,Low は組込配列

	Cond1 = Close > MA( Close, 3 );	// 直近3日の移動平均が終値より小さい
	Cond2 = Volume > Ref( Volume, -1 ); // 取引量が昨日より多い
	Buy = Cond1 AND Cond2;	//出力は1,0,nullの配列
	Sell = High > 1.30;
	
	/*...*/
	//...
	

ECL
Enterprise Control Language (ECL) is a declarative, data centric programming language used to manage all aspects of the massive data joins, sorts, and builds that truly differentiate HPCC (High Performance Computing Cluster) from other technologies in its ability to provide flexible data analysis on a massive scale.
(2016.11.30) ビッグデータ解析用のクラスタシステム HPCC (LexisNexis High Performance Computer Cluster) で使う言語。 宣言型。クラスタに「撒いた」データを処理する。 開発・データ投入用のクラスタ(Thor)と 一般クエリ用のクラスタ(Roxie)が分離している。 類似:ObjectScript

F R E D の順列組み合わせを吐き出す:

STRING Word := 'FRED' :STORED('Word');
R := RECORD
	STRING SoFar {MAXLENGTH(200)};
	STRING Rest {MAXLENGTH(200)};
    END;
Init := DATASET([{'',Word}],R);
R Pluck1(DATASET(R) infile) := FUNCTION
R TakeOne(R le, UNSIGNED1 c) := TRANSFORM
		SELF.SoFar := le.SoFar + le.Rest[c];
		SELF.Rest := le.Rest[..c-1]+le.Rest[c+1..];
// Boundary Conditions handled automatically
  END;
RETURN NORMALIZE(infile,LENGTH(LEFT.Rest),TakeOne(LEFT,COUNTER));
  END;
L := LOOP(Init,LENGTH(TRIM(Word)),Pluck1(ROWS(LEFT)));
OUTPUT(L);
	
宣言型で関数型っぽい、ところまではわかるのだが。動作が読めない。 マニュアルを見ても、何か決定的な概念が理解できない…
	/*...*/
	//...
	

MQL
MetaQuotes Language 4 (MQL4) is a built-in language for programming trading strategies.
(2016.11.30) MetaQuotes Software社(露)の FX自動取引ツール MetaTrader の記述言語。 為替チャートや取引口座の制御が組み込まれているが、 その他は普通の体裁の言語。
	//...
	/*...*/
	

VEX
VEX is a high-performance expression language used in many places in Houdini, such as writing shaders.
(2016.11.30) 3Dモデリングツール Houdini の言語。 シェーダーの加工、粒子シミュレーション、物体変形などに使う。 言語の体裁はC。

基本データ型はint,float,3次・4次元ベクトル、3・4次元行列、配列、文字列、bsdfのみ。 構造体は定義できない。 bsdf (Bidirectional scattering distribution function) は 物体の表面の反射具合を示す関数。 手で定義はせず、既存のものを組み合わせて使う。 文字列も扱えるが、あまり出番がない。

cvex callee(export int mval = 0;
        int rval = 0;
        export int wval = 0;
        float castval = 0)
{
    mval *= 2;
    wval = rval;
}
	
import callee;

cvex caller()
{
    int mval = 1;
    int rval = 2;
    int wval = 1;
    callee("mval", mval, "rval", rval, "wval", wval, "castval",
            1);
    printf("%d %d %d\n", mval, rval, wval);
}
	
引数は全部参照渡し。 陽に指定する仮引数が文字定数になっているところがなんか気持ち悪い。
	//...
	/*...*/
	#if 0 ... #endif
	

protocol buffers
(2016.11.29) Google製のデータシリアライズ用ライブラリ。 同類:XDR (rpcgen(1))
//...

Drools rule
(2016.11.29) PRS (Production Rule System); 人工知能の形態の一種。 Javaのオブジェクトに対し、「こういう条件が整ったらこうする」という ルールを積み重ねていくシステム。 宣言型言語の形を取る。 ルールベース処理系は、 「詳しい人はいるけどその人はプログラムは組めない」 状況で問題をコンピュータに載せやすくする。 同類:ILOG OPL
	//...
	/*...*/
	

Less
(2016.11.29) CSSのプリプロセッサ。 設定値に式や関数が使える。 CSSでは語彙が限られている @ をメタ文字として使用。
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;

#header {
  color: @light-blue;
}
	
	/*...*/
	//...
	

Taskjuggler
(2016.11.29)
TaskJuggler is project management software for serious project managers.
依存関係や人員・日程割り当ての制約のついた計画表を作成管理するための ツール。 フリーの Microsoft Project みたいなもの。 計画内容や制約をテキストファイルで記述する。
	#...
	//...
	/*...*/
	
どこに分類しよう。「計画を解く」という意味ではILOG OPLや Xpress Mosel の仲間なのだが、格が違いすぎる。

Spin
(2016.11.28) Parallax社の8コア組込マイコン Propeller (P8X32A) の 独自プログラミング言語。 C,Delphi,Pythonをベースにした、とある。
PUB MemTest | Temp
  Temp := byte[@MyDat][1]	'Read byte value
  byte[@MyStr][0] := "M"	'Write byte value

DAT
  MyDat byte	64, $AA, 55	'Byte-sized/aligned data
  MyStr byte	"Hello", 0	'A string of bytes (characters)
	
演算子も ** (乗算の上位32ビット), #> (これより大きい値に制限), |< (0〜31をビットデコード) など、マイコン独特のものが沢山。 大文字小文字は区別しないが、プログラム例は camelCaseで書かれている。 組込ライブラリ名がJava風だったりオブジェクト風だったり、 @メモリ、\abort検出 といった修飾子があって、結果どの言語にも似ていない。
	'...
	{...}
	
{...}は、長い行を分割するためにも使える。
      if(     (" " =< byteBuffer) and (byteBuffer =< "~") {
        } and (byteCounter < constant(_SERIAL_BYTES - 1)) )
        if(("a" =< byteBuffer) and (byteBuffer =< "z"))
          byteBuffer -= constant("a" - "A") ' Translate lower case to upper case.
	

Nim
(2016.11.28) 旧Nimrod。 Python系のインデントにうるさい言語。 Cにコンパイルして使うので速い。C関数も簡単に呼べる。

$ は他の言語の .toString()に相当する。

基本型の文字列はゼロ終端かつ長さを陽に持つが、 C関数を簡単に呼べるよう cstring 型に変換できる。 ガベージコレクトされる可能性があるので安全ではないが、通常は問題ない って大丈夫なのか?

|演算子の例がさっぱりわからん。 templateの影響範囲は次の行に及んでないはずなのだが。

template t{0|1}(): untyped = 3
let a = 1
# outputs 3:
echo a
	
	#...
	#[...]#		入れ子可

	##...		ドキュメント用注釈
	##[...]##	ドキュメント用ブロック注釈、入れ子可
	
ブロック注釈が discard """...""" しかなかったNimrodに比べ改善されている。

注釈は空白扱いではなく、文法の BNF に陽に COMMENT? が ある場所にしか書けない。 (COMMENTの定義が見当たらない…) また、ドキュメント用ブロック注釈が通常の注釈と互換性がなく別文法になっている。

QML
(2016.11.28) Qt のユーザーインタフェース記述言語。 JSONっぽい文法でユーザインタフェース要素の onclickなどの挙動を定義していく。 プログラミング言語というよりかは、CSSに挙動の宣言を追加したような感じ。
	//...
	/*...*/
	

YAMLの #... ではない。 ドキュメントでは 注釈文法は JavaScript と同様としているが、 文面上は CSS を踏襲したようにも思える。 (CSSでは//...は使えないので注意!)

Groovy
(2016.11.26) Java VM 上で動く、 ラムダ式も使えるオブジェクト指向言語。 ラムダ式に相当するものをGroovy では closure という。
	def listener = { e -> println "Clicked on $e.source" }
	
thisの他に owner, delegate という組込識別子を持つ。 a b c da(b).c(d) と解釈されるので、 自然言語っぽいDSL(Domain Specific Language)を作成できる
show = { println it }
square_root = { Math.sqrt(it) }

def please(action) {
  [the: { what ->
    [of: { n -> action(what(n)) }]
  }]
}

// equivalent to: please(show).the(square_root).of(100)
please show the square_root of 100
// ==> 10.0
	

nameメンバを定義すると、暗黙に getName() という取得子が 自動生成されるのが微妙にいやらしい。 Javaはそういうもんなのかもしれないが、 識別子で示される値が いじくられる場所がわかりにくくなる。(知ってればいいんだろうけど)

	//...
	/*...*/
	
入れ子は不可の模様。Java派生言語では珍しい。 類似:Scala, Kotlin

Query
(2016.11.26) ブリント基板設計ツール Altium Designer のデータ問い合わせ言語。 条件文を書いて目的の編集対象を探す。

ComponentでかつNameがC0,C1,C22などになっている物を探す:

IsComponent And (Copy(Name,1,2) Between 'C0' And 'C9') 
	
{...}

F#
(2016.11.25) 「関数型・命令型・オブジェクト指向言語」
OCamlで .NET を使うとこうなる、的な言語。 元はMicrosoft Researchが作ったものだが、現在の仕様は Creative Commonsライセンスとなっている。 Linuxでも動くが、.NETのランタイムが必要。

オブジェクトも扱えるが、 仕様的には扱いは薄目。

	let square x = x * x	//関数squareを定義する。
	(fun x -> x%2 = 0)	//無名関数

	reverse (toStr (square 32))	//普通の書き方
	32 |> square |> toStr |> reverse	//パイプ演算子

浮動小数点値にはMeasure属性を付けて、単位チェック(次元検査)が可能。

関数の引数の型検査は、全部の引数が揃ってから行う。 最初の引数の時点で検査する純粋な関数型言語とはちょっと異なるというか、 実装が楽な方法。

No pattern matching is performed until all arguments have been received. For example, the following does not raise a MatchFailureException exception:
let f = fun [x] y -> y
let g = f [] // ok
However, if a third line is added, a MatchFailureException exception is raised:
let z = g 3 // MatchFailureException is raised

	//...
	(*...*)	入れ子可
	#if notdef ... #endif

	(*IF-FSHARP ... ENDIF-FSHARP*)	非注釈
	(*F# ... F#*)			非注釈
	(*IF-OCAML*)...(*ENDIF-OCAML*)	読み飛ばし

	#!...				冒頭のみ
	
非注釈もあるので構文解析器がひどいことになってそう。 (プリプロセッサでやってるのかも)

Structured Text (ST)
(2016.11.22) 産業用のシーケンサ(PLC,Programmable Logic Controller)を プログラミングするための言語。 IEC 61131-3 にて規定。
	(*...*)
	

IEC 61131-3 では5種類の「言語」を規定している。

IEC 61131-3 は主にヨーロッパで普及。日本や米国では途上。 日本では独自仕様の開発環境がまだまだ使われているが、 徐々に対応が進んでいる

シーメンスのSTの実装である SCL (Structured Control Language) では独自拡張で //...の追加、 (*...*)の入れ子の切り替えが可能。

「Pascal風」とはなっているが、begin-end は無いし、 入出力の宣言文が独特なので あまりPascalとは似ていない。

HDLに共通して言えるが、代入文 := はレジスタへの破壊代入ではなく 信号の接続、であることに注意する必要がある。 ST では記述の仕方で勝手にFFが追加されることはなく、 陽にFF(RS-FF)を定義しないといけない模様。

Razor (.cshtml)
(2016.11.22) Microsoft製のHTMLテンプレート言語。HTMLにC#を埋め込む。 @expr@{block}が処理指令。 同類:PHP, Velocity
	@*...*@
	@{ /*...*/
	   //...
	}
	

Tiger
(2016.11.22) Andrew W. Appel の "Modern Compiler Implementation in {C,Java,ML}" シリーズ (邦訳:最新コンパイラ構成技法) で実装する、コンパイラ作成実習のための言語。

最外周が let 宣言 in の形をとる、独特の文面。 ビールが99本の例

/*...*/	入れ子可

入れ子可なのはプリプロセッサを前提としてない (#if 0 が使えない) からかな?

Promela
Process/Protocol Meta Language
http://spinroot.com/spin/Man/Quick.html

(2016.11.21) オープンソースの 分散プロセス・通信プロトコルの整合性検証ツール Spin の仕様記述言語。 同類:mCRL2, LOTOS

/*...*/

デフォルトでは内蔵のプリプロセッサを使うが、複雑なマクロがあれば cpp(1) を使う。注釈はプリプロセッサ依存なので、 //... が使える場合もある。

ObjectScript
(2016.11.18) オブジェクト指向データベース Caché で メソッドやアプリケーションを書くための言語。
If (p = $$$NULLOREF} {
	Quit $$$ERROR($$$NOOBJ)
}
If (..PassengerList.Count()'<..SeatCount) {
	Quit $$$ERROR($$$NOSEATS)
}
New res
Set res = ##class(FLReservation).%New()
Set res.Flight = ##this
Set res.Passenger = p
Do ..PassengerList.Insert(res)
Set res.SeatNumber = ..PassengerList.Count()
Do res.%Close()
Quit $$$OK
	
  • %は識別子の頭に使えるが、スコープが違う
  • $$$macro でマクロ参照
  • ##class, ##this はシステム定義識別子の模様
	 /*...*/	2カラム目以降に置く。以下同様
	 //...
	 ;...
	 ;;...	$TEXTで取り出せる。ループ中に置くと遅くなる

	.macコードではプリプロセッサがあり、以下も使える:
	#;...	1カラム目のみ
	##;	どこにでも置ける
	

///... はクラスの説明用に予約。開発環境で閲覧できる。

注釈文法がいまいちまとまりに欠けたり変な制約があるのは 仕様の建増しを繰り返した結果?

CUPL
Compiler for Universal Programmable Logic
(2016.11.18) Atmel社の PLDプログラムツール WinCUPL で使う言語。 HDL (Hardware Description Language) の一種。
/*...*/

Processor Expert macro-language
CodeWarrior に含まれる、組込CPU用開発環境 Processor Expert の プリプロセッサ。 命令もマクロ展開も % で示す。
%define MyMacro local_value
MyMacro=%MyMacro
MyMacro=%'MyMacro'_3333
	↓
MyMacro=local_value
MyMacro=local_value_3333
マクロ言語ではあるが、計算や外部DLL起動も可能。
%-...

Gallina
対話的 定理証明システム Coq で使う言語。 ソフトウェアが満たすべき仕様を書き下し、正しいかどうか、 完全かどうかを証明する。 OCamlのコードも生成できる。 同類:PVS, Why3
(*...*)	入れ子可

Xbasic
(2016.11.18) Webアプリケーションのプロトタイピング環境 Alpha Anywhere の 独自スクリプト言語。サーバーサイドで使う。 名前にbasicとは付いているが、REM文は持っていない。
'...

Varnish Configuration Language (VCL)
(2016.11.18) リバースプロキシ Varnish の簡易設定言語。 単純なif文なら書ける。 実行時はC言語に変換されてから*.soとして読み込まれる。
	//...
	#...
	/*...*/
	(?#...)	pcre(3)正規表現中
	

同類:Bluecoat CPL; pcre(3)を使っているところも似ている。

BLISS
(2016.11.16) VAX, PDP-11, DECsystem-10, DECSYSTEM-20用のシステムプログラミング用コンパイラ。 表現力はC並みだが、文面はFortranに似る。

単に X と書くと「Xが指すアドレス値」 なので、アドレス X の内容を扱うには .X と書く。 従って普通のプログラムは . だらけの文面になる。 左辺では .は不要なのが微妙にいやらしい。

	IF .A NEQ 0
	THEN
	    {
	    B = .P + .A;
	    C = .Q + .A;
	    }
	

ステートメントも、内包する式に ; が付いていなければ 値を返せる。

Y = (IF .X GTR 0 THEN .X ELSE -.X);

	!...
	%(...)%
	%IF 0 %THEN ... %FI
	

CODECOMMENT '...' というのもあるが、 ここを跨いだ最適化を防ぐ、 作用があるので厳密には注釈ではない。

%(...)%は入れ子にできないので、コメントアウトには非推奨」 の文言は、Cの /*...*/にもそのまま当てはまる。

SPICE Manipulation Language (SML)
回路シミュレータ SPICE の入力をを もうちょっと書きやすくしようとする試み。 たぶん当のエドワーズ研究室 独自の処理系。
	${...$}
	$...
	
$[ ... ]$ で直接 SPICE のコードも混ぜ込める。

//が注釈であるとする版もある。 同じ年度の文書なのでどっちが本当だかわからん。

Spice (HP研究所の)
(2016.11.16) 冗長なJavaScriptという感じ。
	define function foo( x, y...) as
	    println( x ); println( y )
	enddefine
	

普通の関数呼出とドット記法と中置記法を混ぜて使える。

	X.f(Y) == f(X,Y) == X @f Y
	X.f == f(X) == X @f
	println(x) == x.println
	

数値にはpx,in,s,em,mmといった単位を付けられる。 単位が合わない演算はランタイムエラーになる。

	#...
	/*...*/
	
//...//"..." は正規表現。

マニュアル の序章では、元はECMAScript風だったとあるが、 注釈文法で見ると最初から UNIX用だったことが伺える。

Squirrel
(2016.11.16) ゲームなどへの組込用の「オブジェクト指向言語」。 これといって尖った点は見当たらないが、 コルーチン用の Generator型と yield ステートメントを最初から持っている。 sq_writeclosure()writeclosuretofile() で インタプリタ(バイトマシン)の状態を保存できる。
	/*...*/
	//...
	#...
	

T-Plan Robot language (TPR)
(2016.11.16) GUI自動操作ツール。旧 VNCRobot。 VNCでデスクトップへ接続し、 与えられた画像を画面から探して、そこをマウスクリックしたりできる。 あまり凝った自動試験には向いてない。 実装は Java。Javaでできないことはできない。 同類:AutoIt, SenseTalk

文法的には sh にCの制御構造を足した感じ。 変数参照は {i}

	#...
	//... (V2.3以降)
	

Popcorn Scripting Language
(2016.11.16) ゲーム用の粒子シミュレータPopcornFXのスクリプト言語。 基本データ型は整数・浮動小数点と、4次元までのベクトルのみ。

配列がないのが意外。 スクリプトでは単一の粒子について記述するので、 いらんだろという判断なのかもしれない。

	//...
	/*...*/
	

LUSTRE
(2016.11.16) リアルタイム・データフロー記述言語。 制御システム環境 SCADE と、プログラミング環境 SAGA にて使用。 制御シミュレーションや同期式ロジック回路の記述に便利。 同類:CloverETL, SIDOPS+
	--...
	/*...*/
	(*...*)
	

Idris
Haskell系というかHaskellで書かれた「依存型を持つ関数型言語」。 実用性を重視し、遅延評価ではなく先行評価を行う。 遅延評価が欲しい時は陽に Lazy と書く。
	--...
	{-...-}
	

Haskellの方言はどこまで載せればいいかちょっと迷う。

Perfect
(2016.11.15)
仕様記述言語。 ソフトウェアシステムの仕様記述・モデル化・検証を行う Perfect Developer で使う。

文字リテラルが `a`なのが最初見ると異様な感じ。

//...

注釈文法はやはりというか文法定義には出てこないので、 プリプロセッサか何かで除いている模様。

仕様からコードも生成できるようだが、どうやって実現しているのか不明。 コードが生成できるくらい詳細に仕様を書かないとダメってこと? 現実ではプロトタイプが動きはじめてやっと仕様が固まりだすので、 こういうトップダウンアプローチは結局うまく回らなかったりしますが。

GNU MathProg
(2016.11.15)
GNU Linear Programming Kit 第1回: 線形最適化の紹介
線型計画法の問題を記述するための言語。 AMPL (A Mathmatical Programming Language)のサブセット。 ソルバの GNU GLPK (GNU Linear Programming Kit; 線型計画キット) で使う。
	#...
	/*...*/
	
同類:Xpress Mosel, ILOG OPL

Galen Specs Language
(2016.11.15) Webブラウザのレイアウト試験ツール Galen で、当のレイアウトを 記述するための言語というか設定ファイル。

前提としているブラウザ自動試験ツール Selenium が 事実上 最新のFireFox,IEしか対応してないので、 広範なプラットフォームでのレイアウト検証はあまり期待できない。 実際、やっていることはブラウザのウィンドウの大きさを変えて、 検証対象のDOMオブジェクトの大きさや位置を確かめる程度。 何も確かめないよりはいいんですが。 同類:CSS, SenseTalk (格が違いすぎるけど)

#...
行頭のみ。行の途中の #CSSでいう id セレクタとして使いたいからだと思われる。

SIDOPS+
(2016.11.14) メカトロニクス制御システム用シミュレーターのモデル記述言語。 20-sim シミュレータにて使用。 同じ記述が喰える他のシミュレーターも 一応存在するらしい。
	"..."
	/*...*/
	//...
	
文字列は '...' 。 ただ、数値シミュレータという性質上、あまり使いどころがない。

Cap'n Proto
(2016.11.14) 高速RPC Cap'n Proto のデータ形式記述言語。 伝統的な Sun RPC XDR との違いは、little endianであることと、 連続したRPCを自動縮退 させて、インタフェース設計の簡素化と RTTの大きな通信路で速度を稼げること。 代償として、いつ disconnected例外が投げられてくるかわからない。

ので、例外が投げられる言語専用。 実質C++用。他言語はC++に薄皮をかぶせたもの。

#...

注釈は注釈対象のあとに書くようにとあるが、 コンパイラが利用してるわけではなさそう。 将来の自動文書化を見越している?

同類:rpcgen(1) (cppの /*...*/ のみ)

ILOG OPL
(2016.11.14) Optimization Programming Language
「ビジネスルール管理システム」ILOGの問題記述言語。 業務上の意思決定を支援する。

業務上の制約や条件をルールとして記述し、 線型計画・整数計画・二次計画の手法で最適解を探る。 区分線形関数やステップ関数を定義できたりする。 同類:Xpress Mosel

dvar float+ Gas;
dvar float+ Chloride;
maximize
    40 * Gas + 50 * Chloride;
subject to {
    ctMaxTotal:
	Gas + Chloride <= 50;
    ctMaxTotal2:
	3 * Gas + 4 * Chloride <= 180;
    ctMaxChloride:
	Chloride <= 40;
}
	
これもチッペンデール問題の一種。
	//...
	/*...*/
	

Puppet language
(2016.11.14) 統合設定管理ツール Puppet の設定ファイル。 "language" とついているが、いわゆるプログラミング言語ではない。 似たような設定を短く書くための関数、ループや分岐構文がある。
	#...
	/*...*/
	
// は空の正規表現なので注釈にできない。

Puppet template というのもあって、こちらは

<%# ... %>

Kefir
(2016.11.14) データベース操作環境の PaaS である Zuilder のカスタマイズ用言語。 <command attrib="val"> の体裁を取る。 要はXMLなので、XMLエディタでないとブロック構造が見えにくい。
	!var		スカラー変数参照
	@obj.name	オブジェクト(データベース出力)変数参照
	l_name		関数のローカル変数
	

if-else が <if>...</if><else>...</else> なのが 階層化ifを考えてない感じで気持ち悪い。 case文がないので多重ifは多用されそうなのだが? じゃあどういう文法がいいのかと言われても答に窮しますが。

注釈は、例題では SGML の <!-- --> が使われているが、

<comment>...</comment>
も使えるっぽい。

BrightScript
(2016.11.14) 動画配信セットトップボックス Roku のアプリケーション作成に使う言語。 言語の体裁は VisualBasic 系だが、メソッドアクセスは連想配列と同じ扱い。

隠しコマンド Home Home Home 上上右左右左右 で開発モードに入り、 以下の helloworld.brs

' *********************************************************
' ** Roku Hello World Example
' *********************************************************
Sub Main()
port = CreateObject("roMessagePort")
screen = CreateObject("roParagraphScreen")
screen.SetMessagePort(port)
screen.SetTitle("Example")
screen.AddParagraph("Hello World!")
screen.Show()
wait(0, screen.GetMessagePort())
End Sub
	
helloworld.zip に固めてデバイスにアップロードする。

言語そのものはかなり基本的なことしかできない。 主要機能はネイティブコンパイルされている各種ライブラリ(Component)に 入っている。

REM ... , '...

Processing
(2016.11.14) 汎用言語だが、もっぱら対話的なグラフィックスアプリケーションの 作成に特化。 イベントドリブンを意識せずに対話的なプログラムが書ける。 実装はJava。
	void setup() {
	  size(100, 100);	//画面サイズ
	  noStroke();		//縁を描かない
	}

	void draw() {
	  background(126);	//背景色の塗り潰し
	  ellipse(mouseX, mouseY, 33, 33);	//マウスの位置に円を描く
	}
	

SenseTalk
(2016.09.13) GUI自動試験環境 eggPlant Functional で使われるスクリプト言語。 ターゲット (SUT;System Under Test)にVNCなどで接続し、 GUIをOCRで読み取って操作結果を調べられる。 一応オブジェクト指向となっているが、あまり表に出てこない。

言語は英語になるよう配慮されているが、 COBOLのような汚さはない。 構造化プログラミング用の if..else..end if や repeat..end repeatが揃っている。

値に単位をつけられる。計算に合わせて自動変換される。 単位が合わないと怒られる。

	put 3 ft into width
	add 1 yard to width -- 1 yard is automatically converted to 3 ft
	put width -- "6 feet"
	put width * 4 feet into area
	put area -- "24 square feet"
	add 2 liters to area -- throws a mismatched units exception
	
変数に対してメタデータが付随していて、 オブジェクト指向はこのメタデータで処理を分けている模様。 だからあまり表に出てこない。よきに計らってくれる。

マニュアルは一見、非プログラマ向けに書いてあるようで 実は全然そんなことはない。わかりやすく書かれてはいるが 初心者向けではないと思う。 メタデータで挙動が変わるところは、型の強い言語に慣れていると 不安になりそう。

	--...
	//...
	#...
	(*...*) 入れ子可

CloverETL Transformation Language (CTL)
(2016.11.11) データフロー処理環境 CloverETL Designer のカスタム処理を 書く言語。体裁はC系。

32bit整数のinteger, 浮動小数点の double の他に、 金勘定用の32桁固定小数点型 decimal を持つ。

エラー処理は、以前は try-catch型だったが、 現行の CTL 2 では transform() に対し transformOnError() が 呼ばれる方法に変わっている。

入出力は $in と $out に対して行う。 自動mapが組み込まれており、まるごとコピーは
$out.0.* = $in.0.*;
$inにある同名のフィールドが$outにコピーされる。

	//...
	/*...*/
どう分類しよう。データ処理言語は独立させてもいいかもしれない。 同類:GAUSS,Julia

Kivy (.kv)
(2016.11.11) ユーザーインタフェース記述言語。なのだが、 CSSや<CANVAS>やイベントも駆動できるので、 実際はアプリケーション記述言語。 Python専用。Pythonのコードを埋め込める。 単独では凝ったことはせず、Pythonのバックエンドと組み合わせる。
コードのインデントにうるさい。

Referenceには注釈文法がない。例題からすると、たぶん

# ...

#: は特殊コマンドなので注釈ではない。

どこに分類しよう。仕様記述、ではない。汎用でもない。 テンプレート言語?

Bakefile
(2016.11.10)
Bakefile is a meta-make tool which does not replace the normal make program or IDE used for building the project but simply generates the input files for it from a unique meta-makefile which we call a “bakefile”.

GNU Makefile や VIsual Studio の*.snl を自動生成するツール。メタmakefileジェネレータ。
プログラミング言語というよりデータファイル生成ツール。 if はあるがループ構文はない。

設計思想はよくわかるのだが、 対象としている「使いなれた環境を手放したがらない人」にとっては Bakefileの記術とmakefile/VSとの違いが大きすぎて 敷居が高い気がする。

	//...
	/*...*/

マクロ言語としては入力と出力が違いすぎる。 どこに分類しよう。データ生成言語? 類似:MakeCAB, IMakefile, GSL

GrADS
(2016.11.10) Grid Analysis and Display System
気象シミュレーションの出力を閲覧するためのツール。 データを自分で加工するためのスクリプト言語がある。 シミュレータの入出力はFORTRANなためか、パンチカード時代の 言語の雰囲気が若干残っている。
* ...

ChucK
(2016.11.10)
ChucK is a programming language for real-time sound synthesis and music creation.
音声合成プログラミング言語。 代入は左向きの = ではなく、右向きの => を使う。 体裁はC風だが、オブジェクトに対する演算子が独特。

組み込み型として以下を持つ:

時間制御や同期がChucKの要。 極座標はFFTの出力を解析する場合に便利。

nowが現在時刻を指すが、プログラム実行中は now は進まない。 明示的に 1::second => now などで時間を進めると、 各種スレッド(shred)が動き始める。

	// our patch: sine oscillator -> dac
	SinOsc s => dac;	//演算子オーバーロードで、発振器をDACに接続

	// infinite time loop
	while( true )
	{
		// randomly choose frequency from 30 to 1000
		Std.rand2f( 30, 1000 ) => s.freq;

		// advance time by 100 millisecond
		100::ms => now;
	}
	
	//...
	/*...*/
	

Dart
(2016.11.09)
ECMA-408 draft
コンパイラ式の汎用言語。JavaScriptを改造し損ねた感じ。

関数を非同期に実行する async/await/yield 機構が組み込まれている。 関数定義にasyncをつけると非同期関数になる。 await expr で待つ。 でもマルチスレッドではないと明記されている。

ECMA draftになっている割には仕様書がわかりづらくて雑な感じがする。 実装が仕様、みたいな。

文字列の中で、shみたいにexpressionを入れられる。

	printNumber(num aNumber) {
	  print('The number is $aNumber.'); // Print to console.
	}
	
(だからJavaScriptと違い、識別子として$は使えない)
	//...
	/*...*/	入れ子可
	

HyPhy
(2016.09.09) 遺伝子の系統解析ツール HyPhy のバッチ制御言語。 文法はC系。拡張子は*.bf (Batch File?)

基本型は浮動小数点・文字列・行列のようだが、 演算子が何を食わせるかによって挙動が全然違う。 型を意識してないと意味を読み損ねそう。

	sepString = "";
	sepString * 256;	//\0でクリア?
	sepString * "+";	//strcat(sepString,"+")相当。再代入しなくてもいいというかされてしまう
	

特定用途向けの数値解析駆動用の言語ってどう分類しよう (仲間:HOC,GAUSS)

Basic Control Engine
CIMPLICITY HMI Basic Control Engine Language Reference Manual (非公式)

工業用の監視制御ソフトウェア CIMPLICITY で使う言語。 体裁はあらゆる点でVisualBasic。 独自実装なのかVBのコードを使っているのかは不明。

	'...
	Rem ...
	

HOC
(2016.09.09) 神経細胞シミュレータ NEURON で使う言語。Pythonでも駆動可能。 言語の体裁はC系。

関数定義は仮引数を取らない。shみたい。

	func tan() {
	       return sin($1)/cos($1)
	}
	tan(PI/8)
	
	/*...*/
	//...
	

Concordance Programming Language (CPL)
(2016.09.09) http://help.lexisnexis.com/litigation/ac/cn_classic/what_is_the_concordance_progra.htm

訴訟事務データベース Concordance Desktop のカスタマイズ用言語。 言語の体裁はCというかBに近いが、データベースアクセス機能がある。

ポインタ型が無いので、データベースへのハンドルはint型。 気持ち悪い。

db変数の未初期値はゼロだが、 データベースがすでに開いている状態でスクリプトを起動すると 0番ハンドルに用意されるので、そのまま db でアクセスするらしい。 気持ち悪い。

	/*UPPER.CPL*/
	main() {
	int db, i;
	   if (db.documents <= 0)
	       return;
	   cycle(db) {
	       puts(0,0,"Processing record " + str(docno(db)) + " of " + str(count(db)));
		       db->FIELDNAME = upper(db->FIELDNAME);
	     }
	}
	

db.documents と . で呼び出すのはデータベースそのものの属性。 db->FIELDNAME は"current query"のカラムを指す。 current queryをcycle(db)で回す。 気持ち悪い。

/*...*/ のみ。Cと同じ。

Elm
(2016.09.09) http://elm-lang.org/docs (要JavaScript)
「関数型言語」
JavaScriptへコンパイルして使う。ので、実質Webページ出力専用。 言及はないが強くHaskellの影響を受けている。
	strarr = ["a","b","c"]	-- 文字列のリスト
	numarr = [1,2,3,4]	-- 数値のリスト。型は全部同じでないといけない
	double n = n * 2	-- doubleという関数の定義
	double 4		-- 関数呼び出し。(,)は不要
	List.map double numarr	-- map適用
	[2,4,6,8]
	(True, "accepted")	-- タプル。型は混ぜて良いが、長さは一定(?)

	bill = { name = "Gates", age = 57 }	-- レコード(連想配列)

	bill.name	-- 普通の属性参照
	"Gates"
	.name bill	-- .name 関数を使った参照。mapに食わせるときに便利
	"Gates"
	{ bill | name = "Nye" }	-- 属性の置換。{ age=57,name="Nye" } が返る。billは不変
	破壊代入はできない。

	view : Model -> Html Msg
	view model =
	  div []
	    [ button [ onClick Decrement ] [ text "-" ]
	    , div [] [ text (toString model) ]
	    , button [ onClick Increment ] [ text "+" ]
	    ]
	

動作時は内側の<DIV>のテキストが破壊的に書き替わるはずだが、 そこは隠蔽されている。 text (toString model)であると宣言してるだけ。 ここのカッコは関数呼び出しではなく、演算順の変更。

	--...
	{-...-}	入れ子可
	
a//bは整数の割り算。

高階関数を基本データ型として扱えるだけでも「関数型言語」を 名乗っている場合があるので(Clojure,Scalaとか)、いちいち詳細を調べる必要がある。 Elmは純粋な関数型と言えそう。

Voyager USB 3.0 Exerciser Generation Script Language
(2016.09.09) USBパケット試験送信機用の言語というかデータファイル。 送信するUSBパケットのバイト列定義を、構造体を使って書ける。 (類似:NASL)

ループも書けるが、プリプロセッサでベタ展開されるので、 無茶なループを書くのは禁止。

パケット受信もできるが、種類を判別して待つだけ。 受信したパケットに応じて挙動を変えるといったことはできない。 そもそも if 文はプリプロセッサ段階で選択を済ませてしまう。

	#...
	/*...*/
	

Aseba
(2016.09.08) スイス製の小型2輪ロボット Thymio のプログラミング言語。 ビジュアル形式でもプログラム可能。 Scratch風のブロックも使える。あまり複雑なことするのには向いてない。

基本データ型は16bitの整数型のみ。 文字列を扱いだすとマイコンに収まらなくなるからかもしれない。 (ロボットへの文字列の入力はできないから、十分だと思う)

	var a[3] = 1, 2, 3
	var b[3] = 2, 3, 4
	var c[5] = 5, 10, 15
	var d
	call math.dot(d, a, b, 3)
	
でdにベクトルaとbの内積を代入する。 変数は全部参照渡しで、call自体は値を返さない。 math.dotはオブジェクト風だが、単なる名前空間っぽい。
	#...
	#*...*#
	

Why3
(2016.09.08)
定理証明システム。
(*...*)	入れ子可

mCRL2
(2016.09.08) micro Common Representation Language 2
分散システム用の仕様記述言語。 プロセス代数を扱う。 プロセスの通信や状態変化を記述し、追ったり可視化したりする。 LOTOSの仲間、らしい。

1つのボタンAだけがある自動販売機


	act
	  ins10, optA, acc10, putA, coin, ready ;
	proc
	  User = ins10 . optA . User ;
	  Mach = acc10 . putA . Mach ;
	init
	  allow(
	    { coin, ready },
	    comm(
	      {
		ins10|acc10 -> coin,
		optA|putA -> ready
	      },
	      User || Mach
	  ) ) ;
	

この次の例題は、 「5lと8lの缶を使って4lの水を汲めるか」 というもの。 人手なら10分くらいで解けるが、計算機に解かせるのは結構難しい というか、問題を計算機に載せること自体が専用の言語を要求する。

mCRL2では、まず可能な操作を仕様としてごりごり書き下す。 これをツールで順次状態変化に変換して、全体で35状態、108遷移と出す。 この中から解を探す。

注釈: %... のみ。 仕様記述言語では % は多いかと思えばそうでもなかったりする。

PJL
(2016.09.08) Printer Job Language

HPのプリンタのジョブ制御、パネル制御、内蔵ディスク操作などを 行うための言語というかコマンド体系。 ジョブの再投入、制御パネルの設定変更、フォントのアップロード などができる。 PostScriptやPCLのデータの前後をPJLで挟んで制御を行う。

直接ユーザーが見たりラインプリンタで打ち出すことはないはずだが、 なぜか注釈文法がある。デバッグ用?

	@PJL COMMENT ...
	

Mosel
(2016.09.08)
公式、情報ほとんどなし
エジンバラ大学数学科ホール研究室の資料

企業などにおける数値的な問題を書き下し、最適解を探ったりする環境 Xpress で使われる言語。 宣言型と手続き型の両方の側面を持つ。

マニュアルだけではさっぱりわからないのでエジンバラ大学の資料から。

学問分野的には数学でもゲーム理論、あるいは数理経済学や 線形計画法になる。

上の問題はパラメータ2つでしかも線形なので中学生レベルの数学で解は出せる
が、「どう解くか」ではなく、「束縛条件は何か」を計算機に食わせるためには 普通のプログラミング言語とは違う言語が必要。

チッペンデール問題を Xpress Mosel で書くとこうなる。 計算機でこれが解ける、というのが凄い。 同類の言語:Alloy, PVS

	!...
	(!...!)	入れ子可

Textile
平文ベースの簡易HTMLマークアップ。実装はRuby。
	p. This is a paragraph with *strong* _emphasis_.
	

パッと見はHAMLに似ているが、計算や変数置換はないので、Wikiに近い。

むむ、Markdown同様、注釈は書けないようだ。 強いて書くなら <!--...--> しかないかな?

NSIS
(2016.09.07) nullsoft scriptable install system

Windows用のインストーラー作成ツール。 *.infでは機能が足りない、ときに使う。 ファイルやレジストリ操作はもちろん、 ダイアログ表示、ファイル読み書き、演算も可能。

ユーザー定義の変数も使えるが、既存レジスタとして $0〜$9,$R0〜$R9が使える。保存用のスタックもある。 ユーザー定義変数は2.0beta4からなので、以前はレジスタだけだったのかも。

制御構造はIfのジャンプ先がラベルのGotoだけなので、かなり不細工。 Goto +2 で2行下?へジャンプできる。

	; pre-function, show-function, leave-function
	 Page license skipLicense "" stayInLicense

	 Function skipLicense
	   MessageBox MB_YESNO "Do you want to skip the license page?" IDNO no
	     Abort
	   no:
	 FunctionEnd

	 Function stayInLicense
	   MessageBox MB_YESNO "Do you want to stay in the license page?" IDNO no
	     Abort
	   no:
	 FunctionEnd
	
	;...
	#...
	/*...*/
	!if 0 ... !endif
	

PVS
(2016.09.07) http://pvs.csl.sri.com/
http://www.mathlibre.org/wiki/?PVS (日本語の紹介)
Prototype Verification System

「対話的定理証明システム」。仕様記述用の宣言型言語。 モノが満たすべき条件をごりごり書いて、矛盾や不備がないかどうか、 証明ができるかどうか調べる。

実装はLISP。 プログラム自体は Allegro Common LISP か CMU LISP で動かすのだが、 インタラクティブ用途のフロントエンドとしてEmacsが必要。 なくても動かせるみたいだが不便。

スタックの記述例:


stacks [t: TYPE+] : THEORY
  BEGIN
  stack : TYPE+
  s : VAR stack
  empty : stack
  nonemptystack?(s) : bool = s /= empty

  push : [t, stack -> (nonemptystack?)]
  pop : [(nonemptystack?) -> stack]
  top : [(nonemptystack?) -> t]

  x, y : VAR t

  push_top_pop : AXIOM nonemptystack?(s) IMPLIES push(top(s), pop(s)) = s
  pop_push : AXIOM pop(push(x, s)) = s
  top_push : AXIOM top(push(x, s)) = x
  pop2push2: THEOREM pop(pop(push(x, push(y, s)))) = s
END stacks
うーん。わかるようなわからないような。

注釈: %...

LinuxだとLVM用の /sbin/pvs と被るので紛らわしい。

CSPro
(2016.09.07) アメリカ統計局が配布しているパブリック・ドメインのソフトウェア。Windows専用。
「CSProは、国勢調査やアンケートのデータの入力・編集・集計・頒布を 行うソフトウェアパッケージです。」
データ構造の作成→アンケート入力票の生成が地味に便利。

スクリプト言語はもっぱらデータ入力とそのエラーチェックに使う。 演算子や関数はかなり単純なものしか用意されていない。 なので統計計算用の言語ではない。

	PROC P06_MARITAL_STATUS
	  if P06_MARITAL_STATUS = 1 and P05_AGE < 12 then
	    errmsg("Married but less than 12 years old");
	  endif;
	
skip 文で、後続のprocへ直接ジャンプできる。 普通の言語に慣れているとかなり気持ち悪いが、 ウィザード形式のアンケート入力に使うんだと思えば納得がいく。
	{...}	入れ子可
	//...  
この組み合わせも珍しい。

どこに分類しよう。統計計算用でもデータベース用SQLでもないし… UILのような物理ユーザインタフェース記述でもない。 データ入力支援?

LEF/DEF
(2016.09.07)
http://projects.si2.org/openeda.si2.org/projects/lefdef (アカウントがないとダウンロード不可)

Cadence社が規定する、ICの導体部分のルーティングデザインを記載した 言語というかデータファイル。

LEFがライブラリを使う際の周囲との空きなどの制約条件を表し、 DEFで具体的なパターン形状を指定している?

Gerber同様、人間が直接編集する代物ではない。LSI設計ツールで加工する。

Referenceは400ページ以上にもなるが、注釈文法についての項目がない。 例題では #... を使っているし、 # がコメント文字っぽい記載はあるが。

pug
(2016.09.07) node.js用のHTMLテンプレート言語。 商標問題でJadeから名前を変更。 インデントにうるさい。
	p foo	→<p>foo</p>
	h2.green Description	→<h2 class="green">Description</h2>
	#{expression}		expressionをJavaScriptとして評価

	p
	  | <em>unescaped</em> text
	p.
	  <em>unescaped</em> text shortcut
	p.content		→<p class="content"></p>
	.content		→<div class="content"></div>
	
	//...	<!--HTMLに残る-->
	//-...	残らない
	//
	  ブロック
	  コメント
	

TurtleScript
(2016.09.07) KDEのLOGO風プログラミング教育環境、KTurtle のスクリプト言語。

UNIX用なためか、LOGOの ;... ではなく #... を採用。

FitNesse
(2016.09.07) Wikiの一種。ただ、Wikiは主目的ではなく、 バックエンドのプログラムのテストを行い、結果が合っているかどうか 検査する、のが目的。Wikiはテストケースと結果を見やすく書くための手段。

バックエンドに対しては簡単なRPCで通信する。 実質、Java用のものしか用意されていない。

	#...
	
行頭のみ。行の途中の # は平文扱いしたいからかもしれない。

Gherkin
Morelia is a Python Behavior Driven Development (BDD [1]) library.

Pythonのunittst用のテストケース記述言語。 プラットフォーム名が Morelia で、その中で自然言語風の 挙動記述(テストケース)をGherkin言語で書く。

	Scenario: Add two numbers
	    Given I have powered calculator on
	    When I enter "50" into the calculator
	    And I enter "70" into the calculator
	    And I press add
	    Then the result should be "120" on the screen
	
Given, When I, Then が予約語で、前提・操作・結果を表す。 テスト対象に、あとから step_I_have_powered_calculator_on() などを 書き加えていって仕上げる。 つまりテストを先に書いて、それに合わせて実装する (BDD)スタイル。

日本語に切り換えることもできるが、予約語の部分だけっぽいのであんま役に立たない。 (日本語で書くと、テスト対象のフックも日本語の関数にする必要がある?)

#...
行頭のみ。途中から #... はできない。

Apex
(2016.09.07)
Apexコード言語リファレンス 日本語版
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_expressions_comments.htm (要JavaScript)

ビジネスアプリケーション提供サイト Salesforce で使うスクリプト言語。 文法や雰囲気はJavaに酷似。

基本データ型として、SObject なる、データベースと紐づいた型がある。 SOQLクエリで簡単にデータベースにアクセスできる。 insert/update/delete/merge が組込関数型として用意されている。 なぜか SObject.insertではなく、insert SObject として使う形式。 (この場合の SObject はデータベースの行)

基本データ型に関数がないので、Javaと同じ制約がある。 内部的にはJVMで実行されるのかも。 注釈は例題では //... のみを使用。 /*...*/も使える。

Alloy
(2016.09.07) 構造モデル化言語。宣言型。 モノとモノの関係や制約条件を記述し、ある命題がそのモデルに 当てはまるかどうかを検査する。 プロトコルの無矛盾性とか、システムのセキュリティを検査するといった ことに使える。 実装はJava。

純粋な宣言型。ソルバはProlog的なことをしているはず。 仕様記述言語と言えなくもないので、とりあえずそちらに分類しておく。

	/*...*/
	//...
	#...
	

PlantUML
(2016.09.06) シーケンス図、ユースケース図、UMLなどをスクリプトで描ける処理系。 Plantは工場の意味らしい。 プログラム言語ではなく、図の描き方を宣言する宣言型言語に近い。
	Bob -> Alice: Authentication Accepted
	
で、[Bob] から [Alice] へのラベルつき矢印を描く。 細かい位置指定とかは不要でよきに計らってくれるのがすごい。 UMLの注釈(折り紙)はnote文で書ける。
	'...
	/'...'/
非常にレアな組み合わせ。 /*...*/でダメな理由は特に見当たらないが、 文字の体裁変更がCreole型Wikiなので、マークアップと間違われるのを嫌った?

Monkey
(2016.09.06) HTML5 専用の簡易ゲーム開発環境。 リアルタイムゲーム用なので最外周はイベントドリブンで書く。 何も書いてないがオブジェクト指向、のはずだが、オブジェクト指向的な 書き方を強制しておらず、組み込み関数などは地の関数なので、汚くならない。
	'...
	#rem ... #end
	
#rem#if false と同じだと書いてある。 チュートリアルの初めのほうでコメント文法について丁寧に言及しているのが 好印象。

N1QL
(2016.09.06) データベースサーバー Couchbase のSQL方言。 データはJSONで持つ。出力もJSON。 NoSQL なので N1QLなんだろうか?
	/*...*/
--が使えるかどうかは不明。 例題では1行コメントとして 説明... と書いているので、不可?

AutoIt
(2016.09.06) WindowsのGUI操作自動化ツール AutoIt のスクリプト。 機能的には汎用言語。 作者はBASIC風だといっているが、特殊文字の使い方は perl に近い。
	Local $aArray[4]
	$aArray[0] = "Jasper"
	$aArray[1] = "Beethoven"
	$aArray[2] = "Pinky"
	$aArray[3] = "Fidget"
	
文字列結合が &、 連結行が _ なのはVisualBasicに準ずる。

お気軽にGUIを作れる点では Tcl/Tk によく似ている。

;... と、cpp風にネスト可能な #cs ... #ce を持つ。 この組み合わせは珍しい。

MAXScript
(2016.09.06) 3Dモデリングツール AutoDesk 3DS Max のスクリプト言語。 メニュー操作を自動化したり、物体を変形させたりといろいろ出来る。

関数呼び出しには () を必要としない。( )は、他の言語での { } のような ブロック記述に使われる。 ただし、引数が無い場合は func() として呼ばないと funcの値そのもの(関数定義)が返ってきてしまうので()が必要。

if文が値を返せる。

mybox.width = if mybox.height == 10 then 20 else 10
字面上はBASICに ( ) でブロック構造を与えたような感じになる。 陽にリストを作る時は #(a, b) となる。 細かい所は手続き型だが、全体としてはイベントドリブンな用途が多い。
	macroscript MoveToSurface category: "HowTo"
	(
	fn g_filter o = superclassof o == Geometryclass
	fn find_intersection z_node node_to_z =
	(
	 local testRay = ray node_to_z.pos [0,0,-1]
	 local nodeMaxZ = z_node.max.z
	 testRay.pos.z = nodeMaxZ + 0.0001 * abs nodeMaxZ
	 intersectRay z_node testRay
	)
	on isEnabled return selection.count > 0
	on Execute do
	(
	 target_mesh = pickObject message:"Pick Target Surface:" filter:g_filter
	 if isValidNode target_mesh then
	 (
	  undo "MoveToSurface" on
	  (
	   for i inselection do
	   (
	    int_point = find_intersection target_mesh i
	    if int_point != undefined then i.pos = int_point.pos
	   )--end i loop
	  )--end undo
	 )--end if
	)--end execute
	
fn g_filter o = superclassof o == Geometryclass は、 関数 g_filter を定義、引数はo 1つ、中身は superclass o == Geometryclass の返り値。

undo ブロックは操作前の状態を作成するのかな?

--...
ALGOL風のブロック終端の )--end は、エディタが自動でつけてくれる?

PL/B (DATABUS)
(2016.07.29) http://c2.com/cgi/wiki?PlbLanguage
Programming Language / Business

1980年代からある、BASIC と COBOL を混ぜて小型化したような言語。 元はデータ入力端末のプログラミング用なので、画面制御命令が豊富。 構造化プログラミングが可能っぽいので、 COBOLほどひどい文面にはならない。

ANSI Standard X3.238 として規格化されているが、 規格書は有償配布のため、原典にあたることができなかった。

	*...
	.ほげほげ
	+...
	%IF OLDSTUFF > 0 ... %ENDIF
	

%IF OLDSTUFF > 0 ... %ENDIF はプリプロセッサ。 通常は OLDSTUFF EQU 0 と宣言するので、%IF は偽になって中が無視される。

Asterisk dialplan
(2016.07.18) VoIPなど用の PBX 構築環境 Asterisk の dialplan で使われる言語。
用語 "dialplan" はAsterisk独自ではなく、一般名詞として使われている。 Traditionalな Asterisk dialplan は /etc/asterisk/extensions.conf に書く。 extensionは「拡張」ではなく「内線番号」の意。 外線番号があるわけではないので単なる「番号」と同じ。
	[LocalSets]
	exten => 100,1,Dial(SIP/0000FFFF0001)
	
で、100番がダイアルされると sip.conf に書かれたアドレス 0000FFFF0001の電話機に接続する。 1 はシーケンス番号。失敗すると2を探しに行く。
	;...	1行コメント
	;-- ... --;	ブロックコメント。
	
DOSとISOの混じった形式は珍しい。昔は書けなかったのかな?

Erlangと違い、 電話応答用に特化した言語なので、汎用言語とは言えない。 チューリング完全ではある。

Smarty
(2016.02.24) HTMLテンプレート言語。PHPを書きやすくしたようなもの。 見た目とロジックの分離を目指しているものの ロジックはPHPのように埋め込み側寄り。

{...} でプログラムを埋め込む。{$val} など。 じゃあ <SCRIPT> などで生の{}を使いたいときはどうするかというと

両端がwhitespaceならばそこは処理しない
	<SCRIPT>
	// the following braces are ignored by Smarty
	// since they are surrounded by whitespace
	function foobar {
		alert('foobar!');
	}
	</SCRIPT>
	
頭いい。思いついた人は偉い。 本気でエスケープするための {literal}...{/literal} というのもある。

{*...*} つまり、プログラム部が*で囲まれる形式が注釈。 プログラム例では // も使われているけど、文法書には記載なし。

Kotlin
(2016.02.24) JVM上で動く言語。Javaのメソッドも流用可能。

高階関数や無名関数も使える。 {} でラムダ式を表す。 { it -> it * 2 }で1引数の無名関数。 ints.map { it -> it * 2 } で ints配列に無名関数を適用する。

関数をデータとして扱えないJavaの欠点を補う言語はいろいろ出ているが、 Kotlinもその一つといえる。

a {...} で、a 関数に無名関数を渡す、という意味になる。 {} が他の言語と違って単なるブロックではなくラムダ式を表すので、 油断していると動作を読み損ねる。

	//...
	/*入れ子可*/
	
同じくJVMで動くScalaも /*入れ子可*/ だが、不便だと思う人が多いんだろうか? #if 0 ... #endif みたいなものがJava風言語にはないから?

Chameleon/TAL
Chameleon is an HTML/XML template engine for Python.
HTMLテンプレート言語。タグの名前空間つきの属性値として 命令やPythonコードを埋め込む。
<p tal:repeat="txt ('one', 'two', 'three')">
	   <span tal:replace="txt" />
	</p>
	
例題には例の出力が無いが、たぶん
<p>
	   <span>one</span>
	   <span>two</span>
	   <span>three</span>
	</p>
	
tal:replace は、そのタグの中身を書き換える。 DOMの.textContentみたいなもの。
	<!--! 出力に残らない -->
	<!--? 出力に残る。-->
	

Jade (pug)
(2016.01.01) node.jsを使うHTML テンプレート言語。HTMLを出力するのが主目的。 開き・閉じをインデントで制御するので非常にすっきりと書ける。 汎用ではないせいかPythonよりもすっきりして見える。
p.
	  this is a block
	  paragraph.

	<P>this is a block paragraph.</P>

	- var author = 'me';	// - で始まるのはJade文
	<P>= author	// = でJavaScriptの評価値を計算
	
ほとんどの冒頭の語は 出力のHTMLタグに対応するが、 case/when, if/else, each, while, block, include など、 一部Jade特有の キーワードはJadeで処理される。無理にHTMLタグと違う書き方をしていない。
:markdown
          # markdown
	
-> <h1>markdown</h1> のように、filter機能で他の文法も収容できる。

// ... の形式の一行コメントが基本だが、なんとブロック形式でも有効。

	//
	  this is a 
	  block comment.
	
出力では <!--...--> のHTMLコメントに変換される。

while ループがあるので一応チューリング完全と思われる。 break や continue があるかどうかは不明。 (後継の pug では明記)

作者的には HAML の影響を強く受けた、となっているが、 HTMLテンプレートというより普通の文書記述言語に近いと思う。

reStructuredText (reST)
(2015.05.28) http://docutils.sourceforge.net/docs/user/rst/quickref.html

平文ベースのマークアップ。プログラムのヘッダ部分に埋め込むことを想定。 (平文ベースのマークアップとWikiって、どう区別すればいいんだろう?)

A href の詳細を、平文に直接埋め込まず、末尾のフッタにまとめて書くことも可能。 Markdown同様、平文の見やすさに貢献。

	External hyperlinks, like Python_.

	.. _Python: http://www.python.org/ 
	
そこの余計なアンダースコアに意味がある、のが 微妙にいやらしい感じをかもしだしているが。

コメントは .. ほげほげ なのだが、 directiveやA href ターゲットや脚注指示と兼用なので、 重複しないように気を付けて書く必要がある。 この辺もいやらしいというか、あんま深く考えてないだろ感がある。 (いや、ちゃんと考えてるよ!)

ブロックコメントは

	..
	   comment
	   block.
	
とも書けるのだが、ブロック中にdirectiveがあったりインデントがずれると そこで異常動作する。 実質、「怪しい箇所をごっそりコメントアウトする」ブロックコメント文は 無い、と思った方が良い。

Google CodeのWiki
MoinMoinを参考にしているとは言っているが、独自実装。

Wikiの文法は普通だが、注釈は <wiki:comment>...</wiki:comment> と冗舌な方式。 あまり使わない機能は wiki: 名前空間に押し込んである。

Google Code 自体は、もうGitHubで十分だろということで 2016/01 には廃止されてしまうようですが。

Bidding farewell to Google Code

PmWiki
(2015.05.28) そんなに広く使われてるわけでもなさそうなWikiエンジン。
正規のソースレベル注釈は (:comment ...:)しかなさそう。 %comment% は、注釈というより CSSの display: none を使った隠しテキスト。

tvtropes.org のpmwikiヘルプでは %%... も注釈扱いとなっているが、 古いpmwikiなのか?

Forth
(2015.05.26) "FORTH" を修正。Forthが正式らしい。 (...) ではなく、( ...) が正しい。"(" がワードである必要がある。 \ ... も使える。

が、仕様を見ると ( ...)\ ... は、重要度?で扱いが大分異なる。 実際、Forthでは空白と行末を区別しないのだが、 行末を解析する必要があるのは言語全体でみても \ ... だけなので、 異端児なのかもしれない。

VDIF
VLBI Data Interface Format

VLBI観測データをパケット単位で垂れ流す専用のバイナリデータフォーマット。 パケット落ちは許容する、一方的に送るだけ。速度重視。 なので Data "Interchange" Format ではない。 NICTの報告書 では "VLBI data interchange format"のままだが。

基本データは32bit長だが、バイト列はlittle endian で送ることになっている。 現場仕様ではそんなもん? Station ID(16ビット)の上8bitが <'0' なら数値ID、でなければASCIIのIDとする、とか。

仕様書は英語ネイティブでない人が書いているので微妙に読みにくい。 "UT second tick" って言われても1秒間なのか2秒目のことなのかわからん…

バイナリなのでコメントは書けないはずだが、 Invalid data フラグを立てることでそのパケットを無効にできる。 先見の明あり、かもしれないし、従来フォーマットでも存在したのかもしれない (Mark5では無かった模様)

AutoGen
テンプレート言語。という用途。 普通のテンプレート言語のように、HTMLをサーバーで加工するものではない。 なので、地の文はHTMLとは限らない。

定義ファイル(*.def)は YAMLっぽい文法で、注釈は

	/*...*/
	//... 

テンプレートファイル(*.tpl)の処理部分は Scheme (Guile) を使用。注釈は

	#...
	-*-...-*- 
本体が Guile なら ;... も使えそうだが、マニュアルに記載は無い。 つーかどっちもLISP系の注釈ではない。なんで?

*.tplの処理部分の指定方法が独特で、ファイルの最初にカッコ系の文字を 7つまで並べて、処理を示すマーカーにできる。

	[+ AutoGen5 template -*- Mode: emacs-mode-of-choice -*-
	h=chk-%s.h
	c
	# make sure we don't use csh:
	(setenv "SHELL" "/bin/sh")  +]
	
-man なファイルは -mdoc から生成しているのだが、 このmdoc2man.plが しょぼくて、古いnroffでは使い物にならない。 OpenSSHの mdoc2man.awk のほうがまだマシ。

ntp-4.2.4 以降がこの AutoGen を使っていて、マニュアルが古いgroffでは読めない。 なおntpではテンプレート処理指定マーカーには [+: ... :+] を使っている。

こういう、複数の言語 (roffとCとScheme) を収容するテンプレート系言語は、 今見ている文が地なのか処理指令なのか処理指令の中の文字列なのか… などが どうしてもわかりにくくなる傾向にある。 文法ハイライトがよほど高性能なエディタでないと編集がつらい。

Tcl
(2014.12.11) 組込用の小型言語。とはいうものの、分離できそうでできない Tk グラフィックインタフェースとセットで Tcl/Tk と呼ばれることが多い。 GUIを作れるスクリプト言語の中では移植性が高い。

純粋に組込用の小型言語としても使われていることはある。 (BroadcomのNIC動作試験用の B57UDIAG.exe など)

データは基本的に文字列で、場合に応じて数値やリストに解釈する。 Tcl 8.0以降は、内部で文字列・数値・リストの形式を必要に応じて 変換して持つので、ペナルティも少ない。

{...} は他の言語と違い、リスト作成ではなく、シェルのシングルクオートに近い。

	set x "0"	;# 文字列
	set y {1 2}	;# 文字列 "1 2"
	[lindex $y 1]	;# リストとして解釈して 2 を取り出す
	
リストの中にリストを入れて、データ構造を作れる。

ただ、連想配列 (array) が基本データ型になっていない(変数にしか代入できない)のが 大きな欠陥として残ってしまった。

	set a(x) 1
	set a(y) 2
	$a(x)		;# 1
	[array get a]	;# リスト化した {x 1 y 2} を返す。aは単なる文字列扱い
	
リストの中に連想配列 (属性名+属性値) を入れたいことは多いが、それができない。
Tcl 8.5 以降の dict命令で幾分改善されているが、根本的な解決ではない。 このへんのからみで、組込用としては Lua に水をあけられてしまった感がある。

ただ、そこに書かれた識別子が ただの文字列なのか、 変数として評価されるのかは Tcl のほうが明確。

注釈の #... は、「コマンドが書ける場所にしか書けない」ので、 入れ方に工夫が必要な場合がある。

djbdns (tinydns-data)
(2014.10.21) qmailの作者の作った DNSサーバ、djbdnsのデータファイル。 実際にはこの設定ファイルを独自の *.cdbにコンパイルして使う。

NS が、xxx.ns.domain.name のような名前であることを強制(矯正?)しているので、 そうでない環境では設定がちょっとめんどくさい。

行頭1文字がレコード種を指すので、慣れてないとわかりづらい。

	#...		コメント
	%XX:...		「場所」。BINDのviewに相当するもの
	.FQDN:...	作者の好みの形式の NS,A,SOA を生成
	&FQDN:...	作者の好みの形式の NS,A を生成
	=FQDN:...	A と PTR
	+FQDN:...	A
	@FQDN:...	MX
	'FQDN:...	TXT
	^FQDN:...	PTR
	CFQDN:...	CNAME
	ZFQDN:...	SOA
	:FQDN:n:...	汎用。任意のレコードタイプを書ける。
	
作者はとにかくBINDが大嫌いのようで、しつこいくらい悪口が書かれている。

Perl 6
(2014.10.16)
公式な文法は ソースコード (重い) に埋まっていることになっている。 宣言型言語っぽく書かれている。動くんだよねこれ? Unicodeで て普通に書かれていて、us-asciiだと化ける。

コメント文法は、ブロックコメントをどうするかで悩んだ形跡がある。 (Perl5は pod用の =begin nothing ... =end しかなかった。)
とりあえず普通の #... はあるが、 対になる <>[]{}() とか「」『』《》なんかを使って

	#`(「『...』」)
	

perl6.org に RFCがあった。
RFC 102: Inline Comments for Perl. では #<...># を提唱。実装はされてなかった。

参照している RFC 5: Multiline Comments for Perl. では、メーリングリストでの反応のまとめ、が載っている。

「専用メーリングリストで1週間議論したが、結論は出なかった」
出ないでしょうな。というか、 専用メーリングリストに隔離されるくらい煙たがられたということでしょう。

一応解説があった。 http://tablets.perl6.org/tablet-2-basic-syntax.html#multi-line

	#`(...)		( の部分は、組になっていれば #`[{{< ... >}}] などと重ねられる。
			ブロックコメントにしたければ、なるべく変な組み合わせを使う。
	#= ...		次のサブルーチンについての解説文になる。
			WHYメソッドで取り出せるので、計算機言語的には注釈ではない。
	

注釈の処理はどの言語でもめんどくさいので、 プリプロセッサにやらせている処理系もあるが、 Perl 6 ではあえてそれをせず、 なんとしてでも構文解析器で喰ってやる、 プリプロセッサ使ったら負け、みたいな執念が感じられる。

GAUSS
(2014.10.16)
http://www.aptech.com/resources/manuals/manualsg14/ メーカー公式、面白くない
http://www.trigconsulting.co.uk/gauss/man_intro.html 解説サイト

経済統計計算用の言語というか環境。 大きくて疎な行列を扱う機能と対話GUI環境を持つ。

言語の体裁は普通。FORTRANとPascalの中間のような感じ。 膨大な関数ライブラリを使いこなせるかが鍵。

行列の要素の参照は x[1,2] のように行うが、 無名行列は x = { a b }; のように書くようだ。

The ~ is the horizontal concatenation operator and 
the | is the vertical concatenation operator. The statement
	y = 1~2|3~4;
will be evaluated as
	y = (1~2)|(3~4);
and will result in a 2x2 matrix because horizontal concatenation has 
precedence over vertical concatenation:
	y = 1 2
	    3 4
	
z = x .* y; が要素ごとの掛け算の明示。 z = x * y; が普通の行列の掛け算。型が違う場合は良きに計らってくれる。

型の検査がゆるい。行列とベクトル(1次元行列)とスカラー(1x1行列)を混ぜて演算しても エラーにならない。間違いに気づきにくい。 エラー処理もあんまり得意ではない。そこで止まるという仕様。 対話的に使うのなら問題ないのかな?

任意のN次元配列も使えるが、行列とは内部実装が違う。専用の説明項や関数がある。

プロシージャへのポインタも行列に入れられる。何に使うんだろう?

	nms = &f1 | &f2 | &f3; 

入出力は割と貧弱。普通のファイルI/Oくらいしかない。 行列を丸ごとファイルに入出力するのは得意。 (関数型言語のような遅延実行ではないはず。疎で大きな配列だと欲しくなるんじゃ?)

	//...
	/*...*/	ネスト可
	@ ... @	obsolete
	

分野的には Algae, Julia と同列なんだけど comments-in-computer-languages では汎用分類になってるんだよなぁどうしよ →Algae,Juliaを数値計算用に引っ越し

SystemTap
(2014.10.10) Linux用のカーネルプロファイラ stap(1)。RHELにも付属してくる。 カーネル内のイベントを計数して出力する機能に特化。

スクリプト(*.stp)からカーネルモジュールをコンパイルして、 動的に!挿入するツール。素人お断り。

マニュアルの言う通り、確かに awk に似てなくもないが、 計数専用の "<<<" 演算子や、 @macroname() でプリプロセッサのマクロ起動、 あたりが独特の味を醸し出している。

	#...
	//...
	/*...*/
	
こういう機能特化言語は機能の建て増しで汚くなることが多いが、 SystemTapはその辺のバランスが絶妙な感じ。
言語分類的にはNASL(Nessus)と同類?セミコロン不要だけど。 あ、SRL (パケット計数) RFC2723 があるか。

Clojure
(2014.10.08) JVM上で動くせいか、徐々にファンを増やしている関数型言語。文法的にはLISP。 Java 1.6以上のランタイムが必要。

大部分は自分自身(*.clj)で書かれているが、 根幹部分は *.java で書かれている。

並行性を楽にするため、データはすべて静的とする。 identity は、その静的データへの参照のみを持つ。 データは変わらないので、複数のスレッドから参照しても安全。
ということらしい。わかるようなわからんような

基本データ型として、文字列・数値・文字の他に

	リスト	(a b c)
	ベクタ	[a b c]
	連想配列	{:a 1 :b 2 :c 3}
	集合	#{:c :b :a}
	
:a というのは「キーワード」で、頭に : がついている識別子。 連想配列のキーによく使う。 (だから「キー」ワードなのか。 素の文字列だと見た目うるさくなるからかな?)

「メタデータ」ってのがよくわからん。 ^{:a 1 :b 2} [1 2 3] は、ベクタ [1 2 3] を返すが、メタデータとして 連想配列 {:a 1 :b 2} が付属する。 関数なんかに {:doc "...."} でドキュメントをくっつけるのに使う。 (meta x) で取り出すことができる。

リストは2セルの連結ではないと述べているが、 内部実装はLISPと同じ2セル連結。うーん?

Javaのメソッド呼び出しをしたら、関数型でなくなるのでは??

貢献署名をしている人はヨーロッパ人ばかり。 850人中、日本人は8、中国人7、韓国人1

	;...	コメント
	#_...	次のS式を無視
	(comment & body)	bodyを無視してnilを返す
	
実装はJVMなので、スクリプトを直接exec(2)できない。 だから、Guileのように #! を無理に無視する必要がない。

;... 型の注釈は LISP のS式 (Clojureでは"form") にならないから、 LISPer的には邪魔者扱いなのかもしれない。 (comment & body) なら、bodyが正しいformであればブロックコメントになるはず だが、「変な部分をコメントアウト」ができないのでは。

んーだめださっぱりわからん。 Agent と Atom で非同期処理とセマフォアをやってるみたいだが。 ~x とか ~@x は何をするんだ?

JavaのライブラリをLISPから使いたい人用の言語?

Rationale の和訳: http://www.geidai.ac.jp/~marui/clojure/rationale/
(専門用語は専門家でないと翻訳できん)
immutable の和訳は無いのかな?

FreeMarker
HTMLテンプレート言語。Java専用。
	${...}	変数参照
	<#...>	ステートメント (directive; FTL;FreeMarker Template Language)
	<@...>	マクロ起動
	<#--...-->	コメント
	

<#if ...> ... </#if> でちゃんと閉じるのが特徴的。 エディタ側のハイライト用マクロを書くのが楽? エディタがうまく動かない場合に備えて [#if ..]...[/#if] 書式に切り替えられる。m4みたい。

<#--...--> がネストできるかはわからない。 bugfixの書き方をみるとネスト可のつもり?無理だと思うけど… ドキュメントは丁寧に書いてあるのだが、コメント文法についての項が無い。

SGMLコメント <!--...--> でもよさそうなものだが、なんでだろう。 出力のHTMLに残したくないから?

Deprecated となっているが、<#comment>...</#comment> も使える。HTML+か。 ブロックコメントは無いと不便だと思うから、なくさないほうがいいのでは。

FreeMarker 1.x と 2.x は作者が別。

JSON
(2014.11.07) The application/json Media Type for JavaScript Object Notation (JSON)

調べてなかった。 JavaScriptの eval() に直接突っ込める。 コメント文法は無い。(YAMLにはある)

JSONから注釈を除いた理由

groff
roff の伝統的なコメント文法は \"... なのだが、 行頭で使うと空行になってしまうため、 .\"... と書くことが多い。 ."... でも、存在しないマクロ起動になるので結果的にはコメント。

GNU groffではこの辺をすっきりさせるため、 行頭の \#... にて、その行まるごと削除のコメント、

	.ig
	...
	.. 
でブロックコメントを新たに導入した。

でも今更roffで書く人は互換性が大事だから、この新文法は使わないと思うよ?

Markdown
(2014.10.07)
# Markdown -- A text-to-HTML conversion tool for web writers
よくある平文ベースのマークアップ。出力は HTMLのみ。 書きたければ生HTMLを書き込んでもよい。 実装は perl。 GitHub世代のパッケージでよく使われる *.md なドキュメントが Markdown。

コメント文法は無い。ベタテキストで読めるべきだから、のはず。 どうしても、なら <!-- --> になる。

<A href> を、lynx のベタテキスト出力的に定義できるのは、地味だけど 平文の見やすさの点で画期的だと思う。(Wiki類と比べて)

	Visit [Daring Fireball][] for more information.

	[Daring Fireball]: http://daringfireball.net/
	
いきなり $text = <>; してるから、大規模ドキュメントには不向き。 (実装では何回 $text を書き換えてるのかわからないくらい重い)

AsciiDoc
(2014.10.07) よくある平文ベースのマークアップ。 出力は HTML4,HTML5,DocBookあたり。 roff出力もできるが、DocBook経由になる。 実装はPython。 リポジトリは GoogleCode 上の Mercurial
	//...
	///
	...
	///	3つ以上ならいいのかな?
	
Pythonが必要という時点で重いよう。

Rubyで再実装されたAsciiDoctor////\n...\n////
\\も使えるのか?

CPL
(2014.09.29) Comment Programming Language

コメント「しか」書けない言語。普通に使う言語のコメント文法を全部詰め込んである。 コメントの書き方に悩まなくてよい。

/* コメントを /* 入れ子に */ したいんだ */

実装がプリプロセッサであればまだ実用性があるのだが、 コメントでない地の文があると Syntax Error で止まってしまうので、 実用性はゼロ。冗談系の言語?になってしまっている。 どこに分類しよう。ううーむ
dmoz.orgでは Obfuscatedに分類されてる。

Nasal
(2014.09.26)
Wayback Machineにある残骸:
http://www.plausible.org/nasal/
http://www.plausible.org/nasal/doc.html

組込用の小型言語。 方向性としては LuaやtclやJavaScriptと同じ。 文法や基本設計は JavaScript と同じ。 何をしたかったかは www.plausible.org/nasal/doc.html で十分わかる。

a["b"]a.b は同じ意味。これはJavaScriptと同じ。
a["b"](1,2)a.b(1,2) では、 前者は単なる関数呼び出し、 後者はメソッド呼び出しで、 a オブジェクトのコンテキストで実行される。 (JavaScriptではどうだったかな…両方とも その関数が定義されたexecution contextにて実行されるんだったか)

#... 型の一行コメントのみ。これはこれで潔い。

元は "Nasl" だったらしいが、Nessus のNASLと被るので "Nasal" にしたらしい。

http://www.FlightGear.org/ のフライトシミュレータに組み込まれている。
→ライブラリの SimGear-X.X.X.tar.gz のほうに入ってるのか。 最新の simgear-3.2.0-rc1.tar.bz2 (2014/08) にも nasal/ がある。 ドキュメントはなさそうだが。
http://wiki.flightgear.org/Category:Nasal あたりが一番よさげ。

FlightGear/SimGear との結合が強くて、独立した言語のNasalとしてのリリースは 1.0.1以降は放棄されたのかもしれない。 uLPC(Pike)と似たような経緯をたどっている。

Lush
(2014.09.24) 作者的には「オブジェクト指向言語」。 LISP に数値計算用のライブラリをくっつけたもの。Cの関数も呼べる。 MATLABでは遅いと思う人用。 MATLABやSmallTalkのようなインタラクティブで使う機能が満載。 ホームページの宣伝が気合入ってるというか必死な気がするのはなぜだろう。

設計思想は意図的に古いLISPを継承。

#{ ... #} でCのコードを混ぜ込める。
	;...		行コメント
	#! ... !#	ブロックコメント
	
要するにScheme/Guileと同じですな。

テンソル計算まで組み込まれているが、数値そのものは double のみで 多倍長精度計算(bignum)は無い。

オブジェクト指向とはなっているが、後付感がすごい。 普通に手続型のプログラムを書くほうが楽だと思う。

Nimrod
(2014.09.02) →Nim

型が静的、インデントでブロック指定。 コンパイラ言語(Cに変換)なので速い。

コメントのインデントにもうるさい。 コードとそのコメントのインデントが一致しない場合はエラーにされる。

	#...
	when false:
		brokenCode1()
		brokenCode2()
	discard """.... ...."""
	

Python 好きなんだけど遅い|メモリ大食いに頭きた人が作った言語のような気がする。

Rust
(2014.09.02) Mozilla製の「システムプログラミング言語」。型が静的。

ifswitch-case (match) が値を返せる。他にありそうで意外にない。

	let price: f64 =
	    if item == "salad" {
		3.50
	    } else if item == "muffin" {
		2.25
	    } else {
		2.00
	    };
	
この場合、各行の末尾のセミコロンの有無で動作が容赦なく変わる。

ガベージコレクタがあるのに、値の「所有者」の概念があり、 変数に他の変数の値を代入すると元の変数は使えなくなる。

変数はデフォルトでは変更不可で、上書きできるようにするには
let mut a = ...;
と mut 宣言する。 値には pointer, reference, borrowed, box と、わかりにくい概念が導入されている。 メモリアロケーションを最適化するためだと思われるが…

	//...
	/*...*/
	
ただし ///... //!... /** ...*/ は rustdoc 用に予約。

単純な代入文っぽい記述でも裏の副作用が多いので、 後から別人がプログラムを修正するのは不可能なのではないだろうか。 いわゆる read-only language

Scratch
(2014.09.02) http://scratch.mit.edu/

子供の教育用言語。GUIで部品を組み合わせて構造化プログラミングする。 GUIの「ブロック」が1ステートメントに対応している。

Scratch的には"Script"は(GUIの)ブロックの組み合わせのことを指していて、 テキスト表現のことではないようだ。 注釈はテキスト表現上は //...

開発環境はMacromedia(Adobe) Flash で書かれているので一応クロスプラットフォーム。

Julia
http://julialang.org/
数値計算用の言語。 汎用言語としてはわりと普通の文法をしている。 並列化がしやすい、らしい。

使用可能文字はUnicode. FORTRANと同じように、配列の添字は1から始まる。 組込型に分数(rational number)があるのが珍しい。Mathematicaみたい。

	#...
	#= ... =# 入れ子可 

Cypher Query Language
Neo4jグラフデータベースに対する問い合わせ言語。SQLの類と考えていい。
//... 
単に Cypher でもCypher Query Languageのことを指すらしい。

HAML
HTML Abstraction Markup Language

Ruby でHTMLを再生成する言語。一応テンプレート言語なのかな? インデントでタグの開き閉じを制御するのはPython的。 Rubyコードを埋め込める。

…確かにタグをいちいち書くのよりは書きやすいだろうけど、 抽象的すぎて暗号みたいなソースコードになりそう。

	/ ...	<!--...--> として残る
	-# ...	出力から消える
	   ...

	
注釈もインデントで閉じを制御するので、 途中でインデントがずれると構文解析器が文句を言う。 コメントアウトは、実質全行に -# を前置する必要がある。 →reST

Mako
Python専用のテンプレート言語。
	${式} 
	% 命令
	<% python ブロック %>
	
	##...
	<%doc>
	...
	</%doc> 

Jinja 2
Python専用のテンプレート言語。 テンプレートファイルに {% 命令 %} {{ expression }} を埋め込む。
{# ... #}
	
Jinja2.2は ##... もコメント (line-comment prefixを設定した場合)

SaltStack の .slsがJinja2 + YAMLをデフォルトの設定文法としている。

YAML
“YAML Ain’t Markup Language” (abbreviated YAML) is a data serialization language

データ表現言語。構造化データのserializationが目的。 JSON のスーパーセット。 XMLでも同じことはできるが、YAMLのほうが文法が単純で書くのも楽。Wiki的。

Swift
Swift is a new programming language for iOS, macOS, watchOS, and tvOS apps that builds on the best of C and Objective-C, without the constraints of C compatibility.

Apple の Cocoa/Cocoa Touch専用(と言っていい)言語。 Objective-Cの後継のような言い方をしているが、文面づらはむしろ BASICに近い。
代入は必ず let a = b のように let を伴う。 自オブジェクトは self で指定する。

	//...
	/*...*/	入れ子可
	

HLA
High Level Assembly.

強力なマクロと構造体サポート、充実したライブラリで、 一見、高級言語っぽい感じに書けるアセンブラ。

Go
Googleが発明した汎用言語。「システム記述用言語」
単なる言語ではなく、golang.org を gitサーバとして 積極的にオープンソースなプログラムを書けるようにした統合環境。 システム記述用ということだが組込型のバリエーションが多い。

基本的な文法はCを踏襲。 ガベージコレクションがあるということなのでそれ系のオブジェクトを扱うらしい。

受信演算子 <- でコルーチンやネットワークプログラムが書きやすそう。 v2 = <-ch で chチャネルからのデータを待つ。

最初の動機はCやC++における大量の#includeによる非効率性の改善。 include したものは使わないとエラーにする!というのが 余計なincludeを排除するのに一役買う。 キーノートの http://talks.golang.org/2012/splash.article が 位置づけとしてはわかりやすいかもしれない。

標準ライブラリは普通のものしかないが、ユーザが書いて公開している ライブラリ類が多い。 この手の言語はあまり普及しないのが常だが、なんでだろ?

Goが何の意味かはわからんが、例題に日本文字があるとこを見ると 第五世代言語のつもりなのかもしれない。 FAQでは 「Goのデバッガ名がOgleなのがいいでしょ」となってはいるが。

オブジェクトの継承は、わざと実装してない。 小さいinterfaceの定義を積み重ねるようにしている。継承系のライブラリは どうしても大げさな設計になりがちなため。

Maxima
Mathematica系の数式処理環境。DoDスポンサードの Macsymaがベース。 LISPで組まれている。!(Emacsの中でも動く)
/* ... */ ネスト可

R
http://www.r-project.org/
S や SAS のフリー版のようなもの。統計解析とグラフ表示を行う。 画像出力は必須なのでバッチ用の言語ではない。GUI統合環境で使う。
# ...

Io
Io is a prototype-based programming language ...
身近なところではJavaScriptに近い。 object slot ... の文法をとるが、これは他の言語の object.slot (メンバアクセス)に相当する。 オブジェクトにメッセージを送って動作する、ので、動詞が後ろに来るので Forthっぽく見える場合もある。 非同期のコルーチンもネイティブで書けるが、よくわからん…

華和梨インラインスクリプト
(KIS: Kawari Inline Script)
人口無能の辞書の中にスクリプトを埋め込む。 KIS自体にコメントはない。華和梨の辞書の #... をそのまま使用: http://kawari.sourceforge.net/7.5.0/manual.html#inifile

華和梨 については以下の公式文書で十分な説明になっていると思う http://kawari.sourceforge.net/8.2.5/programming_1.html

SakuraScript
ペルソナウェアのクローンの「偽春菜」「伺か」「SSP」などのベース言語。 正式名称が SakuraScript なのか さくらスクリプト なのかは不明。

辞書ファイルのコメントが エンジンによってまた違う

MakeCAB directive
makecab.exe /f file.ddf で指定するコマンドファイル。
基本はCABに詰めたいファイルを列挙するだけなのだが、 *.infの生成も行うため、スイッチ的なコマンドがある。
コマンドは .Set Cabinet=Off のように . で始める。 分岐やループ類はないので、プログラムは書けない。 *.DDFはたぶん Disk Directive Fileの略。
;... 

Scala
(2013.11.16) http://www.scala-lang.org/
「関数型とオブジェクト指向を融合させたJava風の言語である」

Javaのライブラリを使える関数型言語。コンパイラもJVMバイナリを出す。 Javaクラスを流用、あるいは欠点を補完したいがためか、 文法はJavaに酷似。

関数型とは言っているが、Javaライブラリを使う時点で副作用ありまくりなので 純粋な関数型言語ではない。 単に関数もオブジェクトとして扱いたかっただけのようで、むしろJavaScriptに近い。

	//...
	/*...*/	ネスト可。(閉じ忘れはエラー)
	

MoinMoin
(2013.04.27) http://moinmo.in/

Wikiエンジン。 通常のWikiエンジンは文法が固定だが、 MoinMoinは 複数のパーサーを切り替えられる。 CSVなんかを表にしたいときに便利。

デフォルトの文法 (#format wiki) は他のwikiとちょっと違う癖があるが、 Creole型 (#format creole) は他のと似ている。 #コマンド、だが ##... コメント なので、 HelpOnProcessingInstructions項に説明がある…

/*...*/は、表示・非表示を切り替えられるコメント。 display:none使用

Velocity
(2013.04.26) HTML埋め込みテンプレート言語。 埋め込む言語自体は Velocity Template Language (VTL) という。 実装は総Javaというか Apache/Ant。

目的としては、Model-View-Controllerモデルをやりやすくするよう、 HTMLに埋め込む側のコードを簡単にしよう、という方向性か。 バックエンドのJavaについてはなるべく知らなくてもいいよう配慮されている。

SSIやPHPはSGMLに収まるようちょっと無理な記法をしていたが、 Velocityはそこはすっぱり放棄している。 (http://velocity.apache.org/engine/releases/velocity-1.7/user-guide.htmlの例)

	<HTML>
	<BODY>
	Hello $customer.Name!
	<table>
	#foreach( $mud in $mudsOnSpecial )
	   #if ( $customer.hasPurchased($mud) )
	      <tr>
		<td>
		  $flogger.getPromo( $mud )
		</td>
	      </tr>
	   #end
	#end
	</table>
	
	##...
	#*...*#
cat <<EOF で$(cmd)を埋めるshのhere-documentに近いかな。 #や$をエスケープしたいときのマニュアル説明がなかなか長くて 苦労してる感がある。

#directive が処理なのに ##... でコメントてのは混乱しそうだが… 実際は $value.method() 呼び出しが多いだろうから #directive は あんま使わないのかもしれないが

TECO
(2013.04.05) 今でも配布している。http://almy.us/teco.html
紹介 http://www.goodmath.org/blog/2010/11/30/the-glorious-horror-of-teco/

ed(1)の先祖なので、エディタとしてはそんな変な文法ではない。 汎用言語として使おうとするとわけわからん文字列になるわけだ。

!tag! は本来はgotoの宛先。 command.comの :tag と同じ。 マニュアルを読むとPDP-8用にしては高機能すぎる気がするんだが…

Unlambda
[難読系] 徹底的にデータ型を高階関数だけにした言語。要はlambda計算しかしない。

F(G) は `FG と書く。LISPに右括弧が無い(不要)状態。 作者の言うとおり、確かに、書くことはできるが読むのは不可能に近い。 テープやスタックもないので、データ構造は関数の引数の数くらいでしか作れない。 原サイトは実に丁寧に書かれている。

翻訳:プログラミング言語Unlambda

False
Forth系。1文字コマンドの羅列で、字面上はTECOに似ている。 コンパイラをどこまで小さくできるか?が目的。

読みにくいのは確かだが esoteric language ではない。 文字としてss(βみたいな奴)とAlt-o(φみたいなの)を使うので ASCII系の環境では使いにくい。

うんこスクリプト
(2012.02.28) 算数ドリル問題文の埋め込み用。LISPのS式の極小サブセット (+ 1 2) など。 Software Design 2011/12にパーサーを書いた特集あり

注釈は書けない。

RD
Ruby の =begin ... =end 読み飛ばし区間に書くドキュメント。 RDoc と言われることもある? plain2* やwiki系のフォーマット。
#...
昔のRubyは =begin...=end なかった気がするが…

PocoScript
(2010.09.06)
{...
メールソフト PocoMail のメッセージ処理専用。 ループは書けるがif+gotoの不細工な方法のみ。そういう用途ではない。

command arg arg ... で徹底。 メール電文の情報加工に関するコマンドが充実。 それ以外のことはほとんど何も出来ない。一応I/Oはある。 インライン式は書けないので、計算は非常にまどろっこしい。

この手の言語のコメント文法は ";" が多いが、Pascal風の { は珍しい。 しかし } で閉じる必要はない。例題でも閉じてない。

Gaussian
計算化学シミュレータ。
#... はコメントではない。 専用の "title section" (空行で終了) があり、ここには何でも書ける。
!...

TDF (TenDRA Distribution Format)
TenDRA is a compiler framework for architecture neutral representation of compiled programs.
移植性の高いコンパイラ用中間言語を目指すTenDRAプロジェクトで、 システムのAPI側を記述するのが TDF。 "Distribution" とは付いているが、今ではあまり意味がない。 API仕様記述コンパイラの tnc の入力がテキストなので コメント文法がある。
#...

tld (リンカ) も、シンボル書換とエラーメッセージ変更には 外部ファイル内で "#' が使えるんだが、どう分類しよ。 GNU ld のような高度なことはしないし…

CPL Content Policy Language
CacheFlowの後継,Blue Coat Systemsの"Port 80 Security Appliance" の設定ファイル。プログラムというよりはフィルタ系の設定ファイル。

GNU ld linker script
代入文しかないと思えばいい。 文書記述言語をもじればオブジェクトコード記述言語? ループ類は無いのでプログラミング言語ではない。

Topaz
(2002.11.07) 旧Gem
gnuplot+perlみたいなもんか。 文法は基本的に perl 継承。 データファイルに関しては #/;%" (iscommentlinedata())がコメント文字。

ILLGOL
作者は腐ってると言っているがそうでもないような。 (安全ではないが…) でき損ないのBASICのような構造は HSP や FXP のような 国産スクリプト言語をほうふつとさせる。
NB ...

var'aq
(2002.11.05) Wayback archive: http://www.geocities.com/connorbd/varaq/
クリンゴン語のPostScript(Forth)。 注釈はなぜかPascal系の (*...*) (FORTHは( ...),PSは%...)

NScripter
(2002.10.17) アドベンチャーゲーム構築エンジン。 BASICを参考にしてはいるが、 %n で数値変数 を指すので、ゼロページアセンブラっぽい字面になる。(%0-%999)
オプション指定的なものも、昨今のキーワード形式ではなく 昔BASICのような機能番号で指定するので、ソースコードを見ただけでは何をしているのか全くわからない。
;...

intbigot
(2002.09.05) [冗談系] 唯32bit整数主義に基づく言語。 関数はあるが条件分岐がないので役に立つプログラムは書けない。 入力もなかったような。 整数演算は一通りそろっている。

変数のスコープは、呼び出し元の変数が呼び出し先からも見える 形式。引数渡しはこれを使えつーことらしい。

#...

MPW Shell
Macintosh Programmer's Workshop
Wayback archive: http://developer.apple.com/tools/mpw-tools/commandref/appc_misc.html
現在はフリーになったようだ。ありがたいことだ

非常に UNIX Shellっぽい。 が Makefile文法も包含しており、GUI関係のコマンドも豊富。 演算子も一通りそろっている。汎用スクリプト言語かも。 Appleな特殊文字(Opt-F,Opt-Dなど)も使うので 日本語フォントだとちょっと見づらい。

#...

mIRC
IRCクライアント mIRC のスクリプト言語。 /command arg arg ... から発展。 botも書けそうだが本来そういう用途ではなさそう。

Alias の設定は /alias /cmd arg arg.... | /cmd ... (| はマルチステートメント) なのだが、これが

	/alias {
	/cmd ...
	/cmd ...
	}
	
と展開できるようになって言語っぽくなっている。 関数の定義もこれで行う。引数中での利用は /func ではなく $func(...)

ループは以前は goto/if だったらしいが今は while/continue/break もある。
データ型は文字列のみ。(数値演算も可能)

違うと言えば違うが、cmd arg arg 形式は Tcl に 似てるかもしれない。 追加機能なんかも見ていくと特定機種用BASICにも通じる。 大方 古典BASICでできそうなことは全部できそうだ。

ソケットも使えるみたいだが入出力はイベントドリブンで行う。 (IRCの性格を考えれば当然か?) dialogコマンドで GUI も作れる(動作は当然イベントドリブンで書く)

文字列の足し算は $+ で行う。

	a $+ b	;"ab"
	$+(a,b)	;"ab"
	

*W (すたーだぶりゅー)
[難読系] (2002.05.11)
変なだけ。 C の ; に相当するのが ! なので見た目がうるさい。
||...!!

Funge-97,98
http://www.mines.edu/students/b/bolmstea/mtfi/f97.html (Wayback)
http://www.catseye.mb.ca/esoteric/befunge/98/index.html (Wayback) https://github.com/catseye/Funge-98/blob/master/doc/funge98.markdown#user-content-flow-control

[難読系] "Be" は2次元を意味するということにして Unefunge, Befunge, Trefunge となっている。 コメントの ; が拡張されて、対応する ; までの読み飛ばしになる。 ブロックコードの包囲に便利。

;...;

実用的にはなったんだろうが、初代Befunge-93のほうが エレガントな気がする。

Befunge-96
http://www.mines.edu/students/b/bolmstea/mtfi/96.html (Wayback)

[難読系] include,defineにともないコメント専用文法がついた。

; ...
スタックを共有しつつコンカレントてのは…

Befunge
http://www.catseye.mb.ca/esoteric/befunge/ (Wayback)
http://catseye.tc/node/Befunge-93

[難読系] INTERCALと並び称される難読言語。 ASCII2次元平面に展開される。 プログラムとデータは同一、自己書き換え可能。

基本的にはForth系のスタック言語。 読みにくいがそれほどひねくれているわけでもない。

	<>^v 方向転換
	0-9  数値(10以上は計算してスタックに積む)
	:    dup
	,    putchar
	_|   if (水平分岐、垂直分岐)
	#    次の命令を無視 (立体交差に使う)
	@    停止
	
	                 v
	>v"Hello world!"0<
	,:
	^_25*,@
	

コメント文法はない。実行されない余白部分に書き込む。

INTERCAL
(2002.05.11) [難読系] わかりにくさで史上最強を誇る言語。

コメント文はあるようでない。 PLEASE NOTE .... の形で書かれることが多いが、

とりあえず頭の部分は please節でないといけない。 (== DO[NOT] == {"DO"|"PLEASE"|"PLEASE DO"}["NOT"|"N'T"] )

PLEASE NOTE は熟語だろう。

NASL
(2002.05.06) "Nessus Attack Scripting Language"
セキュリティスキャナ Nessus のスクリプト言語。 文法的にはC。予約語のようなものはfunctionとif,for,whileくらい。 型は数値と文字のみ。 おいしいものは関数ライブラリにある。

関数呼び出しに特徴があり、

高速くりかえしのため send_packet(udp) x 10; なる繰り返し演算子 x がある。 ストーム生成などに有効。

低レベルネットワークプログラミングにはいいかも。 文字列処理も一通りあるし、汎用にも使えそうだが…

Karel
(2002.04.30) プログラム学習用?言語というか環境というか。 位置づけ的には LOGO と似通っているが、 「世界」(迷路とか?)を定義できる。

Pascal的な冗長宣言。 実装は Java+Swingのようだ。パーサーは Javaの StreamTokenizer. commentChar('#') 宣言のみ。

AGI LOGIC
(2002.04.30) シエラオンラインが使っていた AGI (Adventure Game Interpreter) のスクリプト。実際はバイトコードになって配布される。 Sierra製の正式ドキュメントはないので、有志による解析 などによる上記 URLの仕様が"official" とされている。

jaclみたいな変な癖はなく、見た目は普通の言語っぽい。

	//...
	[...
	/*...*/	入れ子可
	

[...というのもなんか珍しい。 viで編集できんじゃん
[...]て用途を想定してるのかもしれない。


ワドラーの法則 (HaskellWiki)

あらゆる言語の設計において、議論に費やされる時間の合計は、
以下の論点の数値を2に冪乗した値に比例する。
   0. 意味
   1. 構文
   2. 字句構文
   3. 注釈の字句構文

kabe.sra-tohoku.co.jp