-------- Forwarded Message --------
From: Omer Zak <omerz@...
To: Shlomi Fish <shlomif@...
Subject: About Park - points to consider when designing a new
Date: Fri, 23 Jun 2006 18:32:46 +0300
I believe that a new non-DSL can justify its existence only if it
addresses the problems of developing a giant application (O(10^7 lines
of source code)). I raised the subject in Hackers-IL few years ago.
So, I suggest that the following points be addressed in the specs of the
new language (rather than minutieae about expressing stuff which is
expressed in O(1) lines of source code):
- Modularization (you did mention namespaces; is it possible to declare
a namespace within another namespace like in Perl AA::BB::CC?)
- Support for expressing things in terms of design patterns.
- Aspect orientation.
- Laws of the thumb, like Demeter's Law.
- Support for mixed-language software development.
- Seamless integration of database access, with all the power of SQL.
Also include declaration of constraints for integrity validation of data
being stored in the database.
- Multi-versioning of support code (it would be cool to be able to link
one part of a giant application with version 1.5 of a library, and
another part of the same application with version 1.6.3 of the same
- Testability (probably supported by aspect orientation).
- Debugability (a language which can help detect heisenbugs can be a
- Seamless multithreading.
- Several views of the source code (LabVIEW is suited to certain
personality types, among whom I am not). Syntax coloring. Finding all
references to a concept [variable, procedure, object] without being
confused by having its name reused elsewhere; or having several names
aliased to it.
I am not saying that the language design needs to provide for all of the
above. But I claim that when a new language is designed, the above
points should be addressed.