ماتریوشکا سی۔ پرتوں والا پروگرام زبان کا نظام

آئیے مینڈیلیف کی پیریڈک ٹیبل (1869) کے بغیر کیمسٹری کا تصور کرنے کی کوشش کریں۔ کتنے عناصر کو ذہن میں رکھنا تھا، اور کسی خاص ترتیب میں... (پھر - 60.)

ایسا کرنے کے لیے، صرف ایک یا کئی پروگرامنگ زبانوں کے بارے میں ایک ساتھ سوچیں۔ وہی احساسات، وہی تخلیقی افراتفری۔

اور اب ہم XNUMX ویں صدی کے کیمیا دانوں کے احساسات کو زندہ کر سکتے ہیں جب انہیں ایک متواتر جدول میں اپنا تمام علم، اور کچھ اور بھی پیش کیا گیا تھا۔

ماتریوشکا سی۔ پرتوں والا پروگرام زبان کا نظام


کتاب "ماتریوشکا سی. پروگرام زبان کا پرتوں والا نظام" سی زبان کی تمام اکائیوں کو ایک نظر میں پیش کرتا ہے۔ یہ آپ کو ان کو منظم کرنے، پرانی معلومات کو درست کرنے، اور پروگرام کے بالکل تصور کو بھی واضح کرنے کی اجازت دیتا ہے۔

آج، پروگرامنگ کی معلومات کو 150 سال پہلے کیمیاوی عناصر سے بھی زیادہ منظم کرنے کی ضرورت ہے۔

پہلی ضرورت تعلیم ہے۔ مینڈیلیف نے اپنا نظام اس وقت بنانا شروع کیا جب اسے اس سوال کا سامنا کرنا پڑا کہ کس عنصر کے ساتھ لیکچر دینا شروع کیا جائے: O, H, N, He, Au... اس کے ساتھ ہی، یہ اس کے لیے آسان تھا - اس نے بہترین افراد کو کیمسٹری پڑھائی - سینٹ پیٹرزبرگ یونیورسٹی۔ اور پروگرامنگ پہلے ہی اسکول میں پڑھائی جاتی ہے اور جلد ہی کنڈرگارٹن میں شروع ہو جائے گی۔

دوسری ضرورت سائنسی نقطہ نظر کی ہے۔ متواتر جدول کی مدد سے نئے عناصر دریافت کیے گئے اور پرانے عناصر کے بارے میں معلومات درست کی گئیں۔ اس نے ایٹم کا ماڈل بنانے میں مدد کی (1911)۔ اور اسی طرح.

تیسری ضرورت ایک پروگرام کے تصور کو واضح کرنے کی ہے۔

جدید پروگرامنگ کا ایک پاؤں 50ویں صدی کے XNUMX کی دہائی میں پھنس گیا ہے۔ اس وقت، پروگرام سادہ تھے، لیکن مشینیں اور مشینی زبانیں پیچیدہ تھیں، اس لیے ہر چیز مشینوں اور زبانوں کے گرد گھومتی تھی۔

اب سب کچھ اس کے برعکس ہے: پروگرام پیچیدہ اور بنیادی ہیں، زبانیں سادہ اور ثانوی ہیں۔ اسے اپلائیڈ اپروچ کہا جاتا ہے، جس سے ہر کوئی واقف نظر آتا ہے۔ لیکن طلباء اور ڈویلپرز اس بات پر قائل رہتے ہیں کہ سب کچھ ایک جیسا ہے۔

جو ہمیں Privatdozent Mendeleev کے پہلے لیکچر پر واپس لاتا ہے۔ نئے آنے والوں کو کیا بتائیں؟ سچ کہاں ہے؟ یہی سوال ہے۔

کتاب "Matryoshka C" اس سوال کا جواب پیش کرتی ہے۔ پروگرام کی زبان کا پرتوں والا نظام"۔ مزید برآں، یہ نہ صرف طالب علموں کو بلکہ تربیت یافتہ پروگرامرز کو بھی مخاطب کیا جاتا ہے، کیونکہ یہ وہی ہیں، یعنی ہمیں، جنہیں سچ کی تلاش اور عالمی نظریہ کو تبدیل کرنا چاہیے۔

مندرجہ ذیل کتاب کا خلاصہ ہے۔

1. تعارف

1969 میں سی لینگویج بنائی گئی جو بنیادی پروگرامنگ لینگویج بن گئی اور 50 سال تک برقرار رہی۔ ایسا کیوں ہے؟ سب سے پہلے، کیونکہ C ہے لاگو وہ زبان جس نے پروگرام دیا۔ انسانی اس کے بجائے دیکھیں آلہ. یہ کامیابی C خاندان کی زبانوں کے ذریعے حاصل کی گئی تھی: C++، JavaScript، PHP، Java، C# اور دیگر۔ دوسری بات یہ کہ یہ ایک مختصر اور خوبصورت زبان ہے۔

تاہم، خود سی زبان کو عام طور پر مشین اسمبلر کے ساتھ ملایا جاتا ہے، اس طرح اس کے تاثر کو پیچیدہ اور مسخ کر دیا جاتا ہے۔ دوسری انتہا زبان پر ایک مخصوص "فلسفہ" کا مسلط کرنا ہے: طریقہ کار، آبجیکٹ، فنکشنل، مرتب، تشریح شدہ، ٹائپ شدہ، وغیرہ۔ اس سے جذبات میں اضافہ ہوتا ہے، لیکن زبان کو بہتر انداز میں بیان کرنے میں مدد نہیں ملتی۔

سچائی درمیان میں ہے، اور سی زبان کے لیے یہ فلسفیانہ اور مشینی ادراک کے درمیان سختی سے درمیان میں ہے۔

سی زبان آزاد نہیں ہے، یہ عام تحریری زبان کی پابندی کرتی ہے، اور ساتھ ہی یہ اسمبلی زبان کو خود کنٹرول کرتی ہے۔ یہ پوزیشن بیان کرتی ہے۔ پروگرام کا تقریری ماڈل، جس کے مطابق پروگرام کو تین ماتحت اقسام میں تقسیم کیا گیا ہے: تقریر، کوڈ، کمانڈ۔ C زبان دوسری، کوڈ کی قسم کے لیے ذمہ دار ہے۔

پروگرام میں زبان کی جگہ کا تعین کرنے کے بعد، آپ اس کے بارے میں معلومات کو منظم کر سکتے ہیں، جو بناتا ہے پرتوں والا پروگرام زبان کا نظام، متواتر نظام کی روح میں C زبان کی نمائندگی کرتا ہے - ایک صفحے پر۔

نظام کو مدنظر رکھتے ہوئے بنایا گیا ہے۔ لاگو زبانوں کی کمیونٹیز، ان کی تقریر کے ماتحت ہونے سے پیدا ہوتا ہے۔ Matryoshka C یونٹس کا ایک سیٹ آپ کو مختلف زبانوں کی وضاحت اور موازنہ کرنے کی اجازت دیتا ہے، Matryoshkas کا ایک سلسلہ بناتا ہے: C++، PHP، JavaScript، C#، MySQL، Python وغیرہ۔ یہ بات قابل اور درست ہے کہ مختلف زبانوں کو بنیادی زبان کی اکائیوں سے بیان کیا جاتا ہے۔

2. باب 1. پروگرام کا تقریری ماڈل۔ C صاف کریں

پہلا باب پیش کرتا ہے۔ پروگرام کا تقریری ماڈل، ایک اطلاق شدہ نقطہ نظر کی عکاسی کرتا ہے۔ ان کے مطابق، پروگرام کی تین واضح ترتیب وار اقسام ہیں:

  1. تقریر - مسئلہ کو حل کرنے والے پروگرامر کی براہ راست تقریر،
  2. کوڈڈ - C زبان میں ریاضی کی شکل میں حل کو انکوڈ کرنا (یا کوئی اور)
  3. اور کمانڈ - ڈائریکٹ مشین کمانڈز۔

تقریری ماڈل وضاحت کرتا ہے کہ C ایک سادہ اور قابل فہم زبان کیوں ہے۔ Xi کو انسانی تقریر کی شبیہ اور مشابہت میں بنایا گیا ہے جو ہم سے واقف ہے۔

پروگرام کی پہلی قسم پروگرامر کی براہ راست تقریر ہے۔ تقریر انسانی سوچ سے مطابقت رکھتی ہے۔ ابتدائی پروگرامرز تقریر کا استعمال کرتے ہوئے پروگرام لکھتے ہیں - پہلے روسی میں، پھر قدم بہ قدم اعمال کو کوڈ لینگویج میں ترجمہ کرتے ہیں۔ اور یہ بالکل اسی ماڈل پر ہے کہ C زبان بنائی گئی تھی۔

پروگرامر کے نتائج، جو تقریر میں ظاہر ہوتے ہیں، کوڈڈ عددی شکل میں تبدیل کر دیا جاتا ہے۔ اس تبدیلی کو کہا جانا چاہیے۔ عکسچونکہ تقریر اور ضابطہ ایک ہی نوعیت کا ہوتا ہے (عکاس - پیدائش - جنس)۔ اگر ہم پروگرام کی تقریر (بائیں طرف) اور کوڈ (دائیں طرف) کی اقسام کا موازنہ کریں تو یہ بالکل واضح ہے۔

ماتریوشکا سی۔ پرتوں والا پروگرام زبان کا نظام

یہ دلچسپ ہے کہ عکاسی بہت آسان ہے - صرف دو قسم کے اظہار کے ساتھ۔

تاہم، C زبان کی جدید وضاحت (1978 سے) میں زبان کو عام طور پر بیان کرنے کے لیے یا خاص طور پر عکاسی کے کام کے لیے ناموں کی کافی فہرست موجود نہیں ہے۔ لہذا، ہم تخلیقی حاصل کرنے اور ان ناموں کو متعارف کرانے پر مجبور ہیں.

الفاظ کا چناؤ درست اور واضح ہونا چاہیے۔ اس کے لیے ایک خاص نقطہ نظر کی ضرورت تھی، جسے مختصراً اس طرح بیان کیا گیا ہے: مادری زبان کا سخت استعمال۔ انگریز کے لیے تو انگریز ہو گا لیکن ہم انگریز نہیں ہیں۔ لہذا ہم جو کچھ ہمارے پاس ہے اسے استعمال کریں گے اور روسی بولنے کی کوشش کریں گے۔

عکاسی دو قسم کے اظہار کے ذریعہ کی جاتی ہے:

  1. گنتی (HF) - کسی چیز کی خصوصیات میں تبدیلی کی عکاسی کرتا ہے۔ کسی شے کی خاصیت کا اظہار ایک عدد سے ہوتا ہے، پھر کسی خاصیت پر ایک کارروائی نمبر پر ایک کارروائی ہوتی ہے۔
  2. ماتحتی (Pch) - اعمال کی ترتیب میں تبدیلی کی عکاسی کرتا ہے۔ Pch کا پروٹو ٹائپ ایک اسپیچ پیچیدہ جملہ ہے، اس لیے Pch کی زیادہ تر اقسام ماتحت کنکشنز "اگر"، "ورنہ"، "جبکہ"، "for" سے شروع ہوتی ہیں۔ پی سی کی دوسری قسمیں ان کی تکمیل کرتی ہیں۔

ویسے، کیا آپ یقین کر سکتے ہیں کہ C کی تفصیل میں حساب کے اظہار کا کوئی نام نہیں ہے - انہیں صرف "اظہار" کہا جاتا ہے؟ اس کے بعد اب یہ تعجب کی بات نہیں رہے گی کہ ماتحت کی قسم کا کوئی نام اور تعلق نہیں ہے اور درحقیقت عام طور پر ناموں، تعریفوں اور عمومیات کی کمی ہے۔ اس کی وجہ یہ ہے کہ مشہور K/R ("The C Language", Kernighan/Ritchie, 1978) کوئی تفصیل نہیں ہے بلکہ زبان استعمال کرنے کے لیے ایک رہنما ہے۔

تاہم، میں اب بھی زبان کی وضاحت کرنا چاہوں گا۔ اس لیے اسے پیش کیا جاتا ہے۔ پرتوں والا پروگرام زبان کا نظام.

3. باب 2. پرت کا نظام۔ مختصر سی

کوئی بھی تفصیل درست اور انتہائی جامع ہونی چاہیے۔ پروگرام کی زبان کے معاملے میں، سامنے کی وضاحت مشکل ہے۔

یہاں ہمارے پاس ایک پروگرام ہے۔ یہ ماڈیولز پر مشتمل ہے۔ ماڈیولز سب روٹینز اور کلیکشنز (سٹرکچر) پر مشتمل ہوتے ہیں۔ سبروٹینز انفرادی اظہار پر مشتمل ہوتے ہیں: اعلامیہ، حساب، ماتحت۔ محکومیت کی دس سے زیادہ اقسام ہیں۔ ماتحتی ذیلی سطحوں اور ذیلی روٹینز کو جوڑتی ہے۔ کئی اشتہارات بھی ہیں۔ تاہم، اعلانات نہ صرف سب روٹینز اور ذیلی سطحوں میں، بلکہ ماڈیولز اور مجموعوں میں بھی شامل ہیں۔ اور زیادہ تر تاثرات ایسے الفاظ پر مشتمل ہوتے ہیں جن کا بیان کرنا اتنا مشکل ہوتا ہے کہ وہ عام طور پر صرف دو فہرستوں میں دیے جاتے ہیں - اصل اور اخذ کردہ الفاظ، جن سے آپ زبان کے سیکھنے اور استعمال کے دوران واقف ہو جائیں گے۔ آئیے اس میں رموز اوقاف اور کئی دوسرے تاثرات شامل کرتے ہیں۔

ایسی پیشکش میں یہ سمجھنا آسان نہیں کہ کون کس پر کھڑا ہے۔

کسی زبان کو بیان کرنے کے لیے براہ راست درجہ بندی کا نقطہ نظر حد سے زیادہ پیچیدہ ہوگا۔ راؤنڈ اباؤٹ تلاش زبان کی وضاحت کی طرف لے جاتی ہے اس کی تقریر کی نوعیت اور کمانڈ سائیڈ کی بنیاد پر۔ اس طرح، پرت کا نظام پیدا ہوا، جزوی طور پر مینڈیلیف کے متواتر نظام سے مطابقت رکھتا ہے، جو کہ پلائی. جیسا کہ اس کی اشاعت (42) کے 1869 سال بعد نکلا، نظام کی متواتریت کا تعلق الیکٹرانک سے ہے۔ تہوں (1911، ایٹم کا بوہر-ردر فورڈ ماڈل)۔ نیز، پرتوں والے اور متواتر نظام ایک صفحے پر موجود تمام اکائیوں کے ٹیبلر ترتیب میں ایک جیسے ہیں۔

زبان کی اکائیوں کی تفصیل مختصر ہے - صرف 10 اقسام کے اظہار اور 8 اقسام کی دیگر اکائیوں کے ساتھ ساتھ معنی خیز اور بصری۔ اگرچہ پہلے جاننے والے کے لیے غیر معمولی۔

زبان کی اکائیوں کو 6 درجوں میں تقسیم کیا گیا ہے:

  1. یونٹس - میز کی قطاریں
  2. محکمے - نسل کے خصوصی گروہ (پہلی لائن کے حصے)
  3. جینس - خلیات (تقسیم کی اہم سطح)
  4. سپر اسپیسز - پرجاتیوں کو الگ کرنے والے (نادر سطح)
  5. اقسام - سیل کے نیچے یا الگ الگ یونٹ فارمولے۔
  6. پیٹرن - خود اکائیاں (صرف الفاظ کے لیے)

نمونے کے الفاظ بیان کرتے ہیں۔ لغت - ایک الگ ذیلی نظام جو ایک ہی چھ سطحوں سے بنا ہے۔

C زبان کا تقریری جزو بالکل واضح ہے، حالانکہ یہ اب بھی تفصیل کا مستحق ہے۔ لیکن زبان کے کمانڈ کا حصہ تالیف کے کنٹرول سے قطعی تعلق رکھتا ہے، جس کے دوران تیسری قسم کا پروگرام بنایا جاتا ہے - کمانڈ۔ یہاں ہم C زبان کے سب سے دلچسپ پہلو کی طرف آتے ہیں: خوبصورتی۔

4. مندرجہ ذیل ابواب۔ ہینڈسم سی

سی زبان جدید پروگرامنگ کی بنیاد ہے۔ کیوں؟ سب سے پہلے، تقریر کی سب سے بڑی خط و کتابت کی وجہ سے۔ دوم، کیونکہ اس نے مشین نمبر پروسیسنگ کی حدود کو خوبصورتی سے نظرانداز کیا۔

شی نے بالکل کیا تجویز کیا؟ تصویر اور پرت۔

لفظ "image" انگریزی لفظ "type" کا ترجمہ ہے، جو یونانی "prototype" - "type" سے آیا ہے۔ روسی زبان میں، لفظ "قسم" بیان کیے جانے والے تصور کی بنیاد کو نہیں بتاتا؛ مزید یہ کہ یہ معاون معنی "قسم" کے ساتھ الجھا ہوا ہے۔

ابتدائی طور پر، تصویر نے خالصتاً مشینی حساب کتاب کا مسئلہ حل کیا، اور پھر آبجیکٹ کی زبانوں کی پیدائش کے لیے ایک رن وے بن گیا۔

پرت نے فوری طور پر کئی مسائل کو حل کیا - مشین اور لاگو دونوں. لہذا، غور ایک واحد ٹاسک امیج کے ساتھ شروع ہوگا اور ایک ملٹی ٹاسک پرت کی طرف بڑھے گا۔

تاریخی پروگرامنگ کی ایک ناخوشگوار خصوصیت یہ ہے کہ بنیادی تصورات سمیت زیادہ تر تصورات بغیر کسی تعریف کے دیے جاتے ہیں۔ "پروگرامنگ لینگویج (دریاؤں کے نام) میں عدد اور تیرتے ہوئے نمبر کی قسمیں ہیں..." اور انہوں نے مزید کھرچ لیا۔ "قسم" (تصویر) کی وضاحت کرنا ضروری نہیں ہے، کیونکہ مصنفین خود اس کو پوری طرح نہیں سمجھتے ہیں اور "وضاحت کی خاطر" اسے خاموش کر دیں گے۔ اگر انہیں دیوار سے لگا دیا جائے تو وہ ایک مبہم اور بیکار تعریف دیں گے۔ یہ غیر ملکی الفاظ کے پیچھے چھپانے میں بہت مدد کرتا ہے: روسی مصنفین کے لیے - انگریزی (قسم) کے پیچھے، انگریزوں کے لیے - فرانسیسی (سبروٹائن) کے پیچھے، یونانی (پولیمورفزم)، لاطینی (انکیپسولیشن) یا ان کے مجموعے (ایڈہاک پولیمورفزم) کے پیچھے۔

لیکن یہ ہمارا مقدر نہیں ہے۔ ہمارا انتخاب خالص روسی میں اٹھائے ہوئے ویزر والی تعریف ہے۔

تصویر

تصویر مقدار کا ایک ابتدائی نام ہے، جس کی وضاحت 1) مقدار کی اندرونی خصوصیات اور 2) مقدار کے لیے عمل کا انتخاب۔

لفظ "قسم" (قسم) تعریف کے پہلے حصے سے مطابقت رکھتا ہے: "ایک مقدار کی اندرونی خصوصیات۔" لیکن تصویر کا بنیادی مطلب دوسرے حصے میں ہے: "مقدار کے مطابق آپریشنز کا انتخاب۔"

C میں تصویر کو متعارف کرانے کا نقطہ آغاز ایک عام حساب ہے، جیسے اضافی آپریشن۔

کاغذ ریاضی، چاہے ہاتھ سے لکھی ہو یا چھپی ہوئی، اعداد کی اقسام کے درمیان زیادہ فرق نہیں کرتی، عام طور پر یہ فرض کرتے ہوئے کہ وہ حقیقی ہیں۔ لہذا، ان کے پروسیسنگ آپریشن غیر واضح ہیں.

مشین ریاضی سختی سے اعداد کو عدد اور کسر میں تقسیم کرتی ہے۔ مختلف قسم کے نمبر مختلف طریقے سے میموری میں محفوظ کیے جاتے ہیں اور پروسیسر کی مختلف ہدایات کے ذریعے پروسیس کیے جاتے ہیں۔ مثال کے طور پر، انٹیجرز اور فریکشنز کو شامل کرنے کی ہدایات دو مختلف پروسیسر نوڈس کے مطابق دو مختلف ہدایات ہیں۔ لیکن عددی اور جزوی دلائل کو شامل کرنے کا کوئی حکم نہیں ہے۔

لاگو ریاضی، یعنی C زبان، اعداد کی اقسام کو الگ کرتی ہے، لیکن عمل کو یکجا کرتی ہے: عدد اور/یا کسر کے لیے اضافہ ایک عمل کے نشان کے ساتھ لکھا جاتا ہے۔

تصور کی تصویر کی واضح تعریف ہمیں یقینی طور پر دو دیگر تصورات کے بارے میں بات کرنے کی اجازت دیتی ہے: قدر и آپریشن.

شدت اور آپریشن

قدر - جس نمبر پر کارروائی ہو رہی ہے۔

آپریشن - حتمی نمبر (کل) حاصل کرنے کے لیے ابتدائی اقدار (دلائل) کی قدروں پر کارروائی کرنا۔

شدت اور آپریشن آپس میں جڑے ہوئے ہیں۔ ہر آپریشن ایک مقدار ہے کیونکہ اس کا ایک عددی نتیجہ ہوتا ہے۔ اور ہر قدر پروسیسر رجسٹر میں/سے کسی قدر کی منتقلی کا نتیجہ ہے، یعنی آپریشن کا نتیجہ۔ اس تعلق کے باوجود، اصل چیز ان کی الگ الگ وضاحت کا امکان ہے، اگرچہ لغت کے مختلف حصوں میں ایک لفظ کی تکرار کے ساتھ، جو MA3 میں ہوتا ہے۔

مشین کے نقطہ نظر نے پروگرامر کے ذریعہ استعمال کردہ تمام نمبروں کو تقسیم کیا۔ ٹیمیں и ڈیٹا. پہلے، یہ دونوں نمبر تھے، مثال کے طور پر، کمانڈز عددی کوڈز میں لکھے جاتے تھے۔ تاہم، لاگو زبانوں میں، کمانڈز نمبر ہونا بند ہو گئے اور بن گئے۔ الفاظ میں и کارروائی کے نشانات. اعداد کے طور پر صرف "ڈیٹا" ہی باقی رہ جاتا ہے، لیکن ان کو اس طرح سے پکارنا مضحکہ خیز ہے، کیونکہ مشین سے ریاضی کے نقطہ نظر کی طرف منتقلی میں، اعداد وہ مقداریں ہیں جن کو اصل سے تقسیم کیا جاتا ہے۔ڈیٹا) اور حتمی (کی ضرورت ہے)۔ "نامعلوم ڈیٹم" احمقانہ لگے گا۔

ٹیموں کو بھی دو قسم کے اعمال میں تقسیم کیا گیا تھا: ریاضی اور خدمت۔ ریاضی کے اعمال - آپریشن۔ ہم بعد میں سرکاری چیزوں پر جائیں گے۔

C زبانوں میں، عام کاغذ اور مشین غیر مبہم، یا واحد، ریاضیاتی عمل تقریباً عالمگیر طور پر متعدد بن جاتے ہیں۔

ایک سے زیادہ آپریشنز ایک ہی نام کے کئی آپریشن ہیں جن میں مختلف قسم کے دلائل ہوتے ہیں اور مختلف، معنی میں ایک جیسے، اعمال۔

انٹیجر آرگومنٹس پورے آپریشن کے مساوی ہوتے ہیں، اور فریکشنل آرگومنٹس فریکشنل آپریشن سے مطابقت رکھتے ہیں۔ یہ فرق تقسیم کے عمل کے دوران خاص طور پر واضح ہوتا ہے، جب اظہار 1/2 کل 0 دیتا ہے، 0,5 نہیں۔ اس طرح کا اشارہ کاغذی ریاضی کے اصولوں سے مطابقت نہیں رکھتا ہے، لیکن C زبان ان کی تعمیل کرنے کی کوشش نہیں کرتی ہے (فورٹران کے برعکس) - یہ اپنی مرضی کے مطابق چلتی ہے۔ لاگو قواعد.

انٹیجرز اور فریکشن کو ملانے کی صورت میں، صرف صحیح کو شامل کیا جاتا ہے۔ دلیل کی اقدار کاسٹ کرنا - ایک تصویر سے دوسری تصویر میں قدر کی منتخب تبدیلی۔ درحقیقت، جب ایک عدد اور ایک جزوی نمبر شامل کرتے ہیں، تو نتیجہ جزوی ہوتا ہے، لہذا آپریشن کی تصویر اٹھاتا ہے ایک عددی دلیل کو جزوی قدر میں تبدیل کرنے کا عمل۔

کئی آپریشن باقی ہیں۔ جمعاور سنگل. اس طرح کے آپریشنز کی وضاحت صرف ایک قسم کے دلائل کے لیے کی جاتی ہے: تقسیم باقی - عددی دلائل، اسٹیکنگ (بٹ وائز آپریشن) - قدرتی عدد۔ Ma3 علامات (#^) کے ساتھ آپریشنز کی کثرت کی نشاندہی کرتا ہے جو ان تصاویر کی نشاندہی کرتا ہے جن کے لیے آپریشن کی تعریف کی گئی ہے۔ یہ ہر آپریشن کی ایک اہم لیکن پہلے نظر انداز کی گئی خاصیت ہے۔

تمام افعال صوابدیدی یونٹ کے آپریشن ہیں۔ استثنا آپریٹرز ہے - غیر بریکٹ افعال، زبان میں بنایا گیا (اصل آپریشنز)۔

مدد

مدد - آپریشن کے ساتھ کارروائی۔

اگر ہم آپریشن کو اہم کارروائی کے طور پر سمجھتے ہیں، تو ہم دو ساتھی کو الگ کر سکتے ہیں جو آپریشن فراہم کرتے ہیں اور اس سے مختلف ہیں۔ یہ ہیں 1) متغیر کنٹرول اور 2) ماتحت۔ اس عمل کو کہتے ہیں۔ مدد.

یہاں ہمیں پروگرامنگ کی نصابی کتب کے روسی تراجم کے بارے میں الگ الگ بات کرنے کی ضرورت ہے۔ اعمال کو ریکارڈ کرنے کے لیے K/R کے متن میں ایک نیا لفظ متعارف کرایا گیا تھا۔ بیان (اظہار)، جس نے مشین کمانڈ کے تصورات کو مختلف اعمال میں تقسیم کرنے کی کوشش کی: 1) آپریشن، 2) اعلان، اور 3) ماتحت (جسے "کنٹرول کنسٹرکٹ" کہا جاتا ہے)۔ اس کوشش کو روسی مترجمین نے دفن کر دیا، لفظ "آپریٹر" کے ساتھ "اظہار" کی جگہ لے لی، جو:

  1. مشین لفظ "کمانڈ" کا مترادف بن گیا ہے،
  2. جملہ "عمل کی علامت" کا مترادف نکلا،
  3. اور اضافی قدروں کی لامحدود تعداد بھی حاصل کی۔ یعنی یہ انگریزی کے مضمون سے ملتا جلتا کچھ میں بدل گیا ہے “uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh”

ساتھ کی کارروائیوں پر غور کریں، یا مدد.

متغیر کنٹرول

متغیر کنٹرول (UP) - متغیر سیل بنانا/ ڈیلیٹ کرنا۔
UE متغیر کا اعلان کرتے وقت واضح طور پر ہوتا ہے، جو پہلے ہی کسی اور وجہ سے لکھا جاتا ہے - قدر کی تصویر کی نشاندہی کرنے کے لیے۔ صرف ایک نظارہ واضح طور پر منظم ہے۔ اضافی متغیرات malloc() اور free() فنکشنز کا استعمال کرتے ہوئے

واضح رہے کہ مضمر اعمال لکھنے کے لیے زیادہ آسان ہوتے ہیں، کیونکہ ان کے لیے کچھ بھی لکھنے کی ضرورت نہیں ہوتی، لیکن انھیں سمجھنا زیادہ مشکل ہوتا ہے - انھیں مدنظر رکھنا اور تشریح کرنا زیادہ مشکل ہوتا ہے۔

محکومیت

محکومیت - پرت کے حصوں کو جوڑیں / غیر فعال کریں۔

C زبان نے اعمال کی ترتیب کو کنٹرول کرنے کا ایک اطلاق شدہ طریقہ پیش کیا، جو جمع کرنے والے - ماتحت سے مختلف ہے۔ یہ ایک تقریری پیچیدہ جملے کی عکاسی کرتا ہے اور اس کی ترقی کرتا ہے جس کی واضح تقسیم مرکزی حصے (ماتحتی شق) اور ماتحت حصہ (سبلیول/سبروٹین سیکشنز) میں ہوتی ہے۔

اعلان اور جمع کروانا دونوں مکمل طور پر تصور پر مبنی ہیں۔ پرت.

پرت

پرت اظہار کا ایک محدود واحد سطح کا انتخابی مجموعہ ہے۔

پرت نے واضح طور پر اور واضح طور پر ایک ہی وقت میں کئی کام انجام دیئے:

  1. پروگرام کو منظم کرنا
  2. ناموں کی مرئیت کو محدود کرنا (واضح طور پر)
  3. متغیرات کا انتظام (میموری سیل) (مضمون)،
  4. ماتحتی کے لیے ماتحت شقوں کی تعریف،
  5. افعال اور انتخاب اور دیگر کی تعریفیں

مشینی زبانوں میں پرت کا کوئی تصور نہیں تھا، اس لیے یہ K/R میں ظاہر نہیں ہوتا تھا، اور اگر کوئی چیز موجود نہ ہو، تو اسے بعد کی کتابوں میں متعارف کرانا بدعت اور آزادانہ سوچ ہوگی۔ اس لیے پرت کا تصور بالکل ظاہر نہیں ہوا، حالانکہ یہ انتہائی مفید اور بالکل واضح ہے۔

ایک پرت کے بغیر، پروگرام کے بہت سے اعمال اور قواعد کو مختصر اور واضح طور پر بیان کرنا ناممکن ہے۔ مثال کے طور پر، کیوں گوٹو اتنا ہی آسان ہے جتنا کہ تین کوپیکس برا ہے، اور مشکل جبکہ اچھا ہے۔ آپ صرف بے بسی کے ساتھ قسم کھا سکتے ہیں، جیسا کہ Dijkstra نے کیا تھا ("پروگرامرز کی مہارت ایک ایسا فنکشن ہے جو ان کے پروگراموں میں گوٹو بیانات کے ہونے کی تعدد پر الٹا انحصار کرتا ہے۔" مختصر یہ کہ صرف بکرے ہی گوٹو استعمال کرتے ہیں۔ جواز کی سطح خدا ہے۔) سچ ہے، یہ اتنا خوفناک نہیں ہے اگر آپ کی کتابوں کی ہمیں کچھ بھی وضاحت کرنے کی ضرورت نہیں ہے، لیکن جیسا کہ ہم پہلے ہی کہہ چکے ہیں، یہ ہمارا مقدر نہیں ہے۔

ویسے، یہ فرض کیا جا سکتا ہے کہ ڈین رچی نے کچھ بے نام تصور کی تلاش کے لیے بالکل ٹھیک طور پر گوٹو کو چھوڑا، کیونکہ گوٹو کے اظہار میں کوئی ضرورت یا خوبصورتی نہیں تھی۔ لیکن زبان کے نئے اصولوں کی ایک سادہ اور قابل فہم وضاحت کی ضرورت تھی، جو کہ رچی خود نہیں دینا چاہتے تھے، اور جو بالکل ٹھیک اس تصور پر مبنی ہوں۔ پرت.

انحراف

انحراف - نئے نام کی معمول کی خصوصیات کو تبدیل کرنا۔

سب سے اہم انحراف پروگرام کی پرت کی خصوصیات سے قطعی طور پر متعلق ہے، اور اسے ایک لفظ "static" سے بیان کیا گیا ہے، جس کا ہر قسم کی پرت میں مختلف معنی ہیں۔

5. آخری باب۔ اطلاقی زبانوں کی مشترکیت

اطلاقی زبانیں ہیں۔ علامتی زبانیں (تصویر کے ساتھ، "ٹائپ شدہ")۔ وہ تصویر کے واضح یا مضمر استعمال پر مبنی ہیں۔ اس کے علاوہ، یہاں ایک بار پھر ایک تضاد ظاہر ہوتا ہے: ایک واضح تصویر زیادہ قابل فہم ہے، لیکن کم آسان، اور اس کے برعکس.

ماتریوشکا سی۔ پرتوں والا پروگرام زبان کا نظام

(ٹیبل کی ترتیب ابھی تک فراہم نہیں کی گئی ہے، لہذا میز کو تصویر کے ساتھ دکھایا گیا ہے۔)

C کے بعد، اطلاقی زبانوں کی ترقی نے ان کی علامتیت کو بڑھانے کا راستہ اختیار کیا۔ اعلی امیجری کو سمجھنے کے لیے سب سے اہم C کی براہ راست اولاد ہے - C++ زبان۔ وہ مقدار کے لیے آپریشنز کے صوابدیدی انتخاب کا خیال تیار کرتا ہے اور اسے مصنوعی اظہار کے انتخاب کی بنیاد پر مجسم کرتا ہے، جسے ایک نیا نام - آبجیکٹ ملتا ہے۔ تاہم، C++ C کی طرح جامع اور تاثراتی نہیں ہے کیونکہ نئی کلیکشن کی اقسام اور ان سے وابستہ قواعد کی وجہ سے۔ ویسے، آئیے "اوورلوڈ" کے بارے میں بات کرتے ہیں.

اوورلوڈنگ اور پولیمورفزم

لفظ "اوورلوڈ" تخلیق کے لیے مشین لرننگ کی ایک پرانی اصطلاح ہے۔ ایک سے زیادہ آپریشن.

مشین (سسٹم) پروگرامرز کثرتیت آپریشنز پریشان کن ہو سکتے ہیں: "اس نشان (+) کا کیا مطلب ہے: عدد کا اضافہ کرنا، فریکشن کا اضافہ کرنا، یا یہاں تک کہ شفٹ کرنا؟! ہمارے زمانے میں وہ اس طرح نہیں لکھتے تھے! اس لیے منتخب لفظ کا منفی مفہوم ("اوور کِل"، "تھکا ہوا")۔ ایک ایپلیکیشن پروگرامر کے لیے، ایک سے زیادہ آپریشنز سنگ بنیاد ہیں، سی زبان کی اہم کامیابی اور میراث، اتنا فطری ہے کہ انہیں اکثر پہچانا نہیں جاتا ہے۔

C++ زبان میں کثرتیت نہ صرف اصل آپریشنز تک بلکہ فنکشنز تک بھی - انفرادی اور کلاسوں میں مشترکہ - طریقوں تک۔ متعدد طریقوں کے ساتھ انہیں توسیعی کلاسوں میں اوور رائڈ کرنے کی صلاحیت آئی، جسے مبہم طور پر "پولیمورفزم" کہا جاتا تھا۔ پولیمورفزم اور اوورلوڈ کے امتزاج نے ایک دھماکہ خیز مرکب تیار کیا جو دو پولیمورفزم میں تقسیم ہوا: "سچ" اور "ایڈہاک۔" تفویض کردہ ناموں کے باوجود یہ سمجھنا ممکن ہے۔ اشتہار کی سڑک غیر ملکی ناموں سے ہموار ہے۔

"اوورلوڈ" فارم کا اعلان لفظ میں بہتر طور پر ظاہر کیا جاتا ہے۔ اضافی اعلان - ایک مختلف تصویر کے دلائل کے ساتھ ایک ہی نام کے فنکشن کا اعلان شامل کرنا۔

فارم کا اعلان "پولیمورفزم" بہتر کہا جاتا ہے۔ دوبارہ اعلان - ایک ہی تصویر کے دلائل کے ساتھ ایک ہی نام کے فنکشن کی نئی ایکسٹینشن لیئر میں اوور لیپنگ ڈیکلریشن۔

پھر یہ سمجھنا آسان ہو جائے گا کہ مختلف امیجز (دلائل) کے ایک ہی طریقے - اس کے علاوہ اعلان کیا، اور ایک تصویر - دوبارہ اعلان کیا.

روسی الفاظ فیصلہ کرتے ہیں۔

رن وے

انتہائی علامتی زبانوں کے تصورات پر غور کرنے سے بنیادی تصورات کی واضح تعریف کی اہمیت کی تصدیق ہوتی ہے۔ صحیح طریقے سے بیان کردہ C کے ساتھ، اعلی علامتی زبانیں سیکھنا آسان اور لطف اندوز ہوگا۔

کے لیے یہ خاص طور پر اہم ہے۔ مضمر انتہائی علامتی زبانیں۔ (پی ایچ پی، جاوا اسکرپٹ)۔ ان کے لیے اشیاء کی اہمیت C++ سے بھی زیادہ ہو جاتی ہے، لیکن تصویر کا تصور ہی مضمر اور مضحکہ خیز ہو جاتا ہے۔ سہولت کے نقطہ نظر سے وہ آسان ہو گئے ہیں لیکن فہم کے نقطہ نظر سے وہ زیادہ مشکل ہو گئے ہیں۔

اس لیے آپ کو سی لینگویج کے ساتھ پروگرامنگ لینگویج سیکھنا شروع کر دینا چاہیے اور اس ترتیب سے آگے بڑھنا چاہیے جس میں سی فیملی کی زبانیں نظر آتی ہیں۔

زبانوں کو بیان کرنے کا بھی یہی حال ہے۔ مختلف زبانوں میں C زبان کے مقابلے میں یکساں، یا اس سے چھوٹی، اکائی جنس کا مجموعہ ہوتا ہے۔ اقسام اور نمونوں کی تعداد دونوں سمتوں میں مختلف ہو سکتی ہے: C++ میں C سے زیادہ اقسام ہیں، جبکہ JavaScript میں کم ہیں۔

MySQL زبان خاص ذکر کی مستحق ہے۔ ایسا لگتا ہے کہ اس میں کوئی چیز مشترک نہیں ہے، لیکن وہ بالکل ٹھیک متریوشکا نے بیان کیا ہے، اور اسے جاننا تیز اور آسان ہو جاتا ہے۔ جو اہم ہے، ویب کے لیے اس کی اہمیت کو دیکھتے ہوئے - جدید پروگرامنگ کی ڈائننگ روڈ۔ اور جہاں MySQL ہے، وہاں دوسرے SQLs بھی ہیں۔ ٹھیک ہے، تمام قسم کے فورٹران-پاسکل-پائیتھنز کو بھی ماتریوشکا نے بیان کیا ہے، جیسے ہی وہ اس پر ہاتھ ڈالتے ہیں۔

لہذا، بڑی چیزیں ہمارے منتظر ہیں - C زبان کی ایک اطلاقی تفصیل اور اس کی پیروی کرنے والی زبانوں کی ایک متفقہ تفصیل۔ "ہمارے مقاصد واضح ہیں، ہمارے کاموں کی وضاحت کی گئی ہے۔ کام پر لگ جاؤ، ساتھیو! (طوفانی، طویل تالیاں، تالیوں میں بدل جاتی ہیں۔ ہر کوئی کھڑا ہو جاتا ہے۔)"

آپ کی آراء کو پوری توجہ سے سنا جائے گا، نیسٹنگ ڈولز ویب سائٹ بنانے میں آپ کی مدد بہت شکریہ کے ساتھ وصول کی جائے گی۔ کتاب کے بارے میں مزید مکمل معلومات ویب سائٹ پر موجود ہے، جو بڑی چالاکی سے Matryoshka C میں چھپی ہوئی ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں