C# nebo Python?

SB

Re:C# nebo Python?
« Odpověď #30 kdy: 24. 01. 2014, 08:13:14 »
Jestli vám jde o pochopení OPRAVDOVÉHO objektového modelování a programování, tak Smalltalk, který je minimalistický a přitom mocný, nekompromisně objektový a bez balastu. V praxi se moc nepoužívá, ale na pochopení asi nic lepšího nenajdete.

A co Objective-C? Ten byl ovlivněn Smalltalkem a v praxi se používá.

Tak to neznám, takže nemůžu hodnotit, proto doporučuju ST. Každopádně na pochopení OM/OP je C# nevhodné, protože už je docela přikurvené a překombinované (co od MS není).


JS

Re:C# nebo Python?
« Odpověď #31 kdy: 24. 01. 2014, 08:28:33 »
Doporučuji třeba zápisek Dynamic languages are static languages nebo knihu Types and Programming Languages (poslední 3 odstavce na straně 2 - je to zdarma přístupné přes Amazon).

Je to hodne hodne offtopic, ale - myslim, ze ty zapisky maji pravdu, jenze je to silene zuzeny pohled na svet.

Premyslim ted nad dynamicky (a adhoc) typovanym, striktne funkcionalnim jazyce s linym vyhodnocovanim. Dynamicnost typu neni v tom kontextu nic jineho, nez lina typova kontrola (tedy ceka se, kdy se srazime s typove nekompatibilnim literalem nebo kusem vstupnich dat), a je tedy prirozenym rozsirenim lineho vyhodnocovani jako takoveho. Lze tam take elegantne resit pretezovani funkci (a eventualne OOP) pomoci backtracku..

v

Re:C# nebo Python?
« Odpověď #32 kdy: 24. 01. 2014, 09:07:40 »
Doporučuji třeba zápisek Dynamic languages are static languages nebo knihu Types and Programming Languages (poslední 3 odstavce na straně 2 - je to zdarma přístupné přes Amazon).

zápisek je velmi emocionálně laděný a tvrdí, že dynamické jazyky jsou marketingový tah, vlastně neexistují a neuvádí žádný příklad (např. PHP by popisu odpovídalo, Python o poznání méně), kniha připouští, že existují, ale vhodné označení je "jazyky s dynamickou typovou kontrolou", nic o jediném datovém typu jsem ve vámi zmíněné části nenašel

omg

Re:C# nebo Python?
« Odpověď #33 kdy: 24. 01. 2014, 10:47:30 »
Ten kto poradil VB ma pravdu. Visual Basic je len C# s inou syntaxou a par kozmetickymi odlisnostami http://www.dotnetportal.cz/blogy/9/Ondrej-Linhart/920/Proc-je-Visual-Basic-lepsi-nez-C-
Nevsim jsem si, ze by v dnesni dobe doporucoval treba Fortran. Proto asi to prekvapeni, ze nekdo jeste dnes muze doporucit VB nekomu, kdo uz ma C# za zaklady za sebou

Flasi

Re:C# nebo Python?
« Odpověď #34 kdy: 24. 01. 2014, 11:04:21 »
Jestli vám jde o pochopení OPRAVDOVÉHO objektového modelování a programování, tak Smalltalk, který je minimalistický a přitom mocný, nekompromisně objektový a bez balastu. V praxi se moc nepoužívá, ale na pochopení asi nic lepšího nenajdete.

A co Objective-C? Ten byl ovlivněn Smalltalkem a v praxi se používá.

Tak to neznám, takže nemůžu hodnotit, proto doporučuju ST. Každopádně na pochopení OM/OP je C# nevhodné, protože už je docela přikurvené a překombinované (co od MS není).

Stepen Leacock napsal geniální povídku. Ve zkratce:
Chlap se chce oženit a v kostele. Ale na to musí být pobožný. Ale tam narazí na problém, že nezná Bibli. Tak ji začne studovat. Ale nejde mu to, protože v překladu se ztrácejí souvislosti. Tak se učí latinsky. Ale pořád mu to nejde, protože to chce Bibli studovat v origiinále - řecky a hebrejsky. A tyhle jazyky nejsou dobře zvládnout a pochopit bez znalosti aramejštiny. A ta bez znalosti...
Jeho holka si mezitím vzala nějakého pologramota.

A z toho plyne poučení:
I když tazatel narazil na nějaké problémy s objekty, tak nebude nejlepší pokoušet začít učit čistší (ač třeba nejčistší) objektový jazyk. Tuplem tím, že se v praxi vůbec nepoužívá, neexistuje na něj hromada tutoriálů a málokdo (reálně nikdo) mu s tím pomůže.

C# i Python jsou dobré jazyky pro výuku i objektového programování. Daryl prostě potřebuje lepší tutoriály/knížku. Nebo někoho, kdo mu to vysvětlí - protože samostudium komplikovaných věcí je prostě těžké.


JS

Re:C# nebo Python?
« Odpověď #35 kdy: 24. 01. 2014, 11:12:12 »
Ten kto poradil VB ma pravdu. Visual Basic je len C# s inou syntaxou a par kozmetickymi odlisnostami http://www.dotnetportal.cz/blogy/9/Ondrej-Linhart/920/Proc-je-Visual-Basic-lepsi-nez-C-

Jelikoz se v praci setkavam s lidmi, kteri znaji v podstate jen VB, ty "kosmeticke odlisnosti" bohuzel velmi negativne ovlivnuji jejich zpusob mysleni. Napr. takove zvrhlosti jako u volani funkce neni treba psat zavorky, stejna syntax pristupu k poli jako u volani funkce, on error goto, nektere veci se automaticky chovaji jako static, zapis retezcu, pretezovani metod atd.

Ano, kod ve VB a C# se da namapovat 1:1. Ale to neznamena, ze zacatecnik ve VB bude pouzivat ty vlastnosti, ktere by spravne mel, a nebude se mu to vselijak plest.

Daniel Kozak

Re:C# nebo Python?
« Odpověď #36 kdy: 24. 01. 2014, 12:26:10 »
...
Napr. takove zvrhlosti jako u volani funkce neni treba psat zavorky
...
Tak zrovna tohle bych nezatracoval, jsou pripady kdy se to muze opravdu hodit, napriklad pri UFCS (Universal Function Call Syntax)
Ano, kod ve VB a C# se da namapovat 1:1. Ale to neznamena, ze zacatecnik ve VB bude pouzivat ty vlastnosti, ktere by spravne mel, a nebude se mu to vselijak plest.

Tak to je obecne problem prechodu z jedne syntaxe na druhou, ale neni to zadny velky problem, vetsinou se clovek preuci velmi rychle.

Riff

Re:C# nebo Python?
« Odpověď #37 kdy: 24. 01. 2014, 12:51:43 »
Pro pochopení OOP v jednom jazyce se začít učit další jazyk není moc rozumný nápad, to v tom spíš budeš mít ještě větší guláš než teď. Radši si najdi kvalitnější zdroje, ve kterých je to srozumitelněji vysvětleno. No a s VB má většina lidí problém ten, že jeho syntaxe je prostě odporná, víc v tom nehledej.

JS

Re:C# nebo Python?
« Odpověď #38 kdy: 24. 01. 2014, 13:25:25 »
Tak zrovna tohle bych nezatracoval, jsou pripady kdy se to muze opravdu hodit, napriklad pri UFCS (Universal Function Call Syntax)

Tohle se mozna hodi do cistych jazyku jako Scheme ci Haskell, ale do dortu, ktery varili pejsek s kocickou, aby si udrzeli stavajici bazi uzivatelu opravdu ne..

Tak to je obecne problem prechodu z jedne syntaxe na druhou, ale neni to zadny velky problem, vetsinou se clovek preuci velmi rychle.

Ano, problem to neni, pokud clovek chape konceptualni rozdil mezi funkci a polem, ci mezi funkci a property. Odlisna syntaxe jako takova neni problem. Problem je, ze syntaxe VB primo vede na michani techto pojmu, a je tudiz pro zacatecniky naprosto nevhodna.

iwtu

Re:C# nebo Python?
« Odpověď #39 kdy: 24. 01. 2014, 15:24:09 »
Ja si stale myslim, ze dolezite je mat nejaky ciel, projekt, na ktorom pracovat, poobzerat sa po rozumnych jazykoch a vybrat kludne nahodne. Reci typu co je a nie je vhodne pre zaciatocnika povazujem sa prazdne obhajovanie svojej pravdy. Jazyk ani nahodou nie je co, co robi programatora programatorom..  A mne sa aj velmi paci cesta, kedy na zaciatku clovek urobi co najviac veci spatne a pouci sa z nich.

Teda, mozno su nejake jazyky viac a menej vhodne ak chce byt clovek priemerny programator, ale ja som nikdy nebol clovek, ktoreho zaujimal priemer.. A pre tych ostatnych, je absolutne jedno, s cim zacnu..

omg

Re:C# nebo Python?
« Odpověď #40 kdy: 24. 01. 2014, 15:56:12 »
to je nejlevnejsi vymluva, proc nezacit vubec.

Flasi

Re:C# nebo Python?
« Odpověď #41 kdy: 24. 01. 2014, 16:25:04 »
Ja si stale myslim, ze dolezite je mat nejaky ciel, projekt, na ktorom pracovat, poobzerat sa po rozumnych jazykoch a vybrat kludne nahodne. Reci typu co je a nie je vhodne pre zaciatocnika povazujem sa prazdne obhajovanie svojej pravdy. Jazyk ani nahodou nie je co, co robi programatora programatorom..  A mne sa aj velmi paci cesta, kedy na zaciatku clovek urobi co najviac veci spatne a pouci sa z nich.

Teda, mozno su nejake jazyky viac a menej vhodne ak chce byt clovek priemerny programator, ale ja som nikdy nebol clovek, ktoreho zaujimal priemer.. A pre tych ostatnych, je absolutne jedno, s cim zacnu..

Díky itwu, žes nám sdělil, že tebe průměr nikdy nezajímal. To jsme fakt všichni potřebovali vědět.
Že jazyk není to, co dělá programátora programátorem, to je přece banální pravda, kterou nikdo nerozporuje. Jenže když někdo ještě programátor není a žádný jazyk neumí, tak holt nějaký jazyk potřebuje. A pro začátečníky je zásadní rozdíl v jakém jazyce se učí programovat. Jak rychle jim to půjde, jestli je to bude bavit, jestli rychle dosáhnou nějakého zajímavého výsledku, který je potěší a utuží. Anebo jestli se zamotají do problémů a vzdají to. A všechny tohle se umocňuje, když se jedná o samostudium neprogramátora.

Fakt myslíš, že tvůj příspěvek - kromě toho, že asi tobě pomohl upevnit ego - nějak pomůže začátečníkovi? Jo vlastně, ještě je tam rada stanovit si cíl - ale ten on už má - naučit se programovat v C#, ve kterém chce potom něco dělat.

omg

Re:C# nebo Python?
« Odpověď #42 kdy: 24. 01. 2014, 17:01:21 »
prijde mi, ze se tu resi 2 ruzny veci dokopy. uplny zelenac proti rekvalifikace programatora.

Radek Miček

Re:C# nebo Python?
« Odpověď #43 kdy: 24. 01. 2014, 20:07:14 »

zápisek je velmi emocionálně laděný a tvrdí, že dynamické jazyky jsou marketingový tah, vlastně neexistují a neuvádí žádný příklad (např. PHP by popisu odpovídalo, Python o poznání méně), kniha připouští, že existují, ale vhodné označení je "jazyky s dynamickou typovou kontrolou", nic o jediném datovém typu jsem ve vámi zmíněné části nenašel

V té knize je velmi důležitá část

Citace
Another important element in the above definition is its emphasis on classification of terms - syntactic phrases - according to the properties of the values that they will compute when executed. A type system can be regarded as calculating a kind of static approximation to the run-time behaviors of the terms in a program.

která říká, že typový systém je statická záležitost - tj. typová kontrola se provádí ještě před spuštěním programu. Python před spuštěním programu žádnou typovou kontrolu neprovádí - řečeno slovy knihy Python neklasifikuje termy podle vlastností jejich hodnot. Můžeme tedy říci, že Python nemá typy. Ale to je stejné, jako když řekneme, že má pouze jeden typ a přiřazuje ho každému termu (takovouhle typovou kontrolou projde každý syntakticky správný program, což je stejné chování, jako když typovou kontrolu vynecháme).

Za běhu Python nerozlišuje typy, ale tagy.

Jazyky jako C# mají více typů, ale ani tam nejsou typy za běhu přístupné a máte jen tagy. Uvažte například program

Kód: [Vybrat]
var p = new Pes();
kde proměnná p má typ Pes, ale díky podtypovému polymorfismu má rovněž typy Savec, Zvíře a Object. Můžete dokonce napsat

Kód: [Vybrat]
var q = p as Zvíře;
a q bude mít typy Zvíře a Object. Nicméně za běhu budou mít obě hodnoty uložené v promenných tagy Pes bez ohledu na jejich typ v době kompilace.

Mj. autor blogového zápisku napsal knihu Practical Foundations for Programming Languages, kde se tomuto tématu rovněž věnuje v kapitole 17 a 18.

Re:C# nebo Python?
« Odpověď #44 kdy: 24. 01. 2014, 21:00:54 »
...
Napr. takove zvrhlosti jako u volani funkce neni treba psat zavorky
...

Prave nutnost pisat zatvorky pri bezparametrickej funkcii je specialita jazyka C (a jazykov z neho vychadzajucich). Ostatne jazykove rodiny (Pascal, Modula, ML, Lisp, Basic, Ruby, ADA, Eiffel) nic take nevyzaduju. Vo funkcionalnych jazykoch zvykne byt ()  specialny typ.