De Toekomst van Borland Pascal |
10 jaar Borland Pascal
Borland bestaat dit jaar (1994) elf jaar, en in november 1993 was het precies 10 jaar geleden dat Turbo Pascal versie 1.0 uitkwam.
Inmiddels zijn we 10 releases verder met Borland Pascal 7.0, en zijn er wereldwijd ruim 2 miljoen exemplaren van Turbo en Borland Pascal verkocht.
Interessant is dat Borland zelf een grote applicatie met Borland Pascal heeft gebouwd, namelijk Quattro Pro 5.0.
32-bits Borland Pascal compiler
Borland werkt momenteel aan een echte 32-bits Borland Pascal compiler.
Deze compiler wordt volgens de zogenaamde "C/C++ Tiny" flat mode opgezet; dat wil zeggen één selector (die in feite overbodig is), en 32-bits pointers die alleen maar uit 32-bits offsets bestaan.
Deze 32-bits "flat mode" compiler, die standaard double word allignment zal kennen, heeft dus 4 Gbytes aan direkt adresseerbare geheugenruimte.
Borland Pascal for DOS, OS/2 of WinNT
Als mogelijke platforms voor de nieuwe 32-bits compiler zijn lange tijd drie kandidaten geweest, te weten: 32-bits DPMI (onder DOS dus), OS/2 en Win32s & WinNT.
Recente uitlatingen van Borland hebben duidelijk gemaakt dat in eerste instantie een Win32 versie verwacht mag worden.
Het enige dat ik hier verder over mag vertellen is dat zowel Anders als Zack (afzonderlijk) vertelden dat zij moeten wachten op de verkoopresultaten van Borland C++ for OS/2 alvorens zij aan de slag mogen voor Borland Pascal for OS/2.
Overigens wist Anders mij te overtuigen dat het eventueel porten van een 32-bits Borland Pascal compiler naar OS/2 niet zo'n heel grote klus meer is (zodra er reeds een 32-bits compiler voor een ander platform is), omdat ze zowel de parser als de code-generator zó opzetten dat ze hiervan grote delen kunnen hergebruiken.
Hierbij vertelde Anders ook nog dat ze speciale optimalisatie-mogelijkheden voor de 486 en Pentium ingebouwd hebben en nog verder aan het inbouwen zijn, omdat dan pas de echte 32-bits flat mode performance verschillen duidelijk worden.
Wanneer verschijnt de 32-bits versie van Borland Pascal?
Het zal duidelijk zijn dat eerdere berichten en geruchten ("begin 1994") niet door Anders of Zack bevestigd (noch ontkend) konden worden.
Ik ben bang dat we wat dat betreft een afwachtende houding moeten aannemen, zeker gezien het grote aantal onderwerpen (zie onder) waarover ze feedback over wilde hebben.
Persoonlijk schat ik in dat Borland Pascal 8.0 grote kans maakt om op de volgende Borland Language Conference, komende zomer in Orlando, gepresenteerd te worden.
Nog even geduld, dus.
Het enige dat ze hier verder nog over vertelde is dat ze zelf intern al een tijdje werken met de 32-bits DPMI kernel.
Problemen met de 32-bits omgeving
Een van de discussiepunten die nog open staat is het standaard gebruik van Integers.
Zijn die 32-bits onder een 32-bits compiler, of zijn ze 16-bits zoals onder een 16-bits compiler?? Ook de discussie die we in San Diego met Anders en Zack hierover hebben gehad heeft hier niet echt tot een oplossing geleid.
Wat mij betreft blijft een Integer gewoon 16-bits, en gebruik ik wel LongInt voor een 32-bits variant, maar Anders wil de taal liever zo intuďtief mogelijk houden, en een integer als standaard snel type aanbieden (en onder een 32-bits omgeving is een 16-bits integer operatie veel langzamer dan een 32-bits integer operatie).
Een ander mogelijk probleem is het gebruik van 32-bits DLLs onder 16-bits en andersom.
Hierbij zal er op z'n minst performance verlies optreden bij de mode switches van de code van real-mode naar protected mode en terug.
16-bits Borland Pascal
Naast de 32-bits Borland Pascal compiler, gaat het werk aan de 16-bits compilers ook gewoon rustig verder.
Volgens Richard Nelson (de man die de Pascal dokumentatie zo'n beetje coördineert) zijn ze momenteel dan ook een groot aantal verschillende sets dokumentatie aan het opzetten, waar hij verder natuurlijk eigenlijk helemaal niets over mocht vertellen.
Nieuwe features
Borland Pascal zal uitgebreid worden met een flink aantal nieuwe features en mogelijkheden.
Voorbeelden van nieuwe taal-features waar aan gewerkt wordt zijn exceptions en assertions.
Er wordt verder nog nagedacht over debug un-inline information en speciale relational ifdefs.
Exceptions
De syntax van exceptions staat nog niet geheel vast (of is in ieder geval nog niet geheel vertoond), maar zal vermoedelijk erg op de C++ exception syntax gaan lijken, dus iets als Try, Accept en Catch.
De toekomstige RTL wordt kennelijk op een speciale manier opgebouwd zodat de exceptions aan of uitgezet kunnen worden, zonder dat de programmeur daar extra last (performance) of hinder (extra functions) van ondervindt.
Exceptions zijn erg handig om af te vangen in plaats van overal naar de waarde van IOResult of een floating point vermenigvuldiging te moeten kijken, of speciaal te moeten reageren als de constructor van een object faalt.
Assertions
Assertions zijn afkomstig uit C.
De C-syntax is als volgt: "assert(statement-of-call);" Als het statement of de call dat aan de assert wordt meegegeven een nul oplevert, dan is er iets mis.
Vervolgens wordt het betreffende regelnummer en de naam van de source file op stdeer geprint (deze informatie wordt tijdens compile-time geëvalueerd en meegegeven), en wordt het programma afgebroken (vrij onbeleefd).
De exacte syntax die Anders in zijn hoofd heeft weet ik nog niet, maar het zal hier wel enigszins op gaan lijken.
Debug un-inline information
Daarmee bedoel ik de optie om een speciale debug-vlag aan te zetten die inline code (en met name inline macros, die immers geëxpandeerd worden) te expanderen, zodat de debugger er een echte procedure of function-call van kan maken en tracen.
Dit kan een handige optie zijn bij het debuggen van een programma! Of dit ook daadwerkelijk in de volgende versie zal zitten wisten we echter niet met 100% zekerheid los te krijgen.
Relational ifdefs
Waar Anders ook over na zal denken is {$ANDIF xxx} en {$ORIF yyy} om de soms wat onleesbare {$IFDEF} combinaties wat beheersbaarder te maken.
Hij vond dit een goed idee, en het leek hem weinig werk om dit voor elkaar te krijgen
Eenvoud in gebruik
Borland Pascal wordt niet uitgebreid met C++ features en mogelijkheden als operator overloading, multiple inheritance, templates en/of macros.
In de kamer ernaast werd over Borland C++ gesproken, en Zack en Anders verwezen iedereen die over bovenstaande onderwerpen begonnen dus graag naar de volgende kamer.
Het heeft geen zin om te proberen van Borland Pascal een soort C++ te maken.
Integendeel juist, Borland wil Pascal toch echt Pascal laten, en ze zijn zelfs van plan om zowel de omgeving Borland Pascal als de taal zelf nog eenvoudiger in het gebruik te laten worden.
Hoe of wat kon of wilde men nog niet vertellen, alhoewel later zowel Zack als Danny Thorpe vertelde dat ze bij Borland goed hebben gekeken naar omgevingen als Visual Basic en Visual C++.
Hierbij mogen ook de ontwikkelingen rond Borland C++ 4.0 met de Experts en mogelijkheden voor VBX-controls niet vergeten worden.
Conclusie
Al met al kan ik concluderen dat de ontwikkelingen met Borland Pascal niet stil staan, en dat we waarschijnlijk binnenkort een aantal spannende dingen tegemoet kunnen zien.