Programming Using TclTk - PowerPoint PPT Presentation

1 / 44
About This Presentation
Title:

Programming Using TclTk

Description:

'Programming productivity may be increased as much as five times when a suitable ... Commands separated by newlines, semi-colons. Tcl command ... – PowerPoint PPT presentation

Number of Views:122
Avg rating:3.0/5.0
Slides: 45
Provided by: johno202
Category:

less

Transcript and Presenter's Notes

Title: Programming Using TclTk


1
Programming Using Tcl/Tk
  • Dr. Ernest J. Friedman-Hill
  • ejfried_at_herzberg.ca.sandia.gov
  • http//herzberg.ca.sandia.gov/

2
  • Programming productivity may be increased as
    much as five times when a suitable high-level
    language is used.
  • F.P.Brooks, The Mythical Man-Month
  • representation is important, because how
    information is represented can greatly affect how
    easy it is do do different things with it.
  • David Marr, Vision

3
Your Instructor
  • SMTS in Scientific Computing at Sandia National
    Labs
  • Writing Tcl code since Fall 1994
  • Ph.D. in Chemistry, MIT 1992
  • Using Tcl/Tk for systems integration, automated
    test, distributed computing
  • Wrote XCELL Design Environment
  • Friedman-Hill, E.J. and J.M. OConnor, The XCELL
    Integrated Product Realization Environment A
    Toolbox for Agile Construction of Custom
    Parametric Design Software, Proceedings of the
    1996 Agility Forum National Meeting, Boston, MA.

4
What youll need
  • A computer with WWW FTP access
  • (UNIX preferred Win95, Win3.1 PC or Mac OK)
  • Netscape Navigator (if available) for Tclets
  • A Tcl/Tk installation
  • http//www.sunlabs.com/research/tcl/install.html
  • Binaries and source
  • Textbook
  • Ousterhouts Tcl and the Tk Toolkit
  • (Addison-Wesley, ISBN 0-201-63337-X)
  • Other reading material
  • Up-to-date man pages Tk4.0 Porting document

5
Other References
  • Exploring Expect, Don Libes (O'Reilly, ISBN
    1-56592-090-2)
  • Recommended reading.
  • Practical Programming in Tcl and Tk, Brent Welch
    (Prentice Hall, ISBN 0-13-182007-9)
  • Lots of examples. Comes with a source disk.
  • http//www.sunlabs.com/research/tcl/
  • Tcl/Tk home page. Source, docs, info.
  • http//www.sunlabs.com/research/tcl/plugin/
  • Home page for the new Navigator plug-in

6
Who you are
  • Write on a piece of paper
  • Your name
  • What you do
  • What you want to do with Tcl/Tk
  • What other computer languages you know
  • Anything youd especially like to see covered

7
What Ill do
  • Today give an overview of the Tcl language
  • Next four weeks
  • Using the Tcl language
  • GUI development with Tk
  • Important Tcl extensions like expect
  • Integrating Tcl/Tk with C and C applications
  • Writing Tclets for the WWW
  • Put course notes on the Web
  • http//herzberg.ca.sandia.gov/TclCourse/
  • PowerPoint format only (sorry)

8
What youll do
  • Complete several small problem sets
  • Coding problems and questions
  • Complete a term programming project
  • You should choose a small application that fills
    a real need or solves a real problem
  • Examples GUI for a command-line utility task
    automation a game or puzzle
  • Briefly present your project at the last meeting
  • Ask questions
  • Participation in class or via email is expected

9
Grading System
  • Grade
  • 40 Homework
  • 40 Project
  • 20 Participation
  • Scores (None), OK, Good, Excellent
  • Grading on a Curve. Mode is B.

10
Overview of Tcl/Tk
  • Component technologies
  • Tcl embeddable scripting language
  • Tk GUI toolkit and widgets based on Tcl.
  • The principle universal scripting language
    controls everything functions, interfaces,
    communication.
  • Results
  • Raise the level of GUI programming simpler,
    5-10x faster application development than X, raw
    Win32
  • Greater power programmable applications work
    together cross-platform delivery
  • Active objects replace data with scripts.

11
Outline
  • Tcl scripting language.
  • Tk toolkit.
  • Tk applications.
  • Survey of applications and extensions.
  • Conclusions.

12
Tcl Tool Command Language
  • Interactive programs need command languages
  • Typically redone for each application.
  • Result weak, quirky.
  • emacs and csh powerful, but can't reuse.
  • Solution reusable scripting language.
  • Interpreter is a C library.
  • Provides basic features variables, procedures,
    etc.
  • Applications extend with additional features.

13
Scripting Language Philosophy
  • Large, complex applications
  • Performance important.
  • Need structure.
  • Goal prevent bad things.
  • Interactive commands, scripting
  • Performance less important.
  • Minimum structure less overhead, easy
    interchange.
  • Goal enable good things.

One language can't meet all needs?
14
Two-Language Approach
Program size, complexity, reuse
1

C
Tcl
  • Use Tcl for scripting, C or C for large things.
  • Goals for Tcl
  • Minimal syntax easy to learn and type.
  • Minimal structure make things play together.
  • Simple interfaces to C extensibility.

15
Tcl Tool Command Language
  • Simple syntax (similar to sh, C, Lisp)
  • set a 47 ? 47
  • Substitutions
  • set b a ? 47
  • set b expr a10 ? 57
  • Quoting
  • set b "a is a" ? a is 47
  • set b expr a10 ? expr a10

16
More On The Tcl Language
  • Rich set of built-in commands
  • Variables, associative arrays, lists.
  • C-like expressions.
  • Conditionals, looping
  • if "x lt 3"
  • puts "x is too small"
  • Procedures.
  • Access to files, subprocesses, network sockets

17
More On The Tcl Language
  • Only data representation is zero-terminated
    strings
  • Easy access from C.
  • Programs and data interchangeable.
  • set cmd1 "exec notepad"
  • ...
  • eval cmd1
  • (notepad.exe launches under Windows)
  • Unfortunately, no 8-bit data

18
Factorial Procedure
  • Defining and using procedures is easy!
  • proc fac x
  • if xlt1 return 1
  • expr xfac expr x-1
  • fac 4 ? 24

19
Embedding Tcl In Applications
  • Application generates scripts.
  • Tcl parses scripts, passes words to command
    procedures.
  • Application extends built-in command set
  • Define new object types in C.
  • Implement primitive operations as new Tcl
    commands.
  • Build complex features with Tcl scripts.

Tcl
Application
Init
Command Loop
Parser
Application Commands
Built-In Commands
  • Note that the command loop can also be in the
    Tcl/Tk box.

20
Extensions
Tcl
Application
Extension
Init
Command Loop
Parser
Application Commands
Built-In Commands
Extension Commands
  • Extensions can be developed independently
  • Network communication, database access, security,
    ...
  • Applications can include combinations of
    extensions.

21
The Tk Toolkit
  • The problem
  • Too hard to build applications with nice user
    interfaces.
  • Even harder to do so cross-platform
  • The wrong solution
  • C, object-oriented toolkits, Javas AWT
  • Only small improvement (10-20?) must
    stillprogram at a low level.
  • The right solution
  • Raise the level of programming.
  • Create interfaces by writing Tcl scripts.

22
Creating User Interfaces With Tk
  • Additional Tcl commands
  • Create Motif-like widgets (on all platforms)
  • Arrange widgets.
  • Bind events to Tcl commands.
  • Manipulate selection, focus, window manager, etc.
  • Library of C procedures
  • Create new widget classes.
  • Create new geometry managers.

23
What's A Tk-Based Application?
  • The Tcl interpreter.
  • The Tk toolkit.
  • Optionally, application-specific C code
    (primitives)
  • New commands.
  • New widgets.
  • Tcl scripts (compose primitives into actions)
  • Build user interface.
  • Respond to events.

Tcl commands
24
Wish Windowing Shell
  • Create user interfaces by writing Tcl scripts.
  • Hello, world
  • button .hello -text "Hello, world" -command exit
  • pack .hello
  • Simple directory browser 30 lines
  • Web browser 2000 lines
  • 10x less code for simple things.

25
Browser Wish Script
  • !/usr/local/bin/wish4.0
  • listbox .list -yscroll ".scroll set" \
  • -width 20 -height 20
  • pack .list -side left
  • scrollbar .scroll -command \
  • ".list yview"
  • pack .scroll -side right -fill y
  • wm title . "File Browser"
  • if argc gt 0
  • set dir lindex argv 0
  • else
  • set dir .
  • foreach i lsort glob .
  • .list insert end i
  • bind .list ltDouble-ButtonPress-1gt
  • browse dir selection get
  • bind all ltControl-cgt destroy .
  • proc browse dir file
  • if dir ! "."
  • set file dir/file
  • if file isdirectory file
  • exec browse file
  • else
  • if file isfile file
  • exec emacs file
  • else
  • error "can't browse file"

26
Other Uses For Tcl
  • Data representation
  • Store data on disk as Tcl scripts.
  • To load information, evaluate script
  • Good for app configuration
  • Active objects
  • Store scripts in objects.
  • Evaluate scripts to give objects behavior.
  • Communication send Tcl scripts between
    applications.
  • Executable content
  • Active e-mail messages (Safe-Tcl)
  • Web pages (Tclets)

27
Status
  • Runs on all UNIX/X platforms.
  • Runs on Win32/Win16/Mac as of version 7.4/4.1.
  • Source and documentation freely available.
  • New Netscape Plug-In may increase audience.
  • 100,000 developers world-wide?
  • Hundreds of commercial products, free extensions.
  • Newsgroup comp.lang.tcl.
  • 2 introductory books (Ousterhout, Welch).

28
Representative Applications
  • Multimedia, groupware.
  • Active e-mail messages.
  • System administration.
  • Testing.
  • Scientific applications instrument control,
    simulation, visualization, CAD.
  • Real-time control system for offshore platform.
  • British teletext system.
  • Feature animation at Walt Disney Studios.
  • On-air broadcast control system for NBC.

29
Popular Extensions
  • Expect remote control for interactive UNIX
    programs such as ftp, telnet, crypt, and fsck
  • !/usr/local/bin/expect
  • spawn rlogin lindex argv 0
  • expect -re "() "
  • send "cd pwd\r"
  • expect -re "() "
  • send "setenv DISPLAY env(DISPLAY)\r"
  • interact
  • Expect is available via anonymous FTP
  • ftp//ftp.cme.nist.gov/pub/expect/

30
Popular Extensions, cont'd
  • Archives via anonymous FTP
  • ftp//ftp.neosoft.com/pub/tcl
  • TclX general-purpose extensions
  • POSIX system calls.
  • Keyed lists.
  • File scanning (similar to awk).
  • Date/time manipulation.
  • Debugging, help, profiling.
  • Oratcl and Sybtcl access to commercial
    databases.
  • Incr tcl object-oriented programming in Tcl.

31
Popular Extensions, cont'd
  • Tcl-DP socket-based remote procedure calls,
    distributed objects
  • Sample unique ID server
  • set myId 0
  • proc GetId
  • global myId
  • incr myId
  • return myId
  • dp_MakeRPCServer 4545
  • Sample client
  • set server dp_MakeRPCClient foo.bar.com 4545
  • dp_rpc server GetId
  • Not yet updated for Tcl 7.4/4.1 socket command

32
Where You Might Use Tcl and Tk
  • Creating graphical user interfaces.
  • Testing.
  • Applications that need scripting or extension
    facilities.
  • Platform-independent applications.
  • Creating interactive content for the WWW.

33
Drawbacks
  • Must learn new language
  • Substitution rules confusing to some people.
  • Competitors JavaScript, Visual Basic
  • Interpreted language has performance limits
  • Surprisingly high not much worse than Java
  • C interfaces incompatible with Xt, Motif library.
  • Motif look-and-feel on PC, Mac for now.

34
Whats up at Sun Labs?
  • Create exciting Internet applications
  • Netscape Plug-In available now!
  • Increase accessibility
  • More work on PC/Mac ports (native look and feel).
  • SpecTcl interactive GUI builder (available now)
  • Better development tools (debugger, etc.)
  • Improving the language/toolkit
  • Incremental on-the-fly compiler (some progress)
  • Better support for modules, data structures.
  • Dynamically loadable extensions now possible

35
Summing up...
  • High-level programming
  • Less to learn.
  • Build applications more quickly.
  • Universal scripting language
  • Extend and modify applications at run-time.
  • Make many things work together.
  • Use scripts instead of data
  • Active objects, executable content.
  • Tcl Tk shell of the 1990's?

36
Tcl Language Programming
  • There are two parts to learning Tcl
  • 1. Syntax and substitution rules
  • Substitutions simple, but may be confusing at
    first.
  • 2. Built-in commands
  • Can learn individually as needed.
  • Control structures are commands, not language
    syntax.
  • TCL HAS NO FIXED GRAMMAR!

37
Basics
  • Tcl script
  • Sequence of commands.
  • Commands separated by newlines, semi-colons.
  • Tcl command
  • One or more words separated by white space.
  • First word is command name, others are arguments.
  • Returns string result.
  • Examples
  • set a 22 set the variable a to 22
  • puts "Hello, World!" worlds shortest program

38
Division Of Responsibility
Command
  • Chops commands into words.
  • Makes substitutions.
  • Does not interpret values of words.
  • Single pass operation!

Tcl Parser
Words
  • Interprets words.
  • Can invoke parser recursively.
  • Produces string result.

Command Procedure
Result
39
Arguments
  • Parser assigns no meaning to arguments (quoting
    by default, evaluation is special)
  • C x 4 y x10
  • y is 14
  • Tcl set x 4 set y x10
  • y is "x10"
  • Different commands assign different meanings to
    their arguments. Type-checking must be done by
    commands themselves.
  • set a 122
  • expr 24/3.2
  • eval "set a 122"
  • button .b -text Hello -fg red
  • string length Abracadabra

40
Variable Substitution
  • Syntax varName
  • Variable name is letters, digits, underscores.
  • This is a little white lie, actually.
  • May occur anywhere in a word.
  • Sample command Result
  • set b 66 66
  • set a b b
  • set a b 66
  • set a bbb 666666
  • set a b.3 66.3
  • set a b4 no such variable

41
Command Substitution
  • Syntax script
  • Evaluate script, substitute result.
  • May occur anywhere within a word.
  • Sample command Result
  • set b 8 8
  • set a expr b2 10
  • set a "b-3 is expr b-3" b-3 is 5

42
Controlling Word Structure
  • Words break at white space and semi-colons,
    except
  • Double-quotes prevent breaks
  • set a "x is x y is y"
  • Curly braces prevent breaks and substitutions
  • set a expr bc
  • Backslashes quote special characters
  • set a word\ with\ \\ and\ space
  • Backslashes can escape newline (continuation)
  • Substitutions don't change word structure
  • set a "two words"
  • set b a

43
Notes on Substitution and Parsing
  • Tcl substitution rules are simple and absolute
  • Example comments
  • set a 22 set b 33 lt- OK
  • this is a comment lt- OK
  • set a 22 same thing? lt- Wrong!
  • set a 22 same thing lt- OK
  • Parser looks at a command just once!
  • Its OK to experiment
  • Expressions exist that cant be written in one
    command
  • Sometimes things get hairy cmd

44
For Next Week...
  • Get your Tcl/Tk environment set up
  • Try the demos, especially Tks widget
  • Type in Hello, World and get it to work
  • Read Chapters 1 through 5 of Ousterhout
Write a Comment
User Comments (0)
About PowerShow.com