انٹر کال

انٹر کال یا INTERCAL، جسے "Compiler Language With No Pronounceable Acronym" (ایسی کمپلائلر زبان جس کے کوئی قابل تلفظ حروف نہیں) کہا جاتا ہے ایک مزاحیہ (parody) پروگرامنگ زبان ہے جو 1972 میں ڈان ووڈز (Don Woods) اور جِم لیون (Jim Lyon) نے بنائی، جب وہ دونوں پرنسٹن یونیورسٹی کے طالب علم تھے۔

یہ زبان 1960 کی دہائی میں پروگرامنگ زبانوں میں پائے جانے والے پیچیدہ اور غیر ضروری اجزاء اور علامات پر طنز کرنے کے لیے تخلیق کی گئی تھی۔

نمایاں پہلو:

INTERCAL نے جان بوجھ کر ایسے syntax اور commands متعارف کروائیں جو عام منطق اور پروگرامنگ کے معیار سے ہٹ کر ہیں، تاکہ یہ روایتی زبانوں جیسے کوبال، فورٹران اور اسمبلی زبانوں کی مزاحیہ نقالی بن سکے۔

مثلاً، اس میں "PLEASE" کا استعمال اس بات کا اظہار ہے کہ آپ کا کوڈ "مہذب" ہے — اور اگر آپ اسے بہت زیادہ بار لکھیں، تو پروگرام ایرر (غلط ہونے کا اظہار) دے سکتا ہے کہ آپ "زیادہ مہذب" ہو رہے ہیں۔

 اہم شخصیات 
  100px|left|ڈان ووڈز 
  ڈان ووڈز (Don Woods)، INTERCAL کے بانیوں میں سے ایک

  100px|left|جِم لیون 
  جِم لیون (Jim Lyon)، INTERCAL کے دوسرے خالق

 INTERCAL کی موجودہ شکلیں: 
 C-INTERCAL – 1990 میں بنایا گیا، جسے ایرک ایس. ریمونڈ (Eric S. Raymond) اور الیکس سمتھ (Alex Smith) برقرار رکھتے ہیں۔
 CLC-INTERCAL – جسے کلاڈیو کالویلی (Claudio Calvelli) نے بنایا اور سنبھالا۔

/* ویکیپیڈیا پر سٹائلنگ اکثر براہ راست "MediaWiki:Common.css" یا "MediaWiki:Vector.css" میں کی جاتی ہے۔


شخصیت-کارڈ {
  display: flex; /* تصاویر اور متن کو ایک ہی قطار میں رکھنے کے لیے */
  align-items: center; /* عمودی طور پر مرکز میں لانے کے لیے */
  margin-bottom: 10px; /* ہر کارڈ کے درمیان فاصلہ */
}

.شخصیت-کارڈ .thumbimage { /* ویکیپیڈیا فائل کے لیے کلاس */
  margin-right: 15px; /* تصویر اور متن کے درمیان فاصلہ */
}

/* ہیڈنگز کے لیے کوئی اضافی سٹائلنگ عام طور پر ویکیپیڈیا پر ضروری نہیں ہوتی کیونکہ
   ان کا اپنا پہلے سے طے شدہ سٹائل ہوتا ہے۔ */

 نمونے کا کوڈ اور اس کا تجزیہ 

DO ,1 <- #13

DO ,1 SUB #1 <- #238

DO ,1 SUB #2 <- #108

DO ,1 SUB #3 <- #112

DO ,1 SUB #4 <- #0

DO ,1 SUB #5 <- #64

DO ,1 SUB #6 <- #194

DO ,1 SUB #7 <- #48

DO ,1 SUB #8 <- #22

DO ,1 SUB #9 <- #248

DO ,1 SUB #10 <- #168

DO ,1 SUB #11 <- #24

DO ,1 SUB #12 <- #16

DO ,1 SUB #13 <- #162

DO READ OUT ,1

یادی خیال:

یہ پروگرام بائنری نمبرز میں کچھ خاص (ایسکی) ASCII کوڈز کو ایک ایرے (array) میں محفوظ کرتا ہے اور پھر انھیں پڑھنے کے لیے ("READ OUT") کمانڈ سے پرنٹ کرتا ہے۔

سطر بہ سطر تشریح:

DO ,1 <- #13:

ایک array (یعنی انٹرنل اسپیس) بنائی جا رہی ہے جس کا سائز 13 ہے۔

DO ,1 SUB #1 <- #238

سے لے کر

DO ,1 SUB #13 <- #162

تک ہر لائن اس array میں ایک عدد (number) رکھ رہی ہے۔ یہ نمبرز دراصل ASCII یا بائنری فارمیٹ میں ہیں اور کچھ خاص کرداروں کے اظہار کے لیے استعمال ہوتے ہیں۔

DO READ OUT ,1:

آخر میں array میں موجود تمام نمبرز کو آؤٹ پٹ کیا جاتا ہے۔ اس کے نتیجے میں پروگرام "1" پرنٹ کرتا ہے — جو بظاہر بہت آسان لگتا ہے، لیکن INTERCAL میں بہت پیچیدہ طریقے سے کیا جاتا ہے۔

دلچسپ بات:

انٹر کال اس لیے مزاحیہ ہے کیونکہ:

عام زبانوں میں صرف print " 1" (پرنٹ یا چھپو) کافی ہوتا، مگر یہاں 13 لائنز درکار ہیں۔

Syntax (سینٹیکس) جان بوجھ کر الٹا، مبہم اور ناقابلِ فہم بنایا گیا ہے۔

DO, COME FROM, PLEASE, IGNORE, ABSTAIN, جیسے الفاظ استعمال ہوتے ہیں، جو روایتی پروگرامنگ سے بہت مختلف ہیں۔

مجموعی جائزہ:

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

اسی طرح سے ایک اور مثال اس زبان کے کوڈ کی یوں ہے:

DO ,1 <- #13

DO ,1 SUB #1 <- #72

DO ,1 SUB #2 <- #101

DO ,1 SUB #3 <- #108

DO ,1 SUB #4 <- #108

DO ,1 SUB #5 <- #111

DO ,1 SUB #6 <- #44

DO ,1 SUB #7 <- #32

DO ,1 SUB #8 <- #87

DO ,1 SUB #9 <- #111

DO ,1 SUB #10 <- #114

DO ,1 SUB #11 <- #108

DO ,1 SUB #12 <- #100

DO ,1 SUB #13 <- #33

DO READ OUT ,1

یہ ہلو ورلڈ یا سبھی دنیا والوں کو سلام اسکرین چھپنے کے لیے ہے۔

1. DO ,1 <- #13

یہ لائن ایک ایرے array بنا رہی ہے جس میں 13 عناصر (elements) ہوں گے۔

یعنی ہم ہلو ورلڈ "Hello, World!" کے 13 حرف محفوظ کریں گے۔

2. DO ,1 SUB #X <- #Y
یہاں ہر سطر میں ہم ایرے کے کسی خاص حصے میں ایک عدد (ایسکی کوڈ) ڈال رہے ہیں۔

مثال کے طور پر:

 72 = H

 101 = e

 108 = l

 111 = o

 44 = ,

 32 = (space) (جگہ)

 87 = W

 114 = r

 100 = d

 33 = !

3. DO READ OUT ,1
اس لائن سے تمام ایرے کے عناصر کو آؤٹ پٹ میں ظاہر کیا جاتا ہے۔

اس کا نتیجہ اسکرین پر:

Hello, World! کی شکل میں دکھے گا۔

 حوالہ جات 

 بیرونی روابط 

 Official website of C-INTERCAL
 INTERCAL Resources on the Web, including several implementations
 Computerworld Interview with Don Woods on INTERCAL
 Paper on Abstraction and Modularity in INTERCAL