Byla vydána listopadová aktualizace aneb nová verze 1.85 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.85 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
git.kernel.org je nově oficiálně také v tmavém vzhledu.
Richard Hughes na svém blogu oznámil, že počet aktualizací firmwarů pomocí služby LVFS (Linux Vendor Firmware Service) přesáhl 100 milionů. Přehled podporovaných zařízení, nejnovějších firmwarů nebo zapojených výrobců na stránkách LVFS.
Byla vydána nová stabilní verze 3.19.0, tj. první z nové řady 3.19, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou podporu Raspberry Pi 5.
Altap Salamander (Wikipedie), dvoupanelový správce souborů pro Windows, byl uvolněn jako open source pod názvem Open Salamander. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv2.
Společnost JetBrains představila (YouTube) svou umělou inteligenci JetBrains AI a nástroj AI Assistant v IDE.
Byla vydána nová verze 255 správce systému a služeb systemd (GitHub, NEWS). Z novinek lze vypíchnout například novou službu systemd-bsod.service.
Google představil Gemini, svůj největší a nejschopnější model umělé inteligence.
openSUSE komunita vybírá nová loga. Jedním z cílů je odlišit se od SUSE. Aktuálně probíhá hlasování o logu openSUSE a čtyř distribucí Tumbleweed, Leap, Slowroll a Kalpa.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2023-12-05. Přehled novinek v příspěvku na blogu a poznámkách k vydání. Nově jej lze používat také s tmavým tématem.
Ja proti Jave nic nemam, programuje se v ni podobne jako treba v pythonu, C++ nebo C#. Uplny zacatecnik s programovanim by se mel naucit poskladat z par zakladnich principu neco komplexniho. Vyhrabat z komplexu neco pouzitelneho a slepit, je trochu jiny typ ukolu, ktery by se mel ucit az potom.
Takze treba zacit na ASM/C, naucit se to se vsim vsudy a pak se poohlizet po neco min low-level, jako je treba C++ nebo Java.
Ve skole se ma clovek naucit premyslet, neni primarni cil si tim hned zacit vydelavat.
Je to tak, cim jednodussi jazyk, tim slozitejsi a neprehlednejsi program, pokud resim komplexni problem. Mezi C a ASM je dost primocary preklad, takze se da lehce vysvetlit, proc ty veci jsou jak jsou. Napr. k popisu funkci, stacku, promennych atd. neni nic lepsiho, nez okomentovany ASM kod. Vsechno to pak zacne zapadat do sebe.
C je urcite nejlepsi volba, ale nesmeroval bych vyuku GUI smerem, ale spis k algoritmizaci. Az pak OOP, C++ a QtCreator.
gcc main.c -o main && ./main
" v terminálu a dokumentací k stdio.h. S tímhle vysvětlit hello world kompltně a bez děr ("toho public static si nevšímej") je na půl hodinky.
Sice nevím čím se například gvim
tak liší od běžného editoru, ale mohou použít klidně gedit
.
C je jednoznačně lepší volba než Java, na Javě je rozhodně šílenost někomu vysvětlovat základy programování a pouštět fazole pro začátek je druhá šílenost.
Nevím proč rozděluješ věci, které ti vzájemně odpovídají. C je jednoznačně lepší volba než Java, protože je šílenost na ní někomu vysvětlovat základy programování.
Několik základních důvodů „proč“ vypsal Josef Kufner, a rozhdoně se není třeba hned zaobírat dynamickou alokací paměti, ale v určitém stadiu znalostí je to něco na čem pochopí lehce, jak to funguje a bez této znalosti nelze dobře programovat - je to základ.
OOP by měl být rozhodně až druhý a ne vždy nutný krok, první je třeba základy strukturovaného programování.
Poptávka - dobrý vtip - sorry, ale škola, kde učí programátory, má svůj program a neptá se takto v diskuzi (a tam je tento stejně nutný).
Pouště fazole je šílenost, protože se budou učit ovládat fazole a ne programovat.
Pár desítek minut je jedna vyučovací hodina a pak 3× zopakovat něco, co vůbec nepotřebují
a co dělá spoustu věcí za ně a při tom ne rychleji „jen to prostě nevědí“.
#include <stdio.h> void main(void) { printf("hello world\n"); }Pokud se na to dokazes podivat jako neprogramator, tak uvidis proc je cecko pro vyuku hrozne blbe: i uplne primitivni program obsahuje makro preprocesru, escape sekvence, funkce a nepouzite datove typy. I kdyz je dobre ze ten jazyk vsechno tohle umi, jsou to veci ke kterym by ses mel dostat postupne a ne je nahrnout vsechny najednou. Jak by to vypadalo v Jave si umis predstavit sam : totez v blede modrem plus jeste navic objekty, staticke metody a balicky. Naprosta pakarna. To nemuze skoncit jinak ze lidi bezmyslenkovite opisujou neco cemu (zatim) nemuzou rozumet coz je antiteze dobre vyuky.
Nebo si myslite, ze je zbytecne studenta obtezovat s OOP?Rozhodne. OOP je neco k cemu se i chytry a motivovany zak nedostane driv nez za nekolik mesicu. A behem tech mesicu presne ty vlastnosti Javy ktery pro tebe jako profika jsou uzitecny budou zacatecnika mast a prekazet mu. BTW ja o tomhle mam jistou predstavu pacz shodou okolnosti prvni jazyk ktery jsem se seriozne ucil bylo C… a byla to tragedie. Helloworld je jeste v pohode, ale to ze se ani printf() neda pouzivat bez znalosti pointeru je silene. I kdyz mam cecko rad (podstatne vic nez Javu) tak jako prvni jazyk bych ho nikomu nepral. Spis bych sahnul po nejakem interpretru – python, lua, tcl… klidne i perl. Python by byl asi idelani, ma spravu pameti, silne datove typy, objekty…muzes na nem ucit vsechno stejne co v jave (a hromadu veci o kterych se javistum nesni) – postupne.
nepouzite datove typyJenže ty sis tam vymyslel, správně to je
int main()
a chybí ti tam return 0 Main by měl mít návratovou hodnotu int (myslím ale, že se připouští i ten void
) a return by tam měl být (ale opět C99, pokud není tak tam bude 0, nicméně nedávat return
je hodně špatný začátek). Ale s tím void
bych si nebyl tak jistý, je to fce jak každá jiná a to „void“ není k ničemu.
int func()
nebo int func(void)
je určitý ( někdy zásadní) rozdíl.
Zkus si gcc -kuk.c -o kuk && ./kuk
#include <stdio.h> /* uncomment "void" and try compile */ void func(/*void*/){ printf("func\n"); } int main() { printf("hello worldi\n"); func(10); return 0; /* comment this line and add -std=C99 to compile command */ }
Pokud se na to dokazes podivat jako neprogramator, tak uvidis proc je cecko pro vyuku hrozne blbe: i uplne primitivni program obsahuje makro preprocesru, escape sekvence, funkce a nepouzite datove typy.Nikoliv. Pokud se na to díváš jako začátečník, tak tam není makro preprocesoru ale magická formule, která ti zpřístupňuje funkci
printf()
nebo ještě lépe magická formule, která se píše na začátek programu.
escape sekvenceV tomhle je třeba Python přístupnější.
nepouzite datove typyNevím, jestli bych to takto nazval, ale holt céčko.
Jak by to vypadalo v Jave si umis predstavit sam : totez v blede modrem plus jeste navic objekty, staticke metody a balicky.Java je na tohle hodně zlá.
Helloworld je jeste v pohode, ale to ze se ani printf() neda pouzivat bez znalosti pointeru je silene.Proč by se nedal používat bez znalosti pointerů?
Pokud se na to díváš jako začátečník, tak tam není makro preprocesoru ale magická formule…Presne tak. A chces aby clovek veci chapal nebo jen bezduse opisoval nabiflovany moudra?
To ti muzu popsat z prvni ruky: 1. lekce – helloworld. Par magickych formuli ale da se. 2. lekce – promeny, mozna i cykly. Aby to bylo videt tak pritlacime na pilu: prinf("i=%d", i); 3. lekce – vstup. Pro zacatek to nejjednodussi co muze byt – precist text a vypsat ho zpatky. Cili logicky pokracujeme: printf("zadal jsi: %s", s);… BÁC. Vyucujici po dlouhem drbani na hlave prohlasil neco ve smyslu "proste tam to ampersanditko musi byt, to pochopite casem". Mel pravdu, pochopil jsem to o nejakych sest let pozdeji.Helloworld je jeste v pohode, ale to ze se ani printf() neda pouzivat bez znalosti pointeru je silene.Proč by se nedal používat bez znalosti pointerů?
Mel pravdu, pochopil jsem to o nejakych sest let pozdeji.Tak to zabolí. Ale je to značně individuální, já jsem začínal na pascalu a při přechodu na C jsem zjistil jak moc mě pascal zdržoval a jak moc mi komplikoval život oproti C. A to je to opěvovaný výukový jazyk. Ale kdybych měl předtím základy assembleru, tak by mi to dalo možná ještě víc. Ale neprogramátorům spíše sedí Python, ale zase tam mám potíže s výukou v tom smyslu, že v Pythonu je ta magie sice jednodušší, zato jí je tam strašně moc.
Odkdy je vim akceptovatelný editor? Je to editor určený ke komunikaci robotů s počítačem, když zrovna nemají jiné rozhraní než klávesnici. Není ale určený lidem, natož někomu, kdo začíná programovat v C.
S mceditem bych asi nic nesrovnával — ten nemá primárně sloužit jako editor pro vývoj kódu nebo dlouhodobé psaní. Každopádně je na tom uživatel s vimem zhruba o dvacet poznání hůř než s obyčejném KWrite, o pokročilejších editorech nemluvě. Kdyby roboti chtěli používat například Kate, taky by si přišli na své. Jenže Kate má navíc ještě spoustu možností určených pro lidské uživatele, jaké (g)vim zkrátka nezná.
Vřele doporučuji KDevelop. Celkem mě překvapuje, že tento návrh tu nepadl jako jeden z prvních. (V souvislosti s tím může prospět vyhození XFCE a instalace KDE, což by bylo jedině dobře.) Nevím sice, co má znamenat pojem „vizuální programování“, ale lepší nástroj na programování v C a C++ než KDevelop se mezi relativně „lightweight“ prostředími hledá těžko. Auto-completion, integrace s Doxygenem a systém automatických odkazů mezi deklaracemi, definicemi a použitím identifikátorů je funguje zhruba stejně jako v Eclipse, jen to běží svižně, protože nejde o žádný odporný Java-centric moloch.
Mě to napadlo, ale nikdy mi nefungoval spolehlivě (samozřejmě z tvého pohledu historické verze), oproti code:blocks, kde mi to šlape.
Ale napsat, že KDevelop funguje zhruba jak Eclipse, ehm ano slouží ke stejnému (pod)účelu, ale komplexností je mnohem níže a nastavit si jej podle sebe taky moc nelze. Ano odezva java-centric-molocha je někdy horší, ale obvykle ne v těch věcech, které používáš často. Díky své „jednoduchosti“ a jednotnosti, je určitě vhodnější na výuku, než Eclipse nebo Fazole.
Já přece netvrdím, že KDevelop je stejně dobrý jako Eclipse na Javu, Python, PHP nebo na spoustu dalších jazyků. To pravděpodobně ne. Nicméně pokud si chci co nejrychleji otevřít nějaký projekt v C nebo C++ založený na CMake a okamžitě mít nějaké context-aware automatické doplňování a všechny možné vychytávky, nic lepšího než KDevelop jsem zatím neviděl. (Klasický Makefile by asi fungoval taky — koneckonců se dá nakonfigurovat téměř jakýkoliv custom build.) Pak existuje ještě QtCreator, ale s tím nemám příliš dobré zkušenosti. Nějaká forma eclipsího CDT existuje taky pro fazole i pro IntelliJIdea (což je další zajímavé IDE, na Javu prý mnohem lepší než Eclipse), ale to jsou všechno prostředí, u kterých jsem leckdy musel nastavit Xmx8g, aby mi to rozumně fungovalo, což mi sice při 16 GB RAM moc nevadí, ale stejně je to divné. KDevelop žádnou takovou nenažranost nevykazuje.
Všimni že jsem ho na závěr označil „…je určitě vhodnější na výuku, než Eclipse nebo Fazole.“
OT: Doma mám stále 4GiB RAM a Core2Duo a Eclipse šlape jak hodinky s CDT (a spoustu dalších), jen na PDT je lepší malý RAM-disk na určitou část, nebo se to uchlastá (výkonově, ne paměťově), nebo mám Galileo, kterému sice něco chybí, ale nemá problém ani z dlouhými soubory a velkým projektem. Já holt používám ti staré věc (Eclipse Juno, Lunu mám rozchozenou, ale zatím jsem nepřešel) a staré OS, které nic nežerou a stačí jim pár set mega .
Nechci Eclipse (java-pomelého-molocha), nicméně zatím mi žádné Open/Free IDE nebylo schopné nabídnout to co Eclipse.
Jako úplný základ bych doporučil jet podle knížek Pavla Herouta a jakmile studenti vstřebají C, nechal bych je ať se pokouší implementovat věci z Pavel Töpfer - Algoritmy a programovací techniky.
Dbal bych na to, aby pochopili každý krok který dělají, tj. v žádném případě nepoužívat složité vývojové prostředí, ale jednoduchý textový editor, kde si vše napíši sami včetně Makefile. S manuálem od Pavla Satrapy zvládnou používat GVim velice rychle, a když budou mít chuť, záleží jen na nich, jak moc budou využívat jeho možností. Další dobrý zdroj kde čerpat informace pro výuku je kniha Linux Začínáme programovat.
Pak se můžete vrhnout na tvoření GUI, nejlépe v Gtk, nejprve ručně, poté pomocí Glade.
Javu bych nechal až budou mít plně pod kontrolou výše uvedené. Díky vstřebání předchozího, jim dojde spousta souvislostí a uvidí v čem je přínost OOP.
Zkušenost se studenty na VŠ, kteří se učili programovat rovnou v Javě a Eclipse je taková, že kolikrát neměli tušení co se děje mezi editací zdrojového kódu a spuštěním programu. Stačilo jim Eclipse sebrat, nechat dělat v obyčejném editoru všechny kroky ručně, tím si je osahaly, zažily a pochopily. Kdyby začínaly v C, měli by ještě mnohem lepší představu jak věci vnitřně fungují.
Zkrátka, složitý problém je třeba rozbít na co nejmenší dílky a ty dokonale pochopit, teprve poté z dílků složit něco většího a posunout se o level výše.
Je tam neskutečně moc bordelu tím, jak to staví OOP v ne-OOP jazyku.V závislosti na tom, jak to používáš, tě to může nebo nemusí trápit. A pokud jde o výuku OOP v C, tak jednu výhodu to má, je tam vše řešeno explicitně, nikoli implicitně.
No nevím, nechtěl bych se někoho dotknout, některé rady mi přijdou vcelku mimo. Nebylo sice řečeno o jakou školu se jedná, ale řekl bych, že tu stejně všichni (včetně mě) předpokládají technickou střední školu, nebo gympl.
Umíte si představit, kolik hodin týdně je pro takový předmět k dispozici? Taky že v případě toho gymplu nemáte ve třídě pouze samé technicky nadané lidi, které to bude bavit. Navíc ani nemůžete udávat tempo výuky podle těch lepších studentů, ale podle průměru (nemůžete prostě nechat půlku třídy propadnout). A teď taky může nastat situace, že to programování budete vyučovat pouze jeden-dva roky.
Java - V tak ukecaném jazyce se bez IDE píše dost těžko a ty jsou tak přeplácané, že se půlka času stráví jen vysvětlováním, jak něco konkrétního udělat v IDE. Navíc pro Javu je typický overengineering, takže místo aby psali jednoduchá, přímočará řešení, budou je sáhodlouze obkecávat. Navíc budete muset spousty informací zatajovat.
C - To se dá psát bez IDE, ale Vim - wtf? Osobně mám závislost na Vim-like ovládání a používám ho téměř na všechno, ale vnuťte ho člověku, který o něj sám neprojevil zájem a bude vás ze srdce nenávidět. Psaní Makefilů ... hm, takže než vlastně začnou psát v jednom jazyce, tak se musí naučit ještě nějaký speciální syntax pro Makefile, práci s gcc, .. no a pak se někdy na konci roku naučí jak teda vypsat "hello world". Super, to budou šťastní. Hlavní problém Céčka k výuce programování ale vidím v něčem jiném, zásadnějším. Vy zadáte příklad, ale absolutně nikdo nebude přemýšlet nad tím, jak ho vyřešit. Všichni se budou soustředit na to, jak se v tom vlastně píše ta věc co oni chtějí (cyklus, pole, struktura, ...).
Pusťte je ze začátku třeba na Python. Interaktivní mód se spustí jedním příkazem, tím samým příkazem se nechá vyhodnotit i skript v souboru, všechno je absolutně přímočaré a stupidně jednoduché. A přitom se nejedná o jazyk, který by se v praxi nedal použít. Spíš naopak. Jako editor poslouží naprosto cokoliv podporující zvýrazňování syntaxe.
Naucit nekoho (kdo chce programovat) zaklady C je tak na tyden. Dalsich par mesicu trva, nez si to ten clovek posklada v hlave a zacne chapat, jak z tech zakladu skladat slozitejsi veci. Ale vyucovat C znamena ho znat perfektne od ASM az po linkovani. Ucitel, ktery se to sam uci, bude ucit C rok a nenauci nic.
Python je super, ale jeho syntaxe je trochu zvlastni, napr. pouzivani odsazovani na scope mi neprijde jako moc dobry napad ucit.
napr. pouzivani odsazovani na scope mi neprijde jako moc dobry napad ucit.Proč ne? Je to jednoduché a odsazovat je stejně potřeba. Takže je to zase jednodušší než C, protože místo závorek a odsazení, stačí jen odsadit. Zase o jednu věc, která se musí dělat, míň. Stejně tak středníky, ...
Zase o jednu věc, která se musí dělat, míň. Stejně tak středníky, ...Hned dvakrát výhra. Nebudou zapomínat středníky ani závorky a uvidí jak kód opravdu poběží.
Mišmaš vzniká pokud se používají tabulátory, dřív nebo později se to nakombinuje s mezerami a pokud není nic co by to zachytilo, což je často případ skriptů a jednoduchých věcí, tak stačí mít zobrazený jinak tabulátor a pak i sfiňa by se z teho zblula.
Jinak gratuliji, ale já má taky všechno svoje jednotně (2 mezery, tab neexistuje) a klidně to vysypu jinak, pokud si to někdo bude přát (problém by mi možná vznikl v aplikacích používajících OpenGl, tam jsem kdysi používal odsazení sudé {na kód} a liché na sekvence/bloky OpenGl).
K tomu je taky definovaná „kultúra“ projektu/firmy.
Ale hold existují ohlodaní úpraváři - ono stačí málo, rychlá oprava, jeden copy&paste ze dvou různých projektů kde v jednom jsou mezery a druhém tab-y, normálně „nekultúra“ v Pythonu průser.
Jinak to zbytečný flame, já díky tomu nemám rád Python a někomu se právě proto libí.
Java ne, ale některá IDE pro Javu ano, takové fazole, pokud si pamatuji, měly/mají daleko víc problémů než vlastní jazyk.
Já jsem toto blbé pravidlo (1:1), převzal do C++ (není-li dáno jinak), je to docela fajn a poruším to opravu jen výjimečně.
Já? proč?, já v Pythonu nepíšu a nebudu, jen velmi ojediněle opravuji co někdo zplodil a když to zrovna otevřu ve vim-u, který je jinak nastavený a vidím něco jiného něž co to dělá bez záchytného bodu, tak je to radost.
Když někdo doprasí formátování třeba céčka tabulátory a mezerami, tak si řeknu „to je vůl“, ale furt se mám čeho chytit, nebo si s tisknu „Format“ (pokud to otevřu třeba v Eclipse), ale u Pythonu mám prostě oprávněný strach cokoliv udělat.Python je super, ale jeho syntaxe je trochu zvlastni, napr. pouzivani odsazovani na scope mi neprijde jako moc dobry napad ucit.Potom, co jsem kdysi viděl spolužáky vyrábět špatně odsazený kód mám přesně opačný názor. Naučit je odsazovat v Pythonu by bylo stokrát jednodušší, nehledě na to, že se syntax oproti třeba Pascalu odsazuje úplně krásně.
Staci jen naznacitPobavilo. Ale zbytek textu jsou prázdné kecy, na to nemá smysl nějak víc reagovat.
Ty závorky hodně pomáhají.V tom se neshodneme.
Tiskni
Sdílej: