پروگرامرز کے لیے ٹچ ٹائپنگ زیادہ تر ان کیز کے بارے میں ہے جنہیں ٹائپنگ کا عام کورس چھوڑ دیتا ہے: ہندسے، بریکٹس، آپریٹرز اور ان کے ساتھ Shift کے ملاپ۔ جو پروگرامر نثر 90 WPM پر ٹائپ کرتا ہے وہ کوڈ میں سست ہو سکتا ہے، اور 50 WPM والا نثر ٹائپسٹ کوڈ میں تیز ہو سکتا ہے۔ ہم نے یہ بات تب محسوس کی جب ٹیسٹنگ کے دوران اپنی سورس فائلیں حسبِ منشا موڈ میں چسپاں کیں۔ الفاظ والے موڈ کے مقابلے میں رفتار ایک تہائی یا اس سے زیادہ گر گئی، فی کی ہیٹ میپ نمبر والی قطار اور دائیں چھنگلیا پر روشن ہو گیا، اور سب سے سست برسٹ ان ٹوکنز پر تھے جن میں بریکٹس تھے۔
نثر کا WPM کوڈ ٹائپ کرنے کا ناقص پیمانہ کیوں ہے
کوڈ متن سے تین طرح مختلف ہے، اور عام انگریزی الفاظ سے بنا ٹائپنگ ٹیسٹ ان میں سے کسی کو نہیں ناپتا۔
پہلا فرق حروف کا ملاپ ہے۔ ہم نے گنتی کی۔ اس بلاگ کی پہلی دس تحریروں میں اسپیس کے علاوہ ہر 100 حروف میں سے تقریباً 93 حروفِ تہجی، 5 رموزِ اوقاف اور 2 ہندسے ہیں۔ npm کے کمانڈ لائن ٹول کے JavaScript سورس میں حروفِ تہجی تقریباً 80 تک گر جاتے ہیں اور علامتیں 19 تک بڑھ جاتی ہیں۔ Python کے json اور email ماڈیولز میں 80 سے 85 حروفِ تہجی آتے ہیں، اور ہماری ایک گنجان بلڈ اسکرپٹ میں 64، جس کے ایک تہائی حروف علامتیں ہیں۔ یعنی کوڈ میں ہماری نثر کے مقابلے میں تقریباً تین سے سات گنا زیادہ علامتیں ہوتی ہیں۔ ان میں سے زیادہ تر سب سے اوپر والی قطار پر ہوتی ہیں یا Shift مانگتی ہیں، یعنی دائیں چھنگلیا اور کمزور پہنچ والی جگہیں۔ ہمارے انگریزی الفاظ والے ٹیسٹ ایک سب ٹائٹل کارپس کے 1,000 سب سے عام الفاظ سے بنے ہیں؛ "{" ان میں شامل نہیں۔
دوسرا فرق لَے ہے۔ نثر لمبے سلسلوں میں ٹائپ ہوتی ہے۔ کوڈ سوچنے، اسکرول کرنے اور پڑھنے کے وقفوں کے درمیان چھوٹے چھوٹے جھٹکوں میں ٹائپ ہوتا ہے۔ Dhakal et al. کی 13 کروڑ 60 لاکھ کی اسٹروکس والی 2018 کی تحقیق کے رضاکار، جو جملے نقل کر رہے تھے، کیز کے درمیان اوسطاً تقریباً 239 ms لیتے تھے۔ ایک پروگرامر کا دن کئی کئی سیکنڈ کے وقفوں سے بھرا ہوتا ہے، اور چھوٹے سلسلوں کے اندر برسٹ رفتار کسی بھی اوسط سے زیادہ اہم ہے۔
تیسرا فرق ایڈیٹر ہے۔ آٹو کمپلیٹ، اسنیپٹس اور کی بورڈ شارٹ کٹس کا مطلب ہے کہ کام کرنے والا پروگرامر اسکرین پر موجود حروف کا صرف ایک حصہ ٹائپ کرتا ہے۔ کوئی ٹائپنگ ٹیسٹ یہ نہیں ناپ سکتا، اور ہمارا ٹیسٹ اس کا دعویٰ بھی نہیں کرتا۔
کیا پروگرامنگ کے لیے ٹائپنگ کی رفتار اہم ہے؟
لوگوں کے خیال سے کم، اور ایک مختلف جگہ پر۔ جب کوئی پوچھتا ہے کہ کیا پروگرامر بننے کے لیے 60 WPM کافی ہے، تو جواب ہاں ہے، ایک شرط کے ساتھ: اگر آپ علامتوں اور اعداد کے لیے نیچے دیکھتے ہیں تو آپ کوڈ 60 WPM پر ٹائپ نہیں کرتے۔ اپنی سوچ کا سلسلہ توڑے بغیر ایک لائن ٹائپ کر سکنا خام رفتار سے زیادہ اہم ہے، اور کی بورڈ کی طرف نیچے دیکھنا ہی وہ چیز ہے جو اسے توڑتی ہے۔
علامتیں تیز کیسے ٹائپ کریں، اور یہ کوئی کیوں نہیں سکھاتا
ٹائپنگ فورمز پر ایک سوال بار بار آتا ہے: کوئی شخص حروف معقول رفتار سے ٹچ ٹائپ کر لیتا ہے، لیکن کوڈنگ شروع کرتے ہی علامتوں، اعداد اور یہاں تک کہ بڑے حروف کو ڈھونڈنے لگتا ہے، اور وہ انہیں بتدریج سیکھنے کا طریقہ چاہتا ہے، ویسے ہی جیسے اس نے حروف سیکھے تھے، چند کیز ایک وقت میں۔
علامتوں کو مشکل بنانے والی ایک وجہ Shift ہے۔ جس npm سورس کی ہم نے گنتی کی، اس میں علامتوں کی تقریباً 45% کی اسٹروکس Shift والے حروف تھیں جیسے ( ) { } : اور $، جو ایک بھی بڑا حرف گننے سے پہلے اسپیس کے علاوہ ہر 100 حروف میں سے تقریباً 9 ہیں۔ اس لیے پہلے Shift کی عادت ٹھیک کریں: Shift اس ہاتھ سے دبائیں جو وہ حرف ٹائپ نہیں کر رہا۔ ( اور ) دائیں ہاتھ کے 9 اور 0 پر ہیں، اس لیے ان کے لیے بایاں Shift؛ ! @ # $ بائیں ہاتھ پر ہیں، اس لیے ان کے لیے دایاں Shift۔ زیادہ تر خود سیکھنے والے ٹائپسٹ ہر چیز کے لیے بایاں Shift دباتے ہیں، اور ! کے لیے اس کا مطلب ہے کہ بائیں چھنگلیا ایک ساتھ دو کیز دبائے۔ اپنی عادت جانچنے کے لیے ایک ایسی لائن ٹائپ کریں جس میں @ اور $ ہوں اور دیکھیں کون سی چھنگلیا حرکت کرتی ہے۔
علامتوں کی الگ سے مشق کرنا مشکل ہے اور ویسے بھی اکتا دینے والا ہے: حروف الفاظ کے ساتھ آتے ہیں، بریکٹس کوڈ کے ساتھ آتے ہیں، اور بے ترتیب کوڈ دلچسپ نہیں ہوتا۔ ہمارا جواب یہ ہے کہ علامتوں کی مشق کوڈ کی حقیقی لائنوں پر کی جائے، ایک وقت میں ایک قسم۔
ایک وقت میں ایک قسم
یہ وہ ترتیب ہے جو ہم اپنائیں گے، اور اسی ترتیب سے ہم مشق کے صفحے کے لیے علامتوں کا ٹریک بنا رہے ہیں۔ جب تک وہ جاری نہیں ہوتا، آپ حقیقی کوڈ کو حسبِ منشا موڈ میں چسپاں کر کے یہی کر سکتے ہیں، ایک وقت میں علامتوں کی ایک قسم، اور اگلی قسم تب تک شامل نہ کریں جب تک موجودہ قسم 95% درستی پر نہ آ جائے:
- ہندسے۔ نمبر والی قطار، جس تک ہوم رو کی انگلیاں اوپر پہنچتی ہیں۔ یہ پہلے آتے ہیں کیونکہ یہ حروفِ تہجی کے علاوہ سب سے زیادہ استعمال ہونے والی قسم ہیں اور کیونکہ تقریباً ہر ایک کی یہاں کوئی بری عادت ہوتی ہے، جیسے شہادت کی انگلی کا 4، 5، 6 اور 7 دبانا۔ اعداد والا ٹیسٹ ایک فوری جانچ ہے۔
- جوڑوں کی صورت میں بریکٹس۔ پہلے ( )، پھر [ ]، پھر { }۔ جوڑے اس لیے کہ آپ تقریباً کبھی ایک کو دوسرے کے بغیر ٹائپ نہیں کرتے: اس npm سورس میں ( 6,195 بار آتا ہے اور ) 6,194 بار۔ کھولنے اور بند کرنے کی حرکت کو ایک اکائی کے طور پر سیکھنا ہی اسے تیز بناتا ہے۔ بند کرنے والا بریکٹ وہ جگہ ہے جہاں زیادہ تر لوگوں کی لَے ٹوٹتی ہے۔
- آپریٹرز۔ = + - * / اور زاویائی بریکٹس، اور ساتھ مرکب شکلیں (==، =>، +=، !=)۔ یہ نمبر والی قطار اور دائیں ہاتھ کی رموزِ اوقاف والی کیز پر پھیلے ہیں، اور کئی کو اسی ہاتھ پر Shift چاہیے، جو مشکل حصہ ہے۔
- کوٹس اور رموزِ اوقاف۔ ' " ; : , . جن میں زیادہ تر کام دائیں چھنگلیا کرتی ہے۔ سیمی کولن اور کولن پر C خاندان اور Python کے ٹائپسٹ سب سے زیادہ مختلف ہوتے ہیں، اس لیے اپنی استعمال کی زبان کی لائنوں پر مشق کریں۔
- شیل اور باقی عجیب علامتیں۔ پائپ، بیک سلیش، ٹلڈ، بیک ٹک، کیرٹ، ایمپرسینڈ، ہیش، ڈالر، ایٹ کا نشان اور _ کی۔ _ اور بیک ٹک زیادہ تر لوگوں کو حیران کرتے ہیں؛ snake_case کوڈ میں _ مسلسل استعمال ہوتا ہے، اور زیادہ تر ٹائپسٹ اسے غلط انگلی سے دباتے ہیں۔
زیادہ تر لوگوں کو ہر قسم کے لیے دس منٹ کے سیشنز کے ایک دو ہفتے لگتے ہیں، اس لیے پورا ٹریک دو سے تین مہینے کا ہے۔ یہ حروف سیکھنے سے سست ہے، کیونکہ علامتوں والی کیز زیادہ دور ہیں اور جن عادتوں کو آپ بدل رہے ہیں وہ زیادہ پرانی ہیں۔
فی کی اعداد و شمار دیکھ کر معلوم ہوتا ہے کہ کیا غلط ہوتا ہے: لوگ علامت صحیح انگلی سے سیکھ لیتے ہیں اور پھر دباؤ میں پرانے طریقے پر لوٹ جاتے ہیں، کیونکہ چند ہفتوں تک پرانی حرکت زیادہ تیز ہوتی ہے۔ اعداد و شمار اسے ایک ایسی کی کے طور پر دکھاتے ہیں جس کا وقفہ بہت اوپر نیچے ہوتا ہے، صحیح پہنچنے پر تیز اور نہ پہنچنے پر سست۔ علاج یہ ہے کہ ایک ہفتہ مزید اسی قسم پر رہیں۔
بریکٹ کے جوڑے اور خودکار بندش
ایڈیٹرز بریکٹس خود بند کر دیتے ہیں، جس سے ایک جائز سوال اٹھتا ہے: بند کرنے والا بریکٹ ٹائپ کرنا کیوں سیکھیں؟
دو وجوہات۔ خودکار بندش یکساں نہیں ہوتی: یہ کچھ جگہوں پر چلتی ہے اور کچھ پر نہیں، جیسے ٹرمینل یا چیٹ ونڈو میں۔ اس پر انحصار کرنے والا ٹائپسٹ ہر بار یہ دیکھنے کے لیے ہچکچاتا ہے کہ یہ چلی یا نہیں، اور ہچکچاہٹ کی قیمت کی اسٹروک سے زیادہ ہے۔ اور خود بند ہوئے بریکٹ کے اوپر ٹائپ کرنا (جب ایڈیٹر پہلے ہی ")" ڈال چکا ہو تب اسے دبانا) بھی ایک کی اسٹروک ہی ہے، اس لیے آپ بند کرنے والا بریکٹ ہر صورت ٹائپ کرتے ہیں۔
جب آپ یہاں حسبِ منشا موڈ میں کوڈ چسپاں کرتے ہیں تو متن خالی جگہوں پر تقسیم ہو جاتا ہے، اس لیے انڈینٹیشن غائب ہو جاتی ہے اور ہر ٹوکن ایک لفظ بن جاتا ہے۔ یہ ایک ہی وقت میں حد بھی ہے اور سہولت بھی: آپ کو Python کی ہر لائن کے شروع میں چار اسپیسز ٹائپ نہیں کرنی پڑتیں، اور ان کی مشق بھی نہیں ہوتی۔ ایک باقاعدہ کوڈ موڈ جو انڈینٹیشن اور خود بند ہونے والے جوڑوں کو ایڈیٹر کی طرح سنبھالے، ہماری فہرست میں ہے، اور یہ جتنا لگتا ہے اس سے زیادہ مشکل ہے۔
کوڈ بمقابلہ نثر کی رفتار
ہمارے پاس پرسنٹائل شائع کرنے کے لیے کوڈ موڈ کے کافی نتائج نہیں، اور ہم انہیں گھڑنے کے بجائے انتظار کرنا بہتر سمجھتے ہیں۔ ہماری اپنی کوششوں میں، ایک حقیقت پسندانہ اسنیپٹ پر کوڈ کی رفتار اسی شخص کی نثر کی رفتار کے تقریباً آدھے سے دو تہائی کے آس پاس رہی ہے، اور یہ تناسب عام مشق سے زیادہ علامتوں کی مشق سے بہتر ہوتا ہے۔
جو عدد واقعی منتقل ہوتا ہے وہ درستی ہے۔ جو پروگرامر نثر 97% درستی سے اور کوڈ 90% سے ٹائپ کرتا ہے اسے علامتوں کا مسئلہ ہے، اور فی کی ہیٹ میپ ٹھیک ٹھیک دکھاتا ہے کہ کون سی علامتیں۔ جو پروگرامر دونوں پر 97% پر ہے اسے بس مزید کوڈ ٹائپ کرنے کی ضرورت ہے۔ ہمارا اسکورنگ کا طریقۂ کار بتاتا ہے کہ درستی درست کی گئی غلطیوں کو کیسے گنتی ہے۔
ایک معیاری پیمانے کے لیے، اعداد آن کر کے رموزِ اوقاف والا ٹیسٹ ہمارے باقاعدہ موڈز میں کوڈ کے سب سے قریب ہے۔ اس میں کرلی بریکٹس نہیں ہوں گے، لیکن یہ Shift کی اور نمبر والی قطار کو شامل کرتا ہے، اور زیادہ تر لوگوں کی کمی وہی ہوتی ہے۔
کی بورڈ کے انتخاب جو مدد دیتے ہیں
پروگرامرز کو کی بورڈ کے بارے میں جو مشورے ملتے ہیں وہ زیادہ تر سوئچز کے بارے میں ہوتے ہیں، اور زیادہ تر غیر متعلق۔
لے آؤٹ سوئچ سے زیادہ اہم ہے۔ Dvorak بریکٹس کو اوپر نمبر والی قطار پر لے جاتا ہے اور زیادہ تر رموزِ اوقاف کی جگہ بدل دیتا ہے۔ Colemak اور Workman بریکٹس کو وہیں رکھتے ہیں جہاں QWERTY رکھتا ہے، لیکن دونوں سیمی کولن کو وہاں لے جاتے ہیں جہاں QWERTY میں P ہے، جو C خاندان کے پروگرامرز کو محسوس ہوگا۔ لے آؤٹس والے مضمون میں تفصیلی بات ہے۔
علامتوں کی ایک لیئر بڑے کی بورڈ سے بہتر ہے۔ بہت سے اسپلٹ اور کمپیکٹ کی بورڈز آپ کو بریکٹس اور آپریٹرز کو ایک ایسی لیئر پر ہوم رو کی انگلیوں کے نیچے رکھنے دیتے ہیں جو انگوٹھے کی ایک کی سے دبائے رکھی جاتی ہے۔ پروگرامرز جن ہارڈویئر تبدیلیوں کا ذکر کرتے ہیں ان سب میں سے ہم یہی پہلے آزمائیں گے، کیونکہ اس کا مطلب ہے کہ آپ کو کسی علامت کے لیے پھر کبھی نیچے نہیں دیکھنا پڑے گا۔
ISO بمقابلہ ANSI۔ ISO کی بورڈز (برطانیہ اور زیادہ تر یورپ) پر بائیں Shift کے ساتھ والی اضافی کی اور لمبی Enter کی یہ بدل دیتی ہیں کہ بیک سلیش اور پائپ کہاں ہیں۔ اگر آپ ایک پر مشق کرتے ہیں اور دوسرے پر کام کرتے ہیں تو آپ کی چھنگلیا چُوکے گی۔ اسی وجہ سے ہماری ایمولیشن Colemak-DH کی دونوں شکلوں کے ساتھ آتی ہے۔
رفتار کے لیے سوئچز کی اہمیت نہ ہونے کے برابر ہے۔ لینیئر، ٹیکٹائل اور کلکی سوئچز احساس اور آواز میں مختلف ہیں، اور کی اسٹروک لاگ کو پتا نہیں کہ آپ نے کون سا دبایا۔ ہمارا میکینیکل کی بورڈز والا مضمون اعداد کا جائزہ لیتا ہے۔
آواز کچھ لوگوں کو فیڈبیک میں مدد دیتی ہے: غلطی کی آواز نیچے دیکھے بغیر بتا دیتی ہے کہ کوئی علامت غلط تھی۔ علامتیں سیکھتے وقت اسے آن رکھیں۔
پروگرامر کا دس منٹ کا سیشن
علامتوں کے ٹریک کے دو تین مہینوں کے دوران ہم روزانہ یہ کریں گے:
- دو منٹ: وارم اپ کے طور پر 30 سیکنڈ کا الفاظ والا ٹیسٹ، درستی 97% پر۔
- چھ منٹ: علامتوں کی موجودہ قسم، اپنے کوڈ سے چسپاں کیے گئے حسبِ منشا متن پر۔ پرانی انگلی پر لوٹنے کی پہلی علامت پر رک جائیں۔
- دو منٹ: اپنی سب سے زیادہ استعمال ہونے والی زبان میں کوڈ کا ایک اسنیپٹ۔ بعد میں WPM نہیں، فی کی ہیٹ میپ دیکھیں۔
جن دنوں آپ کے پاس دس منٹ نہ ہوں، بند کرنے والا بریکٹ خود ٹائپ کریں۔ یہ اس مضمون کی سب سے چھوٹی عادت ہے اور عموماً سب سے پہلے فائدہ دیتی ہے۔
اکثر پوچھے جانے والے سوالات
پروگرامرز کے لیے ٹائپنگ کی اچھی رفتار کیا ہے؟
اگر آپ علامتیں اور اعداد ٹچ ٹائپ کرتے ہیں تو تقریباً 40 WPM سے اوپر کچھ بھی کام چلانے کے قابل ہے۔ اس سے آگے رکاوٹ سوچنا، پڑھنا اور ایڈیٹر کی مہارت ہے، انگلیوں کی رفتار نہیں۔
میں اعداد کو ٹچ ٹائپ کرنا کیسے سیکھوں؟
نمبر والی قطار کی الگ سے مشق کریں جب تک درستی 95% پر برقرار نہ رہے، ہر ہندسے کے لیے ہوم رو پر اس کے بالکل نیچے والی انگلی استعمال کرتے ہوئے، پھر اعداد کو عام متن میں ملا دیں۔