( gelei | 2020. 11. 26., cs – 21:17 )

Szóval miért is lenne a Peri annyira "unfathomably difficult", hm?! Egyszerűen van egy belső logikája mint minden másnak is az informatikában. E logikát kell átlátni és kész.

A megértés attól lesz irgalmatlanul nehéz, hogy ez a belső logika nagyon sokszor szándékosan obscure, sokszor pedig köszönőviszonyban sincs a józan ésszel.

  1. Szintaktikailag megkülönböztetni a tömböket adattípus szerint? ([[stringtömb]]) Minek? Akkor mi az integer tömb? Midegyiké másmilyen, vagy csak a string vs többiek a különböző?
  2. Törekedni kellene arra, hogy minél kevesebb működés legyen "valamiféle értelemben". Az, hogy minek mi az inverze, az rohadtul többértelmű. A tömb első elemének kiolvasásának az inverze nemcsak az lehet, hogy a tömb első elemét írod, hanem az is, hogy a tömb utolsó elemét olvasod ki. Vagy az, hogy mindent kiolvasol, csak az elsőt nem. Vagy akármi. Ez nem derül ki a kódot olvasva és a logikát átlátva, hanem tudnod kell konkrétan, hogy a stringtömb esetében mit jelent az inverz. Mert másnál meg mást jelent, fasza.
  3. Olyan szintaxist használsz, ami kb. sehol máshol nem létezik, tök feleslegesen. Van olyan nyelv, amiben működik a doSomething argument, van olyan, amiben ugyanez doSomething(argument), de olyan, hogy doSomething() argument, az nekem felesleges bonyolításnak tűnik. Mi van akkor, ha több paraméter van? doSomething()() arg1 arg2, vagy doSomething() arg1 arg2?
  4. Több olyan syntactic sugar van nálad, ami egy ritkán használt és/vagy triviális funkciót valósít meg, teljesen értelmetlenül. Ott van pl. a @myvar+/-, ami megváltoztatja az előjelet. Az is megváltoztatja, hogy megszorzol valami -1-gyel, cserébe megint van egy szimbólumod, amit meg kell tanulni. Nem, itt sincs egyértelmű logika, akár csak az inverznél: ha én ránézek, nekem az jut eszembe, hogy ez vagy egy körülbelüli érték (mondjuk a myvar változód a 10+-5 tartományban van-e), vagy az, hogy megmondja egy számról, hogy >=0 vagy sem.
  5. Ciklusok: ha többet ágyazol egymásba, baromi áttekinthetetlen lesz így. Nagyobb ciklusnál néha a záró }-hez is odakommentelem, hogy (pl. //while(valami1 != valami2)) az melyik ciklust zárja. Vagy az IDE megcsinálja ezt újabban.
  6. Miért ennyire kiemelt szerepű nálad a string? Ha megpróbálok gyakorlati példákat találni, stringet használok kb. a legritkábban programozáskor, pláne stringtömböt. Amennyire csak az ésszerűség határain belül lehet, igyekszem minél később stringesíteni az outputot, és minél hamarabb deszerializálni az inputot, ha az stringként jön.
  7. Nem nagyon jut eszembe jó példa arra, amit (valódi) végtelen ciklussal lenne optimális megcsinálni, más nyelvi forma helyett. Minek neki külön syntactic sugar? (Lásd 1., 4. pont)
  8. Eddig a [[myvar]] jelentette a stringtömböt. Utána [[mem]]-mel foglalsz neki memóriát. Miért ugyanúgy néznek ki? Ez plusz egy kétértelműség, aminek nem látom a hasznát.
  9. "e felkiáltójeleknek tehát nincs oly szigorúan megszabott jelentése mint az eddig ismertetett szimbólumtöredékeknek" Sajnos az eddigieknek sem volt sokszor, és ez egy baromi nagy probléma. :) Miért kell több teljesen unrelated viselkedést ugyanazzal jelölni? Mintha C-ben int-tel jelölnéd a számokat és a stringeket is. Meg lehetne oldani, hogy kontextusból kitaláld, de mi a fenének?
  10. "Nos, némi fantázia segítségével ezt igenis kitalálhatja Olvasóm is!" Lásd 2-es pont, jó eséllyel kitalálhatja az olvasó, de szintén jó eséllyel nem azt fogja kitalálni, amit te. :) Nekem pl. erről egész más jutott eszembe.
  11. "ezesetben a myvar[0]-- nyilván azt jelenti, hogy a stringből kitöröljük ezt a nulladik karaktert" Nem nyilván, mert fentebb a ++ azt jelentette, hogy inkrementálunk eggyel, itt meg a -- azt jelenti, hogy törlünk valamit. Miért ugyanaz az operátor csinálja mindkettőt? Mi van akkor, ha egy int tömb egyik elemére hívod meg a -- operátort? Akkor csökken eggyel az adott elem értéke, vagy kiveszed a tömbből az adott elemet?
  12. "@mystr sprintnl" Fentebb amikor függvényt hívsz meg valamire, az úgy nézett ki, hogy sprintnl() @mystr - ez miben más? Miért jó, hogy ez más?
  13. "arc sin" Milyen logika szerint van ez külön? Fentebb ilyen szabály nem volt, hogy egy függvény állhat két szóból, nem? Ez miért kivétel?