我想开发一门拥有全新的思想的编程语言,看看大家的意见

lliiqiang 2015-11-26 03:34:15
我技术可能还没有那么强,不过我有思想了。
首先介绍一下这个思想:面向概念编程,即引用类可以有被引用类,被引用类的子类可以覆盖引用类的方法,只要被引用类授权即可,而且这仅仅是面向概念编程思想的一小部分。先给大家一个伪代码作为例子让大家能够直观感受我的意思。

public class ClassA<ClassB bobj>{//<ClassB bobj>声明了一个被引用类ClassB的对象
/**
proxy关键字是亮点。它声明被引用对象bobj可以覆盖该方法
*/
proxy<bobj> public void action(){
System.out.println("this is b obj");
}
}
/**
ClassD覆盖了ClassA的action方法,屏蔽掉了bobj对象对action方法地覆盖权限。
*/
public class classD<ClassB bobj>extends ClassA<bobj>{
public void action(){
System.out.println("this is D obj");
}
}
/**
该类没有覆盖ClassA的action方法
*/
public class ClassB{

}
/**
但是ClassB的子类ClassC继承了ClassA给ClassB地授权,可以覆盖ClassA的action方法
*/
public class ClassC extends ClassB{
override<ClassA,bobj> public void action(){//override<ClassA,bobj>表明该对象以bobj的名义覆盖ClassA类的action方法
System.out.print("ClassC代理了ClassA,");
that.action();//还可以用that访问被被代理对象
}
}
测试代码:
ClassB b=new ClassB();
ClassA btoa=new ClassA<b>();//以ClassB类的对象为被引用对象构建ClassA方法
btoa.action()//由于b对象中没有覆盖ClassA的action方法,因此这里仅仅会打印"this is b obj"
ClassB c=new ClassC();
ClassA ctoa=new ClassA<c>();//以ClassC类的对象为被引用对象构建ClassA方法
ctoa.action()//ClassC类覆盖了ClassA的action方法,因此这里会打印"ClassC代理了ClassA,this is b obj"
ClassA ctod=new ClassD<c>();
ctod.action()//因为ClassD覆盖ClassA的action方法,因此这里只会打印"this is D obj"
当然代理方法不能被直接访问,因为普通访问无法获知被引用对象,代理方法能够相互访问,除此之外只能通过覆盖引用对象的方法被访问。
我认为代理必须是双方自愿的,即被代理对象和代理对象都同意的情况下才能代理,现在的代理模式是被代理对象强制代理对象代理自己,这个很不合理。而我设计的语言中,如果被引用对象没有指定代理方法,则仍然运行被引用对象的原来的方法,当然这个需要引用类授权,如果引用类子类覆盖父类方法使得被引用对象无权代理,则被引用对象仍然无法覆盖引用对象中的方法。
大家应该能够大概了解我的思想了,是不是很新鲜?下面我介绍一下我的编程思想:面向概念编程,以及我为什么要这么设计这个语言.
...全文
352 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_南天北落 2015-11-27
  • 打赏
  • 举报
回复
全新的语言。。。 首先你得了解底层。就是说怎么样让机器知道你的命令。形同于jvm的。 其次是面向对象,你得语言封装就像jdk一样的东西。 然后就是细节了,然后才是开发应用。望楼主考虑清楚。
开拓者Amadues 2015-11-27
  • 打赏
  • 举报
回复
你在一楼说的问题,这个我一直认为是面向对象的问题之一。 一个对象在不同环境下角色是会转换的。 如果对于一个已经设计好类的软件,假如某天使用环境发生变化,或者业务重组,事物概念和分类发生了变化,那这个类就要重新改写了。 我甚至认为分类这种东西只要写在一个文档里就可以了,比如某个软件我有100个方法,我就在文档里把他们归类,程序里不作分类,哪天类的作用和含义变化了,我文档里改一改就行了,不用去改代码。
开拓者Amadues 2015-11-27
  • 打赏
  • 举报
回复
想自己自创一种语言,首先你得至少非常熟悉几种主流语言,光懂Java是不够的,尤其是要去了解第四代编程语言,越是高级的语言,越是面向业务,屏蔽底层。 就拿select取数来说,高级语言里就是'select * into 数组 from 表'这么一句,不像Java里还要自己写SQL再完成Result到集合的转换,即使用框架也是各种麻烦。 我拿这个只是举个例子,只是要告诉你不管你的理论有多么高级,应用层也要做到非常容易使用。这些Proxy,模板,各种符号都是应该需要封装在底层的,在应用层你只需要告诉使用者使用你的API有什么好处就可以了,使用者希望的是写符合思维逻辑的伪代码,而不是脱离业务的各种语法,各种符号。 然后,开发一门语言,仅有思想理论是远不够的,所需要实现的细节巨多,像你的情况还是先在Java上实现一个开发框架,等到你这个框架普及了,再考虑更远的计划吧。
我叫小菜菜 2015-11-26
  • 打赏
  • 举报
回复
面向对象,其实已经很强大了
qq_20062767 2015-11-26
  • 打赏
  • 举报
回复
如果要开发一种全新的语言,我建议要具有面向对象的特性,最后简单易学、易用,具有java,c#其他面向对象语言的优点,也要具有安全性,也要具有新的不同其他面向对象语言的特性,可以应用于网络编程
  • 打赏
  • 举报
回复
吓我一跳,
这个逗b 2015-11-26
  • 打赏
  • 举报
回复
楼上说的极是
FlyStoneZ 2015-11-26
  • 打赏
  • 举报
回复
这个就是多态的概念啊
lliiqiang 2015-11-26
  • 打赏
  • 举报
回复
面向概念编程用概念替代对象。角色替代类。 角色和类的区别。 类其实是一个实体,比如说人 猫 狗。它们对应的是实际物体。然而员工,教师等为角色,因为它们只是给对象赋予了角色、 实际上一个人成为了教师,并没有产生一个新对象,因为世界上并没有多出一个新的人。 想一想在面向对象过程中,如果你有丈夫和职员这两个类,你当初设计的时候把它们继承了人这个类,一切需求都很正常。貌似二者不会有任何联系。 有一天突然有了这样地一个需求:妻子怀孕了,丈夫就向公司请假。有可能会措手不及,因为谁也没有想到丈夫和职员这两个类会有这样的关系。中间还有一个夫妻关系。之后又有了新地需求,如果职位非常重要,则禁止请假,而如果丈夫爱妻子则辞职,如果丈夫更加爱工作,就不辞职,或者请假少一点。 这个耦合度怎么样?面向对象把职员类和丈夫类视为毫无关系的两个类,然而事实上它们都对应着人这个对象,而且有可能是同一个人。但是一个人未必拥有职员类,还有静态成员问题,通常是指通用的成员比如所有的java工程师类。 但是有的静态绑定于对象,例如面试官问你"所有java工程师经验"。实际上这里说的所有是指"对于你这个人对象"说的所有,即相对于你这个人对象的静态,所有java工程师对象。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧