konto usunięte

Temat: Koszt wykonania prostej strony www - szacunkowo

Krzysztof Parjaszewski:
Andrzej Prażmo:

Teraz wyobraź sobie, że na skutek błędu do obydwu pójdzie wartość, np. "120a300".

http://php.net/manual/en/function.is-a.php + https://github.com/sebastianbergmann/phpunit/

Więcej tutaj:
http://pl1.php.net/manual/en/function.is-int.php

Myślę że panuje tu taka dziwna fobia, jakby dotnetowcy nie używali innych języków niż C#.
A przecież trzeba użyć JavaScript, nawet w banku, używa się XSLT do korespondencji i jakoś nikt nie jęczy że nie ma tam decimala.

PHP powinien być językiem formatek / prezentacji - jeśli się tego trzymać to i rakiety w kosmos może wysyłać.
Krzysztof Parjaszewski:
To może inaczej. Czy ktoś z Was podjąłby się opisania cech, jakie musiałby mieć system bankowy, bez dyskusji póki co o języku?

Pytanie jaki system? Core'owy?
Niestety znam tylko COBOL-owe, więc to raczej nie pomoże w dyskusji...
I dla odmiany - nie zakładałbym, że aplikacja webowa jest galwanicznie oddzielona od systemu, zakładam, że mogę normalnie zrobić przelew przez przeglądarkę.

Aplikacja webowa powinna być satelitą. Przynajmniej przy obecnym stanie technologii.
Czyli przy założeniu że serwer aplikacji www się składa (np. przez DoS) to i tak bank dalej działa.

Może jak przyjdzie .NET 7.0 to będziemy mogli zapomnieć o czymś takim jak hakerzy i domorośli uruchamiacze skryptów (Script kiddie), póki co każdy system komputerowy można złamać i są fascynaci którzy to robią.Piotr L. edytował(a) ten post dnia 08.01.13 o godzinie 23:12

konto usunięte

Temat: Koszt wykonania prostej strony www - szacunkowo

Jawne typowanie nas nie uratuje, jeśli algorytm nie będzie numerycznie poprawny. A nawet przy bardzo prostych wzorach można taki "trefny" algorytm wypuścić spod własnych palców.
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Koszt wykonania prostej strony www - szacunkowo

Krzysztof Parjaszewski:
Andrzej Prażmo:

Teraz wyobraź sobie, że na skutek błędu do obydwu pójdzie wartość, np. "120a300".

http://php.net/manual/en/function.is-a.php + https://github.com/sebastianbergmann/phpunit/
Dryfujesz sobie, jak większość młodych programistów po morzach teorii a ja ci piszę jak wygląda praktyka. Nie ma bezbłędnych programistów. Nie ma również testerów, którzy przewidzą wszystkie przypadki. Natomiast, silne typowanie jest ostatnią instancją, która chroni naszą aplikację przed tego typu bzdurnymi danymi wejściowymi. Zaprawdę, powiadam ci, że "specified cast is not valid" nieraz uratował mi tyłek.
Jacek R.

Jacek R. programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Miałem się już tutaj nie odzywać, ale nie mogę się powstrzymać
Krzysztof Parjaszewski:
Andrzej Prażmo:

Teraz wyobraź sobie, że na skutek błędu do obydwu pójdzie wartość, np. "120a300".

http://php.net/manual/en/function.is-a.php + https://github.com/sebastianbergmann/phpunit/
Pisałem Ci Krzysztofie wiele razy, że jasne, iż tak można, ale to dodatkowa robota głupiego, sprawdzać przy każdej metodzie parametry wejściowe. W językach statycznie typowanych robi to za nas kompilator, dlatego jest wygodniej i bezpieczniej. I dlatego PHP nie.
Tomasz K.:
PHP nie narzuca określania typu, ale przecież można tego użyć:
function foo(float $bar) {}
Brawo Tomasz, chyba nigdy nie używałeś type hintingu w PHP. Dotyczy on tylko obiektów i tablic. A Twój przykład, przy podaniu 3.0 w parametrze, zwraca bardzo kuriozalny PHPowy błąd:
Catchable fatal error: Argument 1 passed to foo() must be an instance of float, double given
Możemy nawet poprawić kod, by zamiast floata przyjmował double, ale co wtedy...?
Catchable fatal error: Argument 1 passed to foo() must be an instance of double, double given
Pehap. Właśnie dlatego się nie nadaje ;)Jacek R. edytował(a) ten post dnia 08.01.13 o godzinie 23:20

konto usunięte

Temat: Koszt wykonania prostej strony www - szacunkowo

Type hints can not be used with scalar types such as int or string.

http://php.net/manual/en/language.oop5.typehinting.php

Tomasz popełnił błąd.

W PHP 5.4 nadal tak jest.
Rafał Hawrylak

Rafał Hawrylak staff software
engineer, TomTom

Temat: Koszt wykonania prostej strony www - szacunkowo

Dynamiczne typowanie jest cechą języka PHP. Nie jest efektem ubocznym, nie jest wadą. Jest cechą. Dobry programista wykorzysta ją na swoją korzyść i będzie w stanie szybko tworzyć nawet złożone systemy. Dobry programista napisze unit testy, które na wstępie będą sprawdzały poprawność danych wejściowych, w tym typ. Kiepski programista napisze jakiś kod, którego poprawność być może jakiś unit test zweryfikuje (o ile je w ogóle napisze). Dobry programista jest świadomy cech języka i wykorzystuje je należycie. Są jeszcze przeciętni programiści, którzy boją się wyjść poza bezpieczne języki, w których kod jest wstępnie weryfikowany przez kompilator. Boją się i część odpowiedzialności zrzucają na kompilator, kolejną część na unit testy (najlepiej pisane przez osobę trzecią).

Prowadzę pewien projekt w PHP (prywatnie). Jest to dość złożona aplikacja webowa. Cały projekt ogarniam sam. Gdybym miał go prowadzić, powiedzmy, w Javie, potrzebowałbym zespół 5-osobowy (dla złośliwych - płynnie posługuję się Javą), a przy tym wprowadzenie każdej zmiany trwało by dwa razy dłużej. Skąd takie informacje? - z doświadczenia.

Tak jak pisano - wiele systemów, dużych systemów, powstało w oparciu o PHP (Facebook, Allegro, Onet). Czy operują one na liczbach niecałkowitych? Zdecydowanie - chociażby Allegro.

Pytanie do przeciwników istnienia PHP: czy wszystkie języki z dynamicznym typowaniem są "be"? Perl, Bash, JavaScript, Python, Ruby? Czy nie należy ich stosować w poważnych systemach? A już na pewno nie w takich, gdzie są operacje na liczbach niecałkowitych? :]

Podsumowując:

kiepski programista (nie utożsamiałbym ze studentem, bo pomimo braku doświadczenia bywają łebscy studenci) - będzie programował wyłącznie w językach interpretowanych, gdzie kompilator nie będzie na niego krzyczał, że zrobił błąd.

przeciętny programista - używa języków kompilowanych, w obrębie których czuje się bezpiecznie. Używa wyłącznie "profesjonalnych" narzędzi, do tworzenia profesjonalnych systemów. Gardzi kiepskimi programistami, którzy używają kiepskich języków.

dobry programista - nie jest ograniczony do jedynych słusznych języków programowania. Ma przekrój przez wiele technologii. Ma w nich praktyczne doświadczenie. Zna cechy różnych języków. Wie, w jakich sytuacjach są zaletami, a w jakich wadami. Umiejętnie je wykorzystuje. Wybiera język w zależności od zastosowania.

PS. w c#.net wprowadzone zostało dynamiczne typowanie .. uuuups :] (http://msdn.microsoft.com/pl-pl/library/csharp-4-0--ty...Rafał Hawrylak edytował(a) ten post dnia 09.01.13 o godzinie 06:58
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Koszt wykonania prostej strony www - szacunkowo

Rafał Hawrylak:
Dobry programista napisze unit testy, które na wstępie będą sprawdzały poprawność danych wejściowych, w tym typ. Kiepski programista napisze jakiś kod, którego poprawność być może jakiś unit test zweryfikuje (o ile je w ogóle napisze). Dobry programista jest świadomy cech języka i wykorzystuje je należycie. Są jeszcze przeciętni programiści, którzy boją się wyjść poza bezpieczne języki, w których kod jest wstępnie weryfikowany przez kompilator. Boją się i część odpowiedzialności zrzucają na kompilator, kolejną część na unit testy (najlepiej pisane przez osobę trzecią).
Są jeszcze programiści, którym po prostu szkoda czasu na grzebanie się w g*** jakim jest PHP. Aktualnie pracuję praktycznie równocześnie przy 3 aplikacjach ASP.NETowych i jednej "pehapowej" i nie są to strony internetowe. I wierz mi, wiem o czym mówię.
Mój podział jest taki: są programiści, którzy mają czas i tacy, którzy go nie mają i potrzebują bardzo silnego wsparcia ze strony języka oraz IDE.
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Krzysztof Parjaszewski:
bezpośredni dostęp do systemu transakcyjnego ze strony internetowej? Toc to gorsze niż stosowanie floatów do sumowania pieniędzy.

Hmm, ok może nie do końca rozumiem problem. Tak - chciałbym móc zlecić wykonanie przelewu przez przeglądarkę, bez konieczności przychodzenia do siedziby banku. Na czym polega problem i dlaczego php technicznie temu nie podoła, a Java czy ASP.NET MVC podołają?

Jedno i drugie podoła, ale pisałeś o tym, że aplikacja webowa nie jest oddzielona od reszty systemu bankowego. Przecież pisałem, że widziałem w swoim czasie strony banków, za pomocą których można było dokonywać transakcji napisane w php.

konto usunięte

Temat: Koszt wykonania prostej strony www - szacunkowo

Rafał Hawrylak:
kiepski programista (nie utożsamiałbym ze studentem, bo pomimo braku doświadczenia bywają łebscy studenci) - będzie programował wyłącznie w językach interpretowanych, gdzie kompilator nie będzie na niego krzyczał, że zrobił błąd.

przeciętny programista - używa języków kompilowanych, w obrębie których czuje się bezpiecznie. Używa wyłącznie "profesjonalnych" narzędzi, do tworzenia profesjonalnych systemów. Gardzi kiepskimi programistami, którzy używają kiepskich języków.

dobry programista - nie jest ograniczony do jedynych słusznych języków programowania. Ma przekrój przez wiele technologii. Ma w nich praktyczne doświadczenie. Zna cechy różnych języków. Wie, w jakich sytuacjach są zaletami, a w jakich wadami. Umiejętnie je wykorzystuje. Wybiera język w zależności od zastosowania.

Ciekawe podsumowanie. Tylko zastanawia mnie dlaczego co niektórzy gloryfikują dany język a inny jest deprecjonowany a to nie o to tu chodzi. Jeżeli ktoś pisze kod bez zastanowienia i tu nie ważne czy język posiada statyczne czy dynamiczne typowanie danych, kod pisany jest w pośpiechu (bo klient aż przebiera nogami z niecierpliwości) to nawet i duże doświadczenie niewiele pomoże, ponieważ łatwo o błędy. Oczywiście pewnego typu oprogramowanie z pewnych względów lepiej napisać np. w języku Python, z innych względów w C++ ale to inna sprawa.

Tym czytelnikom którzy sądzą że są tak dobrzy i w negocjacjach z klientami twierdzą że są profesjonalistami polecam bezpłatne badanie Codility. Jeśli komuś uda się rozwiązać jeden z prezentowanych tam problemów bezbłędnie to gratuluję umiejętności. Ten test jest pod jednym względem bardzo dobry. Sprawdza umiejętność radzenia sobie z napisaniem określonej funkcji i to w określonym czasie a to chyba jest świetny test dla tych, którzy twierdzą że są w stanie coś wykonać dość szybko.
Jacek R.

Jacek R. programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Rafał Hawrylak:
Dynamiczne typowanie jest cechą języka PHP. Nie jest efektem ubocznym, nie jest wadą. Jest cechą.

Nikt nie mówi, że jest.
Pytanie do przeciwników istnienia PHP: czy wszystkie języki z dynamicznym typowaniem są "be"? Perl, Bash, JavaScript, Python, Ruby? Czy nie należy ich stosować w poważnych systemach? A już na pewno nie w takich, gdzie są operacje na liczbach niecałkowitych? :]

Ależ nikt nie jest jakimś przeciwnikiem PHP, ja tylko piszę, że nadaje się do czegoś bardziej, a do czegoś mniej. Używam tego języka, uwielbiam dynamiczne typowanie, ale chcę je używać wtedy, kiedy warto, a nie być zmuszonym zawsze je mieć ze wszystkimi jego zaletami oraz wadami.
PS. w c#.net wprowadzone zostało dynamiczne typowanie .. uuuups :] (http://msdn.microsoft.com/pl-pl/library/csharp-4-0--ty...

No i super, jest wybór w obrębie jednego języka i jednej technologii. Nadal nie czaję Twojego podejścia. Nikt tu nie neguje typowania dynamicznego per se, negowane jest tylko przy konkretnym typie projektu, jakiejś hipotetycznej sytuacji. A i tak, np w MVC ASP.NET dynamic jest używane ciągle, między innymi przy przekazywaniu danych z kontrolera do widoku przez ViewBag. Ale i tak lepiej i bezpieczniej jest robić strongly-typed widoki, używając view-modeli.

Temat: Koszt wykonania prostej strony www - szacunkowo

Rafał Hawrylak:
PS. w c#.net wprowadzone zostało dynamiczne typowanie .. uuuups :]

:)

.... <screeny dotyczące vara>Adrian Olszewski edytował(a) ten post dnia 12.01.13 o godzinie 20:05
Jacek R.

Jacek R. programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Co próbujesz udowodnić? Ten kod na screenach to jakaś żenada - pomylenie inferencji typów z typowaniem dynamicznym.

Temat: Koszt wykonania prostej strony www - szacunkowo

Może przyjrzyj się jeszcze raz, w kontekście dyskusji kilka postów wcześniej, zanim osądzisz i to w takich słowach :)

Wiem, co to typowanie dynamiczne. Chodzi o kontrolę typów na etapie pisania kodu. Różnica między COM VARIANT (jeśli ktoś to jeszcze pamięta) a var. Nie przekażesz do metody "ABCD" w miejsce inta, ani nie wyciągniesz pierwiastka na "ala ma kota". Nie użyjesz "vara" jako parametru ani wartości zwracanej. Podobnie nie zrobisz czegoś takiego:
var i = 10;
i = "Ala ma kota";


O to mi chodziło. Var nie utrudnia kontroli typów na wczesnym etapie produkcji. A z cytowanej wypowiedzi wynikało coś w rodzaju: "patrzcie, MS też tak zrobił, wy też w .NET macie dynamiki, więc po co ta nagonka na PHP". Otóż nie. MS zrobił to inaczej.

http://stackoverflow.com/questions/11968498/how-can-va...
http://php.net/manual/en/language.types.type-juggling.phpAdrian Olszewski edytował(a) ten post dnia 09.01.13 o godzinie 11:49
Jacek R.

Jacek R. programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Adrian Olszewski:
Może przyjrzyj się jeszcze raz, w kontekście dyskusji kilka postów wcześniej, zanim osądzisz i to w takich słowach :)
Pozostanę przy tym, że kompletnie nie wiesz o co chodzi i nie masz wiedzy o typowaniu dynamicznym w C#. Wnioskuję na podstawie tego posta właśnie.
Wiem, co to typowanie dynamiczne. Chodzi o kontrolę typów na etapie pisania kodu. Różnica między COM VARIANT (jeśli ktoś to jeszcze pamięta) a var.
Bez sensu. Mylisz varianta z inferencją typów (var) z dynamicznym typowaniem (dynamic). Dla variant najbliższym w C# jest po prostu typ object. Inferencja typów wyciąga typ na etapie kompilacji na podstawie tego, co jest po prawej strony operatora przypisania. A dla typowania dynamicznego, które jest resolvowane na etapie runtime, używa się dynamic.
Nie przekażesz do metody "ABCD" w miejsce inta, ani nie wyciągniesz pierwiastka na "ala ma kota". Nie użyjesz "vara" jako parametru ani wartości zwracanej. Podobnie nie zrobisz czegoś takiego:
var i = 10;
i = "Ala ma kota";

Jak to nie? Trzeba użyć dynamic, a nie var. Po prostu nie znasz różnicy między nimi, skoro tak piszesz.

Obrazek
Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Koszt wykonania prostej strony www - szacunkowo

Jacek R.:
Ależ nikt nie jest jakimś przeciwnikiem PHP, ja tylko piszę, że nadaje się do czegoś bardziej, a do czegoś mniej.
Dokładnie! PHP np. świetnie się nadaje do tworzenia CMSów. Choć, nawiasem mówiąc, z pewnych źródeł wiem, że istnieje czarna lista serwisów opartych na Joomli, do których bardzo łatwo się włamać. :-)
A i tak, np w MVC ASP.NET dynamic jest używane ciągle, między innymi przy przekazywaniu danych z kontrolera do widoku przez ViewBag.
Oj. Kilka razy się potknąłem na tym...
Ale i tak lepiej i bezpieczniej jest robić strongly-typed widoki, używając view-modeli.
... i teraz staram się korzystać wyłącznie z tego.

Temat: Koszt wykonania prostej strony www - szacunkowo

Jacek R.:
Mylisz varianta z inferencją typów (var) z dynamicznym typowaniem (dynamic). Dla variant najbliższym w C#

Ech... Masz rację, mój błąd, palnąłem głupotę... Praktycznie nie byłem świadomy istnienia dynamica, choć przecież miałem go cały czas przed oczami w ASP MVC (ViewBag)... wiedziałem tylko o "varze" (przy okazji LINQ), stąd się zasugerowałem, że o to niego chodzi. Cóż, przepraszam. Przy rozjaśniłeś mi mroki niewiedzy - dzięki :)Adrian Olszewski edytował(a) ten post dnia 12.01.13 o godzinie 20:08
Jakub C.

Jakub C. frontend developer

Temat: Koszt wykonania prostej strony www - szacunkowo


Obrazek

konto usunięte

Temat: Koszt wykonania prostej strony www - szacunkowo

Czytając ten wątek można by dojść do wniosku że istnieje gdzieś taki świat równoległy w którym mimo że istnieją języki dynamicznie typowane wszyscy uznali że najlepiej strony WWW pisać w C.

:-)

Przy okazji - po co kaleczyć język polski jakimś cudakiem typu "inferencja" skoro mamy zwyczajne polskie słowo "wnioskowanie".
Jacek R.

Jacek R. programista

Temat: Koszt wykonania prostej strony www - szacunkowo

Piotr L.:
Przy okazji - po co kaleczyć język polski jakimś cudakiem typu "inferencja" skoro mamy zwyczajne polskie słowo "wnioskowanie".

Inferencja to słowo z żargonu informatycznego, używane przez ludzi z branży, by się rozumieć. Tak samo jak kompilacja, dereferencja, etc... dla nich też będziesz szukać zamienników? A poza tym (a może przede wszystkim?), jest ono ze słownika języka polskiego i nazywanie go "cudakiem" to chyba tylko wyraz ignorancji ;) http://sjp.pwn.pl/slownik/2466166/inferencja

Ale fakt, wiem, istnieją nadgorliwcy, którzy nie "commitują do repo", tylko "powierzają do magazynu". Oni też nie "debuggują", tylko "odpluskwiają". Smutno mi z tego powodu - oni to dopiero wymyślają potworki, które są kompletnie niezrozumiałe...

BTW (dla Piotra: PO): skoro zeszliśmy na takie dziwne rejony, oznacza to, że oficjalnie temat (i jego rozwinięcia) się wyczerpał :)Jacek R. edytował(a) ten post dnia 09.01.13 o godzinie 23:38
Marek Domagała

Marek Domagała właściciel, akia

Temat: Koszt wykonania prostej strony www - szacunkowo

ano... oprócz tego, że "poszłem" jest już od pewnego czasu oficjalnie O.K., to chyba (nareszcie) koniec ;-)Marek Domagała edytował(a) ten post dnia 10.01.13 o godzinie 00:09

Następna dyskusja:

Zlecenie wykonania strony www




Wyślij zaproszenie do