19 April, 2020

DesignScript: origins, explanation, illustration


Robert Aish
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
 From the perspective of a programming language, we might describe DesignScript as an associative language, which maintains a graph of dependencies between vari- ables. In DesignScript these variables can represent numeric values or geometric entities, or other application constructs, including those defined by the user. The execution of a DesignScript program is effectively a change-propagation mecha- nism using this graph of variables. This change-propagation also functions as the update mechanism similar to that found in a conventional CAD application. How- ever, unlike other CAD update mechanisms or associative and parametric modeling systems, in DesignScript this mechanism is exposed to the user and is completely programmable. Figure 1 illustrates the important differences between a conventional imperative language and an associative language such as DesignScript, while Fig- ure 2 shows how a program statement in DesignScript can also be interpreted as natural language. Each term in the statement has an equivalent natural language interpretation so that whole statement can be understood by its natural language equivalent.So a concise but somewhat complex description of DesignScript might be as a domain-specific, end-user, multi-paradigm, host-independent, extensible program- ming language , as follows:
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


From Wikipedia, the free encyclopedia
Jump to navigationJump to search
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