rust

一种最小(限制规模)语言kernel配合极简(无语法)扩展系统的开发

不想你离开。 提交于 2020-10-31 19:00:30
本文关键字:可裁剪语言。better c only rust, easier scripting programming,Easy ori programming,非专业编程 在《terra++ - 一种中心稳定,可扩展的devops可编程语言系统》《terracling前端metalangsys后端uniform backend免编程binding生成式语言系统设想》《利用terralang实现terrapp(1):深刻理解其工作原理和方法论》中我们讲到对语言核心和扩展进行可裁剪的特性(类linux kernel),这种设计在app和kernel都存在,却没被用在语言设计上,。这种需求很明显,是因为现在围绕语言为中心作为代表的各种开发生态已经十分破碎,又变动频繁断层横生,提高了人们学习它们的曲线(而语言决定开发,不可能要求所有的程序员订立契约,倾向使用某种语言的统一良好特性,一门语言好的坏的都会被继承下来,又没有一种真正可裁剪的语言存在个人不可能进行改良),。一些整合现有语言类的统一后端多前端语言(c#,jvm languages)又做不到真正的前后或后端统一解决多语言带来的痛点。而一些更为新潮的语言希望彻底更新这类弊端,所以直接发明新语言,这类语言往往基于强化C简化CPP的目的出现。如go/rust/dlang。却也有新的问题产生,见《编程语言选型之技法融合

C/C++ Search Extension —— 一款可以快速在地址栏搜索 C/C++ 文档的浏览

痞子三分冷 提交于 2020-10-29 01:42:15
C/C++ Search Extension 是一款可以在浏览器地址栏快速、方便、高效地搜索 C/C++ 文档的浏览器插件,支持 Chrome/Firefox/Edge 。 Github 地址 : https://github.com/huhu/cpp-search-extension 官网地址 : https://cpp.extension.sh/ 团队做的其他语言同类插件有: Rust: Rust Search Extension Golang: Go Search Extension 下载地址: Chrome Web Store Firefox Microsoft Edge 主要功能: 搜索 C/C++ 标准库文档 可通过关键词搜索 cppreference.com 上的 C/C++标准库文档。 支持离线模式 内置命令 跟 Rust 版本的插件一样,C++ 版本也提供了丰富的命令,比如: :help - 查看使用帮助 :header - 查看 C++所有的头文件库 :history - 查看本地的搜索记录 支持快捷键操作 可通过追加或删除 -(英文减号)对结果进行快速翻页。通过 tab 可以选择结果,回车可跳转到文档详细说明页面。 使用方法: 在浏览器搜索栏里,输入关键字 cc 加空格,再输入关键字即可看到相关的结果,选中结果敲击回车可跳转到搜索结果页面。 欢迎大家下载体验

segment fault 至core dump的原因

一世执手 提交于 2020-10-28 13:17:04
最近,写rust ffi 代码,出现segment fault 至core dump。看了一篇文章,值得留意。 造成segmentation fault的可能原因分析 一 造成segment fault,产生core dump的可能原因 1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函数防止读写越界。 2 多线程程序使用了线程不安全的函数。 3 多线程读写的数据未加锁保护。对于会被多个线程同时访问的全局数据,应该注意加锁保护,否则很容易造成core dump 4 非法指针 a) 使用空指针 b) 随意使用指针转换。一个指向一段内存的指针,除非确定这段内存原先就分配为某种结构或类型,或者这种结构或类型的数组,否则不要将它转换为这种结构或类型的指针,而应该将这段内存拷贝到一个这种结构或类型中,再访问这个结构或类型。这是因为如果这段内存的开始地址不是按照这种结构或类型对齐的,那么访问它时就很容易因为bus

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

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

了不起的 Deno 入门教程

冷暖自知 提交于 2020-10-28 06:22:27
一、Deno 简介 Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点: 默认安全。外部代码没有文件系统、网络、环境的访问权限,除非显式开启。 支持开箱即用的 TypeScript 的环境。 只分发一个独立的可执行文件(deno)。 有着内建的工具箱,比如一个依赖信息查看器(deno info)和一个代码格式化工具(deno fmt)。 有一组经过审计的 标准模块,保证能在 Deno 上工作。 脚本代码能被打包为一个单独的 JavaScript 文件。 Deno 是一个跨平台的运行时,即基于 Google V8 引擎的运行时环境,该运行时环境是使用 Rust 语言开发的,并使用 Tokio 库来构建事件循环系统。Deno 建立在 V8、Rust 和 Tokio 的基础上,它的架构如下: (图片来源:https://deno.land/manual/contributing/architecture) 1.1 Rust Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。Deno 使用 Rust 语言来封装 V8 引擎,通过 libdeno 绑定,我们就可以在 JavaScript

用欧拉计划学Rust编程语言(第700题:Eulercoin)

大城市里の小女人 提交于 2020-10-27 19:56:45
问题描述: 欧拉诞生于1707年4月15日,对于序列(1504170715041707 * n) mod 4503599627370517,如果一个元素小于前面发现的所有Eulercoin,则其称为Eulercoin。 例如,第一个元素是1504170715041707,为第一个Eulercoin,第二个元素为3008341430083414,由于它大于1504170715041707,所以不是Eulercoin。然而,第三个元素为8912517754604,比前面的数都小,被称为Eulercoin。前两个Eulercoins之和是1513083232796311。 求所有Eulercoin之和。 解题过程: 第一步,先根据题意暴力求解 这个代码非常容易写出来。 const INC: u64 = 1504170715041707_u64; const MOD: u64 = 4503599627370517_u64; let mut x = 0_u64; let mut min = INC; for n in 1_u64.. { x = (x + INC) % MOD; if x <= min { min = x; println!("{:20} {:20}", n, x); } } 运行这个程序,可以输出如下结果。 1 1504170715041707 3