Main

Programming language and Programming Archives

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

[ 日本語のページ ]
[ Paper PDF file (> 4 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).

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

Introduction to this research theme: Programming Linguistics

Abstract

If we recognize that programming languages are not languages only for machines but are languages that human beings write and read [and used for human-to-human communication], 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, Semiotics, Semiology

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

Kanada, Y., IEICE 7th Network Virtualization SIG, July 2013.
[ 日本語ページ ]
[ Paper PDF file ]
[ Slides ]

Abstract: Network processors are used for high-performance programmable networks. However, programs for net- work processors are limited in portability and number of developers, so the development cost is high. To solve this problem, open, high-level, and portable programming language called “CSP” and a development environment called “+Net” have been developed. In this environment, high throughput can be obtained without programmers’ signifi- cant awareness of SRAM/DRAM distinction. A prototype using Cavium Octeon, a network processor, has been de- veloped, and it performs 7.5 Gbps or more in simple programs in an evaluation using part of the network virtualization platform.

Introduction to this research theme: Network virtualization

Keywords: Network processor, Programmability, Portability, SRAM, DRAM, Octeon, Network virtualization

Kanada, Y., 2nd International Workshop on Network Management and Monitoring (NetMM 2014), May 2014, http://dx.doi.org/10.1109/waina.2014.112
[ 日本語のページ ]
[ Paper PDF file ]
[ Slides PDF file ]

Abstract – A network processor (NP) usually contains multiple packet processing cores (PPCs) and a control processing core (CPC), and the synchronization and communication between CPC and PPCs, which is required for controlling an NP, is very complex. To reduce the complexity, a method for controlling packet processing in NPs by using PPCs is proposed. By means of this method, complex control messages are partially processed and divided into simplified control packets by a CPU outside the NP chip, and these packets are sent to a control-processing PPC. The control-processing PPC controls data-processing PPCs by using data-exchange mechanisms, such as a shared memory or an on-chip network, which are more uniform and simpler than those between a CPC and PPCs. This control method is applied to a virtual-link controlprocessing task and packet-processing tasks in a network node with a virtualization function. Both tasks are described by a hardware-independent high-level language called “Phonpl,” and communication between the PPCs is programmed following normal and uniform shared-memory semantics. As a result, programming the control-processing task and porting the program become much easier.

Introduction to this research theme: Network virtualization

Keywords: Network processors, Multi core, Control processing, Packet processing, Network virtualization

Yasusi Kanada, ACM SIGPLAN Workshop on Memory Systems Performance and Correctness (MSPC 2014), poster, June 2014.
[ 日本語のページ ]
[ Poster photo ]
[ Draft poster ]

Introduction to this research theme: Network virtualization

Poster:

Voting:

Session:

Keywords:

Kanada, Y., IPSJ Summer Programming Symposium 2014 (in Japanese), 2014-8
[ 日本語のページ ]
[ Slides (Japanese PDF version, no movie) ]
[ Slides (Japanese Keynote version, with movie, for Macintosh) ]
[ Slides (English PDF version, no movie) ]
[ Slides (English Keynote version, with movie, for Macintosh) ]
[ Paper PDF file (in Japanese) ]
[ Printing process (YouTube) ]

[ “3D turtle graphics ” Python library and usage example ]

English version of this paper (IJERA)

skewedPyramid.jpgAbstract: When creating forms by using a 3D printer, usually, a static (declarative) model designed by using a 3D CAD system is translated and sent to the printer. However, widely-used FDM-type 3D printers inputs a dynamical (procedural) program that describes control of motions of the print head and extrusion of the filament. If the program is expressed by a programming language or a library in a straight manner, 3D objects can be created by a method similar to turtle graphics. Such a library, “turtle 3D printing” library, which is open-source, was described by Python and used (tried). Although this problem has a problem that it cannot print in the air; however, if this problem is solved by an appropriate method, shapes drawn by 3D turtle graphics can be embodied by this method.

Introduction to this research theme: 3D shape formation technologies

Keywords: 3D printing, Three-dimensional printing, Solid Free-form Fabrication, SFF, Fused deposition modeling, FDM, Additive Manufacturing, 3D turtle graphics, Turtle graphics

Kanada, Y., Communications and Network, Vol. 7, pp. 55-69, http://dx.doi.org/10.4236/cn.2015.71006
[
Japanese page ]
[ paper PDF file ]

Abstract – Network processors (NPs) are widely used for programmable and high-performance networks; however, the programs for NPs are less portable, the number of NP program developers is small, and the development cost is high. To solve these problems, this paper proposes an open, high-level, and portable programming language called “Phonepl”, which is independent from vendor-specific proprietary hardware and software but can be translated into an NP program with high perfor- mance especially in the memory use. A common NP hardware feature is that a whole packet is stored in DRAM, but the header is cached in SRAM. Phonepl has a hardware-independent abstrac- tion of this feature so that it allows programmers mostly unconscious of this hardware feature. To implement the abstraction, four representations of packet data type that cover all the packet op- erations (including substring, concatenation, input, and output) are introduced. Phonepl have been implemented on Octeon NPs used in plug-ins for a network-virtualization environment called the VNode Infrastructure, and several packet-handling programs were evaluated. As for the eval- uation result, the conversion throughput is close to the wire rate, i.e., 10 Gbps, and no packet loss (by cache miss) occurs when the packet size is 256 bytes or larger.

Keywords: Network Processors, Portability, High-Level Language, Hardware Independence, Memory Usage, DRAM, SRAM, Network Virtualization

Kanada, Y., Int. Journal of Engineering Research and Applications (IJERA), Vol. 5, No 4, Part-5, April 2015, pp.70-77.
[ 日本語のページ ]
[ Paper PDF file (IJERA) ]
[ Paper PDF file (local) ]

この論文の日本語版 (IPSJ)

skewedPyramid.jpgAbstract: When creating shapes by using a 3D printer, usually, a static (declarative) model designed by using a 3D CAD system is translated to a CAM program and it is sent to the printer. However, widely-used FDM-type 3D printers input a dynamical (procedural) program that describes control of motions of the print head and extrusion of the filament. If the program is expressed by using a programming language or a library in a straight manner, solids can be created by a method similar to turtle graphics. An open-source library that enables “turtle 3D printing” method was described by Python and tested. Although this method currently has a problem that it cannot print in the air; however, if this problem is solved by an appropriate method, shapes drawn by 3D turtle graphics freely can be embodied by this method.

Introduction to this research theme: 3D shape formation technologies

Keywords: 3D printer, Turtle graphics, Fused Deposition Modeling, FDM

Kanada, Y., XIIIV Generative Art Conference (GA 2015), 2015-12.
[ 日本語のページ ]
[ Paper PDF file ]
[ Slides PDF file ]

Abstract: 3D models are usually designed by 3D modelling tools, which are not suited for generative art. This presentation proposes two methods for designing and printing generative 3D objects. First, by using a turtle-graphics-based method, the designer decides self-motion (self-centered motion) of a turtle and print a trajectory of the turtle as a 3D object (Fig. A). The trajectory is printed using a fused-deposition-modelling (FDM) 3D printer, which is the most popular type of 3D printer. Second, by using the assembly-and-deformation method, the designer assembles parts in a palette, each of which represents stacked filaments, applies deformations to the assembled model, and prints the resulting object by an FDM 3D printer. The designer can also map textures, characters, or pictures on the surface of the object. Various shapes can be generated by using the assembly-and-deformation method. If the initial model is a thin helix with a very low cylinder (i.e., an empty cylinder with a bottom), shapes like cups, dishes, or pods with attractive brilliance can be generated, and a globe and other shapes can be generated from a helix (Fig. B).

Introduction to this research theme: 3D shape formation technologies

GA2015-FigA.jpg

GA2015-FigB.jpg

Keywords: Design, Directed 3D printing, Fused deposition modelling (FDM)