Artur Świerc

Artur Świerc Programista PHP/Java

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Konrad Delong:
Artur Świerc:
Mam projekt w którym niektóre metody mają pare forów/ifów i są napisane na tyle linii, że już nie wiadomo gdzie się 'if' zaczyna,a gdzie kończy.
Taki kod jest dla mnie nieczytelny, w Javie/PHP miałbym nawiasy klamrowe i wszystko jasne.

Pewnie za chwilę ktoś napisze, że mam do bani IDE :)

Nie. Masz do bani kod :D (sorry, nie mogłem się powstrzymać :>)
A mniej obraźliwie: funkcja/metoda/if/while i inne bloki, które rozciągają się na wiele ekranów są "smrodkiem", któremu bardzo łatwo zaradzić przez refaktoryzację, z dużą korzyścią dla czytelności kodu (ofcoz - to nie jest żelazna reguła).

Oczywiście, najlepsza metoda to taka bez ifów i forów, w której mamy góra 10 linii. A jeśli jest inaczej to mamy czas i pieniądze na to, by zając się refaktoringiem.

Później odziedziczam po kimś pracę, klasy w których jest po 1000 linii. Nie wiadomo gdzie się co kończy, a co zaczyna. Refaktoryzuję?

Proszę Cię... z reguły nie ma czasu i środków na takie zabiegi.

Głupie gadanie o idealnym świecie.Artur Świerc edytował(a) ten post dnia 16.07.10 o godzinie 12:49

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Mariusz Soćko:
Artur Świerc:
Mariusz Soćko:
Co do wcięć zamiast nawiasów do oznaczenia struktury kodu - jak się już człowiek do tego przyzwyczai, okazuje się to super sprawą.
Sam język zmusza nas do pisania czytelnego kodu - i ten kod wygląda podobnie ktokolwiek by go nie pisał.

Mam projekt w którym niektóre metody mają pare forów/ifów i są napisane na tyle linii, że już nie wiadomo gdzie się 'if' zaczyna,a gdzie kończy.
Taki kod jest dla mnie nieczytelny, w Javie/PHP miałbym nawiasy klamrowe i wszystko jasne.

Pewnie za chwilę ktoś napisze, że mam do bani IDE :)

Dla mnie Python byłby idealnym językiem, gdyby posiadał klamerki, jawne interfejsy, abstrakty i nie było wielo-dziedziczenia. To moje zdanie, trudno trafić w gusta ogółu.

Naprawdę pisanie kodu bez klamerek jest bardzo wygodne (wiem, że to moje subiektywne odczucie).
Większość edytorów wspiera używanie wcięć (przyjęło się w Pythonie, że używamy czterech spacji, tak żeby w każdym systemie/edytorze wyglądało to i było obsłużone tak samo).

Bardzo subiektywne. W COBOL masz wybór - klamerki (IF/END-IF) lub bez (kropka na końcu... instrukcji, paragrafu). I jakoś każdy rozsądny programista woli tę pierwszą wersję. Powód? Na pierwszy rzut oka widać gdzie się IF kończy.
Właśnie dlatego masz teraz zalecenie aż 4 spacji. Jak się unowocześnią komputery i będziemy mieli rozdzielczość 10k x 10k to ile tych spacji będziemy stawiać?
10? 20?

Powinna być opcjonalna klamerka.Piotr Likus edytował(a) ten post dnia 16.07.10 o godzinie 14:07
Konrad Delong

Konrad Delong programista

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Oczywiście, najlepsza metoda to taka bez ifów i forów, w której mamy góra 10 linii. A jeśli jest inaczej to mamy czas i pieniądze na to, by zając się refaktoringiem.

Później odziedziczam po kimś pracę, klasy w których jest po 1000 linii. Nie wiadomo gdzie się co kończy, a co zaczyna. Refaktoryzuję?


Zgadza się, z reguły środków nie ma. Nie zazdroszczę, jeśli wylądowałeś z czymś takim.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Właśnie dlatego masz teraz zalecenie aż 4 spacji. Jak się unowocześnią komputery i będziemy mieli rozdzielczość 10k x 10k to ile tych spacji będziemy stawiać?
10? 20?

Będziemy nadal stawiać 4 spacji. 10k przez 10k nie będzie monitor jak ściana, będzie coś w rodzaju iPhone4 z jego 330 dpi. Toteż rozmiar czcionki zostanie 10-12pt, lecz będzie zajmował kilkakrotnie więcej pikseli.

I potem, nikt jeszcze nie wymyślił sposobu, w który ludzki mózg bez fatygi będzie czytał linii dłuższe nad 70—80 znaków.
Radosław Bułat

Radosław Bułat Ruby on Rails
developer,
Adtaily.com

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Przez przypadek natrafiłem na ten wątek i jestem (niemile) zaskoczony. Lata lecą, a my programiści nadal kłócimy się o to samo i często w tak samo beznadziejny sposób. Jak dużo musi wody upłynąć, żeby zrozumieć w końcu, że nie ma idealnego języka programowania i wybór konkretnego jest uzależniony od wielu czynników.
Łukasz Podkalicki:
To sobie poczytaj/pooglądaj na ten temat czy PRAKTYCZNIE NIC jest dla wszystkich nade względne (Py to rok 1990; Rb to rok 1995). O samej składniu i na czym się wzorował mówi sam autor, Matz (youtube.com) - o perlu też mówi.

Już któryś raz spotykamy się ze stwierdzeniem, że Ruby jest wzorowany na Pythonie. Czy to jakaś choroba Pythonistas?:)

Ruby jest na pewno wzorowany na niejednym języku bo dlaczego miało by być inaczej? Każdy język jest wzorowany na czymś. Po co wymyślać nową konstrukcję dla warunku skoro prawie wszyscy stosują "if"?

To teraz proszę o konkretne miejsca, w których Ruby jest wg Ciebie podobny do Pythona?
Niekompatybilna składnia - ale niekompatybilna z czym?
Resztę dziwnych argumentów (jak podążanie za czyjąś technologią czy fikuśnej czegoś) pominę chwilą ciszy.

Noo fikuśne w kolorach fuksyjnych, co zrobić :)
Pierwszy lepszy wpis z google, który mówi o niedojrzałości składni (1.8->1.9).
http://radarek.jogger.pl/2007/12/31/ruby-1-9-wydany-op...

Nie rozumiem tego kompletnie. Ruby zmienił się trochę z wersji 1.8 na 1.9 (możesz poczytać całą serię na moim blogu o zmianach w 1.9). Akurat w kwestii składni zmiany są kosmetyczne, choć są i niekompatybilne. Który język jest wyjątkiem w tej regule? Bo chyba nie python... Zaraz zaraz. Czy python to ten język, w którym w wersji 3.0 nie działa najprostsze "hello world" z poprzednich wersji?


print "Hello World!"


Migracja społeczności z pythona 2.x na 3.x wygląda tak samo jak w przypadku rubiego 1.8 -> 1.9. Taka kolej rzeczy.

Odpowiadając autorowi tego wątku:
Roman Piekarski:
Witam,

Jestem ciekawy, jakie są wasze doświadczenia z przejścia z języka PHP do któregoś z tych języków. Interesuje mnie wypowiedź doświadczonych/zaawansowanych programistów PHP, którzy programują w Ruby (RoR) lub w Python. Wielu programistów wypowiada się negatywnie na temat PHP, a nie mają dużego doświadczenia w tym języku i nie znają jego możliwości.
>
Szczególnie interesuje mnie zdanie programistów którzy aktywnie kożystają z symfony (1.0 - 1.2) lub z ZF.
>

Kiedyś byłem programistą PHP (początki jeszcze z wersją 3.x). Ten język w moim przypadku zweryfikowała praca przez rok przy jednym projekcie. Praca z nim doprowadzała mnie do frustracji. W szczególności:

- obsługa błędów
- oop podczas gdy cały core języka jest strukturalny
- niespójność, wręcz niechlujność nazewnictwa funkcji
- wredne edge casy (http://pl.php.net/manual/en/types.comparisons.php, http://zestyping.livejournal.com/124503.html)
- inne kwiatki w stylu niemożności get_array()[0]

Jeśli nie przeszkadzają Ci wymienione rzeczy to pozostań przy PHP. Jest mnóstwo programistów, którzy dobrze czują się z PHP. Na siłę nie ma co uszczęśliwiać.

Jeśli natomiast czegoś Ci brakuje pisząc w PHP, albo coś Ci się nie podoba i to wylosuj sobie

puts %w(ruby python)[rand(2)]


kup sobie książkę i zacznij się uczyć. Różnice między rubym i pythonem są głównie na płaszczyźnie filozoficznej - możliwości są dokładnie takie same i ich koszt jest podobny (inaczej niż PHP).
Adam Mańczuk

Adam Mańczuk programista, artysta
informatyk

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Dokładnie, zgodzę się z interlokutorem, nie wiesz co wybrać:

- Ruby lubią programiści Pascala, Javy, Ady
- Python się podoba miłośnikom C++, Lispa, Scheme
"Uwaga, zdarzają się wyjątki..."

Nic ci nie mówią te języki, zastanów się czy śmieszą cię skecze Monty Pythona, tak zbieżność nazw kabaretu i języka nieprzypadkowa.

Dalej nic, rzuć monetą...

Zamknijmy flame i napiszmy może coś w swoich ulubionych językach.Adam Mańczuk edytował(a) ten post dnia 27.07.10 o godzinie 03:22
Adam Mańczuk

Adam Mańczuk programista, artysta
informatyk

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Powinna być opcjonalna klamerka.
Skoro cytujemy, to ja też odwołam się do wieszcza:

"Lukier składniowy powoduje raka średnika"

A co do opcjonalnej klamerki:

for i in xrange(20):
wypas_funkcja(i)
inna_funkcja(i)
print i
#end-for

Jak najbardziej opcjonalne, w jednych językach opcjonalne są wcięcia w innych klamerki. Mi klamerki są zbędne jak mam wcięcia. A zamiast grzebać w składni wolę bawić się w metaprogramowanie, jest dużo ciekawsze.Adam Mańczuk edytował(a) ten post dnia 27.07.10 o godzinie 03:43

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Adam Mańczuk:
Powinna być opcjonalna klamerka.
Skoro cytujemy, to ja też odwołam się do wieszcza:

"Lukier składniowy powoduje raka średnika"

A co do opcjonalnej klamerki:

for i in xrange(20):
wypas_funkcja(i)
inna_funkcja(i)
print i
#end-for

Jak najbardziej opcjonalne, w jednych językach opcjonalne są wcięcia w innych klamerki. Mi klamerki są zbędne jak mam wcięcia. A zamiast grzebać w składni wolę bawić się w metaprogramowanie, jest dużo ciekawsze.Adam Mańczuk edytował(a) ten post dnia 27.07.10 o godzinie 03:43

Co więcej masz też dwukropek, który jest totalnie debilny. Klamerki przeszkadzały, więc z Pythona wyrzucili dwie klamerki i, w imię prostoty i likwidacji zbędnych znaczków, wrzucili obowiązkowe wcięcia i dwukropek.

Czy ktoś wie po co jest ten dwukropek jak są wcięcia?
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Szymon G.:
Co więcej masz też dwukropek, który jest totalnie debilny. Klamerki przeszkadzały, więc z Pythona wyrzucili dwie klamerki i, w imię prostoty i likwidacji zbędnych znaczków, wrzucili obowiązkowe wcięcia i dwukropek.

Czy ktoś wie po co jest ten dwukropek jak są wcięcia?
1) wcięcia żeby oddzielić bloki kodu (warunkowe, pętle)
2) dwukropek, dla jednej linii kodu rozbitej na kilka linii w edytorze?Wojciech Sznapka edytował(a) ten post dnia 28.07.10 o godzinie 18:51

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Szymon G.:
Czy ktoś wie po co jest ten dwukropek jak są wcięcia?

Po to, że czasem wcięć nie ma.

for x in range(20): print "Cogito ergo I'm right and you're wrong."

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Jarosław Fedewicz:
Szymon G.:
Czy ktoś wie po co jest ten dwukropek jak są wcięcia?

Po to, że czasem wcięć nie ma.

for x in range(20): print "Cogito ergo I'm right and you're wrong."

hm... no fakt, dzięki za wyjaśnienie.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Adam Mańczuk:
Powinna być opcjonalna klamerka.
Skoro cytujemy, to ja też odwołam się do wieszcza:

"Lukier składniowy powoduje raka średnika"

A co do opcjonalnej klamerki:

for i in xrange(20):
wypas_funkcja(i)
inna_funkcja(i)
print i
#end-for

Jak najbardziej opcjonalne, w jednych językach opcjonalne są wcięcia w innych klamerki. Mi klamerki są zbędne jak mam wcięcia. A zamiast grzebać w składni wolę bawić się w metaprogramowanie, jest dużo ciekawsze.

To jest nawet ciekawe rozwiązanie.

W C++ czasami też czasami coś takiego się robi.


struct MojaInwencja {

void funkcja() {
while (warunek) {
if (mam-cos-do-zrobienia) {
// --- to robie
} else {
// --- cos innego
} // if
} // while
} // funkcja

}; // struct
Paweł Skiba

Paweł Skiba programista

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Artur Świerc:
Później odziedziczam po kimś pracę, klasy w których jest po 1000 linii. Nie wiadomo gdzie się co kończy, a co zaczyna. Refaktoryzuję?

Proszę Cię... z reguły nie ma czasu i środków na takie zabiegi.

Głupie gadanie o idealnym świecie.

Te obiekcje co do długości klas nie trafiają do mnie. Zaczyna sie w konstruktorze, kończy w jakiejś metodzie publicznej. Długość klasy odzwierciedla jej funkcjonalność, zakres odpowiedzialności, "jej moc". W dużej części wynika to z samej natury rzeczywistości którą programujemy. Czasem jest to skutek preferencji programisty projektanta.
Ja preferuje klasy o dużej funkcjonalności. Wolę mieć klasę która ma 1000 linii ale coś robi, niż mieć setkę trywialnych klas które nie robią prawie nic.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Paweł Skiba:
Artur Świerc:
Później odziedziczam po kimś pracę, klasy w których jest po 1000 linii. Nie wiadomo gdzie się co kończy, a co zaczyna. Refaktoryzuję?

Proszę Cię... z reguły nie ma czasu i środków na takie zabiegi.

Głupie gadanie o idealnym świecie.
a dług technologiczny rośnie.
Te obiekcje co do długości klas nie trafiają do mnie. Zaczyna sie w konstruktorze, kończy w jakiejś metodzie publicznej. Długość klasy odzwierciedla jej funkcjonalność, zakres odpowiedzialności, "jej moc". W dużej części wynika to z samej natury rzeczywistości którą programujemy. Czasem jest to skutek preferencji programisty projektanta.
Ja preferuje klasy o dużej funkcjonalności. Wolę mieć klasę która ma 1000 linii ale coś robi, niż mieć setkę trywialnych klas które nie robią prawie nic.

Mysle ze warto o tym pomyśleć http://c2.com/cgi/wiki?CouplingAndCohesion.
Paweł Skiba

Paweł Skiba programista

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Właśnie. Do oceny jakości kodu należy używać sprawdzonych metryk, a nie oceniać jego jakość na podstawie ilości linii kodu w klasie

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Wracając do tematu ;) Znalazłem to już jakiś czas temu i dziwię się, że jeszcze nikt nie wysłał - co prawda status z 2011:

http://www.readwriteweb.com/hack/2012/01/infographic-p...



Wyślij zaproszenie do