很长一段时间我一直在尝试不同的语言来发现的特征设置的我想我已经无法找到它。我有语言适应的体面的各种项目的排雷,但我已经想出了一个交叉路口的这些语言,将允许我做99.9%的项目在一个单一的语言。我想如下:

  • 建立在。网或有一个。净执行情况
  • 有几个依赖关系。净运行时双方在汇编时间和运行时间(这是重要的,因为一个主要的使用情况是嵌入式发展。净运行为完全定义)
  • 有一个编译器,为100%。净的代码有没有不受管理的依赖关系
  • 支持任意表达套(见下文)
  • 支持自定义操作者的定义
  • 支持类型推理
  • 优化尾的电话
  • 已明确的不可改变的/可变定义(准确--我喜欢这个,但可能没有它)
  • 支持真正的宏强元编程(绝对必须的)

主要的两种语言我已经工作是Boo和Nemerle,但我也玩F#。

主要的投诉Nemerle:编译器有可怕的错误报告,执行的是马车的地狱(compiler和图书馆),宏只能适用内部的功能或特性的,这是相当沉重的依赖明智的(尽管不足,这是一个阻碍达成协议的因素).
主要的投诉,对Boo:没有任意表达的筑巢(阻碍达成协议的因素),宏难写的,没有定义操作者的定义(潜在的阻碍达成协议的因素).
主要的投诉F#:丑陋的语法,很难理解元编程、非免费许可证(史诗般的阻碍达成协议的因素).

所以我越仔细想想,我越觉得关于发展自己的语言。

赞成:

  • 得到确切的语法我想要的
  • 得到一个周转时间,这将是一个很好的处理速度更快;很难量化,但我也不会惊讶地看到1.5倍开发人员的工作效率,特别是由于测试的基础设施,这可能使某些项目
  • 我可以很容易地加自定义功能,以编译器以很好地发挥我的运行时
  • 我得到的东西,是设计和工作 到底 我想要的方式--尽这听起来像美国国家卫生研究院,这将使我的生活

缺点:

  • 除非它可以得到普及,我将停留的负担的维护。我知道我至少可以获得Nemerle人,因为我认为每个人都想要的东西更多的专业,但它需要一个村庄。
  • 由于第一个骗子,我是谨慎使用它在专业设置。这就是说,我已经使用Nemerle和使用自己定义的修改编译器,因为他们没有保持得很好。
  • 如果它没有得到普及,发现开发人员将能困难得多,在一定程度上, 保罗*格雷厄姆 甚至可能不会宽恕.

所以基于所有这一切,什么是普遍的共识--这是一个很好的想法或是一个坏主意吗?也许更有益的,我有没有错过任何大的优点或缺点?

编辑:忘了增加的筑巢的例子--这一情况在Nemerle:

def foo = 
    if(bar == 5)
        match(baz) { | "foo" => 1 | _ => 0 }
    else bar;

编辑#2:想它不会伤害得到一例类型的代码,这将可转换成这种语言,如果它存在(S.洛特的回答可能是足够吓唬我远离这样做的话)。代码使用中的定义的语法(操作码、:=,quoteblock等),筑巢的表达,等等。你可以检查一个很好的例子在这里: 在这里,.

有帮助吗?

解决方案

可悲的是,有没有指标或故事围绕失败的语言。只是成功的语言。显然,失败多于成功。

什么我基本上?两个共同的经验。

  1. 一年一次或两次,我不得不忍受一个间距为一个产品/语言/工具/框架,绝对会改变一切。我的答案已经定过去20年左右。告诉我谁需要的支持和我的公司将支持他们。就是这样。从来没有听从他们。让我们说我听说过25个。

  2. 一次或每年两次,我要与工作的客户中有孤儿的技术。在某一点上过去,一些聪明的编程建立了一个工具/framework/library/软件包是用于内部的几个项目。那么那个程序员留下。没有人可图的,混账东西出,他们希望我们来替换/改写。可悲的是,我们不可能找出的任,以及我们的建议是改写从头开始。他们抱怨说,他们的天才建立一套应用程序在一个星期内,它不能采取我们几个月来改写他们在Java/Python/VB/C#。让我们说,我已经写了25所以这种建议。

这只是我的一个顾问。

事实上一个尤其悲伤的情况是一家公司的整个软件的投资组合是由一个聪明的家伙有一个私人语言和工具。他没有离开,但是他会意识到自己的语言和工具已经下降的方式落后于时代--国家的技术移动了,他没有。

和动物--当然--在一个意想不到的方向。他的语言和工具是好的,但是世界已经开始采用的关系数据库,并且他没有绝对的方式来提升他的垃圾从平面文件。这是什么他没有预见到。事实上,这是一些他不可能预见到。[你不会掉进这个陷阱,你会吗?]

所以,我们谈。他重写了许多应用在普通的老VAX Fortran(是的,这是一个很长一段时间前.) 他重写了它的使用普通老的关系SQL的东西(安格尔,在时间)。

经过一年的编码,他们具有性能的问题。他们叫我回到审查的所有伟大的东西他们会做更换的家庭建造的语言。可悲的是,他们做的最坏的可能的关系数据库的设计。最糟糕的可能。他们会采取其文件的副本,合并各种各样,什么样的-不,并实现每一个低级别的文件系统的操作使用SQL、复制数据库中的行左,右和中心。

他是如此的深陷在他的私人的视野完美的语言,他不能适应一个比较普遍,普及新技术。

其他提示

我说去吧。

  • 这将是一个令人敬畏的经验,无论天气它使生产或没有。
  • 如果你把它编制下IL然后你不用担心不能够再用你的编制程序集C#
  • 如果你相信你拥有有效的投诉有关的语言列出上述,很可能许多人会觉得像你这样的。当然,对于每1000感兴趣的人可能有1愿意帮你保持它-但这始终是危险

但这里有几件事情要告诫有关:

  • 得到你的语言规范在石头前发展。确保任何和所有语言功能想出手之前-即使事情,你可能只希望的未来。在我看来,C#慢慢降到"哦只是一个语言扩展"的陷阱,这将导致其最终的末日。
  • 一定要让它进行优化。我不知道你已经知道;但如果你不知道然后学习;)没有人会想要一种语言,有漂亮的语法,但运作缓慢,因为即javascript执行情况。

祝你好运:D

当我第一次开始了我的职业生涯在90年代初,似乎这一潮流的每一个人发展他们自己的语言。我的第一个 3 工作岗位的公司已经这样做了。一个公司甚至制定了自己的操作系统!

从以往的经验,我想说这是个坏主意的原因如下:

1)将花费时间的调试该语言本身以外的代码基地在它的顶部
2)任何开发您聘用将需要通过学习曲线的语言
3)它将难以吸引和保持开发人员由于工作在一个专用的语言是一个死胡同对于个人的职业生涯

主要的原因,我离开这三个职位是因为他们的专有语言,你会注意到,没有多少公司采取这一路线的任何更多:)。

一个额外的论点我会做的是,大多数语言中有整个队伍的全职工作就是要制定语言。也许你会是一个例外,但是我会很惊讶如果你能够相匹配的发展水平的唯一工作语言的部分时间。

主要的投诉Nemerle:的 编译器有可怕的错误报告, 执行是越野车的地狱 (compiler和图书馆),宏 只能用内部的功能 或属性,这是相当 重依赖明智的(虽然不是 够了,这是一个阻碍达成协议的因素).

我看到你的职位已经写入两年多前。我建议你尝试Nemerle语言的今天。编译是稳定的。有没有拦截的错误。VS一体化具有很大的改进,也有SharpDevelop一体化。

如果你给它一个机会,你不会失望的。

永远不要开发自己的语言。

发展自己的语言是一个傻瓜的陷阱,而更重要的是,它将限制你什么你的想象力可以提供,以及要求你工作了你的发展环境和实际的计划你就是写作。

该案件中,这并不适用于很多,如果你Larry墙,AWK伙计们,或部分的一大群人专用于测试的边界的程序。如果你在任何这些类别,你不需要我的建议,但我强烈怀疑,你瞄准的适当位置在哪里,没有适当的编程语言中的任务和特点的人做的任务。

如果你聪明因为你似乎是(a的可能性),我的建议是去做设计的语言第一、循环访问了几次,要求一些聪明的家伙你信任的智能编程语言编写有关社区有关的具体的设计,你来了然后采取的决定。

你可能会意识到,在创建过程的设计仅仅是一个快速的黑客在Nemerle会放弃所有你需要的,例如。许多事情都可能发生的正当努力思考一个问题,并最终解决方案可能不是什么你实际上想当一开始该项目。

最坏的情况下,你被困与实际执行设计,但通过那么你会拥有这证明阅读和成熟,你就会知道具有高度的确定性,这是一个良好的路要走。

一个相关的建议,开始较小,只是定义功能,你绝对需要并随后建立他们得到的休息。

写你自己的语言不是一个容易的项目..尤其是一个可用于任何种类的"专业设置"

这是一个 巨大的 量的工作,我无疑问,你可以写你自己的语言,并且还编写任何大型项目,使用它-你会花这么长时间添加的特点需要修复的错误,而一般的语言设计的东西。

强烈 建议选择语言,是最接近你想要什么,并延伸它来做什么你需要的。它永远都不会你想要什么,但是相比,到时你就写你自己的语言,我要说这是一个很小的妥协..

斯卡拉有一个。净编译器。我不知道的地位,这虽然。这是一种二等公民,在斯的世界(这是更侧重于JVM)。但它可能是一个很好的tradeof通过。净编译器而不是创建一种新的语言,从头开始。

卡拉是那种弱元编程部自动取款机。它可能是需要的元编程有所减少由其他语言特征。在任何情况下,我想没有人会伤心如果你要执行的元编程功能。还有一个编译器插在基础设施的方式。

我认为大多数语言从来没有适合所有的法案。

你可能想要把你的2最喜欢的语言(在我的情况的C# 方案)和使用他们在一起。

从专业的角度来看,这可能不是一个好主意。

这将是有趣地听到一些事情,你觉得你不可以在现有的语言。什么样的项目都是你的工作就不能完成在C#?

我只是古董!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top