Dyalog APL/W 7.2 and 8.0
Vector 13:1, page 54
Transcribed from the printed issue; not yet reviewed. Read it in the PDF of the issue, page 54
This article reviews Dyalog APL/W version eight for Windows 95 and APL/W version 7.2 for DOS/Windows 3.1 and WIN-OS/2 from Dyadic Systems. Version 8.0 is a new product developed for the Windows 95 and Windows NT platforms. It is a full-fledged, 32-bit, Win32 compliant application. Concurrent with the release of version eight, Dyadic released an upgrade for DOS/Windows 3.1 or WIN-OS/2 users, version 7.2. Both products are close in terms of features, and workspaces are interchangeable between them. Version 8.0 offers additional features that are available only on the Windows 95 and NT operating systems.
Dyadic first announced plans of version 8.0 last fall just after the release of Windows 95. At that time, Dyadic was offering a pre-release preview program that could be subscribed to. As a self-confessed software "junkie" and APL/W user, since version 6.3, I took advantage of the offer and received a stream of updates over that past eight months. Each update I received contained something new and it was enjoyable to see the various stages of development take shape. Dyadic began shipping final releases of both versions in the second week of May.
I tested version eight on a 486-33Mhz system running Windows 95, and version 7.2 on a Compaq Pentium-75Mhz and on a PS/2 386-25Mhz, systems both running OS/2 Warp. The 486 and PS/2 have 16MB of RAM and the Pentium has 24MB of RAM.
Last October, members of the Toronto APL SIG were given an early preview of version 8.0 by Peter Donnelly, Managing Director of Dyadic Systems.
The original shipping date was scheduled for late 1995. However, due to unexpected delays the release date was pushed forward a few times until it finally shipped in May. As we all know, delays in the software industry are common. Remember, Microsoft was more than 2 years late with "Chicago" — Windows 95. Delays can be annoying but they are better than shipping buggy code.
This is another ambitious upgrade of APL/W. A quick review of history shows just how far APL/W has evolved over the last four years. Dyadic was the first APL vendor to sell a true Windows APL development environment, version 6.2, back in 1992. In addition to offering an excellent APL interpreter, version 6.2 came with high level Windows GUI building tools that allowed the APL developer to do event-driven Windows programming. A runtime was included so APL/W applications could be distributed royalty free. In 1993, Dyadic released version 6.3 which directly supported 31 Windows objects, 77 properties and 31 events. In 1994, Dyadic released version 7.0 that came with a new user interface, customizable sessions by using the session object ⎕SE, support for additional Windows objects, closer APL2 compatibility, ODBC support and introduced namespaces to APL. In 1995, version 7.1 was released which further refined, added new features and stabilized this leading edge product.
Now, version 7.2 builds on this solid 7.1 foundation. This release supports 43 Windows objects, 152 properties and 85 events. Version 8.0 has all the 7.2 features plus Windows 95 enhancements, thereby boosting the number of Windows objects to 54, 186 properties and 129 events. Dyadic has now reclassified some events to be called "methods" which is consistent with other programming environments like Visual Basic and Delphi. The distinction between events and methods is that methods can only be invoked via program control and not by the user. APL/W can also be extended and use outside, powerful non-APL programs through the use of auxiliary processors (APs), by name association (i.e. ⎕NA) to access any compiled function in a Windows DLL file, by defining a VBX class in 7.2 and an OCX/ActiveX control class in 8.0. DDE support has been included since version 6.2.
Over the past four years APL/W leaped ahead of its closest competitor APL*PLUS in terms of innovation and features. That leap occured with the debut of version 6.2 as a true Windows application. This leadership has continued with each subsequent new release. In contrast, back in 1992, APL*PLUS introduced a cumbersome Windows interface in versions 4.5, 5.0 and 5.1. Furthermore, the Windows extensions did not work under OS/2. In 1994, APL*PLUS did introduce a native Windows APL that also works under OS/2, but it does not support the number of Window objects or have the features that APL/W offers. Manugistics was also trying to sell the APL*PLUS product and was withdrawing development resources and sales support. A new release of APL*PLUS is due out this year and it is good to see that the new owners, APL2000, are breathing new life into APL*PLUS.
A revamped APL*PLUS will lead to better competition in the marketplace which can be viewed as a positive development. To point out the positive influence of competition let’s examine the very visible OS/2 and Windows battle for the desktop. If IBM had listened to industry pundits and given up on developing OS/2 our choices for operating systems would probably be between only DOS and Windows NT. OS/2 is a technical success story that runs DOS and Windows programs extremely well. Microsoft responded to the OS/2 competitive threat by developing Windows 95 supported by an aggressive and ingenious marketing campaign. Today, we have four operating systems to choose from for the Intel platform, Microsoft or IBM DOS, IBM OS/2, Microsoft Windows 95 and Windows NT. OS/2 is due for a new release by the fall (code name Merlin) and Windows 95 and NT will be updated this year as well. Microsoft has overall market share but OS/2 has made its mark. The point here is that, because of competition, we as users have choice and benefit from fast-paced improvements and lower prices. Hopefully, the same analogy will be the case between Dyadic and APL2000. It is important, however, that both companies along with IBM can grow the APL market and not just gain greater market share from each other.
Now back to my review. Requirements to run version 7.2 are DOS/Windows 3.1 or 3.11, or OS/2 2.1, or 3.0 "Warp" with at least 6MB of RAM. Version 8.0 requires Windows 95 or Windows NT. For Windows 95 a minimum of 8.0 MB of RAM is required. For Windows NT there is no minimum specified but, because Windows NT itself needs 12MB for the operating system alone, 18 or 20MB is my estimated minimum for an NT workstation. Version 7.2 runs very well under Windows 95 and should run under NT.
Why Two Versions? Why Continue Windows 3.1 Development?¶
As stated earlier, version 8.0 is intended for Windows 95 and Windows NT. It will not work in Windows 3.1 or OS/2. Version eight is intended to be the future platform for major enhancements to APL/W. Microsoft’s vision of the world is that all PCs should be running Windows 95 or NT. To date, Windows 95 has been more successful in the home PC market than the corporate one. Windows NT, which is due for a new release shortly with the Windows 95 interface, shows potential for the future, but because of its heavy hardware requirements it is not a common operating system found on workstations. Today, most companies still rely on DOS/Windows 3.11 environments or OS/2 workstations which are many times more commonly installed than NT. Thus, until the business market moves in greater numbers to Windows 95 or NT it makes good business sense for Dyadic to continue to update version 7.x. Both versions share common C++ base code which makes it easier for Dyadic to update both versions at the same time.
Version 8.0.8 Features New Objects¶
Version 8.0 supports 11 new objects that are part of the Windows 95 environment. The names of these objects are ImageList, ListView, OCXClass, ProgressBar, PropertyPage, PropertySheet, RichEdit, Spinner, TrackBar, TreeView and UpDown. Associated with these objects are a host of new properties and events. These new objects are commonly found in other Windows 95 applications and they can all be built into APL/W applications as well. Each of these objects can enhance the visual appeal of your applications. There is a separate tutor workspace, WTUTOR95, that shows how each object works.
In APL/W, GUI objects are namespaces, which means you can embed any callback functions and data inside each object if you wish. You can also create non-GUI namespaces. Namespaces were first introduced back in version 7.0 and are very important in APL/W. Namespaces can be viewed as mini-workspaces within your workspace. Namespaces can be copied between workspaces and can also be saved on component files offering the possibility of building APL class libraries. Details of namespaces have been the focus of previous articles and I will not cover namespaces in detail here.
OLE Controls (OCX support) and ActiveX¶
OCXs are 32-bit, third party add-in DLLs, software components developed for Visual Basic, Visual C++ and any other development platform that can support them. Now OCX support has been introduced in version eight. Version 7.x continues to support 16-bit VBXs, version 1.0 controls. Support for VBX has been improved since version 7.0 and most VBXs do work, but you might come across some that do not, and inadequate documentation can make them difficult to use. The situation for OCXs is much better. To date, Dyadic claims that all OCXs tested work in Version 8.0 and because each OCX control must contain embedded documentation in the control OCXs are easier to figure out how to use. VBXs are not supported in version eight. Almost all companies that produce controls are concentrating on OCX/ActiveX controls.
Full OLE 2.0 technology is still being developed. Improvements planned for later this year include being able to use version 8.0 as an OLE server.
A new variant on OLE is what Microsoft calls ActiveX controls. ActiveX controls extend OLE to include Internet hooks. APL/W should be able to use ActiveX controls. If Dyadic has to update APL/W for ActiveX support a free upgrade will be issued.
New Explorer and Find Objects Tools¶
The Dyalog APL/W Explorer is based closely on the Explorer tool in Windows 95. This is a cool tool, it is hard to live without it. It allows you view your APL workspace in a visual way. There are two parts to the Explorer. On the left side, an outline of your workspace is presented in a visual format via the TreeView object. If you are using namespaces or GUI objects this is extremely helpful in viewing how the workspace has been structured. The right side of the Explorer shows icon or detailed level information of your functions, variables and operators in the namespace you want to focus on. You have your choice of large icon, small icon or detail view. The detail view, which I find the most useful, uses the listview object and includes columns that show information on the object name, type, header line, size of object, date of the last edited change and who did the last edited change to a function — finally you can tell who did that last change. By clicking on any object in the Explorer you can edit it or display even more information via property sheets. You can, as well, perform namespace management operations such as creating/deleting namespaces and copying APL objects to and from namespaces either with keystrokes,or with menus, or you can drag & drop with the mouse. Some operations are available by using the right mouse button on a selected object.
The Explorer can be left on during your session. If you load another workspace the Explorer updates itself with the new workspace objects. If you load two or more APL/W sessions you can invoke separate Explorers.
Another new tool, the Find object tool, can locate functions, variables and operators that are in your workspace but may be buried in deeply nested namespaces.
Long File Names¶
Windows 95 applications, like APL/W, support long file names. If you can type, you can include up to 256 characters in a workspace name, so you can get quite descriptive. If, however, you want to load your saved version eight workspaces under version 7.2, you will have to truncate the name back to eight characters.
Windows 95 Logo¶
Dyadic’s intent for version 8.0 is to qualify for the official Microsoft Windows 95 logo and for any applications written in APL/W to, in turn, also be eligible to qualify. The process of qualifying is now underway. Dyadic’s position is that version eight, as is, qualifies for the logo, but it is up to an independent third party to decide. If version 8.0 fails to qualify, Dyadic has stated they will make any necessary changes and issue a free update.
Common New Features Found in Both Version 7.2 and 8.0¶
Development Environment¶
Both versions have a similar look and feel. Dyadic introduced a new look back in 7.0 and have retained the same interface. Version eight has new buttons on the toolbar for the new Explorer and Find utilities. Both versions have introduced a pop-up menu which is invoked by the right mouse button when you click anywhere in the session.
Control Structures¶
Control structures were first introduced to APL by APL*PLUS (then Manugistics — now APL2000). At the time, APL*PLUS developers encouraged other vendors to adopt control structures. As a result, APL/W now supports control structures with the exact same syntax as APL*PLUS.
Control structures are not intended to replace good APL programming techniques that reduce the need to do looping but they do provide an accepted alternative, that other programming languages have had for a long time. If you are porting from APL*PLUS to APL/W and are using control structures that porting has just become easier to do.
Native File System¶
Like control structures, ⎕N functions have been part of the APL*PLUS environment for many years. APL/W has now adopted these native functions thereby eliminating the need to emulate native file read and write functions with user-defined functions.
Enhancements to the Grid Object¶
Since version 7.0, APL/W has shipped with a native Grid object for displaying 2-dimensional arrays in a spreadsheet-like interface. Other APL and J vendors do not have a native grid and you have to purchase a separate VBX or OCX control to get one. In APL/W you get the grid built in and it is probably one of the objects you will use most. It is designed to work as a child object to a form, sub-form, property sheet and group objects and is fully documented in the manuals and in the on-line help.
Dyadic has enhanced the grid capabilities with each new release of APL/W. This latest enhancement allows to you to develop even more sophisticated applications with the grid. There are so many new features that the WTUTOR workspace now dedicates five lessons to the grid object. Of note, multi-level column and row titles are now available, along with displaying bitmaps, Windows metafiles and other graphics in each cell or across the entire grid. Formatting cells via ⎕FMT specification has been added thus making it easier to format cells. The enhanced grid now supports 69 separate properties and 39 events and methods.
New GUI Resource Editor (WDESIGN Beta at Time of Writing)¶
Since version 7.0 shipped, Dyadic has promised to update their WDESIGN workspace. WDESIGN is a workspace that first shipped with 6.2. It is a visual resource editor for developing and maintaining GUIs and gives APL/W a Visual Basic look. It has not changed since version 6.3. A new WDESIGN was not ready back when 7.0 was released and therefore did not incorporate new objects such as MDI, the grid object, namespaces, tab buttons etc.
The final version is still not ready but the latest beta version of WDESIGN was shipped to show it off and to get feedback. It looks very promising. All the new features are now supported or soon will be. Also, under version eight OCX controls can be incorporated. Developing a GUI interface is much easier if you can just point and click the objects you want from a toolbar onto your form and update properties via a property list. WDESIGN will generate all the code necessary to recreate your GUI or, alternatively, save the GUI objects in your workspace. The final version of this workspace can’t be shipped too soon.
An alternative resource editor, that ships as shareware with APL/W, is the Causeway workspace from Causeway Graphical Systems Ltd., written by Adrian Smith and Duncan Pearson. This is a new version of Causeway and it takes advantage of namespaces and the other new features. It is worth your while exploring Causeway. An updated on-line help file is provided.
Enhancements to the Tracer/Debugger¶
The tracer has been enhanced to allow you to insert multiple breakpoints in functions. Step by step tracing and continuous running after breakpoints are useful new features. The new tracer/debugger now sports a suite of new icon buttons with tooltips available to let you know what each action button does.
Distributed Dyalog Workspaces & Shareware¶
APL/W ships with the usual Dyadic utility workspaces, a revised WTUTOR workspace, a new WTUTOR95 workspace to help building GUI objects, demo workspaces including an OCX browser, a VBX or OCX example and the new WDESIGN beta workspace. In addition, Dyadic includes shareware versions of workspaces donated by other APL developers. Included under the subdirectory for "Outer Products" is Causeway, RAIN Graphics, WSFIND, COMPARE and others. I find each of these workspaces useful. RAIN, in particular, is a good graphics package that now uses namespaces. Causeway was featured at a recent SIG meeting by Adrian Smith along with the new NEWLEAF (not distributed as shareware) reporting workspace. Another workspace deserving honourable mention is COMPARE, by Rex Swain, which contains functions that will compare and highlight changes in functions from different workspaces. Some of these utilities, like COMPARE, can be copied into ⎕SE and are available to you from any workspace.
Other Enhancements¶
Other useful enhancements and new features are included and are too numerous to mention. Two new system variables of note are ⎕PATH and ⎕EXPORT. They are useful when referencing utility functions within a workspace but contained in protected namespaces. ⎕PATH is similar to the PATH command found in DOS.
Documentation¶
Good documentation is critical, especially for products such as APL, because you are not going to find any books at your local computer bookstore with names like "Dyalog for Dummies" or "Learn APL/W in 21 Days". You have to rely on what the vendor provides.
The documentation that ships with APL/W is the same for versions 7.2 and eight. The manuals are similar in style to those introduced with version 7.0. New material has been added and some re-structuring has been done. The number of manuals has been reduced from four to three but, overall, about 200 new pages have been added and there are about 1,400 pages in total. Features specific to version eight are well highlighted. Overall, the manuals are good, are well organized and include plenty of small examples.
What is lacking is a "how to" applications manual. By this, I mean, perhaps a separate manual showing complete and practical programming examples on application development. This manual would of course show off the benefits of using APL and Windows programming and the effective use of namespaces. Also detailed examples on each of the most popular OCXs and VBXs, with example code, and how to adapt any sample VB code to APL/W would be a great help.
Three Windows help files are also distributed. They are separated into "Latest Enhancements", "Language Help" and "GUI help". These are all well done and are an invaluable source of on-line help.
What APL/W Still Needs¶
Like all software, there is always room for improvement. In addition to the documentation suggestions, here are some suggestions for things I would like to see. Relatively speaking, these are minor. I am sure all current users of APL/W have their own suggestions.
First, it is easy to clutter up your screen with too many edit windows. This makes it awkward to get to the APL session and you either have to move those edit windows around or minimize them individually. There should be a way to get to the APL session more easily. Other Windows applications have a Window menu that allows to you do standard window management operations (i.e. cascade, tile or minimize open windows). APL/W should have a similar menu or else some other method to get the APL session "on top".
I would like to see the resource editor workspace WDESIGN more easily accessible. Perhaps the workspace could become part of the ⎕SE session object and available via the click of a button from the toolbar rather than loading or copying this workspace.
Importing workspaces from APL2 (mainframe) or APL*PLUS including component files can be done but exporting APL/W to other environments is not included. I would like to see APL2’s )IN and )OUT transfer file facilities adopted. Transfers to and from APL2/PC and APL2/2 should also be possible. Under "Outer Products", Jim Weigang’s shareware APLASCII transliteration workspace is included. This workspace can import and export workspaces to and from other APLs by using ASCII translation. This is a workable interim solution but should not be a replacement for formal importing and exporting tools.
The grid object, as is, is excellent for working with tables. I think an enhancement to the grid would be to display 3-dimensional arrays automatically by specifying the grid values property.
The new versions are quite stable but, given all the changes, some bugs do exist. By the time you read this a bug fix will probably be in the mail. Dyadic is quite responsive to responding to any problems. In the past, they have provided free updates that fix reported problems and sometimes add new features. In order to ease the distribution of updates Dyadic needs to extend its new Internet Web site and include an ftp facility. Improving the Web site is in the works.
Conclusion¶
Reviewing and working with a product like APL/W gives you faith in the future of APL. There is a lot of functionality for the APL/W user at any level. It also narrows the gap that exists between APL and what other development languages have. Even if you are not into developing GUIs there is still reason to consider APL/W. If you are developing GUIs APL/W supports the most Windows objects in the marketplace. Also, namespaces and all the benefits associated with them are only available in APL/W.
Should you buy, upgrade or convert to APL/W? The answer is "it all depends." This review has attempted to identify most of the new features. In the end, you have to try it for yourself and decide. My experiences have been very positive. Where I work, we started with mainframe APL2, migrated to APL*PLUS for the PC and in 1993 migrated fully to APL/W and some APL2/2. Version eight is for you if you have Windows 95 or NT and most of the major future enhancements will be done here. If you want to develop for Windows 3.1 and Windows 95/NT platforms you will need both versions so you can package the correct runtime interpreter and associated files. If Windows 95 or NT is your sole direction then you can get by without version 7.2.
Everything is included in the one purchase price. There are no additional add-in products to buy from Dyadic, such as ODBC support. There are, of course, add-in products from independent companies. Specific prices are something you should ask Dyadic or your local distributor.
Need more Information?¶
Dyadic Systems’ Internet Web page URL address is: http://www.dyadic.com
Internet e-mail address is: sales@dyadic.com