[Year 12 SofDev] Records and Arrays
Guy Flaherty
G.Flaherty at xavier.vic.edu.au
Thu Aug 19 09:19:27 EST 2010
Laurie,
Typing is not really the issue, and Steven's explanation is quite likely to cause more confusion in my opinion. Let me explain my thinking:
The difference between a record and an array is simply that one allows only one type of data to be used, the other allows multiple types of data to be used (some languages require type to be declared, others don't).
Associative 'arrays' are called 'arrays' in their language literature, but according to the study design they are in fact 'records' and not 'arrays'.
Java does not even have a record type, you have to create a class with no instance methods to represent a 'record' type, so now you have to include classes if you start thinking about Java. Additionally, other languages, such as PHP, Python, Ruby etc can do the same thing as Java but are not required to as their 'array' types can work as 'arrays' or 'records'.
Ruby names their 'record' type an 'array' and their 'associative array' a 'hash', making it even more difficult for students learning Ruby to understand the Study Design definitions.
Thinking about all this, I am simply going to instruct my students that for the purpose of completing any exam questions, the difference between a record and an array IS that one can contain multiple types of data and the other can only contain one type of data. Despite the fact that this is not what they are seeing when they do their programming, this is how it would seem to be best to approach it.
Guy Flaherty
>>> "Laurie Savage" <savage.john.l at edumail.vic.gov.au> 19/08/10 08:39 AM >>>
Well yes, and no. Thanks for the very clear description of a record which IS
an array (is ISBN an integer or a string? PHP will treat it contextually)!
However this does not take away from the fact that some major modern
languages are not strongly typed and so the study guide distinction does not
apply and this disadvantages students working in those languages.
Laurie
From: sofdev-bounces at edulists.com.au [mailto:sofdev-bounces at edulists.com.au]
On Behalf Of Steven Bird
Sent: Wednesday, 18 August 2010 8:58 PM
To: Year 12 Software Development Teachers' Mailing List
Subject: Re: [Year 12 SofDev] Records and Arrays
The following might help you to distinguish these concepts.
Consider any kind of real world entity, e.g. a student, a school, a book, a
patient, etc. Now think about its attributes. For a book this might be
title, author, year, isbn, price... When we model such an entity using a
computer, we specify a set of attributes. This is a "record". It is just a
collection of attributes describing an entity.
A record could be stored on disk (e.g. as a row of a relational database
table, or as a row of a CSV file), or represented in volatile memory in a
data structure in a running program. Perhaps the most common data type used
for representing a record is an "associative array" ("hash" in Perl;
"dictionary" in Python; "array" (!) in PHP, "map" in C++); some languages
support a "tuple" type which is also appropriate for representing records.
However, at one level these details don't matter. What's important is just
that we have a set of attributes.
Now consider any collection of entities of the same type, e.g. students,
schools, books, patients, etc. When we model these in a computer, we
specify a collection of like entities. This is just a set or list of
entities.
This list could be stored on disk (e.g. as a relational table, or a CSV
file), or represented in a running program. The most common data type is an
"array", and that's what it is called in most languages (but it is "list" in
Python). Some languages encourage you to define array elements to be all of
the same type, but not all. In general, I think this is a good practice.
PHP blurs the distinction between records and arrays. However, a programmer
can use PHP in such a way to keep them quite distinct:
my_record1 = array('isbn'=>1441412050, 'title'=>'Alice in Wonderland',
'author'=>'Lewis Carroll');
my_record2 = array('isbn'=>1441412050, 'title'=>'Through the Looking Glass',
'author'=>'Lewis Carroll');
my_array = array(my_record1, my_record2);
my_record1['isbn']; /* access a record's attribute by name */
my_array[1]; /* access an array's element by index */
I hope this helps!
--
Steven Bird
http://stevenbird.me/
Important - This email and any attachments may be confidential. If received in error, please contact us and delete all copies. Before opening or using attachments check them for viruses and defects. Regardless of any loss, damage or consequence, whether caused by the negligence of the sender or not, resulting directly or indirectly from the use of any attached files our liability is limited to resupplying any affected attachments. Any representations or opinions expressed are those of the individual sender, and not necessarily those of the Department of Education and Early Childhood Development.
Scanned by Sonar.
Date: 2010-08-19 08:45:37.693
From: sofdev-bounces at edulists.com.au
To: g.flaherty at xavier.vic.edu.au
Profile: Default_In
Mail id: challenge-2171534856i43-0
"This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the Network Manager at Xavier College. Please note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Xavier College. Whilst every attempt has been made to ensure material in this email message is free from computer viruses or other defects, the attached files are provided, and may only be used, on the basis that the user assumes all responsibility for the use of the material transmitted."
More information about the sofdev
mailing list