Diskuze: Rozdíly mezi C# a PHP

PHP PHP Rozdíly mezi C# a PHP American English version English version

Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

C# a PHP jsou hlavně úplně rozdílné jazyky a každý je k nečemu jinému.

 
Odpovědět  ±0 7.1.2014 22:20
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

U jazyků C# a PHP naopak vidím velkou podobnost. Ty dva jazyky se zas tak moc neliší.

Nahoru Odpovědět  -4 7.1.2014 22:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Já to myslím z pohledu výsledných věcí k čemu ty jazyky jsou. Jestli porovnáváš C# jako ASP a PHP, tak je to pak něco jiného.

 
Nahoru Odpovědět 7.1.2014 22:24
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

"U jazyků C# a PHP naopak vidím velkou podobnost. Ty dva jazyky se zas tak moc neliší."

Uh, to bylo myšleno vážně?

Nahoru Odpovědět  +2 7.1.2014 22:31
:)
Avatar
Alesseon
Člen
Avatar
Odpovídá na Jan Vargovský
Alesseon:

Takhle, co mi nabídne víc? Co je používanější? A hlavně v jakých oblastech? Co je rychlejší? Co se dá lépe rozšířit o další dodatky (myslím něco jako moduly, v php)? Nebo jestli je toho tam tolik že to asi není potřeba, nevím..
O podpoře se asi ani bavit nemusíme, to vím jak na tom je v česku C#, bídně, tedy povětšinou co vidím na hostinzích..

Nahoru Odpovědět 7.1.2014 22:33
This is a bad day to be human...
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Alesseon
Jan Vargovský:

PHP ti nabídne PHP a C# ti nabídne C#. Je tu o obou jazycích napsáno nejméně stovka článků a dalších 3oo threadů se stejným podnětem.

Jak můžeš říct, že je na tom C# bídně, když vlastně ani nevíš k čemu ten jazyk je a neumíš napsat ani hello world ?

 
Nahoru Odpovědět  +1 7.1.2014 22:41
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Jan Vargovský
Milan Gallas:

On myslel podporu ASP na free webhostinzích pokud jsem to pochopil správně.

 
Nahoru Odpovědět 7.1.2014 22:46
Avatar
Alesseon
Člen
Avatar
Odpovídá na Jan Vargovský
Alesseon:
  1. Náhodou hello world umím, a některé věci jsou podobné s C, a ty některé podfunkce v těch proměnných, myslím ty jakoby i.tostring, a podobně, ty taky zvládám... Mě zajímá názor i někoho jiného, jeden popisuje že je php skvělý jazyk a druhý popisuje že C# je skvělý jazyk, tak jak se mám dozvědět který je nezávisle na programátorovi výhodnější? Napadlo mě jen tohle, zeptat se ostatních, co si o tom myslí, a nejlépe těch kteří znají jak tenhle tak ten druhý, omlouvám se že jsem tě tou otázkou obtěžoval, ale číst si to nemusel..

A ano, opravdu jsem myslel podporu na hostinzích, ne samotný jazyk, nevím jak to s ním je, ale vím že běží jen pod windows...
A s těmi hostingy, nevím nevím, moc jsem to nezkoumal, ale stále o tom pořád někde čtu jak si někdo stěžuje že s podporou C# na webhostinzích jsme na tom v česku celkem bídně, tak je dobré to vědět od někoho dalšího..

Nahoru Odpovědět 7.1.2014 23:06
This is a bad day to be human...
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Alesseon
Jan Vargovský:

Mě zarazilo to, že porovnáváš C# a PHP. Každý jazyk má nějaké tostring, proměnné, objekty... prostě nějaké paradigma, podle kterého se v tom jazyku programuje.

Nejde říct který je výhodnější. Každý jazyk má něco jiného, hlavně porovnávat tyto 2 je naprostá hloupost. PHP běží někde na serveru a nejčastěji se v něm dělají dynamické weby. C# běží pod nějakým frameworkem a můžeš v něm dělat prakticky cokoliv. V PHP nedělám, ale běží na straně serveru, zatím co k C# ti stačí .NET framework a to je vše, co potřebuješ. V C# si můžeš udělat třeba dektopovou aplikaci, velký informační systém, web, službu nebo taky aplikaci na mobil nebo tablet.

Vezmi si, jak je ASP mohutný nástroj, samotné weby od MS na něm běží a ty to srovnáváš s PHP, které umí kde kdo. (Myslím i ty, kteří říkají, jak něco umí a přitom neumí nic. Ale snaží se o to, takže to má nějakou větší komunitu)

K tomu taky patří hostingy, ASP není zas tolik tolik rozšířené. Nejčastěji se dělají malé weby a když ho máš dělat dynamicky, tak ho uděláš v PHP nebo nějakém frameworku založený na PHP. A teď si srovnej kolik máš malých webů v PHP a kolik v ASP. Někteří s PHP začínají jako první jazyk, začít s ASP jako první programovací jazyk by byla sebevražda :)

Btw, to, proč je ASP hostingů málo je možná i proto, že to běží jen pod windowsáckými servery (podívej se na Linux vs Win Server v %) (Ano, je tu Mono, ale to nepodporuje full ASP.NET)

Editováno 7.1.2014 23:20
 
Nahoru Odpovědět  +1 7.1.2014 23:17
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Ano, myslel jsem to vážně. Syntaxe C# a PHP je skoro stejná, oba původem vychází z C a jsou to objektové jazyky. Metody ToString a __toString dělají to samé.

Rozhodně jsou si ty dva jazyky podobnější, než např. Lisp vs. Prolog vs. XSLT.

Nahoru Odpovědět  +1 8.1.2014 1:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

PHP běžně používám pro vytváření aplikací na desktopu. Kde jsi přišel na to, že se k tomuto účelu nedá použít?

Nahoru Odpovědět 8.1.2014 2:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Kit
Zdeněk Pavlátka:

A z diskuze o historii se opět staly dohady o jazycích... Ale souhlasím, že PHP a C# jsou si podobné.

Nahoru Odpovědět  +3 8.1.2014 6:46
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Podobná si je Java a C#, ale podobnost C# a PHP končí někde v tom, že jejich syntaxe vychází z C a jsou oba imperativní.

Spousta syntaxe se dost liší a každý z nich funguje úplně jinak pod pokličkou, takže říct, že jsou podobné může jen někdo, kdo je viděl jen z rychlíku.

Nahoru Odpovědět  ±0 8.1.2014 10:41
:)
Avatar
Alesseon
Člen
Avatar
Alesseon:

Super, díky přesně to jsem chtěl vědět, co tím získám navíc oproti PHP...

Nahoru Odpovědět 8.1.2014 15:52
This is a bad day to be human...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Tohle může napsat jen ten, kdo viděl ostatní programovací jazyky jen z rychlíku :)

Například Fortran se od C syntakticky liší na první pohled dost výrazně, uvnitř je prakticky stejný jako jazyk C. Dokonce mají společný kompilátor.

Editováno 8.1.2014 18:02
Nahoru Odpovědět 8.1.2014 17:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Že některé jiné jazyky jsou ještě rozdílnější neznamená, že C# a PHP jsou jazyky podobné.

Nahoru Odpovědět  -1 8.1.2014 20:04
:)
Avatar
Odpovídá na Alesseon
Luboš Běhounek (Satik):

PHP je jazyk určený víceméně jen pro tvorbu webů, C# se hodí i pro desktopové aplikace, desktopové hry.

Řekl bych, že PHP je o něco jednodušší pro začátečníky - v proměnné můžeš mít cokoliv, (v C# to sice jde v podstatě taky, ale není to běžný postup, ale zase je v PHP větší šance zanesení chyby), nemusíš používat OOP (V C# nenacpeš funkční kód mimo třídu, v PHP nemusíš pro základy OOP znát vůbec, protože tam spousta staršího kódu zbyla z dob, kdy PHP třídy neumělo).

PHP je pomalejší, je to interpretovaný jazyk, i když už existují i kompilátory pro PHP, ale na nativní kód (C#) to pořád nemá.

Nahoru Odpovědět  -2 8.1.2014 20:12
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

V PHP se dají vytvářet nejen HTML, ale i DOC, XLS, PDF, JPG, PNG a spoustu dalších souborů. Rychlost jejich generování si nezadá s C#. Zřejmě s PHP neumíš dělat.

V C# také nemusíš používat OOP. Běžně vídám imperativně napsané programy v C#, které s OOP nemají nic společného.

Nahoru Odpovědět  -1 8.1.2014 20:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Ano, běžně používám pro tvorbu tebou vyjmenovaných dokumentů program napsaný v PHP :)

Samozřejmě, že to umí, ale většinou to využiješ jen pro tvorby reportů na nějakém webu apod.

Rychlost PHP si nezadá s C#? Možná když využíváš nějaké knihovny napsané v jiných jazycích, ale pokud máš nějaký výkonný kód v PHP, tak bude na C# ztrácet.

OOP nemusíš používat skoro v žádném jazyce, když nechceš, ale v PHP je to mnohem jednodušší než v C#, protože i v běžném PHP je spousta často používaných funkcí, které k žádnému objektu nepatří.
V C# skoro každá funkce má svoji odpovídající třídu, takže musíš aspoň umět tu třídu vytvořit apod.

Nahoru Odpovědět  ±0 8.1.2014 21:09
:)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

HTML můžeš vygenerovat snad ve všem, vždyť je to jen text. Nevím proč pokaždé musíš argumentovat totálně nesmyslně.

Editováno 8.1.2014 21:21
 
Nahoru Odpovědět  +3 8.1.2014 21:20
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

V PHP se toho výkonného kódu moc nepíše a když se zbavíš podmíněných větví a cyklů, tak je PHP i rychlé. Chce to jen nedělat ty zbytečné cykly a větvení.

V C# nemusíš umět třídu vytvořit. Stačí jen vědět, že zdroják musí začínat slovy "class Program". Zbytek může být procedurál. Nikdo tě v C# k OOP vůbec nenutí, můžeš používat běžné procedury a funkce a vystačíš si. Samozřejmě jak na co.

Nahoru Odpovědět  -1 8.1.2014 21:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Všimni si: "... nejen HTML,..."

Nahoru Odpovědět 8.1.2014 21:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Dobře, ale pořád to je jak kdybys porovnával PowerShell a Batch. Ty dva, se alespoň na jednom schodnou. Zatím co C# a PHP ne. To co říkáš bys mohl říct o každém jazyku. Java tě snad nutí k tomu co říkáš ?

Když se zbavíš cyklů a podmínek, co ti pak zbyde ? Rovnou to už můžu napsat přímo a nemusím chtít po PHP, aby mi vytvořilo soubor a napsalo do něj string, co jsem dal do PHP a pak zavolal f-ci, na uložení do souboru.

 
Nahoru Odpovědět  +1 8.1.2014 22:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Když se zbavím cyklů a podmínek, zbyde mi krásný PHP kód bez cyklů a větvení. V PHP totiž na rozdíl od C# z velké části nejsou potřebné. Používají je hlavně programátoři zvyklí na jazyky odvozené z C, protože to neumí udělat jinak.

Jistěže jsou mezi PHP a C# rozdíly, ale programy jsou většinou poměrně snadno převoditelné. Jen je C# o něco ukecanější.

Nahoru Odpovědět  -3 8.1.2014 22:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Takže nikdo vlastně neumí programovat, protože využívá podmínky a cykly.

 
Nahoru Odpovědět  +1 8.1.2014 22:15
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Jan Vargovský
Milan Gallas:

Bez těch cyklů, by to při větší námaze ještě šlo. Ale programovat bez podmínek, to už člověk musí být jinde, aby to zvládal.

 
Nahoru Odpovědět  +1 8.1.2014 22:18
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Kite, zkus někdy naprogramovat něco složitějšího, než čtení hodnot z DB a jejich vypsání na obrazovku, třeba zjistíš, že se bez cyklů a podmínek při programování čehokoliv složitějšího neobejdeš a nebudeš psát takovéhle hovadiny... :)

Nahoru Odpovědět  ±0 8.1.2014 22:18
:)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Milan Gallas
Jan Vargovský:

Když to vezmu fakt zhurta, tak v cyklu máš taky podmínku :)

EDIT: Jo tys to psal naopak, tak pak beru z5 :)

Editováno 8.1.2014 22:21
 
Nahoru Odpovědět 8.1.2014 22:19
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

Čistě ze zvědavosti by mě zajímalo jak se dají následující úlohy dělat bez podmínek a cyklů

  1. Bubble sort
  2. například Algoritmus vlny

3)Update všech objektů (Člověk) v určité kolekci a podle toho zda má property Pohlaví(typu enum) nastavenou na Muž tak vypsat "Jsem muž" a když Žena vypsat "Jsem žena"

Nechci vyvolávat hádky, spory ani nijak provokovat, čistě ze zvědavosti :)

Nahoru Odpovědět  +2 8.1.2014 22:22
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Jan Vargovský
Milan Gallas:

měl jsem namysli funkce array_map, array_reduce(a další). Pak v mnoha případech nepotřebuješ použít klasické cykly a máš přehledný kód.

 
Nahoru Odpovědět  +1 8.1.2014 22:24
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Jan Vargovský
Milan Gallas:

Dále jsou zajímavé metody: array_filter() a str_repeat(). Prostě v tomto směru to má php dobře udělaný :D

Editováno 8.1.2014 22:29
 
Nahoru Odpovědět  +1 8.1.2014 22:29
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Milan Gallas
Jan Vargovský:

V PHP nedělám, takže mi to nic neříká :) ale stejně, pořád se to interně chová asi jako cyklus, ne ?

V C# Taky můžeš napsat IList.ForEach( Action<T>) a další věci, co sice nevypadaj jak cyklus, ale cyklus to je.

Editováno 8.1.2014 22:31
 
Nahoru Odpovědět  +1 8.1.2014 22:30
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Jan Vargovský
Milan Gallas:

Ale tak to nejspíš kit myslel. Prostě odstraníš z kódu svoje cykly a budeš používat výše zmíněné věci. Kód je poté takový hezčí a zápisy jsou kratší.

 
Nahoru Odpovědět 8.1.2014 22:38
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

1.

asort($data);

Nebudu implementovat něco, co už je součástí jazyka. Bubble sort se dá udělat rekurzí, ale moc užitečné by to asi nebylo.
2. rekurzí
3.

<?php
$kolekce = array(
    'Adam' => "Muž",
    'Božena' => "Žena",
    'Cyril' => "Muž",
    );
echo implode("\n", array_map(function($osoba, $pohlavi) {
    return "$osoba je " . ($pohlavi=="Muž" ? "muž" : "žena");
}, array_keys($kolekce), array_values($kolekce)));

Podmínka zde samozřejmě je, ale není zde větvení ani cykly.

Editováno 8.1.2014 22:43
Nahoru Odpovědět  +1 8.1.2014 22:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Milan Gallas
Jan Vargovský:

Nevím jestli je annonymní metoda přehlednější než pár podmínek, které v tom stejně budeš muset použít. Ofc můžeš použít klauzuli where ... Wait. To nemá cenu, tohle neobkecá.

 
Nahoru Odpovědět  +1 8.1.2014 22:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Nevím jak by Call Stack vypadal, když bys měl kolekci o třeba 1000 prvcích. Dostal bys vyjímku a můžeš zkoušet dál.

 
Nahoru Odpovědět 8.1.2014 22:44
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

Ok díky :) Jasně řazení si také nebudu psát když je součástí jazyka. Ale je to odvážné tvrzení že lze psát bez cyklů a podmínek, při větších aplikacích, kde je hodně algoritmů (zejména hry) se cyklům a podmínkám jen tak vyhnout nedá (netvrdím že to možné není)

Editováno 8.1.2014 22:45
Nahoru Odpovědět 8.1.2014 22:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Luboš Běhounek (Satik):

Mě by zajímalo, jak Kit píše algoritmy, na které v jazyku nejsou už hotové funkce.

Nejspíš nijak, protože to ještě nikdy nedělal.

Nahoru Odpovědět  +2 8.1.2014 22:55
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Naprosto v pohodě. Nacpal jsem do toho 5 M lidí a zvládlo to.

Nahoru Odpovědět 8.1.2014 22:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Základním pravidlem, které jistě znáš, je nevynalézat kolo. Takže místo šíření FUD by sis raději měl otevřít manuál.

Nahoru Odpovědět 8.1.2014 22:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Alesseon
Člen
Avatar
Alesseon:

Úplně bez větvení a cyklů to určitě taky nepůjde, některé věci to prostě vyžadují, ale spousta kódu by se určitě dala sepsat kratší a přehlednější cestou, o tom nepochybuji...

Kit: Jen by mě tedy zajímalo jak bych mohl pomocí PHP jednodušší cestou vypsat hodnoty z databáze, když jich je třeba větší množství (dejme tomu 10), tak abych je přiřadil postupně do pole bez cyklu? Zatím jsem buď nenarazil na funkci která by to uměla nebo mě nenapadá jednodušší cesta.

Nahoru Odpovědět 8.1.2014 23:06
This is a bad day to be human...
Avatar
Alesseon
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Alesseon:

Tím lépe ne? Potom ty funkce budou implementované v interpreteru, a budou tudíž rychlejší, protože jsou kompilované pokud se nemýlím ne?

//EDIT: Myšleno tak jako že našel a dokázal využít již hotové funkce interpreteru, a zatím nepotřeboval nikdy napsat vlastní protože vždy nějakou cestu našel

Editováno 8.1.2014 23:08
Nahoru Odpovědět  +1 8.1.2014 23:07
This is a bad day to be human...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Interně to samozřejmě cykly jsou, ale běží už na úrovni strojového kódu, tedy podstatně rychleji. V C# jsou rychlé i ty cykly, takže u něj už k nějakému výraznému zlepšení nedojde, ale pro PHP to představuje významné přiblížení k rychlosti kompilovaných jazyků.

Nahoru Odpovědět 8.1.2014 23:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět 8.1.2014 23:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Znovuvynalézám kolo?

Jasně, můžu všechny algoritmy jen postahovat a slepit dohromady a možná nebudu muset žádný cyklus ani použít, jako to děláš ty.
U jednoduchých aplikací, které lepíš ty, ti to stačí, protože hotové řešení už vždy najdeš, ale až budeš psát něco méně obvyklého, narazíš na problém, protože google nepomůže a bez cyklů a podmínek to napsat nepůjde.

Mimochodem, algoritmus vlny rekurzí - ano, rekurze se na tomhle algoritmu někdy ukazuje, ale jsou i efektivnější způsoby, než tohle plácání výkonem...

Nahoru Odpovědět  +2 8.1.2014 23:11
:)
Avatar
Odpovídá na Alesseon
Luboš Běhounek (Satik):

Ono toho ty jazyky umějí spoustu, ale stejně při psaní něčeho složitějšího občas narazíš na něco, co ještě ten jazyk nebo jeho knihovny nijak jednoduše neumí.

Nahoru Odpovědět 8.1.2014 23:12
:)
Avatar
Alesseon
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Alesseon:

S tím počítám, že jsem ještě neobjevil plné možnosti, jsem zvyklý na styl C, nebo Assembleru, co nemáš napiš si, a co nemáš? Prakticky všechno...
Nic není neomezené, vždy jednou dojdou možnosti, každopádně pokud se tak stane tak se tomu vyhnout moc nedá... Leda si napsat modul pro PHP a tam to implementovat, a vyhnul by jsi se použitím toho, ale nevím do jaké míry je dobré používat moduly v php.

Nahoru Odpovědět 8.1.2014 23:20
This is a bad day to be human...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Raději využiji arzenál, který už je součástí knihoven jazyka, než abych stahoval nějaké frameworky.

Pokud budu chtít vygenerovat tabulku ASCII, tak se nejspíš bez cyklu neobejdu (i když...), ale na zpracování seznamů a tabulek cykly opravdu nejsou potřebné.

Mentální bloky skutečně bývají značné. Velmi často vidím

mysql_connect(...) or die(...)

ale ještě nikdy jsem neviděl

mysql_connect(...) or throw new Exception(...)

Proč?

Nahoru Odpovědět 8.1.2014 23:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Alesseon
Kit:

Zapomněl jsem dodat, že PDO mi celý SELECT dodá jako dvourozměrné pole, seznam slovníků nebo seznam objektů dle mého přání. Stačí místo metody fetch() použít metodu fetchAll().

Nahoru Odpovědět 8.1.2014 23:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Jasně, já taky ten arzenál využívám, ale jak třeba bez cyklu proiteruješ všechny pixely bitmapy (třeba když chceš spočítat počty výskytů barev), aby ti zůstal rozumný výkon?

To možná vyřešíš foreachem, pokud se ti podaří z bitmapy nějak vytřískat IEnumerable, ale když budeš řešit něco, kde do těch pixelů budeš chtít i zapisovat?

S tím PHP kódem netuším, s PHP jsem skončil někde před 4 roky a moc jsem ho neovládal.

Nahoru Odpovědět 8.1.2014 23:31
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Přes foreach se dá v pohodě i zapisovat, ale nedělá se to. Pokud to jen jde, tak se všemi proměnnými zacházím tak, jako kdyby byly immutable.

Čtení bitmapy v PHP není zrovna nejběžnější činnost. Pokud bych přece jen potřeboval spočítat počty výskytů barev, použil bych Imagick::getImageHistogram(). Bez cyklu.

Nahoru Odpovědět 8.1.2014 23:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

V PHP možná (tam je možné všechno :D ), ale v C# by jsi do bitmapy přes foreach zapisovat nemohl.

Nevím, jestli pořád nechápeš moji narážku, nebo se jen vyhýbáš odpovědi, ale mě je fuk, jakou by jsi na to použil funkci a knihovnu, ale jak by jsi to řešil, kdyby to byla nějaká podobná funkcionalita, pro kterou zatím žádná knihovna není - třeba kdyby jsi u té bitmapy chtěl dělat něco jiného - třeba spočítat červené pixely...

Nahoru Odpovědět 9.1.2014 0:07
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

No co? Tak bych použil cyklus. Spokojen? Fakt si myslíš, že nedokáži napsat vlastní algoritmus, který nemá nikdo jiný?

(stejně bych to potajmu přepsal na některou existující funkci :D

Editováno 9.1.2014 0:20
Nahoru Odpovědět  +1 9.1.2014 0:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Zrovna se mi do pazour dostalo tohle:

$pole = explode(':', $stringSeSouradnicemi);
$x = $pole[0];
$y = $pole[1];
$z = $pole[2];

Myslíš si, že bych to takhle napsal? Kdepak. Hezky bych to zkrátil na jeden řádek a proměnnou $pole bych úplně vypustil, protože dále už nebyla použita. Na takových zápisech se pak získávají zpět ty tiky ztracené interpretováním.

Nahoru Odpovědět 9.1.2014 0:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
petrph
Člen
Avatar
petrph:

Otázka je co chceš vlastně srovnávat-jestli pouze základní syntaxi jazyka (těch základních příkazů je obvykle pár)- a nebo co všechno v tom jazyku můžeš dokázat-což je ale pak otázka přídavných knihoven či jiných prostředků, které si ale musíš nastudovat zvlášť.
Abych dal u těchto dvou jazyků takový hezký příklad
V C# nemůžeš napsat ani jednoduchý uživatelský výstup (ono obligátní "Hello world") -i přitom už musíš volat objekt knihovny .NET.
Zatímco přímo v PHP sice totéž napsat můžeš ale je to tak primitivní a neprofesionální, že to musíš doplnit díky dobré znalosti HTML,popřípadě nějakého frameworku..

 
Nahoru Odpovědět 9.1.2014 12:19
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Vidím, že tě to nijak nezaujalo, ale stejně napíšu řešení:

list($x, $y, $z) = explode(':', $stringSeSouradnicemi);

Tyto konstrukce odlišují PHP od C#. Měl bys být spokojen, protože jsem tvrdil, že jsou to podobné jazyky a přitom uvádím rozdíly.

Někteří programátoři však takové zápisy neuznávají. Zřejmě proto, že nemají ekvivalent v jejich oblíbeném jazyku.

Nahoru Odpovědět  +1 9.1.2014 17:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Jak jsem psal, v PHP jsem dělal jen lehce a naposled nekde pred 4 roky, takze konstrukci nebo funkci list neznam :)

Nahoru Odpovědět 9.1.2014 17:58
:)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Napsal bych si nato objekt a pak by to šlo :)

 
Nahoru Odpovědět  +1 9.1.2014 18:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

$stringSeSourad­nicemi bys tomu objektu předhodil do konstruktoru a pak dělal getX(), getY(), getZ()? Děkuji, nechci. Nebo jsi to myslel jinak?

Nahoru Odpovědět 9.1.2014 18:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

V podstatě takhle:

int[] p = "2;4;6".Split(';').Select(n => int.Parse(n)).ToArray();
var point = new { X = p[0], Y = p[1], Z = p[2] };

Je to dlouhé, ale na 2 řádky bych takhle vytvořil i kolekci těch pointů, což už by šlo.

 
Nahoru Odpovědět 9.1.2014 19:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Než takhle, tak raději bych dopsal navíc jeden konstruktor k nějaké své třídě Point a použil to takto:

Point point = new Point('2;4;6');
Nahoru Odpovědět  +2 9.1.2014 19:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Kit
Jan Vargovský:

Pak bys přehodil parsování do třídy. Každá verze má svoje +.

 
Nahoru Odpovědět 9.1.2014 19:31
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jan Vargovský
Kit:

Uvnitř třídy je dostatek prostoru na ošetření všech možných chybových stavů. Ve volajícím kódu na to prostor není.

Nahoru Odpovědět 9.1.2014 19:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Alesseon
Člen
Avatar
Odpovídá na petrph
Alesseon:

No, ano, hlavně chci srovnat možnosti, a vědět co je pro mě výhodnější, zatím se pro mě ukázalo výhodnější PHP, ale třeba C# by se hodně dalo využít na aplikace pro windows, s tím počítám a proto se ptám na tom jaké v tom jsou rozdíly oproti PHP právě ve webové sféře...

Nahoru Odpovědět 10.1.2014 18:08
This is a bad day to be human...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Alesseon
Petr Nymsa:

Prostě jak bylo řečeno už, záleží co chceš dělat. Pokud převážně webové aplikace - PHP, pokud aplikace pro .NET platformu (Windows Desktop, Windows Phone, ASP .NET (web) či Windows 8 (MODERN UI) tak C#.

Nahoru Odpovědět 10.1.2014 19:00
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Alesseon
Zdeněk Pavlátka:

C# tě nenechá si nic dělat podle svého, ale u objektů toho nabízí víc.

Nahoru Odpovědět  -2 10.1.2014 19:23
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Jiří Gracík:

Jak jsi na to prosímtě přišel?

Nahoru Odpovědět  +1 10.1.2014 19:28
Creating websites is awesome till you see the result in another browser ...
Avatar
petrph
Člen
Avatar
Odpovídá na Alesseon
petrph:

Což je ještě horší. Protože pokud budeš chtít dělat ve webové sféře, tak to není otázka C# samotného, ale ASP.NET ve které ten web tvoříš. A ta technologie je sdosti složitá.
Ale asi bych ti odpověděl s pomocí křivky učení - když se začneš učit PHP, tak se tím pádem ihned začneš rychle učit i tvorbu dynamických webů (protože bez toho nemá PHP program smysl). Kdežto když začneš s C# tak tomu věnuješ třeba několik měsíců-čistě syntaxi toho jazyka (tedy na bázi jednoduchých konzolových prográmků)a až potom začneš studovat ten ASP.NET abys mohl tvořit dynamické stránky. Takže se můžeš rozhodnou sám..
A vlastně ještě jedna věc-pokud to tu ještě někdo nenapsal.Záleží taky na tom jak a pro koho budeš chtít pracovat. Pokud chceš pracovat samostatně a vytvářet sám pro zákazníky dynamické weby a vůbec weby,tak na většině středních i menších webů běží Apache s modulem PHP. Kdežto Microsoft IIS Web Server na kterém běží ASP.NET používají spíš velké firmy pro velké zakázky-tam by tě třeba líp zaplatili se znalostí C# a ASP.NET. }Ale neplatí to úplně-i spousta větších firem vyvíjí weby v PHP..)
Jinak samozřejmě bod 2 - s PHP se v konzolových aplikacích neškrtneš.
TAkže takhle to prosím posuzuj, není důležité v jakých podrobnostech se od sebe liší-obvykle lze s oběma docílit (na webu) podobných výsledků, podstatné je pro který se rozhodneš - čeká tě pár měsíců učení abys to mistrně zvládnul..

 
Nahoru Odpovědět  ±0 10.1.2014 20:17
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět  -1 10.1.2014 20:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na petrph
David Čápka:

Nechtěl jsem se diskuze účastnit, ale toto jsou opravdu nepravdy. ASP.NET se hodí na malé weby stejně dobře, jako PHP. Křivka učení je ve tvém podání dost krátkozraká. V PHP sice začneš rychle bastlit, ale kvalita nula. C# ti takhle bastlit nedovolí, můžeme se dohadovat jestli je to dobře nebo špatně. Pokud chceš dělat weby na úrovni, budeš se to učit stejně dlouho v PHP i v C#, OOP a MVC se v nich dělá stejně.

Nahoru Odpovědět  +4 10.1.2014 20:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na petrph
Kit:

V PHP dělám i konzolové aplikace. Přesněji řečeno, pokud mám dělat aplikaci na webu nebo pracující s webem, volím PHP.

Nahoru Odpovědět 10.1.2014 20:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:

K tomu by možná bylo vhodné zmínit, že je děláš pro Linux, na Windowsech není běžné mít desktop aplikace v PHP :)

Nahoru Odpovědět 10.1.2014 20:37
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:

Promiň, ale v C# se dají dělat dost podobné prasárny jako v PHP a C# tě to klidně nechá dělat. V C# se dá psát i procedurálně (pokud někdo chce) a také se to velmi často dělá, i když se to nemá.

Nahoru Odpovědět 10.1.2014 20:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

Běžné to není, ale funguje to úplně stejně jako na Linuxu. Dokonce na Windows jede i webserver v PHP (bez Apache).

Nahoru Odpovědět 10.1.2014 20:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Kit
Zdeněk Pavlátka:

Příklad - převody mezi datovými typy:
PHP: automaticky převádí podle potřeby
C#: samo převede leda int na double
Jen aby bylo vidět, o čem mluvím.

Nahoru Odpovědět 10.1.2014 20:46
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:

Ale já neříkám že ne. Jenom říkám, že to není běžné. Zajímalo by mě, co ty vlastně děláš? Vím o většině aktivních lidech zde čím se živí/s čím se učí/co je baví, ale o tobě toho nikdo moc nevíme, jenom to, že jsi pořádný PHP a SQL blázen :)

Nahoru Odpovědět  +2 10.1.2014 20:48
Creating websites is awesome till you see the result in another browser ...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Nymsa:

A co to má společného s výrokem "C# tě nenechá si nic dělat podle svého, ale u objektů toho nabízí víc." ? IMHO přijde mi lepší když je jazyk silně typovaný, kód je přehlednější a předchází se zbytečným chybám, na druhou stranu, PHP zase umí celkem hezky kouzlit a některé vlastnosti bych rád měl v C#

Nahoru Odpovědět  +3 10.1.2014 20:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:

To jsou prkotiny. V tomhle směru bych spíš ocenil, kdyby se PHP chovalo jako C#. Aspoň by se pro spojování stringů dal místo tečky použít operátor "+".

Nahoru Odpovědět 10.1.2014 20:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Ano, prasit můžeš v obou, ale v PHP je to MNOHEM jednodušší.

A možná ty sám pro sebe používáš konzolové aplikace napsané v PHP běžně, jde to, ale rozhodně to není běžná praxe a kdyby ses o to pokoušel, tak budeš mít řadu problémů - nutnost klientům instalovat webserver a pak třeba obsazené porty (spousta lidí používá skype, který jede defaultně na portu 80), nutnost povolovat to ve firewallu (potřebuješ admin. přístup) apod., pokud jim to má běžet lokálně.

Nahoru Odpovědět  +1 10.1.2014 20:54
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Promiň, ale PHP jede i bez webserveru a může jet i bez obsazení portů. Tím pádem se o firewallu nemusíme bavit. A je to běžná praxe, jen o tom nevíš :)

Nahoru Odpovědět 10.1.2014 20:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Ano? Jaký běžně používaný program je v PHP? :)

Nahoru Odpovědět 10.1.2014 21:00
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Tyto programy v PHP si uživatelé obvykle píší sami pro vlastní potřebu. Hodí se to například pro automatizované browsování po webu. Tedy crawlery, harvestery, data minery apod. Stažená a zpracovaná data obvykle ihned ukládají do DB.

Nahoru Odpovědět  -1 10.1.2014 21:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Psal jsem, že sám pro sebe si konzolové programy v php možná píšeše, ale jinak to není běžná praxe, aby tyhle programy byly v php a ty mi na to odpovíš, že si to uživatelé obvykle píší pro vlastní spotřebu?

Nahoru Odpovědět 10.1.2014 21:43
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

Tohle prostě člověk, který si raději hraje s klikacíma okýnkama, nepochopí. Je zbytečné, abych ti to dál vysvětloval. Už jsi někdy viděl aplikaci, která běží bez okna?

Nahoru Odpovědět  ±0 10.1.2014 21:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Připadám ti jako někdo, kdo si hraje s klikacíma okýnkama? :)

Myslíš konzolovou aplikaci (ve Win dostane svoje okýnko) nebo úplně bez výstupu, jako třeba službu?

Samozřejmě, že jsem už takovou aplikaci potkal, dokonce jsem jich i pár napsal :) - např. služba pro updatování aplikace.

Jinak mám pocit, že tu pořád všechno píšeš jen ve smyslu co si tam ty někde bastlíš, případně jak to dělají jiní jednotlivci, ale zcela evidentně nemáš moc zkušeností s programováním někde ve firmě apod., takže se programováním neživíš, tak nevím, co se do mě pořád navážíš :)

Nahoru Odpovědět  +3 10.1.2014 22:00
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

PHP se nehodí na událostní programování. GUI se v něm udělat nedá. Proto se nejčastěji používá ve spojení s prohlížečem a Javascriptem, které pro něj dělá rozhraní s uživatelem. To ale neznamená, že ten prohlížeč nebo server jsou pro použití PHP nezbytné. PHP funguje i bez nich a skript může klidně běžet nonstop.

Nahoru Odpovědět 10.1.2014 22:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Ano, ale není to nejběžnější použití, v drtivé většině je PHP využíváno na weby a na tyhle aplikace se používají jiné jazyky.

Nikde jsem nepsal, že to možné není, jen že to není běžné.

Editováno 10.1.2014 22:07
Nahoru Odpovědět 10.1.2014 22:04
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

A v čem se podle tebe píší roboti, kteří sbírají data z netu?

Příklad: Chci si každou hodinu stáhnout data z meteostanice a uložit jako záznam do databáze. Pro PHP je to trivialitka.

Editováno 10.1.2014 22:17
Nahoru Odpovědět 10.1.2014 22:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Luboš Běhounek (Satik):

Roboty/crawlery jsou tak jednoduche aplikace, ze je muzes napsat skoro v cemkoliv.

Nahoru Odpovědět  +3 10.1.2014 22:55
:)
Avatar
petrph
Člen
Avatar
Odpovídá na Kit
petrph:

Abych nebyl špatně pochopen.Tady nejde o to v čem děláš třeba svoje programy sám pro sebe, nebo dlouhodobě pro jednoho zákazníka na jednom serveru.
Tady jde o uvědomění si rozdílu při práci na zakázku v tvorbě dynamických webových stránek a desktopové aplikace. Při tvorbě dynamického webu si omezen tím co běží zákazníkovi na web serveru.Jestli tam běží Apache s modulem PHP,tak budeš programovat v PHP a C# ti nebude nic platný.
Ale při tvorbě desktopové aplikace je zákazníkovi obvykle jedno v čem to naprogramuješ(C#,C++,P­ascal,Java.at­d.)-ale zrovna PHpko je naprosto nevhodný,i třeba proto že vyžaduje běžící web server,a ten si tam zákazník kvůli jedný aplikaci asi běžet nenechá.
Čili-z mýho pohledu-nezáleží moc na drobnějších rozdílech mezi C# a PHP v syntaxi jazyka-jak zde demonstrovali kolegové, podstatný je právě to, čemu se chceš věnovat hlavně ty, jestli tvorbě webů nebo desktopových aplikací.
Nakonec, když na to příjde, neškodí naučit se oboje,PHP i C#..

 
Nahoru Odpovědět  +2 11.1.2014 7:43
Avatar
Kit
Redaktor
Avatar
Odpovídá na petrph
Kit:

PHP nevyžaduje běžící webserver. Se zbytkem souhlasím.

Nahoru Odpovědět 11.1.2014 9:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jarda K.
Neregistrovaný
Avatar
Odpovídá na Kit
Jarda K.:

mysql_connect(...) or die(...)
mysql_connect(...) or throw new Exception(...)

ten die do php nemeli implementovat. to svadi programatory k prasarnam.
Vzdycky mi vytecou nervy, kdyz vidim neosetrenou vyjimku.
A kdyz uz tam ma throw new exception(...), tak aspon to obalit cele do try catch, ale vzdycky si vsechny vyjimky zpracovat. minimalne do logu, aby mel chudak spravce kteremu volaji lidi co hledat.

_____________­_______________________
delam projekty jak v php tak i v C#

 
Nahoru Odpovědět 5.3.2014 18:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 93 zpráv z 93.