技术文章
文章平均质量分 95
仓颉编程语言
仓颉编程语言官方账号
展开
-
基于智能状态和源代码插桩的 C 程序内存安全性动态分析
陈哲老师分享了 C 程序内存安全性动态分析的相关工作,包含两个创新点,一个是智能状态,一个是源代码插桩,并介绍了一款依此实现的动态分析工具 Movec。原创 2023-07-28 16:38:25 · 406 阅读 · 0 评论 -
基于符号抽象的程序分析
假设我们用逻辑约束φφφ来编码一个程序的具体状态,并且把抽象域AAA看作一个比较受限的逻辑片段(比如 “区间逻辑”)。符号抽象的目标就是找到约束φφφ在抽象域AAA上的、最精确的上近似2。我们也可以从逻辑的角度来理解3。给定一个约束φφφ和一个逻辑片段LL’L(对应于抽象域), 找到约束φφφ在LL’L中的最强逻辑后承(strongest logical consequence)。下面是一个具体的例子:考虑约束φ≡x≥0∧x2≤10φ≡x。原创 2023-07-14 12:11:19 · 720 阅读 · 0 评论 -
类型检查:时常被忽略的编译器组件
本文作者为大家带来类型检查和推导的简单分享,从日常的编码场景说明类型检查和类型推导的作用,带领大家了解如何实现一个简单的类型检查与推导器。原创 2023-06-09 17:17:06 · 945 阅读 · 0 评论 -
基于轨迹的调试技术:从传统软件到 AI 模型开发
本文基于林云老师的分享进行整理,为大家介绍了在传统软件和 AI 模型上的(半)自动化调试工作。视频已发布在 B 站,欢迎大家学习!原创 2023-05-04 19:48:01 · 1047 阅读 · 1 评论 -
JAX-FLUIDS:可压缩两相流的完全可微高阶计算流体动力学求解器
本文介绍了JAX-FLUIDS —— 一种通过ML-CFD构建可微ML模型的框架,相比传统CFD数值微分求解,可以得到更优的计算结果。通过融合求解过程和ML过程,可以更有效地学习到符合PDE动力学特征的模型,ML-CFD模型开发更加地便捷。原创 2023-04-11 20:07:51 · 1327 阅读 · 0 评论 -
机器学习在编译器中的应用
近些年来,越来越多的学者和研究人员将目光对准了机器学习技术在编译器领域的应用。在本文里,我们将阐述机器学习和编译器优化之间的关系,并介绍其中的一些典型应用。原创 2023-03-24 14:57:57 · 967 阅读 · 0 评论 -
语言运行时的混合内存支持
本文基于吴明瑜老师的分享进行整理,为大家介绍了如何为语言运行时提供混合内存这样一个新硬件架构的支持。视频已发布在 B 站,欢迎大家学习!原创 2023-03-17 15:04:48 · 1181 阅读 · 0 评论 -
基于上下文分析的 Python 实时 API 推荐
本次活动邀请到了南京大学计算机系软件质量研究所博士生何欣程为我们分享一种基于上下文分析的 Python 实时 API 推荐方法。原创 2023-03-03 15:22:42 · 1255 阅读 · 0 评论 -
CPython解释器性能分析与优化
CPython 是由 C 语言编写的 Python 纯解释器,采样分析(sampling profiling)可以更为精确地对其性能进行研究。本报告从不同视角探讨其中的开销构成,并讨论可行的优化方案。原创 2023-02-25 16:46:03 · 1958 阅读 · 0 评论 -
程序分析与神经网络后门
本次分享,孙军老师介绍了将程序分析与神经网络相结合从而提高神经网络质量的研究工作,并以两个后门攻击问题为例,详细介绍了团队的具体解决方法。文中介绍的研究方法可以在神经网络验证平台 Socrates 上获取。原创 2023-02-16 19:12:26 · 1347 阅读 · 0 评论 -
Python 生态发展之路
Python 是现今最受欢迎的编程语言之一,2021 年 8 月的 TIOBE 编程语言排行榜中,Python 排名第二,仅次于 C [1]。2017 年之后,Python 是 TIOBE 指数增长最快的语言,从 3.78%(2017 年 12 月) 一路上升至 11.86%(2021 年 8 月)。图 1:TIOBE Index [1]2021 年第一季度 SlashData 发布的开发者分析 [2] 中估算,Python 社区已拥有 1000 万开发者,仅次于 JavaScript 的 1.原创 2021-08-10 19:34:54 · 850 阅读 · 0 评论 -
数值程序分析
本文基于陈立前老师在 SIG-程序分析 技术沙龙的分享进行整理,为大家介绍了数值程序分析的技术。原创 2023-02-10 15:25:42 · 1646 阅读 · 0 评论 -
学习驱动的复杂软件符号执行
本文基于卜磊老师在 SIG-程序分析技术沙龙的分享进行整理,介绍了学习驱动的复杂软件符号执行,视频也已经发布在 B 站,欢迎学习。原创 2023-02-02 20:10:06 · 1388 阅读 · 1 评论 -
基于语义的编译器测试
原文来自微信公众号:编程语言Lab-基于语义的编译器测试搜索关注编程语言Lab 公众号:HW-PLLab获取编程语言更多技术内容如果读者想了解更多有关类型系统相关的技术内容,欢迎加入编程语言社区 SIG-程序分析。加入方式:文末有小助手微信,添加并备注加入 SIG-程序分析。视频回顾:SIG-程序分析技术沙龙回顾|Semantic-based Compiler Testinghttps://www.bilibili.com/video/BV1zY411b7uG?# 研究背景及意义 #今原创 2022-02-23 15:55:01 · 1563 阅读 · 0 评论 -
Android 权限的一个类型系统模型
本文主要和大家分享一下我读博期间做的和类型系统相关一篇文章,发表在 CSF 2018 上的工作 ,合作者包括深圳大学的许智武老师,以及我当时的两位导师 Alwen Tiu 和 Yang Liu。这个工作主要是利用类型系统来静态检查 Android 系统上可疑的信息泄露,它的一个主要优势是我们可以对独立的 Android app 进行类型检查以确认它没有带来任何可能导致信息泄露的安全隐患。原创 2022-01-18 12:30:00 · 1202 阅读 · 0 评论 -
How Gradual Typing System Helps Us
How Gradual Typing System Helps Us作者 | Liyi整理 | Hana作者介绍:Liyi, from Huawei, inc. 2012 Lab, OS Kernel Lab, working asverification engineer, andverification tool developerHiring @Beijing @Shanghai写给不想看完全文的同仁们,以下是本文核心观点:类型系统的本质是提供信息,这些信息不仅仅是提供给编译原创 2022-01-17 11:13:41 · 1307 阅读 · 0 评论 -
精化类型简介
作者简介詹博华麻省理工博士后,现任中科院软件所硕导,研究方向为形式化方法(交互式定理证明、嵌入式系统的建模和验证)。本次技术分享来自 SIG-类型系统技术沙龙,本文内容由詹博华老师会后整理,视频也已经发布在 B 站,欢迎大家点开学习。https://www.bilibili.com/video/BV1yS4y1X7pi精化类型 (refinement types) 在普通类型的基础上添加了对变量取值范围的约束,从而可以用于保证程序不存在除零、数组越界等错误,甚至完全验证程序的功能正确性。在这篇文原创 2021-12-30 14:36:01 · 1042 阅读 · 0 评论 -
从 JIT 编译看 Runtime 的过去与未来
作者简介常开颜中国科学院计算技术研究所直博生,研究方向为硬件编程语言、编译技术。如果读者想了解更多有关Runtime相关的技术内容,欢迎加入编程语言社区 SIG-Runtime。加入方式:文末有小助手微信,添加并备注加入 SIG-Runtime。# 编译器是什么 #编程语言处理器可以分为三类,它们之间的关系用一句著名的话说就是:编译器是特化的解释器(a compiler is a specialized interpreter)[1]。 编译器 Compiler能够给定一...原创 2021-12-25 15:28:08 · 1986 阅读 · 0 评论 -
编译器优化故障的测试与定位
今天想分享的主题是编译器故障的检测和定位。本次技术分享来自SIG-编程语言测试技术沙龙,本文内容为提取讲演视频后的文章,视频也已经发布在 B 站,欢迎大家点开学习。原创 2021-11-22 10:11:14 · 1083 阅读 · 0 评论 -
Promising 2.0:宽松内存并发中的全局优化
本文由 Hana 根据论文解读视频整理所得,如有错误欢迎指正!原视频内容较长,已经分上下两部分发布 B 站,欢迎点开学习!论文解读 | Promising 2.0:宽松内存并发中的全局优化(上)_哔哩哔哩_bilibili论文解读 | Promising 2.0:宽松内存并发中的全局优化(上)https://www.bilibili.com/video/BV1Fq4y1V73D论文解读 | Promising 2.0:宽松内存并发中的全局优化(下)_哔哩哔哩_bilibili论文解读 | Promi原创 2021-11-09 11:50:31 · 343 阅读 · 0 评论 -
类型系统综述(二)
译者注释使用下划线标注,方便识别。接续上一篇于国庆期间发布的类型系统综述,本文将简要介绍有类型 λ\lambdaλ 演算 的类型系统,以及如何在此基础上扩充 UnitUnitUnit 类型(单一, 并不知道如何翻译,感觉单一类型比单位类型好听;且毕竟不可能是单子类型——单子这个词一般留给了 monad。),BoolBoolBool 类型(布尔),NatNatNat 类型(自然数),ProductProductProduct 类型(积),UnionUnionUnion 类型(联合),RecordRecor.原创 2021-11-03 14:50:34 · 238 阅读 · 0 评论 -
Go 语言生态发展之路
2007 年 9 月 21 日,Robert Griesemer,Rob Pike 和 Ken Thompson 在一块白板上勾勒了一个新语言,并在几天内定下了计划和目标,作为一个自由时间的项目进行;2008 年年中,这个项目得到 Google 的全力支持,成为了一个全职项目;2009 年 11 月,Go 语言正式开源[1],并于三年后发布 1.0 版本。发布 12 年至今,已有上百万开发者成为“gopher”,已经远超设计者最初的预期。# 源起 #Go 语言的开发团队可以说是高人云集:Ken T.原创 2021-10-30 14:37:32 · 653 阅读 · 0 评论 -
关于 Raku 的宏系统的分享
作者 | Carl Masak整理 | J.M.zhu作者简介:Carl Masak, 2019 年加入华为,在进入华为之前,一直做开源贡献,研究领域主要在语言设计、开发领域,是 Perl6 早期成员之一(Perl6 目前改名为 Raku[1])。本次技术分享来自SIG-元编程技术例会,本文内容为提取讲演视频后的翻译稿,视频也已经发布在 B 站,欢迎大家点开学习。SIG-元编程技术分享 | A Simple Introduction of Macro System of Raku_...原创 2021-10-28 18:52:43 · 342 阅读 · 0 评论 -
关于 IR 在程序分析和优化中应用的一些思考
李彬,编程语言 Lab 程序分析应用专家,南京大学计算机系博士。研究领域是程序分析及验证。本文以技术文章的方式回顾李老师在SIG-程序分析技术沙龙上的分享,回顾视频也已经上传 B 站,欢迎小伙伴们点开观看。SIG-程序分析技术沙龙回顾|程序分析中的 IR 讨论_哔哩哔哩_bilibili编程语言社区微信公众号/ID:编程语言Lab/HW-PLLab小助手微信:pl_lab_001Gitee信息:https://gitee.com/HW-PLLab/communityhttps://www.bil..原创 2021-10-13 11:30:00 · 1197 阅读 · 0 评论 -
类型系统综述(一)
原文作者:Luca Cardelli,Microsoft Research翻译与调整:Koshiba本文改编自 Luca Cardelli 的 《Type Systems》[1]的前两章,并对内容和顺序做了调整。Luca Cardelli 个人主页:http://lucacardelli.name/indexMe.html《Type Systems》 2004 版:http://lucacardelli.name/Papers/TypeSystems.pdf在对类型系统分门别类和比.原创 2021-10-11 10:40:25 · 1112 阅读 · 0 评论 -
软件 2.0 时代的程序分析
作者 | 张昕整理 |晴天作者经历: 2020.9 – 现在,北京大学计算机系助理教授 2017.9 – 2020.8,美国麻省理工学院计算机与人工智能实验室博士后 2017,博士,美国佐治亚理工学院 2011,学士,上海交通大学 研究方向:程序设计语言,软件工程,高可靠人工智能所获奖励与成就: 入选国家级青年人才计划 北京大学博雅青年学者称号 ACM SIGPLAN & ACM SIGSOFT 杰出论文奖得主(除..原创 2021-10-08 10:13:18 · 488 阅读 · 0 评论 -
Rust 生态发展之路
Rust 最初是 Mozilla 员工 Graydon Hoare 在 2006 年开始做的私人项目[1],Graydon Hoare 原来是语言工程师,会参与编译器或工具的实现但并没有参与设计,因此开始有了自己设计语言的想法[2]。Rust 语言的设计参考了很多其他语言,在 70 年代末和 80 年代初,编程语言有很多优秀的竞争者,许多好想法并没有转化成广泛使用的系统语言,Graydon Hoare 希望能结合现代编程语言的理论实现这些好想法[2]。Rust 基因图谱[3]Mozi...原创 2021-09-30 10:30:23 · 1376 阅读 · 0 评论 -
基于软件分析的智能化开发新型服务与技术
梁广泰,华为云软件分析 Lab 技术专家 / Team Leader,北京大学计算机系博士。研究领域是软件分析、智能化开发、软件工程领域等。本文以技术文章的方式回顾梁老师在SIG-程序分析技术沙龙上的分享,回顾视频也已经上传 B 站,欢迎小伙伴们点开观看。https://www.bilibili.com/video/BV1a44y187eKhttps://www.bilibili.com/video/BV1a44y187eK大家好,非常感谢大家来参加我们今天的SIG-程序分析技术沙龙。我是...原创 2021-09-26 19:14:41 · 888 阅读 · 0 评论 -
系统化程序分析
左志强,南京大学计算机系副研究员,研究领域包括程序分析,编译技术,系统软件等。本文以技术文章的方式回顾左老师在SIG-程序分析技术沙龙上的分享,回顾视频也已经上传 B 站,欢迎小伙伴们点开观看。小程序,哔哩哔哩,,面向千万行代码的高精度静态分析系统小程序#Introduction#大家好,非常高兴今天能有这个机会在我们国内做程序分析的一个新 group 来给大家分享一下我们最近做的一些尝试。从广义上来说,程序分析可以大致分为两类,包括: 静态分析 Static ...原创 2021-09-16 20:55:37 · 855 阅读 · 0 评论 -
Julia 生态发展之路
今年 7 月 19 日,Julia 语言创始人成立的 Julia Computing 公司宣布完成了 2400 万美元的 A 轮融资,由 Dorilton Ventures 领投,Menlo Ventures、General Catalyst 和 HighSage Ventures 跟投[1]。融资将被用于 Julia 生态的扩张,继续研发产品让 Julia 语言变得更容易部署、更加好用[2]。Julia 是一种速度快且使用简单的高级通用编程语言,最初设计用于科学计算领域[3],2012 年发布以...原创 2021-09-09 20:39:37 · 353 阅读 · 0 评论 -
书籍推荐 | Software Foundations by Benjamin C. Pierce et al.
# DeepSpec #美国国家基金会在 21 世纪科学与工程的网络基础设施框架(Cyberinfrastructure Framework for 21st Century Science and Engineering, CIF21)[1] 中,明确了软件的关键地位,并资助了DeepSpec (the science of deep specification)[2] 项目:旨在通过提高形式化方法或数学相关技术,改进程序的开发和验证方法,从而消除可能导致安全漏洞和计算错误的 bugs。Dee..原创 2021-08-23 19:06:47 · 523 阅读 · 0 评论 -
元编程技术综述
# 作者简介 #Yannis Lilis 博士是欧洲最大的汽车租赁公司的高级程序员,兼职在克里特大学的计算机科学系任客座讲师,在数学及应用数学系任兼职教师,同时兼任计算机科学研究所(ICS)FORTH 实验室的研究员。他的研究兴趣包括软件工程、机器学习、计算机视觉、人工智能、分布式系统等等。他总计发表了 20 篇会议 / 期刊等出版物,其中超过半数为元编程相关技术文章。Anthony Savidis 教授是克里特大学计算机科学系的正教授和计算机科学研究所(ICS)FORTH 和 HCI 实验室的研究原创 2021-08-12 14:57:40 · 1233 阅读 · 0 评论 -
技术分享 | 从自动微分到可微编程语言设计(三)
摘要自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效准确求导的技术,一直被广泛应用于计算流体力学、大气科学、工业设计仿真优化等领域。而近年来,机器学习技术的兴起也驱动着对自动微分技术的研究进入一个新的阶段。随着自动微分和其他微分技术研究的深入,其与编程语言、计算框架、编译器等领域的联系愈发紧密,从而衍生扩展出更通用的可微编程概念。本系列文章将对自动微分技术和可微编程的研究和发展进行概括综述。本文将分为三部分,主要框架如下:常见计算机程序求导方法介绍业内原创 2021-08-06 15:03:53 · 306 阅读 · 0 评论 -
浅谈程序分析
孙军新加坡管理大学教授,研究方向为:形式化方法、软件工程、安全等,爱好:爬山、攀岩等。如果读者想了解更多有关程序分析相关的技术内容,欢迎加入编程语言技术社区 SIG-程序分析。加入方式:文末有小助手微信,添加并备注加入 SIG-程序分析。目录#引言## 程序分析很难! ## 知道什么是程序正确性很难!# 程序分析技术很多! ## 自动定理证明## 如何用逻辑表达## 举个栗子## 小结# 抽象解释## 如何选择适合的抽象域## 举个栗子#...原创 2021-08-05 10:37:41 · 1889 阅读 · 0 评论 -
从自动微分到可微编程设计(二)
摘要自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效准确求导的技术,一直被广泛应用于计算流体力学、大气科学、工业设计仿真优化等领域。而近年来,机器学习技术的兴起也驱动着对自动微分技术的研究进入一个新的阶段。随着自动微分和其他微分技术研究的深入,其与编程语言、计算框架、编译器等领域的联系愈发紧密,从而衍生扩展出更通用的 可微编程 概念。本系列文章将对自动微分技术和可微编程的研究和发展进行概括综述。本文将分为三部分,主要框架如下:常见计算机程序求导方法介绍原创 2021-08-03 11:13:20 · 675 阅读 · 0 评论 -
浅谈 eDSL 在科学计算和数据分析领域的发展趋势
本文来自 “在科学计算和数据分析领域中,今后 Python、R、Julia 各自会有什么样的发展趋势?- 罗秀哲的回答 - 知乎”,经答主授权后由编程语言 Lab 整理并发出。首先需要提的一点是 Python 的通用性和 Julia 的高性能在下面文章的语境下都是错误的,因为 Python 的 eDSL 大多无法组合,Julia 反而可以有限地组合一些。Julia 也并不是任何程序都性能好,所以这个题目的描述不是非常好。我主要回答的是题目本身。在科学计算这个领域里提高嵌入式专用语言(eDSL) 相关的功原创 2021-07-31 15:55:35 · 850 阅读 · 0 评论 -
技术分享 | 使用 C++20 Ranges 标准库实现日历程序
使用 C++20 的 Ranges 标准库实现日历程序作者 | 罗能(知乎 id:@netcan)整理 | 编程语言 Lab花了我 3 个晚上才搞定,结论是目前 C++ 的 Ranges 标准库 [1] 对于实现 复杂的程序还不够用 ,提供的 views 适配器组合子也仅仅限于简单的 filter/transform 等,还未提供标准的方式让用户去定义组合子(不过这个问题目前 C++23 已经有提案 P2387R0 [2] 在做了)。完整可编译可运行的日历程序请见:https://godbolt.o原创 2021-07-30 12:01:44 · 715 阅读 · 0 评论 -
技术分享 | 以标准为指导的 JS 引擎一致性测试
本文以技术文章的方式回顾汤战勇老师在 SIG-编程语言测试 技术沙龙上的分享,回顾视频也已经上传 B 站:https://www.bilibili.com/video/BV1Ev411n7LK,欢迎小伙伴们点开观看。大家好,我是来自西北大学的汤战勇,非常感谢华为编程语言实验室的邀请,很高兴有机会在这里给大家分享我们团队关于 JS 引擎测试方面的工作 ——COMFORT[1]。COMFORT(COMpilerFuzzing fOr javascRipT) 是我们团队提出的一个全新的编译器模糊测...原创 2021-07-29 10:29:34 · 741 阅读 · 0 评论 -
浅谈 Intersection Types
序一:本来打算写“浅谈 Intersection Types 和 Union Types”的,后来考虑到前者的篇幅已经有点长了,就砍成了“浅谈 Intersection Types”,后半部分以后再谈。序二:网上其实有挺多关于 intersection types (和 union types)的文章了,且大部分是以 TypeScript 为宿主语言进行说明的。不过那些文章比较侧重这两种类型在 TypeScript 中的使用方式,对这以外的知识鲜有说明,本文旨在弥补这一不足。本文大量参考了《Progra原创 2021-07-27 09:14:27 · 191 阅读 · 0 评论 -
技术分享 | 从自动微分到可微编程语言设计(一)
摘要自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效准确求导的技术,一直被广泛应用于计算流体力学、大气科学、工业设计仿真优化等领域。而近年来,机器学习技术的兴起也驱动着对自动微分技术的研究进入一个新的阶段。随着自动微分和其他微分技术研究的深入,其与编程语言、计算框架、编译器等领域的联系愈发紧密,从而衍生扩展出更通用的可微编程概念。本文章将对自动微分技术和可微编程的研究和发展进行概括综述。本文章将分为三部分,主要框架如下:常见计算机程序求导方法介绍业内自原创 2021-07-26 18:41:06 · 403 阅读 · 0 评论