home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.edu:1590 comp.lang.misc:2979
- Path: sparky!uunet!wupost!bcm!rice!sabry
- From: sabry@rice.edu (Amr Sabry)
- Newsgroups: comp.edu,comp.lang.misc
- Subject: Programmers
- Message-ID: <BuBBoJ.un@rice.edu>
- Date: 9 Sep 1992 13:19:30 GMT
- Sender: news@rice.edu (News)
- Reply-To: sabry@rice.edu (Amr Sabry)
- Organization: Rice University
- Lines: 44
- Originator: sabry@datura.cs.rice.edu
-
-
- Many people on this net implied that whoever can write a matrix
- multiplication subroutine in Fortran is a programmer.
-
- Based on courses here at Rice University, here is a minimum list of
- *concepts* that a real programmer should know:
-
- - Inductive definitions.
-
- - Parsing.
-
- - Types: Unsafe, dynamically typed, and statically typed languages.
-
- - Constructed data: data representation independence.
-
- - Lexical scope and procedures: implementing (call-by-value and
- call-by-name) closures.
-
- - Store: assignements, static scope versus dynamic extent, garbage collection.
-
- - Paramter passing techniques: by reference, copy-in-copy-out, by value.
-
- - Object-oriented languages: objects, classes, inheritance ...
-
- - Local control: Iteration via tail recursion.
-
- - Non-local control: errors, exits, coroutines, goto ...
-
- - Continuations and continuation-passing style.
-
- - Macros: hygienic expansion.
-
- - Time pre-emption and light weight processes.
-
-
- A person that understands the above concepts can design or implement
- any programming language. Furthermore, they can code an algorithm in
- any existing programming language efficiently. Finally, learning any
- new language amounts essentially to learning a new syntax.
-
- --
- Amr Sabry sabry@cs.rice.edu
- ----------------------------------------------------------------
- "Why take time to learn when ignorance is instantaneous" -Calvin
-