Saturday, November 20, 2010

System programming languages are creeping

C++ compilation speed up.
One of the problem surrounding C++ is a lack of refactoring tools. The reason for this is a sophistication of the language. To tackle this Apple started CLANG project - which is a C++ compiler front end. Up to 60% of compilation time goes into preprocessing stage; remaining time is consumed by parser and semantic analysis. The prominent idea is that if compiler is used as part of IDE in compile-fix-compile mode (contrast it with usual batch compilation mode), a preprocessor's ouput can be cached thus providing 60% compilation time speed up[1].

Abstract syntax tree (AST) of C++.
The library structure of CLANG makes it easier to create code transformation tools... in theory. In practice, the dependency between components and unobvious initialization requirements make it nontrivial.

BitC programming language.
BitC has lisp-like syntax and provides low level access to system resources.  The goal is to push to the limits compile-time program verification. The author of a language, Jonathan S. Shapiro, was hired by Microsoft and then fired after not so long time. Odd stuff was going on.

D programming language.
D has pretty syntax, garbage collection, simplifies templates meta-programming. Walter Bright, the author of D language, says that game programmers love this language. Nice.

Heron programming language.
Heron is in a prototype mode and was introduced by Christopher Diggins here.

Rust programming language.
Rust is under development... by Mozilla.

Requirements to any system programming language.
Here are free-style requirements. The idea is "do not sacrifice performance".

Joe Duffy's thoughts about C# and performance:
If I could do it all over again, I would make some changes to C#. I would try to keep pointers, and merely not allow you to free them. Indirections would be explicit. The reference type versus value type distinction would not exist; whether something was a reference would work like C++, i.e. you get to decide. Things get tricky when you start allocating things on the stack, because of the lifetime issues, so we’d probably only support stack allocation for a subset of primitive types.

There is a design trend of implicit composition of components. In C++ we have templates, in Go there is an implicit interface implementation; duck typing in dynamic languages is everywhere. I am curious if C++ concepts will allow implicit realization.

[1] Presentation of LLVM 2.0 (particularly 40 min).


  1. Thanks for sharing the information. It is very useful for my future. keep sharing
    baixar facebook
    baixar whatsapp
    unblocked games

  2. Bitcoinsxchanger launched a new exchange-traded product (ETP) on Switzerland's Zurich-based SIX Exchange and instant withdraw bitcoin. This latest launch is the 21Shares Short Bitcoin ETP (SBTC tracker) that claims to track the opposite performance of bitcoin (BTC) and is another way to gain exposure in both directions of the bitcoin price movements. Bitcoin Trading Remains Directionless Bitcoin has continued to lose altitude trading at around $8,589 at the time of publication. In December 2017, the volatile cryptocurrency peaked to $20,000 and has been unable to hit this high again ever since. Despite bitcoin prices remaining bearish and at a low point, a number of fintech firms are continuing to launch products. Financial Market Supervisory Authority (FINMA), which is the Swiss government body undertaking financial regulations of the country, has been proactive when it comes to approving crypto products. FINMA has distributed banking and securities dealer licenses to “crypto banks” - This cleared to operate in the tokenized digital securities sector. The official body issued rules on how to transfer bitcoin from bank wire. Visit this site for more details