|
|
1
6
注释 :这个答案不再准确地反映我对这个主题的看法。我不喜欢它过于戏剧化,有点难听的语气。此外,我不太确定,对可证明是正确的软件的追求,是如此无用,我似乎回想起当时。我离开这个答案是因为它是被接受的,并且被投了赞成票,并且把它编辑成我目前认为会破坏它的东西。 我终于有时间看报纸了。我从哪里开始? 作者正在唱一首老歌,这首歌是这样写的:“如果你不能证明程序是正确的,我们都注定了!”当尖叫声伴随着过度调制的电吉他和快速的鼓声时,听起来最好。当计算机科学在数学领域时,学术界就开始唱这首歌,在这个世界里,如果你没有证据,你什么都没有。即使在第一个计算机科学系从数学系分离出来之后,他们仍然在唱那首歌。他们今天在唱那首歌,没有人在听。为什么?因为我们其他人都在忙着创造有用的东西,好的东西是用软件做出来的,不能被证明是正确的。 线程的存在使得证明一个程序是正确的更加困难,但是谁在乎呢?即使没有线程,也只能证明最微不足道的程序是正确的。为什么我要关心我的非平凡的程序,不能证明是正确的,在我使用线程之后,是否更不可靠?我不。 如果你不确定作者生活在一个学术梦境中,你可以在他坚持认为作为线程替代的协调语言最好用“视觉语法”(在屏幕上绘制图形)来表达后确定。我以前从来没有听过这个建议,除了我职业生涯的每一年。一种只能由图形用户界面操作的语言,不能与任何程序员常用的工具一起使用,这并不是一种改进。作者继续引用UML作为一个视觉语法的例子,它是“常规地与C++和Java相结合”。 同时,我和许多其他程序员继续使用线程,没有那么多麻烦。如何正确、安全地使用线程是一个基本上可以解决的问题,只要您不完全依赖于可验证性。 看。穿线是一个大孩子的玩具,你需要知道一些理论和使用模式才能很好地使用它们。就像数据库、分布式处理或任何其他小学以外的设备一样,程序员每天都能成功地使用这些设备。但仅仅因为你不能证明它是正确的并不意味着它是错误的。 |
|
|
2
5
请记住,sqlite被编写成尽可能轻量级和易于理解(从编码的角度),所以我认为线程是这种轻量级方法的对立面。 另外,sqlite并不打算在高度并发的环境中使用。如果你有一个这样的数据库,你最好使用一个更具企业精神的数据库,比如Postgres。 |
|
|
3
2
邪恶,但必要的邪恶。线程的高级抽象(例如.NET中的任务)正变得越来越常见,但在大多数情况下,业界并没有试图找到避免线程的方法,只是使处理任何类型的并发编程所带来的复杂性变得更加容易。 |
|
|
4
2
我注意到的一个趋势,至少在Cocoa领域,是来自框架的帮助。苹果已经竭尽全力帮助开发人员处理并发编程这一相对困难的概念。我看到的一些事情:
|
|
5
2
|
|
|
6
2
|
|
|
7
2
|
|
|
8
2
|
|
|
10
1
|
|
11
1
|
|
|
12
0
|
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
SpeakX · 多线程上下文中的弱指针未过期时更新 2 年前 |
|
USMC6072 · 在父事件处理程序中调用异步方法会引发错误 2 年前 |
|
|
Eric · fgets_unlocked()用于多线程读取不同文件 3 年前 |