Před 30 lety byl Fortran základ u nás řekněme na minipočítačích řad ADT4500, SM4, případně na mainframech.
Mimo východní blok už dávno frčel také UNIX a VMS. Céčko už hrálo dost zásadní roli.
Ale před 40 lety Fortran základ byl. Najdete jej dodnes a mnoha dnešním lepičům by kurz jeho základů neškodil. Je užitečné mít nadhled - ale k tomu musí člověk dospět...
Fortran prinasa nespravne programatorske navyky. Bol to de facto prvy vseobecne pouzivany programovaci jazyk a navrhari este celkom dobre nevedeli co robia. Teoria jazykov este bola v plienkach (ak nejaka bola). Rozne chyby v navrhu sa mohli identifikovat az potom, ako vznikol fortran.
Fortran sa oplati vediet ako kuriozitu, podobne ako sa oplati vediet citat staroveku aramejcinu. Na priucenie sa niecomu je bezcenny.
Spis by kazdej mel vedet, ze ve vysledku je z ty jeho patlanice strojak ... a mel by povine aspon 50 radku svyho kodu do nej rucne prepsat, aby se na vlastni voci presvedcil, jakou prasarnu to vlastne vytvoril.
Ccko je paradni predevsim v tom, ze co z toho ve finale vyleze je pomerne jasny uz ze zdrojaku.
Tak tady je spis otazka kde je chyba :). Sice jste neuvedl konkretni pripad operace. Ale od jakehokoliv trochu inteligentniho prekladace, ktery vy pro jaky hw kompiluje bych ocekaval podobne optimalizace automaticky. Pokud se nedeji je chyba v prekladaci a ne v programatorovi.
Osobne jsem zastancem ze kazdy usetreny takt ma cenu, ale ne za cenu prehlednosti kodu (az na vyjmecne pripady). Takze napriklad nasobeni dvema urcite nebudu nahrazovat bitovim posuvem. Operaci modulo budu sice optimalizovat, ale to jen tak aby to davalo smysl, aneb operator modulo pouziji, jen se postaram o to aby ve statisticky nejcastejsich pripadech se jednalo o deleni/modulo konstantou.
Jsem se samozrejme upsal. Na konci jsem chtel zminit ze vyuziji vlastnosti ze pokud kompilator vi jakou hodnotou se provadi modulo, tak se muze vyhnout deleni a kdyz vim ze se nakonec deleni nevyhnu z duvodu nasledujici ci predchazejici operaci tak se podle toho zaridim (a i to lepsi prekladac zvladne)
Narazal som na:
"Spis by kazdej mel vedet, ze ve vysledku je z ty jeho patlanice strojak ... a mel by povine aspon 50 radku svyho kodu do nej rucne prepsat, aby se na vlastni voci presvedcil, jakou prasarnu to vlastne vytvoril."
To ze kompilator vytvori spagetti kod, ktory bezi na konkretnom procesore, rychlo je v tomto kontexte irelevantne.
Dnešní překladače tam, za běžných podmínek, bitový posun nanejvýš pravděpodobně dají.
Ale o to já se nepřu. Prostě nevidím nic špatného na takové konstrukci, pokud jsem si vědom, že zrovna na tomto místě to má být rychlé(pravděpodobně to pak trkne i toho, který to někdy po mně bude číst a upravovat). Poznámka v kódu pak odstraní případnou nejasnost.
Udržovatelnost zabíjejí daleko spíš čuňata, která se neobtěžují dodržovat domluvenou nomenklaturu a z identifikátoru proměnné pak na první pohled není vidět, zda jde o argument funkce, lokální či globální proměnnou a také nejde odhadnout co v ní je(jde li třeba o bitové pole, čítač, hodnotu signálu atd...). O tom, že jsou třeba ještě schopni se z funkce vracet na několika místech raději nehovořit...
No to je teda objev, ze k prasarne existuje jeste vetsi prasarna a ze k tezko udrzovatelnemu kodu existuje jeste hure udrzovatelny kod...
(Na druhou stranu zrovna madarska konvence a varianty, coz pocitam to, co v nejake podobe navrhujes, dneska je ponekud za zenitem, protoze IDE a moderni jazyky...)
Jasne, mnohem lepsi je mit mikroptimalizovany kod (coz je pro vetsinu prekladacu vec, ktera spise uskodi nez zlepsi), ktery je navic hure citelny a udrzovatelny, ale co kdyby to tam nahodou prekladac nedal :-D
Nehlede na to, ze o optimalizacnich algoritmech soucasnych prekladacu evidentne nic nevis
Ani sa nieje comu divit. C je predsa len nizkourovnove a aj ked je to univerzalny jazyk proste na nehodi na mnohe dnesne problemy, je systemovo orientovany. Java ma najlepsi cas za sebou a doziva z toho ze je popularna a rozlezena. Ale ma prebujnely ekosystem a taha zo sebou stale kopec nedoriesenych problemov. Naopak C++ sa sice dynamicky rozvyja ale tie nove standardy su peklo. Kopec balastu len aby c++ bolo asi dostatocne "fancy" pre novu generaciu. C# by si mohol polepsit, ak to MS nepohnoji a ak sa postupne podari presun na dalsie platformy. Ale obavam sa za nadsenie z .net core bolo prehnane. Python by mohol byt celkom slusne vychodisko.
>C je predsa len nizkourovnove a aj ked je to univerzalny jazyk proste na nehodi na mnohe dnesne
>problemy, je systemovo orientovany.
Toto nemoze byt dovod na pokles C-cka. Rast Jazyka symbolickych instrukcii (cesky jazyka symbolickych adres) toto neguje.
The Assembly language Programming Language
Some information about Assembly language:
Highest Position (since 2001): #8 in Sep 2016
Lowest Position (since 2001): #23 in Jun 2015
http://www.tiobe.com/tiobe-index/assembly-language/
Feb 2017 Feb 2016 Programming Language Ratings Change
13 13 Assembly language 2.107% +0.28%
http://www.tiobe.com/tiobe-index//
Nez handrkovani o jazycich je zabavnejsi rebricek editoru. Na stack overflow pres 70% pouziva windowsacke editory, co tak nejak neprimo rika kolik koderu vlastne ty unixy pouziva na seriozni praci?
http://stackoverflow.com/research/developer-survey-2016#technology-development-environments
Hned pod dalším nadpisem se můžete dočíst statistiky o operačních systémech:
"Last year, Mac edged ahead of the Linuxes as the number 2 operating system among developers. This year it became clear that trend is real. If OS adoption rates hold steady, by next year's survey fewer than 50% of developers may be using Windows.
Speaking of the Linuxes, Ubuntu is tops among them with 12.3% of the entire OS market for developers. Fedora, Mint, and Debian accounted for 1.4%, 1.7%, and 1.9% of all responses, respectively."
Ohľadne C (prípadne C++) sa ani nečudujem. Už keď počujem slovo pointer dostávam panický strach z toho že by som sa musel starať akokoľvek o pamäť. Z C# som zistil aký jazyk mi vyhovuje. Nestarám sa o pamäť, silná typová kontrola, veľa "natívnych" knižníc.
Teoreticky by ma zaujímal ešte Rust, Go a Swift ale nejak nemám motiváciu sa ich učiť.
no ja som sa akurát pustil do C-čka a veru nechápem ľudí, ktorí hovoria, že je to ľahký jazyk - ľahký ako myslím na učenie sa.
C-čko je podľa mňa ťažký jazyk - ale kto ho nevie - ten nie je programátor.
Aj linux sa píše v C-čku - takže bolo by fajn pochopiť ho.
Áno sú tam pointery a & nie je to isté ako && a kopa iných záludností. Spočiatku som si myslel, že bude stačiť tá legendárna kniha Ritchie a ten druhý... ale prišiel som nato, že nebude - tak som si ich zohnal tucty o C-čku.
Ale prečo sa vlastne učím C-čko? LEBO JE TO KU**A RYCHLE OPROTI OSTATNYM JAZYKOM!!!!
Buď teda budeš písať v .NET a keď chceš výkon, tak si kúp lepšie železo, alebo pohni hlavou a využi to čo už máš, ale oveľa efektívnejšie.
Mas spatny pedagogicky proces. Primarne se nauc co delaji trpaslici uvnitr pocitace. Jak funguje alokace pameti, co delaji instrukce a zkus si zkompilovat par jednoduchych kodu prekladacem bez jakkychkoliv optimalizaci. Klidne i s "tcc".
Pak budes mit vazbu na to co se deje na pozadi a muzes se odrazit dale. Vyhodne je hrat si i s nejakym boardem s mikrokontrolerem kde budes mit silnou vazbu na hw. To je neco co nase generace mela diky osmibitum ale dneska je tuhle pedagogickou cast nutno nahradit nejakym blboduionem nebo raspberry.
Ccko je v podstate hodne dobry abstraktni high level strojak. Nic vic.
Ucit se Ccko jen protoze je rychle je jako snazit se delat IT jen pro penize. Taky to nikam nevede.
Napriek tomu, že vsetci veľkí z C-ka vychádzajú
https://www.levenez.com/lang/