Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Tabs are 8 characters, and thus indentations are also 8 characters. There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3.-- zdroj
wcwidth()
a wcswidth()
).
To kolik zabere místa určuje nastavení zobrazovadla, někde/v některých situacích to klidně může být jen jeden vizuální znak.To je prave to kacirstvi
On je rozdíl, jestli používáš TAB na začátku řádku pro odsazení (tam má fixní nastavitelnou šířku) nebo jestli ho máš uvnitř textu (tam je to spíš oddělovač, nikoli odsazení nebo zarovnání).
V textovym editoru plati ze sirka 1 TABu == 8 znaku.Eh? Lhar a demagog ses tady jen ty. Zdroj tveho prvniho komentare je kernel dokumentace. A kernel dokumentace je absolutni autoritou jen v pripade kernelu. Takze nevim odkud si vzal blabol ze v textovym editoru plati je sirka tabu 8 znaku. Sirka tabu je to co si clovek ve svem editoru nastavi ze bude sirka tabu.
Ve druhé anketě nemůžu hlasovat – záleží na konkrétním projektu – když přispívám do cizího kódu, musím dodržovat jejich konvence. Když je to můj projekt, tak se to snažím držet jednotně, ale najdou se i výjimky (Python). Jinak samozřejmě tabulátory (+ mezery pro zarovnávání, ale moc nezarovnávám).
Jinak samozřejmě tabulátory
Je celkem obvyklé, že věci, které různým lidem připadají samozřejmé, jsou v příkrém rozporu.
Už se tu ta diskuse vedla víckrát, nechtěl jsem se k tomu vracet, tak jen stručně.
Jeden tabulátor vyjadřuje jednu logickou úroveň zanoření. Zatímco napráskat někam 8 (nebo 4 nebo kolik) mezer je čistě vizuální/estetická záležitost. Kolik znaků má být široké odsazení při zobrazení na monitoru, to je věc subjektivní a může se měnit – naopak to, že je to jedna úroveň je objektivní fakt. V souboru by měl být zaznamenaný ten objektivní fakt a vizualizaci ať si nastaví každý podle svého, nebo podle toho, kam kód vypisuje (IDE na FullHD monitoru, editor na osmdesátiznakovém terminálu, web, kniha…).
Jeden tabulátor vyjadřuje jednu logickou úroveň zanoření. Zatímco napráskat někam 8 (nebo 4 nebo kolik) mezer je čistě vizuální/estetická záležitost.Odsazeni (at uz mezery ci tabulatory) vyjadruje ciste vizualni/estetickou zalezitost [*]. Logickou uroven zanoreni vyjadruje gramatika jazyka (tedy napr. slozene zavorky v C).
Kolik znaků má být široké odsazení při zobrazení na monitoru, to je věc subjektivní a může se měnitTo v prve rade narazi na zalamovani radku (ktere se dela podle visualni delky textu, nikoliv podle hloubky zanoreni). Pokud bys navrhoval udrzovat zdrojak nezalamovany a nechal zalamovani ciste na zobrazovaci, tak uz rovnou muzes udelat totez s odsazenim - rozumne automaticke zalamovani pro zdrojaky je IMHO podstatne narocnejsi nez automaticke odsazovani. [*] Samozrejme s vyjimkou jazyku jako Python ci Haskell.
I v tom PEP-8 je to jen doporučení. Zakázané je pouze míchání:
Python 3 disallows mixing the use of tabs and spaces for indentation.
A hlavně PEP-8 se týká jen standardní knihovny, není to obecná norma pro všechen kód v Pythonu:
This document gives coding conventions for the Python code comprising the standard library in the main Python distribution.
Naopak se tam píše:
Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.
Takže když budeš mít projekt, kde osazuješ pomocí tabulátorů a část je v Pythonu, budeš i v něm odsazovat pomocí tabulátorů a je to v souladu s PEP-8.
Tá veta nehovorí, že je to v súlade s PEP-8. Hovorí len, že ak má projekt nejaké pravidlá ktoré nesúhlasia s PEP-8 tak tieto pravidlá majú prednosť.
I v tom PEP-8 je to jen doporučení.To je imho správně.
A hlavně PEP-8 se týká jen standardní knihovny, není to obecná norma pro všechen kód v Pythonu:Je to zcela obecná, běžně užívaná a vyžadovaná norma, která je ovšem závazná jen pro standardní knihovnu. Při shánění práce v pythonu je ale imho docela běžné, že se tě ptají na PEP a jak jsi s ním na tom.
Překvapujeme mě kolik lidí hlasovalo pro tabulátor. Jsem toho názoru, že by měl být pro tyto účely zapovězený. Nejlepší je, když do kódu sahá někdo, kdo neřeší zda-li je pro odsazování použita mezera či tabulátor a mixuje tyto bílé znaky v jednom zdrojáku. Pokud se jedná o Python je to ještě zábavnější.
Jinak každý z vývojařů může mít nastavený různý počet mezer pro jednu úroveň odsazení, důležité je nahrávat do repozitáře dohodnutý počet mezer, což vyřeší automaticky skript před nahráním/stažením do/z Gitu. Ostatně není od věci, když tento skript automaticky celý zdrojový kód přeformátuje dle štábní kultury daného projektu. Přeci jen když se přechází mezi X různými projekty s různou štábní kulturou, tak je automatika spolehlivejší než člověk.
Jinak každý z vývojařů může mít nastavený různý počet mezer pro jednu úroveň odsazení, důležité je nahrávat do repozitáře dohodnutý počet mezer, což vyřeší automaticky skript před nahráním/stažením do/z Gitu.
Ale ti, kdo používají tabulátory, žádný skript nepotřebují – verzuje se jen ta sémantická informace (počet úrovní zanoření) a prezentace (počet mezer pro zobrazení jedné úrovně) se řeší jen při zobrazování v editoru.
Je to asi jako kdybys do databáze ukládal textové řetězce „true“, „false“, „ano“, „ne“ místo jednoho bitu (boolean).
Přirovnání se mi obecně nelíbí, protože ne vždy vystihne přesně situaci. Ostatně "válka" tabulátor vs mezera se táhne již desítky let a myslím, že jen tak neskončí.
Z diskuzí na toto téma podle mě plynou ponaučení:
Nejlepší je, když do kódu sahá někdo, kdo neřeší zda-li je pro odsazování použita mezera či tabulátor a mixuje tyto bílé znaky v jednom zdrojáku.Tak na to bude upozornen a kdyz to nepochopi tak se mu zrusi pristup do repozitare. Jednoduche...
... což vyřeší automaticky skript před nahráním/stažením do/z Gitu. Ostatně není od věci, když tento skript automaticky celý zdrojový kód přeformátuje ...To sned nemyslis vazne takovou "radu". Pokud ten skript neni superinteligentni AI, ktera se na to dokaze podivat jako clovek, tak tam vzdy budou corner casy, kdy z toho vypadne prasarna.
Žiadne výhody? A čo tak to, že nie je nutnosť nastavovať šírku odsadenia na 3 medzery (v mojom prípade)?
vnáší možnost zanést do kódu chyby, které nejsou na první pohled vidět.Jaké? Tebe vůbec nemusí zajímat, jak vypadá tabulátor. Prostě jen indikuje 1 úroveň odsazení. Někdo rád odsazení 4 mezery, někdo 8, někdo 2. Jak tohle vyřešíš použitím mezer?
Problém s tabulátorem je ten, že není vidět a může mít různou šířku, což může způsobit nemalé komplikace v "off-side rule languages", pokud programátor míchá mezery a taby, což je špatně. Pokud se tomuto nešvaru podaří předejít, tak není problém, a jedna z možností je na to upozornit, aby si to lidé uvědomili, pokud o tom nebudou vědět, budou takto dále chybovat.
Není to teoretický problém, s takto "zpraseným" kódem se občas opravdu setkám, takže je třeba to hlídat, jinak člověk pracuje na cizím kódu, který se znenadání začne chovat nějak podivně. Tj. není od věci mít zaputé rozlišování tabů, mezer a dát si na to bacha.
Problém s tabulátorem je ten, že není vidět
Ak má niekto odsadený kód medzerami a príde niekto s tabulátormi, tak to bude mať rovnaké dôsledky ako keď niekto do kódu odsadeného tabulátormi dá medzery. Celá tá argumentácia proti tabom je oničom lebo sa tá obrátiť na medzery a výsledok bude rovnaký.
Okrem toho medzery nemajú garantovanú šírku takže tento argument je tiež úplná blbosť. Stačí si zapnúť proporcionálne fonty, ktoré sú na čítanie vhodnejšie a celý ten zdroják zarovnaný medzerami sa zvyčajne pekne rozpadne.
Někdy je dobré přečíst si i odkazované články: "which no longer looks like a syntactically valid program! Let us say that this program is tab-significant". Také číst celou větu: "není vidět a může mít různou šířku". A především se oprostit od fanatického šíření osobních preferencí.
Obrátit tuto situaci na mezery nelze, problém totiž nezpůsobují mezery, ale taby a jejich vlastnost: "neviditelný znak s šířkou x
mezer, kde x
má hodnotu dle individuálního nastavení editoru". Tato vlastnost mmj. způsobuje:
Dobrá, nedefinoval jsem jednotku pro pojem "šířka tabu", tato jednotka je "mezera", tj. je velký rozdíl mezi tím zda-li definuji šířku jako x mm
či x mezer
.
To, že ti pro čtení zdrojových kódů více vyhovují proporcionální fonty ještě neznamená, že jsou tyto fonty vhodnější více než fonty neproporcionální. Najde se spousta lidí, kteří si myslí opak, ale nemají potřebu tuto myšlenku předkládat jako obecnou pravdu, jsme totiž individua a každému může vyhovovat něco jiného.
Na závěr ti položím otázku. Proč si myslíš, že se používají pro zdrojový kód neproporcionální fonty?
Někdy je dobré přečíst si i odkazované článkyMožná by sis ho měl přečíst naopak ty, vždyť to tam píšou: Before we begin, it is worth taking a look at what happens when no policy is agreed upon. Čili problém není v tabech, ale v nekonzistentnosti.
Obrátit tuto situaci na mezery nelze, problém totiž nezpůsobují mezery, ale taby a jejich vlastnost: "neviditelný znak s šířkou x mezer, kde x má hodnotu dle individuálního nastavení editoru".To není pravda. Když do zdrojáku odsazvaného mezerami začně někdo cpát taby, půjde to do kytek. Když někdo ve zdrojáku odsazovaném taby začne odsazovat mezerami, půjde to taky do kytek. Ty z nějakého důvodu vnímáš mezery jako "default" a taby jako něco navíc, co způsobuje bordel, ale tak to není. Mezery žádný default nejsou, možná tak v pythonu, ale tím to asi tak končí...
Problém s tabulátorem je ten, [...], což může způsobit nemalé komplikace [...], pokud programátor míchá mezery a taby, což je špatně.O tom, že míchání tabů a mezer je špatně, nejspíš nepochybuje nikdo. Co takhle postavit argumentaci proti tabům na jiném předpokladu, než že "programátor" je prase a dělá to?
Ešte raz v čom je prípad keď je niekto prasa (používa taby) a niekto iný (správny programátor) mu tam napíše do zdrojáku pár riadkov odsadených medzerami iné oproti tomu keď je niekto správny programátor (používa medzery) a niekto iný (prasa) mu tam napíše do zdrojáku pár riadkov odsadených tabmi? Tak či tak to ten človek ktorý začleňuje patch ak nemá nastavené zobrazovanie whitespace nerozozná a aj tak skončí so zmiešaným odsadením. Takže ešte raz prečo je lepšie nútiť všetkých prejsť na medzery (teda aj zmeniť svoju preferovanú šírku odsadenia tak aby bola zhodná s väčšinou) než nútiť všetkých prejsť na tabulátory? A s presne definovanou šírkou medzery na mňa nechoďte, to závisí od použitého fontu.
O tom, že míchání tabů a mezer je špatně, nejspíš nepochybuje nikdo.Michani mezer a tabu je defaultni chovani nekterych editoru (napr. emacs) a je bezne v GNU zdrojacich (napr. glibc, coreutils). Proste odsazuje se na 2 ci 4 sloupce a znak tabulator je automaticky pouzit editorem jako komprese mezer (tedy napr. kod zacinajici na 12. sloupci bude odsazen tabulatorem a 4 mezerama).
(tab )(tab )function foo() { // komentar 1 (tab )(tab )(tab )return 5; // komentar 2TAB 4 znakovy (kolega)
(tb)(tb)function foo() { // komentar 1 (tb)(tb)(tb)return 5; // komentar 2
int asagf_asdfgsdfgh_asdfg = 123; // komentář 1 int sadgasdfgh_dfgdSg_df = 456; // komentář 2nebo:
int asagf_asdfgsdfgh_asdfg = 123; // komentář 1 int sadgasdfgh_dfgdSg_df = 456; // komentář 2
int main (int argc, char **argv, char **envp) { ... if (directories != 0) { unsigned int i; for (i = 0; directories->list[i] != 0; ++i) { const char *dir = directories->list[i]; #ifdef WINDOWS32 /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/' But allow -C/ just in case someone wants that. */ { char *p = (char *)dir + strlen (dir) - 1; while (p > dir && (p[0] == '/' || p[0] == '\\')) --p; p[1] = '\0'; } #endif if (chdir (dir) < 0) pfatal_with_name (dir); } } ... }Považuje se to za 2 nebo 4 mezery? :D Osobně si myslím, že způsob odsazování je víc osobní preference než cokoliv jiného, hlavní je, aby se v jednom projektu nemixovalo několik různých stylů. Ve vlastních projektech pak používám 4 mezery, protože mi vadí, když kód s taby vypadá všude úplně jinak a často nejde šířka tabů nastavit (hlavně na webu). Použití 2 mezer je pak zase moc nevýrazné, a 8 mezer je zase trochu moc.
return 4;
často nejde šířka tabů nastavitZato odsadenie 4znakov na niečo iné je problém všade.
$ man unexpand $ man expand
Vždy bude kód, který využívá mezery a naopak i ten, který využívá tabulátory. Takže tyto hádky zůstanou napořád. Ale je důležité, že pokud se dodržují konzistentně pouze tabulátory nebo pouze mezery, není problém si nastavit libovolnou šířku ať se použije jedno nebo druhé.
Ale je důležité, že pokud se dodržují konzistentně pouze tabulátory nebo pouze mezery, není problém si nastavit libovolnou šířku ať se použije jedno nebo druhé.Problémy s přenastavením imho budou, protože abys to mohl provést kvalitně, tak potřebuješ nejen podporu inteligentního zalamování (jakože opravdu inteligentního), ale i kompletní parser gramatiky toho co parsuješ (abys nekurvil třeba multiline stringy).
Doteraz nechápem prečo pri rozdeľovaní výrazu na viacej riadkov nepoužívajú Elastic tabstops. Implementovať to do editoru nie je nič ťažké a rieši to pomerne elegantne celú tú hnusnú vec so zarovnávaním zalomených riadkov.
Akceptuji výhodu tabů v tom, že si každý může nastavit vlastní úroveň odsazení úrovní kódu. Ale pokud pracuješ na více projektech s různou štábní kulturou pro psaní kódu, tak se musíš zkrátka podřídit, mezery jen tak nezmizí.
Pokud se v projektu používají mezery, tak máš podle mě dvě možnosti, buď se smíříš s hodnotou odsazení nebo musíš provést konverzi tam a zase zpět. Nebo tě napadá jiné použitelné řešení?
Já osobně se podřizuji stylu projektu a konverzi tam/zpět neprovádím, tak mi možná chybí zkušenost s praktickými problémy, které při konverzi mohou nastat, ale nepřijde mi to tak strašné. Čistě hypoteticky to tedy vidím následovně (snad nic zásadního neopomenu).
Úroveň odsazení kódu jsou 4 mezery, které převedu na tabulátory a nastavím si u nich požadovanou velikost. Převod aplikuji jen na mezery na začátku řádku a pokud je počet dělitelný 4. Jestliže počet mezer není dělitelný, tak na to buď upozorním nebo na tomto místě neprovedu nahrazení taby. Při zpětné konverzi převedu taby na začátku řádku na 4 mezery. Pokud žádný řádek v původním kódu nezačínal na tab, tak by měl zůstat kód konzistentní, pokud tomu tak není ukáže mi to diff před kontrolou kódu než se odešle do repozitáře. Kódu, který využívá pro odsazování mezery a zároveň obsahuje na začátku řádku taby nebude příliš mnoho, takže je poměrně malá šance, že se na něj narazí. A i to lze řešit bez kompletního parseru gramatiky.
Každopádně z toho pro mě plyne, že je lepší věnovat se tvorbě kódu a neztrácet zbytečně čas s vizuální stránkou věci. Když jste mě donutili se nad tím více zamyslet a oprostil jsem se od vzteku, který mi kdy taby způsobily beru je na milost a odvolávám, že by měli být zapovězené. Jinak když už se v projektu použijí taby, tak je dobré navrhnout takový styl, aby se při nastavení jejich různé velikosti kód vizuálně nerozbil.
Převod aplikuji jen na mezery na začátku řádku a pokud je počet dělitelný 4. Jestliže počet mezer není dělitelný, tak na to buď upozorním nebo na tomto místě neprovedu nahrazení taby. Při zpětné konverzi převedu taby na začátku řádku na 4 mezery.
A teď si představ, že máš kód odsazený mezerami a v něm víceřádkový textový řetězec, který obsahuje na začátku řádků tabulátory (je to třeba kód v jiném jazyce). Nebo to může být naopak, v kódu tabulátory a uvnitř řetězce mezery. Bez parseru pro daný jazyk to opravdu spolehlivě udělat nejde.
Další věc je zarovnávání – obecně moc velký fanda zarovnávání nejsem, ale někdy se to používá a je třeba s tím při případné konverzi počítat. Příklad:
public void x() { x = max(a, b, c); }
První čtyři mezery jsou odsazení (jedna úroveň) a dalších osm mezer (dělitelné čtyřmi) jsou zarovnání. Nemůžeš každé čtyři mezery nahradit tabulátorem, protože mají jiný význam, jednou je to odsazení, jindy zarovnání. Na tom je hezky vidět, jak je převod z tabulátorů na mezery ztrátový – přicházíš při něm o důležitou informaci.
Konverze z tabulátorů na mezery je možná, ale ztrátová. Konverze z mezer na tabulátory je velmi obtížná až nemožná – potřeboval bys ten parser pro daný jazyk + poměrně sofistikovaný algoritmus, který by odhadl, co bylo odsazení a co zarovnání.
Na nějaké konverze sem tam bych se prostě vykašlal a editoval přímo to, co je ve verzovacím systému – a dodržoval konvence daného projektu, i kdyby to měly být třeba mezery. Je to sice špatně, ale pořád lepší, než to konvertovat pořád sem tam.
Viz také SmartTabs.
Další možnost, jak zarovnávat je tohle:
public void x() { x = max( a, b, c ); }
pak je to zarovnání i odsazení zároveň a není problém si nastavit libovolnou šířku tabulátoru a nic se nerozbije.
P.S. to „a“ není zarovanné pod „m“, ale je odsazené o dvě úrovně, jen to tak náhodou vyšlo + jsou to tabulátory.
a
, b
a c
by taky mohly bejt nějaký dost netriviální výrazy a pak může dávat smysl to rozdělit na víc řádků...
U takhle krátkých parametrů samozřejmě ano – neměla by to být univerzálně platná konvence, která se používá vždy. Ale když máš uvnitř delší výrazy (text, volání metod…) a/nebo je jich víc, tak máš v zásadě dvě možnosti: buď si je pojmenovat – na řádcích výše vytvořit proměnné, nebo parametry odsadit. Ne vždy je nutné nebo žádoucí vytvářet pojmenované proměnné, může to být přehlednější i takhle. (případně mít dlouhou nepřehlednou řádku až za okraj obrazovky, kde nevíš, kde který parametr začíná a končí… ale to předpokládám nechceš)
Případně někdo namítne, že místo metody s pěti parametry primitivních typů je lepší mít metodu, která přijímá jeden parametr objekt/strukturu, ve které jsou ty parametry zabalené. Možnost to je, někdy to používám, ale taky se to nehodí všude.
P.S. pointa toho příkladu byla v tom, že nemusíme zarovnávat (abychom měli začátek jednoho výrazu na znak přesně pod začátkem jiného), ale můžeme místo toho odsadit všechny výrazy o jednu úroveň (čímž jsou zároveň zarovnané, ale nemuseli jsme se párat s přesným počtem mezer a měnit formátování ve chvíli, kdy se třeba nějaká metoda/proměnná přejmenuje a změní svoji délku).
…potřeboval bys ten parser pro daný jazyk + poměrně sofistikovaný algoritmus, který by odhadl, co bylo odsazení a co zarovnání…Právě proto někdy i s trivální editací „špatně čitelného“ kódu skončím v Eclipse, kde mám 99% definici stylu a na klávesu to přeformátuji (pak neexistují „ty dva druhy odsazení“ co popisuješ, ale jen prostě „jedno“ odsazení).
$ man unexpand $ man expandTakže budem zakaždým konvertovať zdroják tam a späť, aké jednoduché opraoti tabom.
často nejde šířka tabů nastavit (hlavně na webu)CSS:
tab-size: 4;
Používáme různá odsazení pro různé soubory. Na běžné zdrojáky to jsou 4 mezery, ale třeba pro XSLT jenom 2, protože těch úrovní zanoření je tolik, že i se 2 mezerami se dostaneme do půlky obrazovky, s více mezerami bychom už vytekli ven.Dáš tam taby a dvoma klikmi v editore si odsadenie nastavíš tak aby to bolo prehľadné.
Vždycky mě vyděsí lidi co chtějí TAB.
On se jeví na první pohled jako správnější a lepší, ale málokdo, má netisknutelné znaky a nakonec jsou tam i mezery a je to domixované a jak se to chytne s jiným nastavením šířky TAB, tak je to běs, je to běs - to se s mezerami nestane (pokud se TAB vkládá jako mezery).
Přeformátovat to z mezer lze vždy na mezery i TAB-y, z mixu jen někdy.
Pro mě TAB znamená, že dřív nebo později v tom bude bordel. Komukoliv dík, většinu co chytnu v C/C++, má mezery, sice někdy víc než dvě, ale s tím lze žít :)
Přeformátovat to z mezer lze vždy na mezery i TAB-y
To právě nedá, viz #47, protože použitím mezer došlo ke ztrátě informace.
z mixu jen někdy.
Chaotický mix, kde se náhodně střídají mezery a tabulátory, je jednoznačně chyba, je to k pláči vidět takový zdroják (v jEditu mám zapnuté podbarvení mezer a tabulátorů, takže to vidím, i když jinak bych si toho třeba nevšiml – a potká se s tím člověk i u relativně slušného softwaru).
Naopak záměrný mix, kde používáš tabulátory pro odsazení a mezery pro zarovnání, je v pořádku.
Pro mě TAB znamená, že dřív nebo později v tom bude bordel.
Když jsi schopný uhlídat, aby ti lidi neposílali do verzovacího systému tabulátory vůbec, tak jsi schopný uhlídat i to, aby používali tabulátory správně.
Jakýkoliv záměrný mix je ještě větší „bordel“ než nezáměrný, protože ten děs je dělán úmyslně (což už je trestný čin ).
Složené závorky či begin/end apod. definují logickou strukturu zbytek je jen formátování, žadný rozdíl mezi odsazení a zarovnání není je to totéž. Takový konstrukt rozdílu může vzniknou například u Pythonu tam, kde se nesmíříš s propojením logické struktury a formátování.
PS: Ano za formátování se někdy označuje „nechtěné“ odsazování kódu a to chtěné za odsazovaní, ale to je jen hra se slovy.
Zarovannie je keď robím (dosť neohľaduplné voči ľuďom čo používajú proporcionálne písma kvôli lepšej čitateľnosti):
a = 123 // aaaaaa xxx = 45 // porno zdarma na porte 45 ffffff = 999999999999 // som sa zblaznil
Zarovnanie sa nachádza väčšinou vo vnútri výrazu, odsadenie zase určuje vnorenie a je vždy na začiatku riadku.
Takže je lepších 15 medzier? (teraz som meral šírku ktorá vyzerá s mojim kódom elegantne a 1 tab zaberá tých 14-15 medzier). To mám teraz akože každého nútiť používať 15 medzier len pre to, že mne sa to páči?
To je docela úlet už snad ani nehodný staršího kódu M$
Pokud se ti to líbí, tak si to používej, mě by tvůj kód nevadil, stisknu format a budu si ho číst podle svého stylu, nicméně rozumné a obvyklé nastaveni je 2,4,8 , já preferuji 2 (v případě C++ a někdy i Javy je 8 už moc - je to jak nudle).
Používam proporcionálny font, mojich 15 medzier je tak akurát (asi 4 medzery neproporcionálneho fontu).
stisknu format a budu si ho číst podle svého stylu
Jenže potíž je, když chceš i dělat změny – pak to uložíš do verzovacího systému a změnil se celý soubor – i když jsi upravil jen pár řádek. Zatímco když se používají tabulátory, každý si to taky zobrazí, jak mu vyhovuje, ale obsah souboru zůstává nedotčen.
Aké odsadzovanie použiť v roku 2014 na nový projekt?Takže keď chcem medzery použijem medzery, tu sa bavíme o odsadzovaní textu v kontexte programu, tam sú medzery zlo.
- nemohu si nastavit vlastní šířku odsazení
Ale můžu. Navíc to úplně hladce nejde ani s těmi tabulátory (věřte mi, dělám i na projektu, který počítá s tím, že šířka tabu jsou čtyři a občas je to neskutečný opruz).
- více zbytečných znaků v kódu, takže větší soubor
Před čtyřiceti lety možná, ale dneska je takový argument jen k smíchu.
- pokud zrovna nemám po ruce IDE, je to neskutečný opruz; mačkat 4x mezerník nebo delete místo 1x tab nebo delete je o karpální tunel :)
Aspoň trochu rozumná autoindentace (konfigurovatelná i na mezery) není ani zdaleka výsadou IDE
Mně z toho vychází závěr, že ve zdrojovém souboru jsou mezery zlo. Proto používám vždy taby, pokud již nejsou použity mezery.
Zatímco jiným vychází, že tabulátory jsou zlo. Jen se holt bohužel mezi příznivci tabulátorů i mezi příznivci mezer najde pár militantních jedinců, kteří své osobní preference považují za jakousi Zjevenou Pravdu, o které je potřeba za každou cenu přesvědčit všechny. Výsledek je pak pokaždé stejný jako v této diskusi.
Už jsem viděl hodně různých zdrojáků a rozlišuji jen tři kategorie:
GNU coding style je kapitola sama pro sebe a v kategoriích 1 a 3 je úplně jedno, jestli se používají tabulátory nebo mezery, hlavně když se to u jedničky v rámci projektu dělá všude stejně, trojka stojí za houby vždy.
Jak si nastavím, aby se mi 2 mezery zobrazovaly jako 4? Naopak u tabu toto není problém, můžu si nastavit tolik, kolik mi vyhuvuje, klidně pro každý typ souboru zvlášť. To v té závorce jsem nepochopil.
- nemohu si nastavit vlastní šířku odsazení
Ale můžu. Navíc to úplně hladce nejde ani s těmi tabulátory (věřte mi, dělám i na projektu, který počítá s tím, že šířka tabu jsou čtyři a občas je to neskutečný opruz).
Hm, to vysvětlujte třeba těm, kteří lezou na web z mobilů, že naprosto zbytečně stahují více dat.
- více zbytečných znaků v kódu, takže větší soubor
Před čtyřiceti lety možná, ale dneska je takový argument jen k smíchu.
A taky není ani zdaleka pravidlem
- pokud zrovna nemám po ruce IDE, je to neskutečný opruz; mačkat 4x mezerník nebo delete místo 1x tab nebo delete je o karpální tunel :)
Aspoň trochu rozumná autoindentace (konfigurovatelná i na mezery) není ani zdaleka výsadou IDE
Já jsem uvedl jasné argumenty pro taby. Proti nim jsem zatím žádný nezaregistroval kromě toho, že někteří nejsou schopni dodržovat jednotu a prasí.Mně z toho vychází závěr, že ve zdrojovém souboru jsou mezery zlo. Proto používám vždy taby, pokud již nejsou použity mezery.Zatímco jiným vychází, že tabulátory jsou zlo. Jen se holt bohužel mezi příznivci tabulátorů i mezi příznivci mezer najde pár militantních jedinců, kteří své osobní preference považují za jakousi Zjevenou Pravdu, o které je potřeba za každou cenu přesvědčit všechny. Výsledek je pak pokaždé stejný jako v této diskusi.
Já jsem uvedl jasné argumenty pro taby. Proti nim jsem zatím žádný nezaregistroval kromě toho, že někteří nejsou schopni dodržovat jednotu a prasí.+1
mix by-standard
No a? Čemu to vadí? Takhle odsazený+zarovnaný kód se ti nerozbije ani při změně šířky tabulátoru.
Když se nebude zarovnávat, jen odsazovat, tak je to ještě jednodušší a už vůbec není důvod do toho tahat mezery.
Presne tak. Nehovoriac o tom, že keď už chceme aby sa to zobrazilo čo najväčšiemu počtu ľudí správne nie je dobré predpokladať neproporcionálne fonty. Videl som dosť programátorov fungujúcich s proporcionálnymi, ale ani jedného ktorému by editor nedokázal korektne zobraziť tab.
Nehovoriac o tom, že keď už chceme aby sa to zobrazilo čo najväčšiemu počtu ľudí správne nie je dobré predpokladať neproporcionálne fonty. Videl som dosť programátorov fungujúcich s proporcionálnymiTo má být vtip?
Nie, podstatne lepšie sa to číta. Je pravda, že viem asi o 3 z 30 programátorov ktorých ako-tak poznám že používajú proporcionálne fonty, ale je to aj tak podstatne viacej než tých, ktorí používajú editor neschopný interpretovať tabulátor (0).
<justTrolling/>
Toto je trochu extrém, ale napr. na toto sa pozerá celkom dobre.
Tabulátorom. To je špecialitou elastických tabov. Na predchádzajúcom riadku je tab vložený pred úvodzovky a riadky pod tým nastavujú šírku tabulátora podľa. Nie je potrebný žiaden parser jazyka, len malý patch pre editor.
Vďaka tomuto je možné zarovnávať bez ohľadu na fonty, text sa nemusí preformátovať ak sa jeden riadok predĺžil (fakt hnusná vec vo VCS kde vyzerá že človek zmenil celý blok a pritom len pridal položku a preformátoval zarovnanie).
Jediným tvým důvodem jsou programátoři prasata.Podle této definice je by bylo 98.2 % programátorů prasata, bo smíchání takzvaného „dorovnání či formátování“ s takzvaným „odsazováním“ dojde ve většině případů a tedy je většina TAB kódu mišmaš TABů a mezer - prostě bordel.
tedy je většina TAB kódu mišmaš TABů a mezer - prostě bordel[citation needed] Vím o mnoha projektech, kde odsazují taby a bordel to není.
[tab][tab][mezera][mezera][mezera]je v pořádku, protože tabulátory zajistí odsazení na patřičnou úroveň a mezery zarovnání pod určitý znak o řádek výš.
To ale není bordel! To je správné zarovnávání.Aha, to jsem nevěděl.
Čím? Mimochodom neznášam RGB ale nie až tak ako YUV. Dnes ten blbý dekóder h.264 asi nedopíšem.
Co když bude coding style nařizovat mezery, ale někdo tam i přesto nacpe tabulátor? Pak v tom najednou nebude bordel? A ejhle, bude. Tím tedy argument ohledně odolnosti mezer vůči rozbordelaření padá.
Pokud chce někdo pracovat na softwarovém projektu, měl by si nastavit editor tak, aby správně (== v souladu s dohodnutým stylem) odsazoval, aby pro jistotu ukazoval umístění a typ bílého místa a aby případně při uložení souboru vyřešil zjevné nesrovnalosti (bílé místo na konci řádků atd.).
Linux (kernel) používá tabulátory. Illumos používá kombinaci tabulátorů a mezer (kde mezery souží k vytváření jakýchsi polovičních tabulátorů v některých případech). Bordel v tom ovšem není a nevzniká, protože coding style je jasně daný a například Illumos má ve svém build systému dokonce nástroje, které správnost formátování přímo při buildu kontrolují, což znamená, že tam vůbec nelze přispět patchem, který by porušoval coding style.
Nehájím mezery ani tabulátory — do značné míry je to věc názoru a dohody
Pokud nemáš nástroje na kontrolu, což zas tak často nemáš - u vlastních věcí, se snažím před commit-em dát „format“, bo nemám jistotu, jestli jsem style udržel. Eclipse (Juno) má stále problém s určitým užití maker a trochu tomu pak rozhodí sandál, takže to nechci jako automat.
Finta je v tom, že zamixovat TAB mezi mezery, je opravdu prasečina, protože není nic jednoduššího než si nastavit, že TAB zapisuje mezery a je pokoj, kdežto zamíchat mezeru mezi TAB-y je velmi snadné (máš furt oboje).
Pokud má projekt v C TAB-y a je to slušně udělané, tak se mi to sice nelíbí, ale nemám s tím vážný problém, ale pokud je to C++, kde je roj template v template a několika řádkové příkazy, kde si do toho někdo zamixuje (rozdělí-jedno-a-totéž) „zarovnání-SPACE“ a „odsazování-TAB“, tak jsem už napsal co to je
U mezer se zase nedá moc striktně regulovat jejich počet — ve většině editorů. Takže stačí někde omylem přidat nebo umazat mezeru a odsazování je najednou rozbité ošklivým způsobem, například tam bude n+1 nebo n-1 mezer místo „správného“ n. Tabulátor má jisté plus v tom, že tam prostě odsazovací krok buď je nebo není a nic mezi tím nenastane. Všechny problémy s mezerami a tabulátory se ale samozřejmě dají při troše pozornosti zvládnout i s jednoduchým editorem typu KWrite, který dovede ukazovat typ a umístění bílých znaků, nemluvě o pokročilejších nástrojích typu Checkstyle v různých IDE. Chyby v odsazování jsou většinou spíš společenský než technický problém.
Tiskni
Sdílej: