▁certainly ▁doesn ' t ▁contain ▁anything ▁useful . ▁As ▁this ▁example ▁shows , ▁C ▁is ▁neither ▁a ▁memory - safe ▁nor ▁a ▁type - safe ▁language . ▁ ▁In ▁general , ▁type - s af ety ▁and ▁memory - s af ety ▁go ▁hand ▁in ▁hand . ▁For ▁example , ▁a ▁language ▁that ▁supports ▁pointer ▁arithmetic ▁and ▁number - to - pointer ▁convers ions ▁( like ▁C ) ▁is ▁neither ▁memory - safe ▁nor ▁type - safe , ▁because ▁it ▁allows ▁arbitrary ▁memory ▁to ▁be ▁accessed ▁as ▁if ▁it ▁were ▁valid ▁memory ▁of ▁any ▁type . ▁ ▁For ▁more ▁information , ▁see ▁memory ▁safety . ▁ ▁Variable ▁levels ▁of ▁type ▁checking ▁ ▁Some ▁languages ▁allow ▁different ▁levels ▁of ▁checking ▁to ▁apply ▁to ▁different ▁regions ▁of ▁code . ▁Ex amples ▁include : ▁ ▁The ▁use ▁strict ▁directive ▁in ▁JavaScript ▁and ▁Perl ▁applies ▁stronger ▁checking . ▁ ▁The ▁declare ( str ict _ types = 1 ) ▁in ▁PHP ▁on ▁a ▁per - file ▁basis ▁allows ▁only ▁a ▁variable ▁of ▁exact ▁type ▁of ▁the ▁type ▁declaration ▁will ▁be ▁accepted , ▁or ▁a ▁TypeError ▁will ▁be ▁thrown . ▁ ▁The ▁Option ▁Str ict ▁On ▁in ▁VB . NET ▁allows ▁the ▁compiler ▁to ▁require ▁a ▁conversion ▁between ▁objects . ▁ ▁Add itional ▁tools ▁such ▁as ▁l int ▁and ▁IBM ▁R ational ▁Pur ify ▁can ▁also ▁be ▁used ▁to ▁achieve ▁a ▁higher ▁level ▁of ▁strict ness . ▁ ▁Optional ▁type ▁systems ▁ ▁It ▁has ▁been ▁proposed , ▁chief ly ▁by ▁Gil ad ▁Bra cha , ▁that ▁the ▁choice