Skill

Kotlin এর পরিচিতি

কটলিন (Kotlin) - Mobile App Development

466

Kotlin একটি আধুনিক, স্ট্যাটিকালি টাইপড প্রোগ্রামিং ল্যাঙ্গুয়েজ, যা JetBrains দ্বারা তৈরি করা হয়েছে। এটি মূলত JVM (Java Virtual Machine) এ রান করার জন্য ডিজাইন করা হয়েছে, তবে এটি JavaScript এবং Native Code (যেমন iOS এর জন্য) কম্পাইল করতে সক্ষম। Kotlin-এর জনপ্রিয়তা বৃদ্ধি পেয়েছে এর সরলতা, সংক্ষিপ্ততা, এবং Java এর সাথে সম্পূর্ণ ইন্টারঅপারেবিলিটির জন্য। iOS ডেভেলপমেন্টের ক্ষেত্রে Kotlin Multiplatform ব্যবহৃত হয়।

Kotlin এর মূল বৈশিষ্ট্যসমূহ:

  1. Java Interoperability: Kotlin এবং Java একই প্রোজেক্টে ব্যবহার করা যায়, এবং Kotlin এর কোড Java কোডের সাথে সরাসরি কাজ করতে পারে।
  2. সিম্পল এবং সংক্ষিপ্ত সিনট্যাক্স: Kotlin এর কোড Java-এর তুলনায় কম এবং সহজপাঠ্য, যা ডেভেলপারদের কোড লেখার সময় বাঁচায়।
  3. নাল সেফটি: Kotlin নালপয়েন্টার এক্সসেপশন (NullPointerException) এড়াতে বিল্ট-ইন সাপোর্ট প্রদান করে।
  4. ফাংশনাল প্রোগ্রামিং: Kotlin ফাংশনাল প্রোগ্রামিং পারাডাইম সমর্থন করে, যেমন: ল্যাম্বডা এক্সপ্রেশন, হায়ার-অর্ডার ফাংশন, ম্যাপ এবং ফিল্টার অপারেশন।
  5. কোঅর্টিন: Kotlin-এ কনকারেন্সি হ্যান্ডল করার জন্য কোঅর্টিন নামক হালকা-ওজন থ্রেডিং মেকানিজম আছে যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংকে সহজ করে তোলে।

iOS ডেভেলপমেন্টে Kotlin এর ব্যবহার:

Kotlin Multiplatform Mobile (KMM) ব্যবহার করে iOS এবং Android উভয়ের জন্য শেয়ার্ড কোড বেস তৈরি করা যায়। KMM একটি ফ্রেমওয়ার্ক, যা ডেভেলপারদের একই কোড ব্যবহার করে Android এবং iOS উভয়ের জন্য অ্যাপ্লিকেশন তৈরি করতে দেয়।

উদাহরণ:

নিচে একটি সহজ Kotlin কোড উদাহরণ দেওয়া হল:

fun main() {
    val name: String = "Kotlin"
    println("Hello, $name!")
}

এই কোডটি Kotlin এর একটি বেসিক উদাহরণ যা একটি সাধারণ “Hello, Kotlin!” প্রিন্ট করবে।

Kotlin কেন শিখবেন?

  • Java এর বিকল্প: Java এর সাথে তুলনায়, Kotlin অনেক বেশি মডার্ন এবং সিম্পল সিনট্যাক্স প্রদান করে।
  • ক্রস-প্ল্যাটফর্ম সাপোর্ট: Kotlin Multiplatform এর মাধ্যমে iOS, Android, এবং অন্যান্য প্ল্যাটফর্মের জন্য শেয়ার্ড কোড লেখা যায়।
  • কনকারেন্ট প্রোগ্রামিং সহজ করে: কোঅর্টিন ব্যবহারে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ হয়, যা পারফর্মেন্স বৃদ্ধি করে।
Content added By

Kotlin হল একটি আধুনিক প্রোগ্রামিং ভাষা যা মূলত JetBrains কোম্পানি দ্বারা তৈরি করা হয়েছে। এটি ২০১১ সালে প্রথম রিলিজ হয় এবং ২০১৬ সালে এটি প্রথম স্ট্যাবল ভার্সনে আসে। Kotlin মূলত JVM (Java Virtual Machine)-এ চলে এবং Android অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য বিশেষভাবে উপযোগী।

Kotlin-এর প্রধান বৈশিষ্ট্যসমূহ:

  1. আধুনিক ও সংক্ষিপ্ত সিনট্যাক্স: Kotlin-এর সিনট্যাক্স Java থেকে অনেক সহজ এবং সংক্ষিপ্ত। কোড লেখার সময় অনেক কম লাইনেই কাজ করা যায়।
  2. Null Safety: Kotlin-এ null safety বিল্ট-ইন আছে, যা NullPointerException এড়াতে সাহায্য করে।
  3. Functional Programming: Kotlin একটি ফাংশনাল প্রোগ্রামিং ভাষা হিসেবেও ব্যবহৃত হতে পারে, তাই এতে ল্যাম্বডা এক্সপ্রেশন, হাইয়ার-অর্ডার ফাংশন, ম্যাপ এবং ফিল্টারের মত ফিচারগুলো সমর্থিত।
  4. Java Interoperability: Kotlin এবং Java একসাথে ব্যবহার করা যায়। এটি Java লাইব্রেরি এবং ফ্রেমওয়ার্কের সাথে সহজেই কাজ করতে পারে।
  5. Android Official Language: Google ২০১৭ সালে Kotlin-কে Android ডেভেলপমেন্টের জন্য একটি অফিসিয়াল ভাষা হিসেবে ঘোষণা করেছে। ফলে Android Studio-তে Kotlin পুরোপুরি সমর্থিত।

Kotlin কোথায় ব্যবহৃত হয়?

  • Android অ্যাপ ডেভেলপমেন্ট: Kotlin, Android অ্যাপ্লিকেশন ডেভেলপমেন্টে সবচেয়ে জনপ্রিয় ভাষা।
  • সার্ভার সাইড ডেভেলপমেন্ট: Kotlin সার্ভার সাইড ডেভেলপমেন্টে ব্যবহার করা যায়, এবং এটি Spring Framework-এর মতো জনপ্রিয় ফ্রেমওয়ার্কের সাথে কাজ করতে পারে।
  • ওয়েব ডেভেলপমেন্ট: Kotlin ওয়েব ডেভেলপমেন্টেও ব্যবহৃত হয়, যেমন Ktor ফ্রেমওয়ার্কের মাধ্যমে ওয়েব সার্ভার তৈরি করা যায়।
  • মাল্টিপ্লাটফর্ম ডেভেলপমেন্ট: Kotlin মাল্টিপ্লাটফর্ম প্রোগ্রামিং সমর্থন করে, তাই একই কোড iOS, Android, এবং Web-এ ব্যবহৃত হতে পারে (Kotlin Multiplatform)।

Kotlin শুরু করার জন্য, তোমাকে Kotlin compiler বা Android Studio ব্যবহার করতে হবে, যেটা Kotlin এর জন্য বিল্ট-ইন সাপোর্ট দেয়।

Content added By

Kotlin এর ইতিহাস এবং বিকাশ নিয়ে বিস্তারিত আলোচনা নিচে করা হলো:

Kotlin এর ইতিহাস:

Kotlin একটি আধুনিক, স্ট্যাটিকালি টাইপড প্রোগ্রামিং ভাষা যা JetBrains দ্বারা তৈরি। এটি প্রথম প্রকাশিত হয় ২০১১ সালে। Kotlin এর মূল উদ্দেশ্য ছিল Java এর বিকল্প হিসেবে একটি আরও সহজ, এক্সপ্রেসিভ, এবং সিম্পল ভাষা তৈরি করা যা Java Virtual Machine (JVM) এ চলে।

উৎপত্তি: JetBrains, যারা IntelliJ IDEA তৈরির জন্য পরিচিত, Kotlin প্রজেক্ট শুরু করে ২০১০ সালে। ভাষার নাম "Kotlin" নেওয়া হয়েছে রাশিয়ার কোতলিন দ্বীপের নাম থেকে, যেভাবে Java নামটি ইন্দোনেশিয়ার জাভা দ্বীপ থেকে নেওয়া হয়েছিল।

প্রথম রিলিজ: ২০১১ সালে JetBrains Kotlin এর প্রাথমিক সংস্করণ উন্মোচন করে এবং ২০১৬ সালের ফেব্রুয়ারিতে Kotlin ১.০ রিলিজ করে। ১.০ সংস্করণটি ছিল প্রথম স্ট্যাবল রিলিজ যা প্রডাকশনে ব্যবহারের জন্য প্রস্তুত।

Google এর সমর্থন: ২০১৭ সালে Google তাদের বার্ষিক I/O কনফারেন্সে ঘোষণা করে যে Kotlin হবে Android অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য অফিসিয়াল সাপোর্টেড ভাষা। এই সমর্থন Kotlin এর জনপ্রিয়তা অনেকাংশে বৃদ্ধি করে।

Kotlin এর বিকাশ এবং গুরুত্বপূর্ণ সংস্করণ:

  • Kotlin 1.1 (মার্চ ২০১৭): এই সংস্করণে coroutine সাপোর্ট আনা হয়, যা asynchronous প্রোগ্রামিংকে সহজ করে এবং আরও বেশি শক্তিশালী করে।
  • Kotlin 1.2 (নভেম্বর ২০১৭): Kotlin/JS (JavaScript) সাপোর্ট যোগ করা হয়, যা প্রোগ্রামারদের একই কোডবেস ব্যবহার করে ফ্রন্ট-এন্ড এবং ব্যাক-এন্ডে কাজ করার সুযোগ দেয়।
  • Kotlin 1.3 (অক্টোবর ২০১৮): coroutine সাপোর্ট আরও উন্নত করা হয়, এবং Kotlin Native এর মাধ্যমে অন্যান্য প্ল্যাটফর্মেও (যেমন iOS) সমর্থন যোগ করা হয়।
  • Kotlin 1.4 এবং 1.5 (২০২০-২০২১): আরও উন্নত ফিচার, যেমন 'type inference' এবং 'Java interoperability', উন্নত করা হয়, যা ডেভেলপারদের জন্য কাজকে আরও সহজ করে তোলে।

Kotlin এর বৈশিষ্ট্য:

  • Concise এবং Expressive Syntax: Kotlin এর সিনট্যাক্স Java এর তুলনায় অনেক সহজ এবং সংক্ষেপিত, যা কোড লেখাকে আরও সহজ করে।
  • Null Safety: Kotlin এ null safety বিল্ট-ইন রয়েছে, যা null pointer exception এড়াতে সাহায্য করে।
  • Java Interoperability: Kotlin সম্পূর্ণরূপে Java এর সাথে সামঞ্জস্যপূর্ণ, তাই বিদ্যমান Java কোডবেসে সহজে Kotlin ইন্টিগ্রেট করা যায়।
  • Coroutine সাপোর্ট: Asynchronous প্রোগ্রামিং এবং concurrency পরিচালনা করতে coroutine একটি শক্তিশালী ফিচার যা Kotlin এ রয়েছে।
  • Cross-platform Development: Kotlin/Native এবং Kotlin/JS এর মাধ্যমে, Kotlin একই কোডবেস ব্যবহার করে Android, iOS, এবং JavaScript প্ল্যাটফর্মে অ্যাপ ডেভেলপ করার সুযোগ দেয়।

Kotlin এর ইতিহাস এবং বিকাশ Java এর বিকল্প হিসেবে একটি আধুনিক ভাষা তৈরি করার লক্ষ্যেই এগিয়েছে, এবং বর্তমানে এটি বহুল ব্যবহৃত ও জনপ্রিয় প্রোগ্রামিং ভাষা। iOS ডেভেলপমেন্টেও এটি ক্রমশ ব্যবহৃত হচ্ছে, বিশেষত cross-platform frameworks, যেমন Kotlin Multiplatform Mobile (KMM) এর মাধ্যমে।

Content added By

Kotlin এর বৈশিষ্ট্য এবং সুবিধা সম্পর্কে বিস্তারিতভাবে নিচে আলোচনা করা হলো:

Kotlin এর বৈশিষ্ট্যসমূহ

Java Interoperability:

  • Kotlin এবং Java একই প্রোজেক্টে একসাথে ব্যবহার করা যায়।
  • Kotlin থেকে Java এর লাইব্রেরি এবং API গুলো সরাসরি ব্যবহার করা যায়, এবং একইভাবে Java থেকেও Kotlin কোড অ্যাক্সেস করা যায়।

নাল সেফটি (Null Safety):

  • Kotlin এ "NullPointerException" প্রতিরোধ করার জন্য নাল সেফটি বিল্ট-ইনভাবে অন্তর্ভুক্ত করা হয়েছে।
  • Kotlin এ, ভ্যারিয়েবলগুলো ডিফল্টভাবে non-null থাকে। যদি নাল ভ্যালু গ্রহণ করতে হয়, তবে "nullable" টাইপ ব্যবহার করতে হয় (? অপারেটর দিয়ে)।

স্ট্যাটিক টাইপিং (Static Typing):

  • Kotlin একটি স্ট্যাটিকালি টাইপড ল্যাঙ্গুয়েজ, যার ফলে কম্পাইল টাইমে টাইপ চেকিং সম্ভব হয়, যা কোডে ভুল কমাতে সাহায্য করে।

সিম্পল এবং সংক্ষিপ্ত সিনট্যাক্স:

  • Kotlin এর কোড Java এর তুলনায় অনেক কম, পরিষ্কার এবং সহজে পড়া যায়।
  • অনেক সাধারণ অপারেশন যেমন: getters/setters, data class, equals/hashCode, এবং tostring() মেথড নিজেই অটোমেটিক্যালি জেনারেট করে।

ফাংশনাল প্রোগ্রামিং সাপোর্ট:

  • Kotlin ফাংশনাল প্রোগ্রামিং সাপোর্ট করে, যেমন: ল্যাম্বডা এক্সপ্রেশন, হায়ার-অর্ডার ফাংশন, ম্যাপ, ফিল্টার, এবং রিডিউস অপারেশন।

এক্সটেনশন ফাংশন (Extension Functions):

  • এক্সটেনশন ফাংশনের মাধ্যমে, আপনি বিদ্যমান ক্লাসে নতুন ফাংশন যোগ করতে পারেন, যা ঐ ক্লাসের কোড পরিবর্তন ছাড়াই সম্পন্ন করা যায়।

ডেটা ক্লাস (Data Class):

  • Kotlin এ ডেটা ক্লাস ব্যবহার করে সহজেই POJO (Plain Old Java Object) তৈরি করা যায়। এটি অটোমেটিক্যালি ফিল্ডের জন্য equals(), hashCode(), toString(), এবং copy() মেথড তৈরি করে।

কোঅর্টিন (Coroutines):

  • Kotlin এ কোঅর্টিন নামে হালকা-ওজন থ্রেডিং মেকানিজম আছে যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ করে তোলে। এটি অ্যাসিঙ্ক্রোনাস কোড লেখা এবং এক্সিকিউশন পারফরমেন্স উন্নত করে।

ডিএসএল (DSL) সাপোর্ট:

  • Kotlin DSL (Domain Specific Language) তৈরি করতে সহজ করে তোলে, যা কোডের পড়া এবং ব্যবহারে সহায়ক হয়। এটি টেস্টিং ফ্রেমওয়ার্ক এবং বিল্ড স্ক্রিপ্টের জন্য বিশেষভাবে উপযোগী।

Kotlin এর সুবিধাসমূহ

Java এবং Android এর সাথে ইন্টারঅপারেবিলিটি:

  • Kotlin, Java-এর জন্য একটি চমৎকার বিকল্প এবং এটিকে সরাসরি Android ডেভেলপমেন্টে ব্যবহার করা যায়। এটি Java এর সমস্ত লাইব্রেরি এবং ফ্রেমওয়ার্কের সাথে কাজ করতে সক্ষম।

রিডিউসড বয়লারপ্লেট কোড (Reduced Boilerplate Code):

  • Kotlin এর সিনট্যাক্স Java এর তুলনায় অনেক সহজ এবং সংক্ষিপ্ত, যার ফলে ডেভেলপারদের অনেক কম কোড লিখতে হয়। এতে কোডিং সময় কমে এবং কোড আরো সহজবোধ্য হয়।

নালপয়েন্টার এক্সসেপশন (NullPointerException) প্রতিরোধ:

  • Kotlin এর নাল সেফটি সিস্টেম ডেভেলপারদেরকে নাল ভ্যালু দ্বারা সৃষ্ট এক্সসেপশন এড়াতে সাহায্য করে, যা প্রজেক্টের স্থিতিশীলতা বৃদ্ধি করে।

ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্ট:

  • Kotlin Multiplatform এর মাধ্যমে একই কোড বেস ব্যবহার করে Android, iOS, এবং অন্যান্য প্ল্যাটফর্মের জন্য অ্যাপ তৈরি করা যায়।

অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ:

  • কোঅর্টিন ব্যবহারের মাধ্যমে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং এবং কনকারেন্সি হ্যান্ডলিং অনেক সহজ হয়। এটি পারফর্মেন্স উন্নত করতে এবং কোডের জটিলতা কমাতে সাহায্য করে।

ক্লিন এবং মেইনটেইনেবল কোড:

  • Kotlin এর সহজ এবং পরিষ্কার সিনট্যাক্স ডেভেলপারদেরকে ক্লিন কোড লিখতে সাহায্য করে, যা প্রজেক্টের মেইনটেনেন্স এবং উন্নয়নে সহায়ক।

উন্নত কম্পাইল টাইম সেফটি:

  • Kotlin এ স্ট্যাটিক টাইপিং এবং টাইপ ইনফারেন্স থাকার কারণে কম্পাইল টাইমে বেশিরভাগ ভুল ধরা যায়, যা অ্যাপ্লিকেশনের রিলায়েবিলিটি বৃদ্ধি করে।

উপসংহার

Kotlin তার মডার্ন ফিচার এবং Java-এর সাথে ইন্টারঅপারেবিলিটির জন্য দ্রুত জনপ্রিয় হয়ে উঠছে। এটি Java ডেভেলপারদের জন্য বিশেষভাবে উপযোগী, যারা অ্যান্ড্রয়েড, সার্ভার-সাইড, বা মাল্টিপ্ল্যাটফর্ম অ্যাপ্লিকেশন ডেভেলপমেন্ট করতে চান।

Content added By

Kotlin এবং Java উভয়ই JVM (Java Virtual Machine) ভিত্তিক প্রোগ্রামিং ভাষা, তবে Kotlin একটি আধুনিক এবং সহজতর সিনট্যাক্স নিয়ে আসে যা Java-র কিছু সীমাবদ্ধতাকে কাটিয়ে ওঠার জন্য ডিজাইন করা হয়েছে। নিচে Kotlin এবং Java-এর মধ্যে প্রধান পার্থক্যগুলি তুলে ধরা হলো:

১. সিনট্যাক্স সরলতা:

  • Kotlin: কোড কমপ্যাক্ট এবং সহজ, অনেক ক্ষেত্রেই Java-এর তুলনায় কম লাইন কোডে কাজ সম্পন্ন করা যায়।
  • Java: সিনট্যাক্স দীর্ঘ এবং অধিক boilerplate কোড প্রয়োজন হয়।

উদাহরণ:

// Kotlin
var name: String = "ChatGPT"
// Java
String name = "ChatGPT";

২. Null Safety:

  • Kotlin: Kotlin-এর অন্যতম বড় ফিচার হল null safety। এটি প্রোগ্রামারদের NullPointerException থেকে রক্ষা করে। যদি কোনো ভ্যারিয়েবল null হতে পারে, তাহলে তার সাথে ? চিহ্ন যোগ করতে হয়।
  • Java: Java-তে null values সরাসরি ব্যবহৃত হয়, এবং NullPointerException একটি সাধারণ সমস্যা।

উদাহরণ:

var name: String? = null // Null-safe

৩. ডাটা ক্লাস (Data Classes):

  • Kotlin: Kotlin-এ, একটি ডাটা ক্লাস তৈরি করা খুবই সহজ। শুধুমাত্র data কীওয়ার্ড ব্যবহার করেই সমস্ত getter, setter, equals, hashCode, এবং toString মেথড স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়।
  • Java: Java-তে একটি ডাটা ক্লাস তৈরি করতে ম্যানুয়ালি সমস্ত getter, setter, equals, hashCode, এবং toString মেথড তৈরি করতে হয়।

উদাহরণ:

data class User(val name: String, val age: Int)

৪. ফাংশনাল প্রোগ্রামিং (Functional Programming) সাপোর্ট:

  • Kotlin: Kotlin একটি ফাংশনাল প্রোগ্রামিং ভাষা হিসেবেও ব্যবহৃত হয়। এটি ল্যাম্বডা এক্সপ্রেশন, হাইয়ার-অর্ডার ফাংশন, এবং ফাংশন টাইপ সমর্থন করে।
  • Java: Java 8 থেকে ল্যাম্বডা এক্সপ্রেশন সাপোর্ট করে, তবে Kotlin-এর ফাংশনাল প্রোগ্রামিং ক্ষমতা বেশি।

৫. Extension Functions:

  • Kotlin: Kotlin-এ extension functions যোগ করা সম্ভব, যা বিদ্যমান ক্লাসের উপর নতুন ফাংশন যোগ করতে দেয়।
  • Java: Java-তে কোনো extension functions নেই, তাই নতুন ফাংশন যোগ করার জন্য helper বা utility ক্লাস তৈরি করতে হয়।

উদাহরণ:

fun String.greet(): String = "Hello, $this"

৬. Coroutines (Concurrency):

  • Kotlin: Kotlin-এর coroutines concurrency management-এর জন্য খুবই সহজ ও কার্যকরী উপায় প্রদান করে, যা asynchronous কোডকে সহজতর করে তোলে।
  • Java: Java-তে concurrency এবং asynchronous প্রোগ্রামিং করতে Threads এবং Executors ব্যবহার করা হয়, যা তুলনামূলকভাবে বেশি জটিল।

৭. Smart Casts:

  • Kotlin: Kotlin-এর smart casts ফিচারটি ভ্যারিয়েবলের টাইপ নির্ধারণ করতে স্বয়ংক্রিয়ভাবে কাজ করে। একবার কোনো ভ্যারিয়েবলের টাইপ চেক করা হলে, Kotlin নিজে থেকে সেটি সেই টাইপে কাস্ট করে ফেলে।
  • Java: Java-তে টাইপ কাস্টিং ম্যানুয়ালি করতে হয়, যা অনেক ক্ষেত্রে কোডকে জটিল করে তোলে।

৮. ডিফল্ট এবং নামকৃত আর্গুমেন্টস:

  • Kotlin: Kotlin-এ ডিফল্ট আর্গুমেন্টস ব্যবহার করা যায় এবং নামকৃত আর্গুমেন্টস (named arguments) ব্যবহার করে ফাংশন কল করা যায়।
  • Java: Java-তে ডিফল্ট আর্গুমেন্ট নেই, এবং ওভারলোডিং মেথড ব্যবহার করতে হয়।

৯. ক্লাস ডিক্লারেশন:

  • Kotlin: Kotlin-এ sealed classes, data classes, এবং object declarations সমর্থন করে।
  • Java: Java-তে এই ধরনের সিনট্যাক্স নেই এবং কোড আরও বেশি কাস্টমাইজেশন প্রয়োজন হয়।

১০. Interopability:

  • Kotlin: Kotlin পুরোপুরি Java-এর সাথে ইন্টারঅপারেবল। Java লাইব্রেরি এবং ফ্রেমওয়ার্ক সহজেই Kotlin-এ ব্যবহার করা যায়।
  • Java: Java-তে Kotlin-এর কোড ব্যবহার করা যেতে পারে, তবে কিছু ক্ষেত্রে অতিরিক্ত কাস্টমাইজেশন প্রয়োজন হতে পারে।

Kotlin কেন ব্যবহার করবেন?

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

Content added By
Promotion

Are you sure to start over?

Loading...