木兰编程语言重现无参数函数、字典基本功能,语法设计的取舍有感
当函数没有形参时,定义和调用时都可以省去括号,比如:
func 问好 { print('吃了么') } 问好
感觉这个设计挺合理,但不知这种情况是否会多见。
本周还实现了字典类型的基本功能,与 Python 的基本一致:
电话 = { : } 电话['小明'] = 1357 电话 = {'小明': 1234, '小红': 4321}
值得一提的是,初始化空字典时 Python 的方式是d = {}
,而木兰的的空字典是这样表示:{:}
。
因为{}
在木兰中是内容为空的“代码块”,比如:
func 空函数 {}
也许这一设计是为了避免语法分析的麻烦,
因此,用{}
代替了 Python 的缩进这一语法改动,就影响了空字典的初始化方法。前者对代码视觉效果的影响比后者更大,使用频度也更多。可见,编程语言的特性和语法设计的取舍值得通盘考虑,因为有可能会牵一发动全身,何取何舍应该由语言的目标用户和应用领域等等决定。
于是想到,编程语言设计参考自然语言语法和用词,不仅能增进代码可读性,各语法元素可能更融洽和有持久生命力,因为自然语言本身经过了千百年的演化和考验。
代码统计
下面是几个主要部分的代码行数统计,格式为:上周->本周。
- 测试
- 木兰测试用例:1068 -> 1075
运行测试.py
,检验所有木兰测试代码片段:144 -> 145- 未变
test语法树.py
,确保生成的语法树与原始版本一致:63
- 实现:1898 -> 1941
分析器/语法分析器.py
:792 -> 824分析器/语法树.py
,功用/调试辅助.py
,包括对 ast 库的中文封装:251 -> 260- 未变
分析器/词法分析器.py
:184演示高亮.py
:98环境.py
,加载木兰模块:87中.py
,主程序:35
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
分布式图数据库 Nebula Graph v1.0.1 发布,支持多种压缩算法
Nebula Graph 发布 1.0.1 版。相比 1.0.0 版本,该版本针对系统稳定性、性能上做了很多优化和改进。 New Features 路径查询FIND PATH中 vid 支持uuid()https://github.com/vesoft-inc/nebula/pull/2209 增加了 disable rocksdb block cache 的功能,通过设置storaged.conf的rocksdb_block_cache为任意非正数来 disable block cache.https://github.com/vesoft-inc/nebula/pull/2177 避免了多线程对 meta client 的localCacheLock_的lock contention 等待事件,提高了性能https://github.com/vesoft-inc/nebula/pull/2165 底层存储支持多种压缩算法,支持对 rocksdb 每个level 指定压缩策略https://github.com/vesoft-inc/nebula/pull/2179 bug-fix ...
- 下一篇
学习Python两年,我的人生轨迹发生了怎样的变化?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 学习Python的经历教会了我很多东西,可以说,它深深地改变了我的人生轨迹。这段学习经历告诉我:关注自己能掌握的东西,通过开源站在巨人的肩膀上,一个人可以通过小预算,或是零预算的项目产生很多价值,大项目也会在不久之后道路。 我既不是成功学的教练,也不是专业的开发人员,我在自己的环境中取得成功的方法可能对你来说并不合适。但是,我曾帮助许多同事开始他们的编码之旅,并且这样的模式都获得了成功,希望这个模式也可以帮助各位读者入门。 梦想 我总是会被科技吸引,早年记忆之一就是摆弄一台旧收音机,拆开、检查电路、再重新组装。十几岁的时候,我迷上了游戏机和电脑。我一直热衷于学习编程,但是大多数尝试都限于重复教程。 上大学时,我写了许多小应用程序,但它从来没有真正成为一种习惯。大学一毕业我就被聘为金融经济估值分析师。但我的梦想是写代码,成为一名开发人员,用技术解决问题。我希望把这个想法告诉经理和同事,得到正式的授权后继续代码之旅。 这听起来像是妄想,如果无法证明我能够成功,人们怎么会相信我呢?更何况写代码...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境