( saxus | 2012. 12. 09., v – 19:58 )

Nem tudnék most így hirtelen jól megfogalmazható szabályokat felállítani, hogy miért vagy miért ne. Eddigi tapasztalatok összessége az, hogy scriptnyelvek bizonyos méret felett - főleg ott, ahol már rákényszerülsz arra, hogy csupán a méretbeli nagyság miatt komolyabb, strukturáltabb architektúrát használj a szoftveredben - számomra nagyon az jön ki, hogy a scriptnyelvek többsége pont amiatt, mert lazábban kapcoslódnak egymással a dolgok, inkább hátráltatnak.

Konkrét példák:
- nagyon sok időt elvesz sokszor az, ahogy a paramétereket, ellenőrizni kell (már ha normálisan akarjuk csinálni). Mindezt úgy, hogy látom kontrasztként, hogy sokszor töredék kódból meg lehetne oldani egy típusos nyelvben, hiszen pl. ha egy csomó bejövő számot kell ellenőrizni, akkor úgy is kapok egy Exceptiont. Ezzel szemben a gyengén típusos nyelvekben nekem kell ellenőriznem, utána meg illene castolni és nem a különféle trükkös típuskonvertálásokra bízni a dolgot.
- Ez a típuskonvertálgatás PHP-nál különösen vicces tud lenni néha.
- Egy-egy refactoring iszonyú sok ideig tud tartani. Pont az elmúlt hetekben elégeltük meg kollégával a régi csontvázakat (ilyen 1..4 éves, nem használt régi dolgok) a kódban. Nekiálltunk takarítani és hát khm. lassú és fájdalmas munka végigkeresgélni az összes hivatkozást, ahelyett, hogy pl. nyomnék egy törlést az osztályra majd nyomnék egy buildot és szisztematikusan mennék végig az error listen.
- Jobb tooltámogatottság. Míg pl. scriptnyelveknél ott tartunk, hogy legyen már debugger meg auto complete, ami hellyel-közzel használható, addig más nyelveknél ez 10-20 éve nem téma, hogy van és kész. Ott már a refactoring a statikus kódanalizátorok, profilerek és sok-sok egyéb más hasznos dolognál tart az ipar. Debuggolás közbeni kódszerkesztésről (Java Hotswap, .NET/VS edit&continue) már ne is beszéljünk.
- Erre úgy is minden scriptnyelv fan úgy is azt fogja mondani, hogy "de a kóder volt a hülye" és igazuk is lenne, ha sokan nem a "mert xy-ban ez így egyszerű" érvet hoznák fel. Amikor kommunikálni kell valamivel, akkor időnként egyesek hajlamosak arra, hogy nem a szabványos megoldást használják, hanem 2-3 függvényhívásból összetákoljanak valami ahhoz hasonló, de szabványokkal végkép nem kompatibilis megoldást. Erre nagyon jó példa, a CSV, amit előszeretettel szeretnek egyesek explode+foreach+explode kombóval "feldolgozni", aztán hogy a ";" -al vagy az újsorral mi történik, az más kérdés.
- Sokszor nincs kész ajánlás arra, hogy hogyan is építse fel valaki a szoftverét, vagy mindenki megpróbálja újrafeltalálni az MVC-t (rosszul) vagy valami nagyon egyedit akar kitalálni és a végeredmény egy összekutyult karbantarthatatlan izé lesz. (Persze, tudom, lehet ezt másban is rosszul csinálni.)

És még sok-sok hasonló apróság, amely miatt egy idő után ahogy nő a projekt, úgy lesz egyre nehezebben karbantartható, debuggolható és egyre drágább a karbantartása.

Példának okáért van egy kb. 400-500K soros projekt, kb. négy és fél éve lettek lefektetve az alapjai. És ez úgy félmillió, hogy szerintem legalább 50-100K sor az idők folyamán már kikerült belőle, ahogy bizonyos részek fejlődtek vagy jöttek az új igények.

Ha most kellene kezdeni, valószínűleg Java vagy .NET lenne belőle. (Mielőtt valaki azzal jön, hogy jaj, de WS licenc kell hozzá: elenyésző tétel lenne.)

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™