Mike Cowlishaw

Last updated

Michael Frederic Cowlishaw
Mike Cowlishaw 2005.jpg
Born
Bath, England
NationalityBritish
Alma mater University of Birmingham
Known for Rexx, editors (STET, LEXX), Decimal arithmetic, DPD
AwardsFReng, FIET, FBCS
Scientific career
Fields Computer science
Institutions University of Warwick

Mike Cowlishaw is a visiting professor at the Department of Computer Science at the University of Warwick, and a Fellow of the Royal Academy of Engineering. [1] He is a retired IBM Fellow, and was a Fellow of the Institute of Engineering and Technology, and the British Computer Society. He was educated at Monkton Combe School and the University of Birmingham.

Contents

Career at IBM

Cowlishaw joined IBM in 1974 as an electronic engineer but is best known as a programmer and writer. He is known for designing and implementing the Rexx programming language (1984), [2] [3] his work on colour perception and image processing that led to the formation of JPEG (1985), [4] the STET folding editor (1977), the LEXX live parsing editor with colour highlighting for the Oxford English Dictionary (1985), [5] electronic publishing, SGML applications, the IBM Jargon File IBMJARG (1990), [6] a programmable OS/2 world globe PMGlobe (1993), [7] MemoWiki based on his GoServe Gopher/http server, [8] and the Java-related NetRexx programming language (1997).

He has contributed to various computing standards, including ISO (SGML, COBOL, C, C++), BSI (SGML, C), ANSI (REXX), IETF (HTTP 1.0/RFC 1945), W3C (XML Schema), ECMA (JavaScript/ECMAScript, C#, CLI), and IEEE (754 decimal floating-point). He retired from IBM in March 2010.

Decimal arithmetic

Cowlishaw has worked on aspects of decimal arithmetic; his proposal for an improved Java BigDecimal class (JSR  13) is now included in Java 5.0, and in 2002, he invented a refinement of Chen–Ho encoding known as densely packed decimal encoding. Cowlishaw's decimal arithmetic specification formed the proposal for the decimal parts of the IEEE 754 standard, as well as being followed by many implementations, such as Python and SAP NetWeaver. His decNumber decimal package is also available as open source under several licenses and is now part of GCC, and his proposals for decimal hardware have been adopted by IBM and others. They are integrated into the IBM POWER6 and IBM System z10 processor cores, and in numerous IBM software products such as DB2, TPF (in Sabre), WebSphere MQ, operating systems, and C and PL/I compilers. [9]

Other activities

Cowlishaw wrote an emulator for the Acorn System 1, and collected related documentation. [10] Outside computing, he caved in the UK, New England, Spain, [11] and Mexico [12] and continues to cave and hike in Spain. He is a life member of the National Speleological Society (NSS), wrote articles in the 1970s and 1980s on battery technology and on the shock strength of caving ropes, and designed LED-based caving lamps. [13] His current programming projects include MapGazer. [14] and PanGazer [15]

Publications (primary author)

Related Research Articles

<span class="mw-page-title-main">Binary-coded decimal</span> System of digitally encoding numbers

In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used for a sign or other indications.

<span class="mw-page-title-main">Decimal</span> Number in base-10 numeral system

The decimal numeral system is the standard system for denoting integer and non-integer numbers. It is the extension to non-integer numbers of the Hindu–Arabic numeral system. The way of denoting numbers in the decimal system is often referred to as decimal notation.

<span class="mw-page-title-main">Floating-point arithmetic</span> Computer approximation for real numbers

In computing, floating-point arithmetic (FP) is arithmetic that represents subsets of real numbers using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. Numbers of this form are called floating-point numbers. For example, 12.345 is a floating-point number in base ten with five digits of precision:

IEEE 754-1985 is a historic industry standard for representing floating-point numbers in computers, officially adopted in 1985 and superseded in 2008 by IEEE 754-2008, and then again in 2019 by minor revision IEEE 754-2019. During its 23 years, it was the most widely used format for floating-point computation. It was implemented in software, in the form of floating-point libraries, and in hardware, in the instructions of many CPUs and FPUs. The first integrated circuit to implement the draft of what was to become IEEE 754-1985 was the Intel 8087.

Originally, the word computing was synonymous with counting and calculating, and the science and technology of mathematical calculations. Today, "computing" means using computers and other computing machines. It includes their operation and usage, the electrical processes carried out within the computing hardware itself, and the theoretical concepts governing them.

The IEEE Standard for Floating-Point Arithmetic is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found in the diverse floating-point implementations that made them difficult to use reliably and portably. Many hardware floating-point units use the IEEE 754 standard.

Hexadecimal floating point is a format for encoding floating-point numbers first introduced on the IBM System/360 computers, and supported on subsequent machines based on that architecture, as well as machines which were intended to be application-compatible with System/360.

<span class="mw-page-title-main">C99</span> C programming language standard, 1999 revision

C99 is an informal name for ISO/IEC 9899:1999, a past version of the C programming language standard. It extends the previous version (C90) with new features for the language and the standard library, and helps implementations make better use of available computer hardware, such as IEEE 754-1985 floating-point arithmetic, and compiler technology. The C11 version of the C programming language standard, published in 2011, updates C99.

Chen–Ho encoding is a memory-efficient alternate system of binary encoding for decimal digits.

Signed zero is zero with an associated sign. In ordinary arithmetic, the number 0 does not have a sign, so that −0, +0 and 0 are equivalent. However, in computing, some number representations allow for the existence of two zeros, often denoted by −0 and +0, regarded as equal by the numerical comparison operations but with possible different behaviors in particular operations. This occurs in the sign-magnitude and ones' complement signed number representations for integers, and in most floating-point number representations. The number 0 is usually encoded as +0, but can still be represented by +0, −0, or 0.

Densely packed decimal (DPD) is an efficient method for binary encoding decimal digits.

Extended precision refers to floating-point number formats that provide greater precision than the basic floating-point formats. Extended precision formats support a basic format by minimizing roundoff and overflow errors in intermediate values of expressions on the base format. In contrast to extended precision, arbitrary-precision arithmetic refers to implementations of much larger numeric types using special software.

Decimal floating-point (DFP) arithmetic refers to both a representation and operations on decimal floating-point numbers. Working directly with decimal (base-10) fractions can avoid the rounding errors that otherwise typically occur when converting between decimal fractions and binary (base-2) fractions.

NetRexx is an open source, originally IBM's, variant of the REXX programming language to run on the Java virtual machine. It supports a classic REXX syntax, with no reserved keywords, along with considerable additions to support object-oriented programming in a manner compatible with Java's object model, yet can be used as both a compiled and an interpreted language, with an option of using only data types native to the JVM or the NetRexx runtime package. The latter offers the standard Rexx data type that combines string processing with unlimited precision decimal arithmetic.

<span class="mw-page-title-main">Decimal computer</span> Computer operating on base-10 numbers

A decimal computer is a computer that can represent numbers and addresses in decimal and that provides instructions to operate on those numbers and addresses directly in decimal, without conversion to a pure binary representation. Some also had a variable wordlength, which enabled operations on numbers with a large number of digits.

<span class="mw-page-title-main">LEXX (text editor)</span>

LEXX is a text editor which was possibly the first to use live parsing and colour syntax highlighting. It was written by Mike Cowlishaw of IBM in 1985. The name was chosen because he wrote it as a tool for lexicographers, during an assignment for Oxford University Press's 'New Oxford English Dictionary'. The program ran on mainframes under VM/CMS. LEXX's design was based on several other editors written by the same author augmented by the ability to dynamically parse text and display colour on the new colour terminals that had recently become available. It was programmable using dynamically-loaded compiled commands or using interpreted commands.

In computing, quadruple precision is a binary floating-point–based computer number format that occupies 16 bytes with precision at least twice the 53-bit double precision.

decimal128 is a decimal floating-point computer number format that occupies 128 bits in computer memory. Formally introduced in IEEE 754-2008, it is intended for applications where it is necessary to emulate decimal rounding exactly, such as financial and tax computations.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

In user interface design and software design, the principle of least astonishment (POLA), also known as principle of least surprise, proposes that a component of a system should behave in a way that most users will expect it to behave, and therefore not astonish or surprise users. The following is a corollary of the principle: "If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature."

References

  1. "List of Fellows - Royal Academy of Engineering". Archived from the original on 4 May 2018. Retrieved 3 May 2018.
  2. Cowlishaw, Michael F. (1984). "The design of the REXX language" (PDF). IBM Systems Journal (PDF). 23 (4): 326–335. doi:10.1147/sj.234.0326 . Retrieved 23 January 2014.
  3. "The Man Behind REXX: z/Journal Visits IBM Fellow Mike Cowlishaw". Archived from the original on 5 May 2016. Retrieved 29 April 2016.
  4. Cowlishaw, Michael F. (1985). "Fundamental requirements for picture presentation" (PDF). SID, vol. 26 no. 2. Proceedings of the Society for Information Display. Retrieved 19 April 2015.
  5. Elliott, Jim (6 October 2003). "Description of LEXX". IBM VMARC v-943K. Retrieved 15 April 2015.
  6. Cowlishaw, Michael F. (May 1990). "IBM Jargon and General Computing Dictionary Tenth Edition" (PDF). IBMJARG. Retrieved 15 April 2015.
  7. Leung, Isaac (16 May 2004). "OS/2 eZine Quickies..." OS/2 ezine. Retrieved 15 April 2015.
  8. Cowlishaw, Michael F. "MemoWiki" . Retrieved 19 April 2015.
  9. Cowlishaw, Michael F. (2015) [1981, 2008]. "General Decimal Arithmetic" . Retrieved 2 January 2016.
  10. Cowlishaw, Michael F. (2001). "The Acorn 6502 Microcomputer Kit" . Retrieved 19 April 2015.
  11. "SpeleoGroup". Web pages.
  12. "SpeleoGroup Mexico expedition". Expedition log. 29 January 1979.
  13. "Mike Cowlishaw". Personal web page. 13 March 2015.
  14. "MapGazer - Introduction".
  15. "PanGazer - introduction".