Temat: Po co to całe typowanie?

Przyszedł mi do głowy pewien "morał". Tak na prawdę jedynym językiem, który jest silnie typizowany i do tego statycznie jest PASCAL. :D
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: Po co to całe typowanie?

Łukasz Karpuć:
Artur Świerc:
Łukasz Karpuć:
...i o 90% z nich się nie dowiesz pisząc w PHP. Twój wybór. Ale jak masz zapchane 2 miesiące wprzód, to nieźle..

Język to tylko narzędzie. Małe projekty mogą ograniczać.

Rozumiem, że napisałem nieprawdę a klepiąc dalej w samym PHP ma się szansę poznać choćby takie trywialne rzeczy jak wskaźniki czy wątki? Muszę się chyba doszkolić...

Znajomość wskaźników i wątków nie robi jeszcze z nikogo dobrego programisty.
Marek Sierbin:
Czy mógłbyś się w takim razie wypowiedzieć co do wiarygodności przedstawionego tutaj (http://reverseblade.blogspot.com/2009/02/c-versus-c-ve... testu? Nie uznawałem nigdy PHP za demona prędkości, ale te wyniki są dla mnie "zastanawiające"...Marek Sierbin edytował(a) ten post dnia 04.12.10 o godzinie 01:06

Trudno mi się odnieść do tego testu, szkoda że autor nie podaje faktycznego kodu.Artur Świerc edytował(a) ten post dnia 04.12.10 o godzinie 16:27

konto usunięte

Temat: Po co to całe typowanie?

Artur Świerc:
Łukasz Karpuć:
Artur Świerc:
Łukasz Karpuć:
...i o 90% z nich się nie dowiesz pisząc w PHP. Twój wybór. Ale jak masz zapchane 2 miesiące wprzód, to nieźle..

Język to tylko narzędzie. Małe projekty mogą ograniczać.

Rozumiem, że napisałem nieprawdę a klepiąc dalej w samym PHP ma się szansę poznać choćby takie trywialne rzeczy jak wskaźniki czy wątki? Muszę się chyba doszkolić...

Znajomość wskaźników i wątków nie robi jeszcze z nikogo dobrego programisty.

Czy możesz wskazać, w którym miejscu napisałem to co tu sugerujesz?Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 16:43

konto usunięte

Temat: Po co to całe typowanie?

Piotr Rusoł:
Mam pomysł. Panie Arturze wyłączy Pan analizator statyczny (LINT), który jest aktualnie puszczany za nim uruchomi się kompilator i jest rozszerzeniem do standardu.

Zobaczy Pan, że konstrukcja:

A zmienna1;
B zmienna2;

zienna1 = zmienna2 jest jak najbardziej możliwa.

Przekazanie zmiennej o innym typie niż funkcja tego wymaga też stanie się możliwe.

Kompilator tego nie wychwyci, co więcej będzie chciał coś z tym zrobić.

Ale lint nie ma nic wspólnego z kompilatorem C. Lint jest narzędziem do statycznej analizy kodu w C. Tak jak PMD w Javie. Co on ma do rzeczy? Oczywiście, że kompilator to wychwyci (o ile nie mówimy o niejawnej konwersji typów, który faktycznie w C jest dość specyficzny, ale dokładnie opisany). Przecież to byłoby zupełnie bez sensu bo poniższy kod byłby jak najbardziej poprawny w powyższym przypadku:

int s[10];
char a[3];
a = s;

Ten kod jest semantycznie niepoprawny w C i jak najbardziej wykrywa to kompilator. Jeśli jakikolwiek kompilator kiedykolwiek to skompilował to był jakiś horrendalny błąd i trudno to nazwać C.

Artur
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: Po co to całe typowanie?

Łukasz Karpuć:
Czy możesz wskazać, w którym miejscu napisałem to co tu sugerujesz?Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 16:43

Zarzuciłeś Konradowi, że po siedmiu latach klepania w PHP nie wie co to jest dwukierunkowa lista powiązana. Ja zaś napisałem, że język to tylko narzędzie, a ograniczać się można projektami. Dlaczego tak uważam? Bo z doświadczenia wiem, że w PHP można robić równie ambitne projekty co w Javie bez użycia np wątków, zawsze są jakieś zamienniki.

konto usunięte

Temat: Po co to całe typowanie?

Artur Świerc:
Łukasz Karpuć:
Czy możesz wskazać, w którym miejscu napisałem to co tu sugerujesz?Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 16:43

Zarzuciłeś Konradowi, że po siedmiu latach klepania w PHP nie wie co to jest dwukierunkowa lista powiązana. Ja zaś napisałem, że język to tylko narzędzie, a ograniczać się można projektami. Dlaczego tak uważam? Bo z doświadczenia wiem, że w PHP można robić równie ambitne projekty co w Javie bez użycia np wątków, zawsze są jakieś zamienniki.


1. Nie zarzucałem, tylko stwierdziłem, co Konrad potwierdził, a ja przepowiedziałem mu przyszłość, jeśli pozostanie w PHP.
2. Napisałem, że za pomocą PHP nie można poznać np. wątków i to prawda - stwierdziłeś, że się mylę.
3. W PHP można robić to samo co w Javie? Powodzenia...
4. Są zamienniki? Proszę, napisz mi jakie to w PHP mamy zamienniki javowych wątków, czyli co oferuje podobną funkcjonalność.

konto usunięte

Temat: Po co to całe typowanie?

Do autora wątku:

Rzeczywiście rozmowa zbiegła na złe tory. Chcesz się czegoś naumieć? Zacznij od tego:

http://helion.pl/ksiazki/wzorce_projektowe_elementy_op...

albo poszukaj frazy: "wzorce projektowe". Możesz też odwiedzić stronę http://sourcemaking.com

Ponadto polecana jest książka "Czysty Kod" Roberta Martina.Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 19:13
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: Po co to całe typowanie?

Łukasz Karpuć:
Artur Świerc:
Łukasz Karpuć:
Czy możesz wskazać, w którym miejscu napisałem to co tu sugerujesz?Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 16:43

Zarzuciłeś Konradowi, że po siedmiu latach klepania w PHP nie wie co to jest dwukierunkowa lista powiązana. Ja zaś napisałem, że język to tylko narzędzie, a ograniczać się można projektami. Dlaczego tak uważam? Bo z doświadczenia wiem, że w PHP można robić równie ambitne projekty co w Javie bez użycia np wątków, zawsze są jakieś zamienniki.


1. Nie zarzucałem, tylko stwierdziłem, co Konrad potwierdził, a ja przepowiedziałem mu przyszłość, jeśli pozostanie w PHP.
Nie w PHP, a przy pisaniu rozszerzeń dla wordpresa. To wielka różnica.
2. Napisałem, że za pomocą PHP nie można poznać np. wątków i to prawda - stwierdziłeś, że się mylę.
Nie czytasz uważnie - stwierdziłem że wątkami nie zrobisz z nikogo dobrego programisty. Język to tylko narzędzie. Samo trzymanie złotej wędki w ręce nie uczyni kogoś rybakiem.
3. W PHP można robić to samo co w Javie? Powodzenia...
Bądźmy realistami, mam na myśli rozwiązania webowe. Chociaż nawet powstały jakieś mody w których możemy pisać soft na androida czy też tworzyć aplikacje okienkowe.
4. Są zamienniki? Proszę, napisz mi jakie to w PHP mamy zamienniki javowych wątków, czyli co oferuje podobną funkcjonalność.
Zwykły linuxowy CRON.

konto usunięte

Temat: Po co to całe typowanie?

Artur Świerc:
1. Nie zarzucałem, tylko stwierdziłem, co Konrad potwierdził, a ja przepowiedziałem mu przyszłość, jeśli pozostanie w PHP.
Nie w PHP, a przy pisaniu rozszerzeń dla wordpresa. To wielka różnica.
2. Napisałem, że za pomocą PHP nie można poznać np. wątków i to prawda - stwierdziłeś, że się mylę.
Nie czytasz uważnie - stwierdziłem że wątkami nie zrobisz z nikogo dobrego programisty.

// EDIT: dobra, nie chce mi się tego ciągnąć.. nie napisałem nic co tam sobie wymyśliłeś i tyle.
4. Są zamienniki? Proszę, napisz mi jakie to w PHP mamy zamienniki javowych wątków, czyli co oferuje podobną funkcjonalność.
Zwykły linuxowy CRON.

Cron ma być zamiennikiem wątków? Wielki Szkocie!Łukasz Karpuć edytował(a) ten post dnia 04.12.10 o godzinie 19:54
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: Po co to całe typowanie?

Artur Świerc:
Łukasz Karpuć:
4. Są zamienniki? Proszę, napisz mi jakie to w PHP mamy zamienniki javowych wątków, czyli co oferuje podobną funkcjonalność.
Zwykły linuxowy CRON.

Zwykły cron i centralny zarządcza procesów, niekiedy udaje mi się na jednej maszynie odpalać po kilkaset procesów php :). Wiem lubię się pastwić nad serwerami. I mały kamyczek do wątków w javie. Największa wada wielowątkowości to taka ze jeżeli proces potomny ci się zawiesi (miałem coś takiego na skutek błędu w Lucene) to go za chiny ludowe nie ubijesz, bez resetowania maszyny wirtualnej.
W przypadku procesów php zawsze mogę ubić jeden proces po pidzie.

konto usunięte

Temat: Po co to całe typowanie?

Jarosław Czub:
Artur Świerc:
Łukasz Karpuć:
4. Są zamienniki? Proszę, napisz mi jakie to w PHP mamy zamienniki javowych wątków, czyli co oferuje podobną funkcjonalność.
Zwykły linuxowy CRON.

Zwykły cron i centralny zarządcza procesów, niekiedy udaje mi się na jednej maszynie odpalać po kilkaset procesów php :). Wiem lubię się pastwić nad serwerami. I mały kamyczek do wątków w javie. Największa wada wielowątkowości to taka ze jeżeli proces potomny ci się zawiesi (miałem coś takiego na skutek błędu w Lucene) to go za chiny ludowe nie ubijesz, bez resetowania maszyny wirtualnej.
W przypadku procesów php zawsze mogę ubić jeden proces po pidzie.

Bo wykorzystujesz procesy, a nie wątki. To nie jest to samo.
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: Po co to całe typowanie?

Łukasz Karpuć:
Jarosław Czub:
Artur Świerc:
Łukasz Karpuć:
W przypadku procesów php zawsze mogę ubić jeden proces po pidzie.

Bo wykorzystujesz procesy, a nie wątki. To nie jest to samo.

Akurat wiadomo, że to nie to samo i jakie są różnicę. W php nie ma innej możliwości zasymulowania wielowątkowości (według mojej wiedzy na stan dzisiejszy) i dla php 5.3, co innego JAVA gdzie obsługę wątków masz wpisane w core języka.

Generalnie pisanie wielowątkowe/wieloprocesorowe to kawałek porządnej wiedzy, który potrafi przynieś korzyści w postaci szybkości przetwarzania danych. Jednak również napisany kod musi być dużo lepiej napisany, przetestowany. Wiele kwiatków wychodzi gdy mamy kod wielowątkowy/wieloprocesorowy.
To już temat na inny wątek, bo ten miał inny temat. Jak ktoś chce to mogę podać przykłady z życia wzięte bo pisaniem wielowątkowym ma na codzień do czynienia.

konto usunięte

Temat: Po co to całe typowanie?

Jarosław Czub:

Bo wykorzystujesz procesy, a nie wątki. To nie jest to samo.

Akurat wiadomo, że to nie to samo i jakie są różnicę.

No więc wystarczy to, aby stwierdzić, że w PHP się nie da.

Jest za to fork, pamięć współdzielona, semafory - używał ktoś tego w realnym środowisku? Mnie się nie zdarzyło jeszcze.. może to nie są zabawki do tego, do czego PHP się przydaje.
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: Po co to całe typowanie?

Łukasz Karpuć:
Jarosław Czub:

Bo wykorzystujesz procesy, a nie wątki. To nie jest to samo.

Akurat wiadomo, że to nie to samo i jakie są różnicę.

No więc wystarczy to, aby stwierdzić, że w PHP się nie da.

Jest za to fork, pamięć współdzielona, semafory - używał ktoś tego w realnym środowisku? Mnie się nie zdarzyło jeszcze.. może to nie są zabawki do tego, do czego PHP się przydaje.

W produkcyjnym tego nie używałem jeszcze. W ramach jednej maszyny to spoko rozwiązanie, ale mam aplikacje działającą na paru serwerach. Generanie żeby zakończyć rozważania nad tym co lepsze czy c64 czy atari :) każdy język ma wady i zalety, każdy nadaje się do czego innego. Java - backend, obliczenia numeryczne, itd. PHP - webowy front end, prezentacja danych.
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: Po co to całe typowanie?

Jarosław Czub:każdy język ma wady i zalety, każdy nadaje się do czego innego. Java - backend, obliczenia numeryczne, itd. PHP - webowy front end, prezentacja danych.

Oczywiście, dlatego nikt nie zrobi facebook'a tylko w JEE, albo systemu obsługującego LHC w PHP. To tylko narzędzia, a niestety wiele programistów poza jednym językiem świata nie widzą ;)

konto usunięte

Temat: Po co to całe typowanie?

Jarosław Czub:
W produkcyjnym tego nie używałem jeszcze. W ramach jednej maszyny to spoko rozwiązanie, ale mam aplikacje działającą na paru serwerach. Generanie żeby zakończyć rozważania nad tym co lepsze czy c64 czy atari :) każdy język ma wady i zalety, każdy nadaje się do czego innego. Java - backend, obliczenia numeryczne, itd. PHP - webowy front end, prezentacja danych.

Wszystko co mówisz to prawda, aczkolwiek jedne lepiej się nadają do nauki dobrych programistycznych nawyków (i w ogóle tego, co ramach programowania wymyślono), a inne gorzej. I o tym właśnie pisałem.
Artur Świerc:
Oczywiście, dlatego nikt nie zrobi facebook'a tylko w JEE, albo systemu
obsługującego LHC w PHP. To tylko narzędzia, a niestety wiele programistów
poza jednym językiem świata nie widzą ;)

Aby nie było, że jestem fanatykiem Javy i dlatego twierdzę, że jest o niebo lepsza do nauki poprawnego programowania niż PHP: na codzień* pracuję z PHP.

==
* jak to się pisze?

Temat: Po co to całe typowanie?

Artur Karazniewicz:
Piotr Rusoł:
Mam pomysł. Panie Arturze wyłączy Pan analizator statyczny (LINT), który jest aktualnie puszczany za nim uruchomi się kompilator i jest rozszerzeniem do standardu.

Zobaczy Pan, że konstrukcja:

A zmienna1;
B zmienna2;

zienna1 = zmienna2 jest jak najbardziej możliwa.

Przekazanie zmiennej o innym typie niż funkcja tego wymaga też stanie się możliwe.

Kompilator tego nie wychwyci, co więcej będzie chciał coś z tym zrobić.

Ale lint nie ma nic wspólnego z kompilatorem C. Lint jest narzędziem do statycznej analizy kodu w C. Tak jak PMD w Javie. Co on ma do rzeczy? Oczywiście, że kompilator to wychwyci (o ile nie mówimy o niejawnej konwersji typów, który faktycznie w C jest dość specyficzny, ale dokładnie opisany). Przecież to byłoby zupełnie bez sensu bo poniższy kod byłby jak najbardziej poprawny w powyższym przypadku:

int s[10];
char a[3];
a = s;

Ten kod jest semantycznie niepoprawny w C i jak najbardziej wykrywa to kompilator. Jeśli jakikolwiek kompilator kiedykolwiek to skompilował to był jakiś horrendalny błąd i trudno to nazwać C.

Artur


Jeżeli przytoczone przykłady nie są wystarczająco silne to podeprę się informacjami znalezionymi na http://en.wikipedia.org/wiki/C_%28programming_language%29

Po prawej stronie w tabelce:

Typing discipline Static, weak, manifest

Wygląda, że wikipedia ma błąd w artykule i trzeba go zgłosić.

konto usunięte

Temat: Po co to całe typowanie?

Piotr Rusoł:

Jeżeli przytoczone przykłady nie są wystarczająco silne to podeprę się informacjami znalezionymi na http://en.wikipedia.org/wiki/C_%28programming_language%29

Po prawej stronie w tabelce:

Typing discipline Static, weak, manifest

Wygląda, że wikipedia ma błąd w artykule i trzeba go zgłosić.

Wikipedią bym, się nie podpierał, ale możemy zrobić eksperyment. Tylko trzeba wymyślić jaki ;)Łukasz Karpuć edytował(a) ten post dnia 05.12.10 o godzinie 23:28



Wyślij zaproszenie do