登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

『簡體書』像程序员一样思考

書城自編碼: 2076496
分類: 簡體書→大陸圖書→計算機/網絡项目管理 IT人文
作者: V.Anton
國際書號(ISBN): 9787115316585
出版社: 人民邮电出版社
出版日期: 2013-06-01
版次: 1 印次: 1
頁數/字數: 238/322000
書度/開本: 16开 釘裝: 平装

售價:NT$ 456

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
阿里阿德涅
《 阿里阿德涅 》

售價:NT$ 359.0
历史的偏见:从觅食社会到工业时代,人类如何看待暴力与不平等
《 历史的偏见:从觅食社会到工业时代,人类如何看待暴力与不平等 》

售價:NT$ 458.0
战争:从类人猿到机器人,文明的冲突和演变
《 战争:从类人猿到机器人,文明的冲突和演变 》

售價:NT$ 562.0
中国人口三千年
《 中国人口三千年 》

售價:NT$ 312.0
庄园:从《垦田永年私财法》到应仁之乱
《 庄园:从《垦田永年私财法》到应仁之乱 》

售價:NT$ 437.0
资产负债表衰退:日本在经济学未知领域的探索及其对全球的启示
《 资产负债表衰退:日本在经济学未知领域的探索及其对全球的启示 》

售價:NT$ 614.0
东方巴黎人
《 东方巴黎人 》

售價:NT$ 411.0
美利坚在燃烧:20世纪60年代以来的警察暴力与黑人反抗
《 美利坚在燃烧:20世纪60年代以来的警察暴力与黑人反抗 》

售價:NT$ 510.0

建議一齊購買:

+

NT$ 656
《 算法的乐趣 》
+

NT$ 621
《 计算的本质:深入剖析程序和计算机 》
+

NT$ 405
《 程序员的呐喊 》
+

NT$ 456
《 高效能程序员的修炼 》
+

NT$ 735
《 代码的未来(Ruby之父剖析云计算、大数据时代下的技术) 》
編輯推薦:
学会像程序员一样思考,构建创新性问题解决方案!本书习题极其类似Google和Facebook的面试题,对于软件工程师面试有非常大的参考价值!众多专业网站和媒体好评如潮!
內容簡介:
编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用。本书分析了程序员解决问题的方法,并且教授你其他图书所忽略的一种能力,即如何像程序员一样思考。
全书分为8章。第1章通对几个经典的算法问题切入,概括了问题解决的基本技巧和步骤。第2章通过实际编写C++代码来解决几个简单的问题,从而让读者进一步体会到问题解决的思路和应用。第3到7章是本书的主体部分,分别探讨了用数组、指针和动态内存、类、递归和代码复用来解决问题的途径和实际应用。最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。
本书选取的话题切中程序员的痛点,针对他们最容易陷入挣扎的领域展开讨论,引发思考。每章后面都给出一些编程习题,使得读者能够应用该章所讨论的概念,训练和提升问题解决的能力。
本书适合初级到中级的程序员用来提升自己的问题解决能力和应用编程技能的能力,也适合计算机相关专业的学生作为参考书阅读。
關於作者:
V. Anton Spraul
讲授入门级编程和计算机科学已经超过15年。本书凝聚了他在多年的开发经历中所提炼的经验和技巧,并在面向许多遭遇瓶颈的程序员的一对一指导中收到了良好的效果。他还是《Computer
Science Made Simple》(Broadway)的作者。
译者简介

徐波浙江宁波人,熟悉C和C++、Java等编程语言。2002年开始从事计算机技术图书翻译。徐波技术视野广阔,翻译文笔优美。译著有《C专家编程》、《C和指针》等。
目錄
第1章 解决问题的策略
1.1 经典难题
1.1.1 狐狸、鹅和玉米
1.1.2 瓷砖滑块问题
1.1.3 数独
1.1.4 Quarrasi锁
1.2 基本的问题解决技巧
1.2.1 总是要制订计划
1.2.2 重新陈述问题
1.2.3 划分问题
1.2.4 从自己所知的开始
1.2.5 削减问题
1.2.6 寻找类比
1.2.7 试验
1.2.8 避免陷入挫折感
1.3 习题
第2章 纯粹的难题
2.1 本章所使用的C++简述
2.2 输出图案
2.3 输入处理
2.4 追踪状态
2.5 结论
2.6 习题
第3章 用数组解决问题
3.1 数组基础知识概述
3.2 用数组解决问题
3.3 固定数据的数组
3.4 非标量数组
3.5 多维数组
3.6 决定什么时候使用数组
3.7 习题
第4章 用指针和动态内存解决问题
4.1 指针基础知识回顾
4.2 指针的优点
4.2.1 运行时确定长度的数据结构
4.2.2 可改变长度的数据结构
4.2.3 内存共享
4.3 什么时候使用指针
4.4 内存细节
4.4.1 堆栈和堆
4.4.2 内存的大小
4.4.3 生命期
4.5 解决指针问题
4.5.1 可变长度的字符串
4.5.2 链表
4.6 结论和未来的步骤
4.7 习题
第5章 用类解决问题
5.1 类的基础知识回顾
5.2 使用类的目的
5.2.1 封装
5.2.2 代码的复用
5.2.3 问题的细分
5.2.4 信息隐藏
5.2.5 可读性
5.2.6 表达能力
5.3 创建一个简单的类
5.3.1 问题:班级花名册
5.3.2 基本的类框架
5.3.3 支持方法
5.4 具有动态数据的类
5.5 需要避免的错误
5.5.1 假类
5.5.2 单功能
5.6 习题
第6章 用递归解决问题
6.1 递归基础知识回顾
6.2 头递归和尾递归
6.3 大递归思路
6.4 常见的错误
6.4.1 过多的参数
6.4.2 全局变量
6.5 把递归应用于动态数据结构
6.5.1 递归和链表
6.5.2 递归和二叉树
6.6 包装器函数
6.7 什么时候选择递归
6.8 习题
第7章 通过代码复用解决问题
7.1 良好的复用和不良的复用
7.2 组件基础知识回顾
7.3 创建组件的基础知识
7.3.1 探索式学习
7.3.2 根据需要学习
7.4 选择组件类型
7.5 习题
第8章 培养程序员的思维
8.1 创建自己的总体计划
8.1.1 扬长避短
8.1.2 制订总体计划
8.2 处理任何问题
8.2.1 问题:绞型者作弊程序
8.2.2 寻找作弊方法
8.2.3 绞型者作弊所需要的操作
8.2.4 初始设计
8.2.5 开始编写化码
8.2.6 对初始结果的分析
8.2.7 解决问题的艺术
8.3 学习新的编程技能
8.3.1 新语言
8.3.2 已经熟悉的语言的新技巧
8.3.3 新代码库
8.3.4 上课
8.4 结论
8.5 习题
內容試閱
前 言
你是否在编写程序时感受到挣扎,即使觉得已经理解了自己所使用的编程语言?你是否阅读了一本编程书籍的某一章并能够顺利理解,却无法把自己所读到的东西应用于程序中?你是否能够理解自己在线所阅读的一个程序,甚至能够把每行代码所完成的任务告诉其他人,但是自己在接到一个编程任务后,却面对文本编辑器的空白屏幕大脑一片空白?
并不是只有你才这样。我从事编程教学已经超过15年,几乎所有的学生都在某种程度上符合上面的描述。我们称之为缺乏问题解决能力。所谓问题解决能力,就是根据问题描述编写一个原创程序来解决这个问题。并不是所有的编程任务都需要深入的问题解决能力。如果只是对一个现有的程序进行微小的修改、调试或添加测试代码,这类编程在本质上是机械的,不会对我们的创造力提出多大的挑战。但是,所有的程序总会在某个时刻需要解决问题,所有优秀的程序员都需要具备解决问题的能力。
解决问题是非常困难的。但有些人确实使它变得非常轻松,因为他们天赋异禀,就像迈克尔?乔丹这样的体育天才一样。对于这帮天才,高级的思路几乎可以毫不费力地转换为源代码。用Java的一个比喻来说,他们的脑子天生就像能执行Java代码一样,而绝大多数人只能通过虚拟机来解释代码。
没有超常天赋对于成为程序员而言并不是致命的。如果真是如此,世界上也就没有多少程序员了。但是,我看到过许多值得尊重的学习者却在挫折面前挣扎太久。最坏的情况是,他们完全放弃了编程,认为自己永远成不了程序员,觉得只有天赋异禀的人才能成为优秀的程序员。
学习解决编程问题为什么这么困难呢?
部分原因是解决问题是一种与学习编程语言不同的活动,它使用了一组不同能力的“肌肉”。学习编程的语法、阅读程序、记忆应用程序编程接口的元素,这些都是分析性的“左脑”活动。使用以前所学会的工具和技巧编写一个原创程序却是创造性的“右脑”活动。
假设我们想拿走掉落在自家房顶上的其中一条雨槽内的一根树枝,但是自家的梯子却不够长,够不着那根树枝。我们会跑到自己家的车库,寻找某样东西来帮助我们拿走雨槽上的树枝。有没有办法使梯子加长呢?我们站在梯子上时能不能手持某样东西来抓住或拔掉树枝?或许我们可以从某个位置爬上屋顶拿走树枝。解决问题是一种创造性的活动。不管你是否相信,在设计自己的原创程序时,我们的智力活动过程与想方设法从雨槽中拿走树枝的过程非常相似,但与调试一个现有的for循环的过程却截然不同。
但是,绝大多数编程书籍却把重点放在语法和语义上。学习编程语言的语法和语义是极为重要的,但这只是学会用这种语言进行编程的第一个步骤。在本质上,大多数面向新手的编程书籍所讲述的是怎样阅读程序而不是怎样编写程序。把重点放在怎样编写代码上的书籍常常是有效的“烹调书”,因为它们讲述在特定情况下所使用的特定“菜谱”。这种书籍对于节省时间而言是极有价值的,但它们并不是通往学会编写原创代码的正确道路。考虑原始意义上的烹调书。尽管优秀的厨师拥有自己的烹调书,但没人依靠烹调书就能成为优秀的厨师。优秀的厨师理解配料、备菜方法和烹饪方法,并知道怎样把它们组合在一起烹制美味佳肴。优秀的厨师在烹制美味时所需要的只是工具完备的厨房。同理,优秀的程序员理解语言的语法、应用程序框架、算法和软件工程原则,并知道怎样把它们结合起来创建优秀的程序。为优秀的程序员准备一个需求规范列表,给他一个功能齐全的开发环境,他就能创造优秀的程序。
一般而言,当前的编程教育并没有在解决问题这个领域提供太多的指导。相反,如果程序员可以使用所有的编程工具并按要求编写足够的程序,最终他们将学会编写这些程序并且完成得很好。这种说法并没有错,但是“最终”可能意味着相当长的时间。从蹒跚学步到初窥门径的道路上可能充满挫折,有太多的人信心满满地开始了旅程,却倒在了半途中。
我们并不一定要饱经磨难才能获得成功,而是可以用一种系统的方式来学习怎样解决问题,这正是本书的核心所在。我们可以学习对自己的想法进行组织的技巧、解决方案的发现过程以及对某些类型的问题所实行的策略。通过研究这些方法,我们可以释放自己的创造力。不要弄错了:编程,尤其是解决问题,是一种创造性的活动。创造性是神秘的,没人能够准确地说出创造性是怎样发挥作用的。但是,如果我们能够学会怎样作曲、能够领会别人所提出的有关写作创造能力的建议或者能够学会绘画,我们也可以学会怎样有创造力地解决编程问题。本书并不是讲述具体的做法,而是帮助读者开发属于自己的问题解决天赋,明白自己应该怎么做。本书的目的是帮助读者成为自己心目中的程序员。
我的目标是让本书的读者学会怎样用系统性的方法完成每个编程任务,并坚信自己最终能够解决一个特定的问题。当读者完成本书的学习时,我希望你能够像程序员一样思考,并坚信自己已经是个程序员。
本书内容简介
在解释了本书的必要性之后,我还需要对本书将讨论的内容和不会讨论的内容进行一些说明。
预备条件
本书假设读者已经熟悉了C++的基本语法和语义,并且已经编写过一些程序。本书的大部分章节将预计读者已经了解了特定的C++基础知识。这些章节将从对这些基础知识的回顾开始讨论。如果读者还在学习语言的基础知识阶段,也不必担心。关于C++的语法有大量优秀的书籍可供参考,在学习解决问题的同时学习语法也是没有问题的。在尝试解决每章后面的习题之前,要保证自己已经学会了相关的语法。
所选择的话题
本书所覆盖的话题代表了我所看到的程序员新手最容易陷入挣扎的领域。它们还代表了初级和中级编程中许多跨领域的话题。
但是,我应该强调,这并不是一本用于解决特定问题的算法或模式的“烹调书”。尽管后面的章节讨论了怎样使用广为人知的算法或模式,但这本书并不适合作为解决特定问题的参考书,所以读者不应该只把注意力集中在直接与自己当前所面临的问题相关的章节中。反之,读者应该从头研读全书,暂时只跳过那些由于缺乏预备知识而无法直接学习的内容。
编程风格
这里简单概述一下本书所使用的编程风格:本书并不追求高性能的编程,并不苛求产生最紧凑、最高效的代码。我为源代码例子所选择的风格是把容易理解作为首要的考虑因素。在有些情况下,我会采用多个步骤完成那些实际上只用一个步骤就可以完成的任务,其原则就是为了进行清晰的说明。
本书也会讨论编程风格的相关内容,但只是比较宽泛的问题,例如类里面应该包含什么或者不包含什么,而不会讨论细节的问题,例如代码应该怎样缩进。作为学习中的程序员,读者当然想要在自己的所有工作中采用一致的、容易阅读的风格。
习题
本书包含了一些编程习题,但本书并不是教科书,因此读者不会在书末找到这些习题的答案。这些习题为读者提供机会应用当前章节所讨论的概念。尝试完成哪些习题当然是由读者自行决定的,但是把书中所讨论的概念应用于实践是至关重要的。简单地完成全书的阅读并不能让自己的水平得到长进。记住,本书并不是告诉读者在每个解决方案中应该怎样做。在应用本书所展示的技巧时,读者能够通过拓展自己的能力来发现需要完成什么任务。而且,成功地完成这些习题也能促进本书的另一个基本目标,就是增加读者的自信心。事实上,有一种很好的方法能够知道读者是否充分地完成了一个特定问题领域的习题,那就是当读者对解决这个领域的其他问题充满信心之时。最后,编程习题应该是充满乐趣的。虽然有时候读者可能觉得辛苦而想做些其他事情,但是完成编程习题应该是一项充满回报的挑战。
读者应该把本书看成是大脑的一项障碍训练。障碍训练可以增强力量、毅力和敏捷性,为训练者培养信心。通过阅读全书并把书中所讨论的概念应用于尽可能多的习题中,可以增强信心并培养能够用于任何编程情况的问题解决技巧。在未来,当读者面临一个难题时,就会知道应该怎样克服它。
为什么用C++
本书的编程例子是用C++编写的。由于本书的主题是怎样解决编程问题而不是专门讨论C++的,因此书中不会出现关于C++特定的提示或技巧,并且本书所讨论的基本概念也适用于任何编程语言。然而,我们无法在不讨论具体程序的情况下讨论编程,因此必须选择一种特定的语言。
选择C++的原因有几方面。首先,它在许多问题领域都是非常流行的一种语言。其次,它的来源是严格的过程性语言C,因此C++的代码既可以采用过程性的惯用法,也可以采用面向对象的惯用法。面向对象编程现在已经极为常见,在讨论解决问题时不可能忽略它,但是许多基本的问题解决方案可以用严格的过程性编程术语来讨论,这样不仅能简化代码,而且能简化具体的讨论。第三,作为一种具有高级程序库的低层语言,C++允许我们讨论不同层次的编程。最优秀的程序员可以在需要的时候“手工编写”解决方案,并利用高级程序库和应用程序编程接口来减少开发时间。选择C++的最后一个原因是一旦学会了怎样用C++解决问题,就很容易学会用其他任何语言来解决问题。许多程序员发现在一种语言中所学会的技巧可以很轻松地应用于另一种语言,尤其是当前者是C++语言的时候,这是由于它的惯用法跨度广泛,或者坦率地说,是由于它的难度所决定的。C++是真正的实用型语言,它并不是面向教学而设计的。虽然初看上去有些吓人,但一旦取得进展之后,就会觉得自己不再只是会一点点编程的人了,而是将成长为一名真正的程序员。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.