Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!yale!cmcl2!lanl!lambda!jlg From: jlg@lambda.UUCP (Jim Giles) Newsgroups: comp.lang.misc Subject: Re: Cheap implementations of languages (Re: Pointers and poor implementations (was: Re: JLG's flogging ...)) Message-ID: <14323@lambda.UUCP> Date: 10 Apr 90 20:20:23 GMT References: <5486@ganymede.inmos.co.uk> Lines: 29 From article <5486@ganymede.inmos.co.uk>, by mph@lion.inmos.co.uk (Mike Harrison): > [...] > While I think that your comparison is fair, you have missed out some tricky > bits of Fortran, which *might* change the perspective. > For example: > - DATA statements, with implied DO, which can be quite complex when you > have nested cases. Why should these be any harder to implement than nested run-time loops? Actually, I've implemented a parser for do-loop style data initialization for an I/O library. It was not particularly difficult. > [...] > - EQUIVALENCE statements, which (given overlapping EQUIVALENCEd arrays) can > set up quite complex constraint problems. Equivalence is about as difficult (or easy) to implement as C's untagged unions are. At least with respect to constraint problems, the two features are nearly identical. After all, C also has to anticipate that arrays might be aliased in an overlapping fashion through the union construct. When comparing languages, one must have an eye for what features are really correspondent. For the most part, procedural languages tend to all have pretty much the same features. From a human perspective these language features may _seem_ vastly different in form and convenience. From the compiler's perspective, they are all just about the same. J. Giles