# Lars Bak (Informatiker)

Lars Bak (* um 1965) auch Lars Bak Petersen ist ein dänischer Informatiker, der auf die Entwicklung virtueller Maschinen spezialisiert ist. Er ist bei Google angestellt und hat die JavaScript-Engine V8 entwickelt. Bak hat im Zusammenhang mit virtuellen Maschinen eine Reihe von Patenten angemeldet.

## Leben
### Der Beginn bei Mjølner

Bak schrieb sich 1982 im Studiengang Informatik an der Universität Aarhus ein und schloss das Studium 1988 mit dem Master of Science ab. Er arbeitete seit 1986 am Nordic research project Mjølner mit und gründete 1988 nach Abschluss des Studiums zusammen mit seinem Professor Ole Lehrmann Madsen ein Spin-off namens Mjølner Informatics. Bei Mjølner arbeitete er an der Implementierung der Programmiersprache BETA. Die BETA-VM war seine erste virtuelle Maschine.

### Zeit im Silicon Valley

1991 wechselte er zur Self-Gruppe von Sun Microsystems nach San José. Dort traf er unter anderem auf Urs Hölzle, der mit der Entwicklung neuer Compiler- und VM-Techniken beschäftigt war. Bak arbeitete dort vor allem an der Entwicklung der Self-VM.
1994 verließen Bak, Gilad Bracha, Steffen Grarup, Robert Griesemer, David Griswold und Urs Hölzle Sun und gründeten Longview Technologies in Palo Alto, welches auch unter dem Namen Animorphic Systems auftrat. Dort sollte vor allem die Programmiersprache Strongtalk entwickelt werden. Dort gelang Urs Hölzle die Entwicklung eines Type-Feedback-Compilers und 1995 wurde aufgrund der stürmischen Entwicklung von Suns neuer Programmiersprache Java die Entwicklung der HotSpot-VM gestartet.
1997 kaufte Sun Longview Technologies für rund 23 Millionen US-Dollar und Bak wurde leitender Ingenieur der Hotspot-VM bei Sun. Zum Zeitpunkt der Übernahme war HotSpot rund doppelt so schnell wie damals am Markt befindliche JVMs. HotSpot-VM ist heute noch die wichtigste Java Virtual Machine und wird nun von Oracle vertrieben.

### Zurück in Aarhus

2000 kehrte Bak aus familiären Gründen nach Dänemark zurück, war aber weiterhin bei Sun angestellt. 2001 begann er die Arbeit mit Monty, einer Java-VM für Mobiltelefone, die später in CLDC HotSpot Virtual Machine umbenannt wurde.
2002 gründete Bak mit Kasper V. Lund eine Firma namens OOVM, um dort eine gleichnamige VM für Embedded Systems zu entwickeln. OOVM ist dabei eine Smalltalk-Implementierung, die ohne ein darunter liegendes Betriebssystem auskommt und es erlaubt, darauf laufende Programme im laufenden Betrieb zu verändern.
2004 kaufte das Schweizer Unternehmen Esmertec OOVM und Bak wurde Angestellter von Esmertec.
2006 plante Google einen eigenen Webbrowser Chrome. Hierfür wurde eine schnelle JavaScript-VM benötigt. Nachdem der nunmehrige Google-Vizepräsident für Technik Urs Hölzle Bak das Angebot machte, nach seinen Wünschen ein Team in Aarhus zusammenzustellen zu dürfen, begann er zusammen mit Kasper Lund mit der Entwicklung von V8. Schon nach wenigen Monaten waren erste Versionen deutlich schneller als die damals eingesetzten JavaScript-Engines von Internet Explorer, Firefox und Safari. Inzwischen laufen alle wichtigen JavaScript-Engines mindestens um den Faktor 100 schneller als dies noch 2008 der Fall war.
2010 begann Bak zusammen mit Gilad Bracha und Kasper Lund die Programmiersprache Dart zu entwickeln. Dart wurde 2011 auf der Konferenz Goto in Aarhus präsentiert und erreichte am 14. November 2013 die erste stabile Version.
Für 2018 wurde Bak der Dahl-Nygaard-Preis zugesprochen.

## Trivia

Während seiner Schulzeit interessierte sich Lars Bak kaum für Computer; erst an der Universität begann er sich intensiv damit zu beschäftigen.
In den Jahren im Silicon Valley hat er rund 20 kg zugenommen. Zurück in Dänemark schaffte er es mit Hilfe einer Atkins-Diät und viel Sport diese überflüssigen Kilos dauerhaft loszuwerden. In den Google-Büros in Aarhus wird die „kein Zucker“-Regel von den Angestellten mitgetragen.
Bak begann die Arbeit an V8 zuerst in einem zu einem Büro umfunktionierten Wirtschaftsgebäude seines Bauernhofes. Als das Team größer wurde, verlegte er die Entwicklung in ein Google-Bürogebäude auf dem Campus der Universität Aarhus.

## Patente

* Patent US6415381: Mixed execution stack and exception handling. Angemeldet am 6. Oktober 1997, veröffentlicht am 2. Juli 2002, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Robert Griesemer, Urs Hölzle.‌
* Patent US20060294528: Process and apparatus for sharing inline caches. Angemeldet am 13. Dezember 2000, veröffentlicht am 28. Dezember 2006, Anmelder: Lund Kasper V, Lars Bak, Andersen Jakob R, Steffen Grarup, Beat Heeb, Erfinder: Kasper Lund, Lars Bak, Jakob Andersen, Steffen Grarup, Beat Heeb.‌
* Patent US5970249: Method and apparatus for performing byte-code optimization during pauses. Angemeldet am 6. Oktober 1997, veröffentlicht am 19. Oktober 1999, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Urs Holzle.‌
* Patent WO2006111208: Process and system for real-time relocation of objects during garbage collection. Angemeldet am 22. April 2005, veröffentlicht am 26. Oktober 2006, Anmelder: Esmertec Ag, Steffen Grarup, Lars Bak, Kasper Lund, Jakob Andersen, Erfinder: Steffen Grarup, Lars Bak, Kasper Lund, Jakob Andersen.‌
* Patent US20040244009: Inline database for receiver types in object-oriented systems. Angemeldet am 6. Oktober 1997, veröffentlicht am 2. Dezember 2004, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Urs Holzle.‌
* Patent US6240547: Method and apparatus for dynamically deoptimizing compiled activations. Angemeldet am 6. Oktober 1997, veröffentlicht am 29. Mai 2001, Anmelder: Sun Microsystems, Inc., Erfinder: Urs Hölzle, Lars Bak.‌
* Patent US6513156: Interpreting functions utilizing a hybrid of virtual and native machine instructions. Angemeldet am 30. Juni 1997, veröffentlicht am 28. Januar 2003, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Robert Griesemer.‌
* Patent WO2006111209: Process and system for sharing program fragments. Angemeldet am 22. April 2005, veröffentlicht am 26. Oktober 2006, Anmelder: Andersen Jakob R, Lars Bak, Lund Kasper V, Steffen Grarup, Erfinder: Jakob Andersen, Lars Bak, Kasper Lund, Steffen Grarup.‌
* Patent US8392881: Supporting efficient access to object properties in a dynamic object-oriented programming language. Angemeldet am 13. Mai 2008, veröffentlicht am 5. März 2013, Anmelder: Google Inc., Erfinder: Kasper Verdich Lund, Lars Bak.‌
* Patent US6510437: Method and apparatus for concurrent thread synchronization. Angemeldet am 4. November 1996, veröffentlicht am 21. Januar 2003, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Timothy G. Lindholm.‌
* Patent US6714991: Method and apparatus for implementing fast subclass and subtype checks. Angemeldet am 23. März 1998, veröffentlicht am 7. Juni 2006, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Srdjan Mitrovic, Urs Holzle.‌
* Patent EP0950947: Static binding of dynamically dispatched calls in the presence of dynamic linking and loading. Angemeldet am 24. März 1998, veröffentlicht am 10. September 2003, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Srdjan Mitrovic, Urs Holzle.‌
* Patent US8578352: Optimizing object oriented programs using limited customization. Angemeldet am 31. März 2011, veröffentlicht am 13. November 2013, Anmelder: Google, Inc., Erfinder: Srdjan Mitrovic, Lars Bak.‌
* Patent EP0945791: Techniques for reducing the cost of dynamic class initialization checks in compiled code. Angemeldet am 22. März 1999, veröffentlicht am 5. Januar, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Srdjan Mitrovic.‌
* Patent US7181732: Method and apparatus for facilitating lazy type tagging for compiled activations. Angemeldet am 14. November 2001, veröffentlicht am 20. Februar 2007, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Kasper V. Lund.‌
* Patent EP1163581: Monitorkonvertierung in einem multi-threaded computer system. Angemeldet am 25. Februar 1999, veröffentlicht am 4. Dezember 2002, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Sheng Liang, Hong Zhang.‌
* Patent US6134627: Thread synchronization in a computer controlled by an object-based program. Angemeldet am 4. November 1996, veröffentlicht am 17. Oktober, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak.‌
* Patent US6704927: Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading. Angemeldet am 24. März 1998, veröffentlicht am 9. März 2004, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Srdjan Mitrovic, Urs Hölzle.‌
* Patent WO2003042822: Method and apparatus for facilitating compact object headers. Angemeldet am 14. November 2001, veröffentlicht am 22. Mai 2003, Anmelder: Sun Microsystems Inc, Erfinder: Lars Bak, Steffan Grarup.‌
* Patent WO2003042835: Non-intrusive gathering of code usage information to facilitate removing unused compiled code. Angemeldet am 14. November 2001, veröffentlicht am 22. Mai 2003, Anmelder: Sun Microsystems Inc, Erfinder: Lars Bak, Jacob Andersen, Kasper Lund.‌
* Patent EP1444574: Lazy type tagging in compiled activation frames for garbage collection in mixed-mode systems with interpreter and compiler. Angemeldet am 14. November 2001, veröffentlicht am 11. August 2004, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Kasper Lund.‌
* Patent WO2003042825: Method and apparatus for dynamically compiling byte codes into native code. Angemeldet am 14. November 2001, veröffentlicht am 22. Mai 2003, Anmelder: Sun Microsystems Inc, Erfinder: Lars Bak.‌
* Patent US6308185: Methods and apparatus for generational dynamic management of computer memory. Angemeldet am 6. März 1998, veröffentlicht am 28. Oktober 2001, Anmelder: Sun Microsystems, Inc., Erfinder: Steffen Grarup, Lars Bak.‌
* Patent EP0840215: Method and apparatus for thread synchronization in object-based systems. Angemeldet am 4. November 1996, veröffentlicht am 18. September 2002, Anmelder: Sun Microsystems, Inc., Erfinder: Lars Bak, Timothy G. Lindholm.‌
* Patent US7592930: Method and apparatus for reducing memory usage by encoding two values in a single field. Angemeldet am 13. Mai 2008, veröffentlicht am 22. September 2009, Anmelder: Google Inc., Erfinder: Mads Sig Ager, Lars Bak, Kasper Verdich Lund.‌
* Patent US8244775: Using map objects to access object properties in a dynamic object-oriented programming language. Angemeldet am 13. Mai 2008, veröffentlicht am 14. August 2012, Anmelder: Google Inc, Erfinder: Lars Bak, Kasper Verdich Lund.‌