Picolisp展開の賛否


この記事ではプログラミング言語Picolispの賛否を紹介します.これは、大まかな概観になります-私たちは後で詳細にこれらのポイントのすべてに戻ってくる.
第二に、我々は非常に小さなpicolispのWebアプリを見てどのように言語のような第一印象を取得します.

トビケラ
その記事は有名人に触発されているTractatus Logico-Philosophicus 「ドイツの哲学者Ludwig Wittgensteinの」.
元のtractatusでは、各命題は、さらに下位レベルに詳しく説明される宣言文の一種です.哲学に興味があれば、最初のいくつかの文を知っているかもしれません.

1 The world is all that is the case.

1.1 The world is the totality of facts, not of things.

1.11 The world is determined by the facts, and by their being all the facts.


など.非常に興味深い、非常に読むのは難しい-しかし、これはちょうど私たちはPicolispについて話をしたいので、サイドノートとして.
小さな楽しみのWebアプリは、Tracoliatusの長所と短所を一覧表示されますTractatus Pico Blaesicus . (ラテン語「Blaesus」は「リス」を意味する😀) それを見てみましょう-まず、コンテンツでは、ソースで.
私はオープンすることをお勧めlink 別のブラウザータブでこの記事を読んでいる間.

Tractatusと同様に、サブレベルを展開する項目が含まれます.

Picolispの賛否
良いニュースから始めましょう.picolispは以下の通りです.
  • シンプル
  • 透明
  • 強力
  • 効率的.
  • さて、誰もが言うことができますが、それは何の意味ですか?次のレベルを開きましょう.

    さらに声明を詳しく述べるより多くの下位レベルが、あります.あなたは原則を取得-無料で自分でサブ層を探索チェックアウトしてください.

    Picolispの円錐
    何も完璧でありません、ここでは短所です:
  • LISP構文
  • 通訳のみ
  • 省略形
  • 欠陥
  • または、より正確に

    もう一度、自分の上のサブ層を探索する自由を感じる.これらのアイテムの各々がそれ自身のポストの価値があるので、我々は現在内容について詳細に入りません.

    分析“tractatus”ウェブアプリ
    TractatusピコBlaesicusはまた、Picolispの強さについての良い例でもあります:コードを非常に少ない線でダイナミックにレンダリングしているHTMLページを書くために.
    コードをダウンロードして、Picolispを全く知らない誰かの目でそれを見ましょう.

    ダウンロード
    ソースコードを取得するには
    $ wget https://gitlab.com/picolisp-blog/single-plage-scripts/-/raw/main/tractatus/tractatus.l
    
    または開くthis link ブラウザでダウンロードして手動で.

    スクリプトの実行
    スクリプトがダウンロードされたフォルダで
    $ pil tractatus.l
    
    ブラウザをポイントhttp://localhost:8080 . このようなページのレンダリングを見る必要があります-それは動作します!

    (まだPicolispをインストールしていない場合は、read this first ).

    第一印象
    本稿の第2の目的はpicolispがどのように見えるか印象を与えることです.PythonやJavaScriptだけを使用している場合は、最初は非常に外国人に見えます.
    だからここであなたのための課題です:見てみてくださいsource code そして、何が起こっているかについて理解してください!(詳細は不明)

    ファインディングlevel 機能
    最も明白に始めましょう:ライン67から始めて、我々は実際のテキストを見つけます.
    # Text
    Pro
       Simple
          Simple NOT in the sense of "small number of features"
                   ...
    
    番号付けが不足しているので、スペースを「数える」いくつかのアルゴリズムがなければなりません.これを使用していることを推測できますlevel 関数は、我々は用語を見つけるsp? これはおそらく“スペース”文字を表すことができます.
    # Content
    (de level (Lst)
       (for (I . C) Lst
          (NIL (sp? C) I) ) )
    

    ファインディングmenu 機能
    The level -関数はある範囲内で呼び出されますmenu -機能
     [<menu>
         ~(let (L (0)  L1 (prog (skip "#") (line))  L2 (line))
            (recur (L)
               ...
                  (let I (level L1)
                     (loop
                         ...
    
    二つの変数があります.L1 and L2 これは2行連続である.プログラムがループするL1 and L2 を呼び出し、level 関数.また、結果を知っている:サブアイテムを展開し、表示することができますクリック可能なアイテムがあります.それで、これは我々を思い出させます..ナビゲーションメニューの右側?
    コードは、テキストメニューをナビゲーションメニューに変換し、HTMLメニューに表示されます.

    検索3:HTMLとCSSを提供する
    あなたが以前にいくつかのウェブプログラミングをしたならば、あなたはブラウザーが通常HTMLとCSSファイルを予想するということを知っています.しかし、私たちはPicolisp ...
    これは、Picolispがソースコードからすべてを作成するからです.ブラウザはCSSファイルを取得すると考えますが、実際には関数だけです.
    # CSS
    (de tractatus.css ()
       (httpHead "text/css" 86400 "!tractatus.css")
       (ht:Out *Chunked
          (prinl "html {background-color: #eee}")
          (prinl "body {margin: auto; max-width: 96ex; border: 1px solid #bbb; font: 20px serif; background-color: #ffd; padding: 2em 5% 4em 5%}")
       ...
    
    最後に、すべての機能を使用してブラウザに表示されるHTMLテキストストリームにマップされますhttpEcho :
    ## Source
    (de tractatus.l ()
       (httpEcho `(pack (car (file)) (cadr (file))) "text/octet-stream" 3600 T) )
    

    4を見つける:サーバー
    ブラウザークライアントがあるならば、サーバーもなければなりません.また、スクリプトの最後に、8080番ポートを聞いてサーバを見つけることもできます.
    (server (or (format (sys "PORT")) 8080) "!tractatus")
    
    我々はまた、なぜ我々はスクリプトにアクセスすることができます知っているlocalhost:8080 .

    概要
    これにより、我々は非常にラフなレベルで賛否両論の第一印象を得た.我々はそれ以上のポストを念頭に置いておきます.
    また、私たちの最初のPicoliSPスクリプトを見てきました:あまりにも詳細に行くことなく、我々は、クライアント、サーバーとコンテンツのコードをわずか数行で作成することができますを参照してください.
    あなたが正確にどのように働くかについて理解することに興味があるならば"Getting Started" and "Web Application Basics" -チュートリアル.もちろん、上のドキュメントやチュートリアルをチェックアウトすることもできますPicoLisp -自分でサイト.

    ソース

  • https://picolisp.com/tractatus/!tractatus

  • https://en.wikipedia.org/wiki/Tractatus_Logico-Philosophicus