A Programming Language That Combines the Benefits of Static and Dynamic Typing

  1. Ortin, Francisco 1
  2. Garcia, Miguel 1
  1. 1 Universidad de Oviedo
    info

    Universidad de Oviedo

    Oviedo, España

    ROR https://ror.org/006gksa02

Libro:
Communications in Computer and Information Science
  1. José Cordeiro (ed. lit.)
  2. Maria Virvou (ed. lit.)
  3. Boris Shishkov (ed. lit.)

Editorial: Springer Berlin, Heidelberg

ISSN: 1865-0929 1865-0937

ISBN: 9783642295775 9783642295782

Año de publicación: 2013

Páginas: 72-87

Tipo: Capítulo de Libro

DOI: 10.1007/978-3-642-29578-2_5 GOOGLE SCHOLAR

Resumen

Dynamically typed languages have recently turned out to be suitablefor developing specific scenarios where dynamic adaptability or rapid prototyping are important issues. However, statically typed programming languagescommonly offer more opportunities for compiler optimizations and earlier typeerror detection. Due to the benefits of both approaches, some programming languages such as C# 4.0, Boo, Visual Basic or Objective-C provide both staticand dynamic typing. We describe the StaDyn programming language that supports both type systems in the very same programming language. The main contribution of StaDyn is that it keeps gathering type information at compile timeeven over dynamically typed references, obtaining a better runtime performance, earlier type error detection, and an intuitive combination of staticallyand dynamically typed code

Referencias bibliográficas

  • Pierce, B.C.: Types and Programming Languages. The MIT Press (2002)
  • Venners, B.: Twitter on Scala. A conversation with Steve Jenson, Alex Payne, and Robey Pointer. Artima Developer (April 2009)
  • Meijer, E., Drayton, P.: Dynamic typing when needed: The end of the cold war between programming languages. In: Proceedings of the OOPSLA Workshop on Revival of Dynamic Languages (2004)
  • Abadi, M., Cardelli, L., Pierce, B., Plotkin, G.: Dynamic typing in a statically typed lan-guage. ACM Transactions on Programming Languages and Systems 13(2), 237–268 (1991)
  • Abadi, M., Cardelli, L., Pierce, B., Rémy, D., Taylor, R.W.: Dynamic typing in polymorphic languages. Journal of Functional Programming 5, 92–103 (1994)
  • Hürsch, W., Lopes, C.: Separation of concerns. Technical Report UN-CCS-95-03, North-eastern University, Boston, USA (1995)
  • Tucker, A.B.: Type Systems. The Computer Science and Engineering Handbook. CRC Press (1997)
  • Ortin, F., Garcia, M.: Union and intersection types to support both dynamic and static typing. Information Processing Letters 111(6), 278–286 (2011)
  • Ortin, F., Garcia, M.: Supporting Dynamic and Static Typing by means of Union and Intersection Types. In: International Conference on Progress in Informatics and Computing (PIC), pp. 993–999 (2010)
  • Cardelli, L.: Basic polymorphic typechecking. Science of Computer Programming (8), 147–172 (1988)
  • Milner, R.: A theory of type polymorphism in programming. Journal of Computer and System Sciences 17, 348–375 (1978)
  • Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)
  • Freeman, T., Pfenning, F.: Refinement types for ML. In: Proceedings of the Conference on Programming Language Design and Implementation (PLDI), pp. 268–277 (1991)
  • Plevyak, J., Chien, A.: Precise concrete type inference for object-oriented languages. In: Proceeding of the OOPSLA Conference. SIGPLAN Notices, vol. 29(10) (1994)
  • Pierce, B.C.: Programming with intersection types and bounded polymorphism. Technical Report CMU-CS-91-106, School of Computer Science, Pittsburgh, PA, USA (1992)
  • Bracha, G.: Pluggable type systems. In: OOPSLA Workshop on Revival of Dynamic Languages (October 2004)
  • Canning, P., Cook, W., Hill, W., Olthoff, W., Mitchell, J.: F-bounded polymorphism for object-oriented programming. In: Proceedings of the International Conference on Functional Programming Languages and Computer Architecture, pp. 273–280 (1989)
  • Odersky, M., Sulzmann, M., Wehr, M.: Type inference with constrained types. Theory and Practice of Object Systems 5(1), 35–55 (1999)
  • Landi, W., Ryder, B.: A safe approximate algorithm for interprocedural pointer aliasing. In: Conference on Programming Language Design and Implementation, pp. 473–489 (1992)
  • Diwan, A., McKinley, K., Moss, J.: Type-based alias analysis. In: Proceedings of the Conference on Programming Language Design and Implementation (PLDI 1991), pp. 106–117 (1991)
  • Emami, M., Ghiya, R., Hendren, L.: Context-sensitive inter-procedural points-to analysis in the presence of function pointers. In: Proceedings of Conference on Programming Language Design and Implementation, pp. 224–256 (1994)
  • Appel, A.: Modern Compiler Implementation in ML. Cambridge University Press (1998)
  • Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)
  • Ortin, F., Zapico, D., Cueva, J.M.: Design patterns for teaching type checking in a compiler construction course. IEEE Transactions on Education 50(3), 273–283 (2007)
  • Redondo, J.M., Ortin, F.: Optimizing reflective primitives of dynamic languages. International Journal of Software Engineering and Knowledge Engineering 18(6), 759–783 (2008)
  • Ortin, F., Zapico, D., Perez-Schofield, J.B.G., Garcia, M.: Including both static and dy-namic typing in the same programming language. IET Software 4(4), 268–282 (2010)
  • Ortin, F., Redondo, J.M., Perez-Schofield, J.B.G.: Efficient virtual machine support of runtime structural reflection. Science of Computer Programming 74 (2009)
  • Bracha, G., Griswold, D.: Strongtalk: Typechecking Smalltalk in a production environment. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), pp. 215–230. ACM, New York (1993)
  • Shalit, A.: The Dylan reference manual: the definitive guide to the new object-oriented dynamic language. Addison Wesley Longman Publishing Co. (1996)
  • Codehaus Foundation: Boo, a wrist friendly language for the CLI (2006), http://boo.codehaus.org
  • Cartwright, R., Fagan, M.: Soft Typing. In: Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (PLDI 1991), pp. 278–292 (1991)
  • Thatte, S.: Quasi-static typing. In: Proceedings of the 17th Symposium on Principles of Programming Languages (POPL), pp. 367–381. ACM, New York (1990)
  • Flanagan, C., Freund, S., Tomb, A.: Hybrid types, invariants, and refinements for imperative objects. In: International Workshop on Foundations and Developments of Object-Oriented Languages, FOOL (2006)
  • Siek, J.G., Taha, W.: Gradual Typing for Objects. In: Bateni, M. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 2–27. Springer, Heidelberg (2007)
  • Siek, J.G., Vachharajani, M.: Gradual typing with unification-based inference. In: Dynamic Languages Symposium (July 2008)