On 29 November 2012 10:08, Alexander Klenin <kle...@gmail.com> wrote: > On Wed, Nov 28, 2012 at 2:29 PM, Jonas Maebe <jonas.ma...@elis.ugent.be> > wrote: >> >>> Will global variables and static global arrays be always initialized to >>> zero? >> >> Yes. > > Then I suggest to amend the first paragraph of > http://www.freepascal.org/docs-html/ref/refse22.html > which directly contradicts this. > > I have rather curious story behind this request. > In Russia, schoolchildren must pass "Unified State Exam" ("ЕГЭ" in > russian) upon graduation. > The exam on informatics includes requirement to write a simple program. > Currently, the program is allowed to be written in any programming language, > but it is written on paper, the pupil must precisely specify the language, > and the program is graded manually by teachers. > > Some pupils wrote in Free Pascal, which is moderately popular in schools > (something around 20% IIRC). Several of them omitted initialization of > global arrays > based on the assumption that they will be zeroed automatically. > Those pupils were failed for that, and the graders stated that even if > current implementation > happens to zero global variables, this is not documented and so is merely > an implementation artifact which must not be relied upon. > > Hence, this omission resulted in lower grades for some schoolchildren. > > -- > Alexander S. Klenin > _______________________________________________ > fpc-devel maillist - fpc-devel@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-devel
The teachers were correct. A program's correctness stands purely on the states defined by the meaning of its texts, not on some compiler behaviour or some execution or implementation model. The teachers are at fault here. I don't suppose they understand that themselves, as the students wouldn't err if the teachers impressed that principle before the test. The graders were right but for the wrong reasons. In the pure sense defined by the meaning of the texts the initial states are undefined if the variables are not expressly initialized. "We must learn to work with program texts while (temporarily) ignoring that they admit the interpretation of executable code." http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html. As some of you might suspect I am a fan of the late Edsger Dijkstra, That paper is a bit of a (quite justified) rant but some of the issues are covered in his other papers, but it has taken me some time to begin to grok the foundations of his perspective. I am also not that good a programmer. :-( -- Frank Church ======================= http://devblog.brahmancreations.com _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel