Names, Bindings, Types and Scopes Names (Identifiers) Identifier Case Sensitivity Special Identifiers Variables Addresses

Total Page:16

File Type:pdf, Size:1020Kb

Names, Bindings, Types and Scopes Names (Identifiers) Identifier Case Sensitivity Special Identifiers Variables Addresses Names (Identifiers) • Design issues Names, Bindings, Types and – Maximum length? – Are connector characters allowed? Scopes – Are names case sensitive? – Are special words reserved words or keywords? • Length – FORTRAN I: maximum 6 Matt Evett – COBOL: maximum 30 – FORTRAN 90 and ANSI C: maximum 31 Dept. Computer Science – Ada: no limit, and all are significant Eastern Michigan Univ. – C++: no limit, but implementors often impose one (adapted from Sebesta’s slides) • Connectors – Pascal, Modula-2, and FORTRAN 77 don't allow – Others do Identifier Case Sensitivity Special Identifiers • Disadvantage: readability (names that look alike • Def: A keyword is a word that is special only in are different) certain contexts • worse in Modula-2 because predefined names – Example: Fortran’s REAL APPLE vs. REAL = 3.4 are mixed case (e.g. WriteCard) – Disadvantage: poor readability • C, C++, Java, and Modula-2 names are case • Def: A reserved word is a special word that sensitive cannot be used as a user-defined name • The names in other languages are not – C’s switch, case, etc. Variables Addresses • A variable is an abstraction of a memory • Abstract memory cell - the physical cell or cell collection of cells associated with a variable – The l-value of a variable is its address • Variables can be characterized as a sextuple – The r-value of a variable is its value of attributes: • A variable may have different addresses at – name, address, value, type, lifetime, and scope different times during execution. – Name - not all variables have them • A variable may have different addresses at – Address - the memory address with which it is different places in a program associated. – Value - the contents of the location with which • If two variable names can be used to access the variable is associated the same memory location, they are called aliases Aliases Variable Type & Value • Determines the range of values of variables • Creating aliases: and the set of operations that are defined for – Pointers, reference variables, Pascal variant values of that type; in the case of floating records, C and C++ unions, and FORTRAN EQUIVALENCE (and through parameters - point, type also determines the precision discussed in Ch 8) • Some of the original justifications for aliases are no longer valid; e.g. memory reuse in FORTRAN. Replace them with dynamic allocation Binding Binding Times • Def: A binding is an association, such as • Language design time--e.g., bind operator symbols between an attribute and an entity, or to operations between an operation and a symbol • Language implementation time--e.g., bind floating point type to an internal representation • Def: Binding time is the time at which a • Compile time--e.g., bind a variable to a type in C binding takes place. or Java • Load time--e.g., bind a FORTRAN 77 variable to a memory cell (or a C static variable) • Runtime--e.g., bind a nonstatic local variable to a memory cell Types of Bindings Typing Variables • Def: A binding is static if it occurs before • Type Bindings run time and remains unchanged throughout – How is a type specified? program execution. – When does the binding take place? • Def: A binding is dynamic if it occurs • If static, type may be specified by either an explicit during execution or can change during or an implicit declaration execution of the program. – Def: An explicit declaration is a statement used for declaring the types of variables – Def: An implicit declaration is a default mechanism for specifying types of variables (at the their first appearance in program) Example Typing Dynamic Type Binding • FORTRAN, PL/I, BASIC, and Perl provide • Specified through an assignment statement implicit declarations – e.g. APL: LIST ⇐ 2 4 6 8 vs. LIST ⇐ 17.3 – Advantage: writability – E.g. Lisp: (setq bob “hi”) vs. (setq bob 3) – Disadvantage: reliability (less trouble with Perl) • Advantage: flexibility (generic program • First char = $ for scalar, @ for array, etc. units) • Disadvantages: – High cost (dynamic type checking and interpretation) – Type error detection by the compiler is difficult Dynamic Binding via Inference Storage Bindings • Type Inferencing (e.g. ML, Miranda, and • Keeping track of binding of variables to Haskell) their memory cells. – Rather than by assignment statement, types are • Allocation - getting a cell from some pool determined from the context of the reference of available cells – E.g. ML: fun circ(r) = 3.1415 * r * r • Deallocation - putting a cell back into the – E.g. ML: fun circ(r) = 10 * r * r pool • Def: The lifetime of a variable is the time during which it is bound to a particular memory cell Categories of Variables Static Variables • To speak of storage bindings, it is useful to • Bound to memory cells before execution categorize variables by their lifetimes: begins and remains bound to the same – Inefficient, because all attributes are dynamic memory cell throughout execution. – Loss of error detection – e.g. all FORTRAN 77 variables, C static – Static variables, global variables – Stack-dynamic • Advantage: efficiency (direct addressing), – Explicit heap-dynamic history-sensitive subprogram support – Implicit heap-dynamic • Disadvantage: lack of flexibility (no recursion) Explicit Heap-Dynamic Stack-Dynamic Variables Variables – Storage bindings are created for vars when their • Allocated and deallocated by explicit declaration statements are elaborated. directives, specified by the programmer, • If scalar, all attributes except address are statically which take effect during execution bound – Referenced only through pointers or references • e.g. local variables in Pascal and C – e.g. dynamic objects in C++ (via new and – Advantage: allows recursion; conserves storage delete), all objects in Java – Disadvantages: • Overhead of allocation and deallocation • Advantage: provides for dynamic storage • Subprograms cannot be history sensitive management • Inefficient references (indirect addressing ) • Disadvantage: inefficient and unreliable Implicit Heap-Dynamic Variables Type Checking • Allocation and deallocation caused by assignment statements. I.e., when a - Generalize the concept of operands and operators variable is assigned a value, its cell (and all to include subprograms and assignments attributes) are allocated Def: Type checking is the activity of ensuring that the operands of an operator are of compatible – e.g. all variables in APL types • Advantage: flexibility Def: A compatible type is one that is either legal for the operator, or is allowed under language rules to be impli citly converted, by compiler- • Disadvantages: generated code, to a legal type. This automatic conversion is called a coercion. Strong Typing Type Errors • Advantage: allows the detection of the misuses of variables that result in type errors • Def: A type error is the application of an • Languages: operator to an operand of an inappropriate – FORTRAN 77 is not: parameters, EQUIVALENCE type – Pascal is not: variant records – If all type bindings are static, nearly all type – Modula-2 is not: variant records, WORD type checking can be static – C and C++ are not: parameter type checking can be – If type bindings are dynamic, type checking avoided; unions are not type checked must be dynamic – Ada is, almost (UNCHECKED CONVERSION is loophole) (Java is similar) • Def: A programming language is strongly typed if type errors are always detected • Coercion rules can strongly weaken strong typing (C++ vs Ada) Dynamic Type Binding Type Compatibility • Advantage of dynamic type binding: • Def: Type compatibility by name means the programming flexibility two variables have compatible types if they are in either the same declaration or in • Disadvantages: declarations that use the same type name – efficiency – Easy to implement but highly restrictive: – late error detection (costs more) • Subranges of integer types are not compatible with • Ex: Lisp integer types • If function parameters are to be a structure type, T, that type must be declared in one, global location. Can’t be declared in both formal and actual parameter lists (e.g. Pascal) Compatibility by Structure Problems with Structured Types • Consider the problem of two structured • Def: Type compatibility by structure means types: that two variables have compatible types if – Suppose they are circularly defined their types have identical structures – Are two record types compatible if they are – More flexible, but harder to implement structurally the same but use different field names? – Are two array types compatible if they are the same except that the subscripts are different? (e.g. [1..10] and [-5..4]) – Are two enumeration types compatible if their components are spelled differently? More Problems Example Compatibility • Language examples: • With structural type compatibility, you – Pascal: usually structure, but in some cases cannot differentiate between types of the name is used (formal parameters) same structure (e.g. different units of speed, – C: structure, except for records both float) – C++: name – See Mars Polar Explorer disaster! Fall 1999. – Ada: restricted form of name • Derived (sub-)types allow types with the same structure to be different. – type celsius is new FLOAT; type fahrenheit is new FLOAT • Anonymous types are all unique, even in: A, B : array (1..10) of INTEGER: Scope Static Scope • Def: The scope of a variable is the range of • … is based on program text; syntax statements over which it is visible. – To connect a name reference to a variable, the • Def: The nonlocal variables of
Recommended publications
  • Artificial Intelligence in Health Care: the Hope, the Hype, the Promise, the Peril
    Artificial Intelligence in Health Care: The Hope, the Hype, the Promise, the Peril Michael Matheny, Sonoo Thadaney Israni, Mahnoor Ahmed, and Danielle Whicher, Editors WASHINGTON, DC NAM.EDU PREPUBLICATION COPY - Uncorrected Proofs NATIONAL ACADEMY OF MEDICINE • 500 Fifth Street, NW • WASHINGTON, DC 20001 NOTICE: This publication has undergone peer review according to procedures established by the National Academy of Medicine (NAM). Publication by the NAM worthy of public attention, but does not constitute endorsement of conclusions and recommendationssignifies that it is the by productthe NAM. of The a carefully views presented considered in processthis publication and is a contributionare those of individual contributors and do not represent formal consensus positions of the authors’ organizations; the NAM; or the National Academies of Sciences, Engineering, and Medicine. Library of Congress Cataloging-in-Publication Data to Come Copyright 2019 by the National Academy of Sciences. All rights reserved. Printed in the United States of America. Suggested citation: Matheny, M., S. Thadaney Israni, M. Ahmed, and D. Whicher, Editors. 2019. Artificial Intelligence in Health Care: The Hope, the Hype, the Promise, the Peril. NAM Special Publication. Washington, DC: National Academy of Medicine. PREPUBLICATION COPY - Uncorrected Proofs “Knowing is not enough; we must apply. Willing is not enough; we must do.” --GOETHE PREPUBLICATION COPY - Uncorrected Proofs ABOUT THE NATIONAL ACADEMY OF MEDICINE The National Academy of Medicine is one of three Academies constituting the Nation- al Academies of Sciences, Engineering, and Medicine (the National Academies). The Na- tional Academies provide independent, objective analysis and advice to the nation and conduct other activities to solve complex problems and inform public policy decisions.
    [Show full text]
  • Chapter 5 Names, Bindings, and Scopes
    Chapter 5 Names, Bindings, and Scopes 5.1 Introduction 198 5.2 Names 199 5.3 Variables 200 5.4 The Concept of Binding 203 5.5 Scope 211 5.6 Scope and Lifetime 222 5.7 Referencing Environments 223 5.8 Named Constants 224 Summary • Review Questions • Problem Set • Programming Exercises 227 CMPS401 Class Notes (Chap05) Page 1 / 20 Dr. Kuo-pao Yang Chapter 5 Names, Bindings, and Scopes 5.1 Introduction 198 Imperative languages are abstractions of von Neumann architecture – Memory: stores both instructions and data – Processor: provides operations for modifying the contents of memory Variables are characterized by a collection of properties or attributes – The most important of which is type, a fundamental concept in programming languages – To design a type, must consider scope, lifetime, type checking, initialization, and type compatibility 5.2 Names 199 5.2.1 Design issues The following are the primary design issues for names: – Maximum length? – Are names case sensitive? – Are special words reserved words or keywords? 5.2.2 Name Forms A name is a string of characters used to identify some entity in a program. Length – If too short, they cannot be connotative – Language examples: . FORTRAN I: maximum 6 . COBOL: maximum 30 . C99: no limit but only the first 63 are significant; also, external names are limited to a maximum of 31 . C# and Java: no limit, and all characters are significant . C++: no limit, but implementers often impose a length limitation because they do not want the symbol table in which identifiers are stored during compilation to be too large and also to simplify the maintenance of that table.
    [Show full text]
  • A Concurrent PASCAL Compiler for Minicomputers
    512 Appendix A DIFFERENCES BETWEEN UCSD'S PASCAL AND STANDARD PASCAL The PASCAL language used in this book contains most of the features described by K. Jensen and N. Wirth in PASCAL User Manual and Report, Springer Verlag, 1975. We refer to the PASCAL defined by Jensen and Wirth as "Standard" PASCAL, because of its widespread acceptance even though no international standard for the language has yet been established. The PASCAL used in this book has been implemented at University of California San Diego (UCSD) in a complete software system for use on a variety of small stand-alone microcomputers. This will be referred to as "UCSD PASCAL", which differs from the standard by a small number of omissions, a very small number of alterations, and several extensions. This appendix provides a very brief summary Of these differences. Only the PASCAL constructs used within this book will be mentioned herein. Documents are available from the author's group at UCSD describing UCSD PASCAL in detail. 1. CASE Statements Jensen & Wirth state that if there is no label equal to the value of the case statement selector, then the result of the case statement is undefined. UCSD PASCAL treats this situation by leaving the case statement normally with no action being taken. 2. Comments In UCSD PASCAL, a comment appears between the delimiting symbols "(*" and "*)". If the opening delimiter is followed immediately by a dollar sign, as in "(*$", then the remainder of the comment is treated as a directive to the compiler. The only compiler directive mentioned in this book is (*$G+*), which tells the compiler to allow the use of GOTO statements.
    [Show full text]
  • Concise Introduction to C++
    i i final3 2012/4/19 page 47 i i Chapter 2 Concise Introduction to C++ C++ seems to be most suitable for many practical applications. Indeed, C++ is sufficiently high-level to allow transparent object-oriented programming and efficient use of human resources, yet is also sufficiently low-level to have types, variables, pointers, arrays, and loops to allow efficient use of computer resources. In this chapter, we give a concise description of C++ and illustrate its power as an object-oriented programming language. In particular, we show how to construct and use abstract mathematical objects such as vectors and matrices. We also explain the notion of a template class, which can be filled with a concrete type later on in compilation time. We also discuss inheritance and illustrate its potential. 2.1 Objects As we have seen above, C is a language based on functions. Every command is also a function that returns a value that can be further used or abandoned, according to the wish of the programmer. Furthermore, programmers can write their own functions, which may also return variables of the type specified just before the function name. When the function is called, a temporary, unnamed variable is created to store the returned value until it has been used. C++, on the other hand, is an object-oriented programming language. In this kind of language, the major concern is not the functions that can be executed but rather the objects upon which they operate. Although C++ supports all the operations and features available in C, its point of view is different.
    [Show full text]
  • Concepts in Programming Languages Practicalities
    Concepts in Programming Languages Practicalities I Course web page: Alan Mycroft1 www.cl.cam.ac.uk/teaching/1617/ConceptsPL/ with lecture slides, exercise sheet and reading material. These slides play two roles – both “lecture notes" and “presentation material”; not every slide will be lectured in Computer Laboratory detail. University of Cambridge I There are various code examples (particularly for 2016–2017 (Easter Term) JavaScript and Java applets) on the ‘materials’ tab of the course web page. I One exam question. www.cl.cam.ac.uk/teaching/1617/ConceptsPL/ I The syllabus and course has changed somewhat from that of 2015/16. I would be grateful for comments on any remaining ‘rough edges’, and for views on material which is either over- or under-represented. 1Acknowledgement: various slides are based on Marcelo Fiore’s 2013/14 course. Alan Mycroft Concepts in Programming Languages 1 / 237 Alan Mycroft Concepts in Programming Languages 2 / 237 Main books Context: so many programming languages I J. C. Mitchell. Concepts in programming languages. Cambridge University Press, 2003. Peter J. Landin: “The Next 700 Programming Languages”, I T.W. Pratt and M. V.Zelkowitz. Programming Languages: CACM (published in 1966!). Design and implementation (3RD EDITION). Some programming-language ‘family trees’ (too big for slide): Prentice Hall, 1999. http://www.oreilly.com/go/languageposter http://www.levenez.com/lang/ ? M. L. Scott. Programming language pragmatics http://rigaux.org/language-study/diagram.html (4TH EDITION). http://www.rackspace.com/blog/ Elsevier, 2016. infographic-evolution-of-computer-languages/ I R. Harper. Practical Foundations for Programming Plan of this course: pick out interesting programming-language Languages.
    [Show full text]
  • Java Terms/Concepts You Should Know from OOPDA Glossary Terms
    Java Terms/Concepts You Should Know from OOPDA A abstract class A class with the abstract reserved word in its header. Abstract classes are distinguished by the fact that you may not directly construct objects from them using the new operator. An abstract class may have zero or more abstract methods. abstract method A method with the abstract reserved word in its header. An abstract method has no method body. Methods defined in an interface are always abstract. The body of an abstract method must be defined in a sub class of an abstract class, or the body of a class implementing an interface. Abstract Windowing Toolkit The Abstract Windowing Toolkit (AWT) provides a collection of classes that simplify the creation of applications with graphical user interfaces. These are to be found in the java.awt packages. Included are classes for windows, frames, buttons, menus, text areas, and so on. Related to the AWT classes are those for the Swing packages. aggregation A relationship in which an object contains one or more other subordinate objects as part of its state. The subordinate objects typically have no independent existence separate from their containing object. When the containing object has no further useful existence, neither do the subordinate objects. For instance, a gas station object might contain several pump objects. These pumps will only exist as long as the station does. Aggregation is also referred to as the has-a relationship, to distinguish it from the is-a relationship, which refers to inheritance. anonymous class A class created without a class name.
    [Show full text]
  • Sensitivity Training for Prxers Kenneth W
    PharmaSUG 2015 – QT29 Sensitivity Training for PRXers Kenneth W. Borowiak, PPD, Morrisville, NC ABSTRACT Any SAS® user who intends to use the Perl style regular expressions through the PRX family of functions and call routines should be required to go through sensitivity training. Is this because those who use PRX are mean and rude? Nay, but the regular expressions they write are case sensitive by default. This paper discusses the various ways to flip the case sensitivity switch for the entire or part of the regular expression, which can aid in making it more readable and succinct. Keywords: case sensitivity, alternation, character classes, modifiers, mode modified span INTRODUCTION Any SAS® user who intends to use the Perl style regular expressions through the PRX family of functions and call routines should be required to go through sensitivity training. Is this because those who use PRX are mean and rude? Nay, but the regular expressions they write are case sensitive by default. Before proceeding with an example, it will be assumed that the reader has at least some previous exposure to regular expressions1. Now consider the two queries below in Figure 1 against the CHARACTERS data set for the abbreviation for ‘mister’ at the beginning of the free-text captured field NAME. Figure 1 Case Sensitivity of Regular Expressions data characters ; input name $40. ; datalines ; Though the two MR Bigglesworth regexen below Mini-mr bigglesworth look similar … Mr. Austin D. Powers dr evil mr bIgglesWorTH ; proc print data=characters ; proc print data=characters ; where prxmatch('/^MR/', name) ; where prxmatch('/^Mr/', name); run ; run ; Obs name … they generate Obs name 1 MR Bigglesworth different results 3 Mr.
    [Show full text]
  • Intel ® Fortran Programmer's Reference
    ® Intel Fortran Programmer’s Reference Copyright © 1996-2003 Intel Corporation All Rights Reserved Issued in U.S.A. Version Number: FWL-710-02 World Wide Web: http://developer.intel.com Information in this document is provided in connection with Intel products. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSO- EVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PAR- TICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life saving, or life sustaining applications. This Intel® Fortran Programmer’s Reference as well as the software described in it is furnished under license and may only be used or copied in accordance with the terms of the license. The information in this manual is furnished for infor- mational use only, is subject to change without notice, and should not be construed as a commitment by Intel Corpora- tion. Intel Corporation assumes no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "unde- fined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibil- ities arising from future changes to them.
    [Show full text]
  • Usability Improvements for Products That Mandate Use of Command-Line Interface: Best Practices
    Usability improvements for products that mandate use of command-line interface: Best Practices Samrat Dutta M.Tech, International Institute of Information Technology, Electronics City, Bangalore Software Engineer, IBM Storage Labs, Pune [email protected] ABSTRACT This paper provides few methods to improve the usability of products which mandate the use of command-line interface. At present many products make command-line interfaces compulsory for performing some operations. In such environments, usability of the product becomes the link that binds the users with the product. This paper provides few mechanisms like consolidated hierarchical help structure for the complete product, auto-complete command-line features, intelligent command suggestions. These can be formalized as a pattern and can be used by software companies to embed into their product's command-line interfaces, to simplify its usability and provide a better experience for users so that they can adapt with the product much faster. INTRODUCTION Products that are designed around a command-line interface (CLI), often strive for usability issues. A blank prompt with a cursor blinking, waiting for input, does not provide much information about the functions and possibilities available. With no click-able option and hover over facility to view snippets, some users feel lost. All inputs being commands, to learn and gain expertise of all of them takes time. Considering that learning a single letter for each command (often the first letter of the command is used instead of the complete command to reduce stress) is not that difficult, but all this seems useless when the command itself is not known.
    [Show full text]
  • PHP Advanced and Object-Oriented Programming
    VISUAL QUICKPRO GUIDE PHP Advanced and Object-Oriented Programming LARRY ULLMAN Peachpit Press Visual QuickPro Guide PHP Advanced and Object-Oriented Programming Larry Ullman Peachpit Press 1249 Eighth Street Berkeley, CA 94710 Find us on the Web at: www.peachpit.com To report errors, please send a note to: [email protected] Peachpit Press is a division of Pearson Education. Copyright © 2013 by Larry Ullman Acquisitions Editor: Rebecca Gulick Production Coordinator: Myrna Vladic Copy Editor: Liz Welch Technical Reviewer: Alan Solis Compositor: Danielle Foster Proofreader: Patricia Pane Indexer: Valerie Haynes Perry Cover Design: RHDG / Riezebos Holzbaur Design Group, Peachpit Press Interior Design: Peachpit Press Logo Design: MINE™ www.minesf.com Notice of Rights All rights reserved. No part of this book may be reproduced or transmitted in any form by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the publisher. For information on getting permission for reprints and excerpts, contact [email protected]. Notice of Liability The information in this book is distributed on an “As Is” basis, without warranty. While every precaution has been taken in the preparation of the book, neither the author nor Peachpit Press shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the instructions contained in this book or by the computer software and hardware products described in it. Trademarks Visual QuickPro Guide is a registered trademark of Peachpit Press, a division of Pearson Education. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks.
    [Show full text]
  • Software II: Principles of Programming Languages Control Statements
    Software II: Principles of Programming Languages Lecture 8 – Statement-Level Control Structures Control Statements: Evolution • FORTRAN I control statements were based directly on IBM 704 hardware • Much research and argument in the 1960s about the issue – One important result: It was proven that all algorithms represented by flowcharts can be coded with only two-way selection and pretest logical loops Control Structure • A control structure is a control statement and the statements whose execution it controls • Design question – Should a control structure have multiple entries? Selection Statements • A selection statement provides the means of choosing between two or more paths of execution • Two general categories: – Two-way selectors – Multiple-way selectors Two-Way Selection Statements • General form: if control_expression then clause else clause • Design Issues: – What is the form and type of the control expression? – How are the then and else clauses specified? – How should the meaning of nested selectors be specified? The Control Expression • If the then reserved word or some other syntactic marker is not used to introduce the then clause, the control expression is placed in parentheses • In C89, C99, Python, and C++, the control expression can be arithmetic • In most other languages, the control expression must be Boolean Clause Form • In many contemporary languages, the then and else clauses can be single statements or compound statements • In Perl, all clauses must be delimited by braces (they must be compound) • In Fortran
    [Show full text]
  • Software II: Principles of Programming Languages Introduction
    Software II: Principles of Programming Languages Lecture 5 – Names, Bindings, and Scopes Introduction • Imperative languages are abstractions of von Neumann architecture – Memory – Processor • Variables are characterized by attributes – To design a type, must consider scope, lifetime, type checking, initialization, and type compatibility Names • Design issues for names: – Are names case sensitive? – Are special words reserved words or keywords? Names (continued) • Length – If too short, they cannot be connotative – Language examples: • FORTRAN 95: maximum of 31 (only 6 in FORTRAN IV) • C99: no limit but only the first 63 are significant; also, external names are limited to a maximum of 31 (only 8 are significant K&R C ) • C#, Ada, and Java: no limit, and all are significant • C++: no limit, but implementers often impose one Names (continued) • Special characters – PHP: all variable names must begin with dollar signs – Perl: all variable names begin with special characters, which specify the variable’s type – Ruby: variable names that begin with @ are instance variables; those that begin with @@ are class variables Names (continued) • Case sensitivity – Disadvantage: readability (names that look alike are different) • Names in the C-based languages are case sensitive • Names in others are not • Worse in C++, Java, and C# because predefined names are mixed case (e.g. IndexOutOfBoundsException ) Names (continued) • Special words – An aid to readability; used to delimit or separate statement clauses • A keyword is a word that is special only
    [Show full text]