星期一, 三月 07, 2016

学习C++ 01

目前选择了learncpp.com作为主力学习工具。
IDE不打算折腾eclipse之类的了,Mac上既然花了大空间装好了xcode,那就用就好了。看xcode还挺方便的样子,也不需要什么配置。

learncpp一共17章,一天2-3章的话,大约1周左右可以过一遍。当然各种示例需要手动输入一遍,即使如此可能也会随学随忘。

日后使用上为了光场计算所需,所以应该是有大量的线性代数计算,目前看也就是普通的乘除之类,倒是没有复杂的高级运算,NMF也是还原成了普通的迭代在计算。所以先随手找了一下C++的线性代数库,

有个armadillo http://arma.sourceforge.net 看起来很活跃,不知道是否稳定和好用。另外有BLAS的开源版本:http://www.openblas.net 具体用哪个也看其他合作者的使用了。

LearnCpp上这一章看起来不错,讲如何写注释的。http://www.learncpp.com/cpp-tutorial/12-comments/

总结来说,注释是来讲解代码为什么要这么写。

之前在用matlab写光场计算的时候,我已经发现先写注释后写代码,甚至注释比代码更多、每一句代码都写注释,写代码会最快最少出错。用mathematica写东西的话,更是把文本和代码放在了同等重要的位置上,甚至一个mathematica文件更多的是一篇文章,代码只是其中的公式与运算而已。


学习C++ 00

为了跑光场渲染,需要用CUDA。而为了用CUDA,看起来需要学C++了。

很久没有学习新的语言,多年来一直嚷嚷着学Python,可每次学完基本的就不想继续,大概是我觉得Python太难看了,尤其是python程序员们津津乐道的各种写法,在我看来可读性都很差。

写些漂亮的小东西可以用processing,不过这个学得快,忘得也超快。每次再捡起来都是重新来过。

MatLab已经很熟练了,虽然MatLab有简单的gpuarray命令,就可以部分利用CUDA计算。但是由于其他的合作者都使用C++,我也该跳出舒适区了。

所以,开始学习新的语言吧。

C++的学习资料还是很多的。

在线的教程有:

http://www.tutorialspoint.com/cplusplus/index.htm
这个还提供个online的IDE,省去了在本地配置的麻烦。

http://www.learncpp.com
整个网站就是用来学习C++的。

视频课程有Lynda的C C++ Essential Training,
Youtube上随手一搜视频也很多,例如:
https://www.youtube.com/playlist?list=PLmpc3xvYSk4wDCP5zjt2QQXe8-JGHa4Kt

MOOC里面C++的课程反而显得少,
EdX上有微软开设的C++课程:https://www.edx.org/course/introduction-c-microsoft-dev210x-1
但是看起来评价很差,暂时不打算上。

书籍方面
貌似C++ Primer是很多人推荐的书。我不打算把书当做主要的学习教程,按照以前学语言的经验,好像书籍更多的是用来查询的。所以,传说中的StackOverflow oriented programming,或者Google oriented programming也是不错。

反正,赶紧开始吧