1.5 Delivery of safe, efficient, compact applications
Languages that provide run-time flexibility have usually paid a price in decreased performance and large application size. Dylan's solution is to separate the development environment from the delivered run-time application. Dylan provides maximum flexibility during program development, but also lets you trade flexibility for performance in a delivered application. A Dylan compiler can often optimize such potentially expensive operations as slot access and method dispatch.
You can declare type constraints for variables, parameters, return values, and slots. The more specific your type declarations, the better the compiler can detect type mismatches and optimize performance.
By default, classes and generic functions are closed off, or sealed. No other library or application can define subclasses for a sealed class or define methods for a sealed generic function. Sealing can help a compiler to optimize slot access and method dispatch.
Dylan's core language is small. Extended components of the language, such as input-output and advanced mathematical operations, are provided by libraries. You can keep an application small by using only the libraries that the application needs. You can also create libraries of your own, and deliver them in compiled form.
You can selectively open or unseal classes and generic functions to allow users of your application or library to specialize the interfaces that you provide. An open interface in Dylan includes link- and run-time information, so that an application that specializes the interface does not have to be recompiled to use a new version of the library.
Most Dylan implementations provide support for operating in a multilanguage environment. A Dylan program can operate with code written in another language, and a program written in another language can operate with Dylan code. You can use a Dylan program as a component of a software system that includes code written in other languages.
Dylan's overall aim is to meet two needs that have often been in conflict:
1. To give programmers the freedom and power to develop applications rapidly
2. To deliver components and applications that can run efficiently on a wide range of machines and operating systems
This book introduces you to the features of Dylan that make those goals attainable. We think you will find Dylan to be a language that makes your programming time both productive and enjoyable.




