Analysis of software code on the example of open source projects (Code Reading. The Open Source Perspective)
This book 2004 The year of release by Diomidis Spinellis appeared in my 2005 It was a year when I was just beginning to get acquainted with industrial development, and then it seemed interesting to me. The concept of the author was to introduce developers to the basic concepts of development using examples from large open source projects of the time. To do this, a CD with the code of those open source systems that the author analyzed in his book is attached to the book. As a result, Github only appeared in 2008 This approach was quite sound:) The examples in the book were mainly focused on languages such as C, C++ and Java. The book itself consisted of the following parts: In the foreword, we have to read code more often than write it, so it makes sense to improve this skill. General information - here the author talks in more detail about why we need to learn to read code and how it can be done with this book.
- Basic elements of programs - here is an example of the program as a whole, functions and global variables, cycles, conditions, symbolic and logical expressions, operator goto Complex data types in C - pointers, structures, combinations and dynamic memory management
- Data structures in C - here the author shows how to make vectors, tables, stacks, queues and so on in C
- Complex program controls - here we are talking about recursion, exceptions, parallelism, signals and macro substitutions Analysis of large projects - here the author reflects on how to study large projects: what logical blocks it consists of, how it is assembled, how it is configured, how version control looks like and how testing is arranged Standards of programming style - here are discussed issues that are now decided to solve by setting up linters Documentation – This is about the importance of documentation and how to write and read it. Architecture - here the author speaks about architectural styles, models of control of the flow of execution (event-oriented, architects with dispatcher, final machines)code grouping (Modules, namespaces, libraries and so on.) Auxiliary Software – Themes in this section are now closed by a good IDE A practical example - and here is an end-to-end example about adding a new PHASEOFMOON date/time function to the hqsqldb database, which will calculate the phase of the moon at a given date:)
As a result, the book was a good practical book for students who were just entering the world of software development and could see how many of the concepts they studied were applied in practice. But at the moment it has completely lost relevance - you can easily go to Github and find everything you need. But at the same time, the very structure of the book and the presentation of the material to me seems relevant so far and I would not refuse to read a new edition, in which all the examples are updated and take into account the novelties of recent years. 20 years:)
#Software #SoftwareDevelopment