A statikus nyelveknek ismerniük kell minden változó típusát fordítási időben (példa: C, Pascal, Eiffel). A forráskód fordítása hatékony, fordítási idei erős típusellenőrzés jelentősen csökkenti a hibalehetőségeket. A dinamikus nyelvek lehetőséget adnak a programozó számára, hogy olyan változókat deklaráljon, amelyek típusáról nem ad meg információkat (például: LISP, Perl, SmallTalk).
Ez egyszerűsíti a prototípus készítését és a megoldását bizonyos fajta objektum-orientált kódoknál. A Dylan jó egyensúlyt biztosít a statikus és a dinamikus nyelvek előnyei között. A programozó választhat a típus deklaráció megadása és elhagyása között. Megadott egyértelmű típusokat képes hatékonyan fordítani, és a típushibákat fordítási időben észrevenni. A deklaráció típusának elhagyásával, pedig a dinamikus nyelvek rugalmasságát éri el.
Funkcionális nyelveknél az egész program egy nagy függvény kiértékelését jelenti. Kifejezések, utasítások, és az eseményvezérelt struktúráknak van visszatérési értékük, amelyeket mint argumentumokat máshol felhasználhatnak.
A Dylan egy funkcionális nyelv, megengedi függvények írását:
A LISP-en alapuló nyelvek teljes zárójelezésű prefix szintaxist használnak. Ez számtalan egymásba ágyazott zárójelet jelent, mint a shoe-size alábbi verziójában:
Sok objektum orientált nyelvtől eltérően, a Dylan minden adatot objektumként kezel. Egész számok és szövegek is objektumok csakúgy, mint a függvények és az osztályok is.
A Dylan eléggé hatékonyra lett megtervezve. Fordítás idejű analízis és az explicit típusdeklaráció lehetőséget biztosít a fordítónak az optimalizálásra. Nyelvi elemek megengedik a programozónak, hogy egy osztályt zároljunk, ezáltal megakadályozva a későbbi alosztályok létrehozását.
A Dylan objektum modellje sok fontos tekintetben különbözik a C++ objektum modelljétől. Szabadon használhatunk többszörös öröklődést, anélkül, hogy az objektumok vágása, téves down-cast-olása vagy sok más C++-ban jellemző hiba miatt aggódnánk. A metódusok elkülönítettek az osztályok deklarációjától, ezáltal lehetővé téve, hogy a programozó új polimorfikus függvényeket írjon az osztályhoz, az érintett osztály szerkesztése nélkül.
A szemétgyűjtős nyelvekben nincs szükség a free és a delete operátorokra, mert a nem használ heap memóriát egy automatikus nyelvi rutin szabadítja fel. Ez csökkenti a forráskód bonyolultságát, megszünteti a közös objektumok referenciának számlálásának kényszerét, elejét veszi hibás memóriafoglalásoknak és a memória elfolyásának.
Évekkel ezelőtt a szemétgyűjtő mechanizmus az alacsony hatékonyságról híresült el. Egy nagy, objektum orientált LISP program hatékonysága szörnyen alacsony volt egy kézzel írt, mikro-optimalizált assembly programhoz képest, és rengeteg buktató is megbújt benne. Szerencsére az idők változnak. A szemétgyűjtő technológiát tökéletesítették, hatékonyabb lett, és számos hibáját kijavították. A processzorok sebessége is ugrásszerűen megemelkedett, ami megengedi némileg a magasabb overhead-et.
A hagyományos sebességmérő módszerek szerinte a C++ hatékonyabb memóriakezelésre képes, mint a szemétgyűjtéssel rendelkező nyelvek. De az igazán nagy C++ rendszereknél más a helyzet. Kis kódrészleteknél – elég kicsinél ahhoz, hogy egy programozó optimalizálhassa a teljes memóriakezelést – valóban a C++ nyer a szemétgyűjtő ellen. Azonban a nagy rendszereknél a szemétgyűjtő mechanizmus már olyan előnyöket biztosít, amelyek miatt érdemes használni.
A Dylan legnagyobb hátránya a kereskedelmi minőségű fordító hiánya, különösen Macintosh gépekre. Az Apple a jövőben nem kommentálja a technikai eredményeit, és a funkcionális Objektumok megcélozzák a Windows és a Linux piacokat az ő fordítójukkal. A Gwydion Project Dylan implementációja támogatni fogja a UNIX, Windows, Macintosh platformokat, mikor elkészül.