How to Write Good Programs

How to Write Good Programs

Author: Perdita Stevens

Publisher: Cambridge University Press

Published: 2020-07-23

Total Pages: 216

ISBN-13: 1108846785

DOWNLOAD EBOOK

Learning to program isn't just learning the details of a programming language: to become a good programmer you have to become expert at debugging, testing, writing clear code and generally unsticking yourself when you get stuck, while to do well in a programming course you have to learn to score highly in coursework and exams. Featuring tips, stories and explanations of key terms, this book teaches these skills explicitly. Examples in Python, Java and Haskell are included, helping you to gain transferable programming skills whichever language you are learning. Intended for students in Higher or Further Education studying early programming courses, it will help you succeed in, and get the most out of, your course, and support you in developing the software engineering habits that lead to good programs.


How to Design Programs, second edition

How to Design Programs, second edition

Author: Matthias Felleisen

Publisher: MIT Press

Published: 2018-05-25

Total Pages: 793

ISBN-13: 0262344122

DOWNLOAD EBOOK

A completely revised edition, offering new design recipes for interactive programs and support for images as plain values, testing, event-driven programming, and even distributed programming. This introduction to programming places computer science at the core of a liberal arts education. Unlike other introductory books, it focuses on the program design process, presenting program design guidelines that show the reader how to analyze a problem statement, how to formulate concise goals, how to make up examples, how to develop an outline of the solution, how to finish the program, and how to test it. Because learning to design programs is about the study of principles and the acquisition of transferable skills, the text does not use an off-the-shelf industrial language but presents a tailor-made teaching language. For the same reason, it offers DrRacket, a programming environment for novices that supports playful, feedback-oriented learning. The environment grows with readers as they master the material in the book until it supports a full-fledged language for the whole spectrum of programming tasks. This second edition has been completely revised. While the book continues to teach a systematic approach to program design, the second edition introduces different design recipes for interactive programs with graphical interfaces and batch programs. It also enriches its design recipes for functions with numerous new hints. Finally, the teaching languages and their IDE now come with support for images as plain values, testing, event-driven programming, and even distributed programming.


Working Effectively with Legacy Code

Working Effectively with Legacy Code

Author: Michael Feathers

Publisher: Prentice Hall Professional

Published: 2004-09-22

Total Pages: 457

ISBN-13: 0132931753

DOWNLOAD EBOOK

Get more out of your legacy systems: more performance, functionality, reliability, and manageability Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts. In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control. The topics covered include Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform—with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren't object-oriented Handling applications that don't seem to have any structure This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.


Crafting Interpreters

Crafting Interpreters

Author: Robert Nystrom

Publisher: Genever Benning

Published: 2021-07-27

Total Pages: 1021

ISBN-13: 0990582949

DOWNLOAD EBOOK

Despite using them every day, most software engineers know little about how programming languages are designed and implemented. For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from their memory as soon as they had scribbled their last NFA to DFA conversion on the final exam. That fearsome reputation belies a field that is rich with useful techniques and not so difficult as some of its practitioners might have you believe. A better understanding of how programming languages are built will make you a stronger software engineer and teach you concepts and data structures you'll use the rest of your coding days. You might even have fun. This book teaches you everything you need to know to implement a full-featured, efficient scripting language. You'll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused. Starting from main(), you will build a language that features rich syntax, dynamic typing, garbage collection, lexical scope, first-class functions, closures, classes, and inheritance. All packed into a few thousand lines of clean, fast code that you thoroughly understand because you wrote each one yourself.


Write Great Code, Volume 2, 2nd Edition

Write Great Code, Volume 2, 2nd Edition

Author: Randall Hyde

Publisher: No Starch Press

Published: 2020-08-04

Total Pages: 658

ISBN-13: 1718500394

DOWNLOAD EBOOK

Explains how compilers translate high-level language source code (like code written in Python) into low-level machine code (code that the computer can understand) to help readers understand how to produce the best low-level, computer readable machine code. In the beginning, most software was written in assembly, the CPU's low-level language, in order to achieve acceptable performance on relatively slow hardware. Early programmers were sparing in their use of high-level language code, knowing that a high-level language compiler would generate crummy, low-level machine code for their software. Today, however, many programmers write in high-level languages like Python, C/C++/C#, Java, Swift. The result is often sloppy, inefficient code. But you don't need to give up the productivity and portability of high-level languages in order to produce more efficient software. In this second volume of the Write Great Code series, you'll learn: • How to analyze the output of a compiler to verify that your code does, indeed, generate good machine code • The types of machine code statements that compilers typically generate for common control structures, so you can choose the best statements when writing HLL code • Just enough 80x86 and PowerPC assembly language to read compiler output • How compilers convert various constant and variable objects into machine data, and how to use these objects to write faster and shorter programs NEW TO THIS EDITION, COVERAGE OF: • Programming languages like Swift and Java • Code generation on modern 64-bit CPUs • ARM processors on mobile phones and tablets • Stack-based architectures like the Java Virtual Machine • Modern language systems like the Microsoft Common Language Runtime With an understanding of how compilers work, you'll be able to write source code that they can translate into elegant machine code. That understanding starts right here, with Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level.


Writing in Software Development

Writing in Software Development

Author: Allan M. Stavely

Publisher:

Published: 2011-07

Total Pages: 230

ISBN-13: 9780983039402

DOWNLOAD EBOOK

Writing in Software Development Allan M. Stavely If you are a working programmer or a programming student, writing is a skill that you can't neglect. Writing is part of any software project, and good writing skills will make you more effective as a software developer. Writing can enhance your career prospects, too. Sure you can write code to someone else's spec, but what if you got to write the spec? Or the proposal for the project? Writing skills could even help you land your dream job in the first place. Like no other book on the market, this book talks about writing in all aspects of software development, including: -design documents -documentation in the code and vice versa -writing for review -requirements and specifications -the vision statement, project proposal and project history -webs of electronic documents This book tells you how to craft all these kinds of writing to make them as effective as they can be. Allan M. Stavely's career in software spans 35 years in education (Computer Science, New Mexico Tech), industry (IBM and HP in the US and UK), consulting and writing. He is the author of Toward Zero-Defect Programming (Addison Wesley). Contact him: [email protected] The publisher will donate a portion of the price of this book to New Mexico Tech for scholarships.


Fast Programmer

Fast Programmer

Author: Ray Chung

Publisher: 鍾仁烈

Published: 2020-01-22

Total Pages: 170

ISBN-13:

DOWNLOAD EBOOK

A shopping mall website is built in 12 hours How to program faster and better Secret that senior engineers will not tell you A must-have book for programmers --------------------------------------------------------------------------- his book exclusively reveals the most important secrets of becoming a super fast, in the article The last book ,I had written with a very creative colleague ,and only spent two days to write a book. From an idea to completing the book quickly, I really thanks to my partner , Ally. After writing two books, I love to write the books. Writing this book comes from the fact that many friends have always hoped that I can teach them to write programs or help them to write programs, but it is really not easy to teach people to write programs. It takes time 9 and I can only give my friends or colleagues what they missed or lacked, or even logical problems, and gave suggestions on practices to speed up their programming. At present, most of the computer books in the field are mainly tool books in programming languages. Few are like colleagues or supervisors. They lead an engineer to establish a good programming concept through the way of experience transfer. The problem that engineers often encounter is the establishment and cultivation of the concept of engineers. This book is also based on such ideas. It is expected to provide a book that engineers can refer to in each period. At each stage, you 10 can get something because of this book; so I suggest you go back and read this book every so often. Basically, I have n’t written programs in the office for almost ten years. On the one hand, I only want to write programs that I am interested in or to speed up my job. I don’t like to write programs of the same type all the time, so the previous company hardly knew I could write programs, just knowing that I used to do that, I hide it well, haha! And the platform made by the previous company is not pure for program development, a lot of structural thinking cannot be used on it, so I gradually worked at work and made myself forget that I 11 would write programs, and I would remember them after work. My friends knows that I write programs vert fast, basically no bugs, and very stable. This is of course for a reason. Because of application requirements, I used to write programs for clients, and used a program language familiar to customers to write an exercise. The client wrote from morning to afternoon. Before leaving work, I projected my NB screen onto the wall and started writing from the beginning. In front of my clients, I wrote the program in twenty minutes; the eyes of each engineer with wide eyes and admiration were my proudest moments. 12 When I was a development engineer, a friend asked me to rescue a case. This case has been done for a year or two. The timetable has been delayed for a long time. The project is about to fail. At that time, two teams have been taken over. Although there are only a few million, the amount of cooperation cases with customers exceeds tens of millions each year. Therefore, if this small case fails, it may affect the cases that the two parties cooperate each year. After I quickly looked at the entire program structure, I found that there are many programs written by people, both good and bad. It took me more than a month to rewrite the bottom layer, integrate the programs written by everyone, adjust the bottom layer into a function library, and greatly increase system 13 stability, , and rescued this project, even senior client executives came to shake hands with me. When I was a project manager, I managed a project with the same system specifications in the industry. It took two or three years for a competitor to do this project. There were still a lot of problems and the system could n’t go online. It took me only ten months to get the system online and the feebacks are very good, the functions are very easy to use, and the architecture design is very flexible; the client said: This case was the only one on time and in advance. In response to their seventy reports, I planned a simple report generation program that allows engineers to write the program in 14 more than a month and produce more than seventy reports; and they originally planned to make their own reports for one and a half years. These reports can be done almost in a set way by the report maker. The client said that my case should be tens of millions of cases, but I used millions to help them complete. In addition, I have encountered some very strange cases; because of customer needs, I explain the features that customers expect from my partner. I hope that the current seventy or eighty page reports can be linked to different parameters through different parameters on one page. ; the partner company said no, it would take a long time to build this page because of their MVC 15 architecture; and thought of a way to add a plug-in, add a plug-in in each browser; (Mind OS: Now it ’s the webpage era, and they still think of a Client-Server architecture? What's more, their CTO said if they do this program, because they are MVC architecture, it will spend one year to do this; invalid communication at the high level of both sides for more than a month, I simply ask them to turn on the the connection of their host computer(for testing) and complete the program that they claim to be a year in two hours. (No old program has been changed at all) (I have been away from the engineer for a long time). My colleague said that I really hit the other side too much. 16 Later, because a case had an App program and a Web program requirement, TM planned to develop web programs for 4.5 personal months; It’s really estimated too much. I brought an engineer who had just been out of the society for more than a year, and developed one in about a month. Apps with special functions and web programs (only he wrote it, never wrote a web program before, the app is also a beginner). Accidentally overwhelmed the progress of a team of 4,5 people, all with more than three years of experience. In addition, sometimes it is necessary to integrate a system, because the time is too rush, and the engineer is too slow to do it, so I have to do it myself, including 17 planning an integrated API and writing, because I have n’t written a program for a long time, so I taught colleagues and wrote programs at the same times in five minutes to complete the programs, and after testing, the bug was free. After the encouragement of my colleagues, I decided writting this book, I hope that for you who buy this book, you can get a lot. Expect this book give you… 1. To Know how the program can be fast and good. 2. What is the most important part of writing a program. 3. Logic is important. 18 4. How to quickly learn a programming language. 5. Build good programming habits slowly. 6. Write a quick document (SA, user manual ..) After reading this book, I hope readers have a very important belief: The way you think is important In this book, you may not see very detailed programming skills, but as long as you implement the concepts outlined in this book, I believe that your programming ability will have considerable progress. --------------------------------------------------- I. Table of contents. 2 II. Author’s preface. 5 Prologue. 5 1. Author’s preface. 7 2. How to read this book faster 18 3. Others. 20 4. the advantages of buying this e-book. 21 III. Author Experience. 23 1. In University. 23 Large Projects. 27 1. First job. 27 2. Thoughtful boss. 31 3. 13 years of development experience. 34 Great Boss. 41 1. Great boss. 41 2. Develop the product 47 IV. The most Important Secrets to Becoming Super Fast 51 V. How to write programs fast and well 54 1. Tip # 1: The most important thing. 54 2. Tip # 2, experienced engineers understand. 61 3. TIP # 3,Beginner or just stepping into different programming languages. 65 4. TIP #4 ,Spend a little time, it can be faster 67 5. Tip #5, Advanced secrets. 69 6. Tip # 6: Tips Everyone Knows. 71 7. Tip #7,Secrets to Promote Senior Engineers. 77 8. Tip #8, the secret eight: a very important secret 79 9. TiP #9, the secret nine: the key success or failure 80 10. Tip #10,The biggest key to winning or losing. 82 VI. Characteristics of a Software Engineer 84 the speed and rhythm of typing. 84 logic. 88 organizational 90 self-check. 92 infer other things from one fact 94 VII. Program optimization architecture example. 98 Small case: Instantly reduce half of BUG and half of working hours. 98 It took more than a month to save two or three years old cases. 100 Three or two or three years of major projects, launched in ten months. 104 VIII. Important Ideas. 108 Structure is more important than programming. 108 the logic of the program: the logic is wrong, the program will not be correct 111 the quality of engineers is important 113 there must be a method for testing. 115 writing skills. 121 more accumulated development experience. 126 encountered problems. 128 Learn grammar and organize your own library. 131 IX. For experienced engineers. 134 Train your thinking logic when coding. 134 Do write the code before thinking. 137 look at the logic to write programs. 140 X. FAQ.. 142 do you really have to be talented in writing programs?. 142 When the business (customer) directly asks engineers questions. 156 how to quickly find the problem?. 161 What should a good supervisor pay attention to?. 166 XI. Become a master to challenge yourself: 168


Code Craft

Code Craft

Author: Pete Goodliffe

Publisher: No Starch Press

Published: 2007

Total Pages: 626

ISBN-13: 1593271190

DOWNLOAD EBOOK

A guide to writing computer code covers such topics as variable naming, presentation style, error handling, and security.