- A hozzászóláshoz be kell jelentkezni
- 1886 megtekintés
Hozzászólások
Ha nincs jelentősége, akkor persze, hogy i, j, k.
De ha van értelme jelentéssel bírónak akkor azt.
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
- A hozzászóláshoz be kell jelentkezni
Amikor a változó nem árul el semmit, csak mondjuk iterációban van, akkor használom. De! Eddig úgy tudtam azok együttes használatát kell elkerülni aminek a betűképe hasonló vagy együttes használata nehezen olvasható.
Ilyen a typoban [i, j] [i,l] [m,n] [p,q] [a,c] [g,q] [o,p] ...
- A hozzászóláshoz be kell jelentkezni
Aki ezeket osszekeveri, azoknak leginkabb a nagyobb/modernebb fontokat vagy a lezeres szemmutetet ajanlom.
- A hozzászóláshoz be kell jelentkezni
Ha szaz esetvol csak egyzser nezi be az embe, az mar eleq indok arra, hogy masd hasznaljjon, mert az agx egesz jol behejsttesiti a dolgoqat, hogy minrk kene ott lemmie.
A gep viszont erzekeny arra, hogy most akkor az i vagy j. :-)
- A hozzászóláshoz be kell jelentkezni
Oke, meggyoztel, le is foglaltam jovo hetre egy lezeres szemmutetet.
- A hozzászóláshoz be kell jelentkezni
Lassítja az olvasást. Felesleges kognitív terhelés. Nem én találtam ki.
- A hozzászóláshoz be kell jelentkezni
+ nekem már gyanús, hogy ha egymásba ágyazott for-ciklus van, akkor ott már a kettő között van tartalmi összefüggés, és lehet beszédes neveket adni. Mondjuk 2D array(-szerű) adatstruktúráknál x/y, bizonyos algoritmusoknál left/right, stb. Az i/j (a/b, stb.) nekem már határeset, hacsak nem egy-két soros a teljes ciklus.
- A hozzászóláshoz be kell jelentkezni
Nem én találtam ki.
Lehet, hogy pont ez a bajom. :)
Mindenki OCD-s meg PTSD-s arra, amit mar kicsit is latott cirkuszt okozni es lassan jott ra miert. Igy tanulunk mi emberek.
De valahol meg kene talalni a balance-t a "nem igaz, hogy nem birod ki, hogy masik forrasfajlba is belenezel" es a "felesleges kognitiv terheles mas forrasfajlba rakni / abban a forrasfajlban hagyni" kozott pl.
Egyik forumtarsunk alairasara eskuszom: the only valid measurement for coding quality is wtfs/min. :)
- A hozzászóláshoz be kell jelentkezni
Csak akkor szoktam az i,j,k-tól eltérő iterátor neveket használni, ha több egymásba ágyazott, hosszú ciklusról van szó, de ugye itt jön(ne) képbe a refaktorálás.
I hate those Smurfs!
- A hozzászóláshoz be kell jelentkezni
a java stream óta már csak nagyon ritkán kell bármilyen index változót használni, és van hogy az is code smell gyanús
- A hozzászóláshoz be kell jelentkezni
Vannak sokkal jobb megoldások az indexeléses for ciklusoknál. Azokat használom.
- A hozzászóláshoz be kell jelentkezni
Egy jol iranyzott goto mindenre jo. :-)
- A hozzászóláshoz be kell jelentkezni
pontosan ;) a proci szamara ezen feladatokra csak jol iranyzott goto-k leteznek, semmi mas :))
- A hozzászóláshoz be kell jelentkezni
:-D Az a másik véglet, onnan indultunk.
Annál olvashatóbbak a ciklusok, aztán jönnek, a foreach struktúrák, az iterátorok, majd a rekurzív függvények és a magasabb rendű collection kezelő függvények, mint pl. a filter, map, reduce.
- A hozzászóláshoz be kell jelentkezni
Hat a map meg a reduce az minden, csak nem olvashato.
- A hozzászóláshoz be kell jelentkezni
Igen, mikor divat lett és elkezdtek ilyen egysoros rejtvényeket írni a kollegák, akkor fogtam a fejem szépen. Azért bele lehet jönni, ha muszáj.
- A hozzászóláshoz be kell jelentkezni
Az olvashatósághoz hozzátartozik, hogy egy sorba csak egy "utasítást" írunk.
- A hozzászóláshoz be kell jelentkezni
Neked ;-)
Összekevered az olvashatóságot a megszokottal (familiar).
- A hozzászóláshoz be kell jelentkezni
Nem, nem keverem.
De azt nem allitom en sem, hogy nem lehet megszokni.
De azt igen, hogy nem konnyu megszokni es elso 20-30 alkalommal biztosan pislogos, hogy egy map hivasban ki kivel van es mibol mi lesz.
- A hozzászóláshoz be kell jelentkezni
A magyarázatból is látszik, hogy kevered. ;-)
Ha 20-30 alkalommal pislogsz, hogy ki kivel van, akkor még nem szoktad meg, így persze, hogy tévesen azt gondolod, hogy kevésbé olvasható. Az olvashatóságot csak úgy érdemes összehasonlítani, ha két ugyanolyan megszokott dologról van szó.
persons.map(person -> person.getName())
vs.
List<String> result = new ArrayList<>();
for(Person person : persons){
result.add(person.getName());
}
Ha ugyanolyan megszokott mind a két szerkezet, akkor az első könnyebben olvasható, mint a második.
- A hozzászóláshoz be kell jelentkezni
1. A masodik peldadat kb. senki nem hasznalja pont igy. Pont azert, mert konszenzusosan olvashatatlan.
2. Vannak olyan alternativak, amiket 2-3-4 nezes/pislogas utan megszoktam. A map-nal ez nagyon nem igy ment. Van osszehasonlitasi alapom boven.
3. A fentebbibol kihagytad az assign-t, hogy rovidebbnek tunjon, csaltal.
4. A lentebbibol legalabb az egyertemu, hogy mi hanyszor fut le es hogy hogy lehet belole valami gyorsabbat osszerakni ha nem eleg jo. A fenti write-only.
- A hozzászóláshoz be kell jelentkezni
1. Ezt csinálja a map, azért az a példa.
2. Várom az alternatívákat, amikor egy collection-t át kell alakítani.
3. Milyen assign-t?
4. A fentiből is, csak nem szoktál hozzá. Pont annyiszor fut le, ahány eleme van a persons collection-nek. Nem lehet gyorsabbat összerakni, ha az a cél, hogy minden elemét átalakítsuk ;-) Talán vannak olyan nyelvek, ahol lassabb a map, mint a ciklusos szerkezetek, de amiket én ismerek, ott legalább olyan gyorsak, pl. Haskell, Scala, Rust.
A fenti write-only.
Kb. csak folytonosan ki kell olvasni:
A személyek minden elemét alakítsd át úgy, hogy a személyt cseréld le a személy nevére.
- A hozzászóláshoz be kell jelentkezni
A lentebbibol legalabb az egyertemu, hogy mi hanyszor fut le es hogy hogy lehet belole valami gyorsabbat osszerakni ha nem eleg jo.
hogyan lehet gyorsabb?
- A hozzászóláshoz be kell jelentkezni
Function call overhead nelkul peldaul? Kiderul hogy nem is kell getter pl.?
Erosen nyelv- es forditofuggo, de furcsa, hogy pont ehhez nem volt fantaziad. :)
- A hozzászóláshoz be kell jelentkezni
ah, értem.
és ez az eredeti kommentben szereplő fentebbi, lambdá-s példából neked nem hasonlóan egyértelmű?
vagy akkor mire az összehasonlítás, hogy a „lentebbiből legalább egyértelmű”.
- A hozzászóláshoz be kell jelentkezni
Eleve nem a lambdarol, hanem a maprol volt szo.
A lambdara egy rossz szot se szoltam.
- A hozzászóláshoz be kell jelentkezni
Ahogy ezt a klasszikus mondja: "Az igazi programozó nem fél a GOTO-tól!"
- A hozzászóláshoz be kell jelentkezni
Kizárólag hibakezelésben használom, amikor hiba esetén a függvény végén például hibát logolok, lezárok hardware eseményeket, file-okat, akármit, majd kilépek. Az assembly más, mert ott mindig GOTO van, vagy nevezik branch-nek, jump-nak, bárminek. Esetleg feltételes skip és utána goto.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Csak egy sith gondolkodik végletekben.
- A hozzászóláshoz be kell jelentkezni
Kedvenc hozzászólásom a szálból:
How about standardForLoopIncrementingIndexCounterWithNothingSpecialAboutItWhatsoever?
- A hozzászóláshoz be kell jelentkezni
Alig várom a holnapi munkanapot, ez első ciklusomnál ezt fogom használni.
Ha tartós rendszert építesz és okos csapatot nevelsz, akkor száz kiadásban sem érheti baj; ha csak a gépekre hagyatkozol, akkor egyszer jól jársz, máskor rosszul; de ha sem a rendszer nem bírja a terhet, sem a csapat nem tanul a hibákból, akkor minden egyes kiadás kockázat.
- A hozzászóláshoz be kell jelentkezni
Aki nem "helyzetfüggőt" választott, az miért nem? :)
- A hozzászóláshoz be kell jelentkezni
Előrebocsátva: csak "kocaprogramozó" vagyok, ami magamnak kell és le tudom programozni (értsd: tudás és idő is adott), azt megcsinálom.
Olvasgattam a Robert C. Martin-féle Clean Code könyvet, és próbálom a benne lévő elvek jelentős részét betartva a programocskáimat írogatni. Nem fájdalmas ciklusváltozónak egy karakternél hosszabb nevet választani, és többször úgy tapasztaltam, hogy tényleg hasznos. De amikor lehet, a for-ciklusokat igyekszem kiváltani az lapply-val (vagy hasonlóval), ilyenkor az esetek nagy részében nem is kell ciklusváltozó.
- A hozzászóláshoz be kell jelentkezni
Azert mert az a helyzetfuggo az nalam az esetek 99%-ban az egybetus kategoria (vagy i2, i3, i4..., de en azt belevettem az egybetusbe, mert kb annyira descriptive) Nyilvan ha van valami nagyon egyertelmu es frappans nev amit lehet a valtozonak adni, akkor adok neki, de elegge ritka., foleg ha szigoruan ciklusvaltozot nezunk, es nem pl a foreach valtozojat (bar nalam az is sokszor egybetus...).
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Igen, azt kellett volna, de felröhögtem, mert a napi munka során, az egysoros ciklusoknál bizony egybetűs van. És 80-90%-ban úgy használom.
Ha meg scriptet írok, ami még gitbe is bekerül, az persze más, de... de ezt éreztem jellemzőbbnek.
- A hozzászóláshoz be kell jelentkezni
Mert nagyrészt foreach-t és társait használom. Mikor nem, akkor szükség van az index-re, de felesleges kiírni azt, hogy index, így lesz mindig i.
- A hozzászóláshoz be kell jelentkezni
Mert ritkán helyzetfüggő. Persze, egy mátrixszorzásra nem írnék olyat (bár, végülis, miért ne?), hogy
do irow = 1: n
do icol = 1: n
c(irow, icol) = 0.0_dp
do isum = 1: n
c(irow, icol) = c(irow, icol) + a(irow, isum) * b(isum, icol)
end do
end do
end do
de főleg azért nem, mert olyat írnék, hogy
auto c = prod(a, b)
azaz a nagyon elemi és gyakran előforduló dolgokra (ahol nyugodtan lehetne i, j, k, ..., mert a hülye is látja, hogy miről van szó) úgyis van függvény, a kevésbé elemi dolgoknál pedig nem baj, ha beszédes, numIterations, indexPolygon, .... Biztos előfordul, hogy mégis meg kell írni valami trivialitást, akkor kivételt teszek.
- A hozzászóláshoz be kell jelentkezni
Elsősorban amit az előírt coding standard meghatároz. Ha beszédes neveket kell hasznáéni akkor lehet kreativkodni (meg átirni a copy-paste -t ;-D)
"antiegalitarian, antiliberal, antidemocratic, and antipopular"
- A hozzászóláshoz be kell jelentkezni
Én évekig, egész zsenge programozópalánta korom óta beszédes neveket használtam ciklusváltozóra, mert az i, j, k, l, stb, amit a példakódokban használtam nem éreztem eléggé kifejezőnek. De kb. én voltam az egyetlen a környéken, emiatt emberek még szóvá is tették, code reviewban meg itt ott, hogy mi ez a non-standard izé, hagyjam már.
Szóval végül, úgy tíz éve leszoktam róla. Amúgy is, már annyi kódot írtam, hogy értem mit csinál beszédes változónevek nélkül is. Húsz évvel később úgy tűnik, ez most újra téma lett. Arról nem is beszélve, hogy rájöttem, hogy az "i" önmagában is beszédes név, mert az "index" szónak felel meg, a boldog békeidőkből, amikor a tömbök még valóban tömbök voltak nem tömbnek álcázott láncolt listák vagy hashtáblák és minden fejlesztő tudott assemblyben is (v.ö. "index regiszter" pl., x86-on ugye SI/DI (source index, destination index)...).
Nekem inkább az a gondom mostanában, hogy pl. ha felmerül bármilyen meetingen, hogy "a szoftverminőség javítása" akkor a fejlesztők 95%-a nem pont ilyen változónévadási, kódformázási és indentálási hülyeségeken kezdene el rugózni, ahelyett hogy arra fókuszálna, hogy mondjuk a szar ne fagyjon annyit és ne leakelje el az összes RAM-ot is. De ez már egy másik rant lenne... :)
-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-
- A hozzászóláshoz be kell jelentkezni
Használjunk "foo"-t i helyett.
- A hozzászóláshoz be kell jelentkezni
Ha nem használom, akkor _. :)
- A hozzászóláshoz be kell jelentkezni
Használok egybetűseket, mert fél napomba telne egy frappáns név kitalálása, ami kizökkent. Épp elég ez a függvényneveknél. További gond, hogy használok olyan kifejezéseket, hogy egy struktúra egyik tagja tömb, annak indexe egy pointer által mutatott struktúra tagja, ami indexelve van, s amelynek van egy tagja, majd ennek az egésznek van még tagja. Ez hosszú, beszédes indexnevekkel halálosan áttekinthetetlen, nem törhető a sor úgy, hogy olvasható maradjon, az meg szintén nem jó, ha már a vízszintes scroll bar-t kell matatni.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A szavazás kérdésfeltevése nem teljesen korrekt, hiszen vannak esetek, amikor nem hogy egykarakteres, de egyáltalán nincs ciklusváltozó.
- A hozzászóláshoz be kell jelentkezni
Szerintem a kérdés valamennyire implikálja, hogy olyan ciklusokról van szó, amiben van ciklusváltozó. :)
- A hozzászóláshoz be kell jelentkezni
Én pedig erre szavaznék a ciklusváltozónak milyet használsz kérdésre:
helyzetfüggő: van hogy nem nevesítek ciklusváltozót, van hogy egykarakterest, van hogy több karakterest
- A hozzászóláshoz be kell jelentkezni
Van helyzetfüggő opció. :)
- A hozzászóláshoz be kell jelentkezni
Nemrég refaktoráltam korai kódjaim, ahol még i-t használtam, és azt gondolom, sokkal jobb egy line, ha txt file következő soráról van szó, satöbbi.
Ha tartós rendszert építesz és okos csapatot nevelsz, akkor száz kiadásban sem érheti baj; ha csak a gépekre hagyatkozol, akkor egyszer jól jársz, máskor rosszul; de ha sem a rendszer nem bírja a terhet, sem a csapat nem tanul a hibákból, akkor minden egyes kiadás kockázat.
- A hozzászóláshoz be kell jelentkezni
Nekem a kettő tartalmilag nem ugyanaz. Ha i-t látok, akkor a sor indexét keresném benne, ha line-t, akkor pedig a konkrét sztringet.
- A hozzászóláshoz be kell jelentkezni
Igyekszem nem használni ciklusváltozót. Ez kotlinban egész könnyen megoldható :)
- A hozzászóláshoz be kell jelentkezni
Nagyrészt (99%) java-zok, ott pedig inkább foreach-elünk ma már. Egyébként "i". Hagyományos.
- A hozzászóláshoz be kell jelentkezni
Nemcsak neked írhattam volna, de ha már így a fele csapat rákapott arra, hogy foreach loopban nincs ciklusváltozó, és úgy nem lehet mire szavazni, hát... :)
for l in some_file:
pass
for line in some_file:
pass
for config_file_mittudomén_milyen_line in some_file:
pass
- A hozzászóláshoz be kell jelentkezni
Ha nem kell sehol se a változónév, szokás _ jelet betenni. Ezzel először Python kód esetén találkoztam. Tehát nem nevesítjük, ami nem kell.
for _ in some_file { ... }
Ha pedig mégis nevesíteni akarjuk, mert segít a megértésben, akkor _line, ezzel jelezve hogy nem akarjuk semmire használni.
Egyébként Python3 esetén még normál változó ez, print(_) kiírja az _ értékét. Rust esetén az _ ténylegesen a "nincs változónév" szerepet tölti be, ezáltal nem enged az _ jelre változóként hivatkozni.
- A hozzászóláshoz be kell jelentkezni
De ez miért gond? Mármint értem, sok nyelvben létezik ilyen, ez egy tök jó feature (én is használom) de ettől még a szavazás megválaszolható. Azokból az esetekből kell kiindulni a szavazáskor, amikor van ciklusváltozó. :)
Milyen gyakran van olyan, hogy végig kell iterálni egy listán, tömbön, akármi, de nem kell semmit kezdened a konkrét adatokkal? Nyilván előfordul ilyen, de ez inkább a kivétel, nem? A példámban a "pass" helyére ne egy statikus szöveg N számú printelését képzeld oda, hanem valami érdemi feldolgozást. Nagyon ritkán kell végigiterálnom úgy egy szövegfájlon, hogy egyik sorával sem kezdek semmit. Hirtelen csak az jut eszembe, ha valamiért meg kell számolni a sorok számát, de akkor már sokkal olvashatóbb egy len(someFile.readlines()) nem?
- A hozzászóláshoz be kell jelentkezni
Az adatokkal nyilván csinálsz valami értelmeset, de a ciklusváltozóval legtöbbször nem. Vagyis az i-t általában nem tartalmazza a program kimenete, csak az adat[i]-t. Szerintem ezért jött létre a for each.
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
- A hozzászóláshoz be kell jelentkezni
Vagyis az i-t általában nem tartalmazza a program kimenete, csak az adat[i]-t.
goto :) Persze, legtöbbször nem. Csak amikor látok legacy kódban három egybeeágyazott for-ciklust, akkor örülnék neki, hogyha nem i-j-k lenne a változó neve, hanem valami értelmes. A fenti BUÉK-os példákban teljesen mindegy, persze, de az meg a másik véglet.
Nem a kimenet miatt érdekes, hogy mi a változó neve, hanem az én kognitív terhelésem miatt. :)
Szerintem ezért jött létre a for each.
Ja, én is azt használom az esetek 99%-ában, de szigorúan véve ciklusváltozó abban is van. :)
- A hozzászóláshoz be kell jelentkezni
Van, csak nem te nevezed el. :))
A "for each tanulo in osztaly"-ban a tanulo nem ciklusváltozó, az az adat. A ciklusváltozó rejtve marad.
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
- A hozzászóláshoz be kell jelentkezni
Elméletileg igazad van, de a szavazás szempontjából továbbra is remekül megválaszolható a kérdés.
- A hozzászóláshoz be kell jelentkezni
+1
Én akartam írni, hogy a kotlin `it`-ezése engem nagyon elkapott, vittem magammal más nyelvbe is, és tudom, hogy rossz szokás, de a többség annyira különvette a lambdakat a kérdéstől, hogy inkább nem írtam le.
- A hozzászóláshoz be kell jelentkezni
Ebben igazad van, foreach -ekben is általában van változó, de a két esetben egy kicsit más jellegűek hiszen for loopnál valamilyen indexálást végzünk (számmal - i), foreach esetén pedig iterálunk magukon az "üzleti" adatokon. Az sosem lesz szerintem i.
- A hozzászóláshoz be kell jelentkezni
Miért ne lehetne? Ha nem is 'i', de tetszőleges egybetűs.
for l in userInput:
pass
for i in results:
persist_to_db(i, mittudomén, akármi)
Nyilván ez egy-két soros ciklusnál jól működik, nagyobbaknál kevésbé. Ezért ikszeltem helyzetfüggőt. :)
- A hozzászóláshoz be kell jelentkezni
Persze hogy lehet. Konvencionálisan szerintem nem felel meg. Nem is az volt a kérdés hogy mi lehetséges technikailag, hanem hogy számodra mi az elfogadható.
- A hozzászóláshoz be kell jelentkezni
Modernebb nyelvekben altalaban van lehetoseg iteralasra ciklusvaltozo-mizeria nelkul, legtobbszor azt hasznalom.
Ha megis kell a ciklusvaltozo, legtobbszor egy karakteres nevet hasznalok (i,j,k,l), mert altalaban nincs semmilyen kulonos jelentese (es mert matek), neha, amikor van, vagy szeretnem javitani az olvashatosagot (pl. tobb van beloluk), el szoktam nevezni felhasznalasnak megfeleloen: <whatever>Index, <whatever>Count, etc.
- A hozzászóláshoz be kell jelentkezni
node
i-t hasznalnék, de a lint beszól, higy inkább index legyen. Elfogadom.
Ahol pedig for...of van (esetek 90%-a), ott az elem nevének jelentése van, nincs index változó.
- A hozzászóláshoz be kell jelentkezni
Ebben én is bűnös vagyok, legtöbbször reflexből i, j, k, l, stb. megy ciklusváltozónak. Régi megszokás, BASIC és Pascal könyvekben is ezt láttam mindenhol, beidegződött. Igazából ez az általános programozói szokás még régebbre megy vissza, pl. a Fortran-ben is ez volt, hogy a változó nevének első betűje jelezte a típust is, pl. az i-vel kezdődőek integer típusúak voltak, és ez így van a mai napig is, ha az ember az implicite none-t nem teszi be a program elejére. Innen el is terjedt az a Fortran-valami más while, until szerkezet, vagy case, hasonlóvicc, hogy „god is real”, mivel a g, o, d-vel kezdődő változók lebegőpontos real típusúak voltak alapértelmezésben.
Az indiánnak teljesen igaza van, 2023-ban erről már illene leszokni, nincs sok értelme, jobbak lennének a beszédes változónevek, de hát a megszokás túl nagy úr. Még a megszokás se lenne akadálya, a goto-ról is leszoktak a népek végül, erről az i, j-zésről is épp úgy le lehetne jönni. Igazából már a for se annyira népszerű, inkább oldják meg máshogy a loopokat. Pláne funkcionális programnyelveknél vannak rászorítva, hogy nincs for, helyette rekurzív loop van.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Arról ugye nem is beszélve, hogy mindennek az alapja a matek. Ilyen-olyan matematikai egyenleteket sokkal könnyebb azokkal a változónevekkel, ciklusváltozókkal kódolni/debuggolni, amit a szakirodalom használ. Az meg ugye olyan rövid és tömör, amennyire csak lehet.
I hate those Smurfs!
- A hozzászóláshoz be kell jelentkezni
Ilyen-olyan matematikai egyenleteket
És ha nem matekos a feladat?
- A hozzászóláshoz be kell jelentkezni
Az azt jelentené, hogy nem ismertük fel a mögöttes absztrakciót. :)
- A hozzászóláshoz be kell jelentkezni
Jogos, amikor egy szövegfájl sorain végigmegyünk, beolvasás során a háttérben számok (pl. ASCII-kódok) vannak, kiírásnál is figyelembe kell venni az egy sorban megjeleníthető karakterek számát, stb. :)
- A hozzászóláshoz be kell jelentkezni
Ti is a szakirodalomban szereplő változóneveket szoktátok használni? Például:
fn reaktancia(f: f64, c: f64) -> f64 {
let ω = 2.0 * π * f;
1.0 / (ω * c)
}
Bár nem mindig, de néha szoktam ilyet csinálni, mert kifejező. Sajnos csak a vi / vim képes natív módon bevinni a :set digraph beállítása mentén a p<törlés>* és w<törlés>* karakterkombinációval. A μ jelet pedig m<törlés>* kombinációval. Az Ω pedig W<törlés>* kombinációval vihető be.
Más editorok esetén nem tudok ilyen lehetőségekről. Esetleg érdemes lehet összeszedni, hogy a szakirodalom szerinti változó jelölést tudjuk használni a képletekben.
- A hozzászóláshoz be kell jelentkezni
Az volt a szép mikor ugyan csak kommentbe került be ilyen betű, de megjáratták egy nemzetközi csapaton többféle verziókezelőben, és a végén nagyon furán nézett ki a szövegfájl még hea editorban is :-)
- A hozzászóláshoz be kell jelentkezni
Ide kapcsolódik: https://hup.hu/node/180403
Hogy még mindig nem tudtak kihalni a nem UTF8-as rendszerek.
Tessék megnézni a dátumokat. Nem 5..10 év telt el azóta.
https://www.ietf.org/rfc/rfc2044.txt - "informational"
https://www.ietf.org/rfc/rfc2279.txt - "standards track"
És ma még mindig ott tartunk, hogy a legtöbb programozási nyelven külön kell figyelni, ha UTF8-ként akarod feldolgozni vagy továbbadni az információt.
A Rust jelenleg az egyetlen üde színfolt, ahol a string kizárólag UTF8. Pedig sokat segítene az egységesedésben, ha az UTF8 a stringekre programozási nyelv szinten ma már alap lenne és nem valami pluszkörös "ha gondolsz rá, megvalósíthatod" valami.
- A hozzászóláshoz be kell jelentkezni
Ez nem ilyen egyszerű. C-t vagy assembly-t hogyan UTF8-asítod programozási nyelv szinten, amikor byte-ot címzel? Az UTF8 ráadásul nem fix szélességű, adattartalomtól függ a szóhossz. Sőt, nincs string típus, hanem az egymás után dobált karakterekre rámutatsz, hogy mától fogva string a neved, meg a végére biggyesztel egy nullát.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
C esetén nem igazán kell kezelni az UTF-8-at külön. Teljesen jól működik minden. A forráskód meg nyilván UTF-8 így 2023-ban.
- A hozzászóláshoz be kell jelentkezni
Amíg csak berántasz egy zárt számvektort és kinyomod valahova a zárt számvektort feldolgozás nélkül, addig tényleg mindegy. A számvektor az számvektor marad.
De játszunk tovább a gondolattal. Tördeld be például 10 hasábosra a nem angolszász betűkből álló UTF8 szöveget, netán végezz vele egyéb transzformációt.
És akkor jön az, hogy ja kérem, ne használjon a "random anyanyelvű user" saját nyelvén ékezetet, mert a szoftver nincs felkészítve az UTF8 karakterekből álló szöveg feldolgozására, átalakítására.
- A hozzászóláshoz be kell jelentkezni
Számomra még az is kérdés, hogy a sokbyte-os UTF8 karakterek belsejében lehet-e valahol 0, mert ha igen, akkor az végképp világvége. Bár valahol mindegy is, mert semmiképp sem lehet végigmenni rajta byte-onként, mindenképp karakter szintű interpretáció kell.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nem, nem lehet benne. Az UTF-8 az ezen felul ugynevezett self-synchronizing code, szoval relative nehez elrontani egy UTF-8 stream ertelmezeset. Es a "surrogate" blokkot leszamitva teljesen egyertelmu a lekepezese (de ugye azt a bizonyos UTF-16ot is bele kellett eroszakolni...)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Az U+0 karaktert nyolc egymás utáni nullás bit reprezentálja.
- A hozzászóláshoz be kell jelentkezni
Erre vannak libek, amelyek figyelembe veszik az LC változón alapulva, hogy mi a kódolási séma, és ennek megfelelően kezelik a null karaktereket, stringeket. Abban viszont nem tévedsz, hogy UTF-8-nál már nem úgy megy, hogy végigjárod a stringet bájtonként.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Nincs UTF-8 belsejében 0 bájt. A 0 karakterben van, de az pont a lezáró ugye. Nem véletlenül van ez így, akik az UTF-t kitalálták nem voltak hülyék. Ha nem vágod el a stringet, akkor mindent jól fognak kezelni az eredeti C string műveletek is.
Egyébként a 0-val zárt string tárolás rengeteg szempontból nem jó, érdemes leszokni róla ha lehetséges. Én is C rajongó voltam régen, meg még kicsit vagyok is, de erről beláttam, hogy jobb a hossz+puffer tárolási mód.
- A hozzászóláshoz be kell jelentkezni
Van egy nénikém, aki állandóan kezet mos. De nem tud leszokni róla. Mondja, mi jó van abban, kezet mosni?
/Rejtő Jenő: A szőke ciklon/
Idézem:
EF BB BF 30 30 30 30 20 ...
Bizony, a mániákus kézmosásból kifolyólag így kezdődik egy hexdump, amely csak a {CR}LF[0-9][A-F] karaktereket tartalmazhatja, esetleg a DOS 3.0 kompatibilitás miatt még a ^Z-t is.
Eleve elrendeltetett, hogy a kezdés a byte order mark, - ami utf8 esetén pont szükségtelen, - de azért odaírják, mert így egyértelmű az encoding. :-D
Jó (lehet) az utf8, ha multilangual text adatokkal dolgozol, vagy írsz ki valahova, de egyébként csak púp a hátunkra. Ha a programok fajtáit számszerüsítjük és nem a darabszámát, akkor a többségében inkább hátrány az utf8 alkalmazása.
- A hozzászóláshoz be kell jelentkezni
Ez Rust? És a compiler tudja, hogy a π = PI, vagy azért valahol előtte meg kell neki mondani?
Egyébként inkább a görög betűk angol neveit használom: alpha, beta, omega stb. "pi"-t soha nem használnék változónévként.
//off: Az ω-t ki is lehetne ejteni: 1.0 / ((2.0 * π * f) * c)
I hate those Smurfs!
- A hozzászóláshoz be kell jelentkezni
R-ben megy, nem kell előtte semmit sem mondani.
- A hozzászóláshoz be kell jelentkezni
Tehetek én arról, hogy Z80 CPU-n egybetűs például a 'B' regiszter neve? :)
LD B, valamennyi
loop:
;....
DJNZ loop
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Bezzeg a FORTH-ban sincs változónév. Ja de, ott a nagy I és nagy J betű.
http://turboforth.net/tutorials/looping.html
- A hozzászóláshoz be kell jelentkezni
"Csak neked, csak most." FORTH van AVR8-ra is: https://sourceforge.net/projects/amforth/files/amforth/
Ma a gigabájtok korában megdöbbentő, hogy ekkora erőforrás elég neki, beleértve a FORTH compilert is!
- A hozzászóláshoz be kell jelentkezni
tizenévesen megtanultam a jó öreg c64-emen, hogy csakis I, azóta sem változtatok ezen.
10 FORI=0TO20STEP2
20 PRINTI
30 NEXTI
Még a végén elrontanám, és akkor jön a, aztán lehet keresgélni a GOTO spagettik között, hogy mi történt.
?NEXT WITHOUT FOR ERROR IN 30
READY.
█
- A hozzászóláshoz be kell jelentkezni
Határeset:
for (i=0, found=-1; found==-1 && i<N; ++i) {
if (...) found= i;
}
- A hozzászóláshoz be kell jelentkezni
Meta: ha egyvalami zavaró a fórumozásban, az èppen az, amikor az emberek nem tudnak tömören fogalmazni, hanem végtelen hosszúságban magyarázzák a gondolotaikat, egyre újabb és újabb érvekkel állnak elő, számtalan részlettel és példával megspékelve, míg végül tényleg oda jutunk, hogy mire a hozzászólás végére érek, az elejét már el is felejtettem.
- A hozzászóláshoz be kell jelentkezni
2023 -ban elérkeztünk oda, hogy a programnyelveket elkezdtük lebutítani, hogy a szerényebb képességű emberek is tudjanak programozni.
Noha a legtöbb programozó írása eléggé csúnya és itt nem a változónevek vagy a style -ra gondolok, hanem arra a transzlogikus gépszopató dologra amiből gyorsan kisül, hogy életében nem volt még mikrokontrolleres környezetben és fingja nincs az írónak a számítógép működéséről.
De megalakult a Rust és a GOlang is ami nagyon jó egészen addig amíg nem próbálja meg velem azt éreztetni, hogy én vagyok az ostoba, hogy C/C++ -ban dolgozom ami nem biztonságos a memória kezelés végett és miért nem váltok inkább a RUST -ra ahol ez megvan oldva és amúgy is tizmillió C/C++ -ban fordított wrapperelt lib van hozzá.
Ilyen bohóc világban élünk.
Running on FreeBSD/Bhyve
- A hozzászóláshoz be kell jelentkezni
Utalom azokat, akik szerint a Rust/Go "meg fogja olni" a C/C++-t. Vegtelenul szuklatokoruek, raadasul sokszor kinosan magas pozicioban.
Meg azt el is hinnem (de nem igazan hiszem), hogy 5-10 ev mulva nem fog uj projekt keszulni C-ben. De hogy nehanyan ugy viselkednek, mintha realis lenne hogy karbantartani se kell majd semmilyen meglevo C/C++ projektet, az nagyon ijeszto.
- A hozzászóláshoz be kell jelentkezni
Látom semennyire sem ismered a Rust-ot. ;-)
a programnyelveket elkezdtük lebutítani, hogy a szerényebb képességű emberek is tudjanak programozni.
Ennek pont az ellenkezője történik. A Rust-nak elég magas a belépési küszöbe, a szerényebb képességűek azt meg sem tudják ugrani. Miközben a lehető leginkább a biztonságos programozást helyezi előtérbe (a program hibák 90+ százaléka memória hiba), aközben meghagyja az eszközöket a legalacsonyabb szintű kezeléshez is, pl. mikrokontrolleres környezet.
Az sem véletlen, hogy a Linux kernel fejlesztésébe beemelték, szemben a C++-szal. Ezen is elgondolkodhatsz, hogy vajon azok, akik eddig még a C++-t is az ördögtől valónak tartották a C-hez képest, azok miért tartják jónak a Rust-ot.
Ha valamit nem vagy hajlandó mélységeiben megismerni, akkor ne kritizáld!
- A hozzászóláshoz be kell jelentkezni
külső ciklus: _
belső ciklus(ok): __ (___,...)
- A hozzászóláshoz be kell jelentkezni
Attól függ. Pythonban például ha listán iterálok
for op in operations:
De amúgy meg C++-ban
for (i=0; i<5; ++i)
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods
- A hozzászóláshoz be kell jelentkezni