Czy jest jeszcze nadzieja dla tego języka ?

0

Czy Pascal może być teoretycznie tak szybki jak C/C++ ?
Czy jego architektura jest zrąbana sama w sobie czy to efekt tego, że nigdy nie przeszedł gruntownych zmian i dalej bazuje na przestarzałym sposobie generowania kodu ?
Właśnie sprawdziłem benchmark który operuje głównie na liczbach zmiennoprzecinkowych,
jakieś 2-3 razy wolniejszy niż C, kompilacja w Tokyo
Chodzi oczywiście o SciMark.

1
  1. Szybkość nie zależy nie tyle od samego języka co od programisty (czasami można totalnie zagmatwać kod) i od kompilatora jaki kod on utworzy ale tu już zacierają się te różnice poza tym to w dzisiejszych czasach najczęściej nie ma znaczenia w "zwykłych" aplikacjach chyba, że np. piszesz gry.
  2. Zrąbana bo? Język Delphi jest cały czas rozwijany a twierdzenie o zrąbanej jego architekturze to wynik JEGO NIEZNAJOMOŚCI (gdzieś tam w szkole słyszał o Pascalu pod DOS z lat 80 i myśli ,że to to samo)
  3. Nie wiem jak to napisałeś ale jak chcesz mieć coś totalnie zoptymalizowane to sobie napisz wstawkę w ASM. Poza tym porównaj prędkość do nowoczesnych języków typu Java czy C# i ich się czepiaj. Gdybyś nie wiedział to języki programowania maja swoje przeznaczenie.
1

Czy Pascal może być teoretycznie tak szybki jak C/C++ ?

Pascal jest językiem programowania, podobnie jak C czy C++ [1], więc sam w sobie nie ma "szybkości" - pod tym względem raczej porównuje się kompilatory (np. FPC vs GCC).

Czy jego architektura jest zrąbana sama w sobie czy to efekt tego, że nigdy nie przeszedł gruntownych zmian i dalej bazuje na przestarzałym sposobie generowania kodu ?

Pascal nie wymusza żadnego sposobu generowania kodu.

Właśnie sprawdziłem benchmark który operuje głównie na liczbach zmiennoprzecinkowych, jakieś 2-3 razy wolniejszy niż C, kompilacja w Tokyo

GCC potrafi robić masę turbo-magicznych optymalizacji), ale raczej aż takiej różnicy bym się nie spodziewał - prawdopodobnie źle przeprowadziłeś ten benchmark (np. miałeś inaczej skonfigurowane kompilatory [2] lub przeprowadziłeś mikro-benchmark na małym zbiorze danych).


[1] tak, to są dwa odrębne języki; nie ma czegoś takiego jak połączone C/C++, podobnie jak nie ma Java/JavaScript czy Rust/Go - to wszystko są odrębne języki, których nie należy zestawiać ze sobą, nawet jeśli w jakiejś części mają podobną nazwę, czas powstania czy cokolwiek innego.

[2] przykładowo pod względem optymalizacji

1

Nie wiem jak to napisałeś ale jak chcesz mieć coś totalnie zoptymalizowane to sobie napisz wstawkę w ASM.

W bibliotekach C/ C++ często takie wstawki są (tzn być może nie wprost wstawki asemblerowe, ale instrukcje intrinsics będące wprost odpowiednikami instrukcji procesora). Ich obecność może nie sprawia, że porównywanie wydajności jest miarodajne, ale mimo wszystko jeśli np języku X biblioteki są ręcznie wyżyłowane na maksa, a w języku Y biblioteki są napisane w stylu wysokopoziomowym to jednak w benchmarkach język X będzie wypadał na szybszy niż wynika to ze skuteczności kompilatora.

Poza tym porównaj prędkość do nowoczesnych języków typu Java czy C# i ich się czepiaj. Gdybyś nie wiedział to języki programowania maja swoje przeznaczenie.

W tym zestawie benchmarków Java częściej wygrywa niż przegrywa z Free Pascalem: https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/pascal.html :]

0
Patryk27 napisał(a):

[1] tak, to są dwa odrębne języki; nie ma czegoś takiego jak połączone C/C++

To są dwa odrębne języki, ale można je połączyć.
Kod C jest kompatybilny z kodem C++ w uproszczeniu tzn., że kompilator C++ w większości przypadków skompiluje kod w języku C.
Inaczej jest np. z C#, który też ma "C" w nazwie, ale kompilator C# nie skompiluje kodu C czy C++.
Takie małe wyjaśnienie.

0

http://delphihaters0.blogspot.com/2011/03/scimark2-and-delphi.html

Tak tak już słyszałem to milion razy że zależy coś od programisty, prawda jest taka że Delphi zawsze generował gówniany kod z epoki kamienia łupanego nie ma nawet co porównywać porządnych kompilatorów takich jak np. Visual C++.
Pomijam już absurdalne niezałatane błędy nawet bardzo oczywiste i poważne które czekają miesiącami albo latami na poprawki ( i każą sobie za nie płacić ciągle)
Wstawki asemblerowe -? Jasne kto ma czas pisać coś 386 lat zamiast 1 dzień....Po to jest język wysokiego poziomu żeby unikać ASM.

Wg mnie nadzieja dla tego języka jest jedna - zapomnieć o nim i przerzucić się na poważne narzędzia.

0

On pisze o operacjach na liczbach zmiennoprzecinkowych ale aby to sprawdzić trzeba by znać konkrety co napisał i zobaczyć ci wygenerował kompilator. Free Pascal to nie Delphi choć składnia w większości taka samo to jednak posiadają zupełnie inne kompilatory i ten benchmark tutaj nijak się nie odnosi do Delphi niestety akurat do Delphi nie mogę znaleźć nic w miarę aktualnego. Jedynie taki test C#, Delphi i C++ (na wersję na Linuxa w Delphi nie ma co patrzyć gdyż ten kompilator na tą platformę wtedy dopiero wszedł wiec na pewno nie jest optymalny):
https://codingforspeed.com/integer-performance-comparison-for-c-c-delphi/

0

Kazek to co pokazałeś znam dobrze nie mówimy o integerach...

Tutaj paczka z kilkoma do porównania:
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/scimark-delphi/Scimark-binary.7z

a tutaj kod Delphi, ten z archiwum w jakimś starszym dla Tokyou jest ciut lepiej ale dalej to nie ma startu do pozostałych...

https://github.com/pgoh/scimark-delphi

1
kAzek napisał(a):
  1. Zrąbana bo? Język Delphi jest cały czas rozwijany a twierdzenie o zrąbanej jego architekturze to wynik JEGO NIEZNAJOMOŚCI (gdzieś tam w szkole słyszał o Pascalu pod DOS z lat 80 i myśli ,że to to samo)

Turbo Pascal pod DOSem miał swoje braki (które mogły być naprawione gdyby Borland go nie zarzucił na rzecz Delphi, a które są naprawione we FreePascalu) ale żeby miał zrąbaną architekturę to bym nie powiedział.
Do tego w szkołach uczono ułamka możliwości Turbo Pascala.

0

Nikt jeszcze nie wspomniał, że Java umiera?

1
Pijak napisał(a):

Nikt jeszcze nie wspomniał, że Java umiera?

Java umiera, a jedyną nadzieją tego świata jest produkt polskiego przedsiębiorstwa zajmującego się przetwórstwem warzywno-owocowym w miejscowości Kotlin.

2
Qla napisał(a):

Czy Pascal może być teoretycznie tak szybki jak C/C++ ?

Pascal jest mniej więcej na tym samym poziomie abstrakcji co C++ i pozwala na pisanie kodu niskopoziomowego (podstawowe instrukcje, wskaźniki, wstawki asma itd.), jak również wysokopoziomowego, obiektowego. Jednak w odróżnieniu od C++, nie posiada on czegoś takiego jak UB – jest bezpieczny i przewidywalny.

Jeśli już porównać kody wynikowe generowane przez najpopularniejsze kompilatory, to wyniki w pewnych przypadkach będą podobne, a w pewnych będą się różnić (nawet skrajnie). Nic w tym dziwnego.

Czy jego architektura jest zrąbana sama w sobie […]

Architektura stoi na wysokim poziomie. Co prawda mam tutaj na myśli Free Pascala i FPC, ale biorąc pod uwagę abstrakcyjność i nieprecyzyjność zadanych pytań (wynikające z niedouczenia), mam pewną dowolność interpretacji.

[…] czy to efekt tego, że nigdy nie przeszedł gruntownych zmian i dalej bazuje na przestarzałym sposobie generowania kodu ?

Od kiedy to język służy do generowania kodu? A już pomijając ten mindfuck, które to te przestarzałe sposoby? Podaj jakieś konkretny, pośmiejmy się razem.

Qla napisał(a):

Tak tak już słyszałem to milion razy że zależy coś od programisty […]

Widać słyszałeś, ale nie słuchałeś. Jednym uchem wpadło, drugim wypadło – żadnych wniosków.

[…] prawda jest taka że Delphi zawsze generował gówniany kod z epoki kamienia łupanego nie ma nawet co porównywać porządnych kompilatorów takich jak np. Visual C++.

Prawda jest taka, że brakuje ci elementarnej wiedzy z dziedziny programowania, nie podajesz żadnych szczegółów ani merytorycznych argumentów, a jedyne co potrafisz to pisać, że coś jest „gówniane”. Odpowiadanie w tym wątku to zwyczajna strata czasu, bo to co najwyżej karmienie trolla.


A tak w ogóle to @Qla, masz problem z zalogowaniem się? Zapomniałeś że masz jeszcze dwa zarejestrowane konta, czy nie pamiętasz jakie są do nich hasła? W sumie to już nieistotne – oba zbanowałem.

1
kAzek napisał(a):
  1. Szybkość nie zależy nie tyle od samego języka co od programisty (czasami można totalnie zagmatwać kod) i od kompilatora jaki kod on utworzy ale tu już zacierają się te różnice poza tym to w dzisiejszych czasach najczęściej nie ma znaczenia w "zwykłych" aplikacjach chyba, że np. piszesz gry.

Nie zawsze i nie wszędzie.
Prawda jest taka, że Delphi ma archaiczny kompilator, który nie zauważył dwóch dekad postępu w rozwoju CPU.
Prosty przykład? Życzyłbym sobie potężnego wsparcia dla semi-automatycznego wsparcia dla programowania współbieżnego.
O takich cudach jak CUDA, to w ogóle szkoda pisać...

  1. Zrąbana bo? Język Delphi jest cały czas rozwijany a twierdzenie o zrąbanej jego architekturze to wynik JEGO NIEZNAJOMOŚCI (gdzieś tam w szkole słyszał o Pascalu pod DOS z lat 80 i myśli ,że to to samo)

Też nie do końca się zgadzam, ponieważ właśnie ta jego architektura miejscami jest... No może nie zrąbana, ale nie rozwija się od dwóch dekad.
Przykład?
Proszę - masowe używanie zdarzeń bez wsparcia delegacji dla tych zdarzeń.

  1. Nie wiem jak to napisałeś ale jak chcesz mieć coś totalnie zoptymalizowane to sobie napisz wstawkę w ASM. Poza tym porównaj prędkość do nowoczesnych języków typu Java czy C# i ich się czepiaj. Gdybyś nie wiedział to języki programowania maja swoje przeznaczenie.

No to argument po bandzie fest, naprawdę.
Skoro piszę w Delphi, to dlaczego mam pisać w ASM?

1
wloochacz napisał(a):

Prawda jest taka, że Delphi ma archaiczny kompilator, który nie zauważył dwóch dekad postępu w rozwoju CPU.

Tylko jakim cudem ten kompilator potrafi wykorzystywać instrukcje SSE 4.2?

wloochacz napisał(a):

Prosty przykład? Życzyłbym sobie potężnego wsparcia dla semi-automatycznego wsparcia dla programowania współbieżnego.
O takich cudach jak CUDA, to w ogóle szkoda pisać...

CUDA? W Delphi pod VCL a może frytki do tego? Chyba, że w FMX to owszem
http://edn.embarcadero.com/article/41688
Q: Does FireMonkey allow for use of the GPU for high performance computing (e.g. CUDA or OpenCL)?
A: It can, yes.

wloochacz napisał(a):
  1. Zrąbana bo? Język Delphi jest cały czas rozwijany a twierdzenie o zrąbanej jego architekturze to wynik JEGO NIEZNAJOMOŚCI (gdzieś tam w szkole słyszał o Pascalu pod DOS z lat 80 i myśli ,że to to samo)

Też nie do końca się zgadzam, ponieważ właśnie ta jego architektura miejscami jest... No może nie zrąbana, ale nie rozwija się od dwóch dekad.
Przykład?
Proszę - masowe używanie zdarzeń bez wsparcia delegacji dla tych zdarzeń.

Ale to przecież nie narzuca takiego sposobu pisania.

[Embarcadero napisał(a)]http://edn.embarcadero.com/article/41688):
  1. Nie wiem jak to napisałeś ale jak chcesz mieć coś totalnie zoptymalizowane to sobie napisz wstawkę w ASM. Poza tym porównaj prędkość do nowoczesnych języków typu Java czy C# i ich się czepiaj. Gdybyś nie wiedział to języki programowania maja swoje przeznaczenie.

No to argument po bandzie fest, naprawdę.
Skoro piszę w Delphi, to dlaczego mam pisać w ASM?

A po co wprowadzono obsługę wstawek ASM?

1
kAzek napisał(a):
wloochacz napisał(a):

Prawda jest taka, że Delphi ma archaiczny kompilator, który nie zauważył dwóch dekad postępu w rozwoju CPU.

Tylko jakim cudem ten kompilator potrafi wykorzystywać instrukcje SSE 4.2?

Nie wiem o czym piszesz, ale jak wiesz, to bardzo proszę - podaj źródło.
A jeśli piszesz o małketingowym bełkocie w stylu:

High-performance 32-bit optimizing Delphi® native code compiler 22.0 (dcc32),
including High performance x86 Assembler - 32-bit inline assembler supporting the Intel® x86
instruction set (including Intel Pentium® Pro, Pentium III, Pentium 4, Intel MMX™, SIMD,
Streaming SIMD Extensions, SSE, SSE2, SSE3, SSE 4.1, SSE 4.2, AMD SSE4A and AMD® 3DNow!®

To dla mnie jest jasne, że to nie kompilator potrafi generować kod z instrukcjami SSE, tylko obsługiwany asembler przez kompilator potrafi je wykorzystać.
Pod warunkiem, że napiszesz to w ASM.

wloochacz napisał(a):

Prosty przykład? Życzyłbym sobie potężnego wsparcia dla semi-automatycznego wsparcia dla programowania współbieżnego.
O takich cudach jak CUDA, to w ogóle szkoda pisać...

CUDA? W Delphi pod VCL a może frytki do tego? Chyba, że w FMX to owszem

Skoro wg Ciebie CUDA miałoby zastosowanie w VCL (czyli generowaniu UI), to naprawdę, nie mamy o czym rozmawiać.

http://edn.embarcadero.com/article/41688
Q: Does FireMonkey allow for use of the GPU for high performance computing (e.g. CUDA or OpenCL)?
A: It can, yes.

Taaaak... No i co to oznacza?
Dokładnie NIC, zero null.
Oczywiście są jakieś openspurce wprawki i przykłady np:
https://github.com/andremussche/AndrewsDelphiStuff/tree/master/-Other-/floating%20point%20speed/OpenCL%20fractal

Ale mi chodzi o wsparcie w Delphi, na pokładzie od producenta lub nawet jakieś komercyjne biblioteki.
Są takie?
Bo ja ich nie znam.

wloochacz napisał(a):
  1. Zrąbana bo? Język Delphi jest cały czas rozwijany a twierdzenie o zrąbanej jego architekturze to wynik JEGO NIEZNAJOMOŚCI (gdzieś tam w szkole słyszał o Pascalu pod DOS z lat 80 i myśli ,że to to samo)

Też nie do końca się zgadzam, ponieważ właśnie ta jego architektura miejscami jest... No może nie zrąbana, ale nie rozwija się od dwóch dekad.
Przykład?
Proszę - masowe używanie zdarzeń bez wsparcia delegacji dla tych zdarzeń.

Ale to przecież nie narzuca takiego sposobu pisania.

Nie narzuca powiadasz?
Cały VCL i RTL jest tak napisany.
A więc, tak, poniekąd narzuca.

[Embarcadero napisał(a)]http://edn.embarcadero.com/article/41688):
  1. Nie wiem jak to napisałeś ale jak chcesz mieć coś totalnie zoptymalizowane to sobie napisz wstawkę w ASM. Poza tym porównaj prędkość do nowoczesnych języków typu Java czy C# i ich się czepiaj. Gdybyś nie wiedział to języki programowania maja swoje przeznaczenie.

No to argument po bandzie fest, naprawdę.
Skoro piszę w Delphi, to dlaczego mam pisać w ASM?

A po co wprowadzono obsługę wstawek ASM?

Dla mnie oczywistym jest, żeby łatać niedostatki kompilatora.
I tak, można potem zrobić np. coś takiego:
http://blog.synopse.info/post/2015/06/30/Faster-String-process-using-SSE-4.2-Text-Processing-Instructions-STTNI

Ale to nie jest Delphi, tylko ASM i to dla konkretnego procesora...
A skoro Delphi takie super-wieloplatformowe, to jak to potem odpalić na np. Androidzie?
No właśnie.

0
furious programming napisał(a):

/ciach/

A tak w ogóle to @Qla, masz problem z zalogowaniem się? Zapomniałeś że masz jeszcze dwa zarejestrowane konta, czy nie pamiętasz jakie są do nich hasła? W sumie to już nieistotne – oba zbanowałem.

Tak, a dlaczego zbanowałeś?
Bo nie podoba Ci się co napisał?
To weź mnie też zbanuj, na zdrowie.

A jeśli napisał bzdury, to mu się wyjaśni...
Np. z tego wynika, że Delphi x64 jest szybsze od C++ w liczeniu liczb pierwszych :D
https://codingforspeed.com/integer-performance-comparison-for-c-c-delphi/

Ja np. chciałem mu wyjaśnić, że testy na których się opera są dość leciwe i nalałoby to zweryfikować.

Ale bolesna prawda jest taka, że efektywność kodu generowanego przez kompilator Delphi spadała z wersji na wersję. Rozumiem, co jest przyczyną i widzę, że się to porpawia. Nie tak szybko jakbym sobie tego życzył, ale jednak.
Natomiast wzrasta dla kompilatora FPC.
http://blog.synopse.info/post/2015/06/21/Why-FPC-may-be-a-better-compiler-than-Delphi

Czyli mamy płacić furę kasy za coś, co działa gorzej niż darmowy odpowiednik :D

1
wloochacz napisał(a):

Tak, a dlaczego zbanowałeś?
Bo nie podoba Ci się co napisał?

Ale co ma banowanie multikont wspólnego z tym wątkiem, napisanym przez anonima? Banuję mnóstwo multikont i nie ma to nic wspólnego z Delphi ani jakąkolwiek inną technologią. Gdybym miał w ten sposób reagować – jak mi się notorycznie imputuje – to bym ten wątek do kosza przeniósł, albo go trwale usunął. :|

Nikt mu nie broni nadal pisać z anonima.

A jeśli napisał bzdury, to mu się wyjaśni...

Tu już nawet nie chodzi o to czy napisał prawdę czy nie, a o to, że znów pojawia się wątek dotyczący krytyki Delphi (i ogólnie Pascala) i znów autor takiego wątku sprawia wrażenie, jakby wolał się wyżyć na forum rzucając puste frazesy i stwierdzenia, że coś „jest gówniane”, praktycznie bez żadnych konkretów, oprócz jakichś randomowych benchmarków.

Podał jakieś merytoryczne argumenty? Nie, widać więc na jakim poziomie próbuje prowadzić dyskusję. Zresztą nie on pierwszy, bo takie wątki pojawiają się co jakiś czas i za każdym razem jest tak samo.


Czyli mamy płacić furę kasy za coś, co działa gorzej niż darmowy odpowiednik :D

O ile kompilator generuje całkiem wydajny kod w dość krótkim czasie i wspiera dużo więcej platform, to IDE nadal nie dorasta do pięt Delphi, posiada znacznie mniejszą funkcjonalność i sporo bugów (choć przynajmniej jest bardzo lekkie). Oczywiście różnic na korzyść Delphi jest znacznie więcej.

Cóż, coś za coś. ;)

0

@wloochacz: Ciebie nie zbanuje bo by stracił reputację, zależy mu na stałym bywalcu ot zwykłe tanie cwaniactwo takie zachowanie a mnie zarzuca "wyżywanie się" i to wywyższanie się pokaż mi swoje projekty a powiem ci jaki dobry na prawdę jesteś...człowieku trochę pokory, na tym świecie co 3 zawodowy programista jest lepszy od ciebie, zresztą świat na tym się nie kończy na programowaniu czy komputerach w ogóle.
Pierwszy raz się spotykam z takim cebulackim zachowaniem moderatora na normalnym forum jest coś takiego jak upomnienie czy to wysyłka czy też w poście normalnie można na coś zwrócić uwagę.

I jeszcze raz powtarzam, że nie zbanowałeś mnie "detektywie"

Pisze, że mogę normalnie pisać, to dlaczego post z rana został usunięty? Nie zawierał żadnych wulgaryzmów.
Kolejne kłamstwo.

0
Qla napisał(a):

@wloochacz: Ciebie nie zbanuje bo by stracił reputację […]

@wloochacz raz dostał chwilowego bana (ode mnie) za wycieczki osobiste. No niestety, ale ludzie ostro raportowali posty, bo nie podobał się ton wypowiedzi, więc trzeba było zareagować. Ale że taka sytuacja się nie powtórzyła, to i powodu do blokady nie mamy.

Pierwszy raz się spotykam z takim cebulackim zachowaniem moderatora na normalnym forum […]

A ja nie pierwszy raz spotykam się z tego typu wątkiem, w którym oprócz rzucania stolcem nie padają ze strony OP żadne konkrety. Nie pierwszy raz też wątek zawierający krytykę Pascala/Delphi zniża się do poziomu wycieczek osobistych i trollingu.

Mnie absolutnie nie przeszkadza krytyka Delphi czy Lazarusa – to tylko narzędzia. Ktoś chce to proszę bardzo – piszcie, krytykujcie, wymieniajcie się argumentami, linkami, benchmarkami itd. Z chęcią poczytam takie wątki, o ile będą względnie merytoryczne i ciekawe. Ten niestety taki nie jest.

I jeszcze raz powtarzam, że nie zbanowałeś mnie "detektywie"

Ach, mamy bugi w narzędziach do administrowania. Nie wiem czy to ironia – może troszkę.

Pisze, że mogę normalnie pisać, to dlaczego post z rana został usunięty?

Rano nie bywam tutaj, loguję się najwcześniej koło południa, zwykle po południu – dziś nie było inaczej. Został on usunięty przez innego moderatora, ja nie mam z tym nic wspólnego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1