- Haggis (programming language)
- List of programming languages
- Haggis (disambiguation)
- Paul Haggis
- Servant (TV series)
- Pseudocode
- In the Valley of Elah
- Scottish Gaelic
- Dave Eggers
- Moran Atias
haggis programming language
Haggis (programming language) GudangMovies21 Rebahinxxi LK21
Haggis is a high-level reference programming language used primarily to examine computing science for Scottish pupils taking SQA courses on the subject. Haggis is used as a tool to bridge the gap between pseudocode and typical computer programming.
Haggis is not based on any one language but a mixture that is intended to allow a pupil familiar with any of the many languages used in classrooms to easily understand the syntactic construct being used in an example. It has multiple programming paradigms of functional, imperative and object-oriented to suit this purpose.
There are three separate language definitions, one for each level at which computing is assessed by the SQA; these are proper subsets of each other, so for example any program contained by the National 5 level language is also well-defined at Higher and Advanced Higher levels. Higher includes the definition of procedures and functions and the use of record types and files, while Advanced Higher includes object-orientation.
Online Haggis interpreters have been developed to provide a way for examiners and teachers to check their programs are correctly defined and behave as expected.
Overview
In Scotland, school-level computing qualifications are awarded by the Scottish Qualifications Authority. A decision was made for computing courses that a single choice of programming language for examination should not be mandated: this allows teachers to choose languages as appropriate to context. This however leaves the issue of how to examine programming, especially in the light of recent educational research which encourages the teaching of reading and understanding code as a core discipline, which should therefore be examined.
Initially, a form of pseudocode language emerged among examiners, to avoid any such language dependency. However this led to the very undesirable situation that, while students are being taught about the importance of rigour of terms in a programming language, they can look back over previous years of examinations and see non-standard use of coding which varies from example to example.
Haggis is the solution to this. Haggis is a formally-defined reference language, but its purpose is to examine programming, not to write programs. A further requirement is that it must not be a mandatory part of the curriculum, so students who have never previously seen the language should be able to read it. These aspects, along with an attempt to conform as far as possible with the evolved pseudocode style, directed the specification of the language. So, while Haggis is in fact a programming language (even although, in general, not all Haggis programs are executable), it is not intended as a language in which to write programs.
These concepts are more fully explained in an academic paper.
History
Haggis was commissioned by the SQA in 2010 to provide a uniform syntax and form in which to present questions to pupils in assessments. Its present form was jointly developed by Quintin Cutts (University of Glasgow), Greg Michaelson (Heriot Watt University) and Richard Connor (University of Strathclyde). The aim of developing Haggis was to emphasise the core idea of ensuring pupils could view code and demonstrate their understanding of its behaviour, in order to develop their computational thinking and programming skills.
Haggis was first introduced into the Computing Science examinations as part of the Scottish Government's Curriculum for Excellence development programme in the 2013/2014 session in National 5, 2014/2015 for the new Higher courses and into the new Advanced Higher in the 2015/2016 session. Haggis was not introduced as a language to replace other languages already used in education, nor was it intended that the language should be taught or used in the normal curriculum. However some teachers have adopted it as a rigorous pseudocode form to enhance teaching delivered in another language.
Features and philosophy
= Core principles
=Haggis was designed with 8 core principles in mind
Not be based on any one extant programming language
Be adaptable to programming languages already taught in the Scottish Curriculum.
Provide enough complexity for Advanced Higher teaching whilst being appropriately useful for earlier teaching years.
Provide an instinctive element, e.g. variable types are self specified.
Be concise in use but open to interpretation of multiple ways to solve a problem.
Allow different constructs to have different meanings when used in certain context.
Don't visualise the non-useful elements such as Memory being allocated.
= Use within education
=It was designed to be both functional/sequential and object-oriented based in order to be simple and complex for National 5 / Higher students and Advanced Higher students simultaneously.
Haggis was designed to allow pupils across Scotland to enhance the learning and understanding of computer programming through reading examples, and aid the step of converting from pseudocode to full programming. It was not created with the intention of asking pupils to write it in assessments but provide a uniform language in which to present code examples to students, ensuring that all pupils have a fair understanding and is not hindered by learning a different programming language different to the one exemplified in the assessment.
Syntax
Syntax and structure in Haggis are very similar to other programming languages and can be easily learned.
= Reserved words
=Reserved words are capitalised; this would be generally be considered ugly for a programming language, but makes the program structure clearer for a first-time reader of the language. Similarly, the language deliberately contains a great deal of syntactic redundancy.
DECLARE, FOR, WHILE, etc.
= Data types
=(types are normally determined by inference except where this is not possible)
Character (a single character type, from which Strings are composed)
Integer
Real (including integers)
Boolean (true or false)
= Structured types
=Array: Sequence of same data types.
String: Array of Character.
Record: A labelled collection of values.
Object: as defined by Class descriptors.
Arrays are included at National 5 level, Records at Higher, and Objects at Advanced Higher.
= Line numbers
=In some examples in examination papers line numbers are used to allow easy reference; this is not a part of the language however.
= Indentation
=Code within other structures should be indented so it can be properly identified by the compiler and to make it easier to read for the developer and for anyone else of who may be reading the code. Once again, this is not a part of the language definition.
= Comments
=Comments can be made using the “#” character for every line of commented text, this can appear either at the beginning of a new line or after a piece of code.
Large blocks of text can be specified using the “<(COMMENT TEXT>” format, this is primarily implemented for educational use to provide larger context for students.
= Variable names
=Variable names should be written in lowercase or, if the name is complex, in lower camelCase. Camelcase is when a name is concatenated together to form one long word, however the first letter of each word (apart from the first) is capitalised.
For example, variables could be called:
number
meaningfulName
= Initialisation
=Initialisation allows the declaration of a new variable.
DECLARE
If the type cannot be determined from the initialising value, an optional type may be included, as for example
DECLARE myArray AS ARRAY OF INTEGER INITIALLY []
= Assignment
=Assignment allows the user to set values to variables. The syntax is as shown.
SET
If
If
= Input
=Input in Haggis is similar to pseudocode in that you state the data type of the input the program is receiving and also where the input is coming from, like so:
RECEIVE
The optional typing for a declaration may also be used, for example
DECLARE number AS INTEGER INITIALLY FROM KEYBOARD
= Output
=Outputs in Haggis can be written similarly to inputs.
SEND