gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

年末なのでcurl言語を思い出してみた

f:id:grnishi:20191226124957j:plain

はじめに

こんばんわ。grnishiです。2019年もあと数日ですね。今年はもう少しスポーツ(観戦)に挑戦してみたかったです。特にアイススケートと相撲観戦は2020年の目標にしたいと思います。

本題

Curl言語知っていますか?

Curl言語とは1995年にMITが開発したWEBコンテンツ用プログラミング言語で、誇張して言うならHTMLとJavaScriptとCSSとJavaを合体させたようなもの。Curl RTEを使えばデスクトップアプリケーションも開発可能です。Curl IDEもありますよ。詳しくはwikipediaへ。

ja.wikipedia.org

学生の頃、技術英語という授業でテーマ自由の英語小論文という課題がありました。その時私はCurl言語を小耳に挟んだばかりだったので、ちょうど良い素材があったと思い、Curl言語がもたらす未来のコンテンツについて論じた事を覚えています。具体的な話を書くと誹謗中傷となってしまう可能性があるので何も書きませんが。

その課題に取り組んだのが2000年の秋だったと思いますが、あれから19年。Curl言語の今はどうなっているのでしょうか。

私はWEB系やゲーム系の業界にてプログラミングでご飯を食べていますが一度もCurl言語に触れる機会はありませんでしたし、耳にする事もありませんでした。

だからといってCurl言語は駄目だというのは早計です。という事でちょっと調べてみました。

www.curlap.com

2019年にも更新が入っている、まだまだ現役ですね。他のページを覗いてみると、

「Curlは、日本の製造、金融、商社、自動車などの基幹系を中心に700社以上の大手企業のプラットフォームに採用されています。」

と記載があります。日本の法人は約170万社という事ですので、700社が多いのか少ないのかはわからないです。

私のいる業界とは違う業界では大車輪の活躍なのかもしれませんが、調べる術がありません。

Curl言語の記述方法

兎にも角にもまずはHello Worldから始めるのが基本です。

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}
Hello, World!

実行環境のダウンロード

curlアプレットを実行するにはRTEが必要になりますので、ダウンロードしてインストールします。

www.curlap.com

実行してみる

chromeでサクッと実行してみようと思ったのですがどうやら数年前から対応していません。chromeに対応していないという時点でWEBコンテンツとしては使えない事が確定しました。

困ったなー。

とりあえずIEで動くという事なのでそうします。Macな人?多分動きません。。。

f:id:grnishi:20191225195231p:plain

文字列を装飾

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}
|| コメントの書き方
{text
  size
  Hello, World!
}

f:id:grnishi:20191225195248p:plain

変数を使ってみる

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}
|| コメントの書き方
Hello, World!
|| 変数宣言
{let val1:int}
|| 代入
{set val1 = 300}
|| 宣言+代入
{let val2:int = 200}
{let val3:int}
|| 計算
{set val3 = val1 + val2} !
足し算は、{value val3}

f:id:grnishi:20191225195439p:plain

型はほかにもint8、int16、int32、int64、float、double、char、string、bool、anyなどがある。intと書くとint32になる。

if文とfor文

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}
{let buf:String=""}

{for i = 1 to 100 step 1 do
    {if i mod 15 == 0 then
            {set buf = buf & "FizzBuzz,"}
        elseif i mod 3 == 0 then
            {set buf = buf & "Fizz,"}
        elseif i mod 5 == 0 then
            {set buf = buf & "Buzz,"}
        else
            {set buf = buf & i & ","}
    }
}
{value buf}
1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz,Fizz,22,23,Fizz,Buzz,26,Fizz,28,29,FizzBuzz,31,32,Fizz,34,Buzz,Fizz,37,38,Fizz,Buzz,41,Fizz,43,44,FizzBuzz,46,47,Fizz,49,Buzz,Fizz,52,53,Fizz,Buzz,56,Fizz,58,59,FizzBuzz,61,62,Fizz,64,Buzz,Fizz,67,68,Fizz,Buzz,71,Fizz,73,74,FizzBuzz,76,77,Fizz,79,Buzz,Fizz,82,83,Fizz,Buzz,86,Fizz,88,89,FizzBuzz,91,92,Fizz,94,Buzz,Fizz,97,98,Fizz,Buzz,

while文でも良いです

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}
{let buf:String=""}
{let i:int = 1}
{while i <= 100 do
    {if i mod 15 == 0 then
            {set buf = buf & "FizzBuzz,"}
        elseif i mod 3 == 0 then
            {set buf = buf & "Fizz,"}
        elseif i mod 5 == 0 then
            {set buf = buf & "Buzz,"}
        else
            {set buf = buf & i & ","}
    }
    {set i = i + 1}
}
{value buf}

配列は?

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}

{let array:{Array-of String} = {{Array-of String} "America", "Italy", "German"}}

{value array[2]}
German

ハッシュは?

{curl 8.0 applet}
{curl-file-attributes character-encoding="utf8"}

{let map:{HashTable-of String, int} = {{HashTable-of String, int}}
{map.set "America", 0}
{map.set "Italy", 1}
{map.set "German", 2}

{value map.get "Italy"}
2

さいごに

基本的なプログラム構文について見てきました。その他MySQLへのアクセスであったり、WEB系のコンポーネントが用意されていたり、色々便利な機能がたくさんあります。

ただしChromeでは動きません。

スマホでも動くみたいですし、デスクトップアプリとしても使えますので、元祖クロスプラットフォームだとは思います。

ただしChromeでは動きません。

実行速度はというと、端末依存になります。端末にインストールされたRTEで解釈するのでPC次第かなと。

ごりごりのビジュアライゼーションとかだとどの程度の動作になるのか気になる所ですが、

そこまで実装する気にならないのでこの辺で。

それでは2019年ありがとうございました。よいお年を~!