Friday, February 25, 2011


Greetings, and welcome to Bleeding-edge Delphi. Over the next several months, I will be writing about a number of ideas and techniques related to creating software using Embarcadero Delphi XE. What will I be writing about? Well, it’s probably easier to explain what I won’t be covering: I’m not going to discuss component libraries, or the IDE, or database reports, or unit testing, or agile development, or any other more or less conventional Delphi-related topic. Instead, a few of the topics that I will be covering are (in no particular order):
  • Pure functional programming - No mutants allowed!
  • Lazy evaluation and memoization - Don’t do today what you can put off until tomorrow, but if you ever do do it, save a copy.
  • Type trickery - Just how meta can you get?
  • Concurrent programming - When threads collide…
  • Parallel programming - When threads collude…
  • Domain-specific languages - Don’t like Pascal? Create your own damn language.
In other words, I’m going to be writing about stuff that you probably aren’t using yet, but you might find interesting, and possibly even useful. And, perhaps more compelling, it’s stuff that I think is going to be more and more important to programming in general as time goes on.

Why these topics?

I’ve always been driven by the idea that, no matter what you’re doing, there’s always a better way. In programming, for me at least, “better” means a number of things:
  • better = more correct - How do I write software that is more likely to work right the first time?
  • better = simpler - How do I write software that’s easy to understand when I come back to it a year later?
  • better = more efficient (to create) - How do I get a software idea from my brain and into the computer more quickly (without compromising correctness and simplicity)?
  • better = more efficient (in operation) - How do I write software that takes full advantage of advanced hardware features, like multi-core CPUs?
Each of the topics listed above addresses one or more of these definitions of “better.”

Why Delphi XE?

I’ve been a Delphi programmer since before it was Delphi (I started with Turbo Pascal 3.0 way back in 1986). The Delphi environment has always been an excellent platform for application development. But Delphi’s Object Pascal has been showing its age for a while now, lacking many of the sophisticated concepts that have driven the evolution of more “modern” languages. However, the introduction of generics (parameterized types) and anonymous functions in Delphi 2009 was a big step in the right direction. Unfortunately, the implementations of those ideas, in both Delphi 2009 and Delphi 2010, were, frankly, just a little too buggy; the compiler basically fell apart if you tried to be at all creative. In Delphi XE, finally, these features are mature enough that “pushing the envelope” is no longer synonymous with “exploding in a flaming fireball.”

There’s still a ways to go—inflexibility of the Object Pascal syntax, limits on static typing capabilities, etc. are all hindrances—but I hope that at least one of the consequences of my musings here will be to stimulate thinking about how to better incorporate advanced programming concepts into the language.


  1. Betway Casino App | JTM Hub
    Download the Betway Casino app for iOS 보령 출장안마 & Android and enjoy the thrill of 광양 출장안마 Betway in 광명 출장마사지 New Jersey. 청주 출장마사지 Check out our detailed review 포항 출장샵 before you play.

  2. Casino Slot Machines - Airjordan2 Retro
    The game has some of the show to buy air jordan 18 retro yellow best sound how can i buy air jordan 18 retro yellow of all time with air jordan 18 retro varsity red super an intense sense 바셀 tv of scale that makes it one of the best video where can you buy air jordan 18 retro men game systems. All the players

  3. Your odds of hitting a quantity are now are|are actually} not 35/1 but 37/1, a significant drawback. The desk more_bets is a version of the bets desk augmented by every pocket's winnings on the 0/00 split. So out of 5,000 simulations, we'd expect to see roughly $\frac \times 5000$, or 2,368, red spins. Remote control by the 1xbet central server both lowered this workforce while speeding up turnaround time from {several|a quantity of} days to instantaneous. This elevated effectivity additionally allows casinos to cut back} threat and more precisely meet their daily efficiency metrics, both big money savers. For a slot machine, there might be 100 possible successful outcomes.