Gilad Bracha | |
---|---|
![]() Gilad Bracha 2006 | |
Alma mater | University of Utah |
Scientific career | |
Thesis | The Programming Language 'Jigsaw': Mixins, Modularity and Multiple Inheritance (1991) |
Doctoral advisor | Gary Lindstrom |
Website | http://www.bracha.org/ |
Gilad Bracha is the creator of the Newspeak programming language, a software engineer at Tensyr, and a former software engineer at Google where he worked on the Dart programming language team.[1][2][3] He is a 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]
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, Gilad Bracha together with Neal Gafter, James Gosling, and Peter von der Ahé (collectively BGGA) drafted a specification for adding closures to the Java programming 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
It has been proposed by Bracha 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 required. 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 existing dynamically typed language without changing its semantics and usually keeping the syntax unchanged as well. 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 pluggable type system in mind from the beginning 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]
Generic Java
A 1998 paper authored by Bracha claims that casts inserted by the [generics] translation are guaranteed to not fail.[18] Although initially true, wildcards were added and made the type system unsound.[19]
References
- ^ http://www.dartlang.org/authors/gilad-bracha.html
- ^ Channel 9 interview (mp3) with Gilad Bracha
- ^ https://www.linkedin.com/in/gbracha/
- ^ "The Java Language Specification, Third Edition". Oracle. Archived from the original on 2014-10-31.
- ^ "Preface". The Java Virtual Machine Specification, Second Edition. Oracle. Archived from the original on 2014-07-11.
- ^ a b c Gilad Bracha’s CV
- ^ Bracha's 'bio blurb'
- ^ "Closures (Lambda Expressions) for the Java Programming Language".
- ^ Bloch, Joshua. The Closures Controversy (Speech). Javapolis '07. Archived from the original on 4 February 2015. Retrieved 3 February 2015.
- ^ Bracha, G.: Pluggable Types
- ^ https://code.google.com/p/strongtalk/
- ^ http://legacy.python.org/dev/peps/pep-3107/
- ^ https://andreacensi.github.io/contracts/
- ^ http://blog.codeclimate.com/blog/2014/05/06/gradual-type-checking-for-ruby/
- ^ https://github.com/clojure/core.typed/wiki
- ^ http://php.net/manual/en/language.oop5.typehinting.php
- ^ "Type Annotations and Pluggable Type Systems". Oracle.
- ^ Making the future safe for the past: Adding Genericity to the Java Programming Language. Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler. OOPSLA 98, Vancouver, October 1998. http://homepages.inf.ed.ac.uk/wadler/gj/Documents/#gj-oopsla
- ^ Nada Amin and Ross Tate. "Java and Scala's Type Systems are Unsound" (PDF).