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。

ShoneSharp语言(S#)的设计和使用介绍系列(1)— 开篇的更多相关文章

  1. ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述

    ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  2. ShoneSharp语言(S#)的设计和使用介绍系列(3)— 修炼工具

    ShoneSharp语言(S#)的设计和使用介绍 系列(3)- 修炼工具 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  3. ShoneSharp语言(S#)的设计和使用介绍系列(2)— 掀开盖头

    ShoneSharp语言(S#)的设计和使用介绍 系列(2)- 掀开盖头 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  4. ShoneSharp语言(S#)的设计和使用介绍系列(11)—“类”披炫服靓妆化成“表”

    ShoneSharp语言(S#)的设计和使用介绍 系列(11)—“类”披炫服靓妆化成“表” 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sh ...

  5. ShoneSharp语言(S#)的设计和使用介绍系列(10)— 富家子弟“语句“不炫富

    ShoneSharp语言(S#)的设计和使用介绍 系列(10)— 富家子弟“语句“不炫富 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sho ...

  6. ShoneSharp语言(S#)的设计和使用介绍系列(9)— 一等公民“函数“爱炫巧

    ShoneSharp语言(S#)的设计和使用介绍 系列(9)— 一等公民“函数“爱炫巧 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Shon ...

  7. ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风

    ShoneSharp语言(S#)的设计和使用介绍 系列(8)— 最炫“公式”风 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSha ...

  8. ShoneSharp语言(S#)的设计和使用介绍系列(7)— 布尔Bool及对象Object

    ShoneSharp语言(S#)的设计和使用介绍 系列(7)— 布尔Bool及对象Object 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ ...

  9. ShoneSharp语言(S#)的设计和使用介绍系列(6)— 字符串String

    ShoneSharp语言(S#)的设计和使用介绍 系列(6)— 字符串String 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneS ...

随机推荐

  1. 打包zip下载

    //首先引入的文件为org.apache的切记不是jdk的import org.apache.tools.zip.ZipOutputStream;import org.apache.tools.zip ...

  2. C++函数返回值(02)

    对象作为返回值 编译器会将函数栈中的返回值数据拷贝到返回栈中 指针作为返回值 函数的返回值可以是存储某种类型数据的内存地址,称这种函数为指针函数.它们的一般定义形式如下:  类型标识符 *函数名(参数 ...

  3. 火狐浏览器打开html文件,中文乱码

    当html文件为: 解决方法: 将   <meta http-equiv="Content-Type" content="text/html; charset=UT ...

  4. myeclipse+tomcat中出现org.apache.juli.logging.LogFactory这样的错误[转]

      将项目部署好后,启动tomcat后报错,java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory 报这个错说明你用的是t ...

  5. 微信小程序之bindtap事件绑定传参

    wxml代码: <view class='fen'> <text bindtap='prev' data-page="{{pageDang}}">上一页&l ...

  6. C++头文件的处理

    C++的头文件比自己想的要复杂,不是简单地添加自己需要的头文件,这当中有一定的规律.简单归于以下几点: 1.非stadfx.h的头文件必须要有#pragma once的编译提示符,具体原因也不明白. ...

  7. Power Strings(KMP)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 45008   Accepted: 18794 D ...

  8. CQRS微服务架构模式

    ​什么是微服务? 这是维基百科里面的定义:“微服务是面向服务架构(SOA)架构风格的一种变体,它将应用程序构建为一系列松散耦合的服务.在微服务体系结构中,服务应该是细粒度的,协议应该是轻量级的.将应用 ...

  9. html5页面实现点击复制功能

    在实际工作中,有时候会遇到这样的需求,页面上有一个链接,不需要选中链接内容,只需要点击复制按钮,就可以把链接内容复制到剪切板.这时候可以使用clipboard插件来实现.以下是一个简单的demo. 首 ...

  10. java 操作格子问题(线段树)

    很久之前做过线段树的问题(操作格子),时间长了之后再次接触到,发现当初理解的不是很透彻,然后代码冗长,再遇到的时候发现自己甚至不能独立地完成这个问题. 所以算法这个东西啊, 第一,是要经常练习(我个人 ...