In language design, we should be consciously seeking out situations where we can trade efficiency for even the smallest increase in convenience. -- http://www.paulgraham.com/hundred.html Most data structures exist because of speed. For example, many languages today have both strings and lists. Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency. But it's lame to clutter up the semantics of the language with hacks to make programs run faster. Having strings in a language seems to be a case of premature optimization. -- http://www.paulgraham.com/hundred.html In any academic field there are topics that are ok to work on and others that aren't. Unfortunately the distinction between acceptable and forbidden topics is usually based on how intellectual the work sounds when described in research papers, rather than how important it is for getting good results. -- http://www.paulgraham.com/hundred.html