Content area
[...]Generation: High-level Languages continued the trend toward a more symbolic code and away from basic hardware operations. Since the statements in the high-level programming languages like FORTRAN, COBOL, BASIC, C, etc. resemble phrases in the English language, programmers could learn and use them more easily. [...]many computer-users with little or no Computer Science training can create (not write!) their own programs using a fourth-generation programming language. 4GPLs tend to fall into two basic categories: (1) tools for efficient software developing, and (2) tools for productive applications development. [...]with the exception of machine language-where the referent was the actual state of a material equipment, all programming languages are semiotic processes of the second order (Marcus 1979) since their referent is always a natural language (English, mostly), that is, another semiotic process. 4. The direct mapping of objects in the problem domain to objects in the program. [...]the semiotic triangle is valid with respect to objects in object-oriented programming: for instance, the sign represented by the keyword "Worksheet" admits as referent all the worksheets in all the MS Excel workbooks while its interpretant is the notion of electronic worksheet form the MS Excel applications:
1. Introduction
Computer programming is a primary context for the analysis of visual programming from the semiotic and cognitive points of view. Without understating the importance of the other four senses, one may say that vision is socially the most important with respect to making contact, observing and then interacting with our fellow humans and with the environment; that is, a better knowledge and understanding about the world in which we live.
It did not take much until vision penetrated the domain of programming languages and, in a broader sense, the domain of the human-computer communication (Xia 2001). This has taken place in a very semiotic manner, at what is often called high-level vision: the aspects of vision that involve stored information (Nakayama, He, and Shimojo 1995). Following their distinction between image and surface, we may say that the high-level vision specifics used by software designers to enrich the programming environment can be thought of as belonging to an even higher level of information storing. This is a level where common life objects become surfaces, that stand not only for real world objects but also for the commands (the messages) that the programmer/user gives (sends) to the computer. This made programming easier to learn and made general computer use as pervasive as we see it nowadays. One can say that the key to the expansion of computer use to a mass dimension was, on the one side: resorting to vision, on the other side: increasing the simbolicity and iconicity of programming languages and programming environment. In other words, there was a rapid evolution of (1) Windows-Icons-Menus-Pointing (WIMP) device interfaces and (2) of visual programming.
2. Computers as Communication Agents
Since the early days of computers, the problem of establishing a communication protocol between human and computer (and later between computers) played a central role in the scientists' investigations. At first, a binary code was used (since there was practically no difference between writing programs and running them), then an alphanumeric code was designed, and today, graphics have come into play.
When communication between humans and computers was dominated by programming languages, their status was thoroughly investigated. In (Naur 1975) the distinctions, and not the similarities, between programming languages and natural languages are investigated. Naur's conclusion is that, since "every programming language is just another example of the ability of natural language to extend itself to cover new ground", the programming languages are definitely subordinated to natural languages. In Marcus (1997), both the similar and the distinctive features of the two classes of languages are investigated; the author stresses the fact that each aspect that distinguishes programming languages with respect to natural languages is not a drawback, a disadvantage, but merely a different quality. For instance, one should not regard programming languages as improper for spontaneous, imprecise communication (this being the field of excellence for the natural languages), but as suited for precise, rigorous messages, like the ones that a human must send to a computer in order to obtain the performance of the program instructions.
In Claude and Marcus (1981) the following three components of the symmetric human-computer communication are investiated:(1) human-computer, (2) computer-human, and (3) computercomputer. The first two components present a strong "heterogeneity of the addresser with respect to the addressee", a heterogeneity that is responsible for the structure of the language used in the communication process: this language is "neither formal nor natural or, equivalently, it is both formal and natural". The typology of the signs used in this type of communication (prepon-derantly conventional, as in any artificial language) is considered with respect to the triadic classification due to Peirce (1931-1958): there are mainly symbolic signs, but-even in the third generation programming languages-there exist motivational (either iconic or indexical) signs too.
Programming languages are but one component-it is true, the most interesting one and the easiest to investigate -of the humancomputer communication process. One cannot reduce the study of the human-computer communication process to the study of programming languages for the same reason for which the human communication process cannot be reduced to the study of the natural languages that are used. Nevertheless, over the years this was the case, since the term "human" in the human-computer communication syntagm designated usually the programmer and only him/her. Let us remember that, until the personal computer era, a programmer needed an operator to feed the codes s/he wrote to the computer along with adequate instructions that the computer required in order execute the program. Thus, this operator and his/ her actions and instructions to the computer are another component of the human-computer communication process, at least equally important as the programmer and his/her code.
3. Programming Language Generations: Conventional and Motivational Aspects
Since 1965 when IBM used the syntagm "third generation computer" in order to advertise the IBM 360/60, programming languages -like computers-have been tracked by using "generations". They have been also classified by "level", taking into account solely their resemblance to the English language. Each new generation of programming languages meant not only a more performant programming tool, but also a more natural means of communication between human and computer. Also, when analyzing the semiotic aspects of different programming languages, we will be able to better appreciate the different degrees of iconicity, indexicality and symbolicity that exist-as in natural languages-in programming languages. With the difference that-with the evolution of programming languages from one generation to the other-the balance between the conventional and the motivated signs changes more or less dramatically in the favor of the motivated variety.
First Generation: Machine Language was the only way whereby programmers could communicate with computers in the 1940s and early 1950s. It is formed by the binary digits of the central processing unit (CPU). Machine language for a simple operation like the multiplication of two numbers could require several strings of zeros [0] and ones [1]: one string might cause the CPU to retrieve the first number from the computer memory; a second string might retrieve the second number; a third might perform the multiplication and a fourth string of zeros and ones might place the result back into another memory location. Machine language is considered a low-level language because the binary symbols resemble the way the computer works (its electrical circuits may go on and off). Since CPUs can process machine language, they can process binary translations of text files.
If one considers the binary string 00100101 that represents the multiplication operation in machine language (Stair 1997), then one may appreciate that this language is, from a semiotic viewpoint, completely unmotivated, entirely symbolic. I shall try to amend this impression a little.
Gottfried Wilhelm von Leibniz was the first to use the digits O and 1 when he tried to explain the essence of Christianity to the Emperor of China who was visiting the Holy Roman Empire: "the Lord, the all-knowing one, had created the universe out of nothing" (Augarten 1981). Besides his fundamental contribution to calculus, Leibniz is one of the three great calculator inventors of the 17th Century: between 1672 and 1674 he built the Stepped Reckoned. Although in a brilliant flash of insight, he considered making a binary calculator, nothing ever came of the idea. The binary system was later used by Ada, Countess of Lovelace, in her work on the Analytical Machine-the real ancestor of today's computer, designed and partially built by Charles Babbage in the third and fourth decade of the 19th Century. Since an electric circuit has only two states: on and off, strings of binary digits were the ideal numerical representations of the states of the electric circuitry in a computer. From this point of view, communicating to the computer the instructions that the programmer expected to be performed as strings of 0s and 1s is completely motivated. They can be considered indexical signs since a O indicates the "off" while a 1 indicates the "on" state of the electric circuit (Peirce 1931-1958).
Unfortunately, a human can understand a machine language only with extreme difficulty Thus, programmers started to look for a way of converting their instructions written in a more meaningful code into strings of binary digits that CPUs could understand.
Second Generation: Assembly Languages resulted from initial attempts to overcome difficulties of programming in machine language by replacing the strings of binary digits with short mnemonic (symbolic) codes that were easier to understand and remember. Each machine language instruction was given its own symbolic code. For example, the letter A was used for the addition operation, the string STO was used to represent the instruction STORE, etc. Another program, called an assembler program, translates the assembly language program into machine language.
The use of these code mnemonics marked a heavy stress on the motivational character of these programming languages. Of course, the user's identifiers still had a great degree of arbitrariness, adding to the non-motivational character of the second generation programming languages.
Third Generation: High-level Languages continued the trend toward a more symbolic code and away from basic hardware operations. Since the statements in the high-level programming languages like FORTRAN, COBOL, BASIC, C, etc. resemble phrases in the English language, programmers could learn and use them more easily. For instance, a calculation involving the multiplication operation discussed above would now look like this:
NormalPay = NumberOfHours * PayRate.
A language translator, an interpreter, or a compiler translates the statements into machine language and supplies much of the coding details. The development of third-generation languages made possible the creation of prepackaged software applications, programs written to solve specific classes of problems, such as accounting, spreadsheet, word processing, and data management programs.
The idea behind the development of most third-generation programming languages (3GPLs), like Basic and Pascal, was to help young programmers to master what was not yet the science of programming, but continued to be "the art of programming". Mainly in their case, but for the other programming languages too, there was an effort to enhance the resemblance to the English language that resulted in a stronger indexical function of each keyword and each statement of these programming languages.
Fourth Generation: Very High Level Languages are characterized by a closer resemblance to English language and by a lesser emphasis on processing procedures. A fourth-generation programming language (4GPL) merely tells the computer what the programmer would like to be done, not how the task should be carried out. As a result, many computer-users with little or no Computer Science training can create (not write!) their own programs using a fourth-generation programming language.
4GPLs tend to fall into two basic categories: (1) tools for efficient software developing, and (2) tools for productive applications development. Code generators, which allow one to specify what must be done and then generate themselves the code needed to create the program that performs the task, are a good example of a 4GPL from the first category. Examples of 4GPLs from the second category are (a) the query languages that provide customized access to data stored in databases, for instance using statements like the following one:
PRINT INVENTORY NUMBER IF GROSS PAY> 1000
and, (b) the report generators that produce customized reports. At this point, we can observe the first iconic aspects of programming languages. A Structured Query Language (SQL) is still a programming language in the "traditional" sense of the word since one uses statements formed with keywords and user-identifiers taken out of the English language. With code generators the iconic function comes into play, since the user performs the actions with the keyboard, the pointing device (the mouse), and then the software generates the lines of code.
Fifth Generation: Natural Language Programming Languages- still in an experimental phase -resemble the English language more than they resemble to a programming language, be it even a 4GPL, because their syntax closely approaches human language and because they allow programmers to communicate with computers much in the same way that they communicate between themselves. Of course, a very sophisticated program has to translate the casual programmers' statements into instructions that the CPU can understand and carry out. A good example of a 5GPL is the English Wizard, a natural language query tool that connects directly to Microsoft's Access database program and allows users to gather information stored in databases using standard English. For instance, the user enters a query in English, like "What customers didn't have any orders this month?", which is translated in SQL (a 4GPL) and looks like the following:
SELECT 'Customers'.'Company Name','Customers'. 'Contact Name' FROM 'Customers' WHERE not Exists (SELECT 'Ship Name' From Orders' WHERE {fn Month (Order Date')}=12 and {fn Year (Order Date')}=1994 and 'Customers'.'Customer ID'='Orders'.'Customer ID')
Although some natural language features such as these began to show up in commercial products (Laudon, Traver, and Laudon 1997), overall, natural language programming languages are still in their infancy.
Since these languages are not yet largely used, their semiotic nature is, for the moment, more difficult to appreciate. Is English still the referent, as it was for the previous generations of programming languages, or is it the sign itself? Are there still programming languages that are semiotic processes of second order or have they become-again! -semiotic processes of the first order? The example of the English Wizard given above (taken from Laudon, Traver and Laudon 1997) shows that natural language programming languages allow a great degree of ambiguity, overriding one of the main differences that distinguish programming languages from natural languages.
This short overview of the generations of programming languages analyze their evolution mainly from the semiotic point of view (see also Balanescu and Gheorghe 1987; Xia 2001). Thus, with the exception of machine language-where the referent was the actual state of a material equipment, all programming languages are semiotic processes of the second order (Marcus 1979) since their referent is always a natural language (English, mostly), that is, another semiotic process.
4. Object-Oriented Programming: Conventional and Motivational Aspects
The first step toward organizing the discipline of programming was the Bohm-Jacopini Theorem from 1965 that states the bases of structured programming. Traditional Structured Programming keeps data separate from the procedures that manipulate them. Every time some action is to be taken with respect to a piece of data, a separate, specific set of instructions needs to be written. The programmer's main concern is to tell the computer in a precise, unambiguous and technical way what needs to be done and how to do it. Structured programming tends to emphasize actions', programmers use functions and procedures as basic units for constructing programs.
Object-oriented Programming (OOP), on the other hand, focuses on the creation of objects. An object is a block of programming code that combines data and the specific instructions that will be acting on that data all into one. The code is still precise, unambiguous, and technical since it must describe all the significant attributes of the object and all the actions that the object may be called on to perform. By grouping, or encapsulating, relevant program steps and data, an object captures a routine for performing a particular function or task. Then, when an operation involving the object is required to be performed, a message is sent to the object. The message need only identify the operation to be performed-how it is to be performed is already embedded within the instructions (called methods) that are part of the object (Laudon, Trever, and Laudon 1997).
Once an object has been created, it represents a limited-function application program and it can become the foundation for similar objects that have similar attributes and perform similar actions. Objects that are derived or related to one another are said to form a class. Each class contains specific instructions or methods that are unique to that group. Objects in such a group can work effectively together because they acquire some characteristics of other objects in the same group through a process called inheritance. If the original design of a parent class is modified, all members of the class automatically change to reflect the modification. The ability to create predefined groups of classes (called class libraries) without having to rewrite the code to define all the initial attributes of the object (known as reusable code) is one of OOP's greatest benefits. Being able to use a basic object and just adding code for those characteristics that are specific to the new subclass makes updating code a much easier task.
The significant change in the semiotic aspect of programming when passing from traditional structured programming to objectoriented programming is determined by the following conditions:
1. The direct mapping of objects in the problem domain to objects in the program.
Thus, the semiotic triangle is valid with respect to objects in object-oriented programming: for instance, the sign represented by the keyword "Worksheet" admits as referent all the worksheets in all the MS Excel workbooks while its interpretant is the notion of electronic worksheet form the MS Excel applications:
With Workbooks("BookP).Worksheets("Balance").Cells(1, 1)
The direct mapping is a consequence of having a structure based on objects. If programming is viewed as simulation, it is much easier to pick objects out of a simulated world than it is to develop a programming solution based entirely on procedures and actions. Furthermore, objects in programs, like the objects in the real world that they mimic so well, have a state and a life cycle: they can be created and destroyed. Consequently, the domain of the referent is more closely connected to the material world than before.
2. Many terms of object-oriented programming represent only slight refinements of their use in everyday language.
This was a conscious choice on the part of the designers of SMALLTALK (the first object-oriented programming language for personal computers, issued in 1983). It was intended that SMALLTALK be used by children as well as by adults. Thus, the metaphors used to express basic programming concepts had to come from experience that children could grasp. At the same time, however, the metaphors could not restrict the expressive power of the language required by advanced adult users. Consequently, while object-oriented programming languages are still semiotic processes of the second order, object-oriented programming is closer to semiotic processes of first order.
3. One of the basic metaphors was the notion that objects communicate (i.e., send and receive information) by sending messages, much the way people do (Voss 1991).
4. Classes are templates for objects.
They are the depository of the procedures. However the access to the procedures is mediated through the objects created from the class in which the procedures are defined. The objects within a class share common properties. Furthermore, objects in a class inherit the properties of the broader class to which their class belongs, much in the same way a particular dog inherits first the attributes of his race (for instance, Labrador), then the attributes of the class of dogs, those of the class of animals, those of the class of living creatures.
5. Visual Programming: Conventional and Motivational Aspects
Visual programming essentially consists of letting 3GPLs and 4GPLs work in visual or graphical environments. Often called visual programming languages, languages like VISUAL BASIC, VISUAL C++ , VISUAL PCCOBOL, etc. allow programmers to use a pointing device (a mouse), on-screen icons, and pull-down menus to create programs in traditional languages. The visual environment can create an easier and more intuitive user-interface for programming (Stair 1997).
With visual programming the motivational aspects are even stronger. Furthermore, the iconic signs dominate the symbolic signs used for programming. Let us take the example of word processing, the activity that imposed the dissemination of personal computers outside the laboratories, and Microsoft Word, one of the most widely used word processors. In order to edit the information in the documents he is working on (for instance, in order to move a piece of information from one place to another), the user has several possibilities (after selecting the information to be moved): either to pulldown the EDIT menu and choose the CUT command, or: to activate the CUT icon on the STANDARD toolbar (we leave aside the next steps of this operation: setting the destination place and pasting the information there). In the first case, the user resorts to symbolic signs since he is confronted with the sequence of keywords EDIT, CUT. In the second case, the user resorts to iconic signs since he is confronted with the CUT icon on the toolbar which has the appearance of a pair of scissors.
Out of the three main categories of iconic signs (images, graphs, metaphors), visual programming resorts mostly to images since it mainly uses the icons as substitutes for keyword commands (or even for sequences of keyword commands, like the CUT icon that equates the sequence EDIT, CUT). Of course, the motivational aspects may be stronger in some cases and weaker in others: for instance, the icon for the SAVE FILE command is a diskette, the icon for the FIND command is a pair of binoculars, while the icon for the SORT ASCENDING command is formed by the letters A and Z followed by a downward arrow.
A special type of motivation comes into place when the substitutes for commands are no longer the icons on the toolbars but sets of keys from the keyboard that the user must press simultaneously. Usually, there are two keys, one of them is an auxiliary key like CTRL, ALT or SHIFT, the other one is an active key (generally a letter key) or a function key. For instance, the pulling down of a menu can be obtained either by a click with the left button of the mouse or by pressing the ALT key together with the underlined letter from the menu name: F for FILE, T for TOOLS, or A for TABLE; the selection of the entire information in the file can be obtained either with the command EDIT, SELECT ALL or with the key combination CTRL + A; the print directive is either the command FILE, PRINT (or the icon with a printer image) or the key combination CTRL + P; the key combination for the EDIT, CUT command is CTRL + X. For some of these combinations the indexicality ranges from low (the example of CTRL + A for general selection, A being the initial for ALL in the command name; or the example of ALT + A for pulling down the TABLE menu; let us observe that T could not be chosen since it had to be used for the menu TOOLS which can be found in every Microsoft Office program: WORD, EXCEL, etc. while the menu TABLE is replaced by DATA in EXCEL, by SLIDE SHOW in POWERPOINT, etc.) to medium (the convention of the initial letter for pulling down the menus or for orders like PRINT) and high (the example of CTRL + X for the CUT command, the letter X bearing the closest similarity to the pair of scissors used for the CUT icon).
I mentioned only briefly the use of metaphor in programming languages and in programming methods. With object-oriented programming and visual programming, the metaphor position has been strengthened significantly mainly with respect to computer discourse involved in learning and understanding basic concepts. Johnson (1994) largely discusses the metaphorical character of Computer Science as a discipline, stressing the fact that "computer discourse's use of metaphor is rendered unique among scientific disciplines" in several ways:
...computer discourse seems of necessity highly metaphorical. Computer scientists deal with things that are artificial and arbitrary, things that have little or no basis in nature. Metaphor suggests itself as the way to designate those abstractions. Computer metaphors not only exist as ways of representing and discussing realities we deal with, but they are quite frequently implemented. We do not just talk about environments, we implement them. We can be in the same room as our metaphors. We often communicate with them by pressing the keys of a keyboard. Metaphor can be thought of as existing at the very center of the way we talk and think in this discipline. A central concept in computer science is that of virtuality. We speak of virtual memory, virtual machines, and many other virtual things. In a general sense, the mental mechanism that allows us to deal with virtuality is the same mechanism that allows us to deal with metaphor. That which is virtual is in a real sense metaphorical, and metaphor is a kind of virtual reality.
6. Visual Programming: Cognitive Aspects
In his contribution for the second volume of the series An Invitation to Cognitive Science, Stephen M. Kosslyn (1995) defines visual mental imagery as "seeing" in the absence of the appropriate immediate sensory input". He tries to answer the following questions, in accordance to this definition:
If all one is doing is "mentally perceiving" what has already been perceived, what is the use of imagery? And in what way does it make sense to talk about "seeing", "hearing" and the like without actually perceiving?
In visual computer programming mental imagery has a particular status. Let us consider the two actors whose communication is mediated by the computer, mainly by the graphical interface of the programming language: the programmer (the author of the application) and the common user. The first one has to resort to some graphical tools (images) to convey information to the user and to allow him/her to interact with the computer in order to achieve his/her purpose. For both of them the objects on which they act are: text boxes, labels, combo boxes, option buttons, etc. In fact, in the programming universe, these are images in the common sense of the word and objects only in the sense of object-oriented programming, as discussed in section 4 above. Hence, one deals here with a special kind of mental imagery: that when the actually perceived object is itself an image, more or less connected (in its turn) with a physical object. Using imagery in the best way in order to navigate, track, reach, and retrieve information (Kosslyn 1995) is also a purpose of visual computer programming and a key to a better design of graphical applications.
If, on the other hand, one considers the programming environment and not only the graphical interface, one can find a rather small number of specialized objects: printers, diskettes, displays, etc. Let us consider the visual cognition of such objects and overlook the visual cognition of phenomena (oxidation of an iron bar or of a slice of fruit) or actions (the way a plotter designs the graph of a function or the way a person wraps a present). The reason is the fact that visual cognition of objects is a prerequisite of the other two types of visual cognition. Also, we are interested in what visual cognition can bring as illuminating (1) in learning a visual programming language or (2) in developing software in a visual environment.
In our area of study the distinction (1) between low-level and high level vision (Nakayama, He, and Shimojo 1995), (2) between sense perception and meaningful perception (Fred Dretske 1995), or (3) between the properties of an object (Nakayama, He, and Shimojo 1995; Biederman 1995) and the actions an object can perform (Fred Dretske 1995) is even more meaningful, especially since it is more difficult to grasp. The reason consists in the fact that in visual programming, visual cognition is again a second-order type of cognition: when seeing for the first time the icon of a diskette on the toolbar of a visual programming language like VISUAL BASIC for instance, the programmer/user has already experienced the vision of the diskette at both the low level and the high level of vision. S/he has seen it for the first time and then saw it repeatedly and learned about its properties (actions that can be performed by its means). Now, s/he sees the image (the surface in the sense of Nakayama, He, and Shimojo 1995) of the diskette and, resorting to the stored information above, s/he knows that it can help make a copy of the file. Consequently, s/he clicks the diskette with the mouse and does so. Furthermore, when she will encounter a new visual programming language and environment and s/he will need to save the work, s/he will look for the same surface (image), realizing this time a meaningful perception of the diskette. Let us observe that, this time s/he will perform a second-order meaningful perception of the real-life object called "diskette" or a first-order meaningful perception of the icon called "diskette", an icon that, per se, is a surface/image while in the visual programming environment it is an object belonging to the Windows-Icons-MenusPointing (WIMP) device interface. This observation is consistent with Dretske's (1995) statement that "Meaningful perception exhibits a hierarchical structure". In stating this, he merely points out the indexicality of what he calls meaningful perception, since he acknowledges the fact that viewing the behavior of certain objects, one can view with the "mind's eyes" the state of another object (Kosslyn 1995),.e.g., the low level of a gas fuel meter is a way to view with the mind's eyes the emptiness of the gas tank.
7. Conclusion
Computer windows and objects are natural companions (Voss 1991). Windows are by definition complex data structures manipulated through a variety of standard operations. Character-oriented window systems for MS-DOS, but more perfunctory graphical user interfaces such as Microsoft Windows, modified the interplay of the iconic and indexical functions, on the one hand, and the symbolic function of object-oriented programming languages, on the other hand, in favor of the iconic function.
With respect to programming languages, while each new generation meant the strengthening of the symbolic function of the signs used, with respect to the programming discipline the situation is different: the iconic and the indexical functions are more widely invoked than the symbolic function.
REFERENCES
AUGARTEN, Stan.
1984. Bit By Bit; An Illustrated History of Computers (New York: Ticknor and Fields).
BALANESCU, Tudor and Marian GHEORGHE.
1987. "Some Semiotical Aspects in Programming Languages" in Proceedings of the Seventh International Congress of Cybernetics and Systems, ed. J. Rose (Lytham St. Annes, UK: Thales Publications, Ltd.), 934-938.
BIEDERMAN, Irving.
1995. "Visual Object Recognition" in An Invitation to Cognitive Science, Vol. 2: Visual Cognition, ed. S. M. Kosslyn and D. N. Osherson (Cambridge, MA: The MIT Press), 121-166.
CALUDE, Cristian and Solomon MARCUS.
1981. "Man-Computer Communication", Revue Roumaine de Linguistique 26.2, 103-112.
DRETSKE, Fred.
1995. "Meaningful Perception" in An Invitation to Cognitive Science, Vol.: 2 Visual Cognition, ed. S. M. Kosslyn and D. N. Osherson (Cambridge, MA: The MIT Press), 331-352.
GUIRAUD, Pierre.
1971. La sémiologie (Paris: Presses Universitaires de France).
JOHNSON, Gerald G.
1994. "Of Metaphor And The Difficulty Of Computer Discourse", Comm. ACM 37.12, 97-102.
KOSSLYN, Stephen M.
1995. "Mental Imagery" in An Invitation to Cognitive Sci ence, Vol.: 2 Visual Cognition, ed. S. M. Kosslyn and D. N. Osherson (Cambridge, MA: The MIT Press), 267-296.
LAUDON, Kenneth C.,Carol Guercio TRAVER, and Jane P. LAUDON.
1997. Information Technology; Concepts And Issues, 2nd. ed, (Cambridge, MA: Course Technology).
MARCUS, Solomon
1997. Language, Logic, Cognition and Computation (Tarragona: University of Tarragona Press).
MARCUS, Solomon and Sanda Monica TATARAM.
1987. "The Feed-Back As Antinomy; The Example Of Human Communication" in Proceedings of the Seventh International Congress of Cybernetics and Systems, ed, J. Rose (Lytham St. Annes, UK: Thaïes Publications, Ltd.), 962-966
MARCUS, Solomon.
1979. Signs About Signs (Bucuresti: Editura Stiintifica si En ciclopedica). [ in Romanian]
NAKAYAMA, Ken, Zijiang, J. HE, and Shinsuke SHIMOTO.
1995. "Visual Surface Representation: A Critical Link between Lower-Level and Higher-Level Vision" in An Invitation to Cognitive Science, Vol.: 2 Visual Cogni tion, ed. S. M. Kosslyn and D. N. Osherson (Cambridge, MA: The MIT Press), 1-70.
PEIRCE, Charles Sanders.
1931-1958. Collected Papers of Charles Sanders Peirce. Vol. 1: Principles of Philosophy; Vol. 2: Elements of Logic Vol. 3: Exact Logic (Published Papers); Vol. 4: The Simplest Mathematics; 5: Pragmatism and Pragmaticism; Vol. 6: Scientific Metaphysics, ed. Charles Hartshorne and Paul Weiss; Vois. 7: Science and Philosophy; Vol. 8: Reviews, Correspondence, and Bibliography, ed. Arthur W. Burks (Cambridge, MA: Harvard University Press).
NAUR, Peter.
1975. "Programming Languages, Natural Languages, and Mathematics", Comm. ACM 18.12, 676-683.
STAIR, Ralph M.
1997. An Introduction To Information Systems (Cambridge, MA: Course Technology).
VOSS, Greg.
1991. Object-Oriented Programming: An Introduction (New York: McGraw-Hill).
XIA, Yun.
2001. "Human-Computer Interaction: Sign and Its Application in the Digital Representation and Code Conversion in Computers", The American Journal of SEMIOTICS 17.3, 369-390.
Sanda Monica Tartaram
Bucharest University, Romania
Biography
SANDA MONICA TATARAM: (b. 3 October 1952). Academic Status: Associate Professor of Mathematics and Computer Science,University of Bucharest, Romania. Mail Address: Mathematics and Computer Science Dept, 14, Academiei Str., 70109 Bucharest, Romania. E-mail: <[email protected]> or <tataram@funinf. cs.unibuc.ro> or <[email protected]>. Internet Page: <http:// funinf.unibuc.ro/tataram/index.htm> Dept. Tel.: +402-1-314-3508 (ext.145); Personal Tel.: +402-1-314.5898; Fax: +402-1-313-1760. Educational Background: Ph.D. in Mathematics, University of Bucharest, 1984. Research Interests: (1) Recursive Function Theory, (2) Formal Languages, (3) Semiotics, and (4) Mathematical Models for Social Sciences. Professional Background: Visiting Associate Professor: Computer Engineering and Computer Science Dept., University of Missouri, Columbia, USA (Winter Semester 2000): NATO Research Grant: University "Rovira i Virgili", Tarragona, Spain (2001-2002 academic year).
Bibliography
Author selection of items. Complete list available from the author.
SANDA MONICA TATARAM.
1999. "The Semiotics of Man-Computer Communication: from WIMP to SILK"; Proceedings of the 7th International Congress of the International Association for Semiotic Studies (IASS/AIS), 6-11 October, Dresden, Germany (CD-ROM).
1994. "Syntactic Projectivity in Programming Languages (TurboPascal and Logo)" in Current Issues in Mathematical Linguistics, ed. Carlos Martin-Vide (Amsterdam: Elsevier Science Publ. B.V.), 389-398.
1985. "Man - Car Communication within the Context of Traffic Signs", Rev. Roum. Linguistique, Cahiers de Linguistique Théorique et Aplliquée (CLTA) 22.2, 187-193.
1984. "Ackermann-Peter's Function Has Primitive Recursive Graph and Range", Found. Control Eng. [now: Foundations of Computing and Decision Sciences] 9.4, 177-180
SANDA MONICA TATARAM and Cristian CALUDE.
1983. "Universal Sequences of Primitive Recursive Functions", Rev. Roum. Math. Pures et Appl. 28.5, 381-390.
SANDA MONICA TATARAM and Solomon MARCUS.
1987. "Semiotics of Individual and Global Crises; Their Indicators and Interactions", Rev. Roum. Linguistique (CLTA) 24.1,57-76.
Copyright Semiotic Society of America Fall 2001