Tim Peters (software engineer)

Last updated

Tim Peters
Occupation Software developer
AwardsPSF Distinguished Service Award

Tim Peters is an American[ citation needed ] software developer who is known for creating the Timsort hybrid sorting algorithm and for his major contributions to the Python programming language and its original CPython implementation. A pre-1.0 CPython user, he was among the group of early adopters who contributed to the detailed design of the language in its early stages. [1] [2]

Contents

He later created the Timsort algorithm (based on earlier work on the use of "galloping" search) [3] which was used in Python from versions 2.3 to 3.10 inclusive, [4] [5] as well as in other widely used computing platforms, [6] [7] [8] including the V8 JavaScript engine powering the Google Chrome and Chromium web browsers, as well as Node.js. [9] [10] He has also contributed the doctest and timeit modules to the Python standard library. [11]

Peters also wrote the Zen of Python, intended as a statement of Python's design philosophy, which was incorporated into the official Python literature as Python Enhancement Proposal 20 and in the Python interpreter as an easter egg. [12] He contributed the chapter on algorithms to the Python Cookbook. [13] From 2001 to 2014 he was active as a member of the Python Software Foundation's board of directors. Peters was an influential contributor to Python mailing lists. [14] He is also a highly ranked contributor to Stack Overflow, mostly for answers relating to Python. [15] [11]

Peters' past employers include Kendall Square Research. [16] [17] Tim Peters was granted the Python Software Foundation's Distinguished Service Award for 2017. [11] [14]

See also

References/Notes and references

  1. Interview with Tim Peters. July 1, 2012. Event occurs at 0m20s. Tim Peters: I was in compiler development when Guido was developing Python and a mutual acquaintance, Steve Majewski, sent me some email telling me about Python. So I started a email correspondence with Guido about the language and about the design, and I got some of the pre-release code, played with it and talked to him about design decisions and liked it very much ... Holger Krekel: [inaudible] Tim Peters: Pardon? Holger Krekel: Was this like in the early '90s? Tim Peters: Early '90s, yeah. Back around Python 0.9.1.
  2. van Rossum, Guido (November 1, 1998). "LJ Interviews Guido van Rossum". Linux Journal (Interview). Interviewed by Andrew Kuchling. United States. Some of the early adopters of the language, such as Tim Peters and Steve Majewski, focused on very subtle design details and helped immensely by clarifying the way various features should work; e.g., they convinced me to support mixed arithmetic.
  3. Peters, Tim. "listsort". Python Software Foundation. Retrieved September 7, 2018.
  4. James, Mike (December 21, 2022). "Python Now Uses Powersort". www.i-programmer.info. Retrieved January 24, 2024.
  5. Commit switching to powersort
  6. "[#JDK-6804124] (coll) Replace "modified mergesort" in java.util.Arrays.sort with timsort". JDK Bug System. Retrieved June 11, 2014.
  7. "Class: java.util.TimSort<T>". Android Gingerbread Documentation. Archived from the original on July 16, 2015. Retrieved February 24, 2011.
  8. "liboctave/util/oct-sort.cc". Mercurial repository of Octave source code. Lines 23-25 of the initial comment block. Retrieved February 18, 2013. Code stolen in large part from Python's, listobject.c, which itself had no license header. However, thanks to Tim Peters for the parts of the code I ripped-off.
  9. V8 release v7.0, Official V8 Blog
  10. Getting things sorted in V8, Official V8 Blog
  11. 1 2 3 "PSF Distinguished Service Awards". Python Software Foundation. Retrieved May 24, 2024.
  12. Peters, Tim. "PEP 20 -- The Zen of Python". Python Software Foundation. Retrieved September 7, 2018.
  13. Martelli, Alex; Ascher, David (2002). Python Cookbook (1st ed.). O'Reilly Media. ISBN   978-0-596-00167-4.
  14. 1 2 "The Happy Medium: Distinguished Service Award Winner Tim Peters". Python Software Foundation. July 18, 2018. Retrieved September 7, 2018.
  15. "Tim Peters". Stack Overflow . Retrieved September 7, 2018.
  16. Interview with Tim Peters. July 1, 2012. Event occurs at 2m18s. Tim Peters: Yeah, since '91, so I was working at Kendall Square Research then [...]
  17. Peters, Tim (October 20, 1992). "Livermore Loops coded in C". Netlib . University of Tennessee and Oak Ridge National Laboratory . Retrieved September 6, 2018.


Related Research Articles

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.

<span class="mw-page-title-main">Cocktail shaker sort</span> Sorting algorithm

Cocktail shaker sort, also known as bidirectional bubble sort, cocktail sort, shaker sort, ripple sort, shuffle sort, or shuttle sort, is an extension of bubble sort. The algorithm extends bubble sort by operating in two directions. While it improves on bubble sort by more quickly moving items to the beginning of the list, it provides only marginal performance improvements.

<span class="mw-page-title-main">Guido van Rossum</span> Dutch programmer and creator of Python

Guido van Rossum is a Dutch programmer. He is the creator of the Python programming language, for which he was the "benevolent dictator for life" (BDFL) until he stepped down from the position on 12 July 2018. He remained a member of the Python Steering Council through 2019, and withdrew from nominations for the 2020 election.

In computer programming, a standard library is the library made available across implementations of a programming language. These libraries are conventionally described in programming language specifications; however, contents of a language's associated library may also be determined by more informal practices of a language's community.

Jython is an implementation of the Python programming language designed to run on the Java platform. It was known as JPython until 1999.

<span class="mw-page-title-main">Processing</span> Free graphics library

Processing is a free graphics library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context.

Resource acquisition is initialization (RAII) is a programming idiom used in several object-oriented, statically typed programming languages to describe a particular language behavior. In RAII, holding a resource is a class invariant, and is tied to object lifetime. Resource allocation is done during object creation, by the constructor, while resource deallocation (release) is done during object destruction, by the destructor. In other words, resource acquisition must succeed for initialization to succeed. Thus the resource is guaranteed to be held between when initialization finishes and finalization starts, and to be held only when the object is alive. Thus if there are no object leaks, there are no resource leaks.

CPython is the reference implementation of the Python programming language. Written in C and Python, CPython is the default and most widely used implementation of the Python language.

<span class="mw-page-title-main">PyPy</span> Alternative implementation of the Python programming language

PyPy is an implementation of the Python programming language. PyPy often runs faster than the standard implementation CPython because PyPy uses a just-in-time compiler. Most Python code runs well on PyPy except for code that depends on CPython extensions, which either does not work or incurs some overhead when run in PyPy.

<span class="mw-page-title-main">Java collections framework</span> Collections in Java

The Java collections framework is a set of classes and interfaces that implement commonly reusable collection data structures.

The Java programming language and Java software platform have been criticized for design choices including the implementation of generics, forced object-oriented programming, the handling of unsigned numbers, the implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM implementation, HotSpot. Software written in Java, especially its early versions, has been criticized for its performance compared to software written in other programming languages. Developers have also remarked that differences in various Java implementations must be taken into account when writing complex Java programs that must work with all of them.

OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition. It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GPL-2.0-only with a linking exception. Were it not for the GPL linking exception, components that linked to the Java Class Library would be subject to the terms of the GPL license. OpenJDK is the official reference implementation of Java SE since version 7.

<span class="mw-page-title-main">IDLE</span> Integrated development environment for Python

IDLE is an integrated development environment for Python, which has been bundled with the default implementation of the language since 1.5.2b1. It is packaged as an optional part of the Python packaging with many Linux distributions. It is completely written in Python and the Tkinter GUI toolkit.

<span class="mw-page-title-main">Cython</span> Programming language

Cython is a superset of the programming language Python, which allows developers to write Python code that yields performance comparable to that of C.

<span class="mw-page-title-main">History of Python</span> History of the Python programming language

The programming language Python was conceived in the late 1980s, and its implementation was started in December 1989 by Guido van Rossum at CWI in the Netherlands as a successor to ABC capable of exception handling and interfacing with the Amoeba operating system. Van Rossum is Python's principal author, and his continuing central role in deciding the direction of Python is reflected in the title given to him by the Python community, Benevolent Dictator for Life (BDFL).. Python was named after the BBC TV show Monty Python's Flying Circus.

Timsort is a hybrid, stable sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds of real-world data. It was implemented by Tim Peters in 2002 for use in the Python programming language. The algorithm finds subsequences of the data that are already ordered (runs) and uses them to sort the remainder more efficiently. This is done by merging runs until certain criteria are fulfilled. Timsort was Python's standard sorting algorithm from version 2.3 to version 3.10, and is used to sort arrays of non-primitive type in Java SE 7, on the Android platform, in GNU Octave, on V8, Swift, and inspired the sorting algorithm used in Rust.

<span class="mw-page-title-main">Bubble sort</span> Simple comparison sorting algorithm

Bubble sort, sometimes referred to as sinking sort, is a simple sorting algorithm that repeatedly steps through the input list element by element, comparing the current element with the one after it, swapping their values if needed. These passes through the list are repeated until no swaps have to be performed during a pass, meaning that the list has become fully sorted. The algorithm, which is a comparison sort, is named for the way the larger elements "bubble" up to the top of the list.

In the software development process, a reference implementation is a program that implements all requirements from a corresponding specification. The reference implementation often accompanies a technical standard, and demonstrates what should be considered the "correct" behavior of any other implementation of it.

In programming jargon, Yoda conditions is a programming style where the two parts of an expression are reversed from the typical order in a conditional statement. A Yoda condition places the constant portion of the expression on the left side of the conditional statement.

<span class="mw-page-title-main">Zen of Python</span> Programming language design principles

The Zen of Python is a collection of 19 "guiding principles" for writing computer programs that influence the design of the Python programming language. Python code that aligns with these principles is often referred to as "Pythonic".