Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od faraon »

Také je tu ještě možnost použít Python a Pygame, takže to bude snadno přenositelné na jakýkoliv počítač, tablet, a spoustu mobilů ;-)

Ještě jedna poznámka, ta Java nebo C#, to je něco jako bys chtěl trávníček před domkem posekat kombajnem. Je to určitě jednodušší a rychleji proveditelné než míchat benzín s olejem do sekačky, startovat jí lankem, a půl odpoledne šmaťchat sem a tam. Ale ať chceš nebo nechceš, musíš sebou vláčet celý kombajn, i s jeho spotřebou a randálem. Je to opravdu potřeba?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od satik »

C# / Javu dneska taky rozjedeš všude :)
U C# na Windows máš jistotu, že v PC už je .NET 3.5, dokonce mám pocit, že i 4.5, což je cca 80-90% všech PC, na Linuxu to lehce rozjedeš přes mono (a navíc MS chystá .NET pro Linux).
Navíc je i micro dot net framework, takže ho můžeš rozjet už i v různých přístrojích.
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Oxxid
člen BSOD týmu
Příspěvky: 6194
Registrován: 07 pro 2012 19:16

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od Oxxid »

C# rozdejes na vsech mobilnich platformach treba pomoci Xamarinu. Faraon nema rad MS ani cokoli s nim spojene :lol:
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od satik »

To je mi jasne podle jeho avatara :)
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od faraon »

Když už se tady tak krásně hádáme, tak přidám jeden trochu offtopic:
satik píše:Fuk to je co se týče výsledku, ale např. v C# načíst řádky textového souboru je jeden krátký příkaz

Kód: Vybrat vše

List<String> lines = File.ReadAllLines("soubor.txt");
Zkus si napsat kód se stejnou funkčností v C++, bude to nejspíš kolem 10 řádků, když se budeš hodně snažit, nacpeš to možná i do pěti :)
No právě. Samozřejmě že v jazyce který má deset příkazů a nějaké dvě stovky funkcí ve standardních knihovnách (které najdu na kterékoliv platformě) si můžu načíst soubor do paměti jakýmkoliv způsobem si vymyslím, zatímco v jazyce obsahujícím v základu čtvrt milionu metod si prostě vygooglím nějakou, která aspoň vzdáleně připomíná to co bych chtěl udělat, tu tam plácnu, a ani zbla netuším co za bugy, prasárny a backdoory obsahuje. Hm, tak já radši udělám tohle:

Kód: Vybrat vše

include "moje_werky.h"
char **lines;

if ((   lines = file_read_all_lines("soubor.txt")   ))
   { něco provedu }
else
   { Error, soubor nelze číst! }
Což je totéž na jednom řádku, plus okamžitá kontrola chyb. Co se stane u tebe, když se soubor nenačte?
satik píše:C# je přeložené do bajtkódu...
Ale no tak, a co je to vlastně ten bytekód? Slyšel jsi někdy pojem tokenizovaný BASIC? Zdrojový kód programu se totiž sice zapisuje a zobrazuje v textové formě, ale v paměti je uložený v jakémsi "polopřekladu", tedy že pro každý příkaz a každý prvek existuje určitý kód, který se pak v interpretu provádí přímo, bez nějakého zdržování se porovnáváním řetězců. Takže BASIC je také bytekód pro virtuální stroj, jenom se mu tak před padesáti lety ještě neříkalo.
U některých počítačů, jako třeba Wang nebo Sinclair, se dokonce ty tokeny zadávaly z klávesnice přímo, tím že každé klávese byly přiřazené přímo konkrétní kódy, a pro vložení klíčového slova stačil jeden stisk, místo zdlouhavého vypisování po písmenkách a převádění z textu. Díky tomu se vešel do pár kilobajtů ROM.
Když si k tomu přidáš všechno co ten BASIC prováděl, od zpřístupnění periférií, práce s grafikou včetně spritů nebo zvukem, kompletně dynamickou správu paměti (samozřejmě to nesměl být ubohý M$ crippleware na Commodore 64, kde se všechno muselo dělat přes POKE), zjistíš že třeba .NET toho dnes neumí o moc víc... Jo, ten má prý být někdy v budoucnu i pro Linux, ale já ten program chci mít právě teď a potřebuji ho rozjet na Raspberry Pi pod Plan9!

Takže bych to uzavřel:
  1. Nauč se Lisp, ať pochopíš funkcionální programování.
  2. Nauč se Smalltalk, ať pochopíš objektové programování.
  3. Nauč se C, ať pochopíš strukturované programování.
  4. Nauč se Prolog, ať pochopíš logické programování.
Ten zbytek už pak tak nějak přijde sám.

A tohle doporučuji důkladně prostudovat, vzniklo to dávno před mým avatarem: ;-)
https://web.archive.org/web/20111011140 ... icrosoft-1
https://web.archive.org/web/20111011130 ... icrosoft-2
https://web.archive.org/web/20111011202 ... icrosoft-3
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od satik »

Použití máš sice na jeden řádek, ale nějak jsi pozapomněl, že nejdřív musíš napsat ty dva soubory moje_werky.h a moje_werky.c(pp) , takže je to ve výsledku třeba 15 řádků :)
A proč vynalézat kolo, když už to někdo napsal za mě? Samozřejmě si to můžeš napsat svým způsobem, pokud ti ten jejich nevyhovuje, ale to se stane málokdy.
Bugy a prasárny můžeš najít všude, opravdu si myslíš, že jsi lepší programátor než ti v Microsoftu? A backdoory? Tím myslíš co? Klidně se můžeš podívat na zdrojové kódy, jak mají co napsané, tady si můžeš najít třeba zmiňované File.ReadAllLines(): http://referencesource.microsoft.com/#m ... 59e8706c26
Co se stane u tebe, když se soubor nenačte?
Vyhodí se odpovídající výjimka, překvapivě, detailněji popsané to máš na webu, pro jistotu ti to linknu https://msdn.microsoft.com/en-us/librar ... .110).aspx :)

Stačí jen umět použít google, případně znát stránky microsoftu :)
Ale no tak, a co je to vlastně ten bytekód? Slyšel jsi někdy pojem tokenizovaný BASIC? Zdrojový kód programu se totiž sice zapisuje a zobrazuje v textové formě, ale v paměti je uložený v jakémsi "polopřekladu", tedy že pro každý příkaz a každý prvek existuje určitý kód, který se pak v interpretu provádí přímo, bez nějakého zdržování se porovnáváním řetězců. Takže BASIC je také bytekód pro virtuální stroj, jenom se mu tak před padesáti lety ještě neříkalo.
Tvrdím snad někde něco jiného? :) Přečti si i druhou část toho mého souvětí, pro jistotu ti to důležité zvýrazním:
C# je přeložené do bajtkódu (MSIL - něco jako assembler, ale ještě nezávislý na procesoru) a ten je pak na počítači, kde se kód spouští, přeložen normálně do strojového kódu přímo pro daný procesor (a optimalizován) - tudíž může mít i výhodu optimalizace pro konkrétní procesor, zatímco aplikace napsaná v C++ ne.
Použití bajtkódu samo o sobě neříká nic o tom, jestli je program interpretován nebo ne, to záleží až na tom, jestli ty tokeny jsou prováděny jeden po druhém a nebo je vygenerován a spouštěn až výsledný strojový kód.
Jo, ten má prý být někdy v budoucnu i pro Linux, ale já ten program chci mít právě teď a potřebuji ho rozjet na Raspberry Pi pod Plan9!
Pak si to napiš v tom jazyce, který podporuje Plan9, pokud by nebyl podmínkou Plan9, pak na RaspBerry můžeš použít .NET Microframework http://blogs.msdn.com/b/laurelle/archiv ... art-1.aspx .

Důvody, proč máš / nemáš rád tu či onu firmu jsou tvoje věc, já se snažím věci posuzovat objektivně (i když je to těžké a taky se mi to nedaří vždy :) ) podle produktů.

--- Doplnění předchozího příspěvku (23 Led 2015 08:13) ---

A ještě když tu byl zmiňován Wolfenstein v prohlížeči, tak přidám variaci na Wolfensteina psanou v C# včetně zdrojáků https://www.dropbox.com/sh/3bw53rf842qr ... jaywa?dl=0 (já psal hru, kámoš editor).
Má to asi 8000 řádků, kdyby jsi to psal v C++, tak bys byl rád, kdybys to nacpal pod 15 000 řádků :)
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: 22 kvě 2007 11:34
Kontaktovat uživatele:

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od X »

Ještě k Pure Basicu:

http://www.pc-help.cz/viewtopic.php?f=1 ... 5&start=22

Příkazy Pure Basicu >>> http://www.pc-help.cz/viewtopic.php?f=6 ... 4&start=36

Kniha o Pure Basicu (zhodnocení), 89 stran, česky >>> http://people.fsv.cvut.cz/~svobodal/pur ... eBasic.doc

Pure Basic lze použít pro cokoli, i 3D hry, objektové programování ... je mimochodem rychlejší než C#.



Upřesnění k C# (a obecně k #):

C# není intepretovaný jazyk, jede na virtuálním stroji: zkompiluje se do meziproduktu (CIL) a to pak šlape jako intepretr (rychlost je mezi interpretem a kompilerem):

Obrázek
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od satik »

C# není intepretovaný jazyk, jede na virtuálním stroji: zkompiluje se do meziproduktu (CIL) a to pak šlape jako intepretr (rychlost je mezi interpretem a kompilerem)
Nepřesné a zavádějící (stejně jako ten obrázek).

.cs zdrojáky jsou zkompilovány do MSIL který je pak uložený v managed .exe nebo .dll

Při spuštění se to načte do CLR, který to přeloží do nativního kódu přímo pro daný procesor a až to se pak spouští. Proto je rychlost téměř srovnatelná s C++.

Podrobněji zde:
https://msdn.microsoft.com/en-us/librar ... s.90).aspx
https://msdn.microsoft.com/en-us/library/z1zx9t92.aspx
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Rutherther
Level 2
Level 2
Příspěvky: 227
Registrován: 10 říj 2014 13:01

Re: Zacít s C nebo c++? Je to vůbec dobré rozhodnutí?

Příspěvek od Rutherther »

Ještě jednou díky všem. Myslím, že není co řešit, takže lock.
Zamčeno

Zpět na „Programování a tvorba webu“