MyLang 演算法交換語言
Spp 語言有 Scheme 的簡潔,還有 Perl6 的強大能力,不但能使用物件導向的方式程式設計,還能用面向訊息的方式程式設計。而且是一門完全開源的語言。
Spp 語言能夠在多種平臺上快速開發,因為能夠快速轉換成許多語言,以適應不同的需求。
太多的程式語言讓程式設計師焦頭爛額,而一種簡單的,可以轉換成多種語言的開發語言無疑成為語言中的紙幣,可以在更大範圍內流通。
不同的語言可以用 Spp 語言來交換演算法,這樣就讓語言的通用性更強。
Spp 語言是面向程式設計師的語言,而後臺可能是任意語言。程式設計師只需要學會一種語言,就能在多種平臺上開發。
如果需要在特殊的平臺上開發,保持語言一致的前提下,可以增加特殊的擴充套件庫。
註釋, 以 # 開始
# this is comment
多行註釋:
=pod
this is comment
this also is comment
=end
包和類
包和類本質上都是一個名稱空間,包中可以定義新的函式和變數。類定義的函式,預設第一個函式是一個在這個名稱空間中定義的引用。
(my $var (new class-name))
如果是包,有必要定義一個連線到這個包名稱空間的變數嗎?
(my $var (new package-name))
在語言中,需要經常按照型別呼叫相應的函式。多型的內部定義函式,也是為了解決這個問題:
(first 'str')
(first [1,2,3])
而按照型別定義的方法呼叫:
('str'.first)
([1,2,3].first)
這似乎有些奇怪,但確實簡潔多了。
還有一種呼叫方式:
('str' -> first)
([1,2,3] -> first)
這就是基於訊息的程式碼書寫方式。Spp 是否可以支援呢?
用 newlisp 書寫的直譯器,所有的函式引數都是傳值的,這個限制只能讓 Spp 止步於指令碼行列。要想讓語言更加具有未來的味道,就用 Erlang 來書寫直譯器。增加執行緒等相關特性。
資料型別:Spp 有多種內建資料型別
true => 邏輯真
false => 邏輯假
nil => 空值
int => 數字 (可擴充套件成 64 位數字) 12 -12
str => 字串 "string" 'string' :string
list => 列表,也是表示式 (say "hello world")
array => 陣列 [true, nil, false, 3, "str"] 可巢狀
hash => 雜湊 {:key => 1, :value => 2 }
在併發語言中,佇列的本質上就是陣列。
在 newlisp 實現中,如何實現引用和值引數的傳遞呢? 貌似 PHP 有明確的區分。
(def (foo &$x @y) ((first $x) + @y))
字面量有了,該如何實現呢?用 uuid 生成的不重複名字做 functor 來對映這個引數嗎?
如果用 PHP 來實現呢?能否編譯成 exe 呢?
還是用 C, C++, Golang, 等靜態語言來寫真正的直譯器比較好。
Spp 擅長的是文字處理,那麼就主要在文字處理,資料結構處理方面多準備些函式,讓 Spp 成為一種方便的對語言處理的語言。
可以對語言進行分析,做語法分析語言。
可以對資料結構進行轉換,進行語言轉換。
條件流程語句:
(if (a > b) (say "a > b") else (say "a <= b"))
哨兵迴圈語句:
(while (condition) (do sth))
條件判斷語句:
(case @guide
(when (condition-1) (expression-1))
(when (condition-2) (expression-2))
(default (default-expr)))
函式定義:
(def func-name (@arg-1 @arg-2)
(exprs-1)
(return true))
變數宣告:
(my $var 1)
(our @var 2)
名稱空間:
(context Spp)
(exprssion)
(end Spp)
引用不同名稱空間的函式或變數:
(package.func x y)
相關文章
- Perceptron演算法—C語言演算法C語言
- 語言演算法之:階乘演算法
- 各個語言演算法庫演算法
- 排序演算法-C語言實現排序演算法C語言
- C語言實現A*演算法薦C語言演算法
- aan 演算法 c 語言示例 (轉)演算法
- C語言交換兩個變數的值的5種基本方法C語言變數
- C語言演算法之猴子吃桃C語言演算法
- 快速排序演算法(C語言實現)排序演算法C語言
- LLM大語言模型演算法特訓,帶你轉型AI大語言模型演算法工程師模型演算法AI工程師
- 演算法導論C語言實現: 演算法基礎演算法C語言
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 4、BFS演算法套路框架——Go語言版演算法框架Go
- PID演算法的C語言實現演算法C語言
- SMOTE與SMOGN演算法R語言程式碼演算法R語言
- Java 語言是強型別語言語言(轉)Java型別
- 把程式語言看做語言
- 最短路徑——floyd演算法程式碼(c語言)演算法C語言
- 共識演算法PoS及Go語言實現演算法Go
- C語言實現九大排序演算法C語言排序演算法
- 試題 演算法提高 質數2(C語言)演算法C語言
- 三言兩語講排序演算法——插入排序排序演算法
- C語言演算法之17:細胞生命遊戲C語言演算法遊戲
- C 語言簡單演算法回顧總結演算法
- 資料分析與挖掘 - R語言:KNN演算法R語言KNN演算法
- ORACLE 數字演算法的C語言實現Oracle演算法C語言
- 百度大語言模型演算法專家模型演算法
- 圖解 ECDHE 金鑰交換演算法圖解演算法
- 最短路徑——dijkstra演算法程式碼(c語言)演算法C語言
- 7、滑動視窗套路演算法框架——Go語言版演算法框架Go
- 經典排序演算法的 C語言 | Java 實現排序演算法C語言Java
- 位反轉的最佳演算法(C語言實現)演算法C語言
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- java語言屬於哪種語言Java
- Go語言————1、初識GO語言Go
- C語言 C語言野指標C語言指標
- K語言,q語言的前輩
- C語言---“C語言 誰與爭鋒?”C語言