Reference no: EM131614647
This assignment will test your knowledge of programming language design features, and is worth 20% of your non-invigilated (type A) marks for this course.
Topic Overview
Since the development of Plankalkül back in the 1940s, a large number of programming languages have been designed and implemented - each for its own specific problem domains and made with its own set of design decisions and compromises. For example, there are languages which:
- Are strongly typed and loosely typed,
- Provide support for object orientation / abstraction of data types,
- Use static or dynamic scoping rules,
- Provide memory management (i.e. garbage collection) or allow the developer fine-grained control over heap-allocation and recycling,
- Provide closures to allow functions to be passed around like variables,
- Allow easy access to array slices and those which do not,
- Perform internal correctness checking of data and/or try/catch exception handling and those which do not,
- Provide diverse and comprehensive suites of built-in functionality and those with a more limited set of features,
- Use pre-processors and macros to selectively expand or substitute source code, etc.
Each of these decisions can have a profound effect on the usefulness of a programming language in terms of factors such as its speed, robustness and general suitability to create programs of a certain type, such as for operating systems, or in the areas of business, scientific computation, artificial intelligence or video games.
The topic of your essay is to design a programming language for the problem domain of:
Mobile Applications
Mobile application development is a specific subset of standard application development which must be able to handle a wide variety of different tasks. So a programming language suitable for this must be able to do things like:
- Have comprehensive support for user interfaces (i.e. GUIs),
- Be able to work in an efficient, event-driven manner,
- Be able to model real-world problems using custom data types (i.e. support abstraction),
- Provide the ability to send and receive data to/from servers or other devices,
- Allow for the use of rich multimedia capabilities to enable sound/video playback and allow video games to be created (even if just via libraries),
- Be very efficient to minimise battery usage on these mobile devices, Etc.
It's worth thinking about the aspects of a mobile device oriented programming language in terms of a number of features, including:
- Performance;
- Data types and structures;
- Maintenance / Reliability of code; and
- Security requirements.
With this in mind your task is to theoretically design a language suitable for the use within the mobile applications domain.
The actual implementation of the language and tool set is obviously outside the scope of this course, but you must express and justify the design decisions behind your programming language in terms of:
- The features and functionality that will allow your language to be suitable and useful within the problem domain (including what differentiates it from existing languages),
- The programming paradigms, such as procedural, object oriented, logic and functional programming.
You are free to design your language to be either interpreted, compiled or to work in a hybrid manner, but you must thoroughly justify your decision. All language design choices must be legitimate, rational decisions which are backed up by robust discussion of the subject area.
In addition, your document should include numerous references to back up any and all specific claims that you make. All references should be made in the APA referencing style.