Full Metal Programmer¶
Python¶
Today, Python is, without a doubt, the number one programming language. While it remains nearly unrivaled for AI/ML and is one of the main players in backend/CLI development, Python often loses out in certain categories, for example, being slower than C++ and less convenient for multithreading manipulation compared to Golang. However, its relatively simple syntax, rich library ecosystem, welcoming community, and overall user-friendly infrastructure outweigh these shortcomings.
OOP in Python, Basics — Object-Oriented Programming in Python. Part 1, Basics..
Network¶
TCP/IP Stack — a network model for digital data transmission.
OSI Model — another attempt to find a common network denominator.
Software Architecture¶
When evaluating architecture, it's important to start from a simple, prosaic consideration — the best architecture is the one that minimizes software development costs and maximizes programmer efficiency. The less (within reason) the cow is fed and the more it is milked, the better the cow barn.
When estimating the total development cost of code, one should not forget about the software's lifecycle. Therefore, some quick and dirty MVP with uncertain prospects might not be shameful to implement more "messily" than software with an established user base and a clear development plan. However, it is essential to keep in mind the strategy of transitioning from a "dirty and quick" state to "clean and long-lasting", which does not exclude the possibility of discarding all the previously written code after the market approves the concept.
As Robert Martin aptly noted in "Clean Architecture," each programming paradigm gives us nothing and resolves nothing, but rather takes away and limits. Structural programming takes away the goto statement, object-oriented programming removes the ability to indirectly transfer control (i.e., disallows function pointers), and functional programming imposes restrictions on assignment.
Each architectural principle does something similar, albeit on a smaller scale — not as strictly as paradigms, but still to some degree limiting the freedom of the programmer, shaping the code according to a pre-approved template, and pursuing the same goal — to reduce costs and increase efficiency.
However, before applying the architectural principles described below to the specific program you are currently developing, remember Sturgeon's Law, which is humorous but has good sense: "90 percent of everything is crap." Applied to the field of software development, it reads like this: "90 percent of programs are simple enough and can be developed, and developed well, without overly concerning yourself with architectural principles."
Clean Architecture. Software architecture encompasses many diverse concepts of various calibers, including minor details like variable naming rules (especially emphasized in DDD, Domain-Driven Design). Clean architecture, however, pertains to fundamental, macro-architectural principles, setting the direction for all future development.
SOLID — the most well-known set of recommendations for designing software based on OOP.
CQRS — the principle of separating queries and commands.
Go to RU version of this page.
codifycamera.com © CC BY-NC-SA 4.0 2024 — ∞ Mikhail Emelyanov, war4one@gmail.com