Robert Aish
http://www.designscript.io/
http://www.designscript.io/
“A programming language that doesn’t change the way
you think is not worth learning”
—Alan Perlis, ‘Epigrams in
Programming’
Abstract DesignScript, as the
name suggests, is positioned at the intersection of design and programming.
DesignScript can be viewed as part of the continuing tra- dition of the development of parametric and associative modeling
tools for advanced
architectural design and building engineering. Much of the thought
processes that contribute to the
effective use of DesignScript builds on the tradition of paramet- ric design
and associative modeling that is already widely distributed amongst the
creative members of the architectural and engineering communities. Many of the ex- isting
parametric and associative modelling tools also support conventional scripting via connections to existing programming languages. The originality of DesignScript is that associative and parametric modeling
is integrated with conventional scripting. Indeed, the definition of the associative and parametric model is recorded
directly in DesignScript. But it is not what DesignScript does which
is important, more what a designer can do with DesignScript. It is this change in the way you think that makes DesignScript worth learning.
DesignScript
DesignScript is a domain specific language for data flow programming with applications in CAD.
This repository holds shared information for the DesignScript language and is under active development.
Programming Language
Written by ANTLR and ANTLR Written by JAVA But designScript language wittern by C# language
1. domain-specific DesignScript is intended to support the generation of geometric
design models and therefore provides
special constructs to assist in the represen- tation of geometric models. More
generally: A domain specific language may remove
certain general purpose functionality and instead adds domain specific
functionality as first class features of the
language.
2. end-user DesignScript
is intended to be used by experienced designers with a wide range of programming skill, ranging from non-programmers (who might in- directly program via
interactive direct manipulation), to novice non-professional (end-user) programmers,
and to experienced designers who have substantial ex- pertise in programing. More generally: An end user language
adds simplifying syntax to the language, while reducing some of restriction
often associated with general
purpose languages (intended for experienced programmers).
3. Multi-paradigm DesignScript
integrates a number of different programming paradigms into a single language
(including object-oriented, functional and as- sociative paradigms) and
introduces some additional programming conceptsthat are relevant to the domain of generative design. More generally: A multi- paradigm language combines different
programming styles into a single language
and allows the user to select which paradigms or combination of paradigms are appropriate.
4. host-independent DesignScript
is intended to support the generation of geo-
metric models and is therefore designed to be hosted within different
CAD ap- plications and access different geometric, engineering analysis and
simulation libraries. For example, a DesignScript variable (based on specific
class) may maintain a correspondence
with a geometric entity in AutoCAD and simulta- neously with entities within
engineering analysis applications such as Ecotect and Robot.
5. extensible DesignScript can be extended
by the user, by the addition of functions
and classes.
------------------------------------
------------------------------------
Domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages (more generally, specification languages), and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.
The line between general-purpose languages and domain-specific languages is not always sharp, as a language may have specialized features for a particular domain but be applicable more broadly, or conversely may in principle be capable of broad application but in practice used primarily for a specific domain. For example, Perl was originally developed as a text-processing and glue language, for the same domain as AWK and shell scripts, but was mostly used as a general-purpose programming language later on. By contrast, PostScript is a Turing complete language, and in principle can be used for any task, but in practice is narrowly used as a page description language.
Use
The design and use of appropriate DSLs is a key part of domain engineering, by using a language suitable to the domain at hand – this may consist of using an existing DSL or GPL, or developing a new DSL. Language-oriented programming considers the creation of special-purpose languages for expressing problems as standard part of the problem-solving process. Creating a domain-specific language (with software to support it), rather than reusing an existing language, can be worthwhile if the language allows a particular type of problem or solution to be expressed more clearly than an existing language would allow and the type of problem in question reappears sufficiently often. Pragmatically, a DSL may be specialized to a particular problem domain, a particular problem representation technique, a particular solution technique, or other aspects of a domain.
No comments :
Post a Comment