_____ _               _               _____ ____  
 / ____| |             | |             | ____|___ \ 
| (___ | |__   __ _  __| | _____      _| |__   __) |
 \___ \| '_ \ / _` |/ _` |/ _ \ \ /\ / /___ \ |__ < 
 ____) | | | | (_| | (_| | (_) \ V  V / ___) |___) |
|_____/|_| |_|\__,_|\__,_|\___/ \_/\_/ |____/|____/ 

Can programming languages be used for common (spoken) communication?

The actual answer to the question is no, because a programming language is not the same as a communication language. Programming languages are used to convey specific instructions to computers. Communication languages are used to convey ideas between people. People are not computers and computers are not people.

But what's the fun in that?

What follows is the bulk of my original answer to this question as it appeared on [Quora](https://www.quora.com/Can-programming-languages-be-used-for-common-spoken-communication).

This answer is written in Scala.

import conversation.questions._
import conversation.statements._
import conversation.Person

def main(args:Array[String]) {
  val i = new Person("Michael Bryant")
  val you = new Person(args[0])

  val really:Question = new Question {
    question = "Really? Each and every language?"
    surprised = true
    rhetorical = true // Does not wait for a response
  }

  (i ask you)(really)

  val admittance:Statement = new Statement {
    statement = "I mean, technically you could," +
                 "if you're allowed to use strings."
    // Otherwise Kamil Jarzynowski is correct
  }

  (i admitTo you)(admittance)

  val clarification:Statement = new Statement {
    statement = "You could use XML, but it's technically" +
                "a data markup language, not a programming language."
  }

  (i tell you)(clarification)

  val xmlExample = // It's really cool how scala lets you do this
    
      You
      Michael Bryant
      
        
            See, we could have a conversation like this.
        
        
          Surprise
        
        
            Like I said though, XML is markup and
            technically not programming.
        
      
    

  val wantsToSeeXML = (i ask you) (
    new Question {
      question = "Do you want to see an example of using XML?"
    }
  )

  if (wantsToSeeXML)
    (i show you)(xmlExample)

  val noMore:Statement = new Statement {
    statement = "I have nothing more to add to this answer.\n" +
                 "I hope you enjoyed it."
  }

  (i tell you)(noMore)
}