本書為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)和編譯期多態的強大能力。強調元編程如何用於消除樣闆代碼、提升代碼的錶達力和安全性,將其視為一種將程序作為數據進行處理的強大工具。 總結 本書的最終目標是培養讀者一種超越具體工具集的係統化、理論驅動的工程思維。通過對計算核心、高效數據組織、分布式共識以及語言底層機製的全麵審視,讀者將獲得駕馭未來任何復雜軟件挑戰所需的理論深度與實踐廣度。每一章節的論述都建立在堅實的數學和邏輯基礎之上,確保所傳授的知識具有長久的生命力。