title: Asynchronous and Synchronous Terms
body: <p>I'm confused by the term <em>asynchronous</em> when related to programming.  It seems to mean the opposite in programming terms as what it is defined as in the dictionary.  For example, the word <strong><em>synchronous</em></strong> means: </p>
  
  <blockquote>
    <ol>
    <li><p><em>occurring at the same time; coinciding in time; contemporaneous;
    simultaneous.</em></p></li>
    <li><p><em>going on at the same rate and exactly together; recurring together.</em></p></li>
    </ol>
  </blockquote>
  
  <p>Yet, Wikipedia says: </p>
  
  <blockquote>
    <p>"In programming, <strong><em>asynchronous</em></strong> events are those occurring
    independently of the main program flow. Asynchronous actions are
    actions executed in a non-blocking scheme, allowing the main program
    flow to continue processing."</p>
  </blockquote>
  
  <p>Wouldn't something that is "non-blocking" and that allows "the main program flow to continue processing," be synchronized or "occurring at the same time"?  It seems like the term synchronous suggests "non-blocking" and asynchronous, "blocking."  Why do the terms appear to be used in reverse when related to programming, or  does it have something to do with lower-level computing that I don't understand?   </p>
  
  <p>When I use an synchronous AJAX call, I do the following...</p>
  
  <pre><code>$.ajax({
    url: somefile.php,
    async: false,
    success: {
      ...code that gets run on success...
    }
  });
  
  ...code that gets run after the ajax-success code runs...
  </code></pre>
  
  <p>With this, it actually waits for a response before running the rest of the script, it's a blocking action.  Then why is this termed synchronous, when it's not synchronized with any other process, but actually the opposite?         </p>