Źródło obrazu: pixabay.com

Tak więc, zanim rozpocznę zimną wojnę tutaj, między ludźmi używającymi Railsów (Ruby) i PHP, powiem wam, że nie jestem tutaj, aby debatować, czy który język jest lepszy. Dla mnie lub dla każdego doświadczonego programisty byłoby to samo. To tylko kwestia prawdopodobieństwa, kto woli, co i co jest dla nich łatwe.

Na tym blogu rozmawiałbym głównie o ich znaczeniu i różnicach między nimi. Tak więc, jeśli dopiero zaczynasz korzystać z Rails i PHP, może to być idealny blog dla Ciebie, jeśli chcesz wybrać jeden z nich. Więc zacznijmy. Czy powinniśmy?

Niektóre podstawowe informacje

Na początek PHP jest językiem skryptowym, podczas gdy RAILS to framework programistyczny oparty na języku Ruby. PHP jest powszechnie używanym językiem programowania dla stron takich jak Facebook, WordPress, Yahoo, Flickr i jeszcze więcej. PHP jest niezwykle szybki, n razy bardziej stabilny niż Rails, a nawet ma większą społeczność programistów, którzy go obsługują.

Railsy są w pełni oparte na Ruby. Jest niezwykle łatwy w użyciu i na początek. Środowisko w Ruby jest bardzo zautomatyzowane. Ruby jest naprawdę niesamowitym językiem. W przeciwieństwie do PHP, tak naprawdę jest on zorientowany obiektowo od podstaw. Jego kod jest bardzo zwięzły i wydajny. Klejnoty (rozszerzenia) umożliwiają skorzystanie z potrzebnej funkcjonalności. Po kodowaniu w Ruby, kodowanie w PHP wydaje mi się dość nużące.

Dobry, zły i brzydki

  1. PHP

Moja rada to PHP, ponieważ korzystanie z PHP na poziomie podstawowym jest bardzo łatwe, istnieje wiele osób, które wiedzą, jak skopiować / wkleić kod szablonu, zmodyfikować pliki konfiguracyjne, a nawet mogą nazywać je programistami PHP, co daje PHP bardzo zła nazwa, która, jak sądzę, nie zasługuje.

Dla prawdziwego programisty tak naprawdę nie ma znaczenia, jakiego języka używa, tylko to, co koduje i sposób, w jaki się liczy. Po nauczeniu się kilku języków programowania rozumiesz, że większość z nich jest w rzeczywistości bardzo podobna, zwykle jest to inna składnia (szczególnie w ich podstawowym mechanizmie, nawet dla różnych paradygmatów programowania).

Pierwszą rzeczą, której powinieneś się nauczyć, jest pisanie czystego i czytelnego kodu, a nie pisanie zbyt wyrafinowanego kodu, ponieważ trudniej jest debugować i dezorientować kogoś, kto nie zna specjalnych sztuczek języka (w PHP możesz robić wszelkiego rodzaju skomplikowane rzeczy, nie wszystkie są oczywiste dla innych programistów).

W porównaniu do PHP, Rails jest również nieprzyjazny, jeśli chodzi o błędy. Dzięki PHP będzie wyrzucać na ciebie błędy podczas programowania, a komunikaty o błędach faktycznie mają sens. Zwykle strona jest wyświetlana, ale część z błędem pokazuje, w której linii wystąpił błąd i komunikat jest przydatny. W Railsach zwykle wysadza się cała aplikacja.

Przykro mi, że obraziłem tutaj niektórych ludzi, ale nauka języka Ruby nie jest tak prosta jak PHP. Jest to z założenia niezwykle potężny język. Wybieram używanie Ruby po prostu dlatego, że jako programista uważam, że jest to znacznie lepszy język niż PHP. Ale z perspektywy uczenia się tak nie jest. Ruby ma wiele funkcji, które nie są łatwe do zrozumienia dla początkującego programisty. Jedną z takich koncepcji są bloki, procy i lambdy, których Rails intensywnie używa.

Klasyczny przykład Ruby on Rails, którego użyję, to utworzenie formularza:

  1. SZYNY

Ruby to dynamiczne, imperatywne programowanie obiektowe. Jest dynamicznie wpisywany, jak w PHP, więc nie musisz się martwić o deklarowanie zmiennych. Railsy są open source, działają na wielu platformach i mogą być osadzone w Hypertext Markup Language. Jest to język bardzo wysokiego poziomu. Oferuje nawet enkapsulację metod danych w obiektach.

Ruby ma bardzo zaawansowane techniki manipulacji ciągami i tekstem, które można łatwo podłączyć do DB2, MySQL, Oracle i Sybase. Duże programy napisane w Rubim są łatwe w utrzymaniu. Ma czystą i łatwą składnię, która pozwala nowym programistom uczyć się języka Ruby bardzo szybko i łatwo. Ma nie tylko możliwość pisania aplikacji wielowątkowych za pomocą prostego interfejsu API, ale także oferuje zaawansowaną klasę tablic i możliwość pisania bibliotek zewnętrznych w Ruby lub C.

Ruby Pozwala na użycie „słowa zarezerwowanego” jako identyfikatora, o ile parser nie dostrzega niejednoznaczności. W porównaniu do PHP, Ruby ma wiele funkcji bezpieczeństwa i potężną obsługę ciągów.

Pytanie o dekadę brzmi więc… Czy dzięki tym wszystkim funkcjom Ruby stanowi lepszą perspektywę w porównaniu do PHP?

Niestety nie jest tak czarno-biały, a wiele zmiennych wchodzi w grę podczas określania, czy PHP lub ruby ​​na szynach powinny być używane do rozwijania.

Na przykład Ruby on Rails jest znacznie bardziej złożonym językiem, w którym można skonfigurować środowisko programistyczne. W związku z tym milcząca wiedza wymagana dla Ruby natychmiast podnosi cenę na rynku programowania w porównaniu z programowaniem w PHP. Z drugiej strony programista PHP może po prostu użyć konwencjonalnego pakietu, takiego jak WAMP, MAMP, aby skonfigurować środowisko programistyczne w mniej niż 5 minut.

Kiedy zacząłem pisać w Rubim, Gems pomieszały mnie bardziej niż pomogły, ponieważ było za dużo magii. Kiedy dowiedziałem się, że możesz (i powinieneś) po prostu przeczytać kod źródłowy klejnotów, wszystko miało o wiele więcej sensu. Ze względu na wtykową naturę klejnotów i standardy społeczności, klejnoty mogą bardzo szybko nadać Twojej aplikacji ogromną funkcjonalność.

Niektóre klejnoty, bez których nie mogę żyć: Opracuj (uwierzytelnianie - obsługuje logowanie użytkownika, logowanie społecznościowe, zapomnij hasła do pracy i wiele więcej), spinacz do papieru (przesyłanie plików - nawet obsługuje przesyłanie do S3, kadrowanie / ponowne próbkowanie), proste Formularz sprawia, że ​​formularze są niezwykle proste w standaryzacji i renderowaniu na stronach internetowych.

PHP został zaprojektowany jako preprocesor hipertekstu, co oznacza, że ​​działa tylko wtedy, gdy pojawi się żądanie sieciowe. W porównaniu z Ruby, która uruchamia proces. W Railsach możesz łatwo skonfigurować zadania w tle za pomocą Sidekiq lub Resque. Zwiększa to również zdolność Rail do łatwego skalowania. W naszych aplikacjach przenosimy wiele rzeczy, które mogą spowolnić żądania, takie jak wysyłanie wiadomości e-mail do użytkowników w zadaniach w tle.

Teraz PHP może wykonywać zadania w tle za pomocą Gearmana, ale nie jest to ustandaryzowane - musisz zainstalować rozszerzenie PECL. W Ruby / Rails zadania w tle nie występują. Po prostu to zrób.

Tug of War

Teraz, gdy już dużo czytałeś o PHP i Railsach, spójrz na nie. Sprawdźmy, który z nich jest na równi pod względem wykorzystania zasobów, a nawet pod względem wydajności (prędkości).

Polecane kursy

  • Kurs certyfikacji online w Javie Hibernacja
  • Program na Java Spring
  • Kurs certyfikacji WordPress
  • Kurs Ruby

Wykorzystanie zasobów i szybkość

Jeśli chodzi o wykorzystanie pamięci, zwykle będzie to Python> Ruby> PHP, co oczywiście prowadzi do Django> Rails> PHP. Nie tylko pamięć, ale także tendencja do utrzymywania surowego rubinu na szynach vs. wydajność php. Warto również zauważyć, że oczywiście nie ma tutaj absolutów. Istnieje wiele scenariuszy użycia, w których Ruby pokona Pythona bez użycia rąk. Myślę, że wszyscy możemy się zgodzić, że Ruby i Python zawsze pokonają PHP.

Z mojego własnego doświadczenia wynika, że ​​użycie pamięci w Railsach może być wysokie, szczególnie na komputerach 64-bitowych (minimum wynosi około 95-100 MB przy tak cienkim interfejsie internetowym). PHP jest zwykle używane z różnymi wzorami, więc jest to trochę trudne do bezpośredniego porównania.

To powiedziawszy, nadal bardzo łatwo jest stworzyć kiepską, powolną i nieefektywną aplikację Django oraz szczupłą, szybką i wydajną aplikację Rails lub odwrotnie. Umiejętności, wiedza i doświadczenie w zakresie używanego systemu znacznie przyczynią się do zmniejszenia zużycia pamięci i wydajności, a nie tylko samego frameworka.

Optymalizacje baz danych, wybory serwerów i architektury (Apache vs. konfiguracje proxy przy użyciu nginx / lighttpd itp.), A także fundamentalne decyzje projektowe najprawdopodobniej szybko przekroczą nieodłączne cechy frameworka.

Jeśli uruchomisz typowe testy porównawcze między Ruby i innymi językami, Ruby przegrywa. Ruby prawdopodobnie nie posłużyłby ci dobrze w pisaniu aplikacji do cyfrowego przetwarzania sygnałów w czasie rzeczywistym lub jakiegokolwiek innego systemu kontroli w czasie rzeczywistym. Ruby (przy dzisiejszych maszynach wirtualnych) prawdopodobnie dusiłby się na komputerze o ograniczonych zasobach, takim jak smartfony.

Pamiętaj, że większość przetwarzania w twoich aplikacjach internetowych jest faktycznie wykonywana przez oprogramowanie opracowane w C. np. Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, wiele bibliotek parsujących, RMagick, TCP / IP itp. Są to programy C używane przez Rubin. Ruby zapewnia klej i logikę biznesową.

Pytanie brzmi: „DLACZEGO więc PHP?”

Teraz porozmawiajmy o PHP. PHP działa bardzo wolno na serwerze Apache. Nawet jeśli spróbujesz uruchomić stronę PHP nawet bez żadnego skryptu, tylko pusta strona php, załadowanie zajmie 10 razy więcej czasu w porównaniu do stron JSP lub Java. Ale znowu pytanie z milionowego wieku brzmi: jeśli tak, to dlaczego Facebook jeszcze nie porzucił PHP? Powodem, dla którego Facebook nie zrezygnował z PHP, jest fakt, że inżynierom Facebooka udało się obejść wiele jego wad poprzez połączenie łat na wszystkich poziomach stosu i doskonałą wewnętrzną dyscyplinę dzięki konwencji i stylowi kodu.

Unikane są najgorsze atrybuty języka, a styl kodowania jest rygorystycznie egzekwowany poprzez dość ścisłą kulturę recenzji kodu (nieprzestrzeganie stylu i „chodzenie kowbojem” przez pisanie niechlujnego kodu powoduje bezlitosne kpiny ze strony innych). Zarządzanie inżynierią nigdy nie musiało mieć tutaj silnej ręki; wynikało to w dużej mierze z faktu, że kluczowi wewnętrzni liderzy techniczni po prostu odpychali wszystkich innych.

A Facebook oczywiście nie tylko używa PHP. Zawiera także C ++ jako jego rdzeń. Tak więc, w przypadku PHP należy użyć pewnego rodzaju pamięci podręcznej opcode, takiej jak APC lub eAccelerator, w przeciwnym razie PHP musi analizować pliki na każde żądanie. Do ogólnego dostrajania apache'a powinieneś zrobić trochę google, kilka rzeczy, takich jak wyłączenie plików .htaccess, przychodzi na myśl, ale wciąż powinno być szybsze niż JSP.

Wniosek

Tak więc ostatecznie myślę, że mówię, jeśli przechodzisz przez Railsy, ​​niż powinieneś trzymać się Railsów, dopóki nie planujesz rozpocząć całkowicie nowego projektu opartego na PHP i założyć wraz z nim firmę.

Polecane artykuły

Oto kilka artykułów, które pomogą ci uzyskać więcej szczegółów na temat Rails vs. PHP, więc po prostu przejdź przez link.

  1. Niesamowity przewodnik na temat rozwoju Learn Rails
  2. Ruby vs Ruby On Rails - Który jest lepszy?
  3. Ruby kontra PHP - która technologia jest najlepsza?
  4. 10 najbardziej niesamowitych pytań do wywiadu PHP dla doświadczonych