প্রাথমিক ধারনা এবং Xcode

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

Objective-C হচ্ছে iOS এবং OSX অপারেটিং সিস্টেমের জন্য ন্যাটিভ প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটা একটা কম্পাইল্ড ল্যাঙ্গুয়েজ। অর্থাৎ পুরো কোড আগে কম্পাইল হয়ে তারপর সেখান থেকে বিল্ড এবং রান হয়। Objective-C তৈরি করা হয়েছে C প্রোগ্রামিং ল্যাঙ্গুয়েজকে অবজেক্ট ওরিয়েন্টেড ফিচার দিয়ে। C এর তুলনায় Objective-C এর সিনট্যাক্সকে আরও বেশি হিউম্যান রিডেবল মনে করা হয়।

তুলনামুলক সিম্পল সিনট্যাক্স এর এই ল্যাঙ্গুয়েজ এর পিছনে আরও অবদান রয়েছে বিশাল বিস্তৃত কিছু লাইব্রেরীর। যদিও ল্যাঙ্গুয়েজের শেখার দৃষ্টিকোণ থেকে দেখতে গেলে ওই লাইব্রেরী গুলো সম্পর্কে এখনি জানা বাধ্যতামূলক নয় কিন্তু কিছুটা আইডিয়া রাখা ভালো। অনেক লাইব্রেরীর মধ্যে Apple এর Cocoa এবং Cocoa Touch ফ্রেমওয়ার্ক হচ্ছে বহুল পরিচিত। এগুলো কিছু API ডিফাইন করে যা দিয়ে যথাক্রমে OSX এবং iOS এর জন্য অ্যাপ্লিকেশন তৈরি করা সহজ হয়ে যায়। Foundation, UIKit, AppKit, CoreData QuartzCore, AVFoundation হচ্ছে তেমন কিছু ফ্রেমওয়ার্ক। Objective-C তে পারদর্শী হবার পর উপরে আলোচিত টুলস গুলো হচ্ছে iOS এবং OSX এর জন্য অ্যাপ তৈরির ক্ষেত্রে প্রয়োজনীয় জিনিষ। আপাতত এই ল্যাঙ্গুয়েজ নিয়ে ঘাটা ঘাটি করতে আমরা শুধুমাত্র Foundation ফ্রেমওয়ার্ক ব্যবহার করতে পারি।

Xcode: যদিও Objective-C কোড কম্পাইল করার জন্য আরও অনেক পথ আছে কিন্তু আমরা এই সিরিজে শুরু থেকেই Xcode ব্যবহার করবো কারন শেষ নাগাদ iOS, OSX অ্যাপ ডেভেলপ করাই আমাদের উদ্দেশ্য এবং তার জন্য Xocode এর সাথে পরিচিত থাকা অবশ্যই উপকারী। Xcode হচ্ছে Apple এর একটি IDE (Integrated Development Environment). তাছাড়াও এটা একটা কোড এডিটর, ডিবাগার টুল, অ্যাপ এর GU ইন্টারফেস বিল্ডার এবং এর সাথে সিমুলেটরও আছে।

Create বাটনে ক্লিক করার পর Xcode এর বাম পাশের ন্যাভিগেটর-এ main.m ফাইল সহ আরও কিছু ফাইল ফোল্ডার দেখতে পাবেন। আপাতত এই main.m ফাইলটাই গুরুত্বপূর্ণ। কারন iOS, OSX এমনকি Command Line Tool টাইপের অ্যাপ রান করার সময় এখান থেকেই ঘটনা শুরু হয় :) আর হ্যাঁ, .m হচ্ছে Objective-C এর সোর্স ফাইলের এক্সটেনশন।

main() ঘটনাঃ আগেই বলা হয়েছে, main() ফাংশন যেকোনো রকম Objective-C অ্যাপ এর রুট হিসেবে কাজ করে। Xcode প্রায় সব সবরকম অ্যাপ টেম্পলেট তৈরি করার সময় তার জন্য একটি main.m ফাইল বানায় যেখানে একটি main() ফাংশন ডিফাইন করা থাকে। ফাইলটি খুললে নিচের মত কোড দেখা যাবেঃ

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        NSLog(@"Hello, World!");

    }
    return 0;
}

@autoreleasepool ব্লকের মধ্যে আমরা আমাদের সবরকম প্র্যাকটিস কোড লিখবো। @autoreleasepool হচ্ছে মেমোরি লিক প্রতিহত করার একটা উপায়। যদিও এটা আমাদের টিউটোরিয়াল সিরিজের মুল বিষয় থেকে আলাদা, তবুও এই বিষয়ে জানতে পারেন এখানে। Apple ডকু থেকে - "The @autoreleasepool statement is there to support memory management for your app. Automatic Reference Counting (ARC) makes memory management straightforward by getting the compiler to do the work of keeping track of who owns an object; @autoreleasepool is part of the memory management infrastructure."

তো, @autoreleasepool এর কথা আপাতত মাথা থেকে বাদ দিলে বলা যায় যে, main() ফাংশন সিমপ্লি NSLog() নামের একটা গ্লোবাল ফাংশনকে কল করে যেটা Foundation ফ্রেমওয়ার্কে এ ডিফাইন করা আছে। Xcode console এ ম্যাসেজ প্রিন্ট করার জন্য এটা ব্যবহার করা হয়। শুরুতে @ চিহ্ন ব্যবহার করে Objective-C string টাইপের ভ্যালু ডিফাইন করা হয়, যেটা পাঠানো হচ্ছে NSLog() এর প্যারামিটার হিসেবে।

পরের পোস্টে ব্যাসিক সিনট্যাক্স, ভ্যারিয়েবল, কন্ডিশন, লুপ, ম্যাক্রো, ডাটা স্ট্রাকচার নিয়ে আলোচনা হবে।

Originally Posted Here

Last updated