Tim Peters (software engineer)

Last updated

Tim Peters
Occupation Software developer
AwardsPSF Distinguished Service Award

Tim Peters is a 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]

Contents

He later created the Timsort algorithm (based on earlier work on the use of "galloping" search) [2] which is used in Python since version 2.3 (since version 3.11 using the Powersort merge policy instead of Timsort's original merge policy [3] [4] ), as well as in other widely used computing platforms, [5] [6] [7] including the V8 JavaScript engine powering the Google Chrome and Chromium web browsers, as well as Node.js. [8] [9] He has also contributed the doctest and timeit modules to the Python standard library. [10]

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. [11] He contributed the chapter on algorithms to the Python Cookbook. [12] 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. [13] He is also a highly ranked contributor to Stack Overflow, mostly for answers relating to Python. [14] [10]

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

On August 7, 2024, Tim Peters was suspended by the Python Steering Council for three months due to alleged violations of the Code of Conduct. [17]

See also

References/Notes and references

  1. 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.
  2. Peters, Tim. "listsort". Python Software Foundation. Retrieved September 7, 2018.
  3. James, Mike (December 21, 2022). "Python Now Uses Powersort". www.i-programmer.info. Retrieved January 24, 2024.
  4. Commit switching to powersort
  5. "[#JDK-6804124] (coll) Replace "modified mergesort" in java.util.Arrays.sort with timsort". JDK Bug System. Retrieved June 11, 2014.
  6. "Class: java.util.TimSort<T>". Android Gingerbread Documentation. Archived from the original on July 16, 2015. Retrieved February 24, 2011.
  7. "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.
  8. V8 release v7.0, Official V8 Blog
  9. Getting things sorted in V8, Official V8 Blog
  10. 1 2 3 "PSF Distinguished Service Awards". Python Software Foundation. Retrieved May 24, 2024.
  11. Peters, Tim. "PEP 20 -- The Zen of Python". Python Software Foundation. Retrieved September 7, 2018.
  12. Martelli, Alex; Ascher, David (2002). Python Cookbook (1st ed.). O'Reilly Media. ISBN   978-0-596-00167-4.
  13. 1 2 "The Happy Medium: Distinguished Service Award Winner Tim Peters". Python Software Foundation. July 18, 2018. Retrieved September 7, 2018.
  14. "Tim Peters". Stack Overflow . Retrieved September 7, 2018.
  15. 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 [...]
  16. Peters, Tim (October 20, 1992). "Livermore Loops coded in C". Netlib . University of Tennessee and Oak Ridge National Laboratory . Retrieved September 6, 2018.
  17. Claburn, Thomas (August 9, 2024). "Core Python developer suspended for three months".


Related Research Articles

<span class="mw-page-title-main">Merge sort</span> Divide and conquer sorting algorithm

In computer science, merge sort is an efficient, general-purpose, and comparison-based sorting algorithm. Most implementations produce a stable sort, which means that the relative order of equal elements is the same in the input and output. Merge sort is a divide-and-conquer algorithm that was invented by John von Neumann in 1945. A detailed description and analysis of bottom-up merge sort appeared in a report by Goldstine and von Neumann as early as 1948.

<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.

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 or compiled in another one. An FFI is often used in contexts where calls are made into a binary dynamic-link library.

<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.

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 GNU General Public License 2 with a linking exception, preventing components that linked to the Java Class Library becoming subject to the terms of the GPL license. OpenJDK is the official reference implementation of Java SE since version 7, and is the most popular distribution of the JDK.

<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 has been Python's standard sorting algorithm since version 2.3, 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".