<commit_before><!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <style>
      body {
        margin: 3em auto;
        max-width: 960px;
        background-color: white;
        color: #221c22;
        font: 110%/1.5em sans-serif;
      }
      .container {
        padding: 0 10px;
      }
      .bookcover {
        float: right;
        padding-left: 20px;
      }
      .booktitle {
        font-size: 2.5em;
        font-weight: bold;
        line-height: 1.2em;
      }
      .authors {
        font-style: italic;
        margin-top: 0.75em;
        margin-left: 3px;
        font-size: 90%;
      }
      .publisher {
        margin-bottom: 2.5em;
        margin-left: 3px;
        font-size: 90%;
      }
      p.summary {
        margin: 1em 0 2em 0;
      }
      .sectionheading {
        color: #4b2538;
        margin-top: 1.75em;
        font-weight: bold;
        font-size: 1.75em;
        margin-bottom: 0.5em;
      }
      dl {
        background-color: #fffff2;
        padding-left: 3px;
      }
      dt {
        margin-top: 10px;
        font-weight: bold;
        color: #600;
      }
      dd {
        font-style: italic;
      }
      ul li {
        color: #a20841;
      }
      ul li span {
        color: #221c22;
      }
      a:link {
        color: #221c62;
      }
      a:visited {
        color: #9488ff;
      }
      a img {
        border-style: none;
      }
      #bottomline {
        text-align: center;
      }
      .errata-item, ol.exercises > li {
        margin-top: 2.5em;
        padding-top: 0.5em;
        border-top: 2px solid #fcb814;
      }
      ol.exercises > li > ol > li {
        list-style-type: lower-alpha;
      }
      pre {
        margin-left: 40px;
        font-family: "Lucida Console", "Courier New", monospace;
        line-height: 1.2em;
        letter-spacing: -0.2ex;
      }
      code, pre.prettyprint {
        font-family: "Lucida Console", "Courier New", monospace;
        font-size: 90%;
        background-color: #e4f3ff;
      }
      .console {
        white-space: pre;
        font-family: "Lucida Console", "Courier New", monospace;
        background-color: #002;
        color: white;
        padding: .75em  .75em .75em 1em;
      }
      .console kbd {
        font-family: inherit;
        color: yellow;
        font-weight: 600;
      }
    </style>
  </head>

  <body>
    <div class="container">
      <div class="bookcover">
        <a href=""><img src="resources/book-cover.png" alt="book cover"
        style="border:1px solid #4b2538"></a>
      </div>

      <div class="booktitle">Programming Language Explorations</div>

      <div class="authors">
        <a href="http://cs.lmu.edu/~ray/"><NAME>,</a>
        <a href="http://www.lmu.edu/">Loyola Marymount University</a>
        <br>
        <NAME>,
        <a href="http://www.pandora.com/about">Pandora</a>
        <br>
        <NAME>,
        <a href="https://www.microsoft.com/en-us/about/">Microsoft</a>
        <br>
        <NAME>,
        <a href="http://www.jpl.nasa.gov/">Jet Propusion Laboratory</a>
      </div>
      <div class="publisher">
        &copy; 2017 <a href="https://www.crcpress.com/">CRC Press</a>
      </div>

      <p class="summary">This text covers all the usual programming language
      concepts, including binding, scope, typing, parameterization, modularity, concurrency,
      and meta&shy;programming, not via a dry summary of each concept, but rather
      within the context of whole-language overviews with plenty of runnable
      example scripts. We aim to help developers learn a bit of theory, and
      introduce students to a number of modern languages. All of the source
      code for the book&rsquo;s examples, as well as number of bonus scripts,
      can be found in <a href="https://github.com/rtoal/ple">this GitHub
      repository</a>.</p>

      <div class="sectionheading">Brief Contents</div>

      <dl>
        <dt>Chapter 0 Introduction
        <dd>A little on why the study of languages is fun and some hints about
        what&rsquo;s coming up in the rest of the book.

        <dt>Chapter 1 JavaScript
        <dd>A tour of one of the world&rsquo;s most popular languages, introducing
        assignment, references, shallow and deep copies, null and undefined, weak
        typing, assertions, anonymous and higher-order functions, stack frames,
        closures, static vs. dynamic scope, shallow vs. deep binding,
        methods, prototypes, and asynchronous programming with both
        callbacks and promises.

        <dt>Chapter 2 CoffeeScript
        <dd>A tour of a language that compiles to JavaScript, or as is sometimes
        said, <em>is</em> JavaScript&mdash;though with an alternate syntax
        (with a <em>lot</em> less clutter). We&rsquo;ll take a first look at
        destructuring and existential operators, and look at a very interesting
        design decision that avoids shadowing almost everywhere.

        <dt>Chapter 3 Lua
        <dd>A tour of lightweight scripting language ...

        <dt>Chapter 4 Python
        <dd>where we

        <dt>Chapter 5 Ruby
        <dd>where we

        <dt>Chapter 6 Julia
        <dd>where we

        <dt>Chapter 7 Java
        <dd>where we

        <dt>Chapter 8 Clojure
        <dd>where we

        <dt>Chapter 9 Elm
        <dd>where we

        <dt>Chapter 10 Erlang
        <dd>where we

        <dt>Chapter 11 Go
        <dd>where we

        <dt>Chapter 12 Swift
        <dd>where we

        <dt>Chapter 13 Additional Languages
        <dd>Brief looks at Fortran, COBOL, Lisp, Algol, Simula, Smalltalk, C,
        C++, Rust, CLU, Ada, C#, Scala, Bash, Perl, Standard ML, OCaml, Haskell,
        F#, Idris, ParaSail, Chapel, Elixir, PHP, Hack, TypeScript, Dart, APL,
        Prolog, K, Io, Factor, Brainfuck, Befunge, LOLCODE, and nasm (an assembly
        language for the x86 architecture).

        <dt>Chapter 14 Afterword
        <dd>A review of language concepts in a Socratic fashion.

        <dt>Appendix A Numbers
        <dd>Encodings of fixed-size integers and IEEE-754 floating point numbers.

        <dt>Appendix B Text
        <dd>All you need to know about Unicode (including what extended
        grapheme clusters are, and how exactly UTF-8 works), and a
        little bit more.
      </dl>

      <div class="sectionheading">Good to Know</div>

      <p>This book is not for beginning programmers. We&rsquo;re assuming you
      know at least two languages pretty well, and hopefully a couple more.
      You should know the basic concepts surrounding variables, expressions,
      operators, functions, and basic data structures, and have experience
      writing nontrivial applications&mdash;this book is a <em>tour</em>, not a
      <em>tutorial</em>. We cover many interesting (and often powerful) features,
      and <strong>purposely do so with code that is often very dense and sometimes
      cryptic, even when presenting unfamiliar paradigms for the first
      time</strong>.</p>

      <p>Most of the code examples are written as their own unit tests,
      which should help you learn the concepts as you read the code itself.
      We favor this style over comments, which, you know, can become
      stale and misleading.
      <a href="http://www.kyleblaney.com/software-blog/2012/6/29/comments-are-a-failure.html">Uncle
      Bob tells us why comments are not &ldquo;pure good.&rdquo;</a></p>


      <div class="sectionheading">Additional Resources</div>

      <p>We&rsquo;ve put all of our examples, and unit tests galore, on
      <a href="https://github.com/rtoal/ple">GitHub</a>, of course.
      The repo contains pointers to additional resources for each of the
      programming languages covered. See something wrong or want to
      add anything? Send us a pull request.</p>

      <div class="sectionheading">Errata</div>

      <p>Please let us know if you find anything.
      Email one of the authors or submit a pull request for this file.</p>

      <div class="sectionheading">Additional Exercises</div>

      <p>The text features 300 exercises, most of which are &ldquo;further
      explorations&rdquo; in which you find or install a language interpreter,
      investigate aspects of the language not covered in the chapter proper,
      muse about language designers&rsquo; intents, and try your hand at
      both large and small programming tasks. If you would like to contribute
      additional exercises, submit a pull request for this file.

      <div id="bottomline">
        <img src="resources/ada-logo-24.png">
        <img src="resources/apl-logo-24.png">
        <img src="resources/bash-logo-24.png">
        <img src="resources/c-logo-24.png">
        <img src="resources/ceylon-logo-24.png">
        <img src="resources/chapel-logo-24.png">
        <img src="resources/clojure-logo-24.png">
        <img src="resources/coffeescript-logo-24.png"><commit_msg>Progress on the main page<commit_after><!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <style>
      body {
        margin: 3em auto;
        max-width: 960px;
        background-color: white;
        color: #221c22;
        font: 110%/1.5em sans-serif;
      }
      .container {
        padding: 0 10px;
      }
      .bookcover {
        float: right;
        padding-left: 20px;
      }
      .booktitle {
        font-size: 2.5em;
        font-weight: bold;
        line-height: 1.2em;
      }
      .authors {
        font-style: italic;
        margin-top: 0.75em;
        margin-left: 3px;
        font-size: 90%;
      }
      .publisher {
        margin-bottom: 2.5em;
        margin-left: 3px;
        font-size: 90%;
      }
      p.summary {
        margin: 1em 0 2em 0;
      }
      .sectionheading {
        color: #4b2538;
        margin-top: 2em;
        font-weight: bold;
        font-size: 1.75em;
        margin-bottom: 1em;
      }
      dl {
        background-color: #fffff2;
        padding-left: 3px;
      }
      dt {
        margin-top: 10px;
        font-weight: bold;
        color: #600;
      }
      dd {
        font-style: italic;
      }
      ul li {
        color: #a20841;
      }
      ul li span {
        color: #221c22;
      }
      a:link {
        color: #221c62;
      }
      a:visited {
        color: #9488ff;
      }
      a img {
        border-style: none;
      }
      #bottomline {
        border-top: 2px solid #ffa0e4;
        margin-top: 40px;
        padding: 20px 50px 0 50px;
        text-align: center;
      }
      .errata-item, ol.exercises > li {
        margin-top: 2.5em;
        padding-top: 0.5em;
        border-top: 2px solid #fcb814;
      }
      ol.exercises > li > ol > li {
        list-style-type: lower-alpha;
      }
      pre {
        margin-left: 40px;
        font-family: "Lucida Console", "Courier New", monospace;
        line-height: 1.2em;
        letter-spacing: -0.2ex;
      }
      code, pre.prettyprint {
        font-family: "Lucida Console", "Courier New", monospace;
        font-size: 90%;
        background-color: #e4f3ff;
      }
      .console {
        white-space: pre;
        font-family: "Lucida Console", "Courier New", monospace;
        background-color: #002;
        color: white;
        padding: .75em  .75em .75em 1em;
      }
      .console kbd {
        font-family: inherit;
        color: yellow;
        font-weight: 600;
      }
    </style>
  </head>

  <body>
    <div class="container">
      <div class="bookcover">
        <a href=""><img src="resources/book-cover.png" alt="book cover"
        style="border:1px solid #4b2538"></a>
      </div>


      <div class="booktitle">Programming Language Explorations</div>
      <div class="authors">
        <a href="http://cs.lmu.edu/~ray/"><NAME>,</a>
        <a href="http://www.lmu.edu/">Loyola Marymount University</a>
        <br>
        <NAME>,
        <a href="http://www.pandora.com/about">Pandora</a>
        <br>
        <NAME>,
        <a href="https://www.microsoft.com/en-us/about/">Microsoft</a>
        <br>
        <NAME>,
        <a href="http://www.jpl.nasa.gov/">Jet Propusion Laboratory</a>
      </div>
      <div class="publisher">
        &copy; 2017 <a href="https://www.crcpress.com/">CRC Press</a>
      </div>

      <p class="summary">This text covers all the usual programming language
      concepts, including binding, scope, typing, parameterization, modularity, concurrency,
      and meta&shy;programming, not via a dry summary of each concept, but rather
      within the context of whole-language overviews with plenty of runnable
      example scripts. We aim to help developers learn a bit of theory, and
      introduce students to a number of modern languages. All of the source
      code for the book&rsquo;s examples, as well as number of bonus scripts,
      can be found in <a href="https://github.com/rtoal/ple">this GitHub
      repository</a>.</p>


      <div class="sectionheading">Contents</div>

      <dl>
        <dt>Chapter 0 Introduction
        <dd>A little on why the study of languages is fun and some hints about
        what&rsquo;s coming up in the rest of the book.

        <dt>Chapter 1 JavaScript
        <dd>A tour of one of the world&rsquo;s most popular languages, introducing
        assignment, references, shallow and deep copies, null and undefined, weak
        typing, assertions, anonymous and higher-order functions, stack frames,
        closures, static vs. dynamic scope, shallow vs. deep binding,
        methods, prototypes, and asynchronous programming with both
        callbacks and promises.

        <dt>Chapter 2 CoffeeScript
        <dd>A tour of a language that compiles to JavaScript, or as is sometimes
        said, <strong>is</strong> JavaScript&mdash;though with an alternate syntax
        (you&rsquo;ll notice a <em>lot</em> less clutter). We take a first
        look at destructuring and existential operators, and explore a very
        interesting design decision that avoids shadowing almost everywhere.

        <dt>Chapter 3 Lua
        <dd>A tour of the well-loved lightweight scripting language behind
        World of Warcraft and Angry Birds (among others), introducing
        some new types, an approach to errors that avoids exceptions,
        and a unification of arrays and dictionaries known as the table.
        We also see metatables, which provide both differential inheritance
        and operator overloading, and see coroutines for the first time.

        <dt>Chapter 4 Python
        <dd>Our first language with a sophisticated type system, where types
        are objects within the language, and in which the programmer can
        define new types. This chapter introduces supertype-subtype
        relationships, multiple inheritance, keyword arguments,
        pass-by-sharing, special methods, iterators and generators,
        and decorators.

        <dt>Chapter 5 Ruby
        <dd>Object-orientation and much more within an overview of the language
        billed as &ldquo;A programmer&rsquo;s best friend.&rdquo; We define
        messaging, encapsulation, inheritance, and polymorphism, and look
        at access controls, and singleton classes. Ruby&rsquo;s blocks and
        mixins bring up some new issues, as does the langauge&rsquo;s extensive
        metaprogramming capabilities.

        <dt>Chapter 6 Julia
        <dd>TODO

        <dt>Chapter 7 Java
        <dd>Our first statically-typed language TODO

        <dt>Chapter 8 Clojure
        <dd>TODO

        <dt>Chapter 9 Elm
        <dd>TODO

        <dt>Chapter 10 Erlang
        <dd>TODO

        <dt>Chapter 11 Go
        <dd>TODO

        <dt>Chapter 12 Swift
        <dd>TODO

        <dt>Chapter 13 Additional Languages
        <dd>Brief looks at Fortran, COBOL, Lisp, Algol, Simula, Smalltalk, C,
        C++, Rust, CLU, Ada, C#, Scala, Bash, Perl, Standard ML, OCaml, Haskell,
        F#, Idris, ParaSail, Chapel, Elixir, PHP, Hack, TypeScript, Dart, APL,
        Prolog, K, Io, Factor, Brainfuck, Befunge, LOLCODE, and nasm (an assembly
        language for the x86 architecture).

        <dt>Chapter 14 Afterword
        <dd>A review of language concepts in a Socratic fashion.

        <dt>Appendix A Numbers
        <dd>Encodings of fixed-size integers and IEEE-754 floating point numbers.

        <dt>Appendix B Text
        <dd>All you need to know about Unicode (including what extended
        grapheme clusters are, and how exactly UTF-8 works), and a
        little bit more.
      </dl>


      <div class="sectionheading">Good to Know</div>

      <p>This book is not for beginning programmers. We assume you
      know at least two languages pretty well, and hopefully a couple more.
      You should know the basic concepts surrounding variables, expressions,
      operators, functions, and basic data structures, and have experience
      writing nontrivial applications&mdash;this book is a <em>tour</em>, not a
      <em>tutorial</em>. We cover many interesting (and often powerful) features,
      and <strong>purposely do so with code that is often very dense and sometimes
      cryptic, even when presenting unfamiliar paradigms for the first
      time</strong>.</p>

      <p>Most of the code examples are written as their own unit tests,
      which should help you learn the concepts as you read the code itself.
      We favor this style over excessive comments, which, you know, can become
      stale and misleading.
      <a href="http://www.kyleblaney.com/software-blog/2012/6/29/comments-are-a-failure.html">Uncle
      Bob tells us why comments are not &ldquo;pure good.&rdquo;</a></p>


      <div class="sectionheading">Additional Resources</div>

      <p>We&rsquo;ve put all of our examples, and unit tests galore, on
      <a href="https://github.com/rtoal/ple">GitHub</a>, of course.
      The repo contains pointers to additional resources for each of the
      programming languages covered. See something wrong or want to
      add anything? Send us a pull request.</p>


      <div class="sectionheading">Errata</div>

      <p>Please let us know if you find anything.
      Email one of the authors or submit a pull request for this file.</p>


      <div class="sectionheading">Additional Exercises</div>

      <p>The text features 300 exercises, most of which are &ldquo;further
      explorations&rdquo; in which you find or install a language interpreter,
      investigate aspects of the language not covered in the chapter proper,
      muse about language designers&rsquo; intents, and try your hand at
      both large and small programming tasks. If you would like to contribute
      additional exercises, submit a pull request for this file.


      <div id="bottomline">
        <img src="resources/ada-logo-24.png">
        <img src="resources/apl-logo-24.png">
        <img src="resources/bash-logo-24.png">
        <img src="resources/c-logo-24.png">
        <img src="resources/ceylon-logo-24.png">
        <img src="resources/chapel-logo-24.png">
        <img src="resources/clojure-logo-24.png">
        <img src="resources/coffeescript-logo-24.png">
{'fraction_non_alphanumeric': 0.09921752738654147, 'fraction_numerical': 0.018309859154929577, 'mean_word_length': 2.212837271660801, 'pattern_counts': {'":': 0, '<': 245, '<?xml version=': 0, '>': 253, 'https://': 8, 'lorem ipsum': 0, 'www.': 12, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1811492', 'n_tokens_mistral': 6077, 'n_tokens_neox': 5534, 'n_words': 1915}