Before starting my speech I want to thank the International Pascal Congress organizers, and Sergio in particular, for their huge effort in making this event happen. I also want to thank the jury who decided to give me this very significant award.
As I wrote, "I'm incredibly pleased to be the winner of the Niklaus Wirth Award, given the huge respect I have for Dr. Niklaus Wirth and given the involvement I've had with the Pascal language and the Pascal developer community over more than 30 years.
I appreciate the recognition for my work as a book author, conference speaker, and recently product manager of one of the most prominent Pascal-based compilers and IDE, Delphi. I think this is not just a recognition of my personal work, but also of the work of many people I've been involved with and worked with over these many years and my thanks goes to those many individuals passionate for Pascal and Delphi."
In terms of this acceptance speech, the title I have chosen is "A Personal View of the History of Pascal and Delphi". With "personal view" I mean how my life was affected and helped a little to shape the current status of the Object Pascal community at large.
In other words, I plan going over the history of the Pascal language and tooling and in parallel going over my experience with it. At the end, I'll add some thoughts about the language and its ecosystem today.
Disclaimer: Some of the historical facts in this document are described as I personally remember them and given how many years passed, my memory might be at fault. In some cases, I took the freedom of not being factually correct, for the sake of not getting into too many details. Finally, everything here is my own perspective, and not that of Embarcadero, the company I work for.
When Dr. Nicklaus Wirth officially Introduced the Pascal language, in 1970, I was only a kid and had no access to a computer. Because personal computers didn't exist and phones still had a plug to the wall.
This file is licensed under the Creative Commons Attribution-Share Alike 2.5 Generic license.
My first Pascal compiler was an UCSD Pascal on a ZX Spectrum. For the younger people in the audience, a ZX Spectrum was a Z80 processor based computer with 64K of memory (but only 48K of RAM available, the low 16K was mapped to a ROM).
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
UCSD Pascal was an interpreter (based on "pcode") -- you know early Pascal language tools were primarily interpreters, not compilers, and based on an architecture not much different from Java JVM. The programs you could write were still significantly faster than the embedded BASIC language, even if not as fast as using Z80 assembly code.
That's how I started, and many of my generation. Writing code (or copying it from magazine listings) to run on a small computer, with good graphics and a decent CPU (decent for the time, of course).
As I started attending university, Pascal was considered the primary language for learning to program -- too bad it's not the case any more, as it is a great language for learning (more about that later). The reference book I used wan't much Wirth's language manual "The Pascal User Manual and Report" but his cornerstone and successful volume "Algorithms + Data Structures = Programs (Prentice-Hall Series in Automatic Computation)" from 1976 (https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs). As Wikipedia writes, "The book was one of the most influential computer science books of the time and, like Wirth's other work, was extensively used in education"
Something else was happening around computers and the Pascal language at the time. I'm referring to the early and mid 80ies. It was the start of the PC revolution. IBM had released their first PC and PC clones were starting to appear.
By Federigo Federighi - Own work, CC BY-SA 4.0
I was fortunate enough to have an Olivetti M24. The machine I owned had 2 floppy drives (the "floppy" ones) and only later I upgraded it to a hard drive. 20MB, if I remember. This was an interesting computer, with a much faster CPU than the IBM one, Olivetti was a great Italian company at the time, run with a modern organization and offering Silicon Valley style of benefits to the employees (but that's another story).
The reason I'm mentioning the M24 is I was able to use it to run Turbo Pascal. I think it was version 3, probably the most successful version of the IDE. Let me spend some time on Turbo Pascal as I think we in this audience owe a lot to it, and not just the Pascal people but the overall developer community. Again, sorry for describing what is a well known story for many, but I think it's nice for the younger audience to have a better understanding of what happened back then.
By Digital Research, Inc. - http://www.hampa.ch/pce/screenshots/index.html, Public Domain
In the very early days, the hardware vendors would also design the OS and provide tools for developers. This is what Apple did and other vendors who later disappeared used to do. The only open option was the CP/M operating system, by Gary Kildall's company, Digital Research. IBM did things differently, as they were too big of a company and each of these pieces would have taken too much time to create. So they decided to license the software, both the operating system and the programming tools. Microsoft was supposed to provide only the second, with Digital Research providing the OS. They ended up throwing in MS DOS, giving it to IBM almost for free, to save the overall project. It's a nice story, but a bit too offtopic for today, the story of how Digital Research (or Intergalactic Digital Research) missed the appointment with history.
By Rama & Muse'e Bolo - File:IBM_PC-IMG_7271.jpg, CC BY-SA 2.0 fr
Back to the IBM PC. It launched with programming languages from Microsoft: BASIC C, and Pascal. Really? Yes, Pascal.
At the same time a French entrepreneur who had studied math at the Polytechnic of Zurich (but also Music) found that someone in Denmark had written a very fast Pascal compiler for CP/M computers, called "Compas Pascal" (although different versions had different names) for a company called PolyData. They were selling it primarily to people in the area. I once talked with a developer who biked at Ander's home to get a copy with a fix.
So the US French guy offers the Danish developer and his company a licensing deal. I'd resell your Pascal compiler. Now the US French guy has no money, so he bargains with Byte (the most renowned computer magazine of the time) to have an ad placed without paying it in advance, as required. He was going to pay it with the sales deriving from the ad. Not only that, but the US French guy decided to sell the compiler at 49.99 dollars, while all other similar tools were well over 300 dollars, and so was the original licensed product. The Danish developer found that out, and considering he was paid in royalties, he thought that it had been really a dumb idea.
When the Turbo Pascal ad displayed in Byte, Turbo Pascal was an immediate hit. Philippe Kahn, the founder of Borland, had way more money than to pay for the ad. And Anders Hejisberg moved from Denmark to Scotts Valley, in California, to work full time on the product. As Hejisberg wrote, "the rest is history".
Now you might be wondering, Microsoft Pascal, what happened to that? It was obscured by the success of Turbo Pascal, and it was later retired. The Microsoft Pascal was an expensive compiler. Later they offered Quick Pascal to counter Turbo Pascal, but they ended up retiring that version as well. Not for technical reasons due to the language itself, only for market reasons. Many developers at the time were using Pascal, but not Microsoft tools.
Now what was great about Turbo Pascal? The language of course, we all like it. But it was one of the first ever Integrated Development Environments. Back then, you'd use an editor to type code. Save to a file. Run a command line compiler. Duly note the lines of errors in the output. Open the editor and move to that line. Save. Compile again. And you know, you could run a program at a time if this was MS DOS. Now finally the program compiles and you can run a debugger. Another separate tool. The ability to have a single tool for writing code, compiling, and debugging without existing from the tool was not just a great idea. It was a huge time saver.
You might be wondering, OK interesting but why is he spending all of this time discussing Turbo Pascal, a 40 years old piece of software? Well, exactly for this reason. Turbo Pascal 40th anniversary is coming along later this year, as the product was first unveiled in 1983!
Turbo Pascal has other peculiarities. Its fast performance was due to many factors. A lot of its code was in assembly. But also the fact it was a single pass compiler helped a lot. There are limitations in single pass compilers, in terms of the syntax you can enable. But they are fast. Some of today's compilers are still single pass compilers. Delphi 11 Alexandria is one of them. And by the way, if you call DCC at the command line you can see the version number. The version of the Delphi compiler is 35, dating back to Turbo Pascal.
Turbo Pascal was sold with a "Non nonsense book-like license". It was sold directly via mail orders. Borland sold about 250,000 copies of Turbo Pascal in the first two years, an amazing number for a tool for software developers in the early 1980s. Borland went ahead creating Sidekick, the first "terminate-and-stay-resident program (TSR)" program for DOS, and other dev tools, but that's not what I want to cover here.
Let me first get back to Nicklaus Wirth. He didn't remain still. After the Pascal language and its success in universities, but also in business, he went on and designed Modula-2. A lot of the ideas of Module-2 came into the early Turbo Pascal versions. That's where the concept of units comes from.
In terms of languages, There were also Modula-2+ and Modula-3. This last added object oriented features to the core language and it was designed by industry research labs, including Olivetti. Oddly enough, when I was graduating from University I did a stage at an Olivetti company and I got exposed to Modula-3 research. But I'm getting ahead of myself.
So let's get back to myself, I used Turbo Pascal 3 on my Olivetti M24 and kept using the language also on following computers and different releases. At university, Pascal was my first programming language and (if I remember) my first project there was building a graph analisys application to compute the shortest path across multiple points. At the university, however, I ended up looking at other programming languages. I learned C as part of the operating system class. And in advanced computer science classes I got exposed to other new trends in programming. OOP was in its infancy, with Smalltalk. Functional programming was big with LISP. Logic programming had Prolog as a driving language (there was a Borland Turbo Prolog, BTW, not a big success),
By Amazon.com listing for the book, Fair use
Of these, Smalltalk was the one most instrumental to my career. I also studied a bit of Ada, not sure why -- a language with roots in Pascal syntax with begin/end and the like. I also learned another fairly obscure language, Eiffel, which premiered software contracts by making class invariants, preconditions and postconditions into explicit features of the language (a fairly unique case). Eiffel derived from Ada. Yes, the world of programming languages was very different in the late 80ies and early 90ies.
Photo by author, fair use
In any case, influenced by all of these new directions, the Pascal world looked into objects. The name "Object Pascal" was used by Apple for their language. Borland had "Turbo Pascal with Objects". That wasn't a great success and Turbo Pascal kept declining. You might now know, but that code is still around. You can declare an object type in Delphi. We get bug reports and complaints because that type doesn't exist in Delphi mobile compilers.
Interesting side story. Smalltalk was a nice language, but a bit impractical to use. It had no concept of source code. You'd just add messages, or methods, which were also objects, to the runtime. It was very heavy for the computers of the time. A small player created a Windows version, with significant optimizations in the architecture, and invented a class library for managing the Windows API via objects. The language was called Actor, the company was called "Whitewater Group" and its class library was later acquired by Borland to become the Object Windows Library, for C++ -- but I'm getting ahead of myself once again.
Fair use, original cover
What I ended up focusing on at the end of university and at the beginning of my career was, in fact, the newly introduced C++ language. It wasn't easy to find a compiler at first. For my dissertation, I used a C++ to C translator, which later used a C compiler to build the final code. No way to do any debugging, of course. Borland Turbo C++ was released soon after, followed by Microsoft Visual C++, and that changed it all.
Even if I was focused on C++, one of my first paid jobs was to translate a Turbo Pascal book from English to Italian. I learned a lot from it both in terms of Pascal language and libraries, but also in terms of the process of writing a book.
Shortly after, I learned programming Windows in C, "Petzold style", from the name of the most famous author of the definitive guide of Windows API development, Charles Petzold. Having the ability to use C++ and a class library was a huge bonus. Borland went full in, with a sophisticated and extensive class library, the Object Windows Library I just mentioned. Microsoft decided to go with a very thin layer, encapsulating the APIs without leveraging the object structure or adding much to it. Technically, it was much more limited and clearly inferior in terms of capabilities. Guess who won? Visual C++ and MFC are still around. Still a very thin layer. Still not Visual.
Photo by author
As I mentioned, I spent a few years focusing primarily on Borland C++ and OWL, but also Visual C++ and MFC. At the time I started attending Borland events and giving sessions. I wrote 3 books on Borland C++ and OWL. I did training and consulting work, but primarily for MFC. Until a day in 1984, in San Jose, when I had a meeting with the Turbo C++ product manager to discuss how to improve the library and make it more usable. I was suggesting adding a visual layer to make it easier to build the GUI. He turned me to his colleague, Zack Urlocker, and I had my first demo of Delphi. Which wasn't still called Delphi, by the way.
There were different names floating around, from Wasabi because it was hot, to VBK for VB Killer. One of the beta names, Delphi, was suggested by the late Danny Thorpe because it's the place to talk to the Oracle, given the strong database tie-in. The company planned to go with AppBuilder. That name is still in the product as the main IDE window name. But because it was in use already, they ended up picking Delphi. That was a much better name, in retrospect.
The new product was jaw dropping, by all means. It was the perfect match (by that time standard, but still fairly nice by today's standards) of OOP and components, visual simplicity and a good OOP architecture, and a massive advance compared to OWL in terms of a clean mapping and encapsulation of the Windows API and the platform messaging system. It wasn't just an answer to VB. It looked like a huge revolution. Before the February 1995 release of the product, I left my job, started my own training and consulting company to focus on Delphi, and had landed a contract to write a book on it!
Image from https://github.com/ahejlsberg
Delphi takes us back to Hejlsberg. He was key to the success of Delphi, by designing an object model and language extensions that were and still are fundamental to the success of the language and its ecosystem. This guy is a language genius. Most language gurus design one great programming language in their life. Some end up getting a credit for two, generally in the same space. But very few end up being the inventors of three distinct programming languages in different spaces, as Hejisberg has done with Delphi, C#, and TypeScript. Not only, but he's also a great and humble human being, very friendly and accessible.
Photo by author
Anyway, this takes us to February 14th, 1995. The day Delphi was officially launched at Moscone Center in San Francisco as part of the SD West (Software Development West) conference, As an aside, this is something we lost over the years in our industry. These days we have Java One, MS BUILD, WWDC from Apple, Google event, Facebook has a developer conference. Each company has its own. At the time, there were company conferences (like the old, huge Borland Conferences) but there were also industry wide events focused on developers. You could have a conference with Stroustrup of C++ fame and Guido van Rossum of Python fame, with Microsoft developers and Borland ones, open source communities and paid tools. I had the sheer luck of not only attending, but even speaking at some of those events. Panels and debates were fun. There was real competition among the tools vendors, I mean sessions in which each tool was used to build the same program, with respective crowds cheering in the audience.
(See video at https://youtu.be/0q1BkHcZ5kE)
Sorry for the digression, back to Delphi. The launch event was impressive. The demos left people with no words: easy building a Windows UI, exceptions handling done right, OOP behind the scenes. The demo program had an access violation, and it handled it by resuming processing, rather than crashing abruptly. I was lucky enough to be at that event. If I remember, the party after the launch was at the Exploratorium, at its original location in San Francisco -- that's the experiment-based science museum founded by Frank Oppenheimer, the brother of Robert Oppenheimer and also a particle physicist.
When it was released, Delphi was (like Turbo Pascal a few years prior) an immediate hit in the industry. The business world was moving from DOS to Windows (Windows 95 was about to be released, the first real version of Windows). Moving from DOS interfaces with DB-oriented tools (Clipper, Borland dBase and Paradox) to Windows was complex. Delphi and its strong data orientation -- DB components, the BDE, data aware UI controls with a DBGrid, and live data at design time (a feature modern tools often fail to provide, requiring a complex build/deploy/debug cycle to see the UI populated with data). That's part of the reason.
The other part of the reason was that Delphi compiled code was fast. Much faster than Database 4GL languages. Much faster than the primary competitor, Visual Basic. Much faster than the upcoming Java VM. Delphi was fast, and this was even more appreciated in countries with limited access to hardware, due to the cost or due to political reasons. Even today, Delphi remains more successful internationally in places its performance mattered in the early days.
I did mention Java previously for a reason. Java was also launched in 1995. We can consider that year, 1995, the year of programming languages: Java, JavaScript, Ruby, PHP and Delphi all started about the same time, almost 30 years ago. Python was already there, but just barely.
- JavaScript first appeared December 4, 1995
- Java first appeared: May 23, 1995
- Python reached version 1.0 in January 1994 (although the first release is dated in 1991)
- PHP was introduced on 8 June 1995
- Ruby first appeared in 1995
- Delphi we have discussed, was launched in February 1995
Now if you look at the debates surrounding programming languages, JavaScript and Python are new, Delphi and Pascal are old. How come?
Delphi hasn't evolved much? I disagree, it has had a lot of extensions -- check my book or many other online sources to get an overview. What's new in JavScript over recent years? What's revolutionary in Python 3, compared to Python 2? If I read the documentation of the new release (https://docs.python.org/3/whatsnew/3.0.html) it's a lot of nice small extensions, changes to data types and RTL, nice and significant changes, but not a language revolution.
So what's old in Delphi? Is it the Pascal language? Is it the RAD model? Oddly enough it is seeing a lot of adoptions, Apple and Google seem to recently agree that previewing the UI at design time is a good idea. You can use Object Pascal to write code with any architecture you like. It's old not having a garbage collector? Maybe, but still keeping control of memory usage is not a bad idea in itself.
Screens from https://delphi.embarcadero.com/
Getting back to Delphi -- the product has continued evolving over the years, had different companies driving it (Borland, its CodeGear division, Embarcadero, now Idera), had multiple product managers, had many great experts as part of its R&D team. The last thing I want to do is discuss the company side of things. I'd rather cover what I did over these years and then get back to the product and its ecosystem.
The product went over many transformations. Delphi 2 had a 32-bit compiler for Windows 95. The language evolved a lot in the early years. In the Delphi 6 timeframe, Borland created Kylix, a Linux-hosted IDE for building Linux desktop applications. Later the company embraced .NET (possibly even too much for some time) and created a new IDE architecture "Galileo" which survives today.
As I mentioned earlier, at the time Delphi 1 was released I created my own training and consulting company. At the same time I started writing books and I also wrote a lot of articles for programming magazines: Delphi Informant and The Delphi Magazine, but also Windows Tech Journal and a few computer magazines in Italy. I mean, all real printed magazines sent by postal mail.
Photo by author
Let's start with my books. My first book related to the Pascal language was "Mastering Delphi 1". I had started with the intention of providing full coverage not only of the IDE and the language, but also its libraries. It took me a lot of time to write it. It was also complex at the time to work with a US publisher, I was receiving printed drafts by mail, I'd mark and mail back to the publisher in California. Anyway, the book took way too long to write -- but it ended up being a great investment and one worth doing. It was a mind-blogging 1,500 pages. Yes, a huge book. They had to use thin paper. It was successful, but not a hit. Because it took me a lot of time to write it, so it wasn't the first book out there. But it had positive reviews, got a lot of translations, and was praised by many readers. As I continued with Mastering Delphi 2, and 3 and 4 the book sale numbers kept growing. And then the book was a huge hit in Brazil, I'm not certain why. Some editions in Brazil sold as much as in the English edition.
Photo by author
Overall, different editions of Mastering Delphi got translated to well over 20 languages. I'm not sure I have a full list, the one on my website is not up to date. For a few years, writing books took the majority of my time, the rest was training, consulting, speaking at conferences.
How many books did I write on Object Pascal?
- Mastering Delphi 1 - 2 - 3 - 4 - 5 - 6 - 7 and 2005
- In the middle, Delphi Developers Handbook, covering more advanced topics and a book on Kylix
- Later I started self-publishing books. I wrote the Delphi 2007 Handbook, Delphi 2009 Handbook, Delphi 2010 Handbook, Delphi XE Handbook
- Later 4 different editions of my Object Pascal Handbook (2 in print)
That's a total of 16 printed books in English covering Object Pascal and Delphi. I also contributed to 3 Delphi Developer Days volumes with Cary Jensen. I don't plan to stop, I have two review projects in the works. A new edition of the language handbook for the next, coming release of Delphi. I'm also involved in updating a very special book, the Expert Delphi volume by the late Pawel Glowacki. It's going to take time, but it is a project I accepted to get involved to make sure Pawel's legacy won't get lost.
(Assumed to be a photo by Paolo Rossi)
The other thing I did over the years was teaching, training and consulting. I did that in Italy, in Europe, and around the world. I have given sessions in too many countries to have an actual count, from Australia to Brazil, from Canada to Singapore, from New Zealand to Japan, but also in the middle east -- where I found Delphi was causing traffic jams -- and across most European countries, as north as Norway and as South as Malta, as West as Portugal and as East as Poland. German, France, UK have been frequent destinations, but also Denmark, Sweden, Romania. Needless to say I took many trips to the US, for conferences and other events.
Let me get back to the traffic jams story, that is worth telling. I did a Delphi training session for the ministry of finance of Kuwait. Strange ministry of finance, because the country basically has no taxes, but anyway. While chatting, the developers tell me that many people are upset with one of their Delphi applications. It's causing traffic jams. I've heard many software problems, but this was a bit strange, actually more than a bit. Turns out a large part of the city population, as many capitals, works for the government. They start working at 8, if I remember. But employees used to get to work sometime after 8 and possibly before 9. So they introduced badges you have to scan when entering. Powered by the Delphi application. And because they all get to work at the same time, rather than a bit randomly, there is a lot of traffic. Caused by the program written in Pascal.
Photos by author
One relevant activity I've been very fond of, is the training events I did with Cary Jensen and his wife Loy for 3 years, Delphi Developer Days. That was special. 2 days packed with information. Repeated 4 or 5 times in Europe and in the US. We did it for 3 years. It was great, very interactive with the audience, and we also hosted visiting friends and local communities.
Images by author
Some of the best events were the early Borland conferences. I think my hit was giving my "Fun Side of Delphi '' session in front of an audience of over 5000 developers. That's a session worth viewing, you might find replays online -- but it's really fun in person. The goal is to do the most useless and insane tasks in the most complex and difficult way. It started with a component called TNothing. Because it does nothing. It went over a "measles" app infecting the computer or one turning the screen upside down. Or turning the Delphi menus to a much nicer alphabetic order. You should see it, it can be quite handy. Well, maybe. The other idea was exhausting Windows resources and crashing the system on purpose (it's easy actually). In one of the editions, the challenge was: can you create 2000 Windows in Windows 2000? Can you guess the answer? It was the time of the millennium bug, that's also something I made some fun of -- for the younger people in the audience, the millennium bug wasn't that fun for software developers, who had some put a lot effort to make their programs understand that after December 31st 1999 there was January 1st 2000 and not 1900! Because, you know, most software was using only two digits for the year.
For images see: http://lighttouchdesigns.com/project/borland-2/
Getting back to the Borland conference, those events were great. Thousands of people were attending. They were also a lot of fun, with nights at amusement parks and late nights with gaming labs. Today you can feel that atmosphere only in one place of the Delphi world, the conference in Brazil! But there are a lot of active communities organizing 100+ people events in Germany and in Italy, but also in Japan and Australia, and many other countries around the world.
Delphi clearly passed its hay days, but the product is still alive and generating a good business, justifying a solid R&D investment. And the Delphi community is still at work building software of any kind and at any latitude
For a company presentation, I created a list of industries Delphi and therefore Pascal are actively used in. These are not theoretical cases. I could name a company (but we often don't have permission to name names) in each of these.
- Oil and Gas
- Aerospace
- Large Data Processing
- Gis Applications
- Accounting
- Kiosk Applications
- Communication Software
- Measurements
- Automotive
- Flights Management
- Remote Computer Access
- Architecture
- Healthcare
- Business Analytics
- Systems Administration
- Music Editors
- Video Games
- Database Front Ends
- Agricultural Management
- IoT Management
- E-Invoices
- Trains and Railways
- Mobile Apps Of All Types
- Point of Sales
- Government
- Engineering Projects
- Production Systems Monitoring
- Animated Movies
- Television
- Complete ERP Systems
- Real-Time Finances
- Banking Systems
- Tax Returns
- Manufacturing
- Warehouse Automation
- Developer Tools
- Advertising
- Circuit Boards Design
- Shipping & Logistics
- Trucks Tracking
Some of their use cases are fantastic. Pascal compiled code is helping lighting the Niagara falls, moving container cranes in automated harbors, showing live 3D player data in sports on TVs, making tax returns and sending e-invoices to governments, designing CPUs and, you know, building Delphi itself! The community is great and third party vendors and open source communities alike are doing a great job helping the ecosystem. Some of them are attending this event.
What was the most successful application built with Object Pascal? In terms of business and industry disruption, I'd name Skype. Microsoft spent billions for it. 8.5 billion dollars. They rewrote it, after many years and attempts. It's not working much better and it lost all business steam.
Photo by author
Getting back to myself, slightly over 10 years ago I got a call from Micheal Swindell, offering me a job. And what a job. In previous years I had done some work for Embarcadero, both in terms of training new developers on Delphi (at some of their new locations) and in terms of actual development -- I wrote one of the few components the company never released, because it was tied to a Windows API Microsoft changed at the last minute. Technically, it ships with the product. But it was never enabled. At the time I was also a reseller of licenses for Embarcadero tools (and some third party vendors), so I had some ideas of the business side and of the company operations.
I got the offer to become a Delphi Product Manager and thought about it for a second. It was going to be a big change. I had been mostly independent in my previous career. And it was a complex time, family wise. But I didn't take much to realize this is something I wanted to do. So I made an offer. They agreed. In a few weeks I was in Scotts Valley signing a contract. Later I commuted often to California, four or five times a year; nowadays these trips are rare, the company is fully distributed and online.
Getting to be a Product Manager was a big change. Being the PM for a tool for developers requires being a developer, but the work is not to write software. The work of a PM is across all company functions. It helps sales and marketing push the product, but at the same time evaluating their input, and customers input ultimately. It determines new feature plans, but discusses with architects who know what can be done and how. Also following the development plans, discussing everything from the same of a new property to an algorithm and new component. Helping code reviews, testing internal and beta builds, writing long and detailed beta docs, and than helping the doc team turn those into official product documentation, working on a launch deck for presentations
Pictures of David I in Google Image search
Over these years at Embarcadero and Idera I've had the opportunity to work with some great individuals and developers. Let me mention David Intersimone, or David I, who has done an incredible job over many years promoting Delphi and Pascal. Or all of the great developers I had the pleasure working with in our R&D and the many I'm still working with. And the other PMs, Dev Rel people, and evangelists. But also people in sales and in other roles. Many have been working alongside myself for these 10 years. It's a nice internal community, I consider many as friends and I'm keeping in touch with some of the people who moved on to different jobs.
But of course, I've also enjoyed and appreciated the larger Object Pascal and Delphi community and ecosystem. Differently from the past, when I was just a community member, even if a well known one, by being one of the faces of the company I was the target of criticisms of what the company did wrong and didn't do. That's natural. At times, it's a bit frustrating. But most of the people do understand the role you are into and are supportive, appreciating what can be done to keep the product on the right track, a small bit at a time.
So where is Delphi and where are its multiple Object Pascal compilers these days? Delphi remains strong on Windows. I've been in touch with many people at Microsoft, the Windows team appreciates what we are doing to support their evolving platform. I've worked a lot in this space. From the WebView 2 control integration (the Chromium Edge browser engine) to MSIX support, to name a couple of areas I've focused on.
Images by author
Windows remains a core target. But Object Pascal has made some inroads in mobile. There are a few successful apps out there. Actually I wrote one that exceeded a quarter million downloads on the Google Play Store. Too bad I had to retire it -- that's really a nice story. I wrote it for fun with my son and published it only so he could have his friends install it. It was a strange, little app. It was a "wait game": you could do something every 30 minutes, more or less. So I put it up for my son, and it went viral with thousands of downloads, and up and up. We added ads, and made some nice money. It was tied to Lego. The company didn't like that, which makes sense. So I had to drop it.
Getting back to the PM work, I've been the longest serving Delphi Product Manager, with over 10 years of work in the role, although I'm working with a team and I also have some responsibility for other company products. What did I achieve in this role? It's hard to make a balance. The language probably didn't evolve as fast as I was hoping, but our customers value stability and performance alot, and an apparent minor feature can make a bigger difference than embracing a new language paradigm. Also compatibility is a feature and a core tenet of the product, even if it's also a hindrance slowing down new development.
Image by author
There are a lot of nice features we added to the language in these last 10 years. I have a session tomorrow covering them, so I won't spend much time here. My top one? Likely inline variables. They look like a small syntax change, but the effect is very significant. It's introducing block scope and lifetime. It's introducing type inference. It was a small change, but a huge one at the same time.
There are also features we removed. This is generally a more difficult decision: acknowledging a mistake and making steps to remedy it. Reversing a previous decision. It's hard for the pride of the individuals involved. It's hard for a company as well. But it's often the best long term decision for the health of a programming language and its ecosystem.
At times what you remove or what you decide not to do, despite some strong customer or internal push, is as important as the new features you add. I remember the pressure to support Windows UWP and Windows phones. We didn't and now they are not relevant. But at times, waiting and not adding the right features can make you less relevant in the future. It's a hard balance. Delphi never got a good Web development story, this has been a big blowback.
Image by author
And in these 10 years at Embarcadero I've been able to keep writing some books, the Object Pascal Handbook got new editions, I've been able to keep traveling to meet Pascal developers, to keep writing code (also to automate some of my tasks), to design and help defining the architecture of new features, to write demos and internal documentation;
Again, where is Object Pascal today? Has it got any value in the rapidly changing landscape of today's world of AI and immersive reality, metaverse and crypto? There isn't an easy detailed answer to this question, but there is a short answer. That answer is "yes".
I have another way of putting it, we shouldn't give up on curly brace languages, which is a definition of all the many programming languages derived by C. They promote short notation over readability. How come a double ampersand is better than typing and. It's one extra char, but easier to find on your keyboard and so much easier to read.
The Pascal community is not alone in asking and recommending readability as a feature. Python is the other big player in this space. It's no surprise that Pascal developers like Python, what we as Embarcadero are hoping and working on is enticing Python developers to try Pascal and Delphi.
Image by Embarcadero Technologies
Python and Object Pascal have a lot in common. They both started as great language for learning, but eventually found a role in the industry. Most universities have given up on teaching good programming, to teach languages that can give you a job. I find it a bad idea. Once you know about programming, you can switch languages. But if you only know a language, then you might get stuck on it. Take this practical example: My first class on programming was based on Pascal. No objects, as they did not exist. Last year my son's first class on programming at a university was a mix of C -- to learn the core elements of syntax -- C++ to get objects and how they are managed in memory -- and Java which has a simpler and more high level of how objects and classes work. Take any modern Object Pascal compiler: It would have served all 3 purposes: the foundations of programming and OOP done right, without the complexity of C++. Including generics, exceptions handling, and other core tenets of modern programming
Will it be possible to reverse this trend in universities? Not easy at all, but with more developers starting with Python, Object Pascal is a good next.
So, again, what's the strength of the Object Pascal language and its world? I can probably come up with a long list. I can also question some of today's hysteria in finding complex solutions for problems that could be avoided, and later creating another solution to handle the complexity created by solving the first problem.
Take deployment. I'm going a bit extreme here, but to better explain myself. I know reality is a bit more complicated. We have customers build very large applications, with up to 20 millions lines of code, into a single executable file. One single file. You know that an average modern application has thousands of files to deploy and requires a complex orchestration tool to deploy the right files in the proper version. And get the proper file to deploy along with your code from a package repository. Hoping the developer hasn't deleted the library in the meantime, you never know.
Getting back to Object Pascal virtues, we know them: fast compilation, native compiled code (which is generally faster and more secure), no or very little runtime and deployment dependencies. Even Visual C++ requires a runtime to deploy. Of course, you need to have the right version, so you end up with 10 MSVC runtime DLLs on any Windows computer.
Did I mention fast applications and low-memory footprint, also due to the lack of garbage collection? There is another side to it. Pascal is eco-friendly. There is only a fairly old study that gets reference often these days, listing Pascal with C as one of the most ecological languages.
This is the last point I want to touch before ending this speech. Today, a significant amount of energy is used to power data centers and cloud computers. Not much field, but I saw estimates that 3% of global electricity is used by cloud systems. And it's growing. Like in the late 1990s, countries with less powerful computers (for example, and for different reasons, Brazil and Russia) preferred compiled Pascal over Basic interpreters. The same makes sense today. By using more memory and CPU efficient programs, we could cut energy consumption. And I'm sure you don't want to use C or C++ to write server side applications. You might prefer using Python. But if you use Object Pascal you can use a nice language, and an efficient one at the same time.
Equally important, we should aim at having better battery life in our cellphones, maybe using less Java would be an idea. The Object Pascal ecosystem is certainly not the only one helping, but more awareness would be important.
Similarly, more awareness of the relevance of learning how to program using a good, solid, readable language that promotes a good coding style is invaluable. I know I mentioned this already a few times, but we are at a university, so the topic is relevant. There is no one size fits all, and there aren't only curly brace languages. Let's keep the playing field large and make sure developers can pick the right tool for the job, with no prejudice. There is a reason Delphi and Pascal applications are still powering so many businesses, as discussed.
Also, we have a great and healthy ecosystem. Take Spring4D. Take Skia4Delphi. Take the gaming engines and the threading libraries. Take the REST server, microservice architectures. For the first time, as a company we are contributing. We released as open source Bold for Delphi, and recently Octoid a header generation tool. More is coming, it's important also for some old technologies to keep them around for those interested. We created an entire Python ecosystem, making it free to use a subset of VCL and FMX to Python developers and offering free Python components to Delphi developers, so that they can use popular Python libraries directly in Object Pascal. Including AI libraries. And there are crypto libraries available for the Ethereum blockchain.
There is a lot moving and happening. Object Pascal is not dead and the developers are not standing still. The world is moving fast, we are there.
Let me finish with a #34e from one of my recent books. I know, it's not great #34ing your own words, but I felt this was worth it. It's a slide I have in some of my sessions on the language, and keep repeating:
"Power and simplicity, expressiveness and readability, great for learning and for professional development alike: these are some of the traits of today's Object Pascal."
"A tool for all trades, with compilers and development tools embracing the mobile era. A language ready for the future, but with solid roots in the past."
That's all I wanted to tell you about. Again, thanks for the honor of receiving this prize. I hope this history of Pascal, Delphi and my life, helped you learn something new.