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研发成功的更多相关文章

  1. 国产编程语言R++ V1.5发布

    R++ v1.5内核改动较大,下面是一些主要变化: 1.使用PJIT(Pseudocode Just-In-Time),编译速度大幅提高,但运行效率远远不如C++,不过R++将在下一版本支持RJIT( ...

  2. 热烈庆祝华清远见成功自主研发Farsight TV 智能机顶盒

    近日,华清远见研发中心再传喜讯:Farsight TV 智能机顶盒研发成功并投入教学!这是华清远见研发中心继开源平板电脑.智能医疗终端.智能家居终端后独立成功研发的又一智能硬件!至此,开创了华清远见自 ...

  3. Atitit 热烈庆祝读经器项目圆满完成

    Atitit 热烈庆祝读经器项目圆满完成 1.1. 读经器项目简单介绍 1 1.2. 一万小时定律和十年一个专家定律 1 1.3. 获得加持前景 1 1.4. 核心源码 1 1.5. 项目git 2 ...

  4. 热烈庆祝UE4完全免费Free---GitHub的关联方式

    热烈庆祝UE4完全免费Free---GitHub的关联方式 时间:2015-03-03 18:38:52      阅读:3007      评论:0      收藏:0      [点我收藏+] 标 ...

  5. 热烈庆祝自已厉精13年开发的 DB查询分析器 7.01(最新版本) 在中关村在线本月获得近6000次的下载量

    中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本 DB 查询分析器.英文版本DB Query Analyzer.它 ...

  6. 木兰国产编程语言 Mulan--附带下载地址

    我国自主研发的 编程语言:木兰. 中国新闻网 : http://www.cas.cn/cm/202001/t20200116_4731821.shtml 说明介绍 百度一番后,发现没有下载地址,没有官 ...

  7. 热烈庆祝华清远见2014嵌入式系统(Linux&Android)开发就业培训课程全面升级

    近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新 ...

  8. 热烈庆祝杨学明老师为苏宁、中兴、烽火、CNNIC、创维、金立、中航信等知名企业提供培训和咨询服务!

    在2015年三季度,研发资深顾问.资深讲师杨学明先生为国内多家名企提供了培训和咨询服务!由于杨学明老师在软件及互联网方面的管理经验极为丰富,被多家公司选为首席研发讲师!并聘为常年顾问!

  9. 2017.9.16~17,热烈庆祝共创力罗老师《敏捷MINI体验式实战培训》在某大型企业成功举办!

    2017.9.16~17日,深圳市共创力企业管理咨询有限公司为某上市企业提供了为期两天的内训服务.该次内训的主题为<敏捷MINI体验式实践培训>,为期两天.此次培训由共创力资深讲师Geor ...

随机推荐

  1. 6.12---前提两个对象的成员必须一致,才能将有数据的对象将数据传给反射获取的对象conver(有数据对象,目标对象)

    //// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)/ ...

  2. arp学习笔记(linux高性能服务编程)

    先看看arp的定义吧 现在linux运行这条命令 tcpdump -i eth0:1 -ent '(dst 192.168.5.190 and src 192.168.5.109)or( dst 19 ...

  3. vs2017 创建C#类时添加文件头

    C#类模板地址:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\C ...

  4. 在eclipse里如何快速定位到某一行?

    使用快捷键ctrl+L讲每一行的行号显示出来:在eclipse的某一行的最左边,右键——show Line Numbers就可以将行数都显示出来.

  5. JavaScipt30(第五个案例)(主要知识点:flex布局)

    承接上文,这是第5个案例:这节没什么讲的,随便记录下吧,主要是用了flex布局与transform translateY,js部分和案例1类似. 附上项目链接: https://github.com/ ...

  6. 04C语言输入输出

    C语言输入输出 输入字符getchar() #include <stdio.h> int main(){ putchar(getchar()); putchar(getchar()); ; ...

  7. go new() 和 make() 的区别

    看起来二者没有什么区别,都在堆上分配内存,但是它们的行为不同,适用于不同的类型. new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 ...

  8. HDU多校Round 5

    Solved:3 rank:71 E. Everything Has Changed #include <bits/stdc++.h> using namespace std; const ...

  9. HDU5834 Magic boy Bi Luo with his excited tree (树形DP)

    题意:一棵树有点权和边权 从每个点出发 走过一条边要花费边权同时可以获得点权 边走几次就算几次花费 点权最多算一次 问每个点能获得的最大价值 题解:好吧 这才叫树形DP入门题 dp[i][0]表示从i ...

  10. 全局唯一的支付和订单id生成算法

    数据库存储的是两个Long类型的复合主键.显示到页面的是一个27位的数字单号 package com.yunyihenkey.common.idworker; /** * * @desc * @aut ...