本書為JAVA基本程式設計概念和技術的基礎介紹,將程式設計、資料結構和演算法整合到一本書中,本書採用「物件在後」的撰寫方式為讀者奠定基礎。作者以問題導向的方式介紹程式設計,重點是「解決問題」,而不是語法,且本書提供大量不同難度的習題以供練習。
-- --
A fundamentals-first introduction to basic programming concepts andtechniques
Introduction to Java Programming and Data Structures seamlessly integrates programming, data structures,and algorithms into one text. With a fundamentals-first approach, the textbuilds a strong foundation of basic programming concepts and techniques beforeteaching students object-oriented programming and advanced Java programming.Liang explains programming in a problem-driven way that focuses on problemsolving rather than syntax, illustrating basic concepts by example andproviding a large number of exercises with various levels of difficulty forstudents to practice. The 12th Edition is completely revised in everydetail to enhance clarity, presentation, content, examples, and exercises.
本書特色
Reach every student by pairing this text with MyLab Programming
MyLab™ is the teaching and learning platform that empowers you to reach every student. By combining trusted author content with digital tools and a flexible platform, MyLab personalizes the learning experience and improves results for each student.With MyLab Programming, students work through hundreds of short, auto-graded coding exercises and receive immediate and helpful feedback based on their work. Learn more about MyLab Programming.
- Provide students with the most relevant and current coding practices
* UPDATED - Java 9, 10, 11 and FX11 are covered to keep the text up-to-date with current technologies. Examples are improved and simplified.
* UPDATED - Lambda expressions are used in more examples and exercises in the data structures chapters to simplify coding.
* NEW - Both Comparable and Comparator are used to compare elements in Heap, Priority-Queue, BST, and AVLTree. This is consistent with the Java API, and is more useful and flexible.
* NEW - String matching algorithms are introduced in Chapter 22: Developing Efficient Algorithms.
- Help students understand the fundamentals of programming
* UPDATED - VideoNotes Tutorials provide step-by-step video tutorials specifically designed to enhance the programming concepts presented in the text.
* Check Points provide review questions to help students track their progress as they read through the chapter and evaluate their learning.
* The Chapter Summary reviews the important subjects that students should understand and remember. It helps them reinforce the key concepts they have learned in the chapter.
* Notes, Tips, Cautions, and Design Guides are inserted throughout the text to offer valuable advice and insight on important aspects of program development.
- Foster critical-thinking and problem-solving skills
* UPDATED - Programming Exercises are grouped by sections to provide students with opportunities to apply the new skills they have learned on their own. Additionally, more than 200 programming exercises with solutions, including several newly added exercises, are provided to the instructors on the Instructor Resource Website. These exercises are not printed in the text.
* Problems and Case Studies teach problem-solving and programming concepts. The book uses many small, simple, and stimulating examples to demonstrate important ideas.
* Quizzes are accessible online, grouped by sections, for students to self-test on programming concepts and techniques.
- Reach every student with MyLab
- Teach your course your way: Your course is unique. So whether you’d like to build your own assignments, teach multiple sections, or set prerequisites, MyLab gives you the flexibility to easily create your course to fit your needs.
* The Exercise Editor now allows you to create new programming exercises. In addition to assigning the hundreds of programming exercises already available, you can create and assign programming exercises to customize your course.
* Plagiarism Detection Tool alerts instructors of potential plagiarism issues by checking:
-Students’ average submission rate.
-Students’ average number of attempts until correct.
- Empower each learner: Each student learns at a different pace. Personalized learning pinpoints the precise areas where each student needs practice, giving all students the support they need — when and where they need it — to be successful.
* Interactive Practice provides first-hand programming experience in an interactive online environment.
* The error-specific messages include both the feedback from the compiler and plain English interpretations of likely causes for the student’s incorrect answer. Feedback for many exercises includes test case tables that show a student’s output against expected output.
* Pearson eText is a simple-to-use, personalized reading experience available within MyLab. Students can use their computer or the mobile app to easily highlight and take notes all in one place — even when offline. Seamlessly integrated videos and rich media* give students access to the help they need, when they need it. You can also share your own notes with students so they see the connection between their reading and what they learn in class.
- Deliver trusted content: You deserve teaching materials that meet your own high standards for your course. That’s why we partner with highly respected authors to develop interactive content and course-specific resources that you can trust — and that keep your students engaged.
* VideoNotes provide step-by-step video tutorials specifically designed to enhance the programming concepts so students can view the entire problem-solving process outside of the classroom–when they need help the most.
* Algorithm Animations demonstrate how algorithms work.
* Hundreds of short, auto-graded coding exercises are mapped to Introduction to Java Programming and Data Structures. For students, the system automatically detects errors in the logic and syntax of their code submissions and offers targeted hints that enable students to figure out what went wrong—and why. The exercises help students master programming fundamentals (syntax, flow of control), allowing instructors to focus on higher-level concepts (problem solving).
- Improve student results: When you teach with MyLab, student performance often improves. That’s why instructors have chosen MyLab for over 15 years, touching the lives of over 50 million students.
New to This Edition
- Provide students with the most relevant and current coding practices
* Java 9, 10, 11 and FX11 are covered to keep the text up-to-date with current technologies. Examples are improved and simplified.
* Lambda expressions are used in more examples and exercises in the data structures chapters to simplify coding.
* Both Comparable and Comparator are used to compare elements in Heap, Priority-Queue, BST, and AVLTree. This is consistent with the Java API, and is more useful and flexible.
* String matching algorithms are introduced in Chapter 22: Developing Efficient Algorithms.
- Help students understand the fundamentals of programming
* VideoNotes Tutorials provide step-by-step video tutorials specifically designed to enhance the programming concepts presented in the text.
- Foster critical-thinking and problem-solving skills
* Programming Exercises are grouped by sections to provide students with opportunities to apply the new skills they have learned on their own. Additionally, more than 200 programming exercises with solutions, including several newly added exercises, are provided to the instructors on the Instructor Resource Website. These exercises are not printed in the text.
《深入探索:现代软件开发的基石与前沿实践》 图书简介 本书旨在为读者提供一个全面且深入的视角,剖析支撑现代软件工程的核心理论、设计范式以及尖端技术实践。它并非专注于特定编程语言的语法细节,而是着力于构建稳健、可维护且高效的软件系统的通用原理。全书结构严谨,内容涵盖了从基础计算理论到复杂系统架构的广阔领域,力求帮助读者建立起扎实的计算机科学基础,并能将这些理论转化为解决实际工程挑战的有效策略。 第一部分:计算思维与基础理论的重塑 本部分深入探讨了计算模型、算法复杂性分析以及离散数学在软件设计中的应用。我们首先回顾了图灵机模型及其在可计算性理论中的地位,强调理解计算的本质边界对软件架构师的重要性。 1. 算法效率与性能剖析: 我们将算法的分析提升至理论高度。详细阐述了渐近符号(大O、Ω、Θ记法)的精确含义,并对排序、搜索以及图遍历算法的内在复杂性进行了详尽的比较分析。重点探讨了摊还分析(Amortized Analysis)在数据结构性能评估中的应用,例如在动态数组和斐波那契堆中的实践。读者将学习如何通过数学工具准确预测代码在海量数据下的行为,而不是依赖于经验性的“感觉”。 2. 形式化方法与逻辑基础: 软件的正确性是工程的基石。本章探讨了一阶逻辑、模态逻辑在程序规范(Specification)中的应用。我们引入了Hoare逻辑作为程序验证的核心框架,详细讲解了前置条件、后置条件和循环不变量的构建方法。这部分内容旨在教会读者如何用数学的严谨性来证明程序的行为符合设计意图,从而从根本上减少运行时错误。 第二部分:高级数据结构与抽象的艺术 本部分超越了标准数据结构(如数组和链表)的初级应用,专注于那些在高性能计算、大规模数据存储和复杂查询中扮演关键角色的高级抽象。 1. 内存层级结构与缓存优化: 现代性能瓶颈往往不在于CPU速度,而在于内存访问延迟。本章细致剖析了CPU缓存层次结构(L1/L2/L3)的工作原理,包括局部性原理(时间与空间局部性)。我们将探讨如何设计缓存友好的数据布局,例如使用结构化数组(AoS vs. SoA)的权衡,以及如何实现高效的内存访问模式,以最大限度地利用预取和缓存行对齐。 2. 分布式数据结构与一致性模型: 针对当前大规模分布式系统的需求,我们深入研究了一致性哈希(Consistent Hashing)的理论基础及其在负载均衡和分布式缓存中的实际部署。重点分析了CAP理论的理论含义,并对比了最终一致性、顺序一致性(Sequential Consistency)和线性化(Linearizability)之间的技术差异和工程取舍。讨论了诸如Vector Clocks和Lamport时间戳等同步机制的实现细节。 3. 图论的高级应用: 除了基础的Dijkstra和Floyd-Warshall算法,本节聚焦于流网络(Flow Networks)的理论及其在资源分配问题中的应用,例如最大流/最小割算法的Ford-Fulkerson方法及其优化。此外,还探讨了复杂网络分析中,如PageRank算法背后的迭代矩阵计算原理。 第三部分:系统级设计与并发编程范式 本部分将视角从单个程序扩展到整个系统,聚焦于如何构建能够处理并行性、容忍故障并有效扩展的复杂系统。 1. 并发模型与同步原语的深度解析: 我们不再满足于使用互斥锁,而是深入探究并发的底层机制。详细分析了原子操作(Atomic Operations)的硬件实现基础(如Compare-and-Swap, CAS),并以此为基础构建高效的无锁数据结构(Lock-Free Data Structures)。探讨了事务内存(Transactional Memory)的概念及其在现代处理器中的实现尝试,以及软件事务内存(STM)的挑战。 2. 容错与故障恢复机制: 构建永不宕机的系统是现代工程的追求。本章探讨了拜占庭容错(Byzantine Fault Tolerance, BFT)的基本思想和其在分布式账本技术中的应用。深入解析了Raft/Paxos协议的设计哲学,侧重于领导者选举、日志复制和安全性的数学保证。 3. 面向服务的架构(SOA)与微服务通信: 本节关注系统集成而非单一代码库。详细比较了同步通信(如REST/gRPC)与异步消息传递(如事件驱动架构)的适用场景。讨论了服务发现、熔断器(Circuit Breakers)和幂等性(Idempotency)的设计原则,强调在松耦合系统中维护数据一致性的挑战。 第四部分:编程语言理论与元编程 本部分旨在提升读者对不同编程范式的理解,掌握如何设计语言特性,以及如何利用语言本身进行扩展和自动化。 1. 静态类型系统与类型推导: 深入探讨了Hindley-Milner类型系统,理解其如何允许强大的类型检查,同时保持代码的简洁性。讨论了代数数据类型(ADTs)和模式匹配在表达复杂数据结构和控制流方面的优势。 2. 解释器、编译器与代码生成: 本章提供了一个自底向上的视角,解释了抽象语法树(AST)的构建过程、中间表示(IR)的设计,以及基于SSA(Static Single Assignment)形式的值分析。重点讲解了JIT(Just-In-Time)编译的基本优化技术,如逃逸分析和内联,帮助读者理解高性能运行时环境的工作原理。 3. 泛型编程与元编程: 探讨了C++模板元编程、Lisp宏系统等技术,理解模板特化(Template Specialization)和编译期多态的强大能力。强调元编程如何用于消除样板代码、提升代码的表达力和安全性,将其视为一种将程序作为数据进行处理的强大工具。 总结 本书的最终目标是培养读者一种超越具体工具集的系统化、理论驱动的工程思维。通过对计算核心、高效数据组织、分布式共识以及语言底层机制的全面审视,读者将获得驾驭未来任何复杂软件挑战所需的理论深度与实践广度。每一章节的论述都建立在坚实的数学和逻辑基础之上,确保所传授的知识具有长久的生命力。