Gilad Bracha

Last updated
Gilad Bracha
Gilad Bracha lang.NET 2006.jpg
Gilad Bracha 2006
Alma mater University of Utah
AwardsSenior Dahl–Nygaard Prize (2017)
Scientific career
Fields Computer science
InstitutionsAnimorphic Systems
Sun Microsystems
Cadence Design Systems
Google
F5 Networks
Thesis The Programming Language 'Jigsaw': Mixins, Modularity and Multiple Inheritance  (1991)
Doctoral advisor Gary Lindstrom
Website www.bracha.org

Gilad Bracha is a software engineer at F5 Networks, and formerly at Google, where he was on the Dart programming language team. [1] [2] [3] He is creator of the Newspeak language, and co-author of the second and third editions of the Java Language Specification, [4] and a major contributor to the second edition of the Java Virtual Machine Specification. [5]

Contents

Between 1994 and 1997, he worked on the Smalltalk system developed by Animorphic Systems, [6] a company that was bought by Sun in 1997. From 1997 to 2006, he worked at Sun Microsystems as computational theologist and, as of 2005, distinguished engineer, on various aspects of the specification and implementation of Java. [6] Following that, he was distinguished engineer at Cadence Design Systems from 2006 to 2009, where he led a team of developers designing and implementing Newspeak. [6]

Bracha received his B.Sc. in mathematics and computer science from Ben Gurion University in Israel and his Ph.D. in computer science from the University of Utah. [7] Bracha won the Senior Dahl–Nygaard Prize in 2017.

BGGA closures

In 2006, Bracha, with Neal Gafter, James Gosling, and Peter von der Ahé (collectively BGGA), drafted a specification for adding closures to the Java language, version 6. [8] The proposal has been criticized by Joshua Bloch on terms of being needlessly complex (adding function types and non-local returns) while providing little benefit for the average Java programmer over other simpler proposals. [9] Closures were added to Java 8, but based on a different proposal than the BGGA one.

Pluggable type systems

Bracha proposed that choice of type system be made independent of choice of language; that a type system should be a module that can be "plugged" into a language as needed. He believes this is advantageous, because what he calls mandatory type systems make languages less expressive and code more fragile. [10] The requirement that types do not affect the semantics of the language is challenging to fulfill; for example, constructs like type-based overloading are disallowed.

In practice, pluggable type systems are variously called optional typing, type hinting, type annotations, or gradual type checking. They tend to be constructed by adding a static type system to an extant dynamically typed language without changing its semantics and usually its syntax. Examples include Smalltalk, [11] Python 3, [12] [13] Ruby, [14] Clojure, [15] and PHP 5. [16] For most of the languages there is only one implementation of the type system. The exception is Python 3 where the type system is truly pluggable, because there are several implementations and the programmer can use the one that is the best fit. The only language designed with a pluggable type system from the start is Newspeak. Java 8 provides the ability to extend the type system, but does not allow flexibility in the basics of the type system, such as choosing between static and dynamic typing. [17]

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client–server web applications, with a reported 9 million developers.

<span class="mw-page-title-main">Java virtual machine</span> 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 describes what is required in a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

<span class="mw-page-title-main">Programming language</span> Language for communicating instructions to a machine

A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.

In computing, serialization is the process of translating a data structure or object state into a format that can be stored or transmitted and reconstructed later. When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references, this process is not straightforward. Serialization of object-oriented objects does not include any of their associated methods with which they were previously linked.

In computing and computer programming, exception handling is the process of responding to the occurrence of exceptions – anomalous or exceptional conditions requiring special processing – during the execution of a program. In general, an exception breaks the normal flow of execution and executes a pre-registered exception handler; the details of how this is done depend on whether it is a hardware or software exception and how the software exception is implemented. Exception handling, if provided, is facilitated by specialized programming language constructs, hardware mechanisms like interrupts, or operating system (OS) inter-process communication (IPC) facilities like signals. Some exceptions, especially hardware ones, may be handled so gracefully that execution can resume where it was interrupted.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

Strongtalk is a Smalltalk environment with optional static typing support. Strongtalk can make some compile time checks, and offer stronger type safety guarantees; this is the source of its name. It is non-commercial, though it was originally a commercial project developed by a small startup company named LongView Technologies.

Programming languages are used for controlling the behavior of a machine. Like natural languages, programming languages follow the rules for syntax and semantics.

A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written in another.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

Generics are a facility of generic programming that were added to the Java programming language in 2004 within version J2SE 5.0. They were designed to extend Java's type system to allow "a type or method to operate on objects of various types while providing compile-time type safety". The aspect compile-time type safety was not fully achieved, since it was shown in 2016 that it is not guaranteed in all cases.

<span class="mw-page-title-main">Clojure</span> Dialect of the Lisp programming language on the Java platform

Clojure is a dynamic and functional dialect of the Lisp programming language on the Java platform. Like other Lisp dialects, Clojure treats code as data and has a Lisp macro system. The current development process is community-driven, overseen by Rich Hickey as its benevolent dictator for life (BDFL).

Newspeak is a programming language and platform in the tradition of Smalltalk and Self being developed by a team led by Gilad Bracha. The platform includes an integrated development environment (IDE), a graphical user interface (GUI) library, and standard libraries. Starting in 2006, Cadence Design Systems funded its development and employed the main contributors, but ended funding in January 2009.

<span class="mw-page-title-main">API</span> Software interface between computers and/or programs

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.

Dart is a programming language designed for client development, such as for the web and mobile apps. It is developed by Google and can also be used to build server and desktop applications.

In computing, Java bytecode is the bytecode-structured instruction set of the Java virtual machine (JVM), a virtual machine that enables a computer to run programs written in the Java programming language and several other programming languages, see List of JVM languages.

References

  1. "Gilad Bracha". Archived from the original on 2012-04-02. Retrieved 2012-03-15.
  2. Channel 9 interview (mp3) with Gilad Bracha
  3. https://www.linkedin.com/in/gbracha/ [ self-published source ]
  4. Bracha, Gilad. "The Java Language Specification" (3rd ed.). Oracle. Archived from the original on 2014-10-31.
  5. Bracha, Gilad. "Preface". The Java Virtual Machine Specification (2nd ed.). Oracle. Archived from the original on 2014-07-11.
  6. 1 2 3 Gilad Bracha’s CV
  7. Bracha's 'bio blurb'
  8. "Closures (Lambda Expressions) for the Java Programming Language".
  9. Bloch, Joshua (8 April 2009). The Closures Controversy (Speech). Javapolis '07. Archived from the original on 4 February 2015. Retrieved 3 February 2015.
  10. Bracha, G.: Pluggable Types
  11. "Google Code Archive – Long-term storage for Google Code Project Hosting".
  12. "PEP 3107 – Function Annotations".
  13. "PyContracts – PyContracts 1.7.16 documentation".
  14. "Gradual Type Checking for Ruby". 6 May 2014.
  15. "Home – clojure/Core.typed Wiki". GitHub .
  16. "Type Hinting". Archived from the original on 2014-10-18. Retrieved 2014-10-18.
  17. "Type Annotations and Pluggable Type Systems". Oracle.