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 1
我心中的 python 大神董伟明也是运维转开发的, 老铁加油
|
9
Flobit 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 7
说说我从 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++的合法代码集合相互之间没有包含关系.
|