Developer Documentation
1.0.0

Contents:

  • NWChemEx Community
  • Design Documentation
    • NWChemEx Philosophy
    • NWChemEx Visions
    • NWChemEx Ecosystem
    • Overall Design
    • Overall Design Justification
      • Why Object-Oriented Programming?
      • Sure it Looks Pretty, But is it Going to Scale?
      • Why is C++ the Primary Language of NWChemEx?
      • Why is the NWChemEx API Written in Python?
      • Design of the Python Binding Architecture
      • Why not Just Have One Giant Repo?
      • Why Do We Need PluginPlay?
      • Why Do We Need SimDE?
      • Why Do We Need ChemCache?
      • Why Do We Need Mokup?
      • Why are the Repositories Partitioned this Way?
      • Why Does NWChemEx Rely on Two Tensor Libraries?
    • Energy Workflow
    • User Interface Design
    • FAQs
  • Documenting NWChemEx
  • NWChemEx Organization Conventions
  • Developing NWChemEx
  • Testing NWChemEx
  • Continuous Deployment
  • Additional Developer Resources
  • References
Developer Documentation
  • Design Documentation
  • Overall Design Justification
  • Edit on GitHub

Overall Design Justification

Now that we have introduced the overall design, the topics in this part attempt to justify the major decisions. If you don’t care why the decisions were made the way they were, feel free to skip these sections.

Contents:

  • Why Object-Oriented Programming?
    • FP vs OOP
    • So Why OOP?
  • Sure it Looks Pretty, But is it Going to Scale?
  • Why is C++ the Primary Language of NWChemEx?
    • Why Not Fortran?
    • Why Not Python?
    • Why Not Java?
    • Why Not XXX?
  • Why is the NWChemEx API Written in Python?
  • Design of the Python Binding Architecture
    • What are Python bindings?
    • Why do we need Python bindings?
    • Python Binding Considerations
    • Existing Choices
    • NWChemEx Python Binding Strategy
    • References and Additional Resources
  • Why not Just Have One Giant Repo?
  • Why Do We Need PluginPlay?
    • How Most Electronic Structure Codes Work (and Why That is Bad)
    • The Current State of the Field
    • How PluginPlay Fixes This
  • Why Do We Need SimDE?
  • Why Do We Need ChemCache?
  • Why Do We Need Mokup?
  • Why are the Repositories Partitioned this Way?
  • Why Does NWChemEx Rely on Two Tensor Libraries?
Previous Next

© Copyright 2020, NWChemEx Team.

Built with Sphinx using a theme provided by Read the Docs.