मजबूत / कमजोर टाइपिंग और स्टैटिक / डायनामिक टाइपिंग ऑर्थोगोनल है।
मजबूत / कमजोर इस बारे में है कि क्या मूल्य का प्रकार मायने रखता है, कार्यात्मक रूप से बोल रहा है। एक कमजोर टाइप की गई भाषा में, आप दो तार ले सकते हैं जो अंकों से भरे जाते हैं और उन पर पूर्णांक जोड़ते हैं; एक जोरदार टाइप की गई भाषा में, यह एक त्रुटि है (जब तक कि आप मूल्यों को पहले प्रकारों में नहीं डालते या परिवर्तित नहीं करते हैं)। मजबूत / कमजोर टाइपिंग एक काली और सफेद चीज नहीं है; अधिकांश भाषाएं न तो 100% सख्त हैं और न ही 100% कमजोर हैं।
स्टैटिक / डायनेमिक टाइपिंग के बारे में है कि क्या प्रकार मानों या पहचानकर्ताओं से बंधते हैं। गतिशील रूप से टाइप की गई भाषा में, आप किसी भी चर के लिए किसी भी मूल्य को निर्दिष्ट कर सकते हैं, चाहे वह किसी भी प्रकार का हो; स्टैटिक टाइपिंग हर पहचानकर्ता के लिए एक प्रकार को परिभाषित करता है, और एक अलग प्रकार से असाइन करना या तो एक त्रुटि है, या इसका परिणाम निहितार्थ होता है। कुछ भाषाएं एक हाइब्रिड दृष्टिकोण लेती हैं, जो सांख्यिकीय रूप से घोषित प्रकारों के साथ-साथ अनछुए पहचानकर्ताओं ('संस्करण') के लिए अनुमति देता है। टाइप इंट्रेंस भी है, एक ऐसा मैकेनिज्म जिसमें स्टैटिक टाइपिंग हर चीज के प्रकार को स्पष्ट रूप से घोषित किए बिना संभव है, कंपाइलर के प्रकारों का पता लगाकर (हास्केल इस का बड़े पैमाने पर उपयोग करता है, C # var
कीवर्ड के माध्यम से इसे उजागर करता है )।
कमजोर गतिशील प्रोग्रामिंग एक व्यावहारिक दृष्टिकोण के लिए अनुमति देता है; भाषा ज्यादातर समय आपके रास्ते में नहीं आती है, लेकिन जब आप पैर में अपने आप को शूट कर रहे होते हैं तो यह कदम नहीं उठाएगा। इसके विपरीत, मजबूत स्थैतिक टाइपिंग, प्रोग्रामर को कोड में मूल्यों के बारे में कुछ उम्मीदों को स्पष्ट रूप से व्यक्त करने के लिए धक्का देती है, इस तरह से कंपाइलर या दुभाषिया को त्रुटियों की एक श्रेणी का पता लगाने की अनुमति देता है। एक अच्छी प्रकार की प्रणाली के साथ, एक प्रोग्रामर वास्तव में परिभाषित कर सकता है कि एक मूल्य के लिए क्या किया जा सकता है और क्या नहीं किया जा सकता है, और यदि दुर्घटना से, कोई व्यक्ति किसी चीज़ को अवांछित रूप से आज़माता है, तो टाइप सिस्टम अक्सर इसे रोक सकता है और यह दिखा सकता है कि चीजें कहाँ और क्यों गलत हैं।