On Sun, 20 Jun 2010 16:07:08 +0200 Jürgen Hestermann <juergen.hesterm...@gmx.de> wrote:
> e:) > > * What is type checking _actually_ useful for? > > I would be lost without type checking, > especially when using sophisticated data structures > like pointers to arrays of records (which again > contain pointers to other complex structures). > An example: > > type ArrayType = array[1..10] of SomeType; > PointType = ^ArrayType; > var X : PointType; > Y : SomeType; > > What happens if you forget a dereferencing ^ in an expression like this: > > Y := X[7] > > where it should have been > > Y := X^[7] For sure! Now, it is easy for the compiler to guess such cases. Some languages perform automagic deferencing of pointers to structured types (record/object, array), meaning eg p.x is interpreted as p^.x and p[i] is interpreted as p^[i] There is no ambiguity since the pointer nature of p is known by the compiler before such lookups can be parsed. Oberon -- also designed by Wirth and thus not to be considered as weakly secured ;-) -- works that way. Also note that all languages holding implicitely referenced object types can only work that way... including fp for Delphi-like OO (and all dynamic languages like python or Lua). > What does the compiler do without type checking > in the first case? Does it access X as if it > was an array (of what element type/size?). > > It often happens that I change a type into a > pointer to that type. Then I expect that the > compiler shows me all places where I now get > a syntax error so that I can change the code > instead of having the compiler "guessing" > some meaning (that I may not have intended). Nice use of the compiler ;-) But only needed since implicite dereferencing is not a feature of the language. > I also often change a string type into an integer > and vice versa. That implies a lot of code changes. > Again with type checking I can lean back and > rely on that the compiler will show me all places > where these changes are needed. Denis ________________________________ vit esse estrany ☣ spir.wikidot.com _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal