Intypographyandcomputing,characters per line(CPL) orterminal widthrefers to the maximal number ofmonospacedcharacters that may appear on a singleline.It is similar toline lengthintypesetting.

History

edit
The ruler on the carriage of anOlivetti Lettera 22.This typewriter can print only 87 characters in a line

The limit of the line length in 70–80 characters may well have originated from various technical limitations of various equipment. The Americanteletypewriterscould type only 72 CPL, while the British ones even less, 70 CPL.[1]In the era oftypewriters,most designs of the typewriter carriage were limited to 80–90 CPL. Standard paper sizes, such as the international standardA4,also impose limitations on line length: using the US standardLetter paper size (8.5×11 "),it is only possible to print a maximum of 85 or 102 characters (with the font size either 10 or 12characters per inch) without margins on the typewriter. With various margins – usually from 1–1.5 inches (25–38 mm) for each side, but there is no strict standard – these numbers may shrink to 55–78 CPL.

Typometerwith the characters per line scales
AFortrancoding form (paper). Source code has 72 CPL, but a form is 80-characters wide. Last 8 positions are "identification sequence"

In computer technology, a line of an IBMpunched cardconsisted of 80 characters. Widespread computer terminals such as DEC'sVT52andVT100mostly followed this standard, showing 80 CPL and 24 lines. This line length was carried over into the original 80×25text modeof theIBM PC,along with its clones and successors. To this day, virtual terminals most often display 80×24 characters.

The "long" line of 132 CPL comes from mainframes'line printers.[2][3][4]However, some printers or printing terminals could print as many as 216 CPL, given certain extra-wide paper sizes and/or extra-narrow font sizes.[5]

In modern computing

edit

With the advent of desktop computing and publishing, and technologies such asTrueTypeused inword processingandweb browsing,a uniform CPL has been made mostly obsolete.HTML(and some other modern text presentation formats) uses dynamicword wrappingwhich is more flexible than characters per line restriction and may produce a text block with non-rectangular shape, just like in papertypesetting.

Manyplain textdocuments still conform to 72 CPL out of tradition (e.g.,RFC678).

In programming

edit

Manystyle guidesforcomputer programmingdefine the maximum or desirable number of characters in a line ofsource code:

Characters per line Programming style
72 Ada[6]

Agda[7]

79 Python[8][9]
80
88 Python, TheBlackcode style[24]
90 CCM4[25]
100 Android[26]

Common Lisp[27][28]

GoogleJava[29]

Rust (rustfmt default)[30]

102 Racket[31]
120 PHP[21]
132 Fortran[32](until 2023)[33]

Blink[34]

Moodle[35]

140 Puppet[36]
180 Mono[37]
undefined Go[38]

JavaScript(JavaScript has no official style guide)

With the increasing common use of larger widescreen monitors, some of these limits have been relaxed, as in the Linux kernel[39]and FreeBSD.[40]

See also

edit

References

edit
  1. ^Department of the Army, ed. (1947).Teletypewriter Circuits and Equipment (fundamentals).Washington: US Government Printing Office. p. 69.
  2. ^Pomerantz, Ori; Vander Weele, Barbara; Nelson, Mark; et al., eds. (2008).Mainframe Basics for Security Professionals.IBM Press.ISBN9780132704342.
  3. ^Wells, April J. (2003).Oracle 11i E-Business Suite from the Front Lines.CRC Press. p. 168.ISBN9780203508961.
  4. ^"Difference between..LRECL = 133 and LRECL = 132".IBMMAINFRAMES - IBM Mainframe Support Forums.2004.
  5. ^"Appendix K. Traditional Terminals and Printers".Terminals & Printers Handbook 1983–84.Digital. 1983.
  6. ^Ada 95 Quality and Style Guide
  7. ^agda/agda-stdlib: Style guide for the standard library
  8. ^PEP 8 Style Guide for Python Code
  9. ^Style Guide for Python Code
  10. ^GCC Coding Conventions
  11. ^Google C++ Style Guide
  12. ^Chromium Objective-C and Objective-C++ style guide
  13. ^Google Python Style Guide
  14. ^Google's R Style Guide
  15. ^Google JavaScript Style Guide
  16. ^"4.1. Line length".Java Code Conventions(PDF).Sun Microsystems, Inc. 1997. p. 5.
  17. ^"Linux kernel code style as of June 2020".git.kernel.org.Archivedfrom the original on 2020-05-31.Retrieved2020-06-13.
  18. ^"Object Pascal Style Guide".Archived fromthe originalon 2015-07-09.Retrieved2018-03-14.
  19. ^"style(9) - OpenBSD manual pages".Archivedfrom the original on 2016-05-24.Retrieved2024-03-04.All code should fit in 80 columns.
  20. ^Conway, Damian (2005).Perl Best Practices: Standards and Styles for Developing Maintainable Code.O'Reilly. p. 40.ISBN978-0-596-55502-3.
  21. ^abPSR-2: Coding Style Guide
  22. ^The Ruby Style Guide
  23. ^OCaml Programming Guidelines
  24. ^"The Black code style - Black (stable) documentation".black.readthedocs.io.Retrieved2024-06-28.
  25. ^CCM4 self-imposed limit
  26. ^Android Code Style Guidelines for Contributors
  27. ^Common Lisp Style Guide
  28. ^Google Common Lisp Style Guide
  29. ^Google Java Style
  30. ^rustfmt Documentation
  31. ^How to Program Racket: a Style Guide
  32. ^FORTRAN 90
  33. ^Reid, John (2022-03-21),The new features of Fortran 202x(PDF)
  34. ^Blink Coding Style Guidelines
  35. ^Moodle Coding Style
  36. ^Leach, Parker."The Puppet language style guide".puppet.Retrieved2024-06-28.
  37. ^Mono Coding Guidelines
  38. ^Effective Go
  39. ^"The Linux Kernel Deprecates The 80 Character Line Coding Style".phoronix.Retrieved2024-05-31.
  40. ^"⚙ D30255 style: Relax 80 column rule".reviews.freebsd.org.Retrieved2024-05-31.