![]() | 1 SlipStupig 2017-12-22 22:59:19 +08:00 为什么不选 go 呢? |
2 lolizeppelin 2017-12-22 23:34:55 +08:00 via Android 要 c 会 c 才能看 linux 源码 |
3 neoblackcap 2017-12-23 00:29:02 +08:00 @praynise 据我了解,多数扩展库都是用 C 写的,大概是人们不想再写一个 wrapper 吧。C 库加速 python 的场景只能说业务方的需求更大。单纯运维的角度用得并不多,除非你会细到内核之类的地方,这些地方 python 的确是比较缺失的。比如你基于 eBPF 写一个非入侵式的 profiler,那么用 C 是必然的。或者一些辅助 coredump 时收集资料的,可能还是得用到 C,否则以我一个 devops 的经验来看,用得真不多。 |
![]() | 4 yexiaoxing 2017-12-23 05:00:32 +08:00 via iPhone 我觉得… 还是有必要的… 至少知道一些比较底层的东西,以后优化也有好处? |
![]() | 5 noqwerty 2017-12-23 05:14:17 +08:00 当你要处理的东西到了一定数量级,又是很小众别人没做过(优化过)的问题,就需要自己撸袖子开干了。 |
6 cdlixucd 2017-12-23 05:17:49 +08:00 via Android 我靠 运维还要写代码 |
7 jimzhong 2017-12-23 07:31:06 +08:00 可以学 C,顺便看看 CPython 的实现。 |
![]() | 8 sunwei0325 2017-12-23 08:54:08 +08:00 ![]() 我心中的 python 大神董伟明也是运维转开发的, 老铁加油 |
![]() | 9 YanSep 2017-12-23 09:03:33 +08:00 via Android 其实编程重要的是思想,语言大多数都相通的,思想很重要,语言只是个工具,C++有必要了解下,不要深入,如果你想学 python 的话 |
![]() | 10 Morriaty 2017-12-23 09:11:55 +08:00 我还是坚持认为需要什么再学什么,而不是人云亦云的学习。 比如你在使用 docker 的过程中,遇到了一些 UNdocumented feature,这时候你可能真的需要去源码里看一眼,那就该去看一眼 go 和虚拟化技术了。 再比如 java、流处理之于 storm ; scala、分布式理论之于 spark,etc. |
![]() | 11 ipwx 2017-12-23 09:33:09 +08:00 boost::python 可以黏合 python 和 c++。 不过要学到玩转 boost 库的程度,需要时间。 |
![]() | 12 secondwtq 2017-12-23 09:53:50 +08:00 Python 和 C++ 没关系,Python 更像是 C 变成脚本语言之后做了一些增强的产物 |
![]() | 13 justou 2017-12-23 10:55:45 +08:00 ![]() 说说我从 python 深入下去的思路: Python → Cython → C → C++ Python: 各种入门级书籍, 官方文档教程→The Python3 Standard Library by Example(新出的) /Python Cookbook /Fluent Python Cython: 官方文档 → Learning Cython Programming/Cython A Guide for Python Programmers C: kenneth A Reek, Pointers on C(C 与指针) → Expert C Programming: Deep C Secrets(C 专家编程) → C Traps and Pitfalls(C 陷阱与缺陷) 这三部曲都有影印版 (这时候可以开始读 Python 源码了, 有一本叫<python 源码剖析>的书很值得参考, 虽然比较老,好像是剖析的 py2.5) C++: C++ Primer(写得有点嗦, 以前我用这个入门的, 应该还有更好的) → The C++ Standard Library: A tutorial and reference(2nd) → C++ Templates The Complete Guide(2nd)(最近才出的 2, 详述了 C++11/C++14/C++17 的模板特性) → Effective Modern C++ , Optimized C++ , Clean C++ 等各种修炼 c++内功的, C++ Concurrency in Action 专门讲多线程编程的... ----------------------------------------------------------- 以上仅仅是从编程语言方面的思路, 个人觉得学习曲线没那么陡, 但是比较长---看似比较长, 但有一定积累后可以接收得很快, 虽然是在走上坡路, 但是积累的东西会让你做加速运动, 但在学的时候要多加实践多做笔记, 不然忘得飞快. 数据结构算法是必须的, 数据库网络,计算机系统, 操作系统,编译原理之类的根据自己的方向和需求去补充. 最后的编程技能就是 Python/Cython/C/C++的组合拳, 面对实际问题时可以施展得很开. 在学校的时候做计算物理, 用 Cython/C/C++加速 Python 用得挺多的, Python 很多时候是做数据的预处理, 以及一些不是计算密集型的数据处理(数据处理毕竟是 py 强项), 然后计算密集型的就用 Cython/C/C++完成(在 numpy/scipy 无法满足性能要求的情况下), 最后返回结果给 Python 后处理; 到公司后做图像算法, Python 常用来做一些给大家用的小工具(PyQt), 图像批处理, 算法测试, 差不多当脚本用了, 最后算法是用 C++写成 dll 给后端的 C#调用, 因为我不太懂 C#, 后端哥们儿又不太懂 C++, 对接起来很是尴尬, 最近我们准备组队一起刷 C++跟 C# |
![]() | 14 ryd994 2017-12-23 11:45:47 +08:00 via Android @neoblackcap c++可以用 C wrapper 啊,这是标准所定义的 合法的 C 代码一定也是合法的 C++代码 |
![]() | 15 eliteYang 2017-12-23 11:49:07 +08:00 需要什么学什么吧,不然也容易手生,而且也写不好 |
16 neoblackcap 2017-12-23 12:18:49 +08:00 via iPhone @ryd994 可以是可以,不过我觉得他们是懒了,的确大部分扩展都是 C 写的,C++写的太少了。 |
17 maobush 2017-12-23 22:07:31 +08:00 via Android 看需求,主要还是思想,语言只是工具 |
18 gnaggnoyil 2017-12-24 03:19:56 +08:00 @ryd994 C 和 C++的合法代码集合相互之间没有包含关系. |