archives

Multi-Artifact Languages

Lately I've been wondering about a trend in software development: We seem to be grappling not so much with algorithm specification, but rather with the organization of large systems developed by large teams. As such, documentation and testing become almost as relevant as the source code itself. I was wondering whether there were any good languages for writing (1) source code, (2) documentation, and (3) unit tests all in the same location, and in an elegant way?

I'm thinking something like this:

(define (factorial n)
  (returns "the mathematical factorial of n.")
  (if (> n 0)
    (* n (factorial (- n 1)))
    1)
  (such-that
    (and (= (factorial 0) 1)
         (= (factorial 5) 120))))

And it would translate into (1) a function that computed the factorial, (2) a unit test for that function, and (3) this documentation (or something similar):

Factorial (n): Returns the mathematical factorial of n.

Examples: Factorial (0) = 1 (passed), Factorial (5) = 120 (passed).

My initial thought is that it would have to be some sort of Lisp-type macro system, but that's just a guess. Any thoughts would be appreciated.

Systems programming in languages other than C?

Simple question. What is the latest research into doing the sort of tasks usually done in C/C++ with something else? I'll list three areas I think are important.

1) Ability to interface directly with hardware (i.e. can you write an OS in it)
2) Ability to create compiled binaries and both static and shared libraries
3) Modern features like garbage collection that don't slow the whole thing down to a crawl

I'm aware of OCaml, which seems to fulfill at least #2 and #3 and I know about the House project in Haskell. The latter seems not to have been worked on in about 2 years though. I also know about the D language which seems like a better C++ but not a real departure from what's been going on for 30+ years. More generally, is any significant research into radical new OS concepts going on and what sort of languages are they using?

Effectiveness of C++ for scientific computing?

I know this question might have been asked before, but I haven't found any satisfactory answer as of yet. Is C++ effective as a language for scientific computing? How easy it is to create GUIs from simple command line programs in C++ compared to python? In python, I think TK can be used, but what are the steps to go about to do that in C++? And, in terms of speed, where does C++ stand compared to Numpy? I know that C would be faster, but what about C++?