Re: Macros and Type-Systems
Posted: Oct 7, 2005 2:03 PM
So you want a single language that improves your productivity by supporting multiple paradigms and more expressive constructs? And it must be fast to execute?
To justify the enormous time and effort that will go into designing and implementing a new language and building the necessary infrastructure of libraries, tools, and documentation, you have to expect some pretty big productivity and/or performance improvements spread over a lot of people. If the productivity improvements are merely incremental (and perhaps limited to a small community of programmers who share your vision), the effort that goes into Heron will never be recovered in actual development projects. That is what I was getting at by asking if Heron will solve real development problems or if it's more of an academic or intellectual challenge.
I'm always interested to find out what motivated a language designer to create something interesting, whether it's Wirth's Oberon, Stroustrup's C++, or Matz's Ruby. I'm still curious to know specifically which paradigms you want to unify in Heron, and how you expect to improve expressiveness and programmer productivity. I don't have a clear picture of the ideas and goals behind Heron other than your postings, which seem more focused on specific features and their implementation, and on run-time performance.
> I can do most of what I need in virtually any language,
> unless it requires high performance.
Do you mean that no languages available to you have sufficient performance, or that the languages that give you fast execution are insufficently expressive or powerful or productive? Do you expect that Heron will generate faster code than a C compiler? I'm curious what performance requirements you face.
> Most of my beef is about how hard it is to express
> certain ideas in various langauges. I want a truly
> multi-paradigm language.
Expressiveness was a big motivator behind C, Oberon, Lisp, C++, Perl, Python, Ruby and probably most modern languages. C was at least partially a counter to the weaknesses and limitations of Fortran and Cobol. C++ improved C's type system, encapsulation, and abstractions. Perl streamlined jobs that were done with sed, awk, and shell scripts into an (arguably) cleaner and faster language. What specifically will Heron do that will make it more expressive than C++?
An example of one of those "certain ideas" that are so hard to express in modern languages would help me understand what is driving Heron. If I am forced to work with Visual Basic I will wish for the expressiveness and power of Python, but I haven't found myself at a loss when I can choose a better language. I am still curious to see a real programming problem that is simply too hard to express in C++, Python, Ruby, Lisp, or some other available modern language.
> I don't want to switch languages. Too often I need the
> features of one language in the middle of using another.
> Cross-language development is too complicated for my
I don't like cross-language development either; that wasn't what I meant. I meant that when I can choose among the languages I know I have always been able to pick one that suits me and the problem. I can't always choose the language because I work for other people most of the time and usually the platform and language (and often a lot of the code base) is already chosen for me. If writing your own new language is your solution, that implies that in your work choosing that new language will be an option available to you -- that you will switch languages from (say) C++ to Heron at some point on a real project.
> No, it is about frustration from devlopment projects which
> are hard to implement using a paradigm of my choice.
It sounds like you get a lot more freedom to choose languages and tools and paradigms than most of us. That's why I asked for an example of the kinds of projects you do in your professional work.
> No I can't. I could do anything in virtually any language,
> unless really high-performance is needed (e.g. device
> drivers console games, spreadsheets, databases, compilers,
> IDE's, debuggers, media players, file managers, etc.)
> which narrows the choice of language significantly.
Do you really get to work across so many different application domains in your professional work? Few programmers I've known have worked in more than one or two of those domains. I generally don't work on high-performance code, but I used to (a long time ago), and when I did it was Fortran + assembly, or Forth, or C if I was lucky, so maybe I don't understand the kinds of high-performance applications you work on.