Wednesday, October 1, 2014

Personal Notes On Increasing Programmer Productivity

  • Real Object Programming [1]
  • Component Oriented Development 
  • Generic Programming 
  • Modular Development




  • Component Oriented Development
Standard Components for each and every part of Software Development.
Currently:
Standard components "only" for "Infrastructure / Domain Specific Code" 
(as opposed to "Application specific Code").
 
Examples of "Infrastructure / Domain Specific Components (Libraries / Frameworks)" include 
  • Django {Web Infrastructure / Domain}
  • JMS - ActiveMQ {Message Passing Infrastructure}) 
  • Hadoop {Mapreduce Infrastructure} 
  • Akka {Distributed Conurrency; Fault Tolerance} 
  • Erlang - OTP {Distributed Conurrency; Fault Tolerance; Rea Time}

What is required: "Application Specific Components", which would help us write all Software fusing components, not starting from scratch every time we are starting a new Software project.
As an example, currently, 

Django ["Infrastructure / Domain Specific Components (Libraries / Frameworks)"] provides us with an MVC framework (or MTV - Model - Template - View, depending on whom you ask)
but we have to write the "view" ("Application specific Code") from scratch every time we are writing one. 
Why not write "view" by fusing standard components / modules ("Application Specific Components") together, rather than starting the view from scratch
  • Generic Programming
Generic objects that work together.
Example: 
In C++ STL, we have generic data structures (List, Vector, Map, etc.) 
that work with generic Algorithms

You can switch one data structure with another.
 
  • Modular Development
(for integrating the components mentioned above)
 
Standard Interface - > Generic Programming 
"OSGi Model" - Plugging in Components

Example: 
Android : To some degree; Plugging 
    • "Activities", 
    • "Services", 
    • "Content Providers" 
together in the "AndroidManifest.xml" file through "Intents".



References

No comments:

Post a Comment