惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
F
Full Disclosure
A
About on SuperTechFans
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
Know Your Adversary
Know Your Adversary
K
Kaspersky official blog
L
LINUX DO - 热门话题
Recorded Future
Recorded Future
C
Cisco Blogs
M
MIT News - Artificial intelligence
T
Tenable Blog
G
GRAHAM CLULEY
月光博客
月光博客
Recent Announcements
Recent Announcements
V
Visual Studio Blog
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
T
Threat Research - Cisco Blogs
D
DataBreaches.Net
P
Privacy International News Feed
P
Proofpoint News Feed
I
Intezer
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Hacker News
The Hacker News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - Franky
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
P
Palo Alto Networks Blog
Last Week in AI
Last Week in AI
小众软件
小众软件
Hacker News - Newest:
Hacker News - Newest: "LLM"
O
OpenAI News
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News and Events Feed by Topic
The Cloudflare Blog
Spread Privacy
Spread Privacy
酷 壳 – CoolShell
酷 壳 – CoolShell
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
B
Blog RSS Feed

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
所写即所得:科研民工的编程语言速通方案 - 少数派
2023-06-13 · via 少数派

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


前言

基于 Jupyter 等即时的编程工具,减缓「编译」「程序管理」「IDE 配置」对编程本身造成阻碍。从而实现快速上手编程语言。

免责声明:「函数式语言」不在本文讨论范畴,只是简单说一说我日常研究用到的一些语言的速成途径。此外,本文重点仅仅停留在「理解一门编程语言语法和基本使用」,复杂的场景不进行讨论分析。

前些日子写了一篇文章,简单说了一下自己之前英文速成的一套方案:让语言学习更简单的 WordFlow。今天在火车上的时候,想到当时挖的一个坑,于是打算填了。

第一门编程语言

对于大部分编程和科研人员,第一门接触的编程语言大概率是大学第一年学习的「C 语言编程」。回顾一下当时的学习,可以说很多场景也是比较「莫名其妙」。我依稀记得自己当年最早用纸和笔写代码,经历一段时间之后学习安装「DEV C++」,学了一些「虽然不明白为什么要这么用,但是确实可以跑起来」的「技术」。但总之,自己就懵懵懂懂的学会了用 C 解决自己科研生活中的一些问题。

但是不可置否的是,我们在那一门课程的学习过程中,确实遇到了很多「本不应该在那门课程上解决的问题」。比如我对系统的最早认识、对编译的概念也是在那门课程中逐渐学习的。而这些事情,本应该在 Introduction to Computer System 或者 Introduction to Computer Science 这样的课程结束之后。除此之外,在我们学习最初的时候,最先不得不接触 #include<stdio.h>int main(int argc, char **argv) 之类后续学习了比较长时间之后才能理解的概念。所以实际上,学习的过程并不是很平滑。不过还好,作为大学的入门课程,他的考核过程也只是笔试。通过暴力记忆和理解程序语法就可以通过考试了。

但其实,在这门课程之后,我们大脑里建立了许多「Hidden Layers」,这在我个人看来是最有价值的一部分。在之后学习 Python 和其他语言的时候,有了「变量」「分支」「循环」「函数」等概念,可以将知识进行有效的迁移。以及如何用「编程解决问题」的思考模式,会长期持续地影响我们之后的学习过程。回顾这些经历,一个自然的想法也孕育而生,能否将最单纯的编程学习过程独立出来,用最快的方式去理解一门程序语言?

Jupyter, and more on Jupyter?

言已至此,大家也大概可以猜到如何更快更直观地学习了。编程的学习过程无法逃避「动手实践」这一最重要的环节。如果将「配置环境」,「编译调试」,「运行代码」的流程压缩简化到最简,不会对学习过程产生阻碍,就可以提升学习的流畅度了。

所以从学习层面上,Python 这类解释性语言有一些天然的优势。配合上 Python 的最好用的工具:Jupyter,执行代码就变得更加直观。可以把自己在各种视频和书籍中的代码直接复制过去执行,从而理解各种复杂的语法。Jupyter 的各种教程网上已经很多了,这里不做赘述。但是,Jupyter 本身作为学习工具,可以添加 Markdown Blocks 作为笔记,可以记录代码和运行结果,方便自己之后理解复习,方便打包共享。这些优势如果只能为 Python 服务,属实有点浪费。

所幸的是,Jupyter 的核心,「Jupyter Kernel」是一个可以替换的模块。一个非常常用的功能:「Bash Kernel」。可以方便我们在 Python Script 之外添加 Bash Script 作为辅助,提供更加便捷的系统交互。Jupyter Bash Kernel 中提供了教程作为参考。简单来说,使用:

pip install bash_kernel
python -m bash_kernel.install

即可完成 bash kernel 的安装。

同理,对于一些其他的语言,Julia 有 IJulia.jl;Go 有 gophernotes;Swift 有 swift-jupyter

虽然利用 Jupyter 学习新语言多快好省,但是也不得不说一些缺点:

  1. 部分语言的 Jupyter 配置过程比较复杂,反而会成为学习上的阻碍。安装时候建议参考相关的视频教程进行操作。例如 rust 的 evcxr、 JS 的 ijavascript、Java 的 IJava。如果自己配置还有一些困难,建议找有经验的朋友配置,或者在 Colab 中找对应已经完成配置的环境。
  2. 简单的上手语法之后,Jupyter 并不能替代学习者对于项目构建过程的理解。某种意义上学会的是语法八股,做点 LeetCode 之类的小练习可能尚可,可是实打实的进行应用就存在一些问题。因此不能过度依赖。

不过,诸位可能发现我没有提本文之前提过的主角:C++。C++ 确实没有一个好用的 Jupyter Kernel,因为一个强大的组织做了一个神奇的工具: ROOT。

ROOT

在本科快毕业的时候,我和一些天文系的同学聊天,聊起了他们用的一款神奇工具:ROOT。着实惊为天人,让我相见恨晚。ROOT 可以简单理解成一个「编程了解释语言的 C++」,由 CERN(The European Center for Nuclear Research)早在上个世纪就提出了开发计划。开发之初的想法非常简单,就是为了方便科研人员进行数据分析处理,而有一些科研人员更习惯用 C++,于是 CERN 就维护了这么一个神奇的工具。

相信熟悉编译原理的朋友也能理解这件事情本身的复杂性。C++ 的语法并不适合编程一个解释性语言,而且要适配现有的编译器,适配多样的 C++ 语法也绝非易事。而且 CERN 的项目组至今保持活跃,2015 年还开发了 Jupyter 模块。

这里也把 ROOT 的使用方法分享给大家。

ROOT 安装

ROOT 有着极度简化的安装流程,在各个平台上,基本上只需要一两行命令就能完成安装 ROOT install。例如 MacOS 上只需要:

brew install root

而 Ubuntu 只需要:

sudo snap install root-framework
snap run root-framework

ROOT CLI 直接使用

命令行 ROOT 的使用的方法也和 Pyhton 非常类似。安装完成后,输出了和 Python CLI 类似的交互:

输入 .demo 可以看到一些可交互的参考案例:

和 Python 一样,也有类似的快捷键操作:

  • Ctrl + D:退出
  • Ctrl + C:终端当前执行的命令
  • Ctrl + R:检索历史
  • Ctrl + P:上一条命令
  • Ctrl + N:下一条命令(使用 Ctrl + P 之后使用)

一些常用的指令是使用 . 前缀说明的,例如 .help。ROOT 也保留了传统编译性 C++ 的一些特写,例如可以使用 .O0.O3 实现 O0-O3 的优化,也可以使用 > 完成重定向,使用 stateundo 实现倒带回溯。

到这里还只是「ROOT 常态发挥」的范畴,接下来是是「ROOT」的仙术时间。

ROOT 仙术

在施展仙术之前,先把 ROOT的 的 Jupyter 配置好,方便之后编辑测试。

首先在 Python 中测试 ROOT 的可用性,直接 import ROOT 是不能直接使用的。但 ROOT 并不是通过 pip 进行安装,而是:

source /opt/homebrew/opt/root/bin/thisroot.sh

而在 Linux 下可能是:

source /usr/local/root_install/bin/thisroot.sh

需要找出 thisroot.sh 的路径,如果不确定,也可以通过 which thisroot.sh 进行确定。

之后在 Python 中 import ROOT 进行测试:

Tips:Python 版本过新可能不适配:

这种时候适当降低 Python 版本即可。建议使用 Pyenv 进行管理。

之后在 Notebook 中,import ROOT 之后就可以使用 ROOT 了。可以在一个 block 前使用 %%cpp 声明模块使用 C++。

可以使用 ROOT 中的统计函数:

更离谱的是,可以直接使用 Python 调用自己写的 CPP 模块1

对于日常测试一些简单的函数模块也非常好用。作为一个 CERN 的御用数据分析器,在 C++ 的基础上实现了类似 Matplotlib 的功能,可以生成许多图表:

流程图


可交互的统计图表

更多的好用功能可以在 ROOT 的文档里继续挖掘。近期有时间的话会整理类似 Matplotlib Examples 一样的页面,方便自己和别人查阅。

Interpreter is not panacea

解释器可以简化学习过程,但不是万能的。深入理解编程语言的底层原理对于学好一门语言至关重要,例如对于数组的使用,需要理解内存机制和空间局部性。在此基础上,还可以学习更复杂的高级用法,如多维张量存储、超大数组、文件系统映射到数组等。所以,最后还是要在此重新声明,工具的作用是有限的,还是需要进行踏实的学习。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀