. ▁A ▁variable ▁whose ▁type ▁is ▁dynamic ▁will ▁not ▁be ▁subject ▁to ▁static ▁type ▁checking . ▁Instead , ▁the ▁program ▁re lies ▁on ▁runtime ▁type ▁information ▁to ▁determine ▁how ▁the ▁variable ▁may ▁be ▁used . ▁ ▁St atic ▁and ▁dynamic ▁type ▁checking ▁in ▁practice ▁ ▁The ▁choice ▁between ▁static ▁and ▁dynamic ▁typing ▁requires ▁certain ▁trade - offs . ▁ ▁St atic ▁typing ▁can ▁find ▁type ▁errors ▁reli ably ▁at ▁compile ▁time , ▁which ▁should ▁increase ▁the ▁reli ability ▁of ▁the ▁delivered ▁program . ▁However , ▁program mers ▁disag ree ▁over ▁how ▁commonly ▁type ▁errors ▁occur , ▁resulting ▁in ▁further ▁disag re ements ▁over ▁the ▁proportion ▁of ▁those ▁bugs ▁that ▁are ▁c oded ▁that ▁would ▁be ▁caught ▁by ▁appropri ately ▁representing ▁the ▁designed ▁types ▁in ▁code . ▁St atic ▁typing ▁advoc ates ▁believe ▁programs ▁are ▁more ▁reliable ▁when ▁they ▁have ▁been ▁well ▁type - checked , ▁whereas ▁dynamic - ty ping ▁advoc ates ▁point ▁to ▁distributed ▁code ▁that ▁has ▁proven ▁reliable ▁and ▁to ▁small ▁bug ▁databases . ▁The ▁value ▁of ▁static ▁typing , ▁then , ▁pres umably ▁increases ▁as ▁the ▁strength ▁of ▁the ▁type ▁system ▁is ▁increased . ▁Adv oc ates ▁of ▁dependent ▁typing , ▁implemented ▁in ▁languages ▁such ▁as ▁Dep endent ▁ML ▁and ▁Ep ig ram , ▁have ▁suggested ▁that ▁almost ▁all ▁bugs ▁can ▁be ▁considered ▁type ▁errors , ▁if ▁the ▁types ▁used ▁in ▁a ▁program ▁are ▁properly ▁declared ▁by ▁the ▁programmer ▁or ▁correctly ▁infer red ▁by ▁the ▁compiler . ▁ ▁St atic ▁typing ▁usually ▁results ▁in ▁compiled ▁code ▁that ▁executes ▁faster .