czwartek, 6 stycznia 2011

Cisza w eterze

Prawie pół roku bez postów :). Pracuję od wielu miesięcy nad bardzo dużym projektem. Całość ma już ponad 150k LOC. Niebawem będę mógł ujawnić nieco więcej szczegółów o prowadzonych od czerwca pracach. Sądzę, że to będzie wielkie zaskoczenie dla wszystkich, zwłaszcza dla programistów Delphi :).

Przez ten cały czas zdążyło wyjść "RAD Studio XE" a w nim masa naprawionych błędów z wersji poprzednich (liczone w tysiącach). Jednak szału nie ma. Po pierwsze, żadnej większej nowości w składni. Np. {$STRONGLINKTYPES ON} obecne już w Delphi 2010 tylko nieudokumentowane (strasznie nie lubię tej dyrektywy ponieważ ma działanie na wszystkie deklarowane typy w projekcie i nie można "silnie zlinkować" wybranych klas, wielka szkoda...).

Pomimo, że mam licencję na XE, nie używam go. Dodanie jednej funkcjonalności do RTTI to stanowczo za mało. TVirtualMethodInterceptor - klasa umożliwiająca przechwycenie/zastąpienie dowolnej metody wirtualnej w instancji klasy to trochę za mało. Dodano też moduł do wyrażeń regularnych i klika mniejszych usprawnień.

Podstawową przeszkodą w używaniu DelphiXE jest debugowanie IDE w IDE... Nowa wersja przysporzyła mi kilku kłopotów np. w OTA zmieniając zachowania niektórych elementów. Nie wspomnę już o beznadziejnej dołączonej do Delphi wersji (DEMO! WTF?) AQTime 7 która wywala się na moich projektach -,-...

Jako ciekawostkę przytoczę post mówiący o historii kompilatora Delphi, napisany przez Allena Bauera (Embarcadero Chief Scientist):

It is mostly C, with very little C++. The Delphi32 bit compiler was a port from a (at the time) Borland Pascal compatible Atari ST compiler that targeted the 68000 CPU. It was called "Pure Pascal." Borland purchased the IP and contracted with the original author to create an x86 backend. While much of the original architecture remains, it is so significantly different that it hardly looks like the original code.

I personally worked with the original author for many months to get the Borland Pascal RTL and Turbo Vision building for 32bit. That work was put aside and things shifted to the new fledgling Delphi project. Even while the Delphi project was in full swing and initially targeted Windows 16bit, work continued on the 32bit compiler. That work had also shifted to add the Delphi specific language features.

The original Turbo Pascal compiler targeted the Z80 CPU and was written in Assembler. At the behest of Philippe Kahn, Anders Hejlsberg ported the assembler to 8086 and targeted the same. Because the 8086 is an evolution of the 8080A (as is the Z80), it shared many of the same opcodes as the 8080A/Z80/8085, so the port was fairly mechanical. This is also why that up through Turbo Pascal 3.0 the compiler would only
create .COM file, which was limited to 64K.

The Turbo Pascal/Borland Pascal/Delphi compilers have never been written in Pascal. Not because it isn't possible, but was simply not practical or economical. Academically, yes, many times it is the goal of the compiler author to get the compiler to the point where it can compile itself. This is usually the first "real-world" use of a new compiler and serves as a validation suite. However, the world of
commercial software has more practical and economic factors that weigh heavily in the development process.


Na deser:

mały obraz z Delphi64 bit (ma wyjść w tym roku) i CHASM (nie ma już BASM):