HOME

TheInfoList



OR:

Gosu is a statically typed
general-purpose programming language In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application domains. Conversely, a domain-specific programming language is used within a specific area. For exam ...
that runs on the
Java Virtual Machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describe ...
. Its influences include
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
, C#, and
ECMAScript ECMAScript (; ES) is a JavaScript standard intended to ensure the interoperability of web pages across different browsers. It is standardized by Ecma International in the documenECMA-262 ECMAScript is commonly used for client-side scripti ...
. Development of Gosu began in 2002 internally for Guidewire Software, and the language saw its first community release in 2010 under the
Apache 2 APACHE II ("Acute Physiology and Chronic Health Evaluation II") is a severity-of-disease classification system, one of several ICU scoring systems. It is applied within 24 hours of admission of a patient to an intensive care unit (ICU): an int ...
license. Gosu can serve as a scripting language, having free-form Program types (.gsp files) for scripting as well as statically verified Template files (.gst files). Gosu can optionally execute these and all other types directly from source without precompilation, which also distinguishes it from other static languages.


History

Gosu began in 2002 as a scripting language called GScript at Guidewire Software.https://gosu-lang.github.io/ It has been described as a
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
variant that attempts to make useful improvements while retaining the fundamental utility and compatibility with Java. It was used to configure
business logic In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed. It is contrasted with the remainder of the software that might ...
in Guidewire's applications and was more of a simple rule definition language. In its original incarnation it followed
ECMAScript ECMAScript (; ES) is a JavaScript standard intended to ensure the interoperability of web pages across different browsers. It is standardized by Ecma International in the documenECMA-262 ECMAScript is commonly used for client-side scripti ...
guidelines. Guidewire enhanced the scripting language over the next 8 years, and released Gosu 0.7 beta to the community in November 2010. The 0.8 beta was released in December 2010, and 0.8.6 beta was released in mid-2011 with additional typeloaders, making Gosu capable of loading XML schema definition files and XML documents as native Gosu types. The latest version is 1.10, released in January 2016, along with a new IntelliJ IDEA editor plugin. Guidewire continues to support and use Gosu extensively within InsuranceSuite applications. Guidewire has decided to freeze the development of new Gosu programming language constructs at this time. Guidewire continues to evolve InsuranceSuite through RESTful APIs and Integration Frameworks that can be accessed using Java.


Philosophy

Gosu language creator and development lead, Scott McKinney, emphasizes pragmatism, found in readability and
discoverability Discoverability is the degree to which something, especially a piece of content or information, can be found in a search of a file, database, or other information system. Discoverability is a concern in library and information science, many aspects ...
, as the overriding principle that guides the language's design. For instance, Gosu's rich static type system is a necessary ingredient toward best of breed tooling via
static program analysis In computer science, static program analysis (or static analysis) is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution. The term ...
, rich parser feedback,
code completion Autocomplete, or word completion, is a feature in which an application predicts the rest of a word a user is typing. In Android and iOS smartphones, this is called predictive text. In graphical user interfaces, users can typically press the t ...
, deterministic refactoring, usage analysis, navigation, and the like.


Syntax and semantics

Gosu follows a syntax resembling a combination of other languages. For instance, declarations follow more along the lines of
Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of people and fictional characters with the name ** Blaise Pascal, Frenc ...
with name-first grammar. Gosu classes can have functions, fields, properties, and inner classes as members. Nominal inheritance and composition via
delegation Delegation is the assignment of authority to another person (normally from a manager to a subordinate) to carry out specific activities. It is the process of distributing and entrusting work to another person,Schermerhorn, J., Davidson, P., Poole ...
are built into the type system as well as
structural typing A structural type system (or property-based type system) is a major class of type systems in which type compatibility and equivalence are determined by the type's actual structure or definition and not by other characteristics such as its name ...
similar to the Go programming language. Gosu supports several file types: * Class (.gs files) * Program (.gsp files) * Enhancement (*.gsx files) * Template (*.gst files) In addition to standard class types Gosu supports enums, interfaces, structures, and annotations. Program files facilitate Gosu as a scripting language. For example, Gosu's Hello, World! is a simple one-line program: print("Hello, World!") Gosu classes are also executable a la Java: class Main


Data types

A unique feature of Gosu is its Open Type System, which allows the language to be easily extended to provide compile-time checking and IDE awareness of information that is typically checked only at runtime in most other languages. Enhancements let you add additional functions and properties to other types, including built-in Java types such as String, List, etc. This example demonstrates adding a print() function to java.lang.String. enhancement MyStringEnhancement : String Now you can tell a String to print itself: "Echo".print() The combination of closures and enhancements provide a powerful way of coding with Collections. The overhead of Java streams is unnecessary with Gosu: var list = var result = list.where(\ elem -> elem >= 2) print(result)


Uses

This general-purpose programming language is used primarily in Guidewire Software's commercial products.


References


Further reading

*
Video


External links


Official websiteSource code repository
{{DEFAULTSORT:Gosu (Programming Language) Programming languages Object-oriented programming languages Java programming language family JVM programming languages Software using the Apache license Programming languages created in 2002 2002 software High-level programming languages Cross-platform free software Free compilers and interpreters