Angular मधील Leaky Abstractions चा नियम

Angular गुंतागुंत (complexity) लपवते. ते तुम्हाला Router, HttpClient आणि Signals सारखी साधने देते. ही साधने ब्राउझरच्या अंतर्गत कार्यपद्धतीची (internals) काळजी न करता तुम्हाला ॲप्स तयार करण्यास मदत करतात.

परंतु, abstractions हे 'leaky' असतात. हा सॉफ्टवेअर इंजिनीअरिंगमधील एक नियम आहे. एक abstraction गुंतागुंत लपवते, पण ती काढून टाकत नाही.

Angular च्या HttpClient कडे पहा. ते रिक्वेस्ट पाठवणे सोपे करते. पण जेव्हा तुम्हाला CORS एरर किंवा timeout येतो, तेव्हा अचानक तुम्हाला HTTP आणि नेटवर्क कम्युनिकेशन समजून घेणे आवश्यक ठरते. इथे abstraction 'leak' झाले आहे.

RxJS कडे पहा. ते डेटा स्ट्रीम्स (data streams) मॅनेज करते. युजरच्या कृती हाताळण्यासाठी तुम्ही ऑपरेटर्स वापरता. जर तुम्हाला switchMap हे mergeMap पेक्षा वेगळे कसे कार्य करते हे सांगता येत नसेल, तर तुम्हाला JavaScript event loop चा अभ्यास करावा लागेल. RxJS त्या ज्ञानाची जागा घेऊ शकत नाही.

AI टूल्स हे abstraction चा सर्वात नवीन स्तर आहेत. तुम्ही components, tests किंवा features लिहिण्यासाठी AI वापरता. यामुळे तुमची गती वाढते.

Leaky Abstractions चा नियम AI ला देखील लागू होतो. जेव्हा AI कोड फेल होतो किंवा सुरक्षा धोके (security risks) निर्माण करतो, तेव्हा पृष्ठभागाखाली नक्की काय घडत आहे हे तुम्हाला समजून घेणे आवश्यक असते. AI मुळे TypeScript किंवा software architecture चे ज्ञान असण्याची गरज संपत नाही.

किंबहुना, AI वर अवलंबून राहिल्यामुळे मूलभूत गोष्टी (fundamentals) अधिक महत्त्वाच्या बनतात. AI ने दिलेल्या कोडची गुणवत्ता तुम्हाला तपासावी लागेल.

Frameworks तुम्हाला उत्पादक (productive) बनवतात. AI तुम्हाला वेगवान बनवते. परंतु यापैकी कोणतेही साधन JavaScript, DOM किंवा networking ला ऐच्छिक (optional) बनवत नाही. जोपर्यंत काहीतरी बिघडत नाही, तोपर्यंत ही साधने तुम्हाला या मूलभूत गोष्टी विसरण्यास प्रवृत्त करतात.

सिनियर इंजिनीअर्स वेगळे ठरतात कारण त्यांना abstraction च्या खाली काय आहे हे माहित असते. जेव्हा साधने अपयशी ठरतात, तेव्हा ते मूळ कारण (root cause) शोधून काढतात.

Source: https://dev.to/duskoperic/the-law-of-leaky-abstractions-in-the-angular-ecosystem-59da

Optional learning community: https://t.me/GyaanSetuAi