Notes from Tcl/Tk 1997, Boston

Keynote, Brian Kernighan

Microsoft Windows: ``An enormous number of buttons and knobs and stuff that you could find eventually by sort of playing Adventure.''

He tried Visual Basic and Java variants of some of their software. VB is ``mostly what you need in a programming language, but boy is it clunky''. IPC is a headache, and early on it was buggy: ``the concept of an operating system...''. Drawing the interface is good for fixed layouts, but it gets hard for variable, adaptive layouts. VB wins big for dealing with the Windows API, which has ``ten or twenty functions for each of you here''; VB deals easily with all of it. It's easy to link C bits into VB, and there is a large third-party market in them. There's no portability, however.

Java is okay as a language in general, but the libraries are crud. IPC is okay. File I/O is ``just awful'', seriously clumsy and ``slow beyond belief''. AWT is ``large but not very powerful''. ``Five geometry managers, all weak.'' It hurts badly that their equivalents of text and canvas widgets are so feeble, because those take a lot of the load off the Tcl/Tk programmer. (VB has same problem.)

For their second application, the VB version was initially easy but rapidly became unmanageable. Performance was also very bad on complex cases.

Ease of experimentation is crucial. High-level tools like canvases and tagging (esp. multiple tags) help a lot, eliminate a lot of user code. ``Graphics analog of associative arrays.'' VB and Java are very weak on active graphics, graphics that will do things or change on request.

``Tcl/Tk is a surprisingly well-kept secret.''

Why languages succeed: good technical core, so programmers are willing to use it; good engineering choices; reasonable advance over the past, but not too big a step; good match with environment and hardware; luck.

Why languages fail: wrong engineering, too big/slow/late (Ada); wrong philosophy, with ideology valued over functionality, too restrictive and mathematical (Scheme); wrong politics; wrong place at wrong time, i.e. bad luck.

This document was translated by ms2html v1.8 on 03.12.97.