V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
uhayate
V2EX  ›  Python

现在想看 Python 源码, C 语言需要达到哪种水平?或者说怎么样快速提升到这种水平?

  •  
  •   uhayate · 2016-09-24 10:20:03 +08:00 · 3619 次点击
    这是一个创建于 2989 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的 C 语言学的很水。最近对 Python 底层的东西感兴趣,想看看源码,不过看到那么多的 C 语言代码就头疼。
    所以想问问,通过哪些途径,可以快速提升 C 源代码的阅读水平?(若书籍、代码等请列举,谢谢)
    9 条回复    2016-09-24 17:04:59 +08:00
    zoowii
        1
    zoowii  
       2016-09-24 11:08:54 +08:00
    和 C 语言水平应该关系不大
    xuqd
        2
    xuqd  
       2016-09-24 11:09:28 +08:00
    《 Python 源码剖析 》
    uhayate
        3
    uhayate  
    OP
       2016-09-24 11:16:03 +08:00
    @xuqd 正在看。
    wizardforcel
        4
    wizardforcel  
       2016-09-24 11:18:23 +08:00
    《 Python 源码剖析 》

    CPython 是 C 写的面向对象,如果不刻意去理解还真看不懂。
    uhayate
        5
    uhayate  
    OP
       2016-09-24 11:29:09 +08:00
    @wizardforcel 就是咯。 C 语言水平太菜了,所以需要提升一下。
    ruoyu0088
        6
    ruoyu0088  
       2016-09-24 13:11:32 +08:00
    有个好的代码阅读软件比较重要。然后就是用 ctypes, cffi 之类的写一些实验代码帮助理解。
    sylecn
        7
    sylecn  
       2016-09-24 13:21:03 +08:00
    如果你对编译器和语言感兴趣,才建议看 python 源码。否则,单纯为了学 C ,不推荐看 CPython 源码。
    如果 C 基础不行,建议选一种简单的 scheme 实现开始看,不要上来就看 python 这么复杂而且有历史包袱的语言。
    看编译器的实现,需要对语言和编译器技术有一定了解,单单了解 C 的库和语法是远远不够的。所以如果这些有欠缺,先补一下编译器原理之类的,再看源码会比较容易。

    如果你只是看部分标准库的实现,那就当我没说。那些内容除了遵循 python 模块规范和使用 python 数据结构,其它都和标准 C 差不太多。看多了就懂了。
    starcraft
        8
    starcraft  
       2016-09-24 13:40:43 +08:00 via iPhone
    和 c 水平没太大关系,因为这是基础中的基础。读 python 源码轻不轻松取决于你整个编译知识体系。你纠结错了关键点。 c 不过关的话,连第一步都没迈出....
    jmp2x
        9
    jmp2x  
       2016-09-24 17:04:59 +08:00
    @wizardforcel 最近看了些,确实是,用结构体去实现类对象,结构体的嵌套前置,就是父类,实现的很有意思。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2799 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.