该书是《英文书名:Maste Programming On A Dimension》By Minlearn & Chenyi
的中文译本,不看可别后悔!
拷下目录和前言,大家参考看下不下。
目录第一部分 14
前言 14
 By Chenyi 14
 By Minlearn 15
导读 19
 什么是语言级要学习的 22
 任何语言都是有门槛的 23
 编程学习方法 23
 计算机学生专业课程本质讲解 24
 用C++进行开发要学到什么程度 25
第二部分 概论 26
(1)系统 27
 何谓pc 27
 图灵机与冯氏架构 27
 内存地址 29
 分段和分页机制 29
 cpu的门 30
 cpu与异常 31
 所谓堆栈 32
 真正的保护模式 33
 异常与流转 35
 最小,最完美的系统 35
 操作系统与语言的关系 37
 虚拟机与语言 38
 虚拟机与语言 38
 调试器与会编器 39
 平台之GUI 40
 界面的本质应该是命令行功能支持下的配置描述文件 40
 命令行下编程实践 41
(2)语言 42
 真正的计算模型 42
 开发模型与语言模型 43
 正则表达式与有限自动机 47
 联系编译原理学语言 50
 语言的类型 52
 如何理解运行时 53
 运行时环境 53
 编译与解释 54
 运行期与编译期 54
 编译期和运行期分开的本质与抽象 55
 脚本语言 55
 灵活性与安全性 56
 二机制指令看循环 58
 所谓函数 58
 所谓流程 59
 为什么需要数据类型和数据结构 60
 数据类型和数据结构是二种不同的东西 60
 为什么需要变量这些东东? 61
(3)语言之争 62
 学编程之初,语言之争 62
 语言与应用 62
 C与ruby 63
 你为什么需要RUBY 64
 C++还是ruby 65
 C++与JAVA 65
 .net与JVM 66
 你为什么需要RUBY 66
 语言功能上的差别 68
 C与C++之争 68
 我为什么选择学C而不是c++以及其它语言 69
 c#,java类解释语言永远也比不上c,c++类编译语言. 70
 类VB,DELPHI类RAD语言分析 70
(4)C 72
 C与C++是二种不同的语言 72
 C的数组,指针,字符串 73
 C的输入输出流 73
 C的类型系统和表达式 74
 二机制指令看循环 74
 所谓指针:当指针用于设计居多 75
 指针成就的C语言 75
 指针是一种语言的抽象机制 76
 学C千万不能走入的一个大误区(其实JAVA比C难) 77
 C抽象惯用法 78
 C的抽象范式之OOP 79
 C的观点:底层不需直接抽象 80
 指针,间接操作者 81
 真正的TypeDef 82
 真正的指针类型 83
 真正的函数指针 84
 真正的句柄 84
 真正的循环 85
 真正的强制类型转换 85
 真正的Static 89
 真正的数组索引 90
 类型和屏看原理 90
 位操作和多维数组指针与元素 91
 变量与void 92
(5)抽象 93
 人与软件 93
 抽象与接口 93
 过度抽象 94
 真正的设计与编码 95
 真正的构件库 97
 大逻辑与小逻辑 99
 什么是范式 100
(6)抽象之数据结构 100
 所谓数据结构 100
 算法+数据结构的本质 101
 数据结构和算法是属于计算机的而非程序语言的 102
 算法与设计 103
 函数增长与算法正确性复杂性 103
 数据结构初步印象(1) 103
 数据结构初步印象(2) 104
 数据结构初步印象(3) 105
 数据结构初步印象(4) 106
 ordered与sorted 106
 数据结构与抽象 106
 树与图初步引象 107
 树初步引象 107
 B减树 108
 图初步引象 110
 树的平衡与旋转 111
 完全与满 113
 多路234路与红黑树的导出 114
 快速排序思想 115
 数据结构之数组 115
 数据结构的抽象名字 116
 真正的ADT 117
 vector的观点 119
 真正的数据结构 119
 堆栈与队列 121
 真正的递归 123
 树与单链表,图 128
 算法设计方法 130
(7)抽象之高级语法机制 131
 真正的OO解 131
 真正的对象 132
 真正的继承 133
 真正的OO 134
 真正的OOP 135
 真正的构造函数 136
 真正的私用,保护,与公有 137
 This调用规则(放C++部分) 137
 真正的重载与覆写 137
 Minlearn(5)C++的元编程 137
 模板的意义在于编译前端的设计 138
 C++的元编程和泛型编程 139
 元编程和函数式编程 140
 C++的模板编译技术本质 141
 OO的缺点 141
 模板的继承 142
 模板的偏特化 142
 真正的策略 142
 为设计产生代码 144
 真正的MetaProgramming 145
 元编程技术 146
(8)抽象之设计 146
 大设计 146
 编程能力,代码控制能力,复用与接口,轮子发明与使用 147
 OO,模板,设计模式与设计 148
 设计能力和程序员能力模型 149
 大中型软件的复用与逻辑达成 149
 通用设计与专门设计 150
 架构和应用 151
 应用与设计 151
 与软工有关的哲学 联系 152
 跟软件有关的哲学.唯物主义 152
 真正的设计模式 153
 真正的开闭原则 154
 真正的通米特原则 154
 真正的好莱坞原则 155
 真正的策略模式 155
 真正的观察者模式 156
 真正的装饰模式 156
 真正的单例模式 156
 真正的迭代器模式 156
 真正的工厂模式 157
 真正的门面模式 157
 真正的命令模式 157
 真正的模板方法模式 157
 真正的适配器模式 158
 业务与逻辑分开 158
 架构不是功能的要求,但却是工程的要求 159
 你需不需要一个库 159
 再谈可复用 159
 真正的可复用 160
 你能理解XP编程吗 161
 构件与接口,软工 162
 设计方法论 162
 真正的Interface 164
 真正的对接口编程 165
 实践方法之极限编程 166
 设计模式与复用与框架复用 166
第三部分 C,C++代码阅读与控制 167
(1)语法与初级标准库 168
(2)数据逻辑 168
(3)代码逻辑 168
 Policy 168
 traits 168
 typelist 168
第四部分 一个例子 168
分析: 168
 第一天:接到一个项目 168
 第二天:需求分析 169
 第三天:原语设计 171
 第三天:了解Yake(World&GameShowGeneric) 177
设计:GVWL1.0开发 182
 第六天:范型设计与实作WorldLogicGeneric 183
 第七天:为Yake写gvwl入接口和lua扩展 184
编码:NotWar3 Demo的实现 184
 第八天 实现NotWar3 184
作业:重构 184
第五部分 184
领域逻辑与术语文章 184
 字符与字符串 184
 为什么我说Java是脚本语言 185
 宽松语法,无语法语言 186
 Linux与3D 187
 伪码语言 187
 语言宿主 188
 shell编程和交互式语句编程 188
 Debug,编译期断言 189
 图形原理之位图,图象和字体 189
 为windows说些好话 190
 Minlearn ruby (5) 网络原理与P2P 190
 Minlearn ruby(4) 字符串与WEB 191
 加密与解密 191
 Minlearn(3)载体逻辑 192
 Minlearn(2) 平台与并发 192
 Minlearn(1)平台之持久 193
 平台之多媒体编程 193
 Minlearn ruby 193
 思想,维度,细节 195
 理想 196
 XML 197
 面向更好复用的封装机制 198
 SOA 198
 浮点标准与实现 199
 desktop,web,internet,云计算不过WEB的集中化这种说法的偷换概念 200
 编程设计与经济 200
 晕计算 201
 在形式主义与直觉主义之间:数学与后现代思想的根源 201
 Scheme 程序语言介绍之一 202
 与软工有关的哲学 辩证 204
 富网页技术 204
 形式维度 205
 开源与开放 205
 core learning and min learing编程 206
 与软工有关的哲学 联系 206
 本地化和语言编码 207
 学习与维度 207
 跟软件有关的哲学.唯物主义 207
 关于逻辑的逻辑 208
 合理性 209
 语言,道理和感情 210
 可恶OO 210
 互联网与企业开发 211
 会学习的人首先要学历史 211
 离散数学与代数系统 213
 线代与矩阵 214
 计算机与编程 214
 真正的二进制 216
 真正的文件 217
 真正的数据 217
 真正的Unicode 218
 真正的Windows消息 219
 真正的XML 220
 真正的GUI 221
 设备环境 221
 真正的MFC 222
 真正的虚拟机 224
 真正的.NET 226
 真正的脚本 227
 真正的并发性 228
 真正的反工程 228
 真正的DSL 231
 真正的多范型设计 232
 真正的调试 233
 真正的浮点数 234
 真正的布尔 235
 真正的整型数 236
 真正的引用 237
 真正的RTTI 237
 真正的句柄 239
 真正的循环 240
 真正的STL 240
 真正的容器 241
 真正的智能指针 242
 真正的数组索引 242
 数据库 243
 真正的可持久化 244
 真正的类库 245
 真正的COM 246
 真正的DCOM 247
 真正的Sun策略 247
 真正的J2EE 248
 真正的EJB 249
参考书籍 250
一些建议 250第一部分

解决方案 »

  1.   

    前言 By Chenyi眼前这本书充分体现了作者的所思、所想、所感,他用自己独特的眼光审视着计算机技术的世界,也用自己独特的思维逻辑对技术进行解读, 
    并用自己特有的,呵呵,偶尔带有“四个逗号=一个逗号”这样的语言风格,进行着自己的诠释。创新是一种美,独立思考也是:) 
        学习是一件因人而异的事情,因为每个人的生活经历、教育背景、年龄、认知模型等等,都是不尽相同的,也就是每个人所处的“维度”不同,而作者有 
    一种“建立更高层抽象的能力”,用一种特有的方法尝试着给大家建立一个学习计算机的、相对高层的构架,这样,可以在一定程度上突破个人的“维度”,使大 
    家从与周围事物建立联系开始,一步一步的走向计算机的世界。不识庐山真面目,只缘身在此山中。确实的,在学习技术的过程中,横看成岭侧成峰,远近高低各 
    不同,但是作者却尽力想让这高低或是远近都不同的山峰,能在我们面前呈现出一种规律、共性来,这是难能可贵的,因为这个架构的过程对思维的要求是比较高 
    的:) 
           哲语有云,动身的时候到了,有的人去生,有的人去死,只有上帝知道,于是这个问题被回归到“ to be ?or not to be 
    "的问题,是生,是死,只有上帝知道。 
        但是,人类对真理的探索和对知识的追求,却从来没有因为“生死”的维度而停止过,是的,一颗崇尚真理、探寻真理的海洋之心,将从来不会因为泰坦 
    尼克号的沉沉而消沉,它将永远绽放在人们的心中,激励着我们向更广阔、更深髓的世界,一路前行、风雨无阻:) 
         在这个意义上,鼓励作者的写作和思路,也是对我们自身追寻真理的一种鼓励、一种回路。是为一点小感想:)与作者分享!! By Minlearn对思想的界定是重要的!!因为我们需要一个知识体系才能不致于困惑!!我抓住了哪些转瞬就在我脑中消失的思想,,,因为它们远比一切成书的东西都让我感到它的珍贵!而更玄的是,他们竟然真的能够被文字描述出来!!这整本书就是小说式的教学人生在世,我们的所见所闻也都那些,给你一个道理,,这个道理有什么用?没用,是的,因为要给你一个情景,你才能理解它并后来运用它仅仅让你去学一个知识,如果不给出它被产生时的历史和它所处的架构(这本书不但给你思想,而且给你对应的细节),那么我们就会迅速迷惑,因为我们不是泛化主义者,形而上学者(但是的确存在超前主义学说,只是为了创立一种学说,后来才慢慢与实践相结合),我们需要一种与自身相联系点去理解它,我们只是生活的人,我们不是高高在上的学院高手。
     
    倒干你杯子里的水,因为你正面临一场说教,这是一种很蠢的思想,人生在世,已经不可能脱离某种信念而活,当我们开始学习编程,我们永远都是用外行的眼光去看待某样东西,当你占在巨人的肩膀上成为一个专家之后,你就需要用全局的眼光去看待曾经陌生的知识,此时你不再是个学习者,而会批评产生你自己的认知一个高手必定是与常人有不同的思想级深层的东西和他自己特有的体会,那是什么呢,那些是不会出现在任何描述具体技术细节的书里的思想级的东西,那么这本书就提供了高手的秘诀,如果真的想当高手,,,请你不要错过这本书里任何一个字眼!!如果你是高手,这本书一定与你内心深处的某些想法偶合。知识是事物之间的联系,那么实践就是强化或深入这些联系的方法我常想,到底是什么重要,是认知还是技能,人们普遍认为实践应在任何情况下都高于认识,事实是:可能有技能但是没有认知,但却不可能有认知但没有技能,只有格物至知,先格物,认识到了一定程序后就会产生对事物本质的认识,也可先认识事物本质再在指导下去发展技能,,,但是认知可以直接传递给你(至此只是一个你所能想象得到的浅层和大概,而且除非实践,这个大概形象你也不知道它到底是正确的还是错误的,更深层的你想象不到的抽象以及关于这些认识的正确性要求实践),而实践不能被直接传达看英语报纸也是实践,因为它也能够加强你实际使用英语的能力,(我不是在模糊这二者之间的区别,我只是企图站在这二者之上求得一种更泛化的认识),,实践不过更侧重动手能力而已民,而认知跟它并不矛盾知识的获得与能否运用知识本身无必然因果,拥有足够的知识,再加上泛型的思维,,你就会快速得以实践(了解足够多的细节才能泛思,,泛思给我们有选择性学习的能力)所以说实践和认知都是重要的,没有谁比谁更重要的说法,然而对于初学者来说浅层认知的重要性要高于实践,一开始就有一个好的思想和基础显然可以为未来的实践扫清障碍(不是提倡光谈理论,而是把理论整理成一个架构也是一项重要的工作,不是不能直接把这个认知传递给你,而是需要再找一个与你的结合点来让你认识它,因此它是一本同时讲解到认知与实践的书, 不是提倡导光谈理论,而是如果事先有理论的指导,那么学习中就会少走很多弯路,学习中最怕不能理解细节,更怕以为细节就是一切,所谓一叶屏目不见泰山,更有人把学习语言作为编程的终极目标,而如果事先有人给你指导,你就会少走很多弯路)因此,即便这个浅层的认知,也是无比重要的,因为学习是一个层次上升阶段,在拥有一定知识后,理解基于这些知识之上的更高层知识会很快,, 即掌握了基础再加上一定勤奋的博物广识,知识量是几何级上升的,因此一种很好的学习方法是,学习应该先吞,(在一定知识量的前提下尽可量地博物广识,即使看不懂也要浏览完,以获得浅层的认知继续下一步学习),这是自然而痛苦的过程,(注意这只是泛读阶段,以建立一个知识的框架)我们鼓励在实践基础上去学习,也提倡速成,我认为学习不应该提倡逐步深入,人的生命有限,染启超在渡日的般上一夜之间学会日语,这就是说他掌握了思想,细节的东西永远是后来的,只要思想是重要的掌握了思想和基础后,每天写小程序,编程能力就会日渐提高,而当你写过和分析过很多程序之后,你就会具备一眼看出的本事,过程的最后你发现自己蛹变蝶飞了学习应首先理解框架(这是泛读),然后是细节(这就是对某些内容的精读),就好像在一个大型应用中,编译跟解释并不会走二个极端一样(低层用编译码,而高层用脚本),学习往往是混合了这二个过程的过程,,,矛盾和老子的不可绝对在这里起作用所以说思想和基础永远是重要的(人月神话的作者固然精通很多细节,但是他写出来的却是一本思想书),,知识和思想自然是越多越好(泛读可以无限进行,花再多人年都无碍,人年是人月神话里面的概念),但是有一些知识不必深入(精读却需限于自己的开发领域),但一定要知其然如果说一些知识仅仅知其然就够了的话(仅仅是不致于迷惑和建立知识结构),那么有一些知识却是要精通的,因为不但要知其然而且要实际拿来应用要成为某领域能实际胜任某份工作的程序员,就要做到精通四个“Idioms”(注意这是精通)
    1. 你要用到的语言和IDE的“Idioms”(一门语言,一种开发库)---编程首先就是会用一门语言和它的库
    2. 数据上的”Idioms”(数据结构-数据的内存模式,数据库-数据的外存模式)---编程第一个就是数据,想起DOS下的编程了吗,一是数据,二是代码
    3. 设计上的”Idioms”(面向对象,设计模式)-----编程第二个就是代码或代码框架
    4. 以上三条都是前提,那么这第四条就是最终的你要实际涉入的业务领域的”Idioms”---编程最终是为了为这个领域服务
    以上四条是主干(最好按1-4的顺序精读),而其它的都是支节。比如工具的使用啊,XML啊,UML啊,XP方法啊,ANT部署发布知识啊等等对于计算机专业来说,为什么也才那么几门课程(高数线代离散,编译原理,C与算法,Java),,因为这些学科是最重要的(真正掌握了这些基础,你会发现再多后面的技术用语及其背景都是支节),这就相当于前面提出的四个Idioms比如拿编程语言来说,只要越过语言的表达这一层,我们才能用语言表达和理解事物(语言跟你要说的话就像用C++语言去表达一个算法,方案领域跟应用领域的对应,就像穿鞋去上海, 穿上鞋只是开始,真正你要去的目标-上海还远着呢),就像口才,一个好口才的人说话时绝对不会想到措词,因为语言已经成为一种意象,只要把一样东西思想化,才能超越这个东西而去想到别的东西而长足发展,比如面向对象,这本书将帮你解释为什么面向对象是一种科学的机制,解释的过后你甚至会觉得这是一种本来就该存在的很亲切的机制,只要超越了面向对象我们编程时,再加上一定设计模式,才能真正不会一动手编程就考虑什么是面向对象之类。。而这些,好像都是一个高手所能做的事了,)。编程时碰到的信息量永远是巨大的,有生之年我们不可能掌握这些信息的来龙去脉,对于程序员来说,提供一个关于它的编程参考文档可以说是掌握了此信息,因为这个文档就是这个信息的大概,实际上我们编程大部分情况下都只是用第三方的代码库来编程,这个信息用于编程所需的全部东西,对于编程来说只要掌握这些东西就行),换句话说,一些知识如果不能理解就得先放(以后总会弄懂它的吧?又不是为了应付临时的考试!), 在这个信息的社会,至于信息,是撞事学事!一个程序员并不全知全能,它只提取和了解事物对于编程方面的信息。对于事物的逻辑认识,只能在对它的编程中不断掌握它问题随之而来,既然存在这个界限,又如何突破,否则这就是一个空谈多走弯路,学习是认识事物间联系的过程,而记忆或实践是加强这个联系的过程,,能够认识到事物之间的联系,即便是自想的联系也可加深对事实的记忆(一个程序员有他自己的知识体系是重要的),这就是知识一切东西,我们应该查本究源,深入其原子世界(任何一个术语都不会简单,有它自己产生的环境与其它知识的联系,但也正是因为这样,这也决定了它的有域性,任何知识只要放在它自己的领域内去理解才能更容易被理解),, 翻译过很多文章你就知道要措词,措词跟概念有关,二个稍微相差不大的措词都会让读者摸不头脑或让他们恍然大悟。我们高中做到了英语的相似名词不同分析,本书也打算在一定程序上这样做(虽然计算机技术领域一个概念可以自成一书这种现实不允许我们这样做),咬文嚼字在这里起作用,,在某些情况下,它是一种好习惯!然而千万不要走入另外一种极端, ,知识用词和技术用语没有一个标准,比如方法和函数指的是同一个东西什么是线性(一次就是线性),什么是离散(离散了的量),这都是仁者见伍,智者见,但人们对此的理解都不会差到那里去,并且也不会影响后来的学习,这里有一个描述或形式的概念,相信大家都还记得初中学过的集合,是描述性概念,但集合其实还有一个形式概念,给定了形式就可以框死而且,要知道,即使是《虚拟机的原理与设计》这本书的作者也会对别人书里的进程概念感到不解。我注意到程员序考试中多了一项标准化,的确,知识的传达也需进入标准化时代了最后,如果说任何行为都是功利的,,那么我写这本书的目的只为博你一笑,,,书中错误再所难免,望不吝赐教!!