地表最强程序员,再次出手了!

quickjs-windows:为Windows构建quickjs quickjs-windows build quickjs-2020-11-08 for windows tdm64-gcc-9.2.0 可以正常编译 quickjs-2020-11-08 编译工具下载地址: 立即下载

Linus Torvalds是个非常厉害的程序员,因为他有两个名扬天下的作品:Linux和Git。

如果单论技术能力,有一个人,也许比Linus更强。

我在看他主页项目列表的时候,感觉头都炸了。

他开发了著名的模拟器QEMU和音视频处理库FFmpeg,仅仅是这两项就超越绝大部分程序员了,他还写过C编译器,OpenGL实现,LTE软基站,JS引擎,让Linux在浏览器中跑起来,甚至还创造了计算圆周率的世界纪录......

也就是说,这位老兄在操作系统、模拟器、多媒体、计算机图形学、编译器、编程语言、通信、甚至数学等领域跳来跳去,一年开发一个我一辈子都写不出的软件!

他写的程序还总是比别的程序小几个数量级,快几个数量级!

这也太变态了吧?!

不得不承认,这个世界上真的有天才的存在。

他就是法国程序员Fabrice Bellard。

Bellard还有个重要的特点,写了一个厉害软件,开创了一个领域,就把工作交给社区维护,自己拍拍屁股走人,挑战另外一个难题。

这不,最近Fabrice Bellard又出手了,这次他带来了一个叫做MicroQuickJS的开源项目。

这也是个JavaScript引擎,不过面向的是嵌入式设备。

我去项目主页看了一下,好家伙,MicroQuickJS引擎运行时仅需10K的内存就可以编译和运行JavaScript程序,在这么小的空间下,运行速度还接近QuickJS (这也是Bellard写的另外一个轻量级的JS引擎)。

才10K! 想想Node.js,想想Chrome V8,再想想Electron,这种极致的优化能力实在是可怕。

怪不得Redis之父antirez说:如果这东西2010年就出现了,Redis的脚本语言就不会是Lua,而是JavaScript!

为什么 MicroQuickJS 可以这么小?

因为它不是在“移植 JavaScript”,而是在“重新定义 JavaScript 在嵌入式设备上该是什么样子”。

1. 只支持 ES5 的一个“精简版”

MicroQuickJS 支持的不是我们熟悉的那个“什么都能写”的 JavaScript,而是一个被刻意约束过的版本。

举几个例子你就能理解它的取舍逻辑:

- 只支持 strict mode,不再兼容历史包袱,行为更简单、更可预测,也更容易优化。

- 数组不允许有“空洞”也就是说,不存在 arr[100] = 1,前面 99 个元素却不存在的情况。这样数组就可以用更紧凑的方式存储,而不是像散弹枪一样到处打洞。

- 不支持直接 eval,eval 会让代码在运行时突然“变身”,对内存管理和优化来说是噩梦。直接砍掉,整个引擎都清爽了。

- 日期只支持 Date.now(),不搞复杂的时区、格式化、历史包袱,只提供“当前时间戳”这个嵌入式最常用的功能。

- 字符串大小写转换只支持 ASCII, 不支持完整 Unicode 的大小写映射,换来的是代码量和内存占用的大幅下降。

这些限制看起来有点“怪”,但你会发现它们都有一个共同目标: 确定、简单、省内存。

2. 垃圾回收:不聪明,但非常狠

在内存只有几十 KB 的环境里,内存碎片比“内存不够”更致命。

MicroQuickJS 的垃圾回收策略非常直接:追踪式+压缩式GC。

第一层:追踪式 GC

它从一组“根对象”开始,把所有还能被访问到的对象标记出来,剩下的一次性全清。

不需要在每个对象上维护引用计数,不用担心循环引用。

每个对象可以做得非常小,只需要几个 bit 的标记信息

第二层:压缩 GC

更狠的是:活下来的对象也不会原地不动。在回收过程中,它会把所有存活对象重新排列、挤到一块连续的内存区域里。

内存不再被切成一地碎片,后续分配变得非常简单,对小内存设备极其友好

MicroQuickJS 完全不用系统的 malloc,而是自己实现了一套内存分配器,这在嵌入式世界里非常重要,因为你永远不知道系统自带的分配器会偷偷浪费多少内存。

3. 用“变态”的方式表示 JS 的值和对象

这里是 Bellard 真正“炫技”的地方。

在 MicroQuickJS 里,一个值(数字、字符串、对象、函数等)统统只有一个 CPU 字长。

在 32 位系统上,就是 32 位,这意味着:所有值都能直接放进寄存器,传参、赋值、判断都极其简单,内存布局非常规整。

对象被压缩到了极限,一个 JavaScript 对象,最少只占 3 个 CPU 字,在 32 位系统上就是 12 字节,这已经是能做到的极限了,只够存对象的基本类型信息和指向属性表的指针。

属性本身也不便宜,每个属性至少 3 个 CPU 字,所以“随便给对象乱加属性”在嵌入式里是很奢侈的事。这也解释了为什么语言层面要对动态性做那么多限制。

字符串也不走寻常路,内部存储用的是 UTF-8(更省空间),对外仍然表现为 JavaScript 熟悉的 UTF-16 语义,也就是说,存的时候省,语义上不破坏 JS 的规则。

4. 标准库直接“焊死”在 ROM 里

在很多 JS 引擎中,启动时要创建 Object、Array、Math 等一大堆对象,这些对象会常驻内存,占用 RAM。

MicroQuickJS 直接换了个思路: 编译时就把这些标准库对象生成好,以只读数据的形式,固化进程序镜像,放在 ROM 里。

运行时不需要再创建,只要引用即可,启动极快,RAM 占用极低。

总之,在嵌入式世界里,JavaScript 不再是“越全越好”,而是“刚刚好,能用就行”。

杰夫·阿特伍德(Jeff Atwood)说过,“任何可以用 JavaScript 编写的应用程序,最终都会用 JavaScript 编写”。

这句话现在也适用于嵌入式系统了!

也许在不就以后,我们就能在传感器、智能家居设备和可穿戴设备上看到JavaScript。

回到作者Bellard,他为人非常低调,不抛头露面,不写文章,不写书。

在互联网上几乎找不到对他直接的,深度采访,只能找到他的一些只言片语,例如:“我经常会厌倦一直做同样的事情,所以我会时不时地改变一下方向。”

由于他在如此多的领域,做出了常人根本无法企及的,不可思议的成就,有人甚至怀疑他就不是一个特定的人,而是一群人以这个id来发表软件。

我想Bellard之所以看起来像“一群人”,并不是因为他不真实,而是因为我们早已习惯了工业化软件生产,却突然遇到了一个仍然生活在“个人英雄时代”的程序员。

在今天这个时代,大多数重要软件都需要庞大的团队、路线图、测试、运营;而 Bellard 的作品,总是像从真空中掉下来一样:没有预热、没有宏大宣言,代码一放出来,世界就不得不承认:规则被改写了。

这样的人实在是太罕见,实在是太神奇了!

大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析 大模型训练方法全面解析 本文系统介绍了当前主流的大模型训练和对齐技术,包括监督微调(SFT)、拒绝采样微调(RFT)、信任域策略优化(TRPO)、直接偏好优化(DPO)、近端策略优化(PPO)等。这些方法各有特点:SFT简单高效但数据依赖性强;RFT通过质量筛选提升输出质量;TRPO训练稳定但计算复杂;PPO是RLHF核心算法,平衡探索与利用。文章详细分析了各方法的实现原理、优势劣势及适用场景,为开发者选择合适的大模型训练策略提供参考。 阅读详情

相关推荐

软考软件评测师备考避坑指南:过来人告诉你这5个章节最容易丢分(附2024最新考纲解析)

本文为软考软件评测师考生提供备考避坑指南,深度解析5个高频失分章节,包括标准化与信息化基础、中间件技术、软件测试模型、白盒测试覆盖准则和性能测试指标。文章结合2024最新考纲,分享实战技巧和记忆口诀,帮助考生精准打击失分重灾区,提升备考效率。

weixin_29223603的博客 467

MicroQuickJS:为极致资源而生的嵌入式JavaScript革命

MicroQuickJS的发布,其意义远不止于一个“更小的JS引擎”。它代表着一种技术思潮的回归与突破:在算力爆炸、软件日益臃肿的时代,依然有人专注于为最受限的环境赋予最强大的能力。它打破了“JavaScript属于浏览器和服务器”的思维定式,将这门语言的活力注入到物理世界的毛细血管之中。正如Bellard一贯的风格,MicroQuickJS没有炫目的宣传,只有实实在在的代码和令人震撼的性能指标。

weixin_57330672的博客 1139

python 抖音采集_python爬取抖音视频的实例详解

import requestsimport jsonimport reimport osfrom pprint import pprint as ppimport queueclass DouYin:header = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*...

weixin_35795675的博客 1864

10分钟上手MQuickJS:从命令行到字节码的高效开发流程

MQuickJS(Micro QuickJS)是一款专为嵌入式系统设计的轻量级JavaScript引擎,仅需10kB RAM即可运行,整体引擎包括C库仅需约100kB ROM空间,速度可媲美QuickJS。本文将带您快速掌握MQuickJS的安装、基础使用与字节码编译的完整流程。 ## 🚀 快速开始:安装与基础命令 ### 一键安装步骤 首先通过git克隆仓库: ```bash git

gitblog_00321的博客 810

高缺失率时空数据插补实战:从随机森林到扩散模型的性能对比

数据缺失是数据分析与机器学习建模中普遍面临的挑战,尤其在时空数据领域,传感器故障、传输中断等问题常导致数据不完整。数据插补技术旨在基于已知数据的模式和关联性,合理估算缺失值,为后续分析提供可靠基础。其核心原理在于利用数据的时空相关性(如时间周期性、空间邻近性)及与外部驱动因素(如交通、气象)的关联构建预测模型。这项技术的价值在于能将不完整的数据集转化为可用于高质量分析和预测的可用资产,广泛应用于环境监测、交通流量预测、金融风控等领域。本文聚焦于一个极具挑战性的场景——PM2.5监测数据缺失率高达82%,通过

weixin_30363285的博客 544

String+CytoScape构建PPI网络

1.下载CytoScape Cytoscape是一款专业强大好用的物生信息分析软件,主要达用于专业的研究人员使用,软件主要适用于整合模块化网络和生物科学联系网络图的绘制,支持多种文件格式,导入后就可以直接进行编辑或者分析等操作了,除此之外,软件还提供了强大的编辑工具,支持添加相应的注释信息,软件基于java环境组件打造。 下载地址:https://cytoscape.org/ 因为软件基于java...

xiaobai1_1的博客 1万+

[APM32F4] 跟随大神 Fabrice Bellard 的脚步,把 MicroQuickJS 移植到 APM32F427

本文介绍了将Fabrice Bellard开发的MicroQuickJS轻量级JavaScript引擎移植到APM32F427微控制器的过程。移植实现了基本的GPIO控制和中断功能,包括LED闪烁和按键响应。关键步骤包括:1)创建基础工程实现串口和GPIO驱动;2)修改MicroQuickJS源码适配32位MCU环境;3)设计JS类封装GPIO操作;4)通过Flash分区存储JS脚本。文章详细说明了类定义、内存管理和脚本存储方案,并提供了完整的移植示例代码仓库。该移植证明了在资源受限的嵌入式系统中运行Jav

ic2121的博客 734

WordPress MasterStudy LMS插件 SQL注入漏洞复现(CVE-2024-1512)

WordPress Plugin MasterStudy LMS 3.2.5 版本及之前版本存在安全漏洞,该漏洞源于对用户提供的参数转义不足,导致可以通过 /lms/stm-lms/order/items REST 路由的 user 参数进行基于联合的 SQL 注入。

0xSec 1437

QEMU & FFmpeg作者Fabrice Bellard推出MicroQuickJS,一款面向嵌入式系统JavaScript引擎,仅需10K RAM

MQuickJS 仅支持接近 ES5 的 JavaScript 子集。它实现了一种更严格的模式,禁止某些容易出错或效率低下的 JavaScript 结构。尤其是,它采用了追踪式垃圾回收器,虚拟机不使用 CPU 栈,并且字符串以 UTF-8 格式存储。由于是极简实现,源码的里面的数学库文件libm.c和一些字符处理问题,也非常值得借鉴学习,完全不依赖其它C库的独立实现,非常适合整理出来自己使用,用在M0,M3等资源有限的芯片很合适。若 CPU 无浮点支持,还包含浮点模拟器,体积可能小于 GCC 提供的版本。

Simon223的博客 782

RK3588开发笔记-5G模块(SIM8200、广和通FM160、移远RM500U)调试笔记

RK3588 CPU提供了丰富的外设接口,本文主要介绍通过usb3.0接口驱动5G模块来实现5g无线数据传输功能。在物联网和边缘计算领域,5G网络支持的高速率、低延时连接为应用带来了更多可能性。RK3588作为一款高性能SoC,适合用于5G联网应用。SIM8200广和通FM160和移远RM500U。在RK3588上调试5G模块可以为设备提供稳定的高速联网能力。本文介绍了如何配置和调试SIM8200、广和通FM160和移远RM500U模块,通过AT指令和QMI/MBIM工具实现5G数据连接。

flypig has a dream! 2669

【测开求职】面试题:操作系统 吐血整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。涵盖考研范围内的所有知识内容,读者可以先查看上面的链接走一遍操作系统的整体框架结构。其中,重点难点以及易混淆的知识点,笔者用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。另外操作系统在校招中有非常明显的重点,一般情况下只会考察进程管理,内存管理,和设备管理,且这三者考察频率依次递减,文件管理基本不会考察。

vector的博客 7908

地表最强的 9 则程序员笑话

多图预警。 编者按:不同的工种,有不同的共同笑点。以下是程序员们“都懂的”。本文编译自gitconnected,原文作者Pralabh Saxena,原文标题:9 Ultimate Programming Jokes。 开怀大笑是减压的最佳方式之一。身为程序员,有什么比编程笑话更令人减压的呢?我们都喜欢笑话,尤其是那些日常生活中的梗。我总结了下面这些跟程序员相关的笑话,希望这篇文章能让你精神振作,用欢笑打开这一天。 1、这招每次都奏效 我要跟不存在的虚拟女朋友试一下。之后告诉你管不管用。 ..

m0_46163918的博客 6761

RK3568笔记二:部署手写数字识别模型

部署手写数字识别模型,使用手写数字识别(mnist)数据集训练了一个 LENET 的五层经典网络模型。Lenet是我们的深度学习入门的必学模型,是深度学习领域中的经典卷积神经网络(CNN)架构之一。过程分为:训练,导出ONNX,转化RKNN,测试。

1170

从爆火的《逆袭人生》到“地表最强”AI程序员Genie, 如何破局?

嗨, 大家好。最近发生的两件事, 让我感触很多, 也不由得产生了一丝焦虑. 我相信对深处职场的每一个人, 都会有影响。接下来分享一下作为“滋生”程序员的我的一些感受, 以及如何破局。从《逆袭人生》爆火开始相信大家最近都有看过(或者刷到过)《逆袭人生》这部电影.它讲的是曾经意气风发的高志垒(徐峥饰, 剧里是一位资深算法负责人)在生活的重压下,中年失业被裁, 在家庭和生活的重压下,被迫选择成为一名...

趣谈前端 1154

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

地表最强AI程序员Genie:自主思考与编码的未来

Genie的诞生不仅是AI技术发展的一个缩影,更是对未来软件开发模式的一次大胆预测。随着Genie等AI程序员的不断进步,我们有理由相信,一个更加智能、高效和协作的编程新时代即将到来。

BuluAI的博客 1716

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最强AI程序员砸饭碗:84秒跑通代码,像人一样思考!团队仅5人

金磊 西风 发自 凹非寺量子位 | 公众号 QbitAI继Devin之后,又一个AI软件工程师被刷屏了——它叫Genie,号称目前地表最强,已经可以像人一样思考和行动了!那么这个“地表最强”,到底强到什么程度?先来看下评测分数。在权威榜单SWE-Bench中,Genie以解决了30.07%问题的成绩夺得榜首。(SWE-Bench是一个用来评估大模型解决现实中软件问题的基准。)而这个成绩可谓是遥遥领...

量子位 1027

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

地表上最强编程语言——C语言

对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。 C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在内存中是一种怎样的状态,操作系统和用户程序之间有着怎样的“爱恨情仇”,这些底层知识决定了你的发展高度,也决定了你的职业生涯。 如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越...

weixin_45820912的博客 840

@程序员,地表最强的 优快云 原创博主大赛来了!

原创·博主大赛“GEEK+”技术人召集令!原创文章技术干货强者对垒活动时间:8月4日-9月15日活动入口:http://suo.im/5DLf9X优快云博主大比拼,硬核干货输出!活动流...

优快云资讯 2745

地表最强程序员装备“三件套”,你知道是什么吗?

据播妞观察程序员是一个很“神奇”的群体大部分人有一个共同的特点:会赚钱但是不太会花钱他们的世界就是不停的学习、敲代码、学习、敲代码......然后眼睁睁看着发际线日渐后退Stop!Stop!Stop!程序员要学会对自己好一点好的装备,可以让你事半功倍又到了播妞给大家送福利的时间你知道这届程序员的行家装备“三件套”是什么吗?↓↓↓(我们今年已经累计送出500+份礼品)地表最...

传智播客的专栏 1210

地表最强AI,GPT-4专治各种不服

再过3个月,AI能抵达的天花板会有多高?最终还是打工人承担了所有,相信屏幕前的你肯定还有更厉害的想法,欢迎留言讨论~

JNPF 专注低代码开发 2653

地表最强 GitHub 使用指南

GitHub使用指南:从工具下载到商业机会挖掘(150字摘要) GitHub不仅是代码仓库,更是优质工具库和需求金矿。新手需掌握四个核心:1)看README了解功能,Releases下载安装包;2)通过Issues发现真实痛点,比官网更诚实;3)关注项目维护状态而非Star数,避免失效工具;4)警惕源码与成品区别,绿色按钮慎点。进阶用户可将反复出现的用户抱怨转化为选题(如数据迁移难题),或挖掘商业机会——通过打包安装、中文适配、部署维护等增值服务变现。开源≠安全,下载前需查权限、看反馈。善用搜索语法(如&q

2503_94545876的博客 4059

骚操作!用 CPU 烤肉,这位程序员做到了

整理 | 王晓曼出品 | 程序人生(ID:coder_life)高端的食材往往采用最朴素的烹饪方式。这不,近日,西二旗某公司程序员加班到深夜用CPU烤肉的视频火了。视频中,程序员小哥熟练...

程序人生的博客 534

地表最强编程 AI 诞生!Claude 4 连续自动编程 7 小时,实测细节惊艳程序员

就这几天,AI 圈像是过年了。就在刚刚,Anthropic 正式发布 Claude 4 系列模型:Claude Opus 4 和 Claude Sonnet 4。没喊口号,没搞长篇论文,这次 Claude 升级的关键词只有一个:干活。据 Anthropic 宣称,Opus 4 是目前全球最强的编程模型,能够稳定胜任复杂且持续时间长的任务和 Agent 工作流。而 Sonnet 4 则着重强化了编程和推理能力,能更精准地响应用户的指令。

2401_85375298的博客 1647

地表最强AI 辅助编程工具——GitHub Copilot安装教程

地表最强AI 辅助编程工具——GitHub Copilot安装教程

m0_57171062的博客 1万+
上一篇: 用TRAE写了一年代码,我重新理解了程序员的价值!
下一篇: 国产编程语言意外风靡日文技术圈!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值