Reference no: EM132363365
Comparative Programming Languages Assignment - Language Design Essay
This assignment will test your knowledge of programming language design features.
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 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 language for the problem domain of Banking.
Banking encompasses a number of areas including aspects of business, finance, and customer relations. It is worth thinking about the aspects of a banking system in terms of a number of features, including:
- Performance;
- Use and precision of data types and structures;
- Maintenance of code;
- Flexibility of design and implementation; and
- Robustness requirements in such a critical domain.
Even though security aspects are worth considering, the features of the language are the primary concern in this essay.
With this in mind your task is to theoretically design a language suitable for the use within the banking 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 banking 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 sound, 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.
Comparative Programming Languages Assignment - Parallel Implementations
This assignment will test your skills in programming applications to specification in a number of different programming languages.
Assignment Overview - You are tasked with creating a program for a pizza shop -however, as this is a comparative languages course, you will be creating the same application in the following programming languages:
- C,
- Python,
- Java and
- Lisp.
As you implement the application in each language, you should keep notes on the features of the languages used, which you found useful, as well as any issues or complications which arose due to the complexity or lack of any language features. A brief discussion based on these programming features for each individual language accompanying each implementation is required. Finally, a comparative overview of the languages highlighting applicability based on your experience in the design, implementation and debugging of your code is also required.
If you foresee or encounter any complications, you may opt to implement or incorporate additional language features which may be lacking, i.e. data structures. This can be done via:
- Your own implementation,
- Through libraries, or
- Via the incorporation of existing source code. You can use code found on the Internet, but use of any existing code must be referenced.
Program Specification -
Users may order one or more pizzas, where each pizza may be either: small, medium or large. Small pizzas cost $5, medium pizzas cost $8 and large pizzas cost $12. All pizzas come on a tomato base (for our pizza shop, this will be the only option), and will have the topping cheese by default, at no extra cost. Users may choose up to a maximum of four additional toppings (bringing the total to five) from the following list, where each topping adds an additional $1 to the price of the pizza:
- Bacon,
- Olives,
- Ham,
- Mushrooms,
- Pineapple,
- Salami,
- Anchovies.
A pizza order consists of an order for one or more pizzas, where each pizza has a size, and may optionally include a list of up to four additional toppings.
Each pizza order must be marked as either to be collected or to be delivered.
If the pizza is to be collected then the order requires a name and a phone number to be valid.
If the pizza is to be delivered then a name, phone number and address are required to be valid. In addition, if the order total is less than $30 then an $8 delivery fee is added to the total.
The application must be error tolerant and capable of accepting keyboard input to store a number of pizza orders in memory (they do not have to be persisted to file), as well as displaying an order summary which include details of all orders, including:
- The details of each pizza in the order,
- The total cost of the order, and
- The name, phone number and (if required) address of the person who made the order.
Note: Please add four points in report
- Data str
- Robust I/P handling
- Features
- Issues
- Suitability