Language can be used for multiple purposes: we can use language to evoke emotion; we can use language to command; we can use language to instruct, or entertain, or criticize. In every case, our words paint pictures. When we speak, most listeners are not internally diagramming our sentences in order to make use of the words. We do have a degree of expectation when it comes to grammatical correctness, but the more important part is the conveying of ideas.
My theory is this: individuals have a certain amount of state built up in their minds about the world around them. Incoming language is used to change that state, either by adding to it, taking from it, or changing some aspect of it. Furthermore, individual elements of that state may be, and often are, related. To know that as of 20 January 2009, the President of the United States of America was Barack Obama, implicit in that piece of information is the additional information that George W. Bush was no longer President, and that Mr. Obama was no longer a Senator for the state of Illinois, assuming that one’s previous state included information about these individuals’ previous offices and how United States government operates.
For a computer system, then, to be able to have a useful understanding of language, one possible design would be an array of informational state about the world, and the ability to consume language utterances that change that state. Some understanding of grammar would be required, but the ability to overlook grammatical flaws and to make best-guesses about sentence meaning when the grammar used is unknown would also be critical.
Inferring at least partial meaning of new words and phrases based on context would also be important. For example, if the information state included the name “Barack Obama”, the ability to understand that “Barack Hussein Obama” refers to the same person, even if the middle name was previously unknown. To wit, understanding that a person’s name can have different configurations or even aliases would be important.
A fair question would be, how much of the information state would need to be pre-programmed, versus how much would be “learned” as the system ran? Ideally, as much as possible would be “learned” automatically, but just as with people learning language, there would times when new concepts would need to be specifically taught, based upon existing concepts.
In this regard, the system would operate similar to growing a language, or, bottom-up programming.
Posted in Linguistics, Programming, Research on
12 May 2009
A new release of The GNU C Reference Manual is now available. This v0.2 release includes bug fixes on the C89 material, along with partial coverage of C99 and GNU C extensions.
Still more material to write and edit, but more frequent incremental releases seem like a good idea…
Posted in Programming on
15 April 2009
A new version of The Almond Emulator is now available in the Apple iTunes store. This release adds an option for chocolate-covered almonds!
Download a copy today! Better yet, download a thousand!
Posted in Programming on
12 March 2009
My newest iPhone program, a utility for timing music arrangements, is now available on the Apple iTunes Store.
The idea for this program came about because I found the formulas for such calculations to not be very memorable, and I personally wanted a program to crunch the numbers in this area.
Buy one today! Better yet, buy a thousand!
Posted in Music, Programming on
24 February 2009
In August 2008, I applied to the Apple iPhone Developer Program under the name of my software consulting company. I went weeks without hearing back from Apple, but finally got a request to send them, via fax, proof of my company’s legal existence, such as the company name registration. I got that faxed to them within a few days.
Several weeks after that, I received a voicemail message from someone at Apple concerning my application, with instructions to call back at a certain phone number. I dialed that number many times over a period of weeks, but it was constantly busy.
At the recommendation of a friendly stranger on the internet, I wrote my initial application off as lost in never-never land, created a new account at apple.com and applied again, this time as an individual developer rather than a company. My application was immediately approved.
The several months I spent waiting for my application process to go through I opted to not use for learning the iPhone SDK and getting my first application ready, because if I never got into the developer program I wouldn’t be able to distribute my software and didn’t want to waste the time. So now that I was accepted into the program, I had a nice learning curve ahead of me.
I dabbled in several application ideas, mostly getting nowhere. Finally, to help motivate myself by getting something accomplished, I remembered one of the first Java applets I wrote some eleven years earlier: the Almond Emulator! This was a little program that I cooked up to introduce myself to Java GUI development, inspired by a magnet advertising the Almond Board of California which arrived in the mail for reasons not sufficiently investigated.
Armed with stock photography from iStockPhoto.com, I assembled an iPhone version of this nearly useless utility. My original plan was to release it to the Apple iTunes store for free, but given the plethora of similarly useless programs that were making a good bit of money, I ultimately listed it for sale at the lowest possible amount (99 cents, in United States currency). The program provides marginal value, but people pay more than 99 cents for things like clown noses and cans of spring-loaded snakes, and I figured that my program was in the same general category.
Less than four business days after submitting it to the iTunes store, the program was approved and available for purchase, and started selling immediately. One kind user even gave the program a five-star review, stating that it’s humorous, but “not worth the money.”
One of the principles of good business is to offer your product at a fair price. I have other more useful iPhone applications in the queue that I quite solidly intend to sell for money, but in this case I accepted this reviewer’s constructive criticism and changed the Almond Emulator to be a free download.
So I am now a real, live iPhone developer. As far as I am aware, this may well be the easiest way for a programmer to put a software product out in the marketplace and get payment in exchange for their work.
Posted in Programming on
7 February 2009