Why Use Qore? (original) (raw)
Why should you use Qore? What makes Qore special?
There are two major features that make Qore unique:
- it is an interpreted scripting language with fundamental support for multithreading and thread-safe programming; all aspects of the language are thread-safe
- it supports C++-like destructors for resource-management and exception-safe programming (i.e. the RAII idiom) and also automatic memory management (in a context where cyclic directed graphs of objects are possible; see Prompt Collection for more information on Qore's completely deterministic garbage collection implementation)
These features are a bit technical, but if you've ever wanted to write multi-threaded code in a scripting language, or wondered why other languages with automatic memory management don't support C++-like destructors but have garbage collection approaches without user-controllable finalization / destruction, Qore may be for you.
Additionally, Qore supports logic embedding and sandboxing, optional strong typing, features a well-defined testing infrastructure, etc, see below for a more detailed list of language features.
The following is a more detailed list of high-level features of Qore:
- Qore is an interpreted scripting language (like Perl, Python, Ruby, etc)
- Qore features automatic memory management; programmers don't need to perform manual memory management (like most scripting languages and enterprise languages like Java and C#/.NET/CLR)
- Qore supports logic embedding and sandboxing (like Lua)
- Qore supports multithreading and thread-safe programming (similar to Java)
- Qore supports object-oriented programming (similar to C++ and Java)
- Qore supports exceptions and exception handling (try/catch, similar to Java)
- Qore supports weakly-typed development (like most scripting languages such as Perl, Python, Ruby, etc)
- Qore supports strong type restrictions with parse-time validation and run-time optimizations with typed code (similar to enterprise languages like Java and C#/.NET/CLR))
- Qore supports functional extensions such as the map, foldl, and foldr operators (similar to Python, inspired by Haskell)
- Qore supports multiple inheritance (similar to C++)
- Qore supports the definition of interfaces through the definition of classes with all abstract methods (similar to Java)
- Qore supports destructors (the RAII programming idiom) for scope-based resource management and exception-safe programming (like C++)
- Qore supports lexical-scope-based resource management and exception-safe programming with the on_exit, on_success, and on_error statements (inspired by D)
- Qore supports Prompt Collection or completely deterministic garbage collection (unique to Qore)
- Qore features high-level APIs for SQL, schema, and DBA management, HTTP, REST, *-RPC, SOAP, and other HTTP- and non-HTTP-based protocols, data mapping and interfacing, and much more, see Modules for more information