cpsc332-programming language design - objectives
-
abstraction, modularization, encapsulation, extension
-
classification of programming languages : imperative,
object-oriented, functional, logical, scripting, markup.
-
syntax, semantics, translation by compiler or interpreter,
command-line and ide(visual environments).
-
elements of programming languages : flow of control
as statements, blocks, functions, packages(namespaces), library
components;
data types as built-in types, scalars
and aggregates(composites), user-defined types(adt),
extensible types, type binding.
-
constant/variable, global/local, static/dynamic.
visibility/existence scope, argument/parameter by value,
by reference.
-
recursion.
-
classes, objects; members as data and functions;
public, private, protected, inheritance, polymorphism,
overloading, overriding.
-
abstract classes, interfaces, complex objects.
-
generics(template) with types and values for classes and
functions, function objects(higher order functions).
-
exceptions.
-
concurrency(threads).
-
reusability as component based from libraries(stl) and
by extension(api).
-
experience with multiple languages:
c#,
java,
c++,
ada-95,
haskell,
lisp,
prolog,
ruby,
perl,
python,
postscript,
xhtml,
javascript,
css.