我这样的学c/c++从哪里开始比较好?

n
nowhere7
楼主 (未名空间)

好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
写过很多年python,主要当胶水语言处理分析数据
这些年的工作用C#,挺喜欢

学c/c++两个目的:
1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
2. 用python或者r的时候,有需要写点性能关键的code

感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学基础c,或者最新的cpp标准就好?

我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考虑。c++坑是多点,不过我们的应用也没多么复杂。

n
netghost

如果C#用的好好的爲啥要改用C++?

沒有明確的目的換語言,都是不幹正事。
【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

n
nowhere7

我的两个学习目的不包括c#改c++

c#改c++只是我目前工作可能遇到的问题
真要改,我也就跟着team学了
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 如果C#用的好好的爲啥要改用C++?
: 沒有明確的目的換語言,都是不幹正事。
: ++

p
pptwo

这年头性能关键估计numpy都能搞定,C++自己造轮子能快过numpy基本不可能。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

x
xiaoju

去年水木上有青椒出两万rmb雇人用C++写个比numpy快的,认为轻而易举。。。

【 在 pptwo (pp) 的大作中提到: 】
: 这年头性能关键估计numpy都能搞定,C++自己造轮子能快过numpy基本不可能。
: ++

g
guvest

就算一时赢了。numpy背后那么多人在维护,长远你也赢不了。有大公司,有生物的,
有化学的,什么人都有。
跟在同样约束条件下numpy竞争,基本上可以说是不智之举。
【 在 pptwo (pp) 的大作中提到: 】
: 这年头性能关键估计numpy都能搞定,C++自己造轮子能快过numpy基本不可能。
: ++

n
nowhere7

性能相关的也不都是矩阵计算了
我就是想让我自己feature complete。 写python/R, 不能写点c/cpp觉得技能不完整
【 在 pptwo (pp) 的大作中提到: 】
: 这年头性能关键估计numpy都能搞定,C++自己造轮子能快过numpy基本不可能。
: ++

x
xiaoju

不能写汇编你的技术也不完整

然后不能调试数字电路,不能设计FPGA你还是不完整

不用说杀猪砍柴掏厕所打猎等等

【 在 nowhere7 (折腾) 的大作中提到: 】
: 性能相关的也不都是矩阵计算了
: 我就是想让我自己feature complete。 写python/R, 不能写点c/cpp觉得技能不完整

n
nowhere7

嗯,你不去自杀你也不完整
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: 不能写汇编你的技术也不完整
: 然后不能调试数字电路,不能设计FPGA你还是不完整
: 不用说杀猪砍柴掏厕所打猎等等

x
xiaoju

这个地球上总有人杀猪砍柴,人家活的好好的,你也不用寻死觅活

【 在 nowhere7 (折腾) 的大作中提到: 】
: 标 题: Re: 我这样的学c/c++从哪里开始比较好?
: 发信站: BBS 未名空间站 (Sat May 16 21:59:37 2020, 美东)
:
: 嗯,你不去自杀你也不完整
: 【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: : 不能写汇编你的技术也不完整
: : 然后不能调试数字电路,不能设计FPGA你还是不完整
: : 不用说杀猪砍柴掏厕所打猎等等
:
:
:
: --
l
lshtar

直接c++刷题吧
c
centralla

你这是脱裤子放屁 !
叶公好龙!

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

T
TheMatrix

好话坏话要分清。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 嗯,你不去自杀你也不完整

s
sinical

re

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 如果C#用的好好的爲啥要改用C++?
: 沒有明確的目的換語言,都是不幹正事。
: ++

s
sinical

这个benchmark是怎么定的
多大的矩阵 什么运算

【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: 去年水木上有青椒出两万rmb雇人用C++写个比numpy快的,认为轻而易举。。。

x
xiaoju

按照楼主的意思,也不需要太快,姑且暂时提高1000倍吧

【 在 sinical (一江春水向东流) 的大作中提到: 】
: 标 题: Re: 我这样的学c/c++从哪里开始比较好?
: 发信站: BBS 未名空间站 (Sun May 17 14:54:14 2020, 美东)
:
: 这个benchmark是怎么定的
: 多大的矩阵 什么运算
:
: 【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: : 去年水木上有青椒出两万rmb雇人用C++写个比numpy快的,认为轻而易举。。。
:
:
:
:
: --
: ☆ 发自 iPhone 买买提 1.24.11
: --
n
newIdRobot

不如多学学C和汇编。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

M
MaLaRabbit

c底层和嵌入式用的,一般没必要学。
真的工作相关,不学也要学,不用也要用。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
:
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
:
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
:
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: 虑。c++坑是多点,不过我们的应用也没多么复杂。
r
rgg

C++ library xtensor 有前途。

Pandas放弃了panel data type, 让转用xtensor based xarray.

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 就算一时赢了。numpy背后那么多人在维护,长远你也赢不了。有大公司,有生物的,
: 有化学的,什么人都有。
: 跟在同样约束条件下numpy竞争,基本上可以说是不智之举。

h
helpme

啥叫底层东西?

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

M
MB80528


【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 就算一时赢了。numpy背后那么多人在维护,长远你也赢不了。有大公司,有生物的,
: 有化学的,什么人都有。
: 跟在同样约束条件下numpy竞争,基本上可以说是不智之举。

人多维护参与,不一定就越来越好。

好好的FireFox浏览器,越改越烂。

多人维护,能力低的会把质量拉低。

这种例子太多了。Skype也是一个例。

x
xiaoju

numpy不是这种搞法:它基本上是谁的底层好就用谁,自己虽然是python的native库,
却也是更下层其他库的胶水。

【 在 MB80528 (肥猫(Contrarian)[食MM而肥]) 的大作中提到: 】
: 人多维护参与,不一定就越来越好。
: 好好的FireFox浏览器,越改越烂。
: 多人维护,能力低的会把质量拉低。
: 这种例子太多了。Skype也是一个例。

b
bihai

你要是工作需要,倒是可以学,这样省事。我前一个工作的同事们就有幸在工作中从C#全部转到了C++。公司给钱学,多好。不过程序的架构出了大问题他们还不知道,这可
能也是你老板的考虑之一。但是如果公司可以一起转,你想搞定Python下面自己写个库什么就容易了。

有C#背景学起来会容易一些,比学Java要难。不过C++的新标准中的智能指针,移动语
义和右值引用还是应该在学好以前的非智能指针之后再学,要不然感觉会糊涂了。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 好久没来,发现居然在热烈讨论c/c++,正好请教下c/c++学习的问题
: 写过很多年python,主要当胶水语言处理分析数据
: 这些年的工作用C#,挺喜欢
: 学c/c++两个目的:
: 1. 熟悉一些更底层东西,这样就是写c#/python code理解也更深点
: 2. 用python或者r的时候,有需要写点性能关键的code
: 感觉不需要用c/c++做完整的project,也暂时不用在别人的c/c++ code上改,是不是学
: 基础c,或者最新的cpp标准就好?
: 我们部门因为特殊的原因,现在c++取代了一些原来c#的应用,我们组也被要求改成c++
: ,好更方便的整合在系统里面。 老大一直push back,不知道是他水平不行还是政治考
: ...................

g
guvest

numpy相当部分是平摊的各个包。不是金字塔结构。在我这几年常用的几块,
你说的木桶效应不明显。
【 在 MB80528 (肥猫(Contrarian)[食MM而肥]) 的大作中提到: 】
: 人多维护参与,不一定就越来越好。
: 好好的FireFox浏览器,越改越烂。
: 多人维护,能力低的会把质量拉低。
: 这种例子太多了。Skype也是一个例。

o
olddonkey

具体问题具体看,还要看多大的scale,numpy受python的GIL的制约,性能可能出问题
,在大规模应用上,有许多部分都需要用c++定制性的重写

【 在 pptwo (pp) 的大作中提到: 】
: 这年头性能关键估计numpy都能搞定,C++自己造轮子能快过numpy基本不可能。
: ++

l
lightroom

DL frameworks的CPU核其实就是numpy的子集。pytorch用的是openblas,TF用的是
eigen。numpy可以选用什么blas(MKL),而且可以用multi-threading. 其实这些包的速度没什么大的差别。去测测TF和numpy就知道了

【 在 olddonkey (olddonkey) 的大作中提到: 】
: 具体问题具体看,还要看多大的scale,numpy受python的GIL的制约,性能可能出问题
: ,在大规模应用上,有许多部分都需要用c++定制性的重写

p
pptwo

大规模应用意味着有意愿有资源进行后续的优化,这和小作坊期望能使用C++重写numpy提高性能是两码事,facebook能做HHVM不等于其他写php的网站也能做出来。

【 在 olddonkey (olddonkey) 的大作中提到: 】
: 具体问题具体看,还要看多大的scale,numpy受python的GIL的制约,性能可能出问题
: ,在大规模应用上,有许多部分都需要用c++定制性的重写

c
chebyshev

除了blas之类的70年代矩阵计算之外。numpy还有fft,多项式,特殊函数...等很多
module。而且開源社區還會給更多。

这几家大公司,目测也才普及到线性代数。对数值计算来说,这才哪跟哪啊.

【 在 pptwo(pp) 的大作中提到: 】
<br>: 大规模应用意味着有意愿有资源进行后续的优化,这和小作坊期望能使用
C 重
写numpy
<br>: 提高性能是两码事,facebook能做HHVM不等于其他写php的网站也能做出
来。
<br>

w
wflower

看个视频编解码的项目,基本C/CPP就可以出师了

o
olddonkey

大规模应用是指那种一年几百万,上千万美元,或更大的硬件成本

小作坊显然是降低开发成本来的更划算

【 在 pptwo (pp) 的大作中提到: 】
: 大规模应用意味着有意愿有资源进行后续的优化,这和小作坊期望能使用C++重写
numpy
: 提高性能是两码事,facebook能做HHVM不等于其他写php的网站也能做出来。

o
olddonkey

瓶颈在python的GIL,和什么framework关系不大
【 在 lightroom (吃一条鱼,思考一个问题,法号三丰) 的大作中提到: 】
: DL frameworks的CPU核其实就是numpy的子集。pytorch用的是openblas,TF用的是
: eigen。numpy可以选用什么blas(MKL),而且可以用multi-threading. 其实这些包的
: 速度没什么大的差别。去测测TF和numpy就知道了

x
xiaoju

一般来说scipy一条函数,GIL耗时不高于1%,python本身连数组类型都没有,所有的东西都是numpy内部做的

大一新生编程第一节课,就该讲什么叫瓶颈代码

【 在 olddonkey (olddonkey) 的大作中提到: 】
: 瓶颈在python的GIL,和什么framework关系不大

l
lightroom

你写写Python C/C++的库就知道有API release GIL。否则DL用python就是大笑话

【 在 olddonkey (olddonkey) 的大作中提到: 】
: 瓶颈在python的GIL,和什么framework关系不大