游戏、历史、电子

0%

这篇文章写的非常深刻,讲述了C++中的一些不足。虽然原作者表明未经同意不得转载,我还是截取过来进行了部分格式上的调整,自己也想在这篇文章之后,谈谈自己的看法,附上原文更好对照。同时也担心原网站要是挂了,这好文章可就找不到了。原作者是孟岩,曾任职CSDN和《程序员》杂志技术总编。

印象中孟岩在他的一篇博文中谈到自己没有怎么写过工程代码,自己是一个计算机文化人。我也是很赞同这点,懂车会玩车比自己亲自造车还是有意思很多的。

正文

这是那篇C++0X的正文。太长,先写上半部分发了。

Function/bind可以是一个很简单的话题,因为它其实不过就是一个泛型的函数指针。但是如果那么来谈,就没意思了,也犯不上写这篇东西。在我看来,这个事情要讲的话,就应该讲透,讲到回调(callback)、代理(delegate)、信号(signal)和消息传递(messaging)的层面,因为它确实是太重要了。这个话题不但与面向对象的核心思想密切相关,而且是面向对象两大流派之间交锋的中心。围绕这个问题的思考和争论,几乎把20年来所有主流的编程平台和编程语言都搅进来了。所以,如果详尽铺陈,这个话题直接可以写一本书。

阅读全文 »

又到了新的一年,新的读书计划也要规划起来了。

C++

基础知识方面的书,主要是《C++ Primer》和《深入探索C++对象模型》,提高的书籍就是《Effective Modern C++》了。这三本书都看完了,但是觉得目前还都是理论知识丰富,实战经验比较少。新的一年要多加强项目经验。另外在2018年想要看完的书包括《C++ Concurrency in Action》和《Linux多线程服务端编程》,加强一下多线程编程方面的知识。我看现在大多数库都支持多线程了。另外还有异步编程的概念,现在也逐渐流行起来,微软在C#里面也早早的在2012年就加入了async和await关键字。

阅读全文 »

工欲善其事必先利其器。在理解了操作系统、编译原理等知识之后,选择自己的代码编辑器以及掌握构建工具、shell脚本、编译器、调试器、性能分析器等工具就是重中之重了。我选择了以vim为基本编辑器,以CMake为构建工具,然后在不同的平台上选择不同的shell脚本和编译器。

之所以有这样的选择,主要是因为在服务器端编程,很多情况下你没有办法物理上接触到服务器的,只能通过ssh方式连接到服务器。这也包括Windows服务器,在Windows10之后有了openssh支持方便了很多。所以后续阅读中请以ssh连接为背景来理解这些工具。

vim

关于vim的使用方法,我就不着重介绍了,网络上有很多的资源。我主要介绍一下自己的配置方法。

我这里只想提下如果你的vimrc配置文件写错了,在进入vim时候会出现一片空白通知你配置文件错误,但是又没有详细说明。这时候用vim -D进入开发者debug模式,可以逐行运行配置文件中的语句,对于查错非常有帮助。还有提醒一点是ssh连接到Windows 10后,默认cmd的编码方式不是utf-8,要通过命令chcp 65001切换,这对于后续工具使用非常重要。

阅读全文 »

又到了新的一年,新的读书计划也要规划起来了。

C++

我已经看完了《C++ Primer》,看得很艰辛。面向对象编程的概念虽然很简单,但是里面的细节太多了,而Primer这本书过于讲究所有的细节,所以书看得特别慢。我觉得新手应该先看《A tour of C++》这样的讲究全局的书,然后在看《C++ Primer》这种事无巨细的百科全书。也看完了《深入探索C++对象模型》,这本书虽然是1996年的,但是将C++中的对象在内存中的分布,构造函数和析构函数,各种继承方式的实现,还有最重要的多态实现方法都给读者剖析出来了。其实这些东西本质上来说,就是学习具体C++编译器的过程,所以我想在新的一年里,将《程序员的自我修养》和《深入理解计算机系统》两本书好好读一下。这两本书,将的都是编译原理和操作系统的书,而且将两者结合起来看,让你明白从你手敲的代码到最后的二进制,到程序如何加载到内存,都给你剖析出来。我觉得要做到这个份上,才能够熟练地使用C++。

阅读全文 »

总结一下常用的一些库,会不定期更新下去。这些库可以通过github下载,然后自行编译。也可以通过一些包管理器的方式安装,尤其是推荐微软推出的vcpkg能够下载源代码自行编译,对于大多数库的配置来说还是非常的方便的。有一些很不错的小技巧也总结在这里便于自己查找。

阅读全文 »