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] . Peters has refuted the claims that gave raise to the suspension [18] . The episode triggered widespread backslash [19] against the perceived abuses of the enforcement process against Peters, including a call for a vote of no confidence in the Python Steering Council [20] , which was later withdrawn [21] .


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".
  18. "PSF topics". Uncle Timmy’s Public Blog. Retrieved December 2, 2024.
  19. "A mess in the Python community [LWN.net]". lwn.net. Retrieved December 2, 2024.
  20. "Calling for a Vote of No Confidence". Discussions on Python.org. August 21, 2024. Retrieved December 2, 2024.
  21. "Calling for a Vote of No Confidence". Discussions on Python.org. August 23, 2024. Retrieved December 2, 2024.


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.

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.

Apache Harmony is a retired open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the board of directors voted to make Apache Harmony a top-level project. The Harmony project achieved 99% completeness for J2SE 5.0, and 97% for Java SE 6. The Android operating system has historically been a major user of Harmony, although since Android Nougat it increasingly relies on OpenJDK libraries.

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.

<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 that provides a software platform 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.

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, four years before the company was acquired by Oracle Corporation. 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">Allison Randal</span> American computer scientist

Allison Randal is a software developer and author. She was the chief architect of the Parrot virtual machine, a member of the board of directors for The Perl Foundation, a director of the Python Software Foundation from 2010 to 2012, and the chairman of the Parrot Foundation. She is also the lead developer of Punie, the port of Perl 1 to Parrot. She is co-author of Perl 6 and Parrot Essentials and the Synopses of Perl 6. She was employed by O'Reilly Media. From August 2010 till February 2012, Randal was the Technical Architect of Ubuntu at Canonical.

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

<span class="mw-page-title-main">Gerrit (software)</span> Free web-based team code collaboration tool

Gerrit is a free, web-based team code collaboration tool. Software developers in a team can review each other's modifications on their source code using a Web browser and approve or reject those changes. It integrates closely with Git, a distributed version control system.

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.

<span class="mw-page-title-main">Python Conference</span> Annual programming language convention

The Python Conference is the largest annual convention for the discussion and promotion of the Python programming language. It originated in the United States but is also held in more than 40 other countries. It was one of the first computer programming conferences to develop and adhere to a code of conduct. The conference hosts tutorials, demonstrations and training sessions.