Quality: Natural (English-like, Fluent)
A scripting language that is close to a natural language (such as English) is the central goal of Intuitive Programming. Natural language is inherently readable by anyone literate in that language, and is also more natural to write. Being close to spoken language shortens the learning curve for anyone new to the language. The underlying concepts of the language must still be learned but the stumbling blocks of syntax, terminology, and special symbols are greatly reduced.
Factors that contribute to natural language include:
Familiar: An intuitive language should use terms and concepts that are familiar to people. Common words and symbols should have their usual meaning. Special symbols with arbitrary meanings that must be learned should be kept to a minimum.
Forgiving: An intuitive language is forgiving of minor variations that feel natural and appear harmless to a person, such as uppercase versus lowercase, or the use of alternative prepositions such as 'in' or 'of'.
Feedback: A friendly language provides helpful error messages when something goes wrong.
A scripting language that is close to natural language aids reading and comprehension of a script, learning the language, maintaining existing scripts, and writing of scripts.
A familiar, forgiving language that provides clear feedback is easier to write and learn, and more natural and intuitive for a person to use.
English-like: The ability to create readable scripts is one of the core goals of SenseTalk. This is achieved through an English-like syntax that favors the use of ordinary words over special symbols. Many commands and expressions provide the ability to use natural-sounding phrases.
Familiar: Terms and symbols have familiar meanings. The symbol "%" means percent. Numbers can be expressed as words. Chunk expressions refer to portions of text with familiar terms (word, line, character). Predefined variables enable using common words for many symbols. Commands often read like sentences.
Forgiving: Variable names, property names, and comparisons are case-insensitive (comparisons can be case-sensitive if needed). All types of containers (variables, files, global properties) can be treated alike, using the same commands and operators. Single words can be used as unquoted literals.
set weeklyWages to hoursWorked times hourlyRate
add weeklyWages to totalEarnings
if totalEarnings is between 50 thousand and 90 thousand then set raise to 5 percent
if the length of title is more than 30 then put "…" into characters 31 to last of title
delete every comma in sentence
replace every semicolon in sentence with comma
set newRate to oldRate plus five percent
if "Aardvark" comes before "Zebra" then …
if count is a multiple of 10 then …
if the time is past "5:00 pm" as time then calculateOvertime
set price to (oldPrice + 3%) rounded to 2 places
put the second line of priceTable into widgetPrices
if it isn't a number then ask "Please enter a number"
get the offset of "<foo>" in source after previousLocation
set the third item of customerInfo to empty