Reference 1
Widely used parallel programming systems:
Shared Memory | Message Passing | Distributed Computing | |
---|---|---|---|
Language | Java, C# | ||
Extension | OpenMP | Remote Procedure Call | |
Library | pthreads, Win32 threads | MPI | Internet libraries |
Library augmentation for legacy languages still dominate today.
While the library approach requires no changes to the syntax of languages that use it, compilers must refrain from performing optimizations that may introduce races into programs with multiple threads.
In comparision to libaray packages, an explicitly concurrent programming language has the advantage of compiler support. It can make use of syntax other than subroutine calls, and can integrate communication and thread management more tightly with such concepts as type checking, scoping, and exceptions.
At the same time, since most programs have historically been sequential, concurrent languages have been slow to gain widespread acceptance, particularly given that the presence of concurrent feature can sometime make the sequential case more difficult to understand.
LLM: the three design pattern
a should also be applicable to securiy solution designs: do we need new language, new library, or language extension? I vote new language in the long term, new library for short term compatibility, and new language extension as buffer-period solution. Compiler-awared security engineering plays an important part here.
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?