WTF! Here we are in 2007 and in a major way, I'm still writing code in the same manner as I did with the Basic apps I hacked for a ZX Spectrum (aka Timex 2000) back in 1985. That is, I'm still coding in a glorified flat file text editor. Let's face it; text file coding ceased to be relevant when we stopped using line numbers (as in GOTO 2100. Ye Gads!)
Fortunately I am able to tell you on a very hush-hush, now-I-have-to-kill-you basis, that CodeGear is working towards a radical new IDE philosophy that presents your code in a more powerful, database like manner. Using the techniques I mastered from watching "Whiz Kids" re-runs I was able to hack into the CodeGear servers and download some preliminary designs and notations regarding their ultra-secret Delphi 2010 for Win64 release (code named "Inoshiri"). It took over 60 hours on my 2400 baud modem so this better earn me a Cap'n Crunch whistle.
Apparently CodeGear have been watching real developers developing. With a recent release they embedded a camera in the documentation so they could monitor developer activity in a clandestine fashion. It was a risky move given that simply opening the documentation would have exposed the espionage, but despite shipping over 10,000 units not a single camera was discovered.
What they found was startling; of the time spent working within the Delphi IDE, typically only 50% is devoted to coding and the rest is wasted searching, scrolling and mindlessly navigating through units. With this fact in mind, CodeGear have totally changed their IDE mindset, moving to a code editor built onto an underlying database that manages each procedure as a distinct entity, and makes searching and filtering instantaneous and much more powerful.
Also, all aspects of a method or property are managed from a single location. You never have to go two places for to create a procedure (e.g. interface and implementation) or three places to create a property (e.g. interface private variable declaration and implementation).
Delphi 2010 is focused primarily on enhancing developer productivity!
Unfortunately a footnote points out that even if they manage to increase the IDE productivity figure to the desired 90%, ultimately it won't greatly affect overall developer productivity, as they found that only around 10% of a typical workday was actually spent developing, with the remaining time split between browsing programming blogs, configurating internet radio stations and chatting with co-workers.
The details of the new release are still a bit sketchy. What follows are notes and screenshots that I extracted from an internal CodeGear presentation.
Central to the IDE is the new Index which incorporates auto-expanding panels for:
- Project Index: Clicking a unit takes you to the Unit Index
- Unit Index: Shows you the interface of the unit at glance and allows you to drill down to individual classes and procedures
- Project Search Filter: Filters as you search by procedure, variable, description/comment, content, etc
This is the top level index for a unit:
These are the procedures of a unit:
(Note how all items can now have an associated comment/description that is displayed when hovering over an item)
All data is displayed in sortable grids that support in situ editing of items and display further detail in a bubble hint as you hover the cursor.
Displaying the variables of a unit:
(Note that changing the visibility of a variable is a quick two-click affair)
The best part is the filter/search, that instantly displays all relevant items as you type. Note how much control is available over what is searched:
When you click on a procedure to bring up the method editor all the search terms are highlighted.
Code editing is the most radical change in Delphi 2010. As mentioned, flat file editing is gone, each procedure is treated as a separate entity, i.e. you no longer edit units directly, only the procedures within units. You can open as many "Method Editor" windows as you require (single-clicks open the item in the current/main Method Editor, shift-clicks into a new Method Editor).
The new "Method Editor":
Note the navigation buttons that allow you to move to the previous/next procedure of the current unit or search.
Also, new variables are automatically added as you type them into the source (marked in bold). You can even set an initial value for them.
Creating and editing Properties is much simpler with all details available in the one window:
Important Note: Delphi 2010 will continue to save your code and form files to plain text PAS and DFM files, however it also was save a new CDB file which stores all full text searching and other database information. The CDB file is optional and can be recreated as required.
Also, any Luddites out there need not fear, flat file editing will still available as an option.
Other Touted Features
- Debugging within Virtual Machines: Delphi will integrate with popular VM software to allow you to debug under any version of Windows without leaving the IDE
- Voice Recognition: Delphi will be the first product to natively support programming using voice recognition. The limited vocabulary of programming languages have shown it to be an ideal candidate for voice recognition
- Integrated Spell Checking: Misspelt words in strings in the code and designer (e.g. TLabel.Caption) will be underlined. Common misspellings of identifiers will be automatically corrected. Also all string values in units and forms of a project can be spell checked with a single click
- Integrated Timing/Profiling: Without any coding required, profile reports will allow you to easily determine which procedures in your code are taking the longest
- Dual Screen Optimization: Delphi 2010 will be the first version which will be designed primarily for multiple screen and ultra-large screen systems
- Edit and Go: Change code while debugging and the effect will take place immediately without needing to recompile
- New Variable Directive; "Auto": Allows you to use objects in a procedure without needing to create or free them. For example declaring the local variable: MySL: TStringList; Auto; will automatically create a TStringList at the start of the procedure and free it when it goes out of scope. Similarly a ShowHourglass call at the start of a procedure will automatically display an hourglass that reverts to its former value when the procedure ends
- Automatic Template Creation: Delphi will recognize code snippets that you frequently type (ignoring any changed variables, classes, etc) and offer them as templates
- Intelligent Paste: Paste text onto the designer and it becomes a label or memo. Paste a graphic and it becomes a TImage. Paste a set of components into the code editor and the component names are output in a column. Paste a procedure declaration into source and it is reformatted as a procedural call
- Recent Items: Delphi will remember the names of any procedures, classes or variables that you have created or edited recently and allow you to insert them into your code with two clicks (A shortcut to pop up a dialog and a number to choose a recent item)
- Tip of the Day: A standard TOTD dialog will be included offering productivity enhancing hints, efficient coding advice and scone recipes
- Studio and Turbo: Delphi 2010 will come in two versions, a fully-featured "Studio" and a cheaper "Turbo" release. The Turbo version will include two components (TForm and TButton) and a single method (A MessageDlg function hardcoded with the string 'Hello World')
- Animated Character: A cute, animated feculent character nicknamed "Krappie" will popup to offer guidance whenever you perform a task in a manner that is inefficient, unimaginative or lacks je ne sais quoi
- Quality: In an effort to reduce the quality problems that have affected recent releases the entire CodeGear QC team will be fitted with electrified collars. Whenever an IDE crashes a [generally] non-fatal electrical shock will be routed to an appropriate team member.
That's as much as I have for you at the moment. Let me know if you have any questions, as I now have someone on the inside (A little leverage goes a long way, in other words, stay away from those Delphi groupies at the CodeGear conferences, or you might have more to worry about than injuries to sensitive areas from dental retainers). It is imperative that his identity is not leaked, so I'll only be referring to him as "Rick Stodges"