AD104 - LotusScript Tips and Tricks. Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist
|
|
- Tyrone Mathews
- 5 years ago
- Views:
Transcription
1 AD104 - LotusScript Tips and Tricks Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist
2
3 Agenda for the Session Purpose - Focus on Performance Tips Architectural Overview of LotusScript Tips/Techniques Control the life time of Notes objects Others Say a few words on the usage of profile documents Conclusion
4 Focus on Performance In the past, we have focused this session mostly on new/cool features Would like to focus this particular session on developing high performance LotusScript Raphael is a Senior IT specialist has been called to many customer sites to diagnose problems found many cases of poorly performing code
5 Purpose of this session To help developers to Diagnose problems Pinpoint some of the potential problem areas Share some experience in the proper usage of LotusScript
6 Real Life Samples We have been looking at many LotusScript samples they work, in general but they take a long time to run take a lot of system resources the worst code have taken down the entire system Point out the issues for LotusScript developers to look out for
7 An Example - Deleting all docs in a view Do While Not(doc is Nothing) count = count+1 set doc = vw.getnextdocument(doc) Redim Preserve arr(ubound(arr)+1 Set arr(ubound(arr)) = doc if count = then goto StopScript Loop 'then loop again to remove all docs in the array
8 Example Expand array one element at a time Not scalable - have problems when you have a large number of documents Create server problem - use up all server resources A better way to accomplish this is by doing NotesViewEntryCollection vec = vw.allentries vec.removeall TRUE Take almost no time to execute
9 Approach Provide an overview of the LotusScript architecture Explain how it functions in Notes Point out a few important areas Binding and reference to Notes objects Interface to the data in Notes objects
10 LotusScript Architecture Overview LotusScript is BASIC (very close to VB/VBA) an embedded full function scripting language full function programming language embedded in a host environment scripting
11 LotusScript as a full function programming language BASIC (VB/VBA compatible) Provides language syntax for data types and its manipulation data manipulation (addition, subtraction,...) string manipulation (concat, left, right, mid,...) control flow (for, if then ) functional abstraction (sub, function) data abstractions (type, classes)
12 LotusScript as a full function programming language It is rich enough to Allow you to freely express the logic of your application But it also gives you all the ropes to hang yourself
13 Simple LotusScript program Dim session as New NotesSession Dim db as NotesDatabase Dim doccollection as NotesDocumentCollection Set db = session.currentdatabase Set collection = db.unprocesseddocuments Forall doc in doccollection 'process the notes document 'your application logic... End Forall
14 LotusScript as a scripting language Efficient mechanism to "glue" data and functionalities from many different places together Access external objects Product objects (e.g., front end/backend classes) Access other external objects COM, Java Access external functions Win32 API Extension mechanism
15 LotusScript as Glue Notes/Domino Database LootusScript as Glue MS Office Internet
16 LotusScript as an embedding component Designed to run within some other applications Memory usage model need to fit in Efficient interface to host Execution within the Notes run time environment Front end (a.k.a., client application) Server (a.k.a., server application)
17 Embedding LotusScript in Notes Notes Environment Session Object LotusScript Virtual Machine stack frame Document Collection database object Document Object Document Object Document Object symbol table Heap
18 How does it work? Session and Current Database objects are created when the agent starts Others are created as needed by the application new forall refvar The product objects are usually large and take time to create LotusScript holds only reference to object As long as a reference is held, it will stay in memory
19 What it boils down to: The application developer needs to understand how to use the language constructs to control the objects how to use the appropriate objects for the appropriate operations Otherwise, your application may tie up a lot of resources unnecessarily take a long time to run cause your application, and other applications on same server to slow down to an unacceptable level (classic situation when you need Raphael on site)
20 LifeTime of the Notes Object General Rules Notes objects are quite large create only when you need them delete if you don't need them anymore save if you think you are going to reuse them Only exception is the NotesSession Object Current Database Object Current Object in the argument of the event raised these are all created when the agent starts to run
21 Object creation Creation - LotusScript new dim session as new NotesSession assign an object set doc = anotherdoc forall reference forall doc in doccollection LotusScript instructs Notes to create the object holds a reference to it, set reference count appropriately
22 Object Deletion Deletion - LotusScript delete delete doc assign something into it set doc = someotherdoc next iteration in forall forall doc in doccollection reference variable is out of scope Rule - if the reference count is 0, it instructs Notes to delete the object
23 Tip#1: Don't create object unless you need it dim count as integer count = 0 dim x(10000) as NotesDocument forall doc in doccollection set x(count) = doc count = count + 1 end forall Depends on the number of documents in the collection
24 Tip #1 This piece of script is not scalable and could bring the system to its knees Since the object reference is stored in the array x, all NotesDocument objects are created and remained in memory Ask yourself - how many objects are there at any time? If you have more than 100, you need to examine your application's logic
25 Tip# 2: Use forall to enumerate collection forall doc in doccollection 'process your document end forall Keep one document object active at one time The previous object is deleted as soon as it executes the forall statement at the top
26 Releasing objects Notes object has a reference count When the reference count goes to 0, the object will be deleted. The resources are free. LotusScript does not do garbage collection like Java. There is no delay. We have experimented with delayed notification Every 10 statements At the end of each SUB Does not work out
27 Tip #3: Pass the object reference in If you will call subs/functions frequently that need to lookup similar information, pass in the object reference this example has many subs (one shown) which all get a handle to a Keywords view this is inefficient Sub Sub1 ( ts as String ) Dim dbpath as String Dim s as New NotesSession Set db = s.currentdatabase Set view = db.getview ( "(Keywords)" ) Set doc = view.getdocumentbykey ( ts ) dbpath = doc.dbpath ( 0 ) ' do some work End Sub
28 Tip #3: Pass the object reference in (cont.) Instead, pass the view reference to each sub Sub Initialize Dim s as New NotesSession Set db = s.currentdatabase Set view = db.getview ( "(Keywords)" ) Call Sub1 ( view ) Call Sub2 ( view ) etc.
29 Tip #3: Pass the object reference in (cont.) Other variation Save an object reference in the GLOBAL section Accessible by all SUBs Advantage Don't delete and recreate the same object again and again
30 Tip #4: Use objects that are readily available to you Because it is expensive to create objects, some of commonly used objects are readily available to you NotesViewEntryCollection vec = vw.allentries NotesDocumentCollection ndc = db.alldocuments NotesDocumentCollection ndc = db.unprocesseddocuments NotesViewColumnArray nvw = vw.columns Also remember that there is a CurrentObject passing to you as part of an event
31 Tip #4: Use objects that are readily available to you (cont'd) Operations are designed to efficiently operate on all documents in the collection For example, NotesViewEntryCollection vec = vw.allentries vec.removeall TRUE No document object needs to be created
32 Tip #5: How to retrieve document data without opening the document Expensive to have a document object. Summary data Buffer holding just the minimum document data to show in a view Loaded when a view is opened When you create the view object, Column values are loaded already Use NotesViewEntry.ColumnValues To get the values directly
33 Tip #6: Temp variables In LotusScript, it is highly preferable to use temporary variables that are held in memory to hold values, instead of directly referencing databases or documents See code on the left (better) and right (worse) below for examples VarViews = db.views Forall v in VarViews print v.name End Forall Dim i as integer Do While i <= ubound ( db.views ) Print db.views(i).name i = i + 1 Loop
34 Tip #6 LotusScript needs to resolve the field name of the object. The process involves string comparison and is relatively slow. If it is saved the data in a variable, it is far more efficient
35 Tip #7: Multi-value fields vs. Single value fields It is inefficient to have many hidden programmatic fields stored on a document for example, if you need to store 100 bits of information, 1's and 0's, do not make 100 fields each containing a single 1 or 1 instead, make a single multi-value field that contains 100 numbers, 1's and 0's you can read this single field into memory and then read/write the various values you need the document will not need to retain the excess 99 fields
36 Tip #7 Each field access takes time 100 different fields will take 100 times longer to access the value. Even if the fields are not used, it will take longer for the document to load
37 Tip #8: How to efficient retrieve data in a view Always best to access data that is already displayed in a view ; columnnumber) doc.columnvalues ( ColumnNumber ) As long as the view is reasonably well constructed, indexing times will be on the order of 100ms every 15 minutes, much less concern than extra LS execution time, especially if your code is in form events
38 Lookups (cont.) If you have a lot of data to lookup (e.g., 10 fields of information), you can optimize your view and lookups View has two columns Column 1 is the sort key, as small as possible Column 2: Field1 + "~" + Field2 + "~" + Field3... "^") if multi-value fields Optionally, Column 2 could reference a field which has already performed this calculation Code lookups then perform only one lookup x = doc.columnvalues ( 1 ) - subscript starts at zero Then use x ( i ) to get the various field values
39 Lookups (cont.) Regardless of how you lookup your data, try to do it only one time If multiple keyword fields, for example, then have them reference a field on the form that performs the lookup just once Or use a profile document to perform the calculation and then read from that into your keyword fields to minimize the frequency or LS equivalent code
40 Tip #9: Comparing ways to get a document collection Full Text Search View - GetAlldocumentByKey View - GetdocumentByKey Database Search
41 db.ftsearch db.ftsearch requires that a full text index be present, and up to date syntax can be a bit trickier to use limit of 5000 results in ND6, ND6.5
42 view.getalldocumentsbykey view.getalldocumentsbykey and db.ftsearch are consistently the fastest methods for acquiring a small collection of documents view.getalldocumentsbykey requires a view views generally index very quickly make the view hidden and streamlined consider a sorted one-column view that has "1" as the formula in that column dc = view.getalldocumentsbykey ( "1" ) will then return the view if you only need to update a simple value, or remove all, then you can use nvc = view.allentries
43 view.getdocumentbykey view.getdocumentbykey is fast use view.autoupdate = False makes method faster allows set doc = view.getnextdocument ( doc ) even if you have just removed the previous doc from the view
44 db.search db.search is not a fast way to get a small collection generally, the larger the database, in terms of documents and size, the longer it takes db.search to return even one document db.search becomes competitive as the collection size increases previous tests indicate approximately 5-10% of the documents in a database but... you don't need a full text index, and you don't need a view in order to use this method, so very handy especially with ad hoc queries and queries against other database over which you have little control
45 Tip # 10 - Error Processing On Error GoTo ErrHandler... average = total / count ErrHandler 'The intention is to write the error handler later Resume when count is 0, it is an infinite loop
46 Tip #11 - Unrestricted Goto Basic was designed in the 60s before the concept of structured programming Goto statement is included for compatibility reason Avoid using it if possible You may get into problems even in seemingly benign situations
47 Tip #11 On Error GoTo ErrHandler... an error occurs Handled: Errhandler... Goto Handled Errhandler is actually a block with a new stack frame You get stack overflow after encountering a number of errors
48 Tip #12: Avoid Conversion Data Type conversions are expensive Avoid using variants and declare all your variables explicitly For I = 1 to Next I I is a variant unless you dim it takes longer to execute - about 10x
49 Tip #12 explicit typing will help dim I as integer For I = 1 to Next I
50 Tip #13 - String handling differences between LotusScript and Notes LotusScript internally represents all strings as UNICODE (UTF16) Notes/Domino represents all string as LMBCS So, whenever there is a data string going through the interface, we have to call a translation routine to convert between LMBCS and UNICODE It is quite expensive
51 Tip #13 - String Processing You want to pull the string out into LotusScript and complete processing before you put it back into Notes Don't do x.result = x.result + "my new text" x.result = mid$(x.result, 2, 4) Instead dim result as string result = x.result do all your string manipulation in LotusScript x.result = result
52 Tip #14 - Remote Debugger Setting A Domino 6 feature Allow you to remotely debug your LotusScript agent on the server Turn it off on the server if you don't need it It has a time out setting waiting for the client debugger to attach e.g., 20 seconds agents running on the server will be stopped at the beginning for 20 seconds every STOP statement will wait for 20 seconds
53 Tip #15: A few words on Profile Documents set by one author... settings...
54 Tip #15 Intention for profile doc Set by one Use by many Performance comes from Per thread cache Multiple updates Efficient but it will take time to propage the change from one cache to the other cache
55 Help is on the way Problem detection Time out for particular agent Memory errors in the agent log Crash your system Domino 7 - agent health monitor Track runaway/expensive agents Track down which calls are expensive
56 Other LotusSphere Sessions AD105 - Who is Misbehaving? Monitoring Lotus Domino Server Agents Julie Kadashevich, J. Cooper Mon 1:30 Swan 1/4 AD106 - Lotus Domino Objects: Overview and Update J. Cooper Tues 10:30 Swan 5/6 BOF - LotusScript Y & B Hampton Wed 7 am
LotusScript Optimization:
LotusScript Optimization: Improving Application Reliability, Speed and the End User Experience By Teamstudio, Inc. Teamstudio, Inc. 900 Cummings Center Suite 326T Beverly MA, 01915 Phone: 800.632.9787
More informationImproving Notes/Domino Database performance. November 12, 2014 Paul Albright
Improving Notes/Domino Database performance November 12, 2014 Paul Albright Paul_albright@us.ibm.com Agenda Views Forms Agents or Code Form properties XPages Resource Links Q & A 2 Views Some things that
More informationDomino Performance Tuning. Stephan H. Wissel Lotus Technology & Productivity Advisor
Domino Performance Tuning Stephan H. Wissel Lotus Technology & Productivity Advisor notessensei@sg.ibm.com http://www.wissel.net/ Technote #2346 Just add this to the notes.ini: RunFaster = 1 The parameter
More informationThis chapter will focus on Reference Library applications. These applications are used to
Elliott_10.qxd 9/14/06 2:32 PM Page 273 Chapter 10 Reference Library Applications Chapter Overview This chapter will focus on Reference Library applications. These applications are used to store information
More informationLotus Exam Using LotusScript in IBM Lotus Domino 7 Applications Version: 5.0 [ Total Questions: 90 ]
s@lm@n Lotus Exam 190-737 Using LotusScript in IBM Lotus Domino 7 Applications Version: 5.0 [ Total Questions: 90 ] Topic 0, A A Question No : 1 - (Topic 0) Which of the following is a characteristic of
More informationDATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6)
Technology & Information Management Instructor: Michael Kremer, Ph.D. Database Program: Microsoft Access Series DATABASE AUTOMATION USING VBA (ADVANCED MICROSOFT ACCESS, X405.6) AGENDA 3. Executing VBA
More informationLotus Notes Application design & programming. By Ajith Thulaseedharan Lotus Notes developer
Lotus Notes Application design & programming By Ajith Thulaseedharan Lotus Notes developer A Notes application Is a.nsf(notes Storage Facility) database Is a structured flat file Contains notes data &
More informationd2vbaref.doc Page 1 of 22 05/11/02 14:21
Database Design 2 1. VBA or Macros?... 2 1.1 Advantages of VBA:... 2 1.2 When to use macros... 3 1.3 From here...... 3 2. A simple event procedure... 4 2.1 The code explained... 4 2.2 How does the error
More informationTutorial. Building Composite Applications for IBM Lotus Notes 8. For use with the IBM Lotus Notes 8 Beta 2 client
Tutorial Building Composite Applications for IBM Lotus Notes 8 For use with the IBM Lotus Notes 8 Beta 2 client Building composite applications is a process that involves multiple procedures. This tutorial
More informationHands-On Lotus Domain Monitoring. AdminCamp June 2012, in Gelsenkirchen Daniel Nashed, Nash!Com
Hands-On Lotus Domain Monitoring AdminCamp June 2012, in Gelsenkirchen Daniel Nashed, Nash!Com About the presenter Daniel Nashed Nash!Com - IBM/Lotus Advanced Business Partner/ISV Member of The Penumbra
More informationProgramming in Visual Basic with Microsoft Visual Studio 2010
Programming in Visual Basic with Microsoft Visual Studio 2010 Course 10550; 5 Days, Instructor-led Course Description This course teaches you Visual Basic language syntax, program structure, and implementation
More informationPROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led
CENTER OF KNOWLEDGE, PATH TO SUCCESS Website: PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO 2010 Course: 10550A; Duration: 5 Days; Instructor-led WHAT YOU WILL LEARN This course teaches you
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes
More informationHeap Management. Heap Allocation
Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is
More informationSmartMail for Lotus Notes Lotus Notes Server Setup User Guide
SmartMail for Lotus Notes Lotus Notes Server Setup User Guide Copyright 2006, E-Z Data, Inc., All Rights Reserved No part of this documentation may be copied, reproduced, or translated in any form without
More informationIndex. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309
A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48
More informationUsing Code Templates in DDE by Julian Robichaux, panagenda originally published on socialbizug.org, July 2013
Using Code Templates in DDE by Julian Robichaux, panagenda originally published on socialbizug.org, July 2013 One of the freebies that came with integrating Domino Designer with the Eclipse platform (DDE)
More informationDeallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection
Deallocation Mechanisms User-controlled Deallocation Allocating heap space is fairly easy. But how do we deallocate heap memory no longer in use? Sometimes we may never need to deallocate! If heaps objects
More informationAdvanced Programming With Notes/Domino COM Classes
Advanced Programming With Notes/Domino COM Classes Bob Balaban Looseleaf Software LLC bbalaban@gmail.com November 9, 2009 2009 by the individual speaker Agenda Speaker intro COM and OLE Notes front-end
More informationAdvanced Programming & C++ Language
Advanced Programming & C++ Language ~6~ Introduction to Memory Management Ariel University 2018 Dr. Miri (Kopel) Ben-Nissan Stack & Heap 2 The memory a program uses is typically divided into four different
More informationProgramming Languages Third Edition. Chapter 10 Control II Procedures and Environments
Programming Languages Third Edition Chapter 10 Control II Procedures and Environments Objectives Understand the nature of procedure definition and activation Understand procedure semantics Learn parameter-passing
More informationControl Abstraction. Hwansoo Han
Control Abstraction Hwansoo Han Review of Static Allocation Static allocation strategies Code Global variables Own variables (live within an encapsulation - static in C) Explicit constants (including strings,
More informationMicrosoft Visual C# Step by Step. John Sharp
Microsoft Visual C# 2013 Step by Step John Sharp Introduction xix PART I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Beginning programming with the Visual
More informationCS 360 Programming Languages Interpreters
CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like
More informationCS 3 Introduction to Software Engineering. 3: Exceptions
CS 3 Introduction to Software Engineering 3: Exceptions Questions? 2 Objectives Last Time: Procedural Abstraction This Time: Procedural Abstraction II Focus on Exceptions. Starting Next Time: Data Abstraction
More informationLotus Exam LotusScript in Notes for Advanced Developers Version: 5.0 [ Total Questions: 84 ]
s@lm@n Lotus Exam 190-273 LotusScript in Notes for Advanced Developers Version: 5.0 [ Total Questions: 84 ] Topic 0, A A Question No : 1 - (Topic 0) Marilyn is writing code which prompts users to specify
More informationAcknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3
74029ftoc.qxd:WroxPro 9/27/07 1:40 PM Page xiii Acknowledgments Introduction x xxv Part I: Programming Access Applications 1 Chapter 1: Overview of Programming for Access 3 Writing Code for Access 3 The
More informationXFL Extended Formula Language
XFL Extended Formula Language 2005-2009 Written by Bert Haessler www.nappz.de/xfl mailto:xfl@nappz.de Documentation XFL Version 2.85 15 th of February 2009 1 Preliminary remark The formula language of
More informationExt3/4 file systems. Don Porter CSE 506
Ext3/4 file systems Don Porter CSE 506 Logical Diagram Binary Formats Memory Allocators System Calls Threads User Today s Lecture Kernel RCU File System Networking Sync Memory Management Device Drivers
More informationIteration. # a and b are now equal # a and b are no longer equal Multiple assignment
Iteration 6.1. Multiple assignment As you may have discovered, it is legal to make more than one assignment to the same variable. A new assignment makes an existing variable refer to a new value (and stop
More informationBinding and Storage. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill
Binding and Storage Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. What s
More informationObject-Oriented Programming in LotusScript Bill Buchan HADSL
Object-Oriented Programming in LotusScript Bill Buchan HADSL 2006 Wellesley Information Services. All rights reserved. What We'll Cover Introduction Why use Object-Oriented (OO) methodologies? OO Basics
More informationPackage redux. May 31, 2018
Title R Bindings to 'hiredis' Version 1.1.0 Package redux May 31, 2018 A 'hiredis' wrapper that includes support for transactions, pipelining, blocking subscription, serialisation of all keys and values,
More informationOverview of the Ruby Language. By Ron Haley
Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,
More informationJava Overview An introduction to the Java Programming Language
Java Overview An introduction to the Java Programming Language Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhan Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationLibgdb. Version 0.3 Oct Thomas Lord
Libgdb Version 0.3 Oct 1993 Thomas Lord Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
More informationò Very reliable, best-of-breed traditional file system design ò Much like the JOS file system you are building now
Ext2 review Very reliable, best-of-breed traditional file system design Ext3/4 file systems Don Porter CSE 506 Much like the JOS file system you are building now Fixed location super blocks A few direct
More informationEnterprise Management of Windows NT Services
Enterprise Management of Windows NT Services J. Nick Otto notto@parikh.net Parikh Advanced Systems Abstract A problem faced by NT administrators is the management of NT based services in the enterprise.
More informationChapter 1 Getting Started
Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different
More informationFundamentals of Programming Session 13
Fundamentals of Programming Session 13 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2014 These slides have been created using Deitel s slides Sharif University of Technology Outlines
More informationLotus IBM Lotus Notes Domino 8 Application Development Update. Download Full Version :
Lotus 190-801 IBM Lotus Notes Domino 8 Application Development Update Download Full Version : http://killexams.com/pass4sure/exam-detail/190-801 QUESTION: 101 A richtext field on the main form of Paki's
More informationControl Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003
Control Flow COMS W1007 Introduction to Computer Science Christopher Conway 3 June 2003 Overflow from Last Time: Why Types? Assembly code is typeless. You can take any 32 bits in memory, say this is an
More informationWhy are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?
Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic
More informationSoftware Code Performance Review Saple
Software Code Performance Review Saple Table of Contents Executive Summary 2 Scope of Review 2 Recommendations for Short Term Fixes 2 Page/Scripting Issues 2 Missing Response Buffering 2 Not Using Option
More informationSeparate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention
Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These
More informationPython Implementation Strategies. Jeremy Hylton Python / Google
Python Implementation Strategies Jeremy Hylton Python / Google Python language basics High-level language Untyped but safe First-class functions, classes, objects, &c. Garbage collected Simple module system
More informationADVANTAGES. Via PL/SQL, all sorts of calculations can be done quickly and efficiently without use of Oracle engine.
1 PL/SQL INTRODUCTION SQL does not have procedural capabilities. SQL does not provide the programming techniques of condition checking, looping and branching that is required for data before permanent
More informationCSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)
CSE 374 Programming Concepts & Tools Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) Hacker tool of the week (tags) Problem: I want to find the definition of a function or
More information5th State of the Onion. Larry Wall
5th State of the Onion Larry Wall Talk 1 An Overview of Perl Perl 5 Perl 6 Talk 2 Bits and Pieces 33 lightning talks in half an hour See Apocalypse 2 Expected apocalyptic error rate: 5% Talk 3 Unary and
More informationPL/SQL Block structure
PL/SQL Introduction Disadvantage of SQL: 1. SQL does t have any procedural capabilities. SQL does t provide the programming technique of conditional checking, looping and branching that is vital for data
More informationSemantic actions for declarations and expressions
Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate
More informationChapter 3:: Names, Scopes, and Bindings (cont.)
Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?
More informationJAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)
Technology & Information Management Instructor: Michael Kremer, Ph.D. Class 1 Professional Program: Data Administration and Management JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) WHO
More informationConsolidation and Review
Consolidation and Review Professor Hugh C. Lauer CS-1004 Introduction to Programming for Non-Majors (Slides include materials from Python Programming: An Introduction to Computer Science, 2 nd edition,
More informationChapter 3:: Names, Scopes, and Bindings (cont.)
Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level
More informationSoftware troubleshooting
N E W S L E T T E R IT Computer Technical Support Newsletter Software troubleshooting November 9, 2015 Vol.2, No.4 TABLE OF CONTENTS Software troubleshooting...1 Unexplained software crashes and error
More informationThe name of this type library is LabelManager2 with the TK Labeling Interface reference.
Page 1 of 10 What is an ActiveX object? ActiveX objects support the COM (Component Object Model) - Microsoft technology. An ActiveX component is an application or library that is able to create one or
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationPerformance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1
Performance Best Practices Paper for IBM Tivoli Directory Integrator v6.1 and v6.1.1 version 1.0 July, 2007 Table of Contents 1. Introduction...3 2. Best practices...3 2.1 Preparing the solution environment...3
More informationMicrosoft. Microsoft Visual C# Step by Step. John Sharp
Microsoft Microsoft Visual C#- 2010 Step by Step John Sharp Table of Contents Acknowledgments Introduction xvii xix Part I Introducing Microsoft Visual C# and Microsoft Visual Studio 2010 1 Welcome to
More informationObject Oriented Programming
Object Oriented Programming Java lecture (10.1) Exception Handling 1 Outline Exception Handling Mechanisms Exception handling fundamentals Exception Types Uncaught exceptions Try and catch Multiple catch
More informationCSC 533: Organization of Programming Languages. Spring 2005
CSC 533: Organization of Programming Languages Spring 2005 Language features and issues variables & bindings data types primitive complex/structured expressions & assignments control structures subprograms
More informationChapter 3:: Names, Scopes, and Bindings
Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation
More informationIntroduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types
Chapter 6 Topics WEEK E FOUR Data Types Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference
More information6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5.
Page 1 of 5 6.170 Laboratory in Software Engineering Java Style Guide Contents: Overview Descriptive names Consistent indentation and spacing Informative comments Commenting code TODO comments 6.170 Javadocs
More informationSymbol Tables Symbol Table: In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is
More informationVariable A variable is a value that can change during the execution of a program.
Declare and use variables and constants Variable A variable is a value that can change during the execution of a program. Constant A constant is a value that is set when the program initializes and does
More informationRemote Procedure Call (RPC) and Transparency
Remote Procedure Call (RPC) and Transparency Brad Karp UCL Computer Science CS GZ03 / M030 10 th October 2014 Transparency in Distributed Systems Programmers accustomed to writing code for a single box
More informationMemory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008
Dynamic Storage Allocation CS 44: Operating Systems Spring 2 Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need to grow or shrink. Dynamic
More informationOperating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst
Operating Systems CMPSCI 377 Spring 2017 Mark Corner University of Massachusetts Amherst Last Class: Intro to OS An operating system is the interface between the user and the architecture. User-level Applications
More information(Refer Slide Time: 4:00)
Principles of Programming Languages Dr. S. Arun Kumar Department of Computer Science & Engineering Indian Institute of Technology, Delhi Lecture - 38 Meanings Let us look at abstracts namely functional
More informationCertified LabVIEW Associate Developer Exam. Test Booklet
Certified LabVIEW Associate Developer Exam Test Booklet Note: The use of the computer or any reference materials is NOT allowed during the exam. Instructions: If you did not receive this exam in a sealed
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationFunctions. CS10001: Programming & Data Structures. Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur
Functions CS10001: Programming & Data Structures Sudeshna Sarkar Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur 1 Recursion A process by which a function calls itself
More informationCorrelating efficiently
Correlating efficiently Rob Block Lead Engineer, ArcSight Correlation Agenda Introduction Filters Real time correlation Reporting Trends to rescue Q & A 2 Introduction Correlating efficiently: Goals Understand
More informationIntermediate Representations & Symbol Tables
Intermediate Representations & Symbol Tables Copyright 2014, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission
More informationChapter 9 :: Subroutines and Control Abstraction
Chapter 9 :: Subroutines and Control Abstraction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter09_Subroutines_and_Control_Abstraction_4e - Tue November
More information6.001 Notes: Section 15.1
6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define
More informationRich Text Tips, Tricks & Techniques. Ben Langhinrichs President, Genii Software Ltd.
Rich Text Tips, Tricks & Techniques Ben Langhinrichs President, Genii Software Ltd. Introduction: Ben Langhinrichs President - Genii Software Ltd. Founded in 1992 (OS/2 utilities) First Notes product in
More informationElasticsearch Scalability and Performance
The Do's and Don ts of Elasticsearch Scalability and Performance Patrick Peschlow Think hard about your mapping Think hard about your mapping Which fields to analyze? How to analyze them? Need term frequencies,
More informationOverview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions
CMSC 330: Organization of Programming Languages Multithreaded Programming Patterns in Java CMSC 330 2 Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to
More informationIntroduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015
Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges
More informationHierarchical inheritance: Contains one base class and multiple derived classes of the same base class.
1. What is C#? C# (pronounced "C sharp") is a simple, modern, object oriented, and type safe programming language. It will immediately be familiar to C and C++ programmers. C# combines the high productivity
More informationObjects and Classes. Amirishetty Anjan Kumar. November 27, Computer Science and Engineering Indian Institue of Technology Bombay
Computer Science and Engineering Indian Institue of Technology Bombay November 27, 2004 What is Object Oriented Programming? Identifying objects and assigning responsibilities to these objects. Objects
More informationChapter 9: Dealing with Errors
Chapter 9: Dealing with Errors What we will learn: How to identify errors Categorising different types of error How to fix different errors Example of errors What you need to know before: Writing simple
More informationException Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES
1 2 13 Exception Handling It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something. Franklin Delano Roosevelt O throw away the worser
More informationVery simple programming, limited exposure to assignment and variables minutes, or a full lesson with extension exercises
Box Variables Age group: Abilities assumed: Time: Size of group: Focus Variables Assignment Sequencing Programming 10 adult Very simple programming, limited exposure to assignment and variables 15-20 minutes,
More informationChapter 8 :: Subroutines and Control Abstraction. Final Test. Final Test Review Tomorrow
Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott Administrative Notes Final Test Thursday, August 3 2006 at 11:30am No lecture before or after the mid-term
More informationThe Processor Memory Hierarchy
Corrected COMP 506 Rice University Spring 2018 The Processor Memory Hierarchy source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved.
More informationCopyright (c) by Matthew S. Harris
Documentation & How-To Didjiman's Forms Instance Manager Class For MS Access 2007 and Higher Version v2017-03-28 Copyright (c) 2014-2017 by Matthew S. Harris Permission is granted to copy, distribute and/or
More informationJohn Wawrzynek & Nick Weaver
CS 61C: Great Ideas in Computer Architecture Lecture 23: Virtual Memory John Wawrzynek & Nick Weaver http://inst.eecs.berkeley.edu/~cs61c From Previous Lecture: Operating Systems Input / output (I/O) Memory
More informationBuilding your own BMC Remedy AR System v7 Applications. Maruthi Dogiparthi
Building your own BMC Remedy AR System v7 Applications Maruthi Dogiparthi Agenda Introduction New Goodies Navigation, tree widgets Data Visualization Plug-in framework Development Guidelines Tools BMC
More informationIntroduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016
Introduction to Concurrent Software Systems CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016 1 Goals Present an overview of concurrency in software systems Review the benefits and challenges
More informationMicrosoft Visual Basic 2015: Reloaded
Microsoft Visual Basic 2015: Reloaded Sixth Edition Chapter Three Memory Locations and Calculations Objectives After studying this chapter, you should be able to: Declare variables and named constants
More informationIntroducing C++ to Java Programmers
Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003 1 Philosophy of C++ Bjarne Stroustrup invented C++ in the early 1980's at Bell Laboratories First called "C with classes" Design Goals:
More informationProgramming Languages Third Edition. Chapter 7 Basic Semantics
Programming Languages Third Edition Chapter 7 Basic Semantics Objectives Understand attributes, binding, and semantic functions Understand declarations, blocks, and scope Learn how to construct a symbol
More informationAdvanced Database Systems
Lecture IV Query Processing Kyumars Sheykh Esmaili Basic Steps in Query Processing 2 Query Optimization Many equivalent execution plans Choosing the best one Based on Heuristics, Cost Will be discussed
More informationJScript Reference. Contents
JScript Reference Contents Exploring the JScript Language JScript Example Altium Designer and Borland Delphi Run Time Libraries Server Processes JScript Source Files PRJSCR, JS and DFM files About JScript
More information