System Design Using Multiple Programming Language

Every employee is expected to be a universal screw by managers, from designing system, trouble shooting, to holding customer presentation. No matter what problems happened, any employee should be able to solve it.

Why there are so many types of screws in hardware shop? Why so many different gear types in a gear box?

When come to software design world, one programming language also can not fit all scenarios. Of course, programming languages need be minimized in a product.

  • Some parts are very stable. Some parts need be changed very often
  • Some components only need be modified by few gurus. Most component need be created by new comers after few days training
  • Some paths are performance critical. Some path are not

When come to programming language selection, following criteria are applicable to me.

  • What is the target platform? Does the product need cross different platforms? If the product only need to be ran on Windows, .Net can be good choice
  • How is the execution performance? Like assemble is very good in execution performance, it is still very useful in critical path even the development efficiency is very low
  • How is the development efficiency? Like Matlab can be very efficient when goes to modelling
  • How good is the development tool? Visual Basic already very developer friendly in last century
  • Are there good libraries. Like Java, there are always libraries which you can think of
  • Is it easy to find programmers? TIOBE Language Index can be a good reference
  • Is it difficult to learn? Python is quite easy to get in. While Scala is more difficult. Most developers can not master it in short time
  • Is it easy to debugable? Like C++ meta template, it is only debugable in brain. Like XSLT, almost no way to debug (Although XMLSpy has debug feature, but the product normally not executed by XMLSpy which will lead result different)
  • Is it easy to understand? Like workflow is very easy to understand
  • Is it fun to work with? Java for me is just a work language, no fun at all. There are much more fun programming in C/C++/Python/Scala

From TIOBE programming language index, just select few popular languages(If the product needs be ran on different platform)

  • C/C++/Java can be good alternatives as system language
  • Python/Ruby/JavaScript can be good alternatives as business logic language

Due to some practical reason, I wanna make a prototype based on Jython. System design in Java and business logic design in Python. Following use case need be fulfilled and have real hands on by myself.

  • IP protection. libraries need be protected in certain ways. Jython->Java Class
  • Data model. JSON as data model
  • Debug. log, unit test, remote debug
  • External system communication. Spring Integration
  • Monitoring and Visualize execution. HypericQ
  • Data persistency. NoSQL
  • Continuous Integration. ?
  • Package and distribution. Jython->Java Class->Jar and Execute Jython directly

Your email will never published nor shared. Required fields are marked *...

Type your comment out: