在西农-S6: 技术、论坛、博客、社交(上)

大二寒假的时候,我看了一本 C++ 模板相关的书:C++ templates(现在估计买不到了,许多C++的经典书目都买不到了)。在整个 C/C++ 学习过程中,模板绝对是我当时遇到最难的一块,这本书一共由三部分组成,我只看了前两部分, 最后一部分实在看不懂。虽然只看了一遍,但是为之后的 MFC 和 STL 学习,乃至对 C++ 语言的理解都起到了很大帮助。

扯远一点,我认为,一个合格的 C/C++ 的程序,有几块: 宏、模板与泛型、指针与内存管理、继承与多态、虚函数表、内存对齐……甚至是编译链接过程 ,不能说了若指掌,至少要了解一些。STL、BOOST、设计模式这些东西,都是可以照猫画虎的,没什么太大的技术含量。 我相信很多人对这个观点是质疑的,甚至随便拿出来一个人都是反例,你看人家谁谁以前没写过 C++代 码,现在一样写的很好,代码质量也很高。是的,是有这样的人。那是因为他做的是从 1 到 100 的工作,而不是从 0 到 1 。 框架是现成的,基于框架去做一些额外的业务开发,只要这个人有语言基础,有设计思路真的一样可以做的很好。但是要从无到有的写一个框架,如果他对语言本身很多特性了解的不多,我不相信他可以写出一个健壮、扩展性强、高性能的框架。

我们常说,语言是工具,深入了解一门,其他语言看一看就会了。这个会了指的仅仅是入门。我用我写 C++ 的思路写过很多 C# 代码、写过很多 Python 脚本,遍查文档遍写,一样可以写出质量不错的代码(这就是所谓的编程思维)。 但是一旦出问题了以后,即便解决了,心里是还是很没底的,你不知道为什么这样?也许有人会告诉你这是语言特性,那么语言会设计成这样?

在技术这条路上,从来没什么捷径可言,除了不懈的尝试与努力。我曾经觉得自己在编程上很有天赋,直到见过一些比自己反应更快,脑子聪明的多人以后,我才发现每个人都是一样的,就工程化的开发而言,根本不到拼天赋的程度。

2010 年初,做科创项目,涉及到界面的部分单纯用 C++ 无法实现,只能自学 MFC。上文说过,我没怎么深入学过 C语言,所以一开始学 MFC 是很困难的。MFC(基于C++) 和 Winform(基于C#)虽然同为微软的界面框架,但是差距真的很大。 使用 MFC 必须要对 MFC 的底层设计框架很了解,不然有些问题你还真不知道怎么解决,它把按钮和按钮对应的事件没有真正的绑定到一起,比如说,你添加了一个按钮并给他添加一个事件。 原则上来讲,你把这个按钮删了,与之相关的处理函数都应该被删除的,而实际上不是,你要手动去删,类似的问题很多。

入门我看的是侯捷老师的《深入浅出MFC》,当我真正开始看源代码的时候,发现没有 C 语言的基础,寸步难行,尤其是宏。于是我一口气看了三本C语言的经典数目,分别是:《C专家编程》、《C与指针》、《C陷阱与缺陷》。 自此以后,C 语言相关的问题,就再也没怎么怕过(抛开系统 API 与不同的编译器标准不同)。MFC 框架是我到目前的为止了解的最深的一个框架,我记得当时当我看懂 用宏、模板、全局静态链表、继承等特性实现窗口类的注册与反射的时候,整个人开心的不行。 MFC 在 RTTI、DC、序列化、Message Mapping 与 Command Routing 这一系列的设计上,不敢说多牛逼,但真的很巧妙。

好吧,一不小心真的扯远了。其实我想说的是,当自学 MFC 的过程中遇到的问题比我学 C++ 遇到的问题多得多,而且不知道问谁,所以只能去网上搜,后来我才知道了有个玩意叫技术论坛,不懂的问题可以发帖问别人,仿佛打开了异世界的大门~

ID

我第一个要注册是论坛是 CSDN,但是在起名字阶段卡住了。你看《疯狂的程序员》人家就叫 绝影,多屌。

陈东坡是个有才的人,当时的辅导员 anzhongli 然他帮忙申请一个邮箱,他给申请的一个名字叫 chinaazl@xx.com。嘿,这个起名方式霸气啊!

于是我有了我的第一个网上ID: chinazhangjie,怕不怕!也顺便申请了一个 gmail,chinajiezhang@gmail.com,没想到一直沿用至今,⊙﹏⊙b汗。

关于起 ID 这件事情,我想到一个很好的例子。Dota 有个民间解说“阿川”。他有三个代表性的ID:屠夫阿川、拆黑之王、一条大菜狗。我想我可以诠释这三个 ID 的含义:

初出江湖的时候,我希望自己能有一技之长,在自己的刻苦训练之下终于可以崭露头角,我的屠夫是最屌哒!

终于有一天我认为这个ID已经不能代表我的水平了,我应该有一个更好的平台,于是我将自己的ID改为:“拆黑之王”,誓要拆尽天下黑店,让对手闻风丧胆。

就这样我坚持去做了,但是随着我的技术水平越来越屌,遇到的对手也越来越屌,我才发现世界很大,玩法很多,我还有很多东西要去学习。

于是,我变成了“一条大菜狗”,就像一个真正的鼓手不是要力量足够大,而是要学会控制力量一样,让对手感觉到害怕的不是自己的 ID 带来的荣誉,而是能力的收敛与不断的变强,让他看不懂你。

可能每个人都要经历这样的阶段吧,后来觉得 chinazhangjie 这个 ID 太过张扬了,就换了 ID ,中文:独酌逸醉,英文:JerryZhang。用 Tanky 的话讲就是:“不要问这个 ID 是怎么来的,圈里人都是这么叫的”。

C++奋斗乐园

在 CSDN 泡的总时间段虽然不长(半年左右),但是在线时长还是挺长的。那个时候看很多人都有技术博客,我也在 CSDN 上申请了一个博客(大约在 09 年秋,大二的时候,具体时间记不清了),主要写 C++、MFC 等学习笔记。

当时一心想找更多的C++论坛可以混,CSDN 毕竟是个大杂烩,注册了很多C++论坛,包括知名的 chinaunix,51CTO,还有很多 C++ 小论坛,不下十个(现在基本上已经死光了)。对比之后才发现:CSDN 竟然是综合最好的, chinaunix 虽然帖子的质量要比 csdn 高一些,但是新帖太少了。我很失望,我想象中的论坛应该是高手云集的地方,而不是学生们相互娱乐的地方(我好像忘了自己也是学生)。

于是,我内心是很渴望做一个属于自己的论坛。实在不知道怎么开始弄。就在这个时候,一个陌生的男人在恰当当的时候出现在了我的生命中:TankyWoo。

当时,Tanky 自己做了一个论坛,叫 C++奋斗乐园。正在各大、小论坛,用 N 个小号,不知廉耻的宣传,而且态度坚定要恐怕自己看了都怕。我发一张 Tanky 和在很早以前宣传的时候人对喷的截图(前两天看到这帖子,他说当年太2了,就删帖了,还好我机智的保留了截图):

在写文章之前,我让他回忆一下当年相关的信息,他是这样回答的(QQ留言,原话):

我 2010年 3 月初买的域名,中旬上线,你大概 2010 年下半年屁颠屁颠的跑到论坛

然后,活到 2013 年

因为无人管理,论坛用户基本流失

2011-2012 年是巅峰,日 IP 最高接近 2000,PV7000

吴神(笔者注:他自己)坐镇ACM板块

杰神(笔者注:我)坐镇C++板块

一时成掎角之势

那时你每周出 C++ 题目,我出算法题目,大家一起做

然后帮菜菜们解决问题,自己也写一些技术技术文章分享

论坛氛围不错

但是 时间是把杀猪刀,黑了葡萄,软了香蕉

大家毕业后都没时间去管理了,所以一个庞大的家族就这样消逝在历史的长河中

但是,这些都是历史的必然结果,不过能在历史的长河中,掀起一番波澜,也足以引以为傲了

不是不去做,而是觉得做的意义不大,因为有更好的社区,比如so(笔者住:stackoverflow)

那么,

关于 Tanky:

关于论坛

我们,下篇文章见。

btw,Tanky 你觉得我对于你这个出场的设定怎么样?请自觉转发与点赞。

张杰

2015/12/20