ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب The French School of Programming

دانلود کتاب مدرسه برنامه نویسی فرانسه

The French School of Programming

مشخصات کتاب

The French School of Programming

ویرایش:  
نویسندگان:   
سری:  
ISBN (شابک) : 9783031345173, 9783031345180 
ناشر: Springer 
سال نشر: 2024 
تعداد صفحات: [451] 
زبان: English 
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 12 Mb 

قیمت کتاب (تومان) : 59,000



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 2


در صورت تبدیل فایل کتاب The French School of Programming به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب مدرسه برنامه نویسی فرانسه نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی در مورد کتاب مدرسه برنامه نویسی فرانسه

مدرسه برنامه نویسی فرانسه مجموعه ای از بحث های روشنگرانه درباره موضوعات برنامه نویسی و مهندسی نرم افزار، توسط برخی از معتبرترین نام های علوم کامپیوتر فرانسه است. نویسندگان شامل چندین نفر از مبتکران چنین اختراعات تحسین شده ای مانند تفسیر انتزاعی، زبان های برنامه نویسی Caml، OCaml و Eiffel، دستیار اثبات Coq، عوامل و تکنیک های تست مدرن هستند. این کتاب به چهار بخش مهندسی نرم‌افزار (A)، مکانیسم‌های زبان برنامه‌نویسی و سیستم‌های نوع (B)، تئوری (C) و روش‌شناسی طراحی و برنامه‌نویسی زبان (D) تقسیم شده است. مقدمه‌ای از برتراند مایر، ویراستار جلد، مقدمه‌ای از جیم وودکاک که ارزیابی خارجی از مشارکت مکتب فرانسوی را ارائه می‌کند، و فصلی کلی از جرارد بری، که سفر فکری خود را به یاد می‌آورد، پیش از آن‌ها ارائه شده است. فصل 2، توسط ماری کلود گودل، یک چشم انداز 30 ساله را در مورد تکامل آزمایش ارائه می دهد که با کار اصلی او شروع می شود. در فصل 3، میشل راینال محاسبات توزیع شده را با تاکید بر سادگی پوشش می دهد. فصل 4، توسط ژان مارک ژکول، مدیر سابق IRISA، سیر تکامل مدل‌سازی را از ابزارهای CASE تا SLE و یادگیری ماشینی ارائه می‌کند. فصل 5، توسط Joëlle Coutaz، بررسی جامعی از تکامل تعامل انسان و کامپیوتر است. در بخش B، فصل 6، توسط ژان پیر بریوت، توالی انتزاعاتی که به مفهوم عامل منتهی شد، توضیح می دهد. فصل هفتم، نوشته پیر لوئیس کورین، شرحی شخصی از سفری در میان مفاهیم اساسی معناشناسی، نحو و انواع است. در فصل 8، تیری کوکواند \"چند نکته در مورد نظریه نوع وابسته\" را ارائه می کند. بخش C با دیدگاه تاریخی شخصی پاتریک کوسو در مورد آفرینش معروف او، تفسیر انتزاعی، در فصل 9 آغاز می شود. فصل 10، توسط ژان ژاک لوی، به ردیابی redexes در حساب لامبدا اختصاص دارد. فصل پایانی آن بخش، فصل 11 توسط ژان پیر ژوانود، پیشرفت‌ها در سیستم‌های بازنویسی، به‌ویژه تلاقی پایان محاسبات بازنویسی را ارائه می‌کند. بخش D شامل دو مشارکت طولانی تر است. فصل 12 مروری است توسط Giuseppe Castagna درباره طیف گسترده ای از موضوعات برنامه نویسی که بر انواع اتحاد، تقاطع و نفی تکیه دارند. در فصل پایانی، برتراند مایر «ده انتخاب در طراحی زبان» را برای برنامه‌نویسی شی گرا پوشش می‌دهد، بین حل‌های «درست» و «نادرست» این مسائل تمایز قائل می‌شود و منطق پشت تصمیم‌های ایفل را توضیح می‌دهد. این کتاب برای هر کسی که علاقه مند به دیدگاه های مدرن برنامه نویسی باشد - در موضوعاتی مانند طراحی زبان برنامه نویسی، رابطه بین برنامه نویسی و نظریه نوع، اصول شی گرا، سیستم های توزیع شده، تکنیک های تست، سیستم های بازنویسی، انسان- تعامل رایانه ای، تأیید نرم افزار ... - و در بینش گروهی درخشان از مبتکران در این زمینه.


توضیحاتی درمورد کتاب به خارجی

The French School of Programming is a collection of insightful discussions of programming and software engineering topics, by some of the most prestigious names of French computer science. The authors include several of the originators of such widely acclaimed inventions as abstract interpretation, the Caml, OCaml and Eiffel programming languages, the Coq proof assistant, agents and modern testing techniques. The book is divided into four parts: Software Engineering (A), Programming Language Mechanisms and Type Systems (B), Theory (C), and Language Design and Programming Methodology (D). They are preceded by a Foreword by Bertrand Meyer, the editor of the volume, a Preface by Jim Woodcock providing an outsider’s appraisal of the French school’s contribution, and an overview chapter by Gérard Berry, recalling his own intellectual journey. Chapter 2, by Marie-Claude Gaudel, presents a 30-year perspective on the evolution of testing starting with her own seminal work. In chapter 3, Michel Raynal covers distributed computing with an emphasis on simplicity. Chapter 4, by Jean-Marc Jézéquel, former director of IRISA, presents the evolution of modeling, from CASE tools to SLE and Machine Learning. Chapter 5, by Joëlle Coutaz, is a comprehensive review of the evolution of Human-Computer Interaction. In part B, chapter 6, by Jean-Pierre Briot, describes the sequence of abstractions that led to the concept of agent. Chapter 7, by Pierre-Louis Curien, is a personal account of a journey through fundamental concepts of semantics, syntax and types. In chapter 8, Thierry Coquand presents “some remarks on dependent type theory”. Part C begins with Patrick Cousot’s personal historical perspective on his well-known creation, abstract interpretation, in chapter 9. Chapter 10, by Jean-Jacques Lévy, is devoted to tracking redexes in the Lambda Calculus. The final chapter of that part, chapter 11 by Jean-Pierre Jouannaud, presents advances in rewriting systems, specifically the confluence of terminating rewriting computations. Part D contains two longer contributions. Chapter 12 is a review by Giuseppe Castagna of a broad range of programming topics relying on union, intersection and negation types. In the final chapter, Bertrand Meyer covers “ten choices in language design” for object-oriented programming, distinguishing between “right” and “wrong” resolutions of these issues and explaining the rationale behind Eiffel’s decisions. This book will be of special interest to anyone with an interest in modern views of programming — on such topics as programming language design, the relationship between programming and type theory, object-oriented principles, distributed systems, testing techniques, rewriting systems, human-computer interaction, software verification... — and in the insights of a brilliant group of innovators in the field.



فهرست مطالب

Foreword
Preface: The French School of Programming
Contents
About the Authors
1 The French School of Programming: A Personal View
	1.1 Parts, Chapters, and Authors
		1.1.1 Part I: Software Engineering
		1.1.2 Part II: Programming Language Mechanisms and Type Systems
		1.1.3 Part III: Theory
		1.1.4 Part IV: Language Design and Programming Methodology
	1.2 A Bit of Personal History
		1.2.1 One Is Never Safe from a Stroke of Luck
Part I Software Engineering
	2 ``Testing Can Be Formal Too'': 30Years Later
		2.1 Introduction
		2.2 Initial Set of Results: Testing Based on Algebraic Data Types
			2.2.1 Characteristics of This Kind of Specification
			2.2.2 Basic Principles of the Testing Method
			2.2.3 Tools
			2.2.4 Comparison with Previous Works
			2.2.5 Challenge and Solutions: Oracle and Observability
		2.3 Generalisation to Other Formal Specifications Methods
			2.3.1 LOTOS
				2.3.1.1 Characteristics of LOTOS
				2.3.1.2 Testability and Exhaustivity
				2.3.1.3 Formal Specifications of Processes with Inputs, Outputs and Data Types
			2.3.2 CSP
				2.3.2.1 Characteristics of CSP
				2.3.2.2 CSP Based Testing CavalcantiG07
			2.3.3 Circus
				2.3.3.1 Characteristics of Circus
				2.3.3.2 Circus Based Testing CavalcantiG11
				2.3.3.3 A Test Generation Tool for Circus: HOL-TestGen/Cirta Feliachi12,FeliachiGWW13
		2.4 Outcomes of Some Experiments
		2.5 Subsequent Works Along the Same Line
			2.5.1 VDM
			2.5.2 Object-Oriented Systems
				2.5.2.1 Ada and Object Oriented Programs
				2.5.2.2 ASTOOT and TACCLE
			2.5.3 HOL/TestGen
		2.6 Conclusion
		Appendix: Some Hints on the MAGGALY Experiment
		References
	3 A Short Visit to Distributed Computing Where Simplicity Is Considered a First Class Property
		3.1 Introduction
			3.1.1 University Professor: What Does It Mean? A Personal View
			3.1.2 Content
			3.1.3 Distributed Computing
		3.2 Causal Message Delivery
			3.2.1 A Causality-Related Problem
			3.2.2 A Very Simple Algorithm
		3.3 Causality-Related Issues in Distributed Checkpointing
			3.3.1 On the Consistency of Distributed Global States
			3.3.2 Z-dependency: Zigzag Paths and z-Cycles
			3.3.3 A Few Results on Distributed Checkpointing: Two Theorems
		3.4 A Visit to Read/Write Registers
			3.4.1 Atomic Read/Write Register
			3.4.2 Read/Write Registers in Crash-Prone Distributed Systems
			3.4.3 Read/Write Registers in the Presence of Byzantine Failures
		3.5 A Fundamental Need: To Agree and Cooperate
			3.5.1 Read/Write Registers Are Not Universal in Asynchronous Crash-Prone Message Passing Systems
			3.5.2 Consensus: A Fundamental Object
			3.5.3 Bad News and Good News
			3.5.4 The Condition-Based Approach
			3.5.5 The Case of Byzantine Processes
		3.6 Miscellaneous: There Is No End to Research
			3.6.1 Symmetry Breaking
			3.6.2 Anonymous Memory
			3.6.3 Fully Anonymous Systems
			3.6.4 Self-stabilization
		3.7 By Way of Conclusion
		Remark
		References
	4 Modeling: From CASE Tools to SLE and Machine Learning
		4.1 Introduction
		4.2 First Generation: CASE Tools
			4.2.1 The Idea
			4.2.2 The Good
			4.2.3 The Bad and the Ugly
		4.3 The Time of Model Driven Architecture (MDA)
			4.3.1 The Idea
			4.3.2 The Good
			4.3.3 The Bad and the Ugly
		4.4 Separation of Concerns with Models, Aspects and Features
			4.4.1 The Idea
			4.4.2 The Good
			4.4.3 The Bad and the Ugly
		4.5 Domain Specific Languages and Software Language Engineering
			4.5.1 The Idea
			4.5.2 The Good
			4.5.3 The Bad and the Ugly
		4.6 A New Challenge: Models and Data
		References
	5 At the Confluence of Software Engineeringand Human-Computer Interaction:A Personal Account
		5.1 Introduction
		5.2 Pre-HCI: Hardware Driven Interaction
		5.3 Seminal HCI: Graphical Interaction
			5.3.1 Graphical Interaction, Visual Metaphors and Direct Manipulation
			5.3.2 Cognitive Psychology: Micro- and Macro-theories Informing Software Tools
				5.3.2.1 Two Examples of Influential Micro-theory and Model: Gestalt Theory and Fitts' Law
				5.3.2.2 Two Examples of Influential Macro-theories: The “Seven Stages of Action” Model and the Model Human Processor
			5.3.3 Task Modeling Informing User Interface Design and Automatic Generation
			5.3.4 Usability as User-Centered Properties
				5.3.4.1 Interaction Flexibility
				5.3.4.2 Interaction Robustness
			5.3.5 Software Architecture Modeling for Interactive Systems
				5.3.5.1 Arch/Slinky: A Layered Architectural Approach to User Interface Functions
				5.3.5.2 MVC and PAC: Two Examples of a Distributed Architectural Approach for User Interface Functions
		5.4 Ubiquitous HCI: Embodied Interaction
			5.4.1 Tangible Interaction and Augmented Reality
				5.4.1.1 Tangible User Interfaces: Physical Objects as Input and Output Devices
				5.4.1.2 Augmented Reality: Incorporating Computation into the Real World
			5.4.2 Context-Aware Interaction and UI Plasticity
			5.4.3 End-User Development
		5.5 Conclusion
		References
Part II Programming Language Mechanisms and Type Systems
	6 From Procedures, Objects, Actors, Components, Services,to Agents
		6.1 Introduction
		6.2 Related Work
		6.3 Analysis
		6.4 Action Selection
		6.5 Coupling Flexibility
			6.5.1 Structural Coupling
			6.5.2 Communication Coupling
				6.5.2.1 Designation of the Receiver
				6.5.2.2 Data Transfer
				6.5.2.3 Temporal Coupling (Synchronization)
		6.6 Abstraction Level
			6.6.1 From Data to Concepts
			6.6.2 Reification
			6.6.3 Interoperability Languages
			6.6.4 Organizational Design
		6.7 Conclusion
		References
	7 Semantics and Syntax, Between Computer Scienceand Mathematics
		7.1 How I Became a Computer Scientist
		7.2 Various Flavours of Semantics
		7.3 The Full Abstraction Problem
		7.4 Sequential Algorithms
		7.5 The Categorical Abstract Machine
		7.6 Curry-Howard
		7.7 Dualities
		7.8 The Homotopical Era
		7.9 The French Touch in Semantics of Programs and Proofs
		References
	8 Some Remarks About Dependent Type Theory
		8.1 Introduction
		8.2 General Motivations and Context
			8.2.1 System F
			8.2.2 The System AUTOMATH
			8.2.3 Representation of Mathematical Notions in AUTOMATH
		8.3 AUTOMATH and System Fω
			8.3.1 Some Remarks
			8.3.2 Russell-Prawitz Encoding of Logical Connectives
			8.3.3 Encoding of Data Types
			8.3.4 Evaluation and Comparison with Other Formal Systems
				8.3.4.1 Decidable Type Checking
				8.3.4.2 Impredicativity in Logic and Functional System
				8.3.4.3 Comparison with Frege's Begriffsschrift
		8.4 Inductive Definitions and Data Types
		8.5 Consistency and Paradoxes
			8.5.1 Girard's Paradox
			8.5.2 Parametricity and Normalisation Proofs
		8.6 Consistency and Expressiveness
		8.7 Intensional Expressiveness and Inductive Definitions
		Conclusion
		Appendix
		References
Part III Theory
	9 A Personal Historical Perspective on Abstract Interpretation
		9.1 Origin
		9.2 Widening
		9.3 Example of Widening (and Narrowing)
		9.4 From Flowcharts to Structural Induction
		9.5 Bibliographic Input
		9.6 Soundness and Termination Proof
		9.7 Initial Publication
		9.8 Development of the Theory from an Algorithmic to an Algebraic Framework
		9.9 Narrowing
		9.10 Fixpoints
		9.11 Verification
		9.12 Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints
		9.13 Recursion and Modularity
		9.14 Chaotic and Asynchronous Iterations
		9.15 Types
		9.16 Galois Connections, Closures, Moore Families, Etc.
		9.17 Transition Systems
		9.18 Méthodes itératives de construction et d'approximation de points fixes d'opérateurs monotones sur un treillis, analyse sémantique de programmes
		9.19 Automatic Discovery of Linear Restraints Among Variables of a Program
		9.20 Systematic Design of Program Analysis Frameworks
		9.21 Parallelism
		9.22 Proof Methods and Induction Principles
		9.23 Back to Static Analysis
		9.24 A Variety of Abstract Interpretation Models
		9.25 Language Independence
		9.26 Bi-inductive Definition of Maximal Traces
		9.27 Hierarchies of Semantics
		9.28 Calculational Design
		9.29 Calculational Design of Abstract Semantics
		9.30 Calculational Design of Algorithms
		9.31 Static Analysis Is Harder than Verification
		9.32 The Origin of Astrée
		9.33 Astrée
		9.34 Applications
		9.35 Introductions, Surveys, Reports, and Prospective Discussion Texts
		9.36 Conclusion
		References
	10 Tracking Redexes in the Lambda Calculus
		10.1 Introduction
		10.2 Preliminaries
		10.3 The Labeled Lambda-Calculus
		10.4 Labels and Permutation Equivalence
		10.5 The History of Redexes
		10.6 Other Calculi
		10.7 Conclusion
		References
	11 Confluence of Terminating Rewriting Computations
		11.1 Introduction
		11.2 Terminating Computations on First-Order Terms
			11.2.1 Abstract Church-Rosser Properties of Plain Rewriting
			11.2.2 Confluence of Terminating Plain Rewriting
		11.3 Terminating Computations on Congruence Classes of Terms
			11.3.1 Abstract Church-Rosser Modulo
			11.3.2 Rewriting Modulo
			11.3.3 Church-Rosser Properties of Rewriting Modulo
		11.4 Terminating Computations on Higher-Order Terms
			11.4.1 Terms
			11.4.2 Substitutions
			11.4.3 Splitting and Sticking
			11.4.4 Reductions
			11.4.5 Functional Reductions
			11.4.6 Higher-Order Reductions
			11.4.7 Higher-Order Rewrite Systems
			11.4.8 Typed Rewriting Structures
			11.4.9 Unification in Typed Rewriting Structures
		11.5 Church-Rosser Properties of Typed Rewriting Structures
			11.5.1 Plain Typed Rewriting Structures
			11.5.2 Terminating Typed Rewriting Structures Modulo
		11.6 Two Examples of Application to Programming Languages
			11.6.1 Maude
			11.6.2 Dedukti
		11.7 Conclusion
		References
Part IV Language Design and Programming Methodology
	12 Programming with Union, Intersection, and Negation Types
		12.1 Introduction
		12.2 Motivations
		12.3 Types
			12.3.1 Limitations of Syntactic Systems
			12.3.2 Semantic Subtyping
			12.3.3 Polymorphic Extension
		12.4 Languages
			12.4.1 Theoretical Framework
				12.4.1.1 On Deriving Negation Types
				12.4.1.2 On the Feasibility of Type-Inference
				12.4.1.3 Practical Systems
			12.4.2 Core CDuce
				12.4.2.1 Closing the Circle
				12.4.2.2 Inferring Intersection Types for Functions
				12.4.2.3 Type-Cases
				12.4.2.4 Random Choice
				12.4.2.5 Polymorphic Language
			12.4.3 An Implicitly-Typed Polymorphic Language with Set-Theoretic Types
				12.4.3.1 Type Reconstruction
				12.4.3.2 Adding Type Annotations
				12.4.3.3 A Remark on Occurrence Typing
			12.4.4 Occurrence Typing and Reconstruction of Intersections
			12.4.5 Summary
		12.5 Further Features
			12.5.1 Pattern Matching
			12.5.2 Gradual Typing
			12.5.3 Denotational Semantics
		12.6 Conclusion
		Appendix: Core Calculus of CDuce FCB08
			Syntax
			Reduction Semantics
			Type-System
		References
	13 Right and Wrong: Ten Choices in Language Design
		A Introduction
			A.1 Background
			A.2 Design Guidelines
			A.3 Discussion Style
			A.4 Language Criticism
			A.5 Scope
			A.6 The Role of the Type System
			A.7 Precise Object-Oriented Terminology
		B Mathematical Notations
			B.1 Functions
			B.2 Overriding Union
			B.3 Finite Permutations
		1 Uniform Access
			1.1 Computing, or Looking Up
			1.2 What Do We Do with Fields?
			1.3 Exporting Queries as Queries
			1.4 Getters and Setters
			1.5 Assigner Commands
		2 Dijkstra Was Right
		3 Overloading and Constructors
			3.1 Syntactic Overloading: An Example
			3.2 Semantic Overloading Through Polymorphism and Dynamic Binding
			3.3 Syntactic Overloading Is Useless and Harmful in an OO Context
			3.4 Overloaded Constructors
		4 Inheritance and Interfaces
			4.1 Redefinition
			4.2 Renaming
			4.3 Multiple Inheritance
			4.4 Interfaces
			4.5 Limitations of Interfaces in Pre-OO Modular Languages
			4.6 Programs with Holes
			4.7 Combining Abstractions
			4.8 Interfaces as Automatically Derived Artifacts
		5 Contract Mechanisms
			5.1 A Close Integration with the Language
			5.2 Class Invariants
			5.3 A Plethora of Run-Time Checks for Free
			5.4 At the Very Core of Inheritance Concepts
			5.5 Understanding the Design by Contract Methodology
			5.6 An Integral Part of the Approach
		6 Static Classes and Shared Information
			6.1 Class Methods and Static Classes
			6.2 Once Routines
			6.3 Instance-Free Features
			6.4 Varieties of Once Routines
		7 Old Syntax for New Semantics
			7.1 Aliases of Various Kinds
			7.2 Once Classes
			7.3 Iterators
			7.4 Conversions
			7.5 Unfolded Forms
			7.6 Agents and Functional-Style Programming
			7.7 About the Role of Agents: Functional Mechanisms in an OO Shell
		8 Exception Handling
			8.1 Modes of Exception Use
			8.2 A Clear Conceptual Framework for Exception Handling
			8.3 Eiffel Exception Mechanism
		9 Concurrency
			9.1 Semantic Mismatches
			9.2 An Example: What Happens to Preconditions?
			9.3 Sequential Versus Concurrent
			9.4 Simultaneous Resource Reservation
			9.5 Processors and Regions
			9.6 Synchrony, Asynchrony and Wait by Necessity
			9.7 Language Support
			9.8 Synchronization
		10 Void Safety
		Appendix A1: Language Description
		Appendix A2: Language Evolution
		Bibliography
		References




نظرات کاربران