Chapter 3: Names, Scopes, and Bindings 長庚大學資訊工程學系 陳仁暉 助 理教授 Tel: (03) 211-8800 Ext: 5990 Email:
[email protected] URL: http://www.csie.cgu.edu.tw/~jhchen © All rights reserved. No part of this publication and file may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without prior written permission of Professor Jenhui Chen (E-mail:
[email protected]). 1 High-level programming languages High-level features relative to assembly language ‘Highness’ = degree of abstraction machine independence efficient implementation does not depend on a specific machine instruction set relatively easy goal ease of programming hard goal more aesthetics(藝術的), trial and error than science ? Programming language design find the right abstractions 2 Name Mnemonic character string to represent something else usually identifiers, e.g., bull, cow, boy, girl, etc. some languages allow names like ‘+’ & ‘:=‘ Enables programmers to refer to variables etc. using symbolic names rather than (e.g., $r0, $s0, sp, or fp, etc) low-level hardware addresses (e.g., 0x3F3D or 0x11AA) abstract their control and data structures express purpose or function instead of implementation make programs manageable control abstraction: subroutines data abstraction: classes (for example) 3 Binding & Binding Time... Binding an association between a name and the thing that is named Binding time the time at which an implementation decision is made to create a binding The time spent in implementation decision Language design time the design of specific program constructs (syntax) primitive types meaning (semantics) Language implementation time fixation of implementation constants such as numeric precision run-time memory sizes max identifier name length number and types of built-in exceptions, etc.