软件与程序设计
-
Java核心编程从问题分析到代码实现[美]约翰·迪恩(John Dean), [美]雷蒙德·迪恩(Raymond Dean)在本书中,我们将带领您进入有趣且令人兴奋的计算机编程世界。在整个“旅程”中,我们将为您提供大量的解决问题的练习。毕竟,优秀的程序员需要善于解决问题。我们将展示如何使用Java程序实现问题解决方案。我们提供了大量的示例,简短的示例集中解释一个概念,而较长的示例更贴近真实的程序设计。我们以会话的方式呈现材料,以便于理解,让这个“旅程”更加愉快。读完这本书后,你应该可以成为一名熟练的Java程序员。本书面向广泛的读者。它既适合标准的大学水平的“程序设计入门”课程或课程序列的学生,也适合有一些编程经验并想学习Java的行业从业者和大学水平的学生,本书还适合自学Java的学生。本书特色:1 教材的基石:解决问题解决问题的能力是所有程序员必须掌握的核心技能。本书通过强调算法开发和程序设计两个关键元素讲解程序化地解决问题的方法。1.1 强调算法开发在第2章,我们在算法示例中使用伪代码代替Java,使读者沉浸在算法开发中。在使用伪代码时,读者能够自己解决复杂的问题,而不会陷入Java的语法困境中—不用担心类头部、分号、括号等。解决复杂问题可以使读者获得对创造力、逻辑能力以及组织能力的初步理解。没有这种理解,读者就会倾向于以死记硬背的态度来学习Java语法。但是有了这种理解,读者学习Java语法往往会更高效,因为他们有了学习它的基础动力。在第3章和之后的章节的算法开发示例中,我们主要依靠Java。但对于更复杂的问题,我们有时候会使用高级的伪代码来描述个提出的解决方案。使用伪代码可以使读者绕过语法细节,专注于解决方案中的算法部分。1.2 强调程序设计解决问题不仅仅是开发一个算法,还包括找出算法的实现,即程序设计。程序设计非常重要,这也是为什么我们会为它付出大量时间。通常,我们会解释一个人在提出解决方法时可能经历的思考过程。举例来说,我们解释怎样选择不同的循环类型,怎样将一个方法切分为多个方法,怎样决定适当的类,怎样选择示例和静态成员,以及怎样使用继承和组合确定类的关系。我们考验读者针对特定任务找出实现方案的能力。我们用一整章的篇幅来介绍程序设计—第8章。在那一章,我们为程序员和用户提供了对代码风格约定和文档的深度观察,介绍了设计策略,如关注点分离、模块化和封装等。此外,我们讲述了备选的设计策略—自上而下、自下而上、基于案例以及迭代增强。1.3 解决问题部分我们经常在解释概念的自然流程中解决问题(算法开发和程序设计),同时也在完全致力于解决章节中涵盖的问题。在每个解决问题的章节,我们都展示一个含有待解决问题的场景。在提出问题解决方案的过程中,我们试图通过迭代设计策略来模仿现实世界中解决问题的经验。我们会提供一个第1版的解决方案,分析此方案,然后讨论对它进行可能的改进。我们使用对话式的试错方式。例如,“我们应该使用哪一种布局管理器?我们先试一下GridLayout管理器。这样可行,但还不够好。现在,让我们再试一下BorderLayout管理器。”这种口语化的语气使读者放松,因为它传出这样一个信息,即程序员在找到方案之前需要反复解决问题,这是很正常的,而且事实上也是符合预期的。1.4 其他解决问题机制我们在整本书中都引入了解决问题的示例和解决问题的建议(不仅在第2章、第8章以及解决问题的章节)。作为重点,在包含解决问题的示例或提示文本旁边,我们插入一个解决问题的方框,它带有一个图标和简洁的提示。我们是通过示例来学习的坚定追随者。因此,我们的教材中包含大量完整的程序示例,鼓励读者使用我们的程序作为范本来自己解决类似的问题。2 教材的基石:基本原理优先2.1将需要复杂语法的概念延后我们认为许多入门级的教材太快地跳跃到需要复杂语法的概念。太早使用复杂语法,读者会养成没有完全理解语法就输入代码的习惯,甚至更糟—没有完全理解示例代码就直接从示例代码复制粘贴。这可能会得不到理想的课程效果,限制读者解决各种不同问题的能力。因此,我们倾向于将需要复杂语法的概念延后。作为这一理念的典型例子,我们在前期介绍简单的GUI编程形式(在可选的图形化编程训练中),在本书的后面涵盖更复杂的GUI编程形式。特别是,我们把事件驱动的GUI编程延后到本书的结尾部分。这一点和一些其他的Java教材不同,它们偏向于早期就完全沉浸在事件驱动的GUI编程中。我们认为这是错误的策略,因为正确的事件驱动GUI编程需要建立在对编程有十足的熟练度之上。当我们的读者在本书的结尾去学习它时,他们能够更好地去完全理解它。2.2 示例追踪要想高效地编写代码,彻底理解代码势在必行。我们发现,一步一步地追踪程序代码是确保彻底理解代码的有效途径。因此,在本书较靠前的部分,当引入一个新的编程结构时,我们经常会对它进行细致入微的说明。我们采用的细节追踪技术阐明了程序员在调试时的思考过程,是由集成开发环境(IDE)软件的调试器生成,在显示器上展示的一系列内容的输出替代品。2.3 输入和输出在可选的GUI跟踪部分,以及本书末尾的GUI章节,我们使用GUI命令来输入和输出(I/O)。不过鉴于我们强调的是基本原理,在本书的其他部分使用控制台命令。对于控制台输入,我们使用Scanner类;对于控制台输出,我们使用标准的System.out.print、System.out.println和System.out.printf方法。3 教材的基石:贴近现实如今,课堂上的学生和业界中的从业者往往更喜欢通过上手实践与贴近现实的方式来学习。为满足这一需求,我们的教材以及配套的网站引入了以下资源。?编译工具。?完整的程序示例。?程序设计中的实践指导。?基于行业标准的代码风格指南。?用于类关系图的统一建模语言(Unified Modeling Language,UML)。?分配的实践性家庭作业。3.1 家庭作业题目我们提供的家庭作业题目是具有说明性、实用性的,并且措辞清晰。这些题目从简单到具有挑战性,被划分成三种类型:复习题、练习题和项目题。我们在每章的末尾引入复习题和练习题,而项目题则是提供在我们教材的网站上。项目题由问题描述组成,它们的解决方案是完整的程序。项目题答案不在教材中。项目题需要读者具备创造力和解决问题的能力,而且要应用在对应章学到的内容。这些项目题往往包含可选的部分,以供那些更有才华的读者去挑战。3.2 学术领域项目题为提升项目题的吸引力并且展示当前章节的编程技术可能被应用到的不同兴趣领域,我们的项目题内容来自以下几个学术领域。?计算机科学和数值方法。?商务和会计。?社会科学和统计学。?数学和物理。?工程学和建筑学。?生物学和生态学。大多数学术领域项目题并不需要特定领域的知识。因此,教师可以放心地把几乎所有项目题布置给任何学生。4 本书组织在撰写本书的过程中,我们引导读者去了解三种重要的编程方法:结构化编程、OOP和事件驱动编程。我们提倡的内容和顺序使学生能够在编程基本原理的坚实基础上发展他们的技能。为培养这种基本原理优先的方法,我们的教材从一组少的概念和细节开始,逐步扩展概念并添加细节,把相对不是很重要的细节延后到之后的章节中,以避免前面的章节负担过重。5 GUI跟踪许多程序员觉得图形用户界面(GUI)编程很有趣。因此,GUI编程可以成为保持读者兴趣和参与度的绝佳激励工具。这就是为什么从第1章开始,图形编程内容就穿插在整本书中。我们把这些内容称为我们的“GUI跟踪之旅”。大多数章末部分的内容是使用GUI代码来完成此章前面部分展示的非GUI内容。对于那些没有时间阅读GUI跟踪部分的读者,没有任何问题。任意或全部的GUI跟踪部分都可以被跳过,因为本书的其他部分并不依赖于任何的GUI跟踪内容。 -
云计算技术的价值创造及作用机理研究刘森 著本研究以使用云计算服务的企业用户为研究对象,探索云计算技术对企业价值创造的作用机理,在一定程度上弥补目前云计算研究空白的同时为我国企业的云计算实践提供科学指导。同时,鉴于云计算技术还没有大范围的普及应用,本研究还做了云计算技术在企业中大范围普及应用的经济仿真模拟实验研究,提炼和深化云计算技术的社会经济价值,对我国政府云计算相关的政策制定提供参考依据。 -
Code(美)Charles Petzold(查尔斯.佩措尔德)这是一本讲述计算机工作原理的书。不过,你千万不要因为“工作原理”之类的字眼就武断地认为它是晦涩而难懂的。作者用丰富的想象和清晰的笔墨将看似烦杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此更加深刻地理解计算机的工作原理。这种理解不是抽象层面上的,而是具有一定深度的,这种深度甚至不逊于“电气工程师”和“程序员”的理解。不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的“小白”都不妨翻阅一下本书,读一读大师的经典作品,必然会有收获。 -
Scratch 寻宝之旅刘国利、蒋硕挺本书将图形化编程知识的讲解与实战合为一体,从编程的基础概念到顺序、分支、循环结构,从键盘、鼠标控制角色 到角色与角色之间的互动,从变量到列表再到自制积木,由易到难、由浅入深地讲解了Scratch所有模块的相关知识。在 知识讲解之后,设置了大量的案例实战部分。 读者可以通过理论知识的学习,掌握完整的知识体系;基于实战部分的功能说明和步骤提示,进行思考并动手实践, 完成知识的强化与应用。 -
深入浅出设计模式Eric Freeman《深入浅出设计模式》是一本通俗易懂的设计模式入门指导图书。本书用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF23种设计模式的概念及其编程应用。作者帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。后一章给出了两个设计模式综合案例,为读者实践设计模式提供了很好的学习环境。附录部分精心安排了自测题及答案,供读者练习并检验学习效果。本书适合程序开发人员阅读,尤其适合作为大学计算机专业高年级学生和研究生的教学参考书。 -
构建分布式服务云架构[意]西尔瓦诺·盖伊 (Silvano Gai)本书介绍分布式服务(DS)平台的业务驱动因素及其提供的价值和创建DS平台需要的现代网络设计和虚拟化技术,尤其详述了用P4领域特定语言和体系结构来实现运行时可编程的高性能、低功耗ASIC,还阐述了云安全服务、如何在大规模云网络中实现分布式存储和RDMA服务,以及DS平台管理架构。 -
RISC-V嵌入式开发实践王宜怀 杨勇 施连敏本书以沁恒微电子公司(WCH)的RSIC-V内核的CH32V307系列微控制器为蓝本,以知识要素为核心,以构件化为基础,阐述嵌入式技术基础与实践。本书介绍的AHL-CH32V307 硬件系统可以满足基础实践的需要。全书共13章,第1章简要阐述嵌入式系统的知识体系、学习误区与学习建议;第2章为RSIC-V架构微处理器简介;第3章介绍MCU存储器映像、中断源与硬件小系统;第4章以GPIO为例给出规范的工程组织框架,阐述底层驱动应用与设计方法;第5章介绍嵌入式硬件构件与底层驱动构件的基本规范;第6章阐述串行通信接口UART,并给出个带中断的实例。第1-6章囊括了学习一个微控制器人门环节的完整要素第7-12 章分别介绍了 SysTick 、Tim町、RTC 、Flash 在线编程 、ADC、DAC、SPU2C、TSC、DMA 、CAN 、 USB 、以太网模块及其他模块。第13章给出了外接部件、RTOS、嵌人式人工智能等应用案例。本书适用于高等学校嵌人式系统的教学或技术培训,也可供嵌人式系统与物联网应用技术人员研发时参考。 -
数值计算方法涂俐兰,李德宜内容包括引论、非线性方程(组)的数值求解、线性方程组的直接法和迭代法、插值法、函数逼近与曲线拟合、数值积分和微分、常微分方程的数值解、矩阵特征值计算.本书精简了一部分内容,突出了基本知识点和经典的算法分析. -
Linux应用编程技术南京软件研究院中科院软件所卓越工程师项目本书着眼于Linux的基本操作、编程环境和编程基本开发等方面的内容,系统介绍Linux开发所需相关的基础知识,以培养学生的动手能力,进而加强对基本概念的认识。书中对主要概念和知识点都给出了实例分析。全书分为4部分,共8章。*部分Linux入门介绍和基本概念(第1章)。主要介绍 Linux 的发展简史、开源许可证和版权制度Linux 环境下软件的体系结构、常用开发调试工具等知识。第二部分Linux 环境编程基础(第2—3章)。主要介绍Shell编程、程序和编译链接以及静态库和共享库的概念。第三部分Linux 环境编程核心(第4—6章),详细介绍在Linux环境下如何编写程序操作进程、线程、文件和目录编程以及操作系统相关背景知识。第四部分Linux 环境编程提高(第7—8章)。主要介绍Linux环境下的网络socket编程以及如何编写安全的程序。 -
交互 九院志王文聪随着互联网经济的蓬勃发展,很多如*、百度、腾讯为代表的企业都对交互设计人才的需求逐年增多,国内高校如何适应人才需求的转变,针对信息交互设计这个新兴专业方向如何进行人才培养,如何设置相关课程,何种方法与模式展开教学都成为值得关注和思考的问题。本书通过国内十所一流设计院校开设信息交互设计课程教学情况进行汇总,教学案例与研究项目实例均来自这九所院校专业教学一线教师,内容真实、丰富,能够较好的反映出目前国内设计学院开展信息交互设计教学的基本情况。
