Angular میں Leaky Abstractions کا قانون
Angular پیچیدگیوں کو چھپاتا ہے۔ یہ آپ کو Router، HttpClient، اور Signals جیسے ٹولز فراہم کرتا ہے۔ یہ ٹولز آپ کو براؤزر کے اندرونی نظام (internals) کی فکر کیے بغیر ایپس بنانے کی اجازت دیتے ہیں۔
لیکن abstractions "leaky" ہوتے ہیں۔ یہ سافٹ ویئر انجینئرنگ کا ایک اصول ہے۔ ایک abstraction پیچیدگی کو چھپاتا ہے، لیکن اسے ختم نہیں کرتا۔
Angular کے HttpClient کو دیکھیں۔ یہ ریکویسٹ بھیجنے کے عمل کو سادہ بنا دیتا ہے۔ لیکن جب آپ کو CORS error یا timeout کا سامنا کرنا پڑتا ہے، تو اچانک آپ کو HTTP اور نیٹ ورک کمیونیکیشن کو سمجھنا پڑتا ہے۔ یہاں abstraction "leak" ہو گیا۔
RxJS کو دیکھیں۔ یہ ڈیٹا اسٹریمز (data streams) کو مینیج کرتا ہے۔ آپ یوزر ایکشنز کو سنبھالنے کے لیے operators کا استعمال کرتے ہیں۔ اگر آپ یہ وضاحت نہیں کر سکتے کہ switchMap، mergeMap سے مختلف کیوں کام کرتا ہے، تو آپ کو JavaScript event loop کا مطالعہ کرنا ہوگا۔ RxJS اس علم کا متبادل نہیں ہے۔
AI ٹولز abstraction کی تازہ ترین تہہ ہیں۔ آپ components، tests، یا features لکھنے کے لیے AI کا استعمال کرتے ہیں۔ یہ آپ کو تیز بناتا ہے۔
Leaky Abstractions کا قانون AI پر بھی لاگو ہوتا ہے۔ جب AI کوڈ فیل ہو جاتا ہے یا سیکیورٹی کے خطرات پیدا کرتا ہے، تو آپ کو یہ سمجھنا ضروری ہوتا ہے کہ سطح کے نیچے کیا ہو رہا ہے۔ AI، TypeScript یا سافٹ ویئر آرکیٹیکچر کے علم کی ضرورت کو ختم نہیں کرتا۔
درحقیقت، AI پر انحصار کرنے سے بنیادی اصول (fundamentals) مزید اہم ہو جاتے ہیں۔ آپ کو اس کوڈ کے معیار کا جائزہ لینا چاہیے جو AI آپ کو فراہم کرتا ہے۔
Frameworks آپ کو پیداواری (productive) بناتے ہیں۔ AI آپ کو تیز بناتا ہے۔ لیکن ان میں سے کوئی بھی JavaScript، DOM، یا نیٹ ورکنگ کو اختیاری نہیں بناتا۔ یہ صرف ان بنیادی باتوں کو بھولنا آسان بنا دیتے ہیں، یہاں تک کہ جب تک کہ کچھ ٹوٹ نہ جائے۔
سینئر انجینئرز اس لیے نمایاں ہوتے ہیں کیونکہ وہ جانتے ہیں کہ 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