This mindmap diagram provides a categorization of various programming languages (2024) split by their primary functionality and usage:

1) Functional Programming: Emphasizes functions and immutable data. Languages include Haskell, Lisp, Clojure, Erlang, F#, and OCaml.

2) Object-Oriented Programming: Focuses on objects and classes to structure code. Languages include Java, C++, Python, Ruby, Smalltalk, Swift, and C#.

3) Procedural Programming: Based on procedure calls. Languages include C, Pascal, Fortran, COBOL, Ada, and BASIC.

4) Scripting Languages: Designed for automating tasks. Languages include JavaScript, Perl, PHP, Python, Ruby, and Shell.

5) Logic Programming: Uses formal logic to express computation. Languages include Prolog, Datalog, and Mercury.

6) Concurrent Programming: Handles multiple computations simultaneously. Languages include Go, Rust, Erlang, Scala, Java, and Clojure.

7) Systems Programming: Focuses on system software development. Languages include Rust, C, C++, Go, Assembly, and Zig.

8 ) Web Development: Languages and technologies for web applications. Includes JavaScript, TypeScript, Ruby, PHP, Python, and HTML/CSS.

9) Mobile Development: Languages for mobile app development. Includes Swift, Kotlin, Java, Dart, and Objective-C.

10) Game Development: Specialized languages for game design. Includes C#, C++, Lua, Java, Python, and UnrealScript.

11) Scientific Computing: Languages for scientific research and numerical analysis. Includes MATLAB, R, Julia, Python, and Fortran.

12) Data Analysis: Languages and tools for analyzing data. Includes R, Python, Julia, SAS, MATLAB, and SPSS.

13) Machine Learning: Languages and frameworks for ML applications. Includes Python, R, Julia, JavaScript, and Scala.

14) Assembly Languages: Low-level languages for direct hardware manipulation. Includes x86 Assembly, ARM Assembly, MIPS Assembly, and more.

This mindmap diagram serves as a comprehensive guide to understanding the diverse landscape of programming languages available today, helping in selecting the right language based on specific requirements and use cases at common.

Here are roughly summarized the key differences between RESTful and RESTless web services (it does not have to be strictly valid):
————————————————————-
1. Protocol
RESTful services use REST architectural style,
RESTless services use SOAP protocol.
————————————————————-
2. Business logic / Functionality
RESTful services use URL to expose business logic,
RESTless services use the service interface to expose business logic.
————————————————————-
3. Security
RESTful inherits security from the underlying transport protocols,
RESTless defines its own security layer, thus it is considered as more secure.
————————————————————-
4. Data format
RESTful supports various data formats such as HTML, JSON, text, etc,
RESTless supports XML format.
————————————————————-
5. Flexibility
RESTful is easier and flexible,
RESTless is not as easy and flexible.
————————————————————-
6. Bandwidth
RESTful services consume less bandwidth and resource,
RESTless services consume more bandwidth and resources.

Here are roughly summarized the key differences between RESTful and RESTless web services (it does not have to be strictly valid):
————————————————————-
1. Protocol
RESTful services use REST architectural style,
RESTless services use SOAP protocol.
————————————————————-
2. Business logic / Functionality
RESTful services use URL to expose business logic,
RESTless services use the service interface to expose business logic.
————————————————————-
3. Security
RESTful inherits security from the underlying transport protocols,
RESTless defines its own security layer, thus it is considered as more secure.
————————————————————-
4. Data format
RESTful supports various data formats such as HTML, JSON, text, etc,
RESTless supports XML format.
————————————————————-
5. Flexibility
RESTful is easier and flexible,
RESTless is not as easy and flexible.
————————————————————-
6. Bandwidth
RESTful services consume less bandwidth and resource,
RESTless services consume more bandwidth and resources.

awscheatsheet

Click on image to see full size. Read the comments for description.

10 Good Coding Principles to improve code quality. The HD pdf download link can be found at the end.

Software development requires good system designs and coding standards. We list 10 good coding principles in the diagram below.

1. Follow Code Specifications
When we write code, it is important to follow the industry’s well-established norms, like “PEP 8”, “Google Java Style”, adhering to a set of agreed-upon code specifications ensures that the quality of the code is consistent and readable.

2. Documentation and Comments
Good code should be clearly documented and commented to explain complex logic and decisions, and comments should explain why a certain approach was taken (“Why”) rather than what exactly is being done (“What”). Documentation and comments should be clear, concise, and continuously updated.

3. Robustness
Good code should be able to handle a variety of unexpected situations and inputs without crashing or producing unpredictable results. Most common approach is to catch and handle exceptions.

4. Follow the SOLID principle
“Single Responsibility”, “Open/Closed”, “Liskov Substitution”, “Interface Segregation”, and “Dependency Inversion” – these five principles (SOLID for short) are the cornerstones of writing code that scales and is easy to maintain.

5. Make Testing Easy
Testability of software is particularly important. Good code should be easy to test, both by trying to reduce the complexity of each component, and by supporting automated testing to ensure that it behaves as expected.

6. Abstraction
Abstraction requires us to extract the core logic and hide the complexity, thus making the code more flexible and generic. Good code should have a moderate level of abstraction, neither over-designed nor neglecting long-term expandability and maintainability.

7. Utilize Design Patterns, but don’t over-design
Design patterns can help us solve some common problems. However, every pattern has its applicable scenarios. Overusing or misusing design patterns may make your code more complex and difficult to understand.

8. Reduce Global Dependencies
We can get bogged down in dependencies and confusing state management if we use global variables and instances. Good code should rely on localized state and parameter passing. Functions should be side-effect free.

9. Continuous Refactoring
Good code is maintainable and extensible. Continuous refactoring reduces technical debt by identifying and fixing problems as early as possible.

10. Security is a Top Priority
Good code should avoid common security vulnerabilities.

10goodcodingprinciples