Nothing Special   »   [go: up one dir, main page]

skip to main content
article
Free access

Four Dimensions of programming-language independence

Published: 01 March 1992 Publication History

Abstract

The features of programming languages can be evaluated according to how they affect programming-language independence in four dimensions. The four dimensions are: 1) machine independence, 2) problem independence, 3) human independence, and 4) time independence. This paper presents a definition of independence, and shows how that definition applies to each of the dimensions. By organizing language features in this way, the strengths and weaknesses of many language designs can be identified, and new directions for programming-language research become apparent. This paper also presents the advantages of, and methods of achieving, independence in these dimensions, and occasionally presents the disadvantages of independence.Each of the four dimensions is treated as a discrete domain, and the elements of each domain are classified according to their properties. The elements of the machine domain are classified according to (a) architecture, (b) machine size, (c) peripheral devices, and (d) operating system. The problem domain is classified according to (a) discipline, (b) problem context, (c) system mode, and (d) problem-solving methods. The human domain is classified according to (a) user qualifications, (b) natural language spoken, (c) the three classes designers, implementors, and users, and (d) independence in the class implementors is considered alone. Finally the time dimension is treated in three time scales: (a) program processing, (b) project development, and (c) language evolution.

References

[1]
1. ANSI X3.53-1976, American National Standard Programming Language PL/I. American National Standard Institute Inc., New York (Aug. 1976).
[2]
2. United States Department of Defense, Reference Manual for the Ada Programming Language. (1980).
[3]
3. MACSYMA Reference Manual. The Mathlab Group, Laboratory for Computer Science, MIT (Jan. 1983). Two volumes.
[4]
4. ANS X3J3, "Proposals accepted for future Fortran." Standing Document S6.86., American National Standard Institute Inc., New York (May 1983).
[5]
5. Standards Committee of the IEEE Computer Society, "An American National Standard IEEE Standard for Binary Floating-Point Arithmetic." ACM SIGPLAN Notices, Vol. 22, No. 2, pages 9-25 (Feb. 1987).
[6]
6. Abelson, Harold and diSessa, Andrea A., Turtle Geometry: The Computer as a Medium for Exploring Mathematics. MIT Press, Cambridge, Mass. (1981).
[7]
7. Aho, Alfred V., Kernighan, Brian W., and Weinberger, Peter J., Awk -- A Pattern Scanning and Processing Language (Second Edition). Bell Laboratories, Murray Hill, New Jersey 07974 (Sep. 1978).
[8]
8. Aho, Alfred V., Sethi, Ravi., and Ullman, Jeffrey D., Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, Mass. (1986).
[9]
9. Allen, Randy and Kennedy, Ken, "Automatic translation of FORTRAN programs to vector form." ACM TOPLAS, Vol. 9, No. 4, pages 491-542 (Oct. 1987).
[10]
10. Backus, John, "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs." Communications of the ACM, Vol. 21, No. 8, pages 613-641 (Aug. 1978).
[11]
11. Boyd, Joanne L. and Karam, Gerald M., "Prolog in 'C'." ACM SIGPLAN Notices, Vol. 25, No. 7, pages 63-71 (July 1990).
[12]
12. Brown, Peter J., Macro Processors and Techniques for Portable Software. John Wiley & Sons, London (1976).
[13]
13. Brown, Peter J., Software Portability: An Advanced Course. Cambridge University Press, Cambridge, England (1979).
[14]
14. Buhr, P. A., "A Programming System." Ph.D. Thesis, p. 226, Dept. of Computer Science, University of Manitoba, Winnipeg, Manitoba, Canada, R3T 2N2 (1985).
[15]
15. Buhr, P. A. and Zarnke, C. R., "A design for integration of files into a strongly typed programming language." in Proceedings IEEE Computer Society 1986 International Conference on Computer Languages, pp. 190-200, Miami, Florida (Oct. 1986).
[16]
16. Cardelli, Luca and Wegner, Peter, "On understanding types, data abstraction, and polymorphism." ACM Computing Surveys, Vol. 17, No. 4, pages 471- 522 (Dec. 1985).
[17]
17. Chang, Shi-Kuo, Principles of Visual Programming Systems. Prentice Hall, Englewood Cliffs, New Jersey (1990).
[18]
18. Char, Bruce W., Geddes, Keith O., Gentleman, W. Morven, and Gonnet, Gaston H., "The design of Maple: a compact, portable, and powerful computer algebra system." in Proceedings of the 1983 European Computer Algebra Conference (1983).
[19]
19. Clocksin, William F. and Mellish, Christopher S., Programming in Prolog, Third, Revised and Extended Edition. Springer-Verlag, Berlin (1987).
[20]
20. Coutant, Cary A., Griswold, Ralph E., and Wampler, Stephen B., "Reference Manual for the Icon Programming Language." TR 81-4a, Department of Computer Science, The University of Arizona, Tucson, Arizona 85721 (July 1982).
[21]
21. Dahl, O.-J., Dijkstra, E. W., and Hoare, C. A. R., Structured Programming. Academic Press, London (1972).
[22]
22. De Remer, F. and Kron, H., "Programming-in-the-large versus programming-in-the-small." IEEE Transactions on Software Engineering, Vol. SE-2, No. 2, pages 80-86 (June 1976).
[23]
23. Dijkstra, Edsgar W., A Discipline of Programming. Prentice-Hall, Englewood Cliffs, N.J. (1976).
[24]
24. Eastman, C. M., "A comment on English neologisms and programming language keywords." Communications of the ACM, Vol. 25, No. 12, pages 938- 940 (Dec. 1982).
[25]
25. Elspas, Bernard, Levitt, Karl N., Waldinger, Richard J., and Waksman, Abraham, "An assessment of techniques for proving program correctness." ACM Computing Surveys, Vol. 4, No. 2, pages 97-145 (June 1972).
[26]
26. Ganapathi, Mahadevan, Fischer, Charles N., and Hennessy, John L., "Retargetable compiler code generation." ACM Computing Surveys, Vol. 14, No. 4, pages 573-592 (Dec. 1982).
[27]
27. Gannon, John D. and Horning, J. J., "Language design for programming reliability." IEEE Transactions on Software Engineering, Vol. SE-1, No. 2, pages 179-191 (June 1975).
[28]
28. Gehani, Narain, "Units of measure as a data attribute." Computer Languages, Vol. 2, No. 3, pages 93-111, Pergamon Press, Great Britain (1977).
[29]
29. Ghezzi, Carlo and Jazayeri, Mehdi, Programming Language Concepts, Second Edition. John Wiley & Sons, Inc., New York (1987).
[30]
30. Gilman, Leonard and Rose, Allen J., APL: An Interactive Approach. Second Edition. John Wiley & Sons Inc. (1974).
[31]
31. Goguen, Joseph A. and Meseguer, José., "Unifying functional, object-oriented, and relational programming with logical semantics." in Research Directions in Object-Oriented Programming., ed. Bruce Shriver and Peter Wegner, pp. 417-477, MIT Press, Cambridge, Mass. (1987).
[32]
32. Goldberg, A. and Robson, D., SMALLTALK-80. Addison-Wesley, Reading, Mass. (1983-1984). Four volumes.
[33]
33. Goodyear, Peter, LOGO: A Guide to Learning Through Programming. Ellis Horwood Limited, Chichester, England (1984).
[34]
34. Griswold, R. E., Poage, J. F., and Polonsky, I. P., The SNOBOL4 Programming Language, second edition. Prentice-Hall, Inc., Englewood Cliffs, New Jersey (1971).
[35]
35. Hall, Andrew D., "The Altran system for rational function manipulation--a survey." Communications of the ACM, Vol. 14, No. 8, pages 517-521 (Aug. 1971).
[36]
36. Halstead, Maurice H., Elements of Software Science. Elsevier, New York (1977).
[37]
37. Hamacher, V. Carl, Vranesic, Zvonko G., and Zaky, Safwat G., Computer Organization. Third Edition. p. 210, McGraw-Hill, New York (1990).
[38]
38. Harrison, Michael A., Introduction to Formal Language Theory. Addison-Wesley, Reading, Massachusetts (1978).
[39]
39. Heering, Jan and Klint, Paul, "Towards monolingual programming environments." ACM TOPLAS, Vol. 7, No. 2, pages 183-213 (Apr. 1985).
[40]
40. Highland, Harold Joseph, Ed., "The workshop on software metrics SCORE 82." ACM SIGMETRICS Performance Evaluation Review, Vol. 11, No. 2 & 3, pages 31-126 & 32-128 (1982).
[41]
41. Hilfinger, Paul N., Abstraction Mechanisms and Language Design. ACM Distinguished Dissertations., MIT Press, Cambridge, Mass. (1983).
[42]
42. Hoare, Charles Anthony Richard, "The emperor's old clothes." Communications of the ACM, Vol. 24, No. 2, pages 75-83 (Feb. 1981).
[43]
43. Hoare, C. A. R., "An axiomatic basis of computer programming." Communications of the ACM, Vol. 12, No. 10, pages 576-580 (Oct. 1969).
[44]
44. Hopper, Grace Murray, "Keynote address, ACM SIGPLAN history of programming languages conference (June 1978)." in History of Programming Languages, ed. Richard C. Wexelblat, pp. 7-24, Academic Press (1981). (Exact reference: page 20 paragraph 2.).
[45]
45. House, R. T., "A proposal for an extended form of type checking." The Computer Journal, Vol. 26, No. 4, pages 366-374, Wiley Heyden Ltd. (1983).
[46]
46. Johnson, S. C., "YACC-Yet another compiler compiler." Tech. Rep. CSTR 32, Bell Labs., Murray Hill, N.J. (1974).
[47]
47. Joy, William, Man csh(1): The UNIX man page for the C-shell command language. University of California, Berkeley, Berkeley, California (June 1986).
[48]
48. Karr, Michael and Loveman III, David B., "Incorporation of units into programming languages." Communications of the ACM, Vol. 21, No. 5, pages 385- 391 (May 1978).
[49]
49. Kernighan, Brian W., Little Languages. (1985). Colloquium presented at the University of Waterloo.
[50]
50. Kernighan, Brian W. and Ritchie, Dennis M., The C Programming Language, Second Edition. Prentice Hall, Englewood Cliffs, New Jersey (1988).
[51]
51. Knuth, Donald E., "Literate programming." The Computer Journal, Vol. 27, No. 2, pages 97-111 (May 1984).
[52]
52. Korson, Tim. and McGregor, John D., "Understanding object-oriented: a unifying paradigm." Communications of the ACM, Vol. 33, No. 9, pages 40-60 (Sep. 1990).
[53]
53. Leinbaugh, Dennis W., "Indenting for the compiler." ACM SIGPLAN Notices, Vol. 15, No. 5, pages 41-48 (May 1980).
[54]
54. Lesk, M. E. and Schmidt, E., Lex - A Lexical Analyzer Generator. Bell Laboratories, Murray Hill, New Jersey 07974.
[55]
55. Levien, Raph, "Visual programming." BYTE, Vol. 11, No. 2, pages 135-144 (Feb. 1986).
[56]
56. Levine, John, "Why a LISP-based command language?" ACM SIGPLAN Notices, Vol. 15, No. 5, pages 49-53 (May 1980).
[57]
57. Loy, Gareth and Abbott, Curtis, "Programming languages for computer music synthesis, performance, and composition." ACM Computing Surveys, Vol. 17, No. 2, pages 235-265 (June 1985).
[58]
58. Männer, R., "Strong typing and physical units." ACM SIGPLAN Notices, Vol. 21, No. 3, pages 11-20 (Mar. 1986).
[59]
59. Marcotty, Michael, Ledgard, Henry F., and Bochmann, Gregor V., "A sampler of formal definitions." ACM Computing Surveys, Vol. 8, No. 2, pages 191- 276 (June 1976).
[60]
60. McCarthy, John, "History of LISP." in History of Programming Languages, ed. Richard C. Wexelblat, pp. 173-185, Academic Press (1981). Presented at the ACM SIGPLAN History of Programming Languages Conference (June 1978).
[61]
61. Meyer, Bertrand., Object Oriented Software Construction . Prentice-Hall (1988).
[62]
62. Moran, Thomas P., Guest ed., "Special issue: the psychology of human computer interaction." ACM Computing Surveys, Vol. 13, No. 1, pages 1-141 (Mar. 1981).
[63]
63. Naur, Peter, Ed., "Revised report on the algorithmic language ALGOL 60." Communications of the ACM, Vol. 6, No. 1, pages 1-17 (Jan. 1963).
[64]
64. Nygaard, Kristen and Dahl, Ole-Johan, "The development of the SIMULA languages." in History of Programming Languages, ed. Richard C. Wexelblat, pp. 439-480, Academic Press (1981). Presented at the ACM SIGPLAN History of Programming Languages Conference (June 1978).
[65]
65. Organick, Elliot I., The Multics System: An Examination of Its Structure. MIT Press, Cambridge, Mass. (1972).
[66]
66. Perrott, R. H. and Zarea-Aliabadi, A., "Supercomputer languages." ACM Computing Surveys, Vol. 18, No. 1, pages 5-22 (Mar. 1986).
[67]
67. Radensky, Atanas, "Toward integration of the imperative and logic programming paradigms: Horn-clause programming in the Pascal environment." ACM SIGPLAN Notices, Vol. 25, No. 2, pages 25-34 (Feb. 1990).
[68]
68. Raeder, Georg, "A survey of current graphical programming techniques." IEEE Computer, Special Issue on Visual Programming, Vol. 18, No. 8, pages 11-25 (Aug. 85).
[69]
69. Ripley, G. David and Druseikis, Frederick C., "A statistical analysis of syntax errors." Computer Languages, Vol. 3, No. 4, pages 227-240, Pergamon Press, Great Britain (1978).
[70]
70. Sadewall, Erik, "Programming in an interactive environment: the "LISP" experience." ACM Computing Surveys, Vol. 10, No. 1, pages 35-71 (Mar. 1978).
[71]
71. Schwartz, J. T., Dewar, R. B. K., Dubinsky, E., and Schonberg, E., Programming With Sets: An Introduction to SETL. Springer-Verlag, New York (1986).
[72]
72. Skillicorn, David B., "Architecture-Independent Parallel Computation." Computer, Vol. 23, No. 12, pages 38-50 (Dec. 1990).
[73]
73. Teitelbaum, Tim and Reps, Thomas, "The Cornell program synthesizer: a syntax-directed programming environment." Communications of the ACM, Vol. 24, No. 9, pages 563-573 (Sept. 1981).
[74]
74. Tennent, R. D., "The denotational semantics of programming languages." Communications of the ACM, Vol. 19, No. 8, pages 437-453 (Aug. 1976).
[75]
75. Tremblay, Jean-Paul and Sorenson, Paul G., The Theory and Practice of Compiler Writing. McGraw-Hill, New York (1985).
[76]
76. Van Wijngaarden, A., Mailloux, B. J., Peck, J. E. L., Koster, C. H. A., Sintzoff, M., Lindsey, C. H., Meertens, L. G. L. T., and Fisker, R. G., Revised Report on the Algorithmic Language Algol 68. Springer-Verlag, Berlin (1976).
[77]
77. Wadge, William W. and Ashcroft, Edward A., Lucid, the Dataflow Programming Language. Academic Press, London (1985).
[78]
78. Wallis, Peter J. L., Portable Programming. The Macmillan Press Ltd., London (1982).
[79]
79. Wegner, Peter, "Dimensions of object-based language design." OOPSLA '87 Conference Proceedings, Special Issue of ACM SIGPLAN Notices, Vol. 22, No. 12, pages 168-182 (Dec. 1987).
[80]
80. Wegner, P., "The Vienna definition language." ACM Computing Surveys, Vol. 4, No. 1, pages 5-63 (Mar. 1972).
[81]
81. Wells, Mark B., "A potpourri of notational pet peeves (and their resolution in Modcap)." ACM SIGPLAN Notices, Vol. 21, No. 3, pages 21-30 (Mar. 1986).
[82]
82. Wirth, Niklaus, Programming in Modula-2, Fourth Edition. Springer-Verlag, Berlin (1988).
[83]
83. Wolberg, John R., Conversion of Computer Software. Prentice-Hall Inc., Englewood Cliffs, New Jersey (1983).
[84]
84. Xenakis, John, "PL/I-FORMAC interpreter." in Proceedings of the Second Symposium on Symbolic and Algebraic Manipulation (Los Angeles, March, 1971), ed. S. R. Petrick, pp. 105-114, ACM, New York (1971).
[85]
85. Yourdon, Edward Nash, Ed., Classics in Software Engineering. Yourdon Press, New York (1979).

Cited By

View all
  • (2005)Using partial evaluation in support of portability, reusability, and maintainabilityCompiler Construction10.1007/3-540-61053-7_63(208-222)Online publication date: 7-Jun-2005
  • (1994)Syntactic adaptability of programming languagesCybernetics and Systems Analysis10.1007/BF0236643330:2(298-305)Online publication date: Mar-1994
  • (1992)Functional programming is not self-modifying codeACM SIGPLAN Notices10.1145/141018.14102127:11(13-14)Online publication date: 1-Nov-1992

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 27, Issue 3
March 1992
51 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/130854
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 1992
Published in SIGPLAN Volume 27, Issue 3

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)122
  • Downloads (Last 6 weeks)11
Reflects downloads up to 14 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2005)Using partial evaluation in support of portability, reusability, and maintainabilityCompiler Construction10.1007/3-540-61053-7_63(208-222)Online publication date: 7-Jun-2005
  • (1994)Syntactic adaptability of programming languagesCybernetics and Systems Analysis10.1007/BF0236643330:2(298-305)Online publication date: Mar-1994
  • (1992)Functional programming is not self-modifying codeACM SIGPLAN Notices10.1145/141018.14102127:11(13-14)Online publication date: 1-Nov-1992

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media