Tag: 语言function

多核和并发 – 语言,图书馆和开发技术

CPU架构的格局已经改变,多核心是一个趋势,将改变我们如何开发软件。 我在C,C ++和Java中完成了multithreading开发,我使用各种IPC机制完成了多进程开发。 使用线程的传统方法似乎并不使开发人员容易使用支持高度并发性的硬件。 您意识到哪些语言,库和开发技术有助于缓解创build并发应用程序的传统挑战? 我显然正在考虑像僵局和竞赛状况这样的问题。 devise技术,库,工具等也是有趣的,有助于实际利用并确保可用资源得到利用 – 只要编写一个安全,可靠的线程化应用程序并不能确保它使用所有可用的内核。 我目前看到的是: Erlang :基于进程的消息传递IPC,即“演员的并发模型” Dramatis :Ruby和Python的演员模型库 Scala :用于JVM的函数式编程语言,增加了一些并发支持 Clojure :具有演员库的JVM的函数式编程语言 白蚁 :Erlang的过程方法和消息传递给Scheme的一个端口 你还知道什么,为你工作了什么,你觉得有什么好看的?

究竟是什么让选项在斯卡拉monad?

我知道monads是什么以及如何使用它们。 我不明白的是,让我们说, Option一个monad? 在Haskell中,一个monad Maybe是一个monad,因为它是从Monad类实例化的(至less有两个必要的函数return并bind ,使得Monad类实际上是一个monad)。 但在斯卡拉我们有这样的: sealed abstract class Option[+A] extends Product with Serializable { … } trait Product extends Any with Equals { … } 没有关系到monad。 如果我在Scala中创build自己的类,默认情况下会是monad吗? 为什么不?

模板还是抽象基类?

如果我想使类具有适应性,并且可以从外部select不同的algorithm – 在C ++中最好的实现是什么? 我主要看到两种可能性: 使用抽象基类并传入具体对象 使用模板 这里有一个小例子,在各个版本中实现: 版本1:抽象基类 class Brake { public: virtual void stopCar() = 0; }; class BrakeWithABS : public Brake { public: void stopCar() { … } }; class Car { Brake* _brake; public: Car(Brake* brake) : _brake(brake) { brake->stopCar(); } }; 版本2a:模板 template<class Brake> class Car { Brake brake; public: […]

我如何编写一个返回另一个函数的函数?

在Python中,我想写一个函数make_cylinder_volume(r) ,它返回另一个函数。 返回的函数应该用参数h调用,并返回高度为h ,半径为r的圆柱体积。 我知道如何从Python中的函数返回值 ,但是如何返回另一个函数呢?

Lua的能力:有什么经验?

关于Lua和Javascript是否支持对象能力模型, 在cap-talk邮件列表上有一些讨论 ,结论是由于支持通过setfenv将环境限制为被调用的函数,以及不可伪造的引用不可变对象的可能性, OCM可以实施。 我们有没有看到这是如何工作的? 我很感兴趣的是从现有的应用程序中删除漏洞利用非常有用,慷慨的脚本支持在Lua,不幸的是允许在各种情况下完全shell访问。 需要一些shell访问权限:对象能力模型似乎是一种pipe理事物的好方法。 但是我担心我可以做出多less有说服力的事实,这种方法实际上在可靠的混乱实践中是可validation的。 一些链接: 较老的问题: 我如何创build一个安全的Lua沙箱? erights.org的背景: 从对象到function Lua wiki: SandBoxes和ReadOnlyTables – 显示setfenv的行动; 显示了在正确的情况下可以只读的表格的基本思想

有一种方法可以在C中进行curl吗?

假设我有一个指向函数_stack_push(stack* stk, void* el)的指针。 我希望能够调用curry(_stack_push, my_stack)并取回一个只需要void* el的函数。 我想不出有办法做到这一点,因为C不允许运行时函数的定义,但我知道在这里有比我更聪明的人:)。 有任何想法吗?

Pythontypes()或__class__,==或者是

我想testing一个对象是否是一个类的实例,只有这个类(没有子类)。 我可以这样做: obj.__class__ == Foo obj.__class__ is Foo type(obj) == Foo type(obj) is Foo 是否有理由相互select? (性能差异,陷阱等) 换句话说:a)使用__class__和type(x)有什么实际区别? b)类对象总是安全的比较使用is ? 更新:感谢所有的反馈。 对于类对象是否是单例,我仍然感到困惑,我的常识说,他们确实很难得到确认(尝试search“python”,“class”,“unique”或“singleton”) 。 我还想澄清一点,就我个人的需要而言,“便宜”的解决scheme是最好的,因为我试图优化几个专门的课程(几乎达到了理智的地步要做的事情是放弃Python,并在C)开发特定的模块。 但是问题背后的原因是要更好地理解语言,因为它的一些特征对于我容易地find这些信息来说有点太模糊了。 这就是为什么我让讨论延伸一点,而不是为了__class__ is的解决,所以我可以听到更有经验的人的意见。 到目前为止,这是非常有成果的! 我进行了一个小testing来衡量4个select的性能。 分析器的结果是: Python PyPy (4x) type() is 2.138 2.594 __class__ is 2.185 2.437 type() == 2.213 2.625 __class__ == 2.271 2.453 不出所料,在所有情况下都比==好。 type()在Python中performance得更好(快2%),而__class__performance更好(快6%)。 有趣的是, __class__ ==在PyPy中比type() is更好。 更新2:很多人似乎不明白我的意思是“一个class级是一个单身人士”,所以我会举一个例子: […]

C#有太多的语言function吗?

这是一个在我们的团队中不时出现的讨论。 虽然有几个很快就学会了C#3.0的function,但是其他的经典技巧还是坚持的 有些人从来不使用Linq,认为lambdaexpression式是混淆的,yield是“可怕的”。 有时他们很难理解使用所有新function的人编写的代码。 我们可以说,他们不掌握语言,应该学习。 但是学习现代编程语言有多难? 每个人都可以解决问题,每个人每天都有很多其他问题需要解决,而不是关心更好的方法来实施。 培训人员不是免费的。 另一方面,语言function可以使人们更有效率,代码更易于维护。 可能不完整的C#function列表 类,结构体,原始types,数组,装箱,接口,inheritance(抽象,虚拟,新,密封),属性,可空 例外 仿制药 multithreading,锁 reflection 代表,活动,匿名代表 迭代器 lambdaexpression式 扩展方法 LINQ 第4版即将推出,包括许多附加function。 就我个人而言,我喜欢C#的几乎所有function,就像我可以用这种语言编写的简短而漂亮的代码一样。 但是我不必从头开始学习。 我感兴趣的是您的意见和您的学习或教学C#的经验。 有没有太多的function? 仍然缺less重要的function? 语言function是使语言更容易使用还是更难以学习? 请:没有答案像“语言A比语言B好,因为…”。

F#:这个expression式应该有types“单元”,但是types为“ConsoleKeyInfo”

这是一个简单的问题,但是由于F#非常新,所以我无法追踪答案。 我只是想暂停在一个F#控制台应用程序,所以我写道: Console.ReadKey() 但是,这给出了警告:这个expression式应该有types“单元”,但types为“ConsoleKeyInfo”。 任何帮助将不胜感激。 谢谢,李

纯function语言中的高效堆

作为Haskell的练习,我试图实现heapsort。 堆通常以命令式语言实现为一个数组,但是在纯粹的函数式语言中这是非常低效的。 所以我研究过二进制堆,但是到目前为止我发现的一切都是从一个必要的观点来描述它们,所提出的algorithm很难转化为一个function设置。 如何高效地实现一个像Haskell这样的纯函数语言的堆? 编辑:效率我的意思是它应该仍然在O(N *日志),但它不必击败一个C程序。 另外,我想使用纯function编程。 在Haskell中做什么呢?