Symbiotic Languages

The idea that big, evolving systems are best built using two layers, one hard and one soft (see AlternateHardAndSoftLayers), implies that such projects will need two languages, one hard and one soft (where a Hard Language is what we usually call a ProgrammingLanguage and a Soft Language is what we often call a ScriptingLanguage).

This suggests that attempting to invent languages to build big systems is folly; rather, we need to develop pairs of languages, that work well together - SymbioticLanguages, if you will.

Are there examples of such symbiosis?

Perhaps the better requirement is a standard ForeignFunctionInterface or protocol (such as Corba or pipes), so that any conforming soft language can interoperate with any conforming hard language.



Many scripting languages have well defined C APIs, and are designed either to be embedded into a C program, or extended with dynamically loaded C libraries, or both. EmbeddedLanguages include ToolCommandLanguage and LuaLanguage. Languages designed with dynamic extension APIs include ToolCommandLanguage, PythonLanguage and RubyLanguage.

Most, if not all, implementations of CommonLisp provide a foreign function interface ("FFI") which can be used to call C (and sometimes C++ or Fortran) functions from Lisp, and vice versa.

Perhaps EverythingIsSymbioticWithCee??


In the Windows world VB + C++/ATL/COM has proved very powerful. Now C# + ManagedC++ appears to be a great way to mix legacy or performance-sensitive C++ code into the softer .Net world.


HtagLanguage paired with DelphiLanguage provides such a pair as well.


Q: Are JavaLanguage and ExtensibleMarkupLanguage symbionts? Certainly RelationalWeenies lump them together for abuse. They seem to travel and propagate together very often. Why might this be?

Possible A: Symbiotic languages have to live in the same environment and each do things the other doesn't do well. Java and XML both live in the same target-space: distributed, cross-platform applications. They both target the AverageProgrammer by building off of known quantities: CeeLanguage and HyperTextMarkupLanguage. If it's true that XmlIsAPoorCopyOfEssExpressions, XML makes up for Java's limited FunctionalProgramming capabilities. And Java's object model, while perhaps limited, can be a convenient way to wrap XML's structured data together with code. Thus, symbiotic. Any thoughts?

Another possible A: Just a coincidence of timing -- both became popular at about the same time.


I vote for the first bullet above: "A HardLanguage that supports flexible MetaProgramming should be able to perform both tasks."

IMO, there is a widespread opportunity to use two symbiotic languages, partly inspired by TgpMethodology. See: OfficeInfotechSymbiosis.

-- EdwinEarlRoss


EditText of this page (last edited October 31, 2014) or FindPage with title or text search