ব্লক-ভিত্তিক ভাষাগুলি পাঠ্য-ভিত্তিক ভাষার থেকে বিভিন্ন উপায়ে আলাদা, প্রাথমিকভাবে কারণ সেগুলি নতুন ব্যবহারকারীদের জন্য ডিজাইন করা হয়েছে। আপনার নিজের ব্লক-ভিত্তিক ভাষা ডিজাইন করার সময় এখানে বিবেচনা করার বিষয়গুলির একটি তালিকা রয়েছে।
এক-ভিত্তিক তালিকা ব্যবহার করুন
নবজাতক প্রোগ্রামাররা যখন প্রথমবার শূন্য-ভিত্তিক তালিকার মুখোমুখি হয় তখন তারা খারাপভাবে প্রতিক্রিয়া জানায়। ফলস্বরূপ, ব্লকলি তালিকা এবং স্ট্রিং ইন্ডেক্সিং এক-ভিত্তিক করে লুয়া এবং ল্যাম্বদা মু-এর নেতৃত্ব অনুসরণ করে।
Blockly-এর আরও উন্নত ব্যবহারের জন্য, শূন্য-ভিত্তিক তালিকাগুলি পাঠ্যে রূপান্তরকে সহজ করতে সমর্থিত। অল্প বয়স্ক বা তার বেশি নবীন শ্রোতাদের জন্য এক-ভিত্তিক সূচীকরণ এখনও সুপারিশ করা হয়।
সুপারিশ: এক হল প্রথম সংখ্যা।
উদার নামকরণের নিয়ম সমর্থন করুন
নবীন প্রোগ্রামাররা আশা করেন না যে location_X
এবং location_x
ভিন্ন পরিবর্তনশীল। ফলস্বরূপ, Blockly ভেরিয়েবল এবং ফাংশন কেস-অসংবেদনশীল করে বেসিক এবং এইচটিএমএল এর নেতৃত্ব অনুসরণ করে। স্ক্র্যাচ আরও সূক্ষ্ম পদ্ধতি ব্যবহার করে (যেমন ডানদিকে দেখা যায়) এবং পরিবর্তনশীল নামের জন্য কেস-সংবেদনশীল কিন্তু সমতা যাচাইয়ের জন্য নয়।
এছাড়াও, Blockly এর প্রয়োজন নেই যে ভেরিয়েবল এবং ফাংশনগুলি সাধারণ [_A-Za-z][_A-Za-z0-9]*
স্কিমের সাথে সামঞ্জস্যপূর্ণ। যদি কেউ List of zip codes
নাম দিতে চায় বা רשימת מיקודים
তা পুরোপুরি ঠিক আছে।
সুপারিশ: কেস উপেক্ষা করুন, কোনো নাম অনুমতি দিন।
সমস্ত ভেরিয়েবল বিশ্বব্যাপী করুন
নবীন প্রোগ্রামারদেরও সুযোগ বুঝতে অসুবিধা হয়। ফলস্বরূপ, Blockly সমস্ত ভেরিয়েবলকে গ্লোবাল করে স্ক্র্যাচের নেতৃত্ব অনুসরণ করে। গ্লোবাল ভেরিয়েবলের একমাত্র ডাউন-সাইড হল যে রিকার্শন কৌশলী (একটি ভেরিয়েবলকে একটি তালিকায় ধাক্কা দিতে হবে এবং পপ করতে হবে), কিন্তু এটি একটি প্রোগ্রামিং কৌশল যা ব্লকলির লক্ষ্য ব্যবহারকারীদের সুযোগের বাইরে।
প্রস্তাবনা: সুযোগ সুযোগের বাইরে, এটি পরে রেখে দিন।
ঐচ্ছিক রিটার্ন মানগুলি কীভাবে পরিচালনা করবেন তা বিবেচনা করুন
পাঠ্য-ভিত্তিক প্রোগ্রামিং-এ অনেক ফাংশন একটি ক্রিয়া সম্পাদন করে, তারপর একটি মান প্রদান করে। এই রিটার্ন মান ব্যবহার করা যেতে পারে বা নাও হতে পারে। একটি উদাহরণ হল একটি স্ট্যাকের pop()
ফাংশন। শেষ উপাদানটি পেতে এবং অপসারণ করতে পপকে কল করা হতে পারে, অথবা রিটার্ন মান উপেক্ষা করে শেষ উপাদানটি সরাতে বলা হতে পারে।
var last = stack.pop(); // Get and remove last element.
stack.pop(); // Just remove last element.
ব্লক-ভিত্তিক ভাষাগুলি সাধারণত একটি রিটার্ন মান উপেক্ষা করার জন্য ভাল নয়। একটি মান ব্লককে এমন কিছুতে প্লাগ করতে হবে যা মানটি গ্রহণ করে। এই সমস্যাটি মোকাবেলা করার জন্য বেশ কয়েকটি কৌশল রয়েছে।
ক) সমস্যার চারপাশে বাহা. বেশিরভাগ ব্লক-ভিত্তিক ভাষা এই ক্ষেত্রে এড়াতে ভাষা ডিজাইন করে। উদাহরণস্বরূপ, স্ক্র্যাচের কোনো ব্লক নেই যার পার্শ্বপ্রতিক্রিয়া এবং একটি রিটার্ন মান উভয়ই আছে।
খ) দুটি ব্লক প্রদান করুন। যদি টুলবক্সে স্থান একটি সমস্যা না হয়, একটি সহজ সমাধান হল এই ধরনের প্রতিটি ব্লকের দুটি প্রদান করা, একটি রিটার্ন মান ছাড়াই। নেতিবাচক দিক হল যে এটি প্রায় অভিন্ন ব্লকের সাথে একটি বিভ্রান্তিকর টুলবক্সের দিকে নিয়ে যেতে পারে।
গ) একটি ব্লক পরিবর্তন করুন। একটি ড্রপডাউন, চেকবক্স, বা অন্য নিয়ন্ত্রণ ব্যবহার করুন যাতে ব্যবহারকারীকে রিটার্ন মান আছে কি না তা চয়ন করতে দেয়৷ ব্লকটি তার বিকল্পগুলির উপর নির্ভর করে আকৃতি পরিবর্তন করে। এর একটি উদাহরণ ব্লকলির তালিকা অ্যাক্সেস ব্লকে দেখা যেতে পারে।
ঘ) মান খান। অ্যাপ উদ্ভাবকের প্রথম সংস্করণটি একটি বিশেষ পাইপ ব্লক তৈরি করেছে যা যেকোনো সংযুক্ত মান খেয়েছে। ব্যবহারকারীরা ধারণাটি বুঝতে পারেনি, এবং অ্যাপ উদ্ভাবকের দ্বিতীয় সংস্করণটি পাইপ ব্লকটি সরিয়ে দিয়েছে এবং পরিবর্তে সুপারিশ করেছে যে ব্যবহারকারীরা কেবল একটি থ্রোওয়ে ভেরিয়েবলের মান নির্ধারণ করে।
প্রস্তাবনা: প্রতিটি কৌশলের সুবিধা এবং অসুবিধা রয়েছে, আপনার ব্যবহারকারীদের জন্য কী সঠিক তা বেছে নিন।
পঠনযোগ্য কোড তৈরি করুন
অ্যাডভান্সড ব্লকলি ব্যবহারকারীদের জেনারেট করা কোড (জাভাস্ক্রিপ্ট, পাইথন, পিএইচপি, লুয়া, ডার্ট, ইত্যাদি) দেখতে সক্ষম হওয়া উচিত এবং তারা যে প্রোগ্রামটি লিখেছেন তা অবিলম্বে চিনতে পারবে। এর মানে হল এই মেশিন-জেনারেটেড কোড পঠনযোগ্য রাখার জন্য অতিরিক্ত প্রচেষ্টা করা দরকার। অতিরিক্ত বন্ধনী, সংখ্যাসূচক ভেরিয়েবল, ক্রাশড হোয়াইটস্পেস এবং ভার্বোস কোড টেমপ্লেটগুলি সবই মার্জিত কোড তৈরির পথে বাধা হয়ে দাঁড়ায়। উত্পন্ন কোডে মন্তব্য অন্তর্ভুক্ত করা উচিত এবং Google-এর শৈলী নির্দেশিকাগুলির সাথে সঙ্গতিপূর্ণ হওয়া উচিত।
প্রস্তাবনা: আপনার জেনারেট করা কোড নিয়ে গর্বিত হোন। এটি ব্যবহারকারীকে দেখান।
ভাষার মধ্যে পার্থক্য স্বীকার করুন
ক্লিন কোডের আকাঙ্ক্ষার একটি পার্শ্বপ্রতিক্রিয়া হল যে ব্লকলির আচরণ মূলত সংজ্ঞায়িত করা হয় কিভাবে ক্রস-কম্পাইল করা ভাষা আচরণ করে। সবচেয়ে সাধারণ আউটপুট ভাষা হল জাভাস্ক্রিপ্ট, কিন্তু যদি ব্লকলি একটি ভিন্ন ভাষায় ক্রস-কম্পাইল করা হয়, তাহলে উভয় ভাষা জুড়ে সঠিক আচরণ সংরক্ষণ করার জন্য কোন অযৌক্তিক প্রচেষ্টা করা উচিত নয়। উদাহরণস্বরূপ, জাভাস্ক্রিপ্টে একটি খালি স্ট্রিং মিথ্যা, যেখানে লুয়াতে এটি সত্য। লক্ষ্য ভাষা নির্বিশেষে কার্যকর করার জন্য Blockly-এর কোডের জন্য আচরণের একটি একক প্যাটার্ন সংজ্ঞায়িত করার ফলে অসংযত কোড হবে যা GWT কম্পাইলার থেকে বেরিয়ে এসেছে বলে মনে হয়।
প্রস্তাবনা: ব্লকলি একটি ভাষা নয়, বিদ্যমান ভাষাকে আচরণকে প্রভাবিত করার অনুমতি দিন।