Uploaded avatar of iHiD

এলো অ্যানালিটিক্যাল এপ্রিল!

@iHiD
3 বছরের বেশি আগে
ভিডিও

সবাইকে স্বাগতম! আমরা Functional February আর Mechanical March পেরিয়ে এসেছি। এখন Analytical April-এর পালা, যেখানে আমরা এমন ভাষাগুলোর দিকে মনোযোগ দেব যেগুলো ডেটা সায়েন্সের জন্য দারুণ।

গত কয়েক মাস ধরে আপনি যেমনটা আশা করতে শুরু করেছেন, তেমনি এই ভিডিওতে Erik আর আমি সংক্ষেপে বলে দেব এই মাসটা আসলে কী নিয়ে, আর আমরা কোন কোন ভাষা ঘুরে দেখব।

তাই স্বাভাবিকভাবেই, একটু পরেই Erik আমাদেরকে ভাষাগুলো সম্পর্কে বলে দেবেন, তবে শুরুতে আমি এই মাসের কিছু ব্যবহারিক খুঁটিনাটি বলে নিই।

তাহলে প্রথমেই, এই মাসের নির্বাচিত ভাষাগুলো। এই মাসে আমাদের কাছে আছে মাত্র তিনটি: Julia, Python আর R। এই প্রতিটি ভাষাই বেশ আলাদা, আর স্পষ্টতই Python একটি অত্যন্ত বহুমুখী ভাষা, তবে এই মাসে আমরা আপনাকে এগুলো ডেটা সায়েন্সের মানসিকতা নিয়ে ব্যবহার করতে উৎসাহ দেব।

Analytical April ব্যাজ পেতে হলে আপনাকে ওই ভাষাগুলোর যেকোনো একটিতে পাঁচটি অনুশীলনী সম্পূর্ণ করতে হবে। আমরা একটু পরেই এদের মধ্যেকার পার্থক্যগুলো ঘুরে দেখব, তবে Exercism-এর কথা বলতে গেলে, আমাদের Python ট্র্যাকে আছে দুর্দান্ত একটি সিলেবাস, তাই আমি সত্যিই পরামর্শ দেব আপনি সেটা একবার চেষ্টা করে দেখুন। আমরা আরও আশা করছি এই মাসেই একটি Julia সিলেবাস চালু করতে পারব, এর অনেকটাই কাজ শেষ, শুধু একটু ঝালিয়ে নেওয়া বাকি। R-এর কোনো সিলেবাস নেই, তবে এতে আপনার খেলার জন্য আছে অনেক মজার অনুশীলনী।

আমাদের কাছে চেষ্টা করার জন্য পাঁচটি নির্বাচিত অনুশীলনী রয়েছে:

  • etl: এতে ডেটাকে ভিন্ন একটি ফরম্যাটে সাজিয়ে ফেলার কাজ ঘুরে দেখতে পারবেন
  • largest-series-product: এতে ডিজিটের একটি স্ট্রিংয়ের ভেতরে প্যাটার্ন খোঁজার দক্ষ উপায়গুলো অনুশীলন করতে পারবেন
  • saddle-points: বহুমাত্রিক অ্যারে বা ম্যাট্রিক্স নিয়ে কাজ করা ঘুরে দেখতে পারবেন
  • sum-of-multiples: সংখ্যার একটি ধারা ফিল্টার করা আর যোগ করা অনুশীলন করতে পারবেন
  • word-count: একটি স্ট্রিংকে শব্দে ভাগ করে সেগুলো গুনতে পারবেন

মনে করিয়ে দিই, Analytical April ব্যাজের পাশাপাশি সারা বছরব্যাপী একটি #12in23 ব্যাজও আছে, যা আপনি বছরের যেকোনো সময়ে বিভিন্ন নির্বাচিত অনুশীলনী সমাধান করে পেতে পারেন। তাই ওই ব্যাজটি পেতে হলে আপনাকে এই বছরেই Python, R বা Julia-তে ওই ৫টি অনুশীলনী সমাধান করতে হবে! অনুশীলনীগুলোর সম্পূর্ণ তালিকার জন্য Analytical April পেজ থেকে লিংক করা একটি ফোরাম পোস্ট আছে।

সবশেষে, ভাষাগুলো নিয়ে গভীরে যাওয়ার আগে মনে করিয়ে দিই, মার্চ মাসে আমরা আমাদের নতুন Discord সার্ভার চালু করেছি। সেখানে দারুণ সব কার্যক্রম চলছে, তাই অবশ্যই একবার দেখে আসবেন। লিংকটি নিচের বর্ণনায় আছে!

ঠিক আছে, চলুন ভাষাগুলো ঘুরে দেখি। চলুন প্রতিটি ভাষার একটি সংক্ষিপ্ত পরিচিতি নিই, তারপর আমরা তাদের বৈশিষ্ট্য আর ব্যবহারের ক্ষেত্রগুলো গভীরে যাব। চলুন Python দিয়ে শুরু করি।

Python

  • ১৯৮০-এর দশকের শেষদিকে ABC প্রোগ্রামিং ভাষার উত্তরসূরি হিসেবে Guido van Rossum এটি কল্পনা করেন ও বিকশিত করেন। প্রথমবার প্রকাশিত হয় ১৯৯১ সালে।
  • নেদারল্যান্ডসে সরকারি অর্থায়নে পরিচালিত একটি গবেষণাগার Centrum Wiskunde & Informatica (CWI)-তে এটি বিকশিত হয় (এখানেই Edsger Dijkstra তাঁর বেশিরভাগ কাজ করেছিলেন বলে এটি বিখ্যাত)।
  • Guido প্রোগ্রাম করতেন C আর শেল স্ক্রিপ্ট দিয়ে, কিন্তু দুটোরই কিছু অসুবিধা ছিল। Python চায় দুটোরই সেরাটা নিতে, অসুবিধাগুলো ছাড়াই।
  • Python Software Foundation এটি পরিচালনা করে, আর ভাষার পরিবর্তনগুলো হয় Python Enhancement Proposals (PEPs)-এর মাধ্যমে (RFC-এর মতো)।

R

  • University of Auckland-এ Ross Ihaka আর Robert Gentleman এটি তৈরি করেন। R-কে S ভাষার একটি ভিন্ন ইমপ্লিমেন্টেশন হিসেবে ধরা যায় (তুলনামূলকভাবে সামান্য পার্থক্য নিয়ে), যার উত্তরসূরি ছিল S-plus, S-এর একটি বাণিজ্যিক (ওপেন নয়) ইমপ্লিমেন্টেশন। R সিনট্যাক্সের বেশিরভাগটাই S-এর সাথে ভাগ করে নিলেও, এর সেমান্টিক্স অনুপ্রাণিত Scheme দ্বারা।
  • লক্ষ্য: পরিসংখ্যানভিত্তিক কম্পিউটিং আর গ্রাফিক্সের জন্য বেশি উপযুক্ত, এবং কম্পিউটার বিজ্ঞানীদের বানানো তুলনীয় সফটওয়্যারের চেয়ে সহজে ব্যবহারযোগ্য একটি ভাষা তৈরি করা।

Julia

  • উন্মুক্তভাবে Jeff Bezanson, Stefan Karpinski, Viral B. Shah আর Alan Edelman এটি বিকশিত করেন, বর্তমানে এতে হাজারেরও বেশি কন্ট্রিবিউটর আছেন।
  • লক্ষ্য: একটি ফ্রি, উচ্চ-স্তরের ভাষা গড়ে তোলা, যাতে C-এর গতি, Ruby-র গতিশীলতা, LISP-এর মেটাপ্রোগ্রামিং, Python-এর সাধারণ উদ্দেশ্যে ব্যবহারের দক্ষতা, R-এর পরিসংখ্যান সহায়তা, MatLab-এর লিনিয়ার অ্যালজেবরা সহায়তা আর Perl-এর স্ট্রিং প্রসেসিং ক্ষমতা থাকবে, আর সেইসঙ্গে বিশাল পরিসরে সমান্তরাল এক্সিকিউশন সমর্থন করার ক্ষমতাও থাকবে।
  • বৈজ্ঞানিক কম্পিউটেশনের জন্য দুর্দান্ত, তবে এটি একটি সাধারণ উদ্দেশ্যের ভাষাও (ওয়েব অ্যাপের জন্য Genie ফ্রেমওয়ার্ক)।

অনেক ভাষার মতোই, এই তিনটিই তৈরি হয়েছিল অসন্তোষ থেকেই :)

ঠিক আছে, দারুণ। তাহলে ব্যবহারের ক্ষেত্রের দিক থেকে, কখন আপনি এই প্রতিটি ভাষা অন্যগুলোর বদলে ব্যবহার করবেন?

Python

  • সত্যিকারের সাধারণ উদ্দেশ্যের ভাষা (ওয়েবসাইট, স্ক্রিপ্ট, বৈজ্ঞানিক কম্পিউটিং)
  • নানা রকম কাজে ব্যবহার করা যায়: AI (TensorFlow), বৈজ্ঞানিক কম্পিউটিং (NumPy) স্ক্রিপ্ট, ওয়েবসাইট (Django), এমবেডেড সিস্টেম (micro python), হার্ডওয়্যারের সাথে ইন্টারফেস (যেমন raspberry pi), গেম (EVE online), আর Python তো মঙ্গলগ্রহেও গিয়েছিল
  • প্রোগ্রামিং শেখার জন্য দুর্দান্ত: বিপুল রিসোর্স আর বিশাল কমিউনিটি। পাইথনিক কোড লেখার (অর্থাৎ আইডিওম্যাটিক Python কোড কীভাবে লিখবেন) নিয়ে অনেক নির্দেশনা, যেমন "স্পষ্ট হওয়া অস্পষ্ট হওয়ার চেয়ে ভালো" আর "পাঠযোগ্যতা গুরুত্বপূর্ণ"। অনেক OS-এ এটি ডিফল্টভাবেই ইনস্টল করা থাকে
  • এই মুহূর্তে সবচেয়ে বেশি ব্যবহৃত ভাষাগুলোর একটি, তাই প্রচুর ডকুমেন্টেশন, লাইব্রেরি আর বড় একটি কমিউনিটি

R

  • R নানা জায়গায় ব্যবহৃত হয়, যেমন গবেষকরা পরীক্ষার ডেটা বিশ্লেষণ করতে এটি ব্যবহার করেন, বিশ্ববিদ্যালয়গুলো পরিসংখ্যান আর ডেটা বিশ্লেষণ শেখাতে, আর্থিক খাত যেহেতু পরিসংখ্যানই মূল (যেমন বীমার জন্য), একইভাবে খুচরা ব্যবসা (Amazon ডেটা অ্যানালিটিক্সে R ব্যবহার করে) আর উৎপাদন খাত (John Deere কতগুলো খুচরা যন্ত্রাংশ বানাতে হবে তা অনুমান করে), National Weather Service আবহাওয়া আর দুর্যোগের পূর্বাভাস দিতে সাহায্য করে, ডেটা সাংবাদিকতা (সত্যিকারের বিশ্বের ডেটা বিশ্লেষণ করে তা বোঝা, প্রায়শই ভিজ্যুয়ালাইজেশন দিয়ে), স্বাস্থ্যসেবায় ব্যাপকভাবে ব্যবহৃত, যেমন প্রি-ক্লিনিক্যাল ট্রায়ালের ভিত্তিতে একটি ওষুধের নিরাপত্তা নির্ধারণ

Julia:

  • বৈজ্ঞানিক কম্পিউটিং, ডেটা মাইনিং, মেশিন লার্নিং, লিনিয়ার অ্যালজেবরা আর ডিস্ট্রিবিউটেড কম্পিউটিংয়ের জন্য দুর্দান্ত। নোটেশন গাণিতিক নোটেশনের মতোই লাগবে, তাই সমীকরণ থেকে কোডে যাওয়া তুলনামূলকভাবে সহজ
  • ডিস্ট্রিবিউটেড কম্পিউটিং: টাস্ক (=করুটিন) আর চ্যানেল একসাথে চলা কোডকে পরস্পরের সাথে যোগাযোগ করতে দেয়, মেসেজ পাসিং দিয়ে মাল্টি-প্রসেস সমর্থন (হাই-পারফরম্যান্স কম্পিউটিংয়ের জন্য দুর্দান্ত)
  • Celeste প্রকল্পে ব্যবহৃত (১৭৮ টেরাবাইট জ্যোতির্বিজ্ঞানের ডেটা বিশ্লেষণ করতে Julia কোড চালানো একটি সুপারকম্পিউটার) (ফলে Julia পেটাফ্লপ ক্লাবের অংশ হয়ে যায়, সেই সময়ে যেখানে শুধু C, C++ আর Fortran ছিল, Julia ছিল প্রথম ডাইনামিক ভাষা, সেকেন্ডে এক কোয়াড্রিলিয়ন ফ্লোটিং-পয়েন্ট হিসাব, ১-এর পরে ১৫টি শূন্য), Clima (জলবায়ু মডেলিং অ্যালায়েন্স)-এ Caltech, MIT আর NASA-র Jet Propulsion Laboratory-র মানুষ একটি জলবায়ু পূর্বাভাস মডেল তৈরি করেন, CERN, ASML

আর প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে, এগুলো কীভাবে আলাদা? এগুলো functional, OOP ইত্যাদি কি?

Python:

  • ডাইনামিক আর স্ট্রংলি টাইপড
  • মাল্টি-প্যারাডাইম: ইম্পারেটিভ, ফাংশনাল, তবে আসলে একটি অবজেক্ট-ওরিয়েন্টেড ভাষা (সবকিছুই একটি অবজেক্ট)
  • ডিফল্ট ইন্টারপ্রেটার CPython বাইটকোডে কম্পাইল করে, তারপর সেটি একটি ভার্চুয়াল মেশিনে ইন্টারপ্রেট করা হয়। PyPy হলো CPython-এর একটি বিকল্প, যা জাস্ট-ইন-টাইম মেশিন কোডে কম্পাইল করে

R:

  • ডাইনামিক আর স্ট্রংলি টাইপড
  • মাল্টি-প্যারাডাইম, মূলত ফাংশনাল, তবে প্রোসিডিউরাল বা অবজেক্ট-ওরিয়েন্টেড স্টাইলও সমর্থন করে

Julia:

  • ডাইনামিক আর স্ট্রংলি টাইপড, জাস্ট-ইন-টাইম কম্পাইল হয়
  • মাল্টি-প্যারাডাইম: ইম্পারেটিভ, অবজেক্ট-ওরিয়েন্টেড (মাল্টিপল ডিসপ্যাচ দিয়ে ওভারলোডিং), ফাংশনাল (হায়ার-অর্ডার ফাংশন, পার্শিয়াল অ্যাপ্লিকেশন, পাইপ অপারেটর)
  • কোড রানটাইমে জাস্ট-ইন-টাইম অ্যাহেড-অব-টাইম কম্পাইল হয়

আর প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে এগুলো দেখা চালিয়ে গেলে, এই ভাষাগুলোর কারও কি বিশেষভাবে চোখে পড়ার মতো কোনো বৈশিষ্ট্য আছে?

Python:

  • সুখকর সিনট্যাক্স: হোয়াইটস্পেস-সংবেদনশীলতার কারণে স্কোপিং সহজে বোঝা যায়। কোড সাধারণত পড়তে সহজ, যেমন মানুষের পড়ার মতো বুলিয়ান শর্ত (and/or)
  • এক্সপ্রেসিভ: সামান্য কোড দিয়েই অনেক কিছু করা যায় (লিস্ট কম্প্রিহেনশন, জেনারেটর, ডেকোরেটর)
  • নানা কাজের জন্য বিপুল সংখ্যক লাইব্রেরি পাওয়া যায়
  • আগেই বলেছি, এটি সত্যিই একটি সাধারণ উদ্দেশ্যের ভাষা, কারণ এটি নানা রকম পরিস্থিতিতে ব্যবহার করা যায়

Julia

  • মাল্টিপল ডিসপ্যাচ। সব আর্গুমেন্টের টাইপের ভিত্তিতে ঠিক করা হয় কোন ফাংশন কল করা হবে (ফাংশন ওভারলোডিংয়ের মতো)
  • ডাইনামিক হয়েও দুর্দান্ত পারফরম্যান্স। Julia-র পারফরম্যান্স Fortran-এর সাথে পাল্লা দিতে পারে আর C-এর খুব কাছাকাছি পৌঁছায়। "সাধারণ" কোড প্রায়শই পারফরম্যান্ট হয় (কোনো পাগলাটে কৌশল লাগে না, বরং ছোট ফাংশনকে উৎসাহ দেওয়া হয়)। GPU-তে কোড চালানোর জন্য লাইব্রেরি
  • ডিস্ট্রিবিউটেড কম্পিউটিং: টাস্ক (=করুটিন) আর চ্যানেল একসাথে চলা কোডকে পরস্পরের সাথে যোগাযোগ করতে দেয়, মেসেজ পাসিং দিয়ে মাল্টি-প্রসেস সমর্থন (হাই-পারফরম্যান্স কম্পিউটিংয়ের জন্য দুর্দান্ত)
  • বৈজ্ঞানিক কম্পিউটিং, ডেটা মাইনিং, মেশিন লার্নিং, লিনিয়ার অ্যালজেবরা আর ডিস্ট্রিবিউটেড কম্পিউটিংয়ের জন্য দুর্দান্ত। নোটেশন গাণিতিক নোটেশনের মতোই লাগবে, তাই সমীকরণ থেকে কোডে যাওয়া তুলনামূলকভাবে সহজ

R:

  • নমনীয় ডেটা টাইপ: ভেক্টরই মূল টাইপ, এমনকি স্কেলারও ভেক্টর। ভেক্টরের সাথে মেটাডেটা যুক্ত থাকতে পারে (যেমন তার এলিমেন্টগুলোর নাম)। লিস্ট ভিন্নধর্মী হয় (ভিন্ন ভিন্ন টাইপের এলিমেন্ট থাকতে পারে)। একই দৈর্ঘ্যের ভেক্টরের সংগ্রহ হিসেবে বিশেষ ডেটাফ্রেম টাইপ।
  • ভেক্টরাইজড অপারেশন ভেক্টর আপডেট করা সংক্ষিপ্ত, দক্ষ আর পড়ার উপযোগী করে তোলে
  • R হলো ডেটা ম্যানিপুলেশন, হিসাব আর গ্রাফিক্যাল উপস্থাপনার জন্য সফটওয়্যার সুবিধার একটি সমন্বিত স্যুট। R Studio-র মাধ্যমে ডেটা সহজে ঘুরে দেখা, ভিজ্যুয়ালাইজ করা, ম্যানিপুলেট করা যায়। ডেটা মাইনিংয়ের জন্য দুর্দান্ত
  • দুর্দান্ত কমিউনিটি, বন্ধুত্বপূর্ণ আর বৈচিত্র্যময়। The R for Data Science Online Learning Community হলো সব স্তরের দক্ষতার R শিক্ষার্থীদের একটি কমিউনিটি, যারা একসাথে নিজেদের দক্ষতা বাড়াতে কাজ করে। একটি খোলা Slack গ্রুপ আছে যেখানে সদস্যরা যোগাযোগ রাখতে আর সমস্যায় একে অপরকে সাহায্য করতে পারে।

এপ্রিলে কেউ যদি নিশ্চিত না হন কোনটি চেষ্টা করবেন, তাহলে কীভাবে সিদ্ধান্ত নেওয়ার পরামর্শ দেবেন?

IT-এর সবকিছুর মতোই: নির্ভর করে! এই ক্ষেত্রে আমি বলব, এটি মূলত নির্ভর করে আপনার লক্ষ্য আর ব্যক্তিগত অভিজ্ঞতার ওপর।

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

আপনি যদি পরিসংখ্যানভিত্তিক কাজ করতে আগ্রহী হন, ডেটা ঘুরে দেখতে আর ভিজ্যুয়ালাইজ করতে চান, বা ডেটা নিয়ে কাজ করার একটি ভিন্ন উপায় সম্পর্কে কৌতূহলী হন, তাহলে R ভাষা দুর্দান্ত একটি পছন্দ: R-এর ডেটা টাইপ ডেটার সংগ্রহের (ভেক্টর/লিস্ট) ওপর ভিত্তি করে গড়া, আর সহজেই সংগ্রহের ওপর অপারেশন প্রয়োগ করা যায় (লুপ করার দরকার নেই) ডেটা ঘুরে দেখতে আর ভিজ্যুয়ালাইজ করতে RStudio IDE দুর্দান্ত পরিসংখ্যান বিশ্লেষণে R-এর চমৎকার সমর্থন আছে R দিয়ে ডেটা সহজে প্লট করা যায়

আপনি যদি বৈজ্ঞানিক কম্পিউটিংয়ে আগ্রহী হন, কোড কনকারেন্টলি চালাতে চান, পারফরম্যান্সকে সত্যিই গুরুত্ব দেন, বা এমন একটি আধুনিক, মার্জিত ভাষা শিখতে চান যা অন্য বেশিরভাগ ভাষার চেয়ে আলাদা কিছু দেয়, তাহলে আমি Julia-র পরামর্শ দেব:

  • মাল্টিপল ডিসপ্যাচ অনেকের কাছে নতুন হবে আর এটি অবিশ্বাস্য রকমের শক্তিশালী
  • বৈজ্ঞানিক কম্পিউটিংয়ের জন্য Julia দুর্দান্ত
  • Julia-র টাইপ সিস্টেম নমনীয় আর এক্সপ্রেসিভ
  • Julia-র পারফরম্যান্স চমৎকার
  • কনকারেন্ট এক্সিকিউশনের জন্য Julia দুর্দান্ত

অবশ্যই, সময় থাকলে আমি তিনটিই চেষ্টা করে দেখার পরামর্শ দেব! চেষ্টা না করে আপনি কখনোই জানতে পারবেন না কোন ভাষাটা আপনার ভালো লাগবে।

1 এপ্রিল 2023 · কাজে লেগেছে?