{"id":1840,"date":"2024-06-07T17:06:12","date_gmt":"2024-06-07T17:06:12","guid":{"rendered":"https:\/\/cppdepend.com\/blog\/?p=1840"},"modified":"2024-06-12T10:15:38","modified_gmt":"2024-06-12T10:15:38","slug":"back-60-years-ago-marked-the-rise-of-the-ancestor-of-c-c-thanks-to-martin-richards","status":"publish","type":"post","link":"https:\/\/cppdepend.com\/blog\/back-60-years-ago-marked-the-rise-of-the-ancestor-of-c-c-thanks-to-martin-richards\/","title":{"rendered":"Back 60 years ago marked the rise of the ancestor of C\/C++, thanks to Martin Richards."},"content":{"rendered":"\n<p>Do you know with which programming language this code is written:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Hello world demo\nget \"streams.d\"\nexternal\n&#91;\nWs\n]\n\nlet Main() be\n&#91;\nWs(\"Hello World!*N\")\n]<\/code><\/pre>\n\n\n\n<p>It&#8217;s the BCPL programming language . BCPL (Basic Combined Programming Language) is a foundational language in the history of programming languages. Developed by Martin Richards in 1966, BCPL\u2019s simplicity, typeless nature, and portability were key features that influenced the design of many subsequent languages, including B and C. Its impact is particularly notable in the development of system software and compilers, making it a critical step in the evolution of programming languages.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Here are some resemblances with C:<\/p>\n\n\n\n<p>1- \/\/ for comments<\/p>\n\n\n\n<p>2- get &#8220;stream.d&#8221;  equivalent to #include<\/p>\n\n\n\n<p>3- external to declare external functions<\/p>\n\n\n\n<p>4- define functions with a scope<\/p>\n\n\n\n<p>5- using *N for line return <\/p>\n\n\n\n<p>BCPL was the first programming language for the Xerox Alto, The IDE was <em>Bravo<\/em>, the first WYSIWYG text editor. The Xerox Alto is the legendary minicomputer from 1973 that helped set the direction for personal computing. <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Seminal Xerox Alto arrives for restoration\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/YupOC_6bfMI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>BCPL (Basic Combined Programming Language) is an influential programming language that played a crucial role in the development of many subsequent languages, including B and ultimately C. Here\u2019s a detailed overview of BCPL:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key Features and Characteristics<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Typeless Language<\/strong>: BCPL is a typeless language, meaning that it does not have explicit data types. All data is treated as machine words, and the type is determined by how the data is used.<\/li>\n\n\n\n<li><strong>Simplicity<\/strong>: The language was designed to be simple, with a small set of constructs and operations, making it easy to write compilers and other tools.<\/li>\n\n\n\n<li><strong>Portability<\/strong>: One of the key goals of BCPL was to facilitate the writing of portable software. The language was designed to be easily implemented on different hardware platforms.<\/li>\n\n\n\n<li><strong>Influential Syntax<\/strong>: BCPL&#8217;s syntax influenced many later programming languages. For example, the use of curly braces <code>{}<\/code> for block structuring was adopted by languages such as B, C, and C++.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Syntax and Constructs<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Control Structures<\/strong>: BCPL includes standard control structures like loops (<code>FOR<\/code>, <code>WHILE<\/code>), conditionals (<code>IF<\/code>, <code>SWITCH<\/code>), and block structuring with braces <code>{}<\/code>.<\/li>\n\n\n\n<li><strong>Procedures<\/strong>: Functions in BCPL are called &#8220;procedures,&#8221; which can be defined and called with parameters.<\/li>\n\n\n\n<li><strong>Compilation<\/strong>: BCPL programs are typically compiled into an intermediate form called O-code (Object code), which can then be executed by an O-code interpreter. This approach enhances portability.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Impact and Legacy<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Influence on B and C<\/strong>: BCPL directly influenced the development of the B programming language by Ken Thompson. B, in turn, was the precursor to C, developed by Dennis Ritchie. Many of the syntactic elements and the philosophy of simplicity and portability were carried from BCPL through B to C.<\/li>\n\n\n\n<li><strong>UNIX<\/strong>: The development of UNIX at Bell Labs initially used assembly language, but the concepts from BCPL influenced the development of B and later C, which became the primary language for UNIX.<\/li>\n\n\n\n<li><strong>Teaching and Research<\/strong>: BCPL was widely used in academic settings for teaching compiler construction and systems programming. Its simplicity made it an excellent tool for understanding the principles of language design and implementation.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Summary<\/h3>\n\n\n\n<p>BCPL (Basic Combined Programming Language) is a foundational language in the history of programming languages. Developed by Martin Richards in 1966, BCPL\u2019s simplicity, typeless nature, and portability were key features that influenced the design of many subsequent languages, including B and C. Its impact is particularly notable in the development of system software and compilers, making it a critical step in the evolution of programming languages.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do you know with which programming language this code is written: It&#8217;s the BCPL programming language . BCPL (Basic Combined Programming Language) is a foundational language in the history of programming languages. Developed by Martin Richards in 1966, BCPL\u2019s simplicity, typeless nature, and portability were key features that influenced the design of many subsequent languages, &hellip; <a href=\"https:\/\/cppdepend.com\/blog\/back-60-years-ago-marked-the-rise-of-the-ancestor-of-c-c-thanks-to-martin-richards\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Back 60 years ago marked the rise of the ancestor of C\/C++, thanks to Martin Richards.&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[577,580,579,589,598,593,574,578,586,584,591,18,596,599,576,595,575,588,582,592,590,583,597,581,594,587,585],"class_list":["post-1840","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ancestor-of-c-c","tag-bcpl-and-c-similarities","tag-bcpl-features","tag-bcpl-influence-on-b-and-c","tag-bcpl-legacy","tag-bcpl-o-code","tag-bcpl-programming-language","tag-bcpl-syntax","tag-bravo-text-editor","tag-compilers","tag-control-structures-in-bcpl","tag-cppdepend","tag-dennis-ritchie","tag-foundational-programming-languages","tag-history-of-programming-languages","tag-ken-thompson","tag-martin-richards","tag-personal-computing-history","tag-portable-programming-languages","tag-procedures-in-bcpl","tag-programming-language-evolution","tag-system-software-development","tag-teaching-programming-languages","tag-typeless-programming-language","tag-unix-development","tag-wysiwyg-editor","tag-xerox-alto"],"_links":{"self":[{"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/posts\/1840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/comments?post=1840"}],"version-history":[{"count":7,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/posts\/1840\/revisions"}],"predecessor-version":[{"id":1886,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/posts\/1840\/revisions\/1886"}],"wp:attachment":[{"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/media?parent=1840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/categories?post=1840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cppdepend.com\/blog\/wp-json\/wp\/v2\/tags?post=1840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}