Uploaded avatar of kytrinyx

Meade Kincke-এর সাথে একটি সাক্ষাৎকার

@kytrinyx
7 বছরের বেশি আগে

Meade Kincke-এর সাথে একটি সাক্ষাৎকার, যেখানে তিনি ও Katrina Owen কথা বলেছেন Rust কম্পাইলার, বৈজ্ঞানিক কালারস্পেস ব্যবহার করে বিয়ারের রং নির্ণয় করা একটি GUI, এবং তাঁর বই 'A Practical Guide To Rust' নিয়ে।

হ্যালো Meade। কথা বলার জন্য ধন্যবাদ। আমরা আপনার সাথে কথা বলতে চেয়েছিলাম কারণ Rust ট্র্যাকের সবচেয়ে সক্রিয় মেন্টর আপনি। আপনি ৪০০-র বেশি শিক্ষার্থীকে সাহায্য করেছেন। Exercism সম্পর্কে আপনি কীভাবে জানলেন?

রেডিটের Rust সাবরেডিটে কেউ লিখেছিলেন যে Exercism-এর Rust ট্র্যাকে মেন্টর দরকার, তাই আমি খোঁজ নিলাম। যে খোঁজ নিয়েছিলাম, সেজন্য আমি খুব খুশি, কারণ এতে যে আনন্দ পাওয়া যায় তা অসাধারণ, আর সবাই এত ভালো ও কৃতজ্ঞ। Exercism-এর আমার শিক্ষার্থীদের সাথে আমার চমৎকার সম্পর্ক তৈরি হয়েছে, আর তাদের সাহায্য করতে আমার দারুণ লাগে।

এমন কোনো বিশেষ ঘটনা আছে যা আপনার মনে দাগ কেটেছে?

হ্যাঁ, Rust-এর একটি অনুশীলনী খুব জনপ্রিয় হয়েছে: পিথাগোরিয়ান ট্রিপলেট।

এই অনুশীলনীতে সবচেয়ে কমন সমস্যা সাধারণত পারফরম্যান্স। বেশিরভাগ মানুষ প্রথমে নেস্টেড for লুপ দিয়ে এটি সমাধান করেন, যার জটিলতা কমপক্ষে O(n²) এবং যা খুবই অদক্ষ। আমার লক্ষ্য হলো আমার শিক্ষার্থীদের একটি লিনিয়ার সমাধানে পৌঁছে দেওয়া: O(n)।

আমার পদ্ধতি হলো প্রশ্ন করা। আমি শুরু করি জিজ্ঞেস করে যে তারা Rust-এর ইটারেটর মেথড শিখতে চান কি না, কারণ এর প্রচুর সুবিধা আছে, যার একটি হলো আপনি Rayon লাইব্রেরি দিয়ে আপনার কাজ প্যারালালাইজ করতে পারেন।

"হ্যাঁ, অবশ্যই," উত্তর দেওয়ার পর আমার একজন শিক্ষার্থী বললেন যে তিনি Rust শিখছেন কারণ তিনি এটি এমবেডেড কন্ট্রোলের জন্য এবং তারপর তার বিশাল ডেটা আউটপুট প্রসেস করার জন্য ব্যবহার করার কথা ভাবছেন। তাই প্যারালালিজম তাঁর কাছে গুরুত্বপূর্ণ। আপাতদৃষ্টিতে সহজ একটি অনুশীলনী দিয়ে Rust-এর আরও জটিল ও ইডিয়োম্যাটিক অংশ শেখানোয় তিনি খুশি হয়েছিলেন।

এখন Exercism-এর কল্যাণে তিনি আমাকে একান্তে পড়ানোর জন্য নিয়োগ দিয়েছেন, আর আমরা কিছু পরীক্ষামূলক প্রজেক্টে একসাথে কাজ করব। তিনি যখন পুরো কোম্পানিকে সম্পূর্ণভাবে Rust-এ রূপান্তর করবেন, তখন আমি তাঁর পুরো টিমকে পড়াব।

আমি যেসব শিক্ষার্থীকে মেন্টরিং করেছি, তাদের সাথে কাজ করতে সত্যিই দারুণ লেগেছে, আর আমি চাই এটি আরও বাড়তে থাকুক।

আমার এতটাই ভালো লেগেছে যে এখন আমি স্বেচ্ছায় Rust ট্র্যাকের মেইনটেইনার হতে রাজি হয়েছি, যাতে পর্দার আড়ালে আরও সাহায্য করতে পারি।

ওই মানবিক যোগাযোগটা সত্যিই অনেক গুরুত্বপূর্ণ! আপনি A Practical Guide to Rust-এর লেখক। এটা কী নিয়ে, আর এটি লেখার পেছনে আপনার প্রেরণা কী ছিল?

অন্যরা যাতে Rust-এর কিছু নির্দিষ্ট দিক আরও ভালোভাবে বুঝতে পারেন, সেজন্য আমি এই বইটি লিখেছি। ভাষাটি নিয়ে বাইরে খুব বেশি ডকুমেন্টেশন নেই, আর আমার মনে হয়েছিল এমন কিছু লেখা দরকার যেখানে হাস্যরস আছে এবং ভাষার ধারণাগুলো বাস্তবভাবে ব্যাখ্যা করা হয়েছে। এতে কিছু বেসিক ও অ্যাডভান্সড বিষয়ের গাইড আছে। আমি চাই মানুষ ভাষাটির ব্যবহারিক, বাস্তব-জগতের ব্যবহার সম্পর্কে একটি দৃঢ় ধারণা পাক। এতে কাল্পনিক নয়, সত্যিকারের উদাহরণ দেওয়া আছে।

আমি সবসময় জানতাম যে আমি একটি বই লিখব। যখন আমি দূর থেকে একজন সহকর্মীকে Rust-এ প্রোগ্রামিং শেখাতে শুরু করলাম, তখনই কাঠামোটা নিজে থেকেই তৈরি হয়ে গেল। তিনি আগে কখনও কোড স্পর্শ করেননি, আর আমাদের মতো নার্ডরা যেসব পরিভাষা ও পদ্ধতিকে সহজ ধরে নিই, সেগুলো আমাকে নতুনভাবে, বোঝার মতো করে ব্যাখ্যা করতে হয়েছিল। Rust-এ ওনারশিপের ধারণা নিয়ে আলোচনা করার সময় আমি লাইব্রেরি থেকে বই ধার করা বনাম বইটির মালিক হওয়ার মতো উপমা ব্যবহার করেছি।

আমি আমার প্রজেক্ট BrewStillery থেকে উদাহরণও যুক্ত করেছি। স্ট্রাক্ট ও এনামের মতো জিনিসগুলো একটি সত্যিকারের প্রোগ্রামে কীভাবে কাজ করে, তা দেখার এটা দারুণ একটি উপায়। এটা বাস্তবভাবে প্যারালালিজম কীভাবে ব্যবহার করতে হয় তাও দেখায়।

বইটি লেখার সময় আমি জানতাম যে আমি চাই এটি শুধু একটি রেফারেন্স গাইডের মতো নয়, একটি গল্পের মতো পড়া যাক। এটি নিজের ওপর ভিত্তি করে এগোয়, তবে প্রতিটি অংশ আলাদাভাবেও স্বতন্ত্র। এটা হলো কেমিস্ট্রির ম্যানুয়াল ধরে রান্না করা আর Julia Child-এর "The French Chef"-এর একটি পর্ব দেখা, এই দুইয়ের মধ্যে পার্থক্য।

বাহ, বেশ চমকপ্রদ। আপনি বইটি কাদের জন্য লিখেছেন, আর পাঠক এটি থেকে কী পাবেন?

এটি তাদের জন্য যারা Rust শিখতে চান। আমি ধারণাগুলো যেভাবে বিস্তারিত করি, তার সবচেয়ে বড় গুণ হলো এটি পাঠককে বিষয়টির মৌলিক বোঝাপড়া দেয়, অথচ অন্য অনেক লেখা মুখস্থ করার দিকেই বেশি ঝোঁকে।

দেখছি আপনি অনেক ইতিবাচক রিভিউ পেয়েছেন। দ্বিতীয় খণ্ড বের করার পরিকল্পনা আছে কি?

হ্যাঁ! আমি অবশ্যই লেখা চালিয়ে যাব এবং আরও খণ্ড প্রকাশের পরিকল্পনা করছি।

মেন্টরিং ও লেখালেখির মাধ্যমে শেখানোর পাশাপাশি আপনি Rust কম্পাইলারেও কিছু কাজ করেছেন। সেটা নিয়ে বলবেন কি?

অবশ্যই!

আমার কাজের একটি সংক্ষিপ্ত ভূমিকা হিসেবে বলা যায়, একটি প্রোগ্রাম মূলত দুই জায়গায় কাজ করতে পারে: কম্পাইল টাইম ও রানটাইম। রানটাইমে যখন একটি ফাংশন চালানো হয়, তখন তার ভেতরের সবকিছু পুনরায় তৈরি ও পুনরায় হিসাব করতে হয়। এর মানে সবচেয়ে গুরুত্বপূর্ণভাবে মেমরি পুনরায় বরাদ্দ করা, যা আমরা সবসময় এড়াতে চাই। কোনো ফাংশন যখন কনস্ট্যান্ট হয়, তখন প্রোগ্রাম চালু হওয়ার সময়ই তা মেমরিতে লোড হয়ে যায়। কম্পাইল টাইমে আমরা যত বেশি কাজ করতে পারি, আমাদের প্রোগ্রাম তত ভালো পারফরম্যান্স দেয়।

কিছুদিন আগে শুনলাম, compile time function execution (const fn) বলে এই ধারণাটি Rust-এ বাস্তবায়ন করা হচ্ছে, আর আমি সত্যিই উত্তেজিত হয়ে উঠলাম। জিনিসগুলো দক্ষ ও নির্ভুল করতে পারা নিয়ে আমি খুবই উৎসাহী। const fn নিয়ে আমার সবচেয়ে ভালো লাগার একটি দিক হলো, এটি সম্পূর্ণ হলে আমরা গাণিতিক ধ্রুবকের মতো চমৎকার জিনিস সুন্দরভাবে নির্ণয় করতে পারব। বর্তমানে পাই একটি হার্ডকোড করা মান। অনেকেই বলবেন এটি যথেষ্ট নির্ভুল, কিন্তু আমার মনে হয় এটি উপলব্ধ সংখ্যাগত জায়গার পুরোটাই ব্যবহার করা উচিত। const fn দিয়ে আমরা লাইবনিজের সূত্র ব্যবহার করতে পারি, যা ফ্লোটিং-পয়েন্ট জায়গা সম্পূর্ণভাবে ভরিয়ে দেবে।

আমি আরও কিছু পড়লাম এবং একটি ব্লগ পোস্টে দেখলাম যে MIRI const fn স্ট্যাবিলাইজ করা অনেক সহজ করে দেবে। সময় গড়িয়ে গেল, নতুন ভার্সন প্রকাশিত হওয়ার পরও আমি কোনো অগ্রগতি দেখলাম না। আমি Rust টিমের সাথে যোগাযোগ করলাম এবং কম্পাইলারে হ্যাক করা শুরু করলাম।

দারুণ ব্যাপার হলো, কম্পাইলারটি নিজেই Rust-এ লেখা। এটি প্রথমে OCaml-এ লেখা হয়েছিল, পরে Rust-এ নতুন করে লেখা হয়, যাকে বলে বুটস্ট্র্যাপিং। মূলত কম্পাইলার সমস্ত ইনপুট AST-তে পার্স করে, যা পরে high-level intermediate representation (HIR)-এ পাঠানো হয়, তারপর medium-level (MIR), আর তারপর low-level (LIR), যেটি সামলায় LLVM। এই সব ধাপ আমরা যত এগোই, মেশিন কোডের তত কাছাকাছি পৌঁছাই।

একটি বিষয় বুঝতে হবে, কম্পাইলার আসলে একটি প্রোগ্রাম, তবে খুবই জটিল একটি প্রোগ্রাম। Rust কম্পাইল হতে বেশ সময় লাগে, বিশেষ করে এর সব টেস্ট চালাতে। তাই শুধু কিছু কোড জুড়ে দিয়ে "আমার কাজ শেষ" বলে দেওয়ার সুযোগ নেই।

কম্পাইলারে আমার প্রথম কাজ ছিল HIR নিয়ে। এতে স্ট্যান্ডার্ড লাইব্রেরি (স্টেবল ও নাইটলি দুটোই) অনেকটা পড়তে হয়েছিল এবং নানা শাখা-প্রশাখায় ঢুকে পড়তে হয়েছিল। কম্পাইলারের প্রতিটি নেস্টেড টাইপের ভেতর দিয়ে আমার সব অপশন শেষ না হওয়া পর্যন্ত রিকার্স করে নিচে নামতে হয়েছিল। নাইটলি/কম্পাইলার লাইব্রেরিতে প্রচুর নেস্টেড টাইপ আছে। কোন থ্রেড ধরে নিচে নামছেন, সেটি মনে রাখতে অনেক মনোযোগ লাগে।

সব মিলিয়ে আরও জটিল হয়ে ওঠে যে কম্পাইলারে কাজ করে একটি ছড়িয়ে ছিটিয়ে থাকা দল, যার মানে প্রায়ই মার্জ কনফ্লিক্টে জড়িয়ে পড়ি।

এটা সত্যিই দারুণ আনন্দের ছিল। এখনও অনেক কাজ বাকি, যা আমি খুব শিগগিরই ধরব।

এই ওপেন সোর্স অবদানের পাশাপাশি আপনি একটি ব্লকচেইন কোম্পানির CTO, সেটা আমি জানি। আমার কাছে ব্লকচেইন মানেই ইথেরিয়ামে অনেক টাকা হারানো। আপনার কাছে এর মানে কী?

দুর্ভাগ্যবশত ব্লকচেইন এখন সবচেয়ে বেশি ব্যবহার হওয়া বাজওয়ার্ডে পরিণত হয়েছে।

এটি শুধু The City আর ওয়াল স্ট্রিটের ডিজিটাল মুদ্রার নতুন ট্রেন্ড থেকে মুনাফা লুটে নেওয়ার চেয়ে অনেক বেশি কিছু। আমরা আসলে একটি "ব্লকচেইন কোম্পানি" নই, আমরা Chainetix-এ একটি কোম্পানির ডেটা নিরাপদে সুরক্ষিত রাখতে প্রাইভেট লেজার সরবরাহ করি। আসলে আমরা ক্রিপ্টোকারেন্সি নিয়েও কাজ করি না। Chainetix-এর লক্ষ্য হলো প্রোগ্রামিংয়ের মৌলিক ধারণা যাদের আছে, এমন সবার হাতে আমাদের দক্ষতা পৌঁছে দেওয়া।

আমার কাজের মধ্যে ছিল শূন্য থেকে আমাদের সিস্টেম ও ইনফ্রাস্ট্রাকচার পরিকল্পনা করা, যাতে খুবই নির্ভরযোগ্য কিছু তৈরি হয়। আমি Habitat by Chef নামের একটি প্রজেক্ট বেছেছি। এটি সম্পর্কে জানলাম কারণ এটি Rust-এ লেখা, আর Chef-এর মতো বিশাল কোম্পানির কাছ থেকে এটা বেশ চমকপ্রদ। সাধারণ Docker-এর বিপরীতে Habitat এমন ইমেজ তৈরি করে যা নিজে থেকে আপডেট হতে পারে এবং সার্ভিস বাইন্ডিংয়ের মতো অসাধারণ কাজ করতে পারে। Habitat-এর core-plans রিপোজিটরিতেও আমি বেশ কিছু অবদান রেখেছি।

আগে আপনি আপনার প্রজেক্ট BrewStillery-এর কথা বলেছিলেন। মনে হচ্ছে এটা আপনার কাছে গুরুত্বপূর্ণ। এটা নিয়ে আরেকটু বলবেন?

হ্যাঁ, নিশ্চয়ই!

BrewStillery হলো একটি ওপেন সোর্স, সর্বমুখী বিয়ার, ওয়াইন ও স্পিরিটস টুল, যা আমি Rust ও GTK3 দিয়ে লিখেছি। আমি একটি চমৎকার অনন্য CSS থিমও যোগ করেছি। এক কথায়, এটি স্পিরিটস বানানো সবার জন্য একটি অ্যাডভান্সড ক্যালকুলেটর।

বিয়ার ও শ্যাম্পেনের জন্য নির্দিষ্ট ক্যালকুলেটরগুলো আলাদা রাখতে আমি বিভিন্ন ট্যাব তৈরি করেছি, আর সাথেই আছে একটি সাধারণ ট্যাব যা ব্রুয়ার, ভিন্টনার আর ডিস্টিলার সবার ক্ষেত্রেই প্রযোজ্য। বেশিরভাগ বিয়ার ও ওয়াইনের বোতলের দিকে তাকালে বোতলটিতে অ্যালকোহলের শতাংশ দেখতে পাবেন, যাকে বলা হয় অ্যালকোহল বাই ভলিউম। তো, BrewStillery যা করে তার একটি হলো ওই ABV নির্ণয় করা। আপনি নিশ্চয়ই অনুমান করতে পারছেন, এখানে নার্ডদের মতো দুর্দান্ত অনেক কিছু জড়িত। আমার সবচেয়ে ভালো লাগে বিয়ারের রং নির্ণয় করা:

BrewStillery বিয়ার ট্যাব খালি গ্লাস

BrewStillery বিয়ার ট্যাব ভরা গ্লাস

এই আগে-পরের ছবিগুলো দেখায় যে পরিমাণ লিখে দেওয়ার পর কী হয়। আমি যেভাবে এটি করেছি, তা আগে কেউ করেনি। আরেকটি দারুণ সুবিধা হলো, আপনি টাইপ করার সাথে সাথেই সবকিছু হিসাব হয়ে যায়। কালারস্পেস নিয়ে গভীর খুঁটিনাটি জানতে চাইলে কোনো কনফারেন্সে দেখা হলে আমাকে বলুন, পিন্ট হাতে নিয়ে আমরা সেটা নিয়ে কথা বলতে পারব!

Translation missing: bn.number.nth.ordinalized Feb 2019 · কাজে লেগেছে?