ocaml

哪种编程语言又快又省电?有人对比了27种语言

我只是一个虾纸丫 提交于 2020-10-28 08:17:57
   编辑:小舟、张倩       在手机快没电时,管理软件往往会提醒我们关掉某些耗电量高的应用。可见,除了硬件厂商外,软件厂商也应该重视能耗问题。在这篇文章中,研究者分析了一下各种编程语言的能耗对比。      当能耗也成为了一个重要指标,我们要怎么选择编程语言?2017 年,由 6 名葡萄牙研究者组成的团队决定对这一问题进行调查并发表了一篇名为《Energy Efficiency Across Programming Languages》的论文。他们用 27 种语言写出了 10 个问题的解决方案(遵循同样的算法),然后运行这些方案,记录每种编程语言消耗的电量以及速度和内存使用情况,得到的排序结果如下图所示:      通过这项研究,他们得出了一些有意思的结论,比如运行速度快的语言未必能耗小。   在论文中,作者还根据编程语言的执行类型(编译、虚拟机或解释)和编程范式(命令式、函数式、面向对象和脚本)对结果进行了分析。   具体而言,研究者使用了来自 Computer Language Benchmarks Game(一个用于比较性能的免费软件项目,其中包含一组标准的算法问题和用于运行测试的框架)的 10 个问题,使得研究更有可比性和代表性。   运行各种基准测试非常重要,因为它们的结果会由于所执行的测试而有所不同。例如,总体而言,C 语言被认为是最快的,也是最节能的

用 Python 进行 DeFi 应用的开发——不同的区块链项目是如何解决安全问题的?

耗尽温柔 提交于 2020-10-14 14:59:22
Tezos(特所思)作为著名的 PoS 公链,其亮点并不仅仅只是 Staking,Tezos 的形式化验证特征同样也是其主要技术亮点之一。形式化验证能让 DeFi 的安全性方面如虎添翼,让用户对资金的智能合约安全更加有信心。 形式化验证方法和 DeFi 安全 DeFi 的爆发式增长吸引了不少开发者,著名的 DeFi 协议如 Compound、Uniswap、Syntheix 累计收获了上亿美元的资金。但是,DeFi 存在一个重大漏洞:安全性。 这个漏洞的代价是昂贵的,它给一些区块链项目(比如以太坊)的网络效应带来了负面的影响。过去几个月被攻击的 DeFi 项目就包括 Curve.fi、Lendf.Me、PegNet 等,其损失从数十万美元到数千万美元不等。tBTC 在上线几天后通过自查及时发现了 bug 并冻结了存币,避免了一场灾难。 而对于注重安全性的 DeFi 开发者来说,Tezos 的形式化验证方案能够在加强安全性的同时赋能 DeFi 应用。 在传统互联网应用中,如果服务器被黑客攻击,只需要对服务器端用户数据进行回滚就可以挽回用户损失。因此,重视用户体验的传统互联网应用可以以牺牲安全性换取速度和功能上的快速迭代。 然而在 DeFi 应用中,由于区块链的不可篡改性,智能合约一旦上线并出现安全隐患,对用户造成的损失是巨大且不可挽回的。 因此,DeFi

Hacker News 简讯 2020-08-26

早过忘川 提交于 2020-10-01 05:04:40
最后更新时间: 2020-08-26 23:00 Arwes – Futuristic Sci-Fi / Cyberpunk Graphical User Interface Framework - (arwes.dev) Arwes–未来科幻/网络朋克图形用户界面框架 得分:143 | 评论:30 Jacques Cousteau’s Grandson Wants to Build the ISS of the Sea - (smithsonianmag.com) 雅克·库斯托的孙子想建造海上国际空间站 得分:192 | 评论:97 Discrete Cosine Transform – Explain Like I'm Five - (ottverse.com) 离散余弦变换-像我五岁一样解释 得分:59 | 评论:25 What happens when you load a URL? (2015) - (danluu.com) 加载URL时会发生什么?(2015年) 得分:37 | 评论:12 Boom Supersonic hopes to test-fly its supersonic plane in 2021 - (engadget.com) Boom超音速公司希望在2021年试飞其超音速飞机 得分:67 | 评论:50 Draft of OCaml

Absolute value function Ocaml

為{幸葍}努か 提交于 2020-08-10 19:23:46
问题 I'm taking a look to this programming language "Ocaml" and I have some troubles because I read the official ocaml documentation but I don't uderstand how to use : ";" and ";;" and "in" specially inside the definition of functions. This is my code : let abs_val value : int -> int = let abs_ret = ref 0 ; if value >= 0 then abs_ret := value else abs_ret := -value ; let return : int = abs_ret ;; print_int abs_val -12 Compiled with "ocamlc" it said : File "first_program.ml", line 7, characters 2-4

Handle recursive function within an other function ocaml

拥有回忆 提交于 2020-08-10 19:19:45
问题 If I have one or more recursive functions inside an Ocaml function how can I call them without exit from the main function taking their value as return of the main function? I'm new in Ocaml so I'll try to explain me better... If I have : let function = let rec recursive1 = ... ... let rec recursive2 = ... ... How can I call them inside function to tell it "Hey, do you see this recursive function? Now call it and takes its value." Because my problem is that Ocaml as return of my functions

Handle recursive function within an other function ocaml

爷,独闯天下 提交于 2020-08-10 19:17:17
问题 If I have one or more recursive functions inside an Ocaml function how can I call them without exit from the main function taking their value as return of the main function? I'm new in Ocaml so I'll try to explain me better... If I have : let function = let rec recursive1 = ... ... let rec recursive2 = ... ... How can I call them inside function to tell it "Hey, do you see this recursive function? Now call it and takes its value." Because my problem is that Ocaml as return of my functions

Handle recursive function within an other function ocaml

馋奶兔 提交于 2020-08-10 19:16:46
问题 If I have one or more recursive functions inside an Ocaml function how can I call them without exit from the main function taking their value as return of the main function? I'm new in Ocaml so I'll try to explain me better... If I have : let function = let rec recursive1 = ... ... let rec recursive2 = ... ... How can I call them inside function to tell it "Hey, do you see this recursive function? Now call it and takes its value." Because my problem is that Ocaml as return of my functions

Window下 分布式框架 thrift的安装

痞子三分冷 提交于 2020-08-09 11:00:28
一、Thrift介绍 Thrift最初由Facebook开发,后来提交给了Apache基金会将Thrift作为一个开源项目。facebook开发使用为了解决系统中各个系统间大数据量的传输通信以及系统之间语言环境不同需要夸平台特性,支持C++,Java,Python,PHP, Ruby,Erlang,Perl, Haskell,C#,JavaScript,Node.js,Smalltalk and OCaml都支持。Thrift是一个典型的CS结构,客户端和服务端使用不同的语言开发。既然客户端和服务端使用不同的语言开发,那么一定要有一种中间语言来关联客户端和服务端语言,这种语言就是IDL(Interface Description Language) 二、Window下Thrift环境安装 1、下载thrift,版本为0.13.0 http://archive.apache.org/dist/thrift/0.13.0/ 在D盘新建一个文件夹thrift,然后将thrift-0.13.0.exe重命名为thrift.exe,在D:\thrift文件夹下 2、修改环境变量 系统变量Path中增加D:\thrift 3、在命令行中查看thrift的版本 thrift -version 来源: oschina 链接: https://my.oschina.net/u/4344048