Main

Programming language and Programming Archives

Kanada, Y., Graduation Thesis, University of Tokyo, 1979.

[ 日本語のページ ]
[ Paper PDF file (8 MB !) (in Japanese) ]
[ No English abstract is available. ]

Introduction to this research theme: Programming Language Processing for Vector / Parallel Computers

P.S. I designed a programming language for a multi-computer system, and I studied implementation methods too, but I could not finish implementing a compiler. This paper is my graduation paper, and it was influenced by the Communicating Sequential Processes by C. A. R. Hoare.

Keywords: Programming language, Parallel processing, Communicating Sequential Processes, Multi computer, Multi processor

Yasusi Kanada, E. C. C. Center Report, No. 13, pp. 3-25, 1979.

[ 日本語のページ ]
[ PDF file (in Japanese) ]

[No English abstract is available.]

Introduction to this research theme: Programming Language Processing for Scalar Computers

This is not a paper. This is a manual on the difference between the Pascal used in the E. C. C. and the standard Pascal. In the E. C. C., the compiler developed by Kanada was introduced, but this manual is on the original compiler.

Keywords: Programming language, Pascal

T.KY., I/O Extra Number: System Program Library 1, pp. 145-156, 1980 (in Japanese).

[ 日本語のページ ]
[ PDF file ]

Abstract: I wrote a "text editor", which you can edit programs and data in character strings, by using BASIC. A text editor is very useful when handling lots of data such as when processing grade points. So if you have not yet tried one, I strongly recommend using this editor.

Note: T.KY. was the pen name used by Kanada. There is a related blog entry (currently Japanese only).

Keywords: Apple II, Text editor, Basic

Kanada, Y., Proc. of 21st Programming Symposium, pp. 143-152, 1980 (in Japanese).

[ 日本語のページ ]
[ Paper PDF file (in Japanese) ]

[No English abstract is available.]

Introduction to this research theme: Programming Linguistics

Keywords: Pascal, Programming language processor, Compiler

Kanada, Y., Master's Thesis, University of Tokyo Graduate School, 1981 (in Japanese).

[ 日本語のページ ]
[ Paper PDF file (6 MB !) (in Japanese) ]

Introduction to this research theme: Programming Linguistics

Abstract

If we recognize that programming languages are not languages for machines but are languages that human beings write and read, we can see that studies on them rather belong to humanities. This recognition enables possibility to study programming languages using methods of linguistics. This recognition also leads us to find significance of comparative studies on programming languages and natural languages.

Until now, some software scientists have had interests on linguistic research on programming languages, but they seems not to have performed it. So I believe that this paper should establish the basis of linguistic research. Therefore, in this paper, I show linguistic viewpoints on programming languages, show what types of analysis methods can and should be applied to which parts of programming languages, and try to show the direction of linguistic researches.

The most important linguistic viewpoints among the viewpoints shown in this paper are to regard programming languages as systems that include customs (i.e., rules that are not codified, or, not specified in language specifications), and to regard program unit names as relationships to the abstractions. In addition, in a study of applying linguistic methodology to programming languages, this paper lists and explains several structural similarities to natural languages. This paper also try to show the research direction of the fields of programming linguistics from morphology to semantics. Among them, one of the most important branch (of semantics) is research of ambiguity in programming languages.

Linguistic researches mainly target existing programs. Although this paper does not go deep into analysis of existing programs, I believe future research projects will find many clues from this paper.

Contents

  1. Introduction
    1. Research fields that relate to programming languages
    2. Significance of contrastive research on programming and natural languages
  2. What are programming lanuguages?
    1. Three expressions of programming languages
    2. Rules of programming languages
      1. Codified rules and non-codified rules 1
      2. Are there non-cofified rules?
      3. Codified rules and non-codified rules 2
      4. Classification of codified rules
      5. Classification of rules by communicative function
      6. Rules of programming languages and rules of natural languages
      7. Flexibility of rules
      8. Complexity of rules
      9. Problems of linguistic research on rules
    3. Independence of programming lanugages
      1. Reasons for examining the independence
      2. Reasons that support dependence
      3. Reasons that support independence
      4. Examination from engineering viewpoint
    4. Understanding meanings
      1. Basic triangle
      2. Definition of "meaning"
    5. Characteristics of languages
      1. "Characteristics of natural languages": A. Communicative function, B. Arbitrariness of symbols, C. Systematic nature, D. Linearity of symbols and messages, E. Discreteness of units, F. Double articulation
      2. Do programming languages have characteristics of languages?: A. Communicative function, B. Arbitrariness of symbols, C. Systematic nature, D. Linearity of symbols and messages, E. Discreteness of units, F. Double articulation
    6. Other characteristics of programming languages
      1. Ambiguity
      2. Closeness and evolutionary nature
      3. Non-speakability of programming languages
      4. Frequency of naming and scope of words
      5. Progams are "used" and rewritten
    7. Non-linguistic part of programming languages
      1. Nature of expressions A. Non double articulation, B. Non-linearity
      2. Meaning of existence of non-linguistic part
    8. Variety and changes of programming languages
  3. Programming linguistics and its research fields
    1. Individual research
      1. Fields of individual research
      2. Syntax
      3. Semantics
    2. Comparative and contrastive research
  4. Morphology -- an initial step
    1. Classification of symbols and their structures
    2. Articulation of identifiers
    3. Structure of variable names
    4. Structure of calls
      1. Structure in language specifications
      2. Structure of function calls
      3. Structure of procedure calls
      4. Consideration on structure of procedure calls from engineering viewpoint
    5. Contraction of identifiers
      1. Restrictions of identifier length and solutions
      2. Contraction rules
  5. Research on ambiguities
    1. General meaning, polysemy, and homonymy
    2. Causes of polysemy and homonymy
    3. Needs of amgiguity resolution
    4. Resolution of polysemy and homonymy
    5. Meaning of ambiguities
  6. Conclusion
  7. References
  8. Acknowledgments

P.S. (2007)

A paper that analyzes programming languages by methods of (human) linguistics, i.e., humanistically. (Linguistically, there is not so many differences in programming lanugages between 1981 and now. However, data description languages, especially XML, which were not widely used, are now widely used. I think we will have important knowledge by analyzing XML linguistically.)

Keywords: Programming linguistics, Linguistics, Software linguistics, Non-codified rule, Arbitrariness, Non-linearity, Discreteness, Non double articulation, Ambiguity, Closedness, Evolutionary nature, Scope, Morphology, Polysemy, Homonymy

Kanada, Y. and Yasumura, M. 27th National Conference, 7P-2, Information Processing Society of Japan, 1983 (in Japanese).

[ 日本語のページ ]
[ Paper PDF file ]

Keywords: Vectorization, Programming language processor, Supercomputing, Supercompiler, Vector register allocation

Tanaka, Y., Kanada, Y., and Yasumura, M., 27th National Conference, 7P-9, Information Processing Society of Japan, 1983 (in Japanese).

[ 日本語のページ ]
[ Paper PDF file ]

Keywords: Vectorization, Programming language processor, Supercomputing, Supercompiler, Dataflow analysis

Yasumura, M., Tanaka, Y., Kanada, Y., Aoyama, A., Int'l Conf. on Parallel Processing, IEEE, pp. 258-290, 1984.

[ 日本語のページ ]
[ Draft paper PDF file ]

Introduction to this research theme: Programming Language Processing for Vector / Parallel Computers

Keywords: Vectorization, Programming language processor, Supercomputing, Supercompiler

Kanada, Y., Ishida, K., and Nunohiro, E., Journal of Information Processing Society of Japan, Vol. 28, No. 6, pp. 567-576, 1987.

[ 日本語のページ ]
[ PDF paper entrance (IPSJ) ]

[No English abstract is available.]

Introduction to this research theme: Programming Language Processing for Vector / Parallel Computers

Keywords: Programming language processor, Vectorization, Vector processing, Array dataflow analysis, Supercomputing, Supercompiler

Gotou, S., Tanaka, Y., Iwasawa, K., Kanada, Y., and Aoyama, A., Journal of Information Processing, Vol. 11, No. 1, pp. 22-31, 1987.

[ 日本語のページ ]
[ PDF paper entrance (IPSJ) ]

Abstract: A new FORTRAN 77/HAP compiler for Hitachi's supercomputers S-810 and S-820 has been implemented featuring new compiling techniques to enable users to easily obtain higher performance. The most important element of this compiler is an advanced global data flow analysis method which determines whether vectorization as well as optimization can be applied or not. Also important are powerful program transformation techniques for vectorization and optimization to vectorize more portions of the programs and produce more efficient code. The performance improvement of this new compiler is compared with the performance of the previous compiler. It is also pointed out that these method and techniques can be applicable to other supercomputers as well.

Introduction to this research theme: Programming Language Processing for Vector / Parallel Computers

Keywords: Vectorization, Programming languege processor, Supercomputing, Supercompiler

Kanada, Y., not yet published, 1989.

[ 日本語のページ ]
[ Paper PDF file ]

Abstract: A loop-like control structure without using backtracking, or conjunctive iteration, is expressed using recursion in Prolog. However, recursion is too powerful to express an iteration, which needs more restrictive syntax and semantics. This paper presents a general-purpose iteration predicate do. Predicate do enables a programmer to write most iterations, such as arithmetical iterations, append, member, mapcar or reduce, and so on, more easily and in more readable way, in combination with the extended λ term, which is a concept similar to the λ expression in Lisp. Unification and logical variables in Prolog enables some extensive usage of the control structure compared with those of other programming languages, such as Lisp.

Keywords: Programming language, Control structure, Logic programming language, Prolog

Kanada, Y., IPSJ Summer Programming Symposium, separated (105-112), July, 1997. (in Japanese)

[ 日本語のページ ]
[ Paper PDF file (in Japanese) ]

Abstract: A JavaScript program in a Web page can clear the page content including the program itself and generate new content. The program can generate exactly the same content including the program itself. This means that a Web page can reproduce itself by JavaScript program that is included in the page. Although exact reproduction is useless, inexact reproduction, which transform part of the content, is usable for more practical purpose. For example, Web pages that change its view from outline mode to detail mode by clicking a button in the page can be implemented using this method. This method can also applicable to other types of documents, such as SGML or XML, if the document may contain self-reproductive program. Another method for reproducing Web pages without reproducing programs is also mentioned. Reproductive Web pages partially but really work on Netscape Navigator.

Introduction to this research theme: Self-reproduction of Web pages

Keywords: Self-reproduction, Programming language, JavaScript

Kanada, Y., ACM SIGPLAN Notices, Vol. 32, No. 11, pp. 49-56, November, 1997.

[ 日本語のページ ]
[ Paper PDF file (updated) ]
[ Paper PDF file (original) ]

Abstract: A JavaScript program in a Web page can clear the page content including the program itself and generate new content. The program can generate exactly the same content including the program itself. This means that a Web page can reproduce itself by JavaScript program that is included in the page. Although exact reproduction is useless, inexact reproduction, which transform part of the content, is usable for more practical purpose. For example, Web pages that change its view from outline mode to detail mode by clicking a button in the page can be implemented using this method. This method can also applicable to other types of documents, such as SGML or XML, if the document may contain self-reproductive program. Another method for reproducing Web pages without reproducing programs is also mentioned. Reproductive Web pages partially but really work on Netscape Navigator.

Introduction to this research theme: Self-reproduction of Web pages

Keywords: Self-reproduction, Programming language, JavaScript

Kanada, Y., Information Processing, vol. 44, No. 2, 2003.


[ 日本語のページ ]

Keywords: Nondeterministic algorithm