archives

The building of robust software

I just had an interesting phone conversation with a friend of mine concerning the building of robost software (architectures, applications) and how the process could relate to language design.

We started listing a checklist of criteria (whether required or merely wanted) and we came up with a few items. We had a simple criteria of program correctness, program maintainence (comprehension), and modularity.

For program comprehension/correctness:
Strong typing
Purely functional
Strict evaluation
Design by Contract came up as a possibility
Verbose error messages

For modularity:
Objects were a thought, but it was felt the same architectures could be achieved with types, functions, and modules

These were just a few of the things that we thought could help in building large scale applications and frameworks, but both my friend and I lack the desired amount of experience to develop a stricter and more verbose criteria.

I was wondering what everyone's elses opionion would be concerning this topic.

If you had to build a large software architecture/application what kind of 'features' would you look for in a language?

Best regards,

MJ Stahl

Ghost bumps

Recently I noticed several threads bumping up to the top of the tracker without any new posts in them (e.g., this or this). Upon closer examination, it looks they have a quite recent "last post" timestamp, very different from timestamps of contained posts. Is it a bug, or just a consequence of some administrative behavior (e.g., deleting inappropriate posts)?

If the latter, it's an interesting example of a business rule enforced only in one direction - upon creation of a post its timestamp is propagated to the thread, while upon deletion the effect is not undone. Where is a referential transparency?? :-)