热烈庆祝国产编程语言R++1.8研发成功
R++是专为懒人设计的国产编程语言。支持无操作系统裸奔、编译成机器码、android、cocos2dx绑定、中文编程、闭包、惰性求值、JSON、Lisp的S表达式、内联汇编、伪代码、模板、宏、多重继承、元编程、反射、自省、指针、引用。
为什么须要它?
1.眼下DIY操作系统一般使用gcc+nasm,R++是编译型语言,抽象能力强过C,可直接内联汇编。不须要面对讨厌的AT&T汇编,绝对是您DIY操作系统的利器(支持GRUB从U盘或硬盘引导)。
2.R++没有GC,所以理论执行速度和C++一样。能够作为lua的替代者候选。
3.R++既能够编译执行又能够解释执行,既能够用静态类型又能够用动态类型。
语法层支持C++、JS、Lisp、python、asm混合编程,一种语言,五种语法。
4.R++自由度极高。您能够任意DIY运算符的优先级,添加新运算符,添加改动“内置类型”,甚至于int、double这些基础类型都是由用户自己定义的,一切由您做主。(假设您想制作属于自己的编程语言并进入有用阶段,R++将是您的最佳參考。没有之中的一个)
5.它的语法相当简洁,支持N种省略语法,最大程度降低您的击键次数。
(R++支持类似《算法导论》的伪代码)
6.R++支持多种花括号风格,不管是python的无花括号风格还是K&D风格。或者是花括号单独占一行,随你喜欢。
7.它是C++的山寨版,假设您习惯了C++的语法。又须要一种类似C++的脚本语言,似乎选择R++是一个明智的决定。
8.既然它是C++的山寨版,所以R++差点儿不须要学习成本,非常多C++和C的代码经少量改动都可以移植过来。甚至可以写出同一时候兼容R++和C++的代码。
9.又由于它是C++的山寨版,R++全部数据类型和C++二进制兼容,不管是静态链接还是动态链接,想如何就如何。
10.R++源码文件能够使用随意后缀,在R++的世界里。一切都是代码。
11.支持中文编程是必须的。
R++2.0正在紧急研发中,敬请期待:
以下是用160行R++代码实现的flappy bird:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm91bmRzaGVlcA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
下载地址:
http://pan.baidu.com/s/1i31IG77
用R++写窗体程序十分简单:
import rcc.h main
{
cc.jump_scene(lambda(void* parent){
void* a=cc.label_create("hello")
cc.set_pos(a,240,400)
cc.add_child(parent,a)
cc.set_color(a,255,255,255)
})
}
仅用1行代码就实现了一个带三角函数、乘方的全然功能四则混合计算器:
main{void[meta('(){putsl '+getsl+'}')]}
类似《算法导论》的伪代码:
/*
能够把R++当做伪代码写,
以下就是《算法导论》开篇的插入排序代码
(因为R++数组从下标0開始而算法导论从1開始,故略微改动了下)
*/ define ← = insertion_sort(rstr& a)
{
for j ← 1 to a.count-1
key ← a[j]
i ← j-1
while i>=0 && a.get(i)>key
a[i+1] ← a[i]
i ← i-1
a[i+1] ← key
}
仅用60行代码就实现了一个httpserver:
/*
简单的httpserver,參考《深入理解计算机系统》
执行后在浏览器输入http://127.0.0.1/example/1.h
*/ import rsock.h
import rfile.h
import rdir.h main
{
rsock svr
rsock client
svr.listen(80)
for svr.accept(client)
proc(client,client.recv_s(65536))
client.close
} class http_item
{
rstr name
rstr cont
} proc(rsock& client,rstr& s)
{
s.print
vstr=s.split('\r\n')
rbuf<http_item> vitem
for i in vstr
pos=vstr[i].find(' ')
http_item item
item.name=vstr[i].sub(0,pos)
item.cont=vstr[i].sub(pos+1)
vitem+=item
proc(client,vitem)
} proc(rsock& client,rbuf<http_item>& v)
{
if v.empty||v.get(0).name!='GET'
return
path=v[0].cont.sub(0,v[0].cont.find(' '))
path='.'+path
rfile file(path)
s='HTTP/1.1 200 OK\r\n'
s+='Server: R++ Web Server\r\n'
s+='Content-Length: '+file.size+'\r\n'
s+='Content-type: '+get_type(path)+'\r\n\r\n'
s+=file.read_all
client.send_s(s)
} rstr get_type(rstr name)
{
name=rdir.get_suffix(rdir.get_name(name))
if name=='htm'||name=='html'
return 'text/html'
elif name=='gif'
return 'image/gif'
elif name=='jpg'
return 'image/jpg'
else
return 'text/plain'
}
热烈庆祝国产编程语言R++1.8研发成功的更多相关文章
- 国产编程语言R++ V1.5发布
R++ v1.5内核改动较大,下面是一些主要变化: 1.使用PJIT(Pseudocode Just-In-Time),编译速度大幅提高,但运行效率远远不如C++,不过R++将在下一版本支持RJIT( ...
- 热烈庆祝华清远见成功自主研发Farsight TV 智能机顶盒
近日,华清远见研发中心再传喜讯:Farsight TV 智能机顶盒研发成功并投入教学!这是华清远见研发中心继开源平板电脑.智能医疗终端.智能家居终端后独立成功研发的又一智能硬件!至此,开创了华清远见自 ...
- Atitit 热烈庆祝读经器项目圆满完成
Atitit 热烈庆祝读经器项目圆满完成 1.1. 读经器项目简单介绍 1 1.2. 一万小时定律和十年一个专家定律 1 1.3. 获得加持前景 1 1.4. 核心源码 1 1.5. 项目git 2 ...
- 热烈庆祝UE4完全免费Free---GitHub的关联方式
热烈庆祝UE4完全免费Free---GitHub的关联方式 时间:2015-03-03 18:38:52 阅读:3007 评论:0 收藏:0 [点我收藏+] 标 ...
- 热烈庆祝自已厉精13年开发的 DB查询分析器 7.01(最新版本) 在中关村在线本月获得近6000次的下载量
中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本 DB 查询分析器.英文版本DB Query Analyzer.它 ...
- 木兰国产编程语言 Mulan--附带下载地址
我国自主研发的 编程语言:木兰. 中国新闻网 : http://www.cas.cn/cm/202001/t20200116_4731821.shtml 说明介绍 百度一番后,发现没有下载地址,没有官 ...
- 热烈庆祝华清远见2014嵌入式系统(Linux&Android)开发就业培训课程全面升级
近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新 ...
- 热烈庆祝杨学明老师为苏宁、中兴、烽火、CNNIC、创维、金立、中航信等知名企业提供培训和咨询服务!
在2015年三季度,研发资深顾问.资深讲师杨学明先生为国内多家名企提供了培训和咨询服务!由于杨学明老师在软件及互联网方面的管理经验极为丰富,被多家公司选为首席研发讲师!并聘为常年顾问!
- 2017.9.16~17,热烈庆祝共创力罗老师《敏捷MINI体验式实战培训》在某大型企业成功举办!
2017.9.16~17日,深圳市共创力企业管理咨询有限公司为某上市企业提供了为期两天的内训服务.该次内训的主题为<敏捷MINI体验式实践培训>,为期两天.此次培训由共创力资深讲师Geor ...
随机推荐
- es6数值扩展
1. 二进制和八进制表示法 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示. ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0 ...
- PHP开发心得二
如何解决错误:PHP SOAP Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML documen ...
- HDU_2476_String painter_(区间dp)
String painter Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- CAD使用GetXData读数据(网页版)
主要用到函数说明: MxDrawEntity::GetXData 返回实体的扩展数据. js代码实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...
- Java基础(五)--内部类
内部类简单来说就是把一个类的定义放到另一个类的定义内部 内部类分为:成员内部类.局部内部类.匿名内部类.静态内部类 成员内部类:最常见的内部类 public class Outter { privat ...
- 写给新手的十一条 Docker 守则
很多人最终还是决定使用 Docker 解决问题. Docker 的优点很多,比如: 一体化——将操作系统.库版本.配置文件.应用程序等全部打包装在容器里.从而保证 QA 所测试的镜像 (image) ...
- Spring Security 介绍与Demo
一.Spring Security 介绍 Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术选型.我们仅需引入spring-boot-s ...
- <MyBatis>入门二 全局配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- Haoop Mapreduce 中的FileOutputFormat类
FileOutputFormat类继承OutputFormat,需要提供所有基于文件的OutputFormat实现的公共功能,主要有以下两点: (1)实现checkOutputSpecs方法 chec ...
- linux cut-连接文件并打印到标准输出设备上
博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 cut命令用来显示行中的指定部分,删除文件中指定字段.cut经常用来显示文件的内容,类似于下的type命令. 说明:该命令有两 ...