zoukankan      html  css  js  c++  java
  • 热烈庆祝国产编程语言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:




    下载地址:

    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('
    ')
    	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
    '
    	s+='Server: R++ Web Server
    '
    	s+='Content-Length: '+file.size+'
    '
    	s+='Content-type: '+get_type(path)+'
    
    '
    	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'
    }


  • 相关阅读:
    内容栏_2
    GridView控件-01-[简单的数据显示]
    ASP.NET页面之间传值
    RadioButtonList控件
    C语言统计运行时间
    常用排序算法的实现和复杂度的分析
    C语言函数指针
    利用汇编查看C++函数调用
    C++内存中的封装、继承、多态(下)
    从C++对象内存布局和构造过程来具体分析C++中的封装、继承、多态
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7123434.html
Copyright © 2011-2022 走看看