《编程黑马真言》节选

要对该学什么有充分了解,若想搞游戏开发(编程部分),除了掌握数学、物理、数据结构相关的一些基础理论外,汇编语言、一门适合游戏开发的高级编程语言、DirectX/OpenGL、某种3D引擎、2D/3D图形学、图象处理学、人工智能(路径搜索、遗传算法等)、加密、压缩、特效实现、碰撞诊测、优化等都可能成为必修课,而对软硬环境、开发范例以及周期模型也要相当熟悉。反之,若只是希望在ASP中用脚本语言操作Access数据库,那么根据所需记住ADO以及SQL的部分用法就算基本完事,更多时间耗在反复又繁琐的数据库配置上。所以,合理架构知识体系是编程学习的初始目标,有些人学了编程很久,读了很多编程书籍,但在编程时仍然感觉无从下手的一个原因就在于知识吸收的不平衡。

到底如何寻求知识体系的完善?软件开发人员的任务是实现待解问题与编程语言以及软硬环境所提供的编程概念之间的抽象,而任何抽象的实现都要求先对抽象双方有足够的认识,进而再基于它们去完成具体的关联。换个角度来看,你一方面要对问题域以及编程概念域所涉及的编程知识有充分掌握,另一方面还要保证抽象实现的成功。其中前者就构成了编程知识体系的外壳,而在它得以满足的条件下,如何顺利完成抽象则成为最具挑战性的问题。抽象在编程中意味着解释关联,此时若什么东西能够帮助你实现这种关联,那必然就是知识体系的核心。

怎样去实现解释关联呢?若很难回答就换个话题:给你一个字典,怎样去查找一个字,譬如“好”的解释?这样答案就很简单,在找到“好”在所在页之后,翻到那里就完毕。然而,即便这一简单任务的实现仍然包含许多小工序(不考虑难易),你要正确选取一个可行的实现方法,比如拼音或笔画索引法,你要正确判断如P.100在P.200之前还是之后等等...实现解释关联也正是这样,建立在抽象双方足够信息之上,电脑程序根本就是一种智能的体现,于是逻辑运用自然成为关键,它决定了怎样把一堆编程概念组织起来去解释一个问题域的概念,也保证了组织的合理与有效,这正是编程知识体系的核心。

在人工智能里的专家系统里面,知识库与推理引擎是最为核心的组件,专家系统的智能与自我进化也就来自于它们的合作。若没有推理引擎,知识库不过是一堆废品,而知识库信息不足,推理引擎也无法得出结论,这也恰是无知所暗示的。同样,架构知识体系也是这样,从职责上讲,你对待解问题、编程语言以及软硬环境所掌握的信息就对应着知识库,而逻辑运用正是推理引擎的任务。若你把自己埋没于知识库的积累中,若仅去关心编程中的各种小技巧,就算你把上千个系统API的名称记得刻骨铭心也很难写出聪明像样的程序来。仔细想想,你会发现这是许多人感觉编程难的主要原因,他们知识架构的发育参差不齐。(这里顺便谈谈自我进化在编程学习中的意义。其实这些年我学过的东西不少,但真正让我感到何谓“学无止境”的却是编程,那四个字简直就是为编程而存在。如今信息技术的日新月异远非你我所能想象,若你不即时更新自己的知识体系,不对编程技术方面的新事物保持旺盛的食欲,那你原本发育良好的知识体系很快就会产生变异,于是你也就落伍了。此刻,我刚读完一篇关于如何用定点数去全全替代浮点数进行运算的文章,若是几年前,这篇文章还有些意义,但如今又有多少人活在386、486时代?)

此处我所谓的数学是对各分支的统称,数学是研究样式的科学,无论是数字、集合还是图形。对于编程,一方面,数学会被直接运用于其中,排开加减乘除这些编程大多要用到的基本算数法则,想象一下编译器、三维引擎、网络协议、人工智能相关、信息编码与加密这些方面的开发能离得开大量数学的运用吗?同样,就在你用SQL写下如Select From Where这类语句时,集合论就已蕴于其中,而黄金分割这类魔术数字也不会平白无故出现在你的脑海中,但若懂得它,你自然会把它用于界面设计。另一方面,数学也常被用来作为一种辅助工具,比如在软件测试中,图论就提供了更为精准严密的逻辑描述方式去配合各种测试模型。

然而,同样把自己视作程序员的网页设计或者网络配置人员,他们就很可能反驳以上观点。就拿我一个朋友来讲,即便是位软件工程师,在电信工作已好几年,却告诉我他从没用过甚至像三角几何这类最基本的数学。好的,忽略程序员的定义在改变、软件应用域在延伸以及软件开发所基于的抽象度在提高这些客观因素,更多时候数学是被间接运用在编程中,也就是通过影响你的思维模式而潜移默化控制着软件的编写,这也是为何数学在逻辑运用中占有着核心地位的原因。数学天生就很逻辑化,这是没什么可比的,多吸收一些数学知识,你运用逻辑的能力自然增强。举个例,若你对布尔逻辑、集合论、命题逻辑、谓词逻辑这些理论有所了解而又习惯于用它们去规范语义,那么在编程时你的逻辑运用自然更为严密。这里严密的产生决不是因为它们能够改变你的智商,而是由于你会逐渐习惯用不同方式去考虑问题。

了解一门编程语言的好与坏并不意味着你就要放弃现有的而转向另一门编程语言以弥补其不足。真正的编程高手是那种对一门编程语言的优劣明了于心,在实际编程中扬长避短,不断寻求平衡点的人。对任何一门编程语言了解得越深入,发现的问题自然也就越多,所以关键并不是追求编程语言的完美,而是怎样去对待这些语言的好与坏。看看如今市面上,哪一门较为普及的编程语言不对应有一两本剖析其缺陷所在的专著?如Java的《Java Pitfalls》、C++的《C++??》,那么这些书的意义何在?若仅是批评两句就没多大意思了,更重要在于若一门编程语言的弱点可以靠更严谨的设计以及经验去共同克服,那么你大可不必另投高明,有多年C开发经验的人都知道此话有多么正确。相反,若一门编程语言存在的问题直接有碍于待开发项目的实现,你就应该转向一门更适合的语言。总归,搞编程千万不要迷信什么,原因很简单,编程是一门科学而不是一种信仰。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,566评论 25 707
  • 凉岛胜日|约你,在岱山一水纤长 “无风水面琉璃滑,不觉船移,微动涟漪,惊起沙禽掠岸飞”。 字是美的,景是美的,置此...
    水畔细语阅读 308评论 1 4
  • 我想请个假,不是因为世界那么大! 我想请个假,不是说走就走全放下! 春天的花开,笑我总是在这屋檐下, 夏天的柳絮,...
    本心草木阅读 476评论 0 0
  • 朋友的父亲去世了,早是几个月前的事情了,今天才郑重的以文字的形式做以表示。现在我仍然无法平静,提起还会流泪。 ...
    我是马依云阅读 365评论 0 0
  • ​品一幕秋韵 感知南来北往秋风 眼眸定格 一片红叶苍茫,远方 我站在这头 你在山崖那头 风是衣裳,雨是滋养 婀娜的...
    小小狗Today阅读 261评论 0 3