偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用自己的編程語(yǔ)言實(shí)現(xiàn)了一個(gè)網(wǎng)站(增強(qiáng)版)

開(kāi)發(fā) 前端
是否可以將 GScript 作為一個(gè)腳本化的 Go 語(yǔ)言,畢竟 Go 是編譯類型的,每次修改發(fā)布都需要經(jīng)過(guò)編譯才能運(yùn)行,但如果可以像腳本語(yǔ)言,比如 Python、Bash 修改后就可以直接運(yùn)行,這在寫(xiě)一些不是那么重的業(yè)務(wù)時(shí)非常有用。

前言

前段時(shí)間在《??用自己的編程語(yǔ)言實(shí)現(xiàn)了一個(gè)網(wǎng)站???》用介紹了用 GScript 寫(xiě)的一個(gè)簡(jiǎn)單“網(wǎng)站”,雖然是打上引號(hào)的;頁(yè)面長(zhǎng)這樣:

圖片

GScript-index.jpg

看起來(lái)確實(shí)非常的挫,其實(shí)之前一直也想做一個(gè) GScript 的在線 playground ,于是國(guó)慶期間學(xué)了一點(diǎn)  皮毛 Vue 加上老弟的幫忙(他是前端開(kāi)發(fā)),最終完成了下面這個(gè)網(wǎng)站:

https://gscript.crossoverjie.top/。

圖片

image.png

?打印源碼參考了:https://wa-lang.org/playground/

在這里可以在線運(yùn)行 GScript 代碼,借助于前端的代碼編輯器插件甚至還能有一些語(yǔ)法提示。

不過(guò)有些提示與 GScript 的語(yǔ)法不兼容,畢竟編輯器的提示是基于 JavaScript 的語(yǔ)法。

圖片

image.png

內(nèi)置了幾個(gè) demo,可以選擇運(yùn)行試試。

同時(shí)也支持查看 AST 樹(shù)和 symbol 符號(hào)表。

雖然顯示上還有待優(yōu)化。

圖片圖片

整個(gè)后端接口全都是用 GScript 原生代碼編寫(xiě)的,所以這也算是 GScript 的一個(gè)實(shí)際應(yīng)用案例。

代碼示例

圖片

實(shí)際代碼量也并不多,將前端輸入的代碼寫(xiě)入到一個(gè)臨時(shí)文件,再調(diào)用 OS 的 command api 在本地執(zhí)行 GScript 腳本命令,最后將標(biāo)準(zhǔn)輸出和錯(cuò)誤返回即可。

版本更新

為了能實(shí)現(xiàn)上述的需求,所以本次也更新了 GScript 的版本,新增了一些內(nèi)置 API。

圖片

主要是新增了 playground 需要的一些 OS api、文件寫(xiě)入、執(zhí)行系統(tǒng)命令、日期相關(guān)等。

同時(shí)將同一類的 API 合并到一個(gè) class 中,方便后期維護(hù)與調(diào)用。

編譯錯(cuò)誤

除此之外也新增了一些易用功能,比如現(xiàn)在提供了更友好的編譯錯(cuò)誤信息:

圖片

運(yùn)行時(shí)錯(cuò)誤

運(yùn)行時(shí)的異?,F(xiàn)在也有對(duì)應(yīng)提示:

圖片

只不過(guò)目前的顯示還不太友好,打印的堆棧還是 Go 的,之后會(huì)優(yōu)化為只顯示 GScript 的堆棧。

總結(jié)

有了在線的 playground 后使得對(duì) GScript 感興趣的門檻更低了一些,歡迎大家試用。

經(jīng)過(guò)最近幾個(gè)版本的迭代,GScript 也逐步完善了,基本完成了第一版本的需求。

后續(xù)會(huì)繼續(xù)完善第二階段的,比如:

  • namespace
  • 包管理
  • 并發(fā)

等內(nèi)容,每一項(xiàng)看起來(lái)都不是那么容易啊。

之前有不少人問(wèn)我 GScript 是拿來(lái)解決什么問(wèn)題的?當(dāng)時(shí)我確實(shí)沒(méi)仔細(xì)想過(guò);不過(guò)現(xiàn)在經(jīng)過(guò)幾個(gè)版本的開(kāi)發(fā)有了一點(diǎn)想法:

是否可以將 GScript 作為一個(gè)腳本化的 Go 語(yǔ)言,畢竟 Go 是編譯類型的,每次修改發(fā)布都需要經(jīng)過(guò)編譯才能運(yùn)行,但如果可以像腳本語(yǔ)言,比如 Python、Bash 修改后就可以直接運(yùn)行,這在寫(xiě)一些不是那么重的業(yè)務(wù)時(shí)非常有用。

同時(shí)借助于語(yǔ)法糖甚至可以優(yōu)化掉 Go 本身被人“吐槽”的地方,比如異常、append 函數(shù)、沒(méi)有運(yùn)算符重載、三目運(yùn)算符等。

部分吐槽 GScript 已經(jīng)支持。

同時(shí)因?yàn)榈靡嬗诒旧硪彩?Go 編寫(xiě)的,所以 Go 的一些優(yōu)點(diǎn)也能繼承過(guò)來(lái),比如輕量級(jí)的協(xié)程等。

Go 本身也有大量的第三方庫(kù),后續(xù)甚至也能直接使用這些現(xiàn)成的庫(kù)。

以上只是一些美好的暢想,就像老板畫(huà)的大餅一樣,具體在實(shí)現(xiàn)過(guò)程中可能又有不一樣的想法。

playground 地址:https://gscript.crossoverjie.top/。

源碼地址:https://github.com/crossoverjie/gscript。

責(zé)任編輯:姜華 來(lái)源: crossoverJie
相關(guān)推薦

2022-09-14 08:01:54

語(yǔ)法樹(shù)編譯器語(yǔ)法糖

2011-01-05 11:12:34

C++

2023-12-07 12:59:46

C語(yǔ)言循環(huán)隊(duì)列代碼

2021-01-27 10:01:46

MySQL數(shù)據(jù)庫(kù)SQLX

2022-09-07 08:05:32

GScript?編程語(yǔ)言

2023-09-03 19:43:46

htmxJavaScript網(wǎng)絡(luò)

2022-09-21 10:50:43

pickledillPython

2022-09-05 08:07:25

goreplay監(jiān)控工具

2018-06-22 10:30:56

C語(yǔ)言虛擬機(jī)編譯器

2013-05-15 09:14:01

2021-10-10 12:45:13

編程語(yǔ)言開(kāi)發(fā)

2020-07-24 09:40:04

C語(yǔ)言OOP代碼

2011-09-15 14:00:52

IOS應(yīng)用SpoolInstapaper

2022-05-07 13:52:22

Feign 增強(qiáng)包K8s

2011-05-26 17:55:08

2009-01-05 10:30:23

賽門鐵克Veritas數(shù)據(jù)中心

2010-08-25 10:42:20

GroovyGroovy++

2012-03-13 10:40:58

Google Go

2023-05-10 08:17:22

合并事件推送

2021-08-02 08:21:53

Python編程語(yǔ)言開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)