作为一名程序员,我经常会看一下我目前正在使用的语言的一些功能,并自己思考"这对于程序员来说很难做到,并且可以由机器自动处理".
这种特征的一个例子是存储器管理,它在各种语言中已经自动化了一段时间.虽然大多数时候内存管理并不难以手动完成,但在不泄漏内存的情况下在应用程序中完美地完成它非常困难.自动化使其变得简单,以便我们的程序员可以专注于更关键的问题.
是否有任何您认为编程语言应该自动化的功能,因为奖励/难度比率太低(例如并发)?
这个问题旨在成为关于编程未来的头脑风暴,以及我们可以让我们专注于更重要的任务的语言,所以即使您认为自动化不实用,也请发表您的意愿/可行.好的答案将指出在许多语言中真正难以做到的事情,而不是单一语言的宠儿.
无论语言能为我自动做什么,我都想要一种为自己做的事情.
兼容(半)自动化的并发编程/并行,与不得不乱用线程,回调和同步相反.能够并行化循环,例如:
Parallel.ForEach(fooList, item => { item.PerformLongTask(); }
只是赢了.
但是,某些语言已在某种程度上支持此类功能.值得注意的是,F#具有异步工作流程.随着.NET 4.0的发布,Parallel Extensions库将使C#和VB.NET中的并发变得更加容易.我相信Python也有某种并发库,但我个人还没有使用它.
同样很酷的是纯函数式语言中的全自动并行性,即不需要稍微更改代码并自动使其在多个内核之间以最佳方式运行.请注意,这只能使用纯函数语言(例如Haskell,而不是CAML/F#)来完成.尽管如此,上面给出的示例构造对于面向对象和其他语言中的并行性自动化非常方便.
我认为,随着桌面计算机开始从2个内核转移到4个内核,然后是8个内核,并且随着桌面计算机开始从8个核心转移到8个内核,图书馆,设计模式,甚至整个编程语言都将面向简单和高级别的并行支持.自动并发的优势变得更加明显.
exec("Build a system to keep the customer happy, based on requirements.txt");
在Java中,我想要一个使整个类不可变的关键字.
例如
public immutable class Xyz { }
如果任何不可变性条件被打破,编译器会警告我.
在Java中,不那么冗长地创建bean.
例如:
bean Student { String name; int id; type1 property1; type2 property2; }
这将创建一个bean私有字段,默认访问器,toString,hashCode,equals等.