侯捷文章:初学者要如何学习 C++【我见 我闻我感我思】

2024-06-19 05:48

本文主要是介绍侯捷文章:初学者要如何学习 C++【我见 我闻我感我思】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很不错的一篇文章, 虽然说的是C++, 但很多道理是一样的
看到十倍速学习里的课前预习, 课后复习, 和兄弟连的规定一样, 不过这道理和规定都是好的, 只是要真正有效的做到才有用.
---------------------------------------------------------------
侯捷文章:初学者要如何学习  C++【我见
我闻我感我思】
01-11-27 18:58 发表于:《程序员的天堂》 分类:未分类
最近 CompBook 版的一个题目:「初学者要如何学习 C++」,又引发一长串讨论。每天我啜
着咖啡,看着一篇篇的长短文,在精譬与幼稚、深远与浅薄、骂声与辩白之间,固然得稍遣
一日下来的疲惫身心,聊以为茶馀饭後之资。但是看着日渐众多的贴信,想到某些问题,心
情也不很轻松得起来
我有一些感触。
●不要骂人
学问高、技术好,固然可以说话比较宏声,比较强势,比较得到大家的尊敬与体谅,别人也
比较不敢招惹,但不表示可以出口骂人。「废物、白痴、人渣、丑角」,这些骂人的话实在不
宜。
不可以骂人,是网路的基本礼仪。「不可以」可以从两个层面来说。法律上来讲,网路上之
不可以骂人也许是个灰色地带,被骂者多半也不会诉诸大动作。所以除非是名人被骂,或名
人骂人,而且咽不下一口气,多半只是清风徐来,水波不兴。
我要谈的是修养层面上的「不可以骂人」。我要谈的是上网基本守则,就像谈做人的基本道
理一样。
有些人的行事采「直率」原则,必要赤裸裸地表现自己的情绪而後快,至於礼仪诸等,则或
斥之「伪善」。网路是个不露脸的世界,也大量容忍了这等「直率」。但是如我常说的『文如
其人』,文字表现了作者的为人处世、心境修养、学问技术。为文能不慎乎?
古云「君子不欺暗室」,意思是虽处於无人得见之暗室,亦不做欺心败德之事(唐骆宾王.
萤火赋:类君子之有道,入暗室而不欺)。网路这个虚拟世界,就像一个大暗室,虽然别人
不得见你的真面目,你在暗室中的一切行为,仍忠实映照你自己。
昨天,我顺道载来元智旁听课程的交大学生回竹。途中刚好他提起 CompBook 版的这阵热
闹。我淡然地说:不该骂人。学生说:可是有人本来就该被骂。
哦,是吗?
如果说这个世界是「观念可能有点偏差、技术可能有点不足、态度又没让你顺眼的人,便该
骂」,那麽我说,骂人有骂人的技巧与艺术,你骂人的表现这麽粗糙这麽差劲,「观念可能有
点偏差、技术可能有点不足、态度又没让我顺眼」 ,也该骂罗?
不,你不该被骂。所以他也不该被骂。
要表现尖锐与犀利,另有办法;请不要用骂,尤其是像「废物、白痴、人渣、丑角」这种话。
或有人说,我的个性就是这样,直率是我的座右铭。那也依得。我刚才说了,网路是个不露
脸的世界,大量容忍了这等「直率」。我写这篇文章,原也意不在影响骂人文章的作者(我
想我没有这样的能力),我想影响的是骂人文章的读者 ─ 你。
指责别人是多麽地容易,检讨自己是多麽地不容易。我回想自己的文章,也出现过情绪性字
眼。虽是一个比拟,非特定指哪个人,还是觉得有点惭愧。
●文如其人
衍生而来的,我还想说的是,竞速的时代,以及台湾教育的偏颇,造成了网路上的文字错别
字连连、逻辑不通、语意不畅┅。大家都急就章地,有什麽想法就脱口而出,线上回覆;不
但不检阅,甚至不重读第二遍就按键送出。
文如其人。如果你连自己出手的文字 ─ 代表自己思想的东西,都这麽不在乎不谨慎,你会
对什麽在乎?你在乎的大概只剩功利铜臭之阿睹物。 如果现实生活中你是谨言慎行的,到了
暗室却如脱疆野马,这让我想起现实社会中许多彬彬有礼之士,上了自家车驾驶座,便换了
张头脸,骂声连连,闪超挤推,下得车来又彬彬有礼。
可是你,就是你,只有一个你。哪个是真实的你呢?半夜问问自己。
●初学者要如何学习 C++
发问者,有能力从回信内容判断回信者的经验,进而估量其正确性或适用性,进而决定自己
的采用度吗?
如果能,大概不会问这个问题。如果不能,应该不必问这个问题。
网路上这些年的悠游经验,使我轻易可以判断哪一种题目又有好戏看了,哪一种题目又要引
爆口水战乃至口角战 ─而且最後只是一场混战,筛子上留没几家伙。
我们感谢热心的回信者,他们热切提供自身经验,不论自己是一年经验、三年经验、五年经
验、十年经验┅。不论自己是 1/4 瓶水或半瓶水,或 3/4 瓶水或满瓶水。
我想知道,以发问者的水平,如何判断和取舍这些回覆?
通常我们寻求这类学习之道(这是对自己非常重要且关键的问题),不应向陌生人求助,那
於事无补。 因为陌生人的经历你一无所知, 为什麽他的学习之道值得你遵循?你既无法判知,
就没有必要发问。
为什麽不问你的老师?你的学长?你的同学?那是你看得见摸得到的人, 如果你佩服他们的
能力, 你就可以询问他们的学习经验。 因为你知道他们的表现, 所以你可以决定你的采信度。
对发问者而言,这样是不是有意义多了?
●三不政策
现代学生有三不政策:不讲话,不回答,不要问我。不论是在大学殿堂,或是公司职训,我
往往面对沉默的台下,所以我也学会从来不做田野调查 ─ 要人举手点数那种。
是的,连举手都有人不愿意。任何会曝露自己任何状态的动作,统统拒绝。
这大概是为什麽大家喜欢上网发问的原因了。呵,没人知道我是谁。
学生心头有惑,不喜欢上课问,喜欢下课问。我完全知道症结所在。因为你心里头挣扎『这
个问题有水准吗?藏拙算了,不要自曝其短』。於是上焉者下课来问,下焉者完全不问。
有的老师回答某些层次不高的问题时,会带着揶揄的表情或口吻。 这种老师应该为现代学生
的三不政策负点责任。
不愿自曝其短,是正常的人性。那麽,你应该做的是,课前预习。唯有课前预习,或课後复
习,才有信心你所问的问题有没有水准,不是吗?我真不知道现在还有多少学生有课前预习
的习惯。我的班上有一位,我很欣赏他的积极。
下学期我让大家都带面具上课,保证问题多得不得了 :)
●十倍速学习
只要保持一个原则,你就可以十倍速学习。
课前预习,课後复习。
那麽,上课时你的吸收力,便是别人的十倍。速度虽是一种绝对值(其实宇宙间没有绝对),
也是一种相对感觉。你的吸收力是别人的十倍,那你不是十倍速学习,是什麽?你每堂课课
前花一小时,课後花一小时,便比别人考试前花二十小时还有价值。
但是因为短视,看不见未来,贪玩,所以做不到。哎!
课前预习,课後复习。老调!
古调虽自爱,今人多不弹。
●眼界 .1
从一连串 C++ 学习之道的讨论信中,衍生出 C 和 C++ 的关系、C 和 C++ 的能力比较。
老掉牙的问题!
有人不认为 C++ 比 C 优秀,认为别人大力捧 C++ 是因为没看过那种「C 功力出神入化」
之神人,那种「C 语言程度高到让人难以想像」之怪物。
是的, 我确信, 所有 C++ 能做的事,  C 都做得到。 "Inside the C++ Object Model" (中译 《深
度探索 C++ 物件模型》,侯俊杰译,峰 1998)或是 "The Annotated C++ Reference Manual"
(无中译本)书中,把许多 C++ 的奥秘(例如 object model, vptr,vtbl, template, inline...)都
曝露出来,读者甚至可以因此写个 C++ 编译器(当然,方向有了,你可能需要知道更多实
作细节)。
也许,C++ 编译器便是以 C 语言完成的(我不确知)。
那麽,有什麽是 C++ 做得到而 C 做不到的呢?
没有。
大不了写个具有 C++ 编译器功能的 C library 附在 C 程式身上,还有什麽办不到的。
问题是,「可用」不见得「最好」。想想付出的代价。
我接触 C++ 的前数年中, 和同事有时候会去听些课程。 我的慧根差, 连 OOP 都转不过来;
我的同事慧根好一些,略可掌握 OOP。至於 OOA/OOD,我们两人都嗤之以鼻,私下窃想,
那些腾云驾雾高来高去的老师,自己到底懂不懂呀。
但是我们只敢互相调侃开玩笑,不敢真的公开表达。即使表达,也语多保留,容有回旋。
因为我们知道,OO 这一软体界的大势,这麽多人的研究,这麽多人的赞美,不可能没有原
因。我们也知道自己之不悟,怕只因自己的浅薄。
後来我因此对 OO 失去兴趣,改攻 Windows(programming & OS),我的同事则继续深究。
他虽不喜欢看书,但 C++/OOP 的书倒是狠K了不少,并以个人卓越的 programming 功夫,
在这个领域成为专家。
我自己终於在研究 MFC 的时候,不得不痛下决心好好搞 C++/OOP。所以我是为了运用一
套 C++ class library,才开始学 C++。要搞当然就要搞点成绩(并且也因为搞出兴趣),所
以才往 object model, framework infrastructure, generic paradigm继续搞下去。
我再说一次,「可用」不见得「最好」。
我再说一次,一种技术,一种  paradigm,得到多人(可说是整个业界)的推崇与赞美,不
可能没有原因。
眼界未开的时候,要知道自己眼界未开,保持谦逊。
●眼界 .2
十年前,我有了第一部车。於是我开始知道坐在驾驶座上的各种状况。
有一天我和朋友夜至景美访友,坐朋友的机车去。机车大灯坏了,我很担心,要他闪方向灯
一路骑去。他斥为无稽,并且说台北路灯那麽亮,我们看得见别人,别人也看得见我们。
但我知道汽车座里的驾驶从反光镜看不见我们。
是看得见,但是要仔细看。如果仔细看反光镜,就无法分神看前方,所以驾驶人看反光镜都
是目光一瞥而已。在夜间,只有灯光才能让他瞥到。他不是在看後方有没有物体,他是在看
後方有没有灯光。
我很庆幸在冒险夜骑那辆没大灯的机车後,现在还活着。
我的朋友没开过车,所以他不知道这种情况。我开过车,所以我知道。这是我和他在那个时
候,就交通工具的驾驶而言,层次上的差异。
我开小客车,所以对於七人座厢型车、九人座厢型车也都能够轻易掌握,立刻上手。但是要
我开  10 轮大货卡、两吨半、甚至怪手,我就知道有级次(order)上的障碍需要克服。要
我开飞机,那级次的障碍就更高了。
机车的驾驶难度,以及可游距离,和汽车有1个级次的差距。汽车的驾驶难度,以及可游距
离,和飞机有n个级次的差距。
所以我们没有办法和井里的青蛙谈广阔的天, 和河里的鱼蚌谈汪洋的海, 和燕雀谈鸿鹄之志。
但是我们必须有谦逊的心:在级次更高的人面前,我们便是他们眼中的井蛙、河鱼和燕雀。
--- the end

原文地址:http://bbs.lampbrother.net/read-htm-tid-150405.html

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(62) | 评论(0) | 转发(0) |
0

上一篇:侯捷对进入 IT行业的年轻人的建议

下一篇:做一名思想和身体同样强壮的程序

相关热门文章
  • JDK1.6官方下载_JDK6官方下载_...
  • MyEclipse6.5下载及注册码...
  • Eclipse+MyEclipse的配置
  • Eclipse 插件安装、升级和卸载...
  • 最新版SWT Designer 6.0 安装,...
  • 大家都是用什么来管理hadoop集...
  • 网站被人挂了吗,添加了些程序...
  • Nginx如何保证不走宕机的那个...
  • 大家谈谈MYSQL客户端和服务器...
  • 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议

这篇关于侯捷文章:初学者要如何学习 C++【我见 我闻我感我思】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074175

相关文章

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<