NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
Jiří Šedý (jsedy7):13.9.2013 22:23

Ahoj! :)

Ve škole dle sdělení učitele budeme programovat v jazyce C.
Smím se zeptat jaké bude mít využití tento jazyk v případě, že se ho budu učit? Vím, že se v tom dají dělat drivery, ale co více se v tomto jazyce dá ještě dělat?

Přemýšlel jsem také nad Javou, jenomže nemůžu se učit více jazyků naráz. Pište jakékoliv vaše názory ať mám trošku přehled a mohu se nějak efektivně rozhodnout. :)

Děkuju

Odpovědět
13.9.2013 22:23
Musíš se mnoho učit, abys poznal, že málo víš...
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jiří Šedý (jsedy7)
Kit:13.9.2013 22:32

V čistém C se dá naprogramovat cokoliv, ale třeba GUI se v něm moc dobře nedělá. Programuje se v něm imperativně. To znamená, že výsledné programy bývají rychlé a efektivní, ale ladění bývá zdlouhavé.

Java vychází z C a není problém se učit oba jazyky současně. Alespoň budeš moct porovnávat. V Javě se sice také dá programovat imperativně, ale daleko výhodnější je naučit se OOP, se kterým jde vývoj mnohem rychleji a nasekáš v programu mnohem méně chyb.

Java ti také označí spoustu chyb, u kterých C v klidu mlčí a nechá tě, aby sis natloukl kokos.

Nahoru Odpovědět
13.9.2013 22:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Jiří Šedý (jsedy7)
Michael Olšavský:13.9.2013 22:34

V Céčku se dá dělat cokoliv, pouze je to složitější a má horší přístup k programování, ale nejsi ničím omezený. Lepší by bylo C++, vylepšená verze Céčka s pár změnami a mnoha inovacemi včetně OOP přístupu

 
Nahoru Odpovědět
13.9.2013 22:34
Avatar
Panda38
Tvůrce
Avatar
Panda38:14.9.2013 9:26

jsedy7 hlavní je že z C vychází v podstatě všechny současné jazyky (včetně Javy, PHP, C#), takže se nebudeš učit něco navíc, ale úplný základ a z toho pak můžeš už snadno vycházet i u jiných jazyků.

 
Nahoru Odpovědět
14.9.2013 9:26
Avatar
Odpovídá na Kit
Jiří Šedý (jsedy7):14.9.2013 10:13

Samozřejmě mě lákají oba jazyky, jak C tak i Java. Podle toho co jsem slyšel je trošku problém v tom, že u jazyka C, tvořený program vytvořím např. pro OS Windows, ale v případě, jak budu chtít aplikaci i pro Linuxovou distribuci, tak program budu muset přepracovat. Zatímco u jazyka Java, jednou naprogramuji nějaký program, který prý pojede na více platformách naráz. Není v tomto výhodnější Java?

brisingr002:
Chvíli, dokud jsem ještě aktivně využíval Windows, tak jsem programoval v C++. Opět na nějaké začáteční úrovni. O proti jazyku C mi C++ přišlo výrazně přehlednější a vyznal jsem se v tom lépe. Jenomže, jak už jsem se dozvěděl, tak C++ se řadí mezi vyšší prog. jazyky, tudíž se s ním nedá komunikovat přímo s HW. Pokud tomu tedy dobře rozumím.

Editováno 14.9.2013 10:14
Nahoru Odpovědět
14.9.2013 10:13
Musíš se mnoho učit, abys poznal, že málo víš...
Avatar
vitamin
Člen
Avatar
Odpovídá na Jiří Šedý (jsedy7)
vitamin:14.9.2013 10:34

C je low level systemovy jazyk. Je velmi jednoduchy, to je jeho vyhoda aj nevyhoda. Oplati sa ho naucit aj ked v nom neplanujes programovat. C ma velmi jednoduche ABI, takze sa casto pouziva ako medzivrztva pri kombinovani roznych jazykov vyzsej urovne.

Co sa tyka c++, tak ten jazyk podporuje aj low level aj high level programovanie (a tak ako c moze priamo vkladat asm) takze aj c++ moze komunikovat priamo s HW. Povodne c++ (C with classes) sa prekladalo dokonca najprv do C (CFront).

Editováno 14.9.2013 10:36
 
Nahoru Odpovědět
14.9.2013 10:34
Avatar
Odpovídá na Jiří Šedý (jsedy7)
Michael Olšavský:14.9.2013 10:48

C++ podporuje veškeré techniky z Céčka, jakmile se naučíš C++, umíš i C. Jsou zde pouze malé rozdíli jako při používání referencí atd. Díky tomu se zachová jak nový styl programování, tak přímí přístup k HW. Jak píše vitamin, první C++ se překládalo do céčka. Díky tomu se i tak rychle rozšířilo. Nebyli problémy s kompatibilitou.

 
Nahoru Odpovědět
14.9.2013 10:48
Avatar
Odpovídá na Jiří Šedý (jsedy7)
Michael Olšavský:14.9.2013 10:49

Pokud napíšeš daný program bez použití systémových knihoven, nemusíš předělávat vůbec nic, pouze použiješ jiný kompiler.

 
Nahoru Odpovědět
14.9.2013 10:49
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jiří Šedý (jsedy7)
Kit:14.9.2013 10:55

Java je výhodnější než C i C++ dohromady. O tom snad není sporu.

Správně napsané zdrojáky v C jsou přenositelné mezi Windowsy, Unixem i Linuxem. Musí se dodržet určitá pravidla.

V C++ můžeš dělat všechno co v C, plus spoustu věcí navíc.

Nahoru Odpovědět
14.9.2013 10:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michael Olšavský:14.9.2013 10:58

Záleží na tom, co chce člověk dělat a jak si co oblíbí. Třeba já dám tedy raději přednost C++ před Javou, pokud nepotřebuji GUI.

 
Nahoru Odpovědět
14.9.2013 10:58
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:14.9.2013 11:03

Dávám přednost Javě před C++, protože chci programovat objektově.

Nahoru Odpovědět
14.9.2013 11:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Jiří Šedý (jsedy7)
David Hartinger:14.9.2013 11:28

Čisté C se již téměř nepoužívá a i když ti budou lidé tvrdit jak se v tom programují drivery a mikrokontrolery a další minoritní aplikace, stačí se zeptat sám sebe jestli budeš někdy něco takového dělat. Jazyků jsou stovky, v každém se něco dělá a každý je pro něco užitečný. Smysl se má ale učit jen ty, co reálně použiješ. Ve školách se C učí spíše z důvodu zaostalosti našeho školství.

Nahoru Odpovědět
14.9.2013 11:28
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:14.9.2013 12:02

Stretol som sa aj s tým, že sa na škole najprv učí Céčko hlavne kvôli pochopeniu syntaxe a základných pravidiel programovania. Potom sa však prechádza na plnohodnotnú Javu. Myslím, že ak už využiť na školách Céčko, tak práve takto. :)

Nahoru Odpovědět
14.9.2013 12:02
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.9.2013 12:03

To je jen chybný názor, který má za následek zkažení myšlení. Lidé z céčka mají problém programovat objektově a učí se principy, které již u moderních jazyků neplatí.

Nahoru Odpovědět
14.9.2013 12:03
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.9.2013 12:04

Hlavně se přechodem z C na Javu všem hodně uleví a začnou si libovat, jaký je to pokrok proti C :)

Nahoru Odpovědět
14.9.2013 12:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vitamin
Člen
Avatar
vitamin:14.9.2013 12:07

Vsimol som si ze na devbooku sa OOP pomaly uctieva ako bozstvo :)

 
Nahoru Odpovědět
14.9.2013 12:07
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na vitamin
David Hartinger:14.9.2013 12:09

A ty snad píšeš na pergamen? Takovéhle řeči tu vedou jen ti, co OOP nerozumí.

Nahoru Odpovědět
14.9.2013 12:09
New kid back on the block with a R.I.P
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:14.9.2013 12:14

"Dávám přednost Javě před C++, protože chci programovat objektově."

To má stejnou logiku jako když napíšu "Dávám přednost C# před Javou, protože chci programovat objektově."

Nahoru Odpovědět
14.9.2013 12:14
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vitamin
Kit:14.9.2013 12:18

To by ses divil, kolik různých paradigmat běžně používám. Například GUI se bez OOP dělá dost těžko, ale do databází musíš jít s relační algebrou, jinak ti vznikne paskvil. Na matematické výpočty se zase lépe uplatní funkcionální paradigma, tam s objekty moc nepochodíš. Výstupní šablony jsou zase nejlepší deklarativní. Prostě na každou vrstvu se hodí něco jiného.

Nahoru Odpovědět
14.9.2013 12:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Luboš Běhounek Satik
David Hartinger:14.9.2013 12:19

Logiku to má už jen v tom, že C++ je pouze objektově orientované, Java je na objektech postavená kompletně.

Nahoru Odpovědět
14.9.2013 12:19
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:14.9.2013 12:20

Nemá, protože C# a Javu považuji za jazyky, které jsou zhruba rovnocenné. C# proti Javě nemá ohledně OOP nic navíc.

Nahoru Odpovědět
14.9.2013 12:20
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:14.9.2013 12:24

Co má tedy navíc Java oproti C++?

Nahoru Odpovědět
14.9.2013 12:24
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Kit
Michael Olšavský:14.9.2013 12:26

Naopak bych řekl, že C++ má více možností, které lze uplatnit v OOP než Java. Co třeba přetížení operátorů,... Mnoho funkcí z C++ lze při správném použití nazývat OOP metodami.

 
Nahoru Odpovědět
14.9.2013 12:26
Avatar
Odpovídá na David Hartinger
Luboš Běhounek Satik:14.9.2013 12:29

To že ti C++ umožní programovat i jinak než objektově je přeci výhoda, ne nevýhoda, jak je to tu prezentováno.

Nahoru Odpovědět
14.9.2013 12:29
https://www.facebook.com/peasantsandcastles/
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Luboš Běhounek Satik
David Hartinger:14.9.2013 12:30

Již ti bylo řečeno, že Java je kompletně objektová. Stačí se podívat na Hello world v C++, už metoda main je neobjektová. C++ je směsice OOP a strukturovaného programování, něco jako třeba PHP. Java je návrhem mnohem dál.

Nahoru Odpovědět
14.9.2013 12:30
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Michael Olšavský:14.9.2013 12:33

Já beru tři druhy přístupu ke kódu jako výhodu. Naopak se mi nelíbí ty striktní zásady v Javě a její omezení. Sice je java plně objektová, ale základním datovým typům to akorát škodí podle mého mínění. Navíc se ztratili některé techniky, které např. v C# jsou a jsou hojně využívány.

 
Nahoru Odpovědět
14.9.2013 12:33
Avatar
Luboš Běhounek Satik:14.9.2013 12:35

Rozdíl mezi C++ a Javou/C# podle mě vůbec není v přístupu k OOP (jak mi to přijde, že je tu často prezentováno), oba jazyky OOP umožňují na podobné úrovni.

Hlavní rozdíl vidím spíš v tom, že C++ je jazyk nižší úrovně - člověk se prostě víc nadře, aby napsal kód, který vykoná to samé, ale má nad vším absolutní kontrolu.

Nahoru Odpovědět
14.9.2013 12:35
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:14.9.2013 12:36

Skutečně plnohodnotnou práci s objekty. Můžeš je likvidovat i jinde než tam, kde jsi je vytvořil a nehrozí ti memory leaky. Můžeš dát objekt do returnu metody a to si v C++ bez rizika nemůžeš dovolit. Typová kontrola na vyšší úrovni, kontrola hranic polí, testy jako součást třídy, testování každé třídy bez nutnosti externího kódu,...

Nahoru Odpovědět
14.9.2013 12:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:14.9.2013 12:39

Přetížení operátorů je jen syntaktický cukr, který dokáže programátora pořádně poplést. Vyzkoušel jsem si přetěžování operátorů v Pythonu, který je má IMHO ještě vymakanější než C++, ale pak jsem došel k názoru, že všeho moc škodí.

Java má také přetížené operátory. Jen jich má méně.

Nahoru Odpovědět
14.9.2013 12:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:14.9.2013 12:40

Když ti jazyk umožňuje psát kód různými způsoby, tak je ten jazyk špatný. Vzhledem k tomu, že moderní jazyky jsou již jen objektové (ty, co někdo používá samozřejmě) tak je vidět, co se osvědčilo a co ne. Všude je snaha o co nejvyšší restrikci, umožnit psát kód jen jedním způsobem, skrývat co nejvíce implementace a podobně. Jedině tak totiž dosáhneš kvalitních výsledků.

PS: Kolik mám mínusek, tolik lidí tu neumí objekty :)

Editováno 14.9.2013 12:43
Nahoru Odpovědět
14.9.2013 12:40
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Luboš Běhounek Satik:14.9.2013 12:47

"Ohodnotil jsi příliš mnoho komentářů za sebou. Pro zachování objektivnosti hodnocení budeš moci hodnotit až za chvíli. Zkušenější uživatelé mají nižší omezení."
Počkám si, pak to mínus dostaneš :)

Nahoru Odpovědět
14.9.2013 12:47
https://www.facebook.com/peasantsandcastles/
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Luboš Běhounek Satik
David Hartinger:14.9.2013 12:48

Jen si ho dej, máš nějak vysokou auru :D

Nahoru Odpovědět
14.9.2013 12:48
New kid back on the block with a R.I.P
Avatar
vitamin
Člen
Avatar
Odpovídá na David Hartinger
vitamin:14.9.2013 12:49

Minuska nemas preto ze je dakto proti OOP alebo ho neovlada, ale preto ze pises uplne hovadiny :)

 
Nahoru Odpovědět
14.9.2013 12:49
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 12:51

Spíš si myslím, že ty mínusy jsi dostal od těch, kteří OOP rozumí :)

Nahoru Odpovědět
14.9.2013 12:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na David Hartinger
Luboš Běhounek Satik:14.9.2013 12:51

Dávám mínusy/plusy podle obsahu komentářů, ne podle nějaké aury :)

Nahoru Odpovědět
14.9.2013 12:51
https://www.facebook.com/peasantsandcastles/
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na vitamin
David Hartinger:14.9.2013 12:53

Takže tvrdíš, že je výhodné míchat v jedné aplikaci OOP a strukturované programování. Zajímavé :) Určitě je přehlednější míchat protichůdné přístupy, to je pravda, rozumíš tomu.

Nahoru Odpovědět
14.9.2013 12:53
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 12:55

Proč do toho pleteš strukturované programování?

Nahoru Odpovědět
14.9.2013 12:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:14.9.2013 12:56

Jelikož se o něm bavíme. Poslední byla debata o C++. Opět se asi snažíš překroutit to, co říkám.

Nahoru Odpovědět
14.9.2013 12:56
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Luboš Běhounek Satik:14.9.2013 12:58

Já oba postupy míchám docela často, snažím se brát z každého to co je pro danou chvíli nejlepší :)

Nahoru Odpovědět
14.9.2013 12:58
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 12:59

Jakmile použiješ if, while nebo switch, programuješ strukturovaně.

Nahoru Odpovědět
14.9.2013 12:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:14.9.2013 13:00

Ano, proto je také příliš nepoužívám.

Nahoru Odpovědět
14.9.2013 13:00
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 13:02

Jenže jsou tady ještě další paradigmata, která se v Javě či C# běžně používají.

Nahoru Odpovědět
14.9.2013 13:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:14.9.2013 13:04

Moderní jazyky jsou prostě čistě v OOP a nemíchají do toho zastaralé přístupy. Můžeme tu filosofovat o tom, co si teď lze představit pod strukturovaným programováním, já jsem tento termín použil ve spojení s C++, kde lze psát plně bez objektů, což je špatně. Jazyk nesmí míchat protichůdné a možná i obecně různé přístupy, které vedou k dosažení stejného výsledku odlišnou filozofií (nezapoměňte tu větu rozebrat). Jako vždy se to tu zvrhlo ve slovíčkaření, takže jdu dělat něco konstruktivního.

Editováno 14.9.2013 13:05
Nahoru Odpovědět
14.9.2013 13:04
New kid back on the block with a R.I.P
Avatar
vitamin
Člen
Avatar
Odpovídá na David Hartinger
vitamin:14.9.2013 13:11

[quote]
Moderní jazyky jsou prostě čistě v OOP a nemíchají do toho zastaralé přístupy
[/quote]
Ako si na to prisiel?

[quote]
Jazyk nesmí míchat protichůdné a možná i obecně různé přístupy, které vedou k dosažení stejného výsledku odlišnou filozofií
[/quote]
Preco?

 
Nahoru Odpovědět
14.9.2013 13:11
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 13:18

To mi zní, jako kdybys znal jen strukturované a objektově orientované programování. Jako kdyby nic jiného neexistovalo. Co třeba funkcionální nebo logické programování? Zkusil jsi to někdy?

Nahoru Odpovědět
14.9.2013 13:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na vitamin
David Hartinger:14.9.2013 13:19

Přál bych ti pracovat v PHPčku s kódem 3. strany, který psal někdo tak, jak mu to přišlo pod ruku a jak to PHP umožňuje. Hned bys to pochopil :) Třeba na to časem přijdeš sám.

Nahoru Odpovědět
14.9.2013 13:19
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Luboš Běhounek Satik:14.9.2013 13:21

PHP je kapitola sama pro sebe :D

Nahoru Odpovědět
14.9.2013 13:21
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na David Hartinger
Michal Žůrek - misaz:14.9.2013 13:21

špatné věci se lidem nepřejí...

 
Nahoru Odpovědět
14.9.2013 13:21
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:14.9.2013 13:23

A pak se divíš, že nesnáším frameworky. Stačí, když no nějakého nakouknu a hned vidím, že ho psalo nějaké programátorské prase.

Nahoru Odpovědět
14.9.2013 13:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:14.9.2013 13:25

Tak ono toho existuje hodně :) V praxi se však používá výhradně OOP a deklarativní SQL. Bude to tím, že jsou nejlepší. Až budou další paradigmata na takové úrovni, že se začnou vážně používat a to nejen pro nějaké specifické účely, tak se o ně teprve začnu zajímat. Microsoft vyvíjí svůj F#, třeba z toho něco bude.

Nahoru Odpovědět
14.9.2013 13:25
New kid back on the block with a R.I.P
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 50 zpráv z 59.