piątek, 3 lipca 2009

Delphi - nowe wrażenia - potęga języka na przestrzeni lat

Dobra na Delphi nie mogę się gniewać bo Delphi jest jak kobieta. Co gorsze trochę kosztuje - podobnie jak płeć piękna.

Założę się, że większość z was nie miała pojęcia o istnieniu wszystkich elementów Object Pascala. Poniżej wymieniłem najistotniejsze zmiany wprowadzone w samym tylko języku od czasów Delphi 6 na przestrzeni około 7 lat:

Delphi 7 "Aurora"
-Rozbudowane możliwości typu variant i odseparowania na osobny unit elementów związanych z typem variantowym do "variants.pas"
-Poszerzone informacje czasu wykonania dla metod klas w zastępstwie sekcji klasy "automated"

Delphi 2005 "Diamondback"
-Pętla "for in do" na wzór foreach z php
-Słowa kluczowe dla bezpieczeństwa kodu czyli oznaczenia experimental
-Łatwe tworzenie tablic dynamicznych
-Procedury / funkcje / metody inline

Delphi 2006 i Delphi 2007 (D2007 naprawia głównie błędy z D2006) "DeXter" i "Spacely"
-Przeciążenia operatorów
-Opisy dla depracted
-Rewelacyjny menager pamięci FastMM, za który autor dostaje do końca życia za darmo nowe wersje Delphi!
-Statyczne metody
-Nieinstancyjne "class property"
-Zmienne statyczne
-Typy wewnątrz definicji klas
-Tworzenie sekcji var/type na przemian z deklarowaniem procedur wewnątrz definicji klas
-Rekordy mogą przyjmować część cech klas (np. metody w rekordach, konstruktory rekordów)
-Pomocnicze regiony w kodzie jak w C#
-Klasy / rekordy pomocnicze
-Słowa kluczowe precyzujące kontekst użycia klas (abstract i sealed)
-Sekcje strict
-Dyrektywa final do metod wirtualnych

Delphi 2009 "Tiburón"
-Matematyka wskaźników na wzór C
-Metody anonimowe
-Używanie klas jako procedur / funkcji związane z metodami anonimowymi
-Typy generyczne i cała infrastruktura języka z tym związana
-Exit działające opcjonalnie jak return w C
-Unicode i infrastruktura języka związana z kodowaniem regionalnym dla typów AnsiString i wsparcie ze strony RTL

Delphi Weaver (w fazie beta)
-Łatwiejsze tworzenie singletonów (statyczne konstruktory)
-Dyrektywa delayed
-Atrybuty
-Rozbudowa RTTI i RTL od RTTI, a z tym wiele ciekawych nowości (np. wywoływanie metod w czasie działania aplikacji - na potrzeby skryptów. Co prawda jest to możliwe znacznie wcześniej jednak technika ta nie jest tak oczywista i jest nieudokumentowana!)

I do wszystkich wersji ;):
-Spora rozbudowa RTL związana z nową składnią


Niech mnie ktoś poprawi jeśli coś przeoczyłem bo pisałem to z głowy. Zabawne jest to jak ludzie krytykują Delphi, nie mając nawet pojęcia o ułamku możliwości i ułatwień jakie w ze sobą niesie. (Delphi jest dla mnie jak pyszne ciasteczko z kawą xD!)

Jest to na chwilę obecną jedyny język tak twardo stojący natywnie a zarazem udostępniający ułatwienia "platformy" .NET, przy czym to Delphi jest prekursorem i wzorcem dla .NET, a nie odwrotnie :)!

PS. Najbardziej bolesne jest to, że jedne z ciekawszych elementów składni (w tym niektóre z tych przedstawione w powyższej liście czy dyrektyw służących optymalizacji są nieudokumentowane! Szczerze to tylko niewielka grupa "wtajemniczonych" programistów Delphi ma szersze pojęcie i niestety aby dowiedzieć się pewnych rzeczy trzeba mieć po prostu szczęście...

Podziękowania dla Force za przypomnienie o sekcjach strict i sugestii o podziale na wersje