CS 541 Lecture -*- Outline -*- * the best programming language ** what is meant by best? Must there just be one? (yes) Is this relative? (to situation, problem?) ** arguments What kinds of arguments have we heard so far (make a list)? Generality can program anything does this make any distinction? Popularity - some group thinks it best - people trained to write programs in it how to compare? Support - runs on many computers - good compilers how to compare? what evidence? - has many application packages (yacc, lex) how to compare these? - multibyte characters (foreign languages) - debuggers are these a plus? - extensions? (parallel, database) could these be done? Have they? - call routines written in other languages is this dictated by language or the compiler? Level what is meant by "high level"? - can write high level programs easily? what do you mean by easily? - can write low level programs what evidence? (register, bit fields, pointers) preservation of information principle - macros (conditional) Teaching Issues - why are these important to a company? - simplicity what is it? how to compare? - structure what is it? why is it important? - molds thought (Saphir-Worf hypothesis) does a PL really mold our thoughts? if so how? can we speak of a language "encouraging" certain idioms? Security - how good is the type checking? Aesthetic Issues conciseness orthogonality can't write such bad programs Flon's axiom? Can you do what you want? - enforce information hiding and data abstraction - get to machine in a controlled way - polymorphism ** How does each language stack up on this scale? assembler C C++ Pascal Modula-2 Ada Scheme ** What other languages are there that might be better? Modula-3 Oberon (and Oberon-2?) SML, Miranda, Haskell Smalltalk, Eiffel Prolog, Lambda Prolog