热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开源母语编程说明(持续更新)

2019独角兽企业重金招聘Python工程师标准开源母语编程说明ProgrammingwithMotherLanguage(持续更新)Progra



2019独角兽企业重金招聘Python工程师标准>>> hot3.png



开源母语编程说明 Programming with Mother Language(持续更新)


Programming with Mother Language = PwML


今天终于下定决心创建了一个开源项目 [PwML:开源母语编程] https://github.com/FreeBlues/PwML


前一阵子看代码看得双眼干涩、头脑发烫,尤其是英文自定义函数名,太短了不清楚意思,想清楚表达意思就要忍受长长的名字,而且还不只一个,所有的自定义函数为了清楚表达含义,都很长、很长,看得人只想吐,于是萌发了用中文做函数名的念头,再进一步,用中文、标点符号、数字来写代码。


目前国内貌似有两种中文程序语言,一个是易语言,一个就是中文化的PYTHON,都比较受限,在了解了 Common Lisp 的一些特性后,忽然发现 LISP 是最适合做母语开发的基础平台,强大到逆天的宏能力,具备自定义一种新语言的能力。
[2012-11-16 更新]


经过一番折腾,终于可以在EMACS上使用中文编写LISP程序了,主要是借助了LISP的强大的宏,把《实用COMMON LISP编程》中的一个CD数据库的例子转化为中文,中文代码如下:


可以正常编译、执行,并读写文件。


当前主要问题是语法高亮不太好,具体说就是所有的自定义函数都无法显示为指定颜色,只能显示为默认颜色,看起来不太醒目,所以下一步计划是实现自定义的高亮显示,所有自定义函数都可以显示为不同的(相同也可以)指定颜色,便于阅读区分。
另外一个问题是那些英文参数,是否需要全部转换为中文?正在权衡,暂时选择不转。


[2012-12-18 更新]




LispBox用户增加下面这行代码到 lispbox.el 中


(font-lock-add-keywords 'lisp-mode '("[(]" "[)]"))



就可以实现把括号按照关键字的格式进行着色,看起来是否好多了?



[2013-01-16 更新]


目前仍然在考虑,开源母语编程中对母语的使用应该达到何种程度?也就是说程序的哪些部分使用母语?是全部使用还是局部使用?如果是局部使用,那么哪些用哪些不用?LISP原来的关键字用不用?函数名是一定要用的,临时变量是否要用?


似乎一切选择都应以是否易于阅读、是否易于理解为标准


[2013-01-16 更新]


试试这个新 REPL 界面:




[2013-01-18 更新]


前几天花了点时间浏览了 HyperSpec ,发现一个惊人的事实,Common Lisp 的标准里有978个扩展操作符,也就是说 CL 库有978个标准函数,如果全部翻译成对应的中文名称,估计工作量比较大。


昨天了解了下 GitHub 的使用,顺便更新下知识结构,发现 MarkDown 真是个好东东,以前最头疼就是写好 word 文档后的格式调整,稍微不慎就会在排版过程中把以前的版面搞得面目全非,而且 Word 的排版命令又是极其的非人性化,痛苦的过去。。。


现在有了 MarkDown,写起文档来感觉清爽许多,当然 MarkDown 也不是最好的,但是跟 word 相比总是一个质的飞跃,就像当初第一次接触 Google 的 SketchUp,看着视频教程里几分钟就把一个复杂的3D模型建好了,整个操作行云流水,没有一丝停滞,当时的感觉简直是惊艳,什么 3DS,什么 Auto CAD,简直都没法比了。




[2013-05-17 更新]


最近一直在考虑是否把关键字和标准函数全部建立对应的中文别名,比如:


1、为 if 建立中文别名为 “如果”;


2、为 defun 建立中文别名为 “定义函数”;


3、为 defparameter 建立中文别名为 “定义参数”


4、其他类似


这样做的好处是可以把绝大多数代码完全中文化,每个感兴趣的人都可以轻松阅读这些代码,了解其中的算法,坏处是会对使用者造成新的学习成本--毕竟需要重新学习中文化了的关键字,反复权衡之后还是觉得现在这么做有些得不偿失, 暂时比较恰当的做法是自定义变量、函数和宏全部使用中文名称,语言固有的关键字和标准函数仍然使用原来的英文,个别名称过长的函数或宏可以建立简短的对应中文别名,如多值和列表解构的相关函数:


1、destructuring-bind  解构


2、multiple-value-call   多值调用


3、multiple-value-bind   多值接收


似乎可以遵循这么一条简单原则:


英文符号名称超过 10 个字母,或者超过3个单词,就建议使用简短的中文别名


这样可以把一些过长的英文符号大大缩短,暂时就按照这个思路来试验




[2013-06-10 更新]


原来计划把支持母语编程的相关功能函数写成一个 lisp 源文件, 然后每次手动加载, 但是这样就要求使用者必须有一定的 Lisp 开发经验, 比如要了解 Lisp 的加载机制, 要懂得如何使用 load 函数, 等等, 这样的发布形式对于一些初学者来说还是会带来一些不必要的困扰.


前几天忽然想到一个更简单有效的办法: 把加载好中文支持的 image 文件转储出来, 发布时直接用这个 image 文件替代原来的 image , 这样就可以保证使用者一启动 Lisp 环境就自动进入中文编程的支持中, 可以顺利地没有任何障碍地使用中文编程.


再把这种方式跟 LispBox 结合起来, 就可以为初学者提供一键式的中文编程环境. 不需要任何手动设置!


另外需要考虑的是帮助函数, 帮助文档和基本教程以及中文例程的规划.













转载于:https://my.oschina.net/freeblues/blog/89728



推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 用户登录 ... [详细]
  • RMarkdown是一种用于在R中生成可重复生成的报告的开源工具。它可以帮助您将所有代码,结果和编写都放在一个地方,并以有吸引力且易于消化的方式格式化所 ... [详细]
  • ubuntu软件商店加载不出来_这款年度最爱的效率软件,其实我不太舍得分享出来...
    文章来源:工具狂人今天的这篇文章,想给大家介绍一个我近半年来一直在用的软件——滴答清单,相信不少朋友可能也用过或听过这个软件。滴答清单&# ... [详细]
author-avatar
phpfinder
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有