▁Whether ▁autom ated ▁by ▁the ▁compiler ▁or ▁specified ▁by ▁a ▁programmer , ▁a ▁type ▁system ▁makes ▁program ▁behavior ▁illegal ▁if ▁outside ▁the ▁type - system ▁rules . ▁Adv antages ▁provided ▁by ▁programmer - spec ified ▁type ▁systems ▁include : ▁ ▁Ab stra ction ▁( or ▁mod ular ity ) ▁– ▁Types ▁enable ▁program mers ▁to ▁think ▁at ▁a ▁higher ▁level ▁than ▁the ▁bit ▁or ▁byte , ▁not ▁bother ing ▁with ▁low - level ▁implementation . ▁For ▁example , ▁program mers ▁can ▁begin ▁to ▁think ▁of ▁a ▁string ▁as ▁a ▁set ▁of ▁character ▁values ▁instead ▁of ▁as ▁a ▁mere ▁array ▁of ▁bytes . ▁High er ▁still , ▁types ▁enable ▁program mers ▁to ▁think ▁about ▁and ▁express ▁interfaces ▁between ▁two ▁of ▁any - s ized ▁sub system s . ▁This ▁enables ▁more ▁levels ▁of ▁local ization ▁so ▁that ▁the ▁definitions ▁required ▁for ▁inter oper ability ▁of ▁the ▁sub system s ▁remain ▁consistent ▁when ▁those ▁two ▁sub system s ▁communicate . ▁ ▁Document ation ▁– ▁In ▁more ▁express ive ▁type ▁systems , ▁types ▁can ▁serve ▁as ▁a ▁form ▁of ▁documentation ▁clar ifying ▁the ▁intent ▁of ▁the ▁programmer . ▁For ▁example , ▁if ▁a ▁programmer ▁decl ares ▁a ▁function ▁as ▁returning ▁a ▁timestamp ▁type , ▁this ▁documents ▁the ▁function ▁when ▁the ▁timestamp ▁type ▁can ▁be ▁explicitly ▁declared ▁deeper ▁in ▁the ▁code ▁to ▁be ▁an ▁integer ▁type . ▁ ▁Adv antages ▁provided ▁by ▁compiler - spec ified ▁type ▁systems ▁include : ▁ ▁Opt im ization ▁– ▁St atic ▁type - check ing ▁may ▁provide ▁useful ▁compile - time