Dyskusja:Object Pascal
Object Pascal v17 (dostarczony z Delphi 2005 Architect) umożliwia przeciążanie operatorów. Można by usunąć wpis porównawczy z C++, że OP nie potrafi przeciazac operatorow. Dodatkowo co autor mial na mysli "wykorzystanie specyficznych funkcji procesora"? wystarczy tak samo jak w C/C++ uzyc wstawki assemblera i mozna wykorzystac wszystkie jego wlasciwosci. Jedyna wada moim zdaniem to brak mozliwosci tworzenia kodu stand-alone.
Podpis: Zefir.
"Większość firm zaczyna wycofywać się..." - które firmy poza Embarcadero oferują kompilator Object Pascala? "Obecnie nazwa „Object Pascal” nie istnieje nawet w oficjalnym spisie TIOBE" - na chwilę obecną (06.2016) istnieje, używana jest tam nazwa "Delphi/Object Pascal". Paweł
- Kompilator Object Pascala oferuje organizacja GNU (na licencji GPL). Możliwość skompilowania czystego kodu Object Pascal da Ci ich produkt o nazwie FPC (Free Pascal Compiler - w opcjach wybierasz dialekt (dostępny jest nawet dialekt delphi), zaś możliwość dodatkową pracy z formatkami da Ci ich produkt o nazwie Lazarus - środowisko graficzne, nie tylko dla Windows. Uważaj jednak na programy wielowątkowe używające Windows API - programy lubią się wysypywać z nieznanych przyczyn. Możliwość kompilowania pod windows x86 - nawet wielowątkowe napisane z użyciem WinAPI działają stabilnie - ma projekt Virtual Pascal (vp21), obecnie porzucony. 46.112.52.88 (dyskusja) 21:49, 31 gru 2016 (CET)
Obiektowość
[edytuj kod]Gdzie została pokazana w artykule główna przewaga Object Pascala nad Pascalem i główna idea jego powstania? Skąd możemy wziąć kod na licencji C.C.0 lub public domain lub kompatybilnej z licencją wikipedii, który przedstawia sposób definiowania funkcji wewnątrz definicji klasy w sekcji interface i jej implementacji w sekcji implementation?
Mogę wstawić i zrzec się jakichkolwiek praw do tego kodu, ale chcę uniknąć twórczości własnej. Przydałoby się źródło, które zezwala na kopiowanie i rozpowszechnianie przykładów.
Porównanie z C++
[edytuj kod]- mechanizm modułów wraz z kontrolą widoczności nazw i sekcjami inicjalizacyjnymi/finalizacyjnymi, -- Nie do końca, ponieważ C++ ma możliwość hermetyzacji i w konstruktorze można inicjalizować pola.
- tablice dynamiczne, -- std::vector jest tablicą dynamiczną.
- wbudowany typ zmiennych plikowych – także uproszczone tworzenie plików składających się tylko z jednego typu danych, -- Może i nie ma wbudowanego, ale jest w bibliotece standardowej (std::fstream, std::ofstream, std::ifstream).
- wirtualne konstruktory, -- Można napisać virtual Klasa( ) { ... };.
- oddzielenie części deklaracji od instrukcji zwiększa czytelność kodu i zmusza do porządku, -- Nie wiem, czy dobrze zrozumiałem, ale można w C++ w ciele klasy zadeklarować, a poza klasą (z użyciem operatora ::) zdefiniować funkcję.
- pętla for umożliwia enumerację po każdym elemencie zbioru w postaci: for zmienna in zbiór do), -- W C++ for(auto element : tablica) { ... }.
- funkcje nie zwracające wartości nazwane są procedurami. -- a) można nazywać to jak się chce, każdy się domyśli; b) using procedure = void; lub typedef void procedure; lub #define procedure void
- obiekty posiadają właściwości (properties) – także tablicowe i domyślne, zwiększa to czytelność kodu, -- Nie wiem, czy dobrze zrozumiałem, ale jak w jakiejś klasie napisze się np. int& x= pole_klasy;, to x może być uznane za właściwość (bardziej setter niż getter, bo przy getterze jakieś błędy, przynajmniej u mnie występują).
- istnienie metaklas – ich obiekty zawierają referencje do klas, -- Można zrobić coś takiego class Klasa { InnaKlasa obiekt_innej_klasy; };.
- mechanizm przedefiniowania operatorów (jedynie dla rekordów). -- W C++ tak samo się je definiuje jak w Pascalu, np.: ostd::vector, std::arrraperator +( ... ) { ... }.
- wbudowane zbiory i liczne operacje na nich, co znacznie przyspiesza i upraszcza np. porównania, -- Tak samo jak ze strumieniami plików. Może i nie wbudowane, ale można tak powiedzieć, bo w STL-u. (std::vector, std::array, std::map, std::set, std::queue, std::stack...)