我正在开发一种新的语言,目标是web开发、嵌入应用程序、分布式应用程序、高可靠性软件(但这是为了遥远的未来)。
同时,它的目标是从长远来看减少开发费用--更多的时间来编写更安全的代码,更少的支持。最后,它强制了许多真正的团队必须执行的东西--比如一个跨平台IDE,一个代码,一个web框架。
简而言之,关键的语法/语言特性是:
我想我现在要离开web和集群功能了..。
你怎么想的?有没有我错过的任何类似的语言?
发布于 2010-09-07 23:28:49
分别回答你的几点(我忽略了我认为不重要或好的部分):
针对web开发
大多数人使用php。这不是因为这是最好的语言,这是肯定的。
嵌入应用程序
Lua。
分布式应用,高可靠性软件(但这是为了遥远的未来)。
您仔细研究过二郎的设计和参考实现吗?
它强制了许多真正的团队必须执行的东西--比如一个跨平台IDE,一个代码,一个web框架。
如果你的语言成功了,人们会制作其他的IDE,其他的代码样式,其他的网络框架。
多线程是语言的一部分,而不是图书馆。
非常好的多线程语言,禁止线程内部的副作用。是的,在实践中,这只意味着Erlang。
类型在任何平台上都具有相同的宽度。int(32)、long(64) e.c
叹息..。对于机器级语言之外的整数,只有一个合理的宽度,如C:无穷大。
设计自己的语言无疑会教你一些东西。但是,设计一种好的语言就像设计一个好的密码系统:很多业余爱好者都尝试过,但要做到这一点需要一位专家。
我建议您阅读一些关于编程语言设计的诺曼·拉姆齐的答案,从这条线开始。
考虑到您对分布式应用程序的兴趣,了解Erlang是必须的。至于顺序编程,最低限度是一种命令式语言和一种函数式语言(理想情况下,Lisp/Scheme和Haskell都是,但F#是一个很好的开端)。我还建议至少了解一种没有对象的高级语言,这样您就可以理解没有对象常常会使程序员的生活变得更容易(因为对象是复杂的)。
至于什么能驱使别人学你的语言..。好的工具/库/框架不会伤害(FORTRAN,php),而一家大公司树立榜样也不会伤害(Java,C#)。好的设计似乎不是一个重要的因素(一个只有ha的严肃笑话说,语言成功的原因是使用{大括号}来分隔块: C、C++、Java、C#、php).
发布于 2010-09-07 15:20:06
总结一下:你的语言没有真正的卖点。它只是做了十几种其他语言已经做过的事情,语法和语义略有不同,这取决于程序员来自哪里。这可能是一件好事,因为它使语言更容易适应,但你也必须说服人们麻烦,以切换。所有这些东西必须建立,调试和记录再次,工具必须编程,人们必须学习它,说服他们尖头发的老板使用它,等等。“所以它是X语言,它有一些Y的特性和更好的语法?但是它不会使我的应用程序的代码变得更短、更简洁,也不会使我从样板X中解放出来,等等--它也不能与我的IDE一起工作。”最后一个很重要。工具很重要。如果没有好的语言工具,很少有人会回避,这是理所当然的。
最后,它强制了许多真正的团队必须执行的东西--比如一个跨平台IDE,一个代码,一个web框架。
听起来是个坏处!语言“执行一个X”是如何实现的?如何让程序员相信编码风格才是真正的风格呢?为什么不应该有人去替换狗缓慢,几乎没有维护,严格限制的IDE你“强制”用更好的东西?一个web框架怎么可能适用于所有的应用程序?程序员很少喜欢被强迫进入X,而且他们有时是对的。
此外,你的语言将不得不与其他人交谈。那么,您有现成的多线程和web开发的标准解决方案吗?也许你应该从FFI开始。Python可以使用用C或C++编写的扩展,通过ctypes使用动态库,对于Cython,用Python接口包装任何给定的C库非常简单。你知道有多少重要的库是用C语言编写的吗?除非你的语言能使用这些语言,否则人们很难用它完成(现实世界的)事情。想想GUI吧。大多数市长GUI工具包都是C或C++。而且Java有数百个库(其他JVM语言从Java互操作中获益良多),有很多用途。
最后,在性能方面: LLVM可以为您提供本机代码生成,这是一个巨大的好处(性能方面,但也因为结果是独立的),但LLVM优化器也是有限的。不要指望它能击败C,特别是在英特尔CPU上通过icc编译的手工调优C ;)
发布于 2010-09-07 15:22:04
“有没有我错过的现有的类似语言?”
D?与你的特征相比:
https://stackoverflow.com/questions/3659432
复制相似问题