ShoneSharp語言(S#)的設計和使用介紹系列(1)— 開篇

来源:http://www.cnblogs.com/ShoneSharp/archive/2017/12/01/ShoneSharp-1.html
-Advertisement-
Play Games

本人多年來一直在獨自設計並開發一種“面向表達”的編程語言——S#,以求達到數據即程式、程式即數據的最高境界,可以包容大多數慣用的語言特性。直至今天初步成形,特此在博客園上開篇介紹,通過分享和交流進一步發揚光大。 ...


ShoneSharp語言(S#)的設計和使用介紹

系列(1)— 開篇

作者:Shone

聲明:原創文章歡迎轉載,但請註明出處,https://www.cnblogs.com/ShoneSharp。

一、開宗立派

編程語言已經百花齊放,為什麼還要開發另一個語言?難道不是重覆造輪子嗎?

不管是自然語言還是編程語言,其最核心的功能都是一種表達。在常用的編程語言中,主要有以下四種表達方式:

1. 面向函數:函數是一等公民,經典如LISP、Python、F#等語言;

2. 面向過程:數據+演算法=程式,經典如BASIC、Pascal、C等語言;

3. 面向對象:一切皆對象,經典如C++、Java、C#等語言;

4. 面向數據:數據層疊嵌套,經典如XML、YAML、JSON等語言;

當然上述語言以及其他未提到的語言或多或少都支持其中一到多種表達方式,每種表達方式都有一些約定俗成的語言特性,這些特性有些可以共通相容,有些則會相互排斥。可見要設計一種語言包含所有特性其實很難,這也是為什麼一談到語言,容易引起程式語言民族主義式的爭論。

本人才疏學淺、無知無畏,多年來一直在嘗試設計並開發這樣一種“面向表達”的編程語言,可以包容大多數慣用的語言特性。直至今天方纔略有所成,特此分享以求進一步完善。

本人為新創立的編程語言取名為ShoneSharp(簡稱為S#),其中Shone兼有表達和炫酷之意,Sharp則表明設計出處,主要參考CSharp、FSharp(即C#、F#)。從今而後S#自成一派,號稱“炫語派”,創立祖師為Shone,歡迎各位使用和支持S#。

炫語派的立派之本是:

  1. S#語言心法:一切皆表達。數據即程式,程式即數據,函數、過程和對象本質都是數據的不同表達。正所謂空即色,色即空,大象無形,大音希聲,萬物歸一。
  2. S#語言內功:一切都是樹。與堆棧式語言不同,語法解析樹就是數據結構樹,解析時就是運行時,獨木成林,一樹一世界。
  3. S#語言招式:化繁為簡。所想即所得,所見即所得,語言特性儘量簡化,與已有慣用表達保持一致,無招勝有招。

開發一門語言是很困難的事情,涉及到語言設計、開發以及應用的方方面面,要介紹的內容也很多。本篇作為系列的開篇,後面將按照下麵所列的大綱順序逐步進行寫作併發布,敬請期待與交流。

二、S#語言編輯器

1) 軟體下載

2) 軟體界面

3) 程式輸入

4) 語法解析

5) 查看結果

6) 高級功能

三、S#語言簡介

3.1. 基本類型

1) 數值

2) 字元串

3) 布爾值

4) 幾何類型

5) 擴展類型

3.2. 複合類型

1) 數組

2) 列表

3) 數據表

4) 自定義函數

5) 自定義類

3.3. 基本語法

1) 常量

2) 變數

3) 算符

5) 函數

6) 屬性

7) 方法

8) 公式

9) 語句

3.4. 高級語法

1) 變數作用域

2) 順序控制

3) 條件控制

4) 迴圈控制

5) 函數定義

6) 函數調用

7) 類定義

8) 類實例化

9) JSON式表達

8) XML式表達

四、S#語言應用

1) 數據配置

2) 文件解析

3) 二維參數化

4) 三維參數化

5) BIM信息模型

6) 軟體界面

五、S#語言展望

1) 軟體跨平臺

2) 開源計劃

3) 建立生態

 

聲明:原創文章歡迎轉載,但請註明出處,https://www.cnblogs.com/ShoneSharp。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 瞭解一個語言最好的方式就是在編輯器中按照語法規則輸入代碼,然後運行並查看結果是否符合預期。本博文內容非常重要,承上啟下,不但公開了S#語言的所有武功招式——語法規則,並提供了練功的基礎工具——編輯器,統統都是乾貨呀。 ...
  • 在C#的字元串,其中有許多空格,現要求是把多餘的空格去除保留一個。原理是使用Split()方法進行分割,分割有一個選項是RemoveEmptyEntries,然後再把分割後的字元串Join起來。 string string1 = "AAaaA Oopps 32 211 44.8 69 15.9 C# ...
  • 最近學習數據驅動UI,瞭解到INotifyPropertyChanged這個介面的用法,看了很多網上的文章,自己作了一個總結。 INotifyPropertyChanged這個介面其實非常簡單,只有一個PropertyChanged事件,如果類繼承了這個介面,就必須實現介面。用VS的提示,就是補充了 ...
  • RoutData.values[Key] 只能獲取路由定義中的數據,url參數的數據不包含在裡面 https://i.cnblogs.com/EditPosts.aspx?opt=1 路由:功能變數名稱到?之間 -->EditPosts.aspx URL參數:?之後 -->opt=1 修改路由規則後 ...
  • 鏈接的地址,可以根據路由規則動態生成,不用寫死,文檔結構有變化時,依然可以找到正確的路徑 1.url.Action(只生成URL) 有很多重載方法,可以根據需要選擇,生成URL時,會根據路由規則生成,不過調用時也是根據路由規則定址,所以OK 2.Html.ActionLink(生成整個Link標簽) ...
  • 你有一個函數,其中完全取決於參數值而採取不同行為。針對該參數的每個可能值,建立一個獨立的函數。 ...
  • Nginx集群可以實現基於Http Basic身份驗證,通過輸入用戶、密碼,經過SSL協議的HTTPS,從而實現有效的身份驗證並訪問相應的WebApi。當然,訪問的方式不僅僅基於Http Basic一種,還可以通過令牌token的方式進行訪問,又或者基於redis實現單點登錄的訪問,本文主要講述的是... ...
  • 先看下麵的這組字元,如果輸出來,它是無法靠右對齊: string[] s1 = { "300", "5", "54210", "6300", "88" }; foreach (string s in s1) { string s2 = s; Console.WriteLine(s2); } C#的處 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...