Quality: Deep


Guiding Principle:
People have complex and varying needs. To be as friendly, useful, readable, and intuitive as possible, a language must offer a breadth and depth of functionality that extends its intuitive characteristics into many areas. The ideal language will support a variety of data types and structures at the low end that support common activities. It will also provide many high level operations to support common tasks.

In SenseTalk:
Data structures include lists (arrays), property lists (dictionaries, hash tables), trees (a hybrid of lists and property lists which corresponds to the structure of an XML document), and ranges. Values stored in these data structures can be numbers, text strings, colors, and date/time values. Lists and property lists can contain a mixture of values and be nested to any depth.

SenseTalk's Task Oriented capabilities extend to all of the following areas. These capabilities are implemented in a readable, English-like way that embodies all of the other qualities of People Oriented Programming.

  • Text operations
  • Date and time operations
  • List operations (insert, delete, insert nested, push, pop, pull, sort, sublists)
  • Property list operations (retain, replace, add, remove)
  • Patterns (readable regular expressions)
  • Iterators (lists, ranges, chunks, database queries, custom iterators)
  • Repeat loops of many types (count, duration, sequence, chunks, iterators)
  • Exceptions (try/catch, throw)
  • Flow control (next repeat, exit repeat, pass message)
  • Modularity through scripts and handlers (command, function, generic)
  • Multiple assignment (set multiple variables to one value or to multiple values, gather remaining values)
  • References to any container (pass by reference and more, including references to chunks)
  • Repeat by reference, etc.
  • File access (files as containers, in addition to traditional file open/read/write/close)
  • Binary data
  • String encodings
  • URL access
  • Socket communications
  • HTTP, XMLRPC, JSON support
  • XML support
  • Merge function
  • Database access
  • Objects, prototypes, helpers (multiple inheritance)
  • Messaging / inheritance / ability to override built-in commands and functions
  • Sound / music support
  • Predefined variables
  • Extensible: xmodules, shell calls