Diskuze: Rozdíly mezi C# a PHP
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 43 zpráv z 93.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
V PHP možná (tam je možné všechno ), 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...
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
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.
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..
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.
Jak jsem psal, v PHP jsem dělal jen lehce a naposled nekde pred 4 roky,
takze konstrukci nebo funkci list neznam
$stringSeSouradnicemi bys tomu objektu předhodil do konstruktoru a pak dělal getX(), getY(), getZ()? Děkuji, nechci. Nebo jsi to myslel jinak?
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.
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');
Pak bys přehodil parsování do třídy. Každá verze má svoje +.
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í.
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...
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#.
C# tě nenechá si nic dělat podle svého, ale u objektů toho nabízí víc.
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..
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ě.
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.
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
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á.
Běžné to není, ale funguje to úplně stejně jako na Linuxu. Dokonce na Windows jede i webserver v PHP (bez Apache).
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.
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
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#
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 "+".
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ě.
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íš
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.
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?
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?
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ážíš
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.
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é.
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.
Roboty/crawlery jsou tak jednoduche aplikace, ze je muzes napsat skoro v cemkoliv.
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++,Pascal,Java.atd.)-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#..
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#
Zobrazeno 43 zpráv z 93.