![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 21.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Rok temu ShadowD pisał o Phalconie, jendak chciałbym odnowić dyskusję, ponieważ trochę się zmineiło od tego czasu.
Może krótkie wprowadzenie. Phalcon jest frameworkiem PHP napisanym pierwotnie w C. Dzięki temu jest niesamowicie szybki. W "standardowych" frameworkach PHP przy każdym zapytaniu kod frameworka jest w całości interpretowany od nowa, co zajmuje trochę czasu. Phalcon jest już skompilowany, więc nie ma tego problemu. Wystarczy dodać rozszerzenie w postaci pliku dll dla serwera Aapche. Ma to jednak swoje wady. Po pierwsze raczej mozemy zapomnieć w phlaconie na standardowych hostingach wpsółdzielonych. Potrzebujemy VPS-a gdyż tylko tam mamy możliwość instalowania własnych rozszerzeń. Jest też problem rozwoju frameworka. Jest on stworzony dla programistów PHP, ale sam napisany jest w C. Nie każdy programista PHP zna C, a te języki mimo wszystko się różnią. Twórcy frameworka postanowili więc stworzyć własny język programowania, Zephir, który łączy cechy PHP oraz C(a także... Rust i Javascript). Trochę radykalne rozwiązanie, ale Zephir naprawdę wygląda ciekawie. I to głównie temat Zephira chciałbym poruszyć. Zephir jest językiem zarówno typowanym dynamicznie(jak php czy javascirpt) jak i statycznie©. Zephir jest tłumaczony do C. W przeciwieństwie do PHP, Zephir wymusza pewne dobre standardy, i dodaje funkcje których w PHP brakuje, na przykład: -Kod musi być umieszczony w klasach. Zephir jest wpełni obiektowy. -Namespace jest konieczny -używanie $ nie jest wymagane -Możemy ustalić jaki typ danych ma zwracać metoda Dzięki Zephir możemy tworzyć rozszerzenia. Więc całe nasze aplikacje możemy skompilować do C, tym samym znacznie poprawiając wydajność. Zachęcam do oglądniecia składni zephir na http://zephir-lang.com/intro.html Co myślicie o projekcie Zephir? Przesada, czy coś naprawdę przyszłościowego? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pisałem już kilka razy - programista PHP nauczy się korzystać z Hacka czy Zephira bardzo łatwo. Nawet nie da się tego porównać z czasem potrzebnym na sensowne ogarnięcie Javy... OK, jakieś to wytłumaczenie jest. Chociaż ja nie rozumiem skąd się bierze ten mit trudności javy. Moim zdaniem, języki typu java/c# były tworzone głównie po to, by tworzenie aplikacji było szybkie i łatwe. Chyba na każdych studiach informatycznych jest java, lub c#, a każdy programista raczej powinien znać "elementarz" języków c, c++, java w jakimś stopniu. No ale skoro mówisz, że java jest problemem dla programistów PHP, to OK. Nie ja tu jestem od biznes planu (IMG:style_emoticons/default/smile.gif) Cytat Jednak determinuje. Po przepisaniu kodu PHP z minimum niezbędnych zmian na Zephir i skompilowaniu tego do kodu C rozszerzenia PHP już uzyskuje się masakryczny skok wydajności. Nie ma nawet potrzeby pytać "a co jeśli kod robiący to samo napisany w C będzie jeszcze 10x szybszy?" - bo może będzie, a może nie będzie, nie wiadomo - gdy tymczasem już osiągnięto doskonały, z dużym prawdopodobieństwem wystarczający, wzrost wydajności przy ogromnie mniejszym nakładzie pracy (i kosztach) w porównaniu z pisaniem tego w C od zera. Po pierwsze, PHP jest tak bardzo wolne (po części wynika to z tego, że jest po prostu językiem interpretowanym, a po części z "błędów technicznych"), że trzeba by się mocno starać, by przepisując kod z php'a na coś innego (w dodatku natywnego) nie otrzymać dużego skoku wydajności. Kompilowanie kodu do do języka C, nie determinuje wydajności (IMG:style_emoticons/default/smile.gif) Nie można powiedzieć, że "zephyr jest szybki", bo kompiluje się do C. Tzn. może kod w nim pisany jest "szybki" w porównaniu do PHP, to pokazuje praktyka. Na logikę można się spodziewać, że gdyby był kompilowany do... PHP, pewnie byłby wolniejszy, niż kompilowany do C. Ale czy można powiedzieć o tym, że język C, lub np. Pascal jest szybki, bo kompiluje się do kodu maszynowego ? Dobry programista assemblera zawsze napisze program mniejszy i szybszy niż jego odpowiednik w języku C/Pascal. Standard ANSI C sam w sobie nie gwarantuje wydajności. To tylko język - "zbiór słów kluczowych". To jak szybko będzie działał program napisany w c, zależy w znacznej mierze od kompilatora. Oczywiście od samego języka zależy na ile optymalny kompilator da się zbudować. Np. programy pisane w językach dynamiczne typowanych, będą wolniejsze od statycznie typowanych, bo "struktura języka" nie sprzyja budowaniu kompilatorów generujących wydajny kod. Takich porównań wydajności kompilatorów jest dość dużo. Tutaj jakiś pierwszy lepszy przykład jaki wygooglowałem. http://www.g-truc.net/post-0372.html . Niby ten sam język, a każdy kompilator kompiluje inaczej. Podobnie w przypadku Zephyra - kompiluje się on do C, potem C jest kompilowane do kodu maszynowego. To, na ile będzie wydajny kod napisany w zephyrze, zależy od tego jak dobrze skompiluje się kod c do kodu maszynowego (jak wyżej napisałem - każdy kompilator generuje inny kod - "inaczej wydajny"), zależy również od tego na ile wydajny jest "kompilator zephyr -> C". No i zależy od samego programisty, ale to inna bajka. Napiszcie lepiej (bo jestem tego ciekawy, a znaleźć nie bardzo potrafię), Czy Zephyr w jakichś sposób zarządza pamięcią ? Jakiś garbage collector ? Czy może sterty w ogóle nie używa ? Moim zdaniem, jedną z większych zalet języków java/c# to właśnie gc - zawsze to jedna rzecz mniej na głowie programisty. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 03:17 |