Search code examples
programming-languageslanguage-designlanguage-features

Does this language have its niche | future?


I am working on a new language, targeted for web development, embeding into applications, distributed applications, high-reliability software (but this is for distant future).

Also, it's target to reduce development expenses in long term - more time to write safer code and less support later. And finally, it enforces many things that real teams have to enforce - like one crossplatform IDE, one codestyle, one web framework.

In short, the key syntax/language features are:

  1. Open source, non-restrictive licensing. Surely crossplatform.

  2. Tastes like C++ but simpler, Pythonic syntax with strict & static type checking. Easier to learn, no multiple inheritance and other things which nobody know anyway :-)

  3. LLVM bytecode/compilation backend gives near-C speed.

  4. Is has both garbage collection & explicit object destruction.

  5. Real OS threads, native support of multicore computers. Multithreading is part of language, not a library.

  6. Types have the same width on any platform. int(32), long(64) e.t.c

  7. Built in post and preconditions, asserts, tiny unit tests. You write a method - you can write all these things in 1 place, so you have related things in one place. If you worry that your class sourcecode will be bloated with this - it's IDEs work to hide what you don't need now.

  8. Java-like exception handling (i.e. you have to handle all exceptions)

I guess I'll leave web & cluster features for now...

What you think? Are there any existing similar languages which I missed?


Solution

  • Responding to a few of your points individually (I've omitted what I consider either unimportant or good):

    targeted for web development

    Most people use php. Not because it's the best language available, that's for sure.

    embeding into applications

    Lua.

    distributed applications, high-reliability software (but this is for distant future).

    Have you carefully studied Erlang, both its design and its reference implementation?

    it enforces many things that real teams have to enforce - like one crossplatform IDE, one codestyle, one web framework.

    If your language becomes successful, people will make other IDEs, other code styles, other web frameworks.

    Multithreading is part of language, not a library.

    Really good languages for multithreading forbid side effects inside threads. Yes, in practice that pretty much means Erlang only.

    Types have the same width on any platform. int(32), long(64) e.t.c

    Sigh... There's only one reasonable width for integers outside of machine-level languages like C: infinite.


    Designing your own language will undoubtedly teach you someting. But designing a good language is like designing a good cryptosystem: lots of amateurs try, but it takes an expert to do it well.

    I suggest you read some of Norman Ramsey's answers here on programming language design, starting with this thread.

    Given your interest in distributed applications, knowing Erlang is a must. As for sequential programming, the minimum is one imperative language and one functional language (ideally both Lisp/Scheme and Haskell, but F# is a good start). I also recommend knowing at least one high-level language that doesn't have objects, just so you understand that not having objects can often make the programmer's life easier (because objects are complex).

    As for what could drive other people to learn your language... Good tools/libraries/frameworks can't hurt (FORTRAN, php), and a big company setting the example can't hurt (Java, C#). Good design doesn't seem to be much of a factor (a ha-ha-only-serious joke has it that what makes a language successful is using {braces} to delimit blocks: C, C++, Java, C#, php)...