توضیحاتی در مورد کتاب :
برنامه نویسی موضوعی جذاب و چالش برانگیز است. متأسفانه به ندرت به این شکل ارائه می شود. اغلب با "القاء" آموزش داده می شود: به ویژگی های برخی از زبان های برنامه نویسی معروف معنای عملیاتی داده می شود (مثلاً یک حلقه "دور و دور می شود")، تعدادی مثال نشان داده می شود، و با القاء، از ما خواسته می شود برنامه های دیگری را توسعه دهیم. ، اغلب کاملاً متفاوت از آنهایی است که ما دیده ایم. اساساً به ما یاد میدهند که برنامههایمان را حدس بزنیم، و سپس حدسهایمان را اصلاح کنیم. خطاهای ما نام زیبای "اشکالات" داده شده است. رفع آنها مانند یافتن ترفندهایی که از ویژگیهای طراحی ضعیف زبان برنامهنویسی بهرهبرداری میکنند یا از آنها اجتناب میکنند، تبدیل به حل معما میشود. کل فرآیند زمان بر و پرهزینه است. و با این وجود، ما هرگز مطمئن نیستیم که آیا برنامه های ما واقعاً در همه موارد کار می کنند یا خیر. هنگامی که به این روش برخورد شود، برنامه نویسی در واقع یک فعالیت کسل کننده است. با این حال، رویکرد دیگری برای برنامه نویسی وجود دارد، رویکردی که در آن می توان برنامه ها را به طور قابل اعتماد و با توجه به مسائل واقعی توسعه داد. این یک رویکرد عملی مبتنی بر توسعه روشمند برنامه ها از مشخصات آنها است. علاوه بر کاربردی بودن، هیجان انگیز است. بسیاری از برنامه ها را می توان با سهولت نسبی توسعه داد. مشکلاتی که زمانی دشوار بودند، اکنون می توانند توسط مبتدیان حل شوند. راه حل های زیبا رضایت زیادی را به همراه دارد. این موضوع ماست. ما علاقه مندیم که برنامه نویسی را به یک موضوع هیجان انگیز تبدیل کنیم!
فهرست مطالب :
Front Matter....Pages i-xv
What can we learn from a cake?....Pages 1-7
Preliminary notions, notations, and terminology....Pages 9-26
Predicates A — Boolean operators....Pages 27-43
Predicates B — Quantified expressions....Pages 45-59
Specifications....Pages 61-79
The shapes of programs....Pages 81-100
Intermezzo on calculations....Pages 101-108
Developing loopless programs....Pages 109-121
Developing loops — an introduction....Pages 123-126
Loops A — On deleting a conjunct....Pages 127-148
Loops B — On replacing constants by fresh variables....Pages 149-194
Mainly on recursion....Pages 195-220
Back to scratch....Pages 221-247
Where to go from here....Pages 249-260
Back Matter....Pages 261-268
توضیحاتی در مورد کتاب به زبان اصلی :
Programming is a fascinating and challenging subject. Unfortunately, it is rarely presented as such. Most often it is taught by "induction": features of some famous programming languages are given operational meaning (e.g. a loop "goes round and round"), a number of examples are shown, and by induction, we are asked to develop other programs, often radically different from the ones we've seen. Basically we are taught to guess our programs, and then to patch up our guesses. Our errors are given the cute name of "bugs". Fixing them becomes puzzle-solving, as does finding tricks that exploit or avoid poorly designed features of the programming language. The entire process is time-consuming and expensive. And even so, we are never quite sure if our programs really work in all cases. When approached in this way, programming is indeed a dull activity. There is, however, another approach to programming, an approach in which programs can be developed reliably, with attention to the real issues. It is a practical approach based on methodically developing programs from their specifications. Besides being practical, it is exciting. Many programs can be developed with relative ease. Problems which once were difficult can now be solved by beginners. Elegant solutions bring great satisfaction. This is our subject. We are interested in making programming an exciting topic!