V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  penguinWWY  ›  全部回复第 2 页 / 共 6 页
回复总数  111
1  2  3  4  5  6  
2022-12-15 19:45:08 +08:00
回复了 ClericPy 创建的主题 Python 没人讨论下最近热门的 Codon 和 socketify.py 么
看了下 Codon 的实现,目前只能算是个玩具
这个思路有点像前几年在 js 上做 Code smells and type analysis —— 只要用户写出非常易于优化的代码,我就可以优化的非常好。
2022-11-10 12:39:31 +08:00
回复了 kelvin_fly 创建的主题 职场话题 把每个月的工资当最后的一次工资
@XVXVXXX 这个回家,莫名觉得很有气势
2022-09-29 18:12:54 +08:00
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
啃龙书没啥意义。
如果你想整体了解编译,不要在 parser 上浪费时间,parser 是一个非常“符合直觉”的事情,本质上就是如何把一段文本变成结构化的数据,所以不要被各种名词唬住,自己写一个简单的表达式解析器,就能大概明白了。同时 parser 在整个编译过程中只占了很小的一部分,基本没啥值得关注的东西。

编译整体看是一个不断 lower ( desuger )的过程,用简单代替复杂,具体代替抽象。所以整体看的话,你需要大概了解一下体系结构和指令集,也就是编译的终点是什么样的。中间的过程不管是 AST 也好,IR 也好,no-target machine code 还是 target machine code ,从认知上来讲,都不是必须的(你完全可以设计一个非常简单的表达式语言,然后直接翻译成汇编指令),这些步骤只是为了满足某种需求( native code or Interpreter ? JIT or AOT ? interprocedural or intraprocedural ?)而增加的、便于使用的中间层。

明确输入(语言、特性、功能)和输出(目标指令集),剩下的就是取舍和拼接。现在编译体系复杂之处在于为了某些目标(性能、功能、复杂的语言特性)而在不同层次间不得不产生耦合,使用某些约定(而不是设计)。当这种情况越多,原本清晰的结构就会变成一坨。。。
2022-09-07 20:49:42 +08:00
回复了 ResistanceTo 创建的主题 Python 切实有需求的点子
写新的 test ,或者写一些方便 debug 、处理日志的小脚本
2022-08-30 21:01:11 +08:00
回复了 Yuan2One 创建的主题 Python 懵了兄弟们, Python 中的空列表到底是个什么玩意
list 生命周期结束的时候会调用 list_dealloc 函数,但并不会立即释放内存。而是存放在对应的 free list 中,如果有新的大小合适的 list 生成则会直接使用,减少内存分配和释放的消耗。

print(id([])); print(id([]))

两次分配的 list 是同一个指针,所以 id 相同。debug 模式是通过 trace 实现的,中间有别的 list 生成(或释放),所以没有使用到同一个指针,id 不同
2022-08-01 14:30:03 +08:00
回复了 penguinWWY 创建的主题 Python 发一个看起来没啥用的字节码编辑库
2022-08-01 14:29:21 +08:00
回复了 penguinWWY 创建的主题 Python 发一个看起来没啥用的字节码编辑库
2022-08-01 12:22:46 +08:00
回复了 pkupyx 创建的主题 程序员 奇特的码农群招一下新人
一眼群聊精华就是入关,然后你说 no 键政~~~
2022-05-30 11:27:41 +08:00
回复了 codists 创建的主题 Python Python array 文档里面的 machine values 具体指的是什么?
@codists 合着你知道”machine value“不是一个常见的用法?这本来就不算是一个专业术语,我们帮你推测验证它的具体含义,然后你说没有给出定义?要饭要的这么理直气壮的吗?

“计算机科学与技术”专业毕业的人不知道内存表示和补码不是一码事?不会 C 语言? CSAPP 没看过?毕业挺好,下次不要毕业了。
2022-05-25 13:30:48 +08:00
回复了 codists 创建的主题 Python Python array 文档里面的 machine values 具体指的是什么?
@codists 内存表示和二进制补码不是一个东西

arraymodule.c 里的实现就是从一个 PyBuffer 里 memcpy 了数据,fromfile 的实现是直接调用了 frombytes ,所以内存中如何表示,array 就如何存储,这么解释不明白?

“an array of machine values”指的就是存在多个元素,那么用每个元素的内存表示,组合成一个数组。

所以楼上让你学 C 语言还真说对了
2022-05-24 13:02:53 +08:00
回复了 codists 创建的主题 Python Python array 文档里面的 machine values 具体指的是什么?
@codists machine value 就是指数据在内存中的表示啊,前几楼说的没啥问题
2022-05-24 12:37:04 +08:00
回复了 RRyo 创建的主题 程序员 你们下班之后还会用工作使用的语言写代码吗
在家当然是什么爽用什么
kotlin 、scala 、rust 、ocmal 一把嗦
2022-05-11 00:38:45 +08:00
回复了 hhhhhh123 创建的主题 Python 有没有质量好一点的 vx 群或者 qq 群
一个群,如果不用来开车,那还有什么意义
这两件事情之间没什么特别大的关系。

除开汇编,任何语言的执行要么通过编译器编译到机器指令,要么通过解释器解释执行,包括楼上所说的各种硬件特性,也是编译器能够生成这种形式的机器码,跟语言本身没啥关系。

换句话说,编译器优化的极限决定了语言性能的上限,你拿一个玩具编译器去编译 C 代码,也跑不过 cpython 解释执行的 python 代码。

而一个基本的结论是,动态特性的使用跟优化效果成反比,跟执行时的负载成正比。

举个例子,如果 C 语言现在改成函数调用必须使用函数指针实现,不允许直接调用函数名,并且这个指针变量必须得是全局的。那么意味着所有 interproduce optimization 、inline 、link time optimization 都不起作用了,其他 DCE 、GVN 之类的优化也将受到巨大限制,性能下降百倍起步。

反过来,如果对 python 做出各种限制,比如不允许使用继承、一个变量只允许一次赋值等等,然后为这个受限制的 python 再实现一个编译器,那么完全可以获得跟 C 语言在大部分场景下相似的性能,即便它不能手动 mallco/free 。
2022-01-07 11:07:05 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@junnplus 可以呀
2022-01-07 11:06:27 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@tkmiles 我们之前有人参加了 openEuler Compiler SIG 的技术沙龙
https://mp.weixin.qq.com/s/3u-y0NL2qC4tS8l1SWyf-A
第四个——Python 在大数据领域的实践和思考,但是视频好像没有放出来
但是因为缺人,宣传上的事情还没有投入
2022-01-06 14:53:36 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@Actrace 如果只是单纯复刻的话,很难比 CPython 优秀
2022-01-06 13:07:24 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@podel 我们真的可以招精通 Python 的程序员。。。。见 “其他背景类”
2022-01-06 10:17:30 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@dundun1 将来搞 go 编译器也不是不行哇
1  2  3  4  5  6  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3745 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 04:25 · PVG 12:25 · LAX 21:25 · JFK 00:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.