3 Star 6 Fork 0

calvinwilliams / zlang

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

每一位热爱编程的软件工程师都有一个终极梦想:创造一门自己的计算机语言。

zlang简介

zlang是一门解释性的、追求简洁但又高阶的、C/JAVA语系的、基于对象克隆的的编程语言。

一、解释性意味着:1.不用编译就能马上部署和运行;2.代码文件即配置文件;3.代码脱离于操作系统和具体环境,解释器就是虚拟机;4.实现运行期自描述更加方便。

二、创造zlang的一部分初衷是觉得手头的语言总存在这样那样的不方便之处,C在处理字符串时不够高阶简单,JAVAGet/Set太八股,这些通过扩展很难彻底解决,但如果拥有一门自己的语言,就能打造成自己想要的样子,岂不爽哉。

三、程序员在学习一门新的编程语言时最烦的就是新语言的语法完全特立独行、奇形怪状,自己得重新培养新的语感,其实C/JAVA的语法已经设计的相当完美了,新语言根本没必要设计一套新的语法,新语言的重点应该放在如何解决老语言的问题上,zlang语法继承自C/JAVA能让最广大的同学们快速学习掌握,把有限的时间精力放在差异化部分。欢迎来到zlang的世界里耍耍!

四、UNIX/Linux的伟大之一是所有进程都是从根进程克隆出来的,这和Windows笨重的从头创建一个新进程形成鲜明的对比,克隆体现出一种简单而又不失强大的UNIX哲学,zlang尝试从克隆根对象来创造整个应用程序实践一门语言哲学,希望这是正确的。

五、性能方面,zlang只做了初步的优化就拥有不俗的性能,在我的老爷机上短连接、单并发请求一个WEB页面(带模板实例化)耗时在1ms左右(TPS 1000),10个并发请求简单WEB页面(带模板实例化)可以达到上万TPS。

六、除此之外,zlang还拥有如下特性:

  1. 同时支持面向过程和面向对象,语言设计者根本不用考虑面向过程和面向对象哪个好,都支持好了,看用户怎么喜欢怎么用。

  2. 对象动态增删方法和属性,既然是解释语言,就要把动态这个优势发挥好,语言只管提供这种能力,天知道会被神一般的用户玩出什么花来,比如我对实体类就很感冒。

  3. 提供完整、必要的集合对象:数组、链表、映射、队列、栈,管理数据基本无忧。

  4. 人必云GetSet能做到封装性、提供扩展能力,我觉得封装性不一定非要用方法,对象中的属性为什么就不能作为接口暴露出来,不要人云己云,至于扩展性,那是JAVA语言的设计问题了,zlang提供了属性拦截器解决了扩展性问题,没必要为将来极小概率的扩展性导致每个属性都必要繁琐的写法,大胆的直接赋值好了,直接的、简单的就是最好的,将来碰到需要扩展性时写一个属性拦截器就解决了,真没必要为了将来1%的扩展性导致99%都不得不写法繁琐。比如以下表达,你更喜欢哪一种?

    赋值

    JAVA

    tortoise.SetName( msg.GetName() );

    zlang

    falcon.name = msg.name ;

    字符串比较

    JAVA

    if( name.equals(name2) )

    zlang

    if( name == name2 )
  5. zlang的迭代器支持前后移动。

  6. 支持中文编程:关键字、变量名都可以使用中文。还是那句话,我提供功能,喜欢的人就用,不喜欢的人可以不碰。

  7. zlang是我几乎完全自研的编程语言,连词法分析器都手工编写,以下是仅有的依赖(默认zlang源代码中已包含):

    • Linux内核:链表和红黑树函数库listrbtree
    • 我的开源项目:Linux红黑树库的模板库rbtree_tpl
    • 我的开源项目:追加模式数据页函数库aodatapage
    • 我的开源项目:字节序函数库byteorder
    • 我的开源项目:通用数据库访问层cdbc
    • 各个数据库客户端API库:libmysqlclient.solibpq.solibsqlite3.so - (链接时外部依赖)
    • 我的开源项目:GUS_UUID编码库libgus
    • 我的开源项目:JSON解析库fasterjson
    • 我的开源项目:XML解析库fasterxml
    • 我的开源项目:HTTP解析库(支持流式)fasterhttp
    • 我的开源项目:通用模板库fastertpl
    • 我的开源项目:WEB服务器hetao
    • 我的开源项目:日志库iLOG3
    • Redis客户端库:hiredis - (链接时外部依赖)

zlang教程传送门

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

完全自研、国产编程语言——Z语言 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/calvinwilliams/zlang.git
git@gitee.com:calvinwilliams/zlang.git
calvinwilliams
zlang
zlang
release

搜索帮助