Názor k článku Programovací jazyky z vývojářského pekla od Karel - Jen drobnosti: 1. Například v Javě String na int...

  • Článek je starý, nové názory již nelze přidávat.
  • 29. 4. 2016 12:15

    Karel (neregistrovaný)

    Jen drobnosti:
    1. Například v Javě String na int přetypovat nejde. Musí se použít funkce, která (definovaným způsobem), provede konverzi. U primitivních typů můžete použít explicitní přetypování, Java pak konverzi provede na pozadí za vás. Vždy je to ale konverze.
    2. Přetypování objektů v Javě hlídá typy. Takže když mi z ArrayListu přijde String a já to zkusím přetypovat na Integer, tak to hodí exception. Při kompilaci se o tom tedy nedozvím, ale za běhu mi to jasně řekne, že je problém a kde. Stále o řád lepší situace než když to akorát tiše vrátí něco jiného, než čekám.
    3. Již řadu let umí Java typovat i seznamy (viz Generics). Takže mohu ArrayListu říct, že prvky budou Integer. A on mi to pak ohlídá všude už při komplikaci a pak i za běhu. Takže do něj ten String ani nepůjde vložit. Java obecně má snahu používat datové typy a vyždímat z toho aparátu maximum.
    4. Java umí implicitní konverze. Takže vám dovolí porovnat int 0 s double 0.0 a výsledkem je shoda. Má pravidla, kdy kterou konverzi použije implicitně a kdy ne (na to upozorní už překladač). Takže například int na double vám převede, ale double na int už ne. Pořád mu to můžete přikázat přetypováním, teprve pak konverzi double na int udělá.
    5. V C stringy neexistují. Implementují se jako pointer. A to jsou čísla. Pokud pointer přetypujete na číslo, tak výsledkem bude adresa, na kterou to ukazovalo, nikoliv hodnota, která tam byla uložena. Ano, je to oblíbený chyták na nové studenty. Není náhoda, že řada lidí pointery nenávidí.

    Dá se říci, že co se "bezpečnosti při práci s typy" týká, tak PHP a Java jsou opačné extrémy. Oba poměrně snadno zvládnutelné. Je to pak o tom, zda vám víc vyhovuje "jedu si na vlastní triko" nebo "svěrací kazajka". Je ale dobré znát oba. Já osobně preferuji tu svěrací kazajku. Jsem "úzkostný typ" a dává mi to pocit sucha a jistoty.