the language is “OCaml”
- OVERVIEW: What kind of language is it? Where and when was it written? Why? What is/was the language primarily used for? What are its most notable features? Did this language mark the first appearance of some language feature? This section is a brief summary providing a high-level summary of the language.
- HISTORY: Here you’ll discuss in more detail the origins of the language. What were the primary design features? What were the goals? What was the design process? What need was it intended to address? How does this language differ from what came before it? What changes were made from ancestor languages, if there were any? How widely was it used, and in what areas? Is the language still in use? Why (or why not)? Were parts of it adopted into other languages, or did it become a dead end? Why? Basically, talk about why someone thought this language was needed, what went into it, and how it worked out.
- FEATURES: Describe the language in some detail. At the very least, discuss what native data types are available, and what control structures are available. Classify the language based on the various criteria we’ve been discussing (imperative, object-oriented, functional, declarative, etc). Is it strongly or weakly typed? Is typing static or dynamic? How is iteration handled? What about selection? Or are they (some languages don’t have iteration constructs)? What features does it support? Where does the language really shine? What are its biggest drawbacks? For this section, you can assume that your reader is technically literate (e.g. an upper-level computer science undergraduate) who’s not necessarily knowledgeable about this specific language. If the language has some arcane features, explain them, but it’s not necessary to explain what a compiler is.
- Evaluate the language on the criteria discussed in chapter 1 and the material from Sebesta: How readable is the language? How writeable? How reliable? Is it highly orthogonal? How expressive? How well does it support abstraction? How does its execution speed compare to other languages of the same era? Support your positions on these issues.
- EXAMPLES: Provide a sample of what code in the language looks like, using some simple, well-known algorithm. Adding items in a list, sorting a numeric list, or converting a string to all lower-case would be examples. Provide something big enough to give a taste of what the language is like. (If sorting a list is a one-line function call, you might want to pick something else, or perhaps show how to explicitly/manually sort a list instead.) If a language is strongly associated with a particular IDE or development environment, you may want to include a screenshot or two.
- FURTHER READING: Provide a list of resources you used in assembling your report or where the reader could find more information about that language. You should have at least 5 references other than your textbook or other class materials. You may list no more than 1 Wikipedia article in this section.