在西农-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:
- Tanky 到底何许人也?
- 我是如何与 Tanky 相识、相知的?
- 一个写明明可以在程序设计、算法领域有所作为的男人,为何偏偏去做了搬砖的?
- 一个当年意气风发,舌战群儒的喷子,为何现在只会静静的抽着眼,默默的装着B,并且在装B这条路上渐行渐远?
关于论坛
- 论坛到底是怎么做的?
- 论坛是怎么没落的?
- 从这个过程中,我们到底得到了什么?我们期望的论坛是什么样的?
- 为什么国内做不了很好的技术论坛?
我们,下篇文章见。
btw,Tanky 你觉得我对于你这个出场的设定怎么样?请自觉转发与点赞。
张杰
2015/12/20