I like using Intellisense when I program C#. Even though Smalltalk has AutoComplete, it doesn't compare in accuracy to Visual Studio's Intellisense.
Suppose, though, that Smalltalk could know (maybe by type inference or by declarations) the types of the variables and it implemented a kind of Intellisense similar to that in Visual Studio. What you'd find is that the list of available methods is about 10 times larger than those in C#. This highlights the fact that the C# libraries are really quite sparse.
The following table shows the number of methods (or properties) understood by various classes (both defined in that class and inherited from superclasses). These are the methods that would show up in Intellisense.
Class | Smalltalk | C# | Java |
Array | 364 | 21 | 11 |
OrderedCollection / ArrayList | 391 | 31 | 35 |
Dictionary / Hashtable | 352 | 22 | 25 |
Point | 366 | 8 | 20 |
Clearly, the Smalltalk classes are much richer than the corresponding C# or Java classes. This means that Intellisense would be much less useful because so many choices would be shown in the list. The Smalltalk way of solving this problem is just to open a browser on the class. The available methods should all be nicely categorized and visible with complete source code.
I don't know if Microsoft or Sun are planning to enhance the C# and Java libraries, but as is, they offer much less functionality than than Smalltalk's library. I run into this on a daily basis. It's annoying to not have simple methods like last in collections. This means that the programmers must implement these utilities themselves and clutter up their code with duplicated noise. Worse still, the programmers can't add these utilities themselves. It really cripples the developers and complicates the code.