Swift হলো একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যেটি ব্যবহার করে iPhone, iPad, Mac, Apple Watch এবং আরও অনেক প্ল্যাটফর্মের জন্য অ্যাপ ও গেম লিখা যায়। অ্যাপল Swift-কে এক্সপ্লিসিটলি ডিজাইন করেছে যাতে ডিভাইসগুলো থেকে সবচেয়ে ফাস্ট এবং ইফিশিয়েন্ট পারফরম্যান্স পাওয়া যায়, এবং Swift 5 এর ইতিমধ্যে সমৃদ্ধ ফিচার সেটকে আরও এক্সপ্যান্ড করেছে। এই আর্টিকেলে আমরা দেখাব Swift 5 কিভাবে ব্যবহার করবেন, কেন ব্যবহার করবেন, এবং এই ভার্সনের সব নতুন ফিচার।
যদি সরাসরি ডুবে যেতে চান, Swift 5-এ শুরু করার পদ্ধতি-এ যান। বিস্তারিত ওভারভিউ için ম্যাক প্রোগ্রামিংয়ের সম্পূর্ণ গাইড দেখুন—ম্যাকওএসে ব্যবহারযোগ্য বিভিন্ন কোডিং ল্যাঙ্গুয়েজের ওভারভিউ।
Swift 5 ওভারভিউ
Swift 5 হলো অ্যাপল ডেভেলপড একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা ডেভেলপারদের iOS, macOS, tvOS, watchOS-এ অ্যাপ বানাতে দেয়।
পঞ্চম ভার্সন Xcode 10.2 এর সাথে মার্চ ২০১৯-এ রিলিজ হয়েছিল—নতুন ফিচারগুলো পরে আলোচনা করব। Swift ল্যাঙ্গুয়েজ কিছুদিন ধরে চলছে: Swift 1.0 সেপ্টেম্বর ২০১৪-এ রিলিজ হয়েছিল। অ্যাপল অনুযায়ী, Swift Objective-C-এর চেয়ে ২.৬ গুণ ফাস্ট এবং Python-এর চেয়ে ৮.৪ গুণ ফাস্ট।
কেন Swift 5-এ কোড লিখবেন?
- ওপেন সোর্স: সোর্স কোড পাবলিকলি উপলব্ধ। কোডাররা ইন্সপেক্ট, মডিফাই, ডিপ্লয় করতে পারেন। অ্যাপল বলে: "ওপেন সোর্স মেথডলজি macOS-কে আরও রবাস্ট ও সিকিউর করে, কারণ কোর কম্পোনেন্টগুলো দশক ধরে পিয়ার রিভিউয়ের অধীনে আছে।"
- শেখা সহজ: অ্যাপল ল্যাঙ্গুয়েজটিকে সহজ বানিয়েছে। বIginners-এর জন্য আদর্শ—সিনট্যাক্স বোঝা সহজ। আগে সফটওয়্যার ডেভেলপ করলে Swift-এর সিনট্যাক্স ও কনসেপ্ট পরিচিত লাগবে।
- ফাস্ট: সার্চ অ্যালগরিদম Objective-C-এর চেয়ে ২.৬x, Python-এর চেয়ে ৮.৪x ফাস্ট।
- সেফ: আনসেফ কোড এড়ানো যায়, মডার্ন প্রোগ্রামিং কনভেনশন দিয়ে অ্যাপ সিকিউর রাখা যায়।
- Playgrounds: Xcode-র সাথে Playgrounds ফিচার থাকে—Swift 5 কোড লিখলেই ফলাফল স-phosphorescence দেখা যায়। Swift Playgrounds ব্যবহার দেখুন।
- ফিউচার-প্রুফ: iOS, macOS, watchOS, tvOS—একসাথে একাধিক প্ল্যাটফর্মে ডেভেলপমেন্ট।
- নিরবদ্য উন্নতি: Swift 5 এ ABI stability আনে—ফিউচার Swift কম্পাইলার Swift 5+ এ লেখা কোড কম্পাইল করতে পারবে, মাইগ্রেশন কম পেইনফুল হবে। OS ভেন্ডররা Swift Standard Library-কে OS-এ এম্বেড করতে পারবে, Swift 5+ দিয়ে বিল্ট সকল অ্যাপের সাথে কম্প্যাটিবল হবে।
WWDC 2019-এ আরও Swift ডেভেলপমেন্ট শুনতে পাব।
Swift 5-এ শুরু করা
iOS অ্যাপ ডেভেলপ করতে হলে দরকার: একটি ম্যাক (MacBook, iMac, Mac mini) এবং ফ্রি সফটওয়্যার Xcode (v10.2+)। নিচের ধাপগুলো ফলো করুন:
- ম্যাক অ্যাপ স্টোর খুলুন।
- সার্চ বারে 'Xcode' টাইপ করুন।
- Xcode আইকনের পাশে 'Get' চাপুন।
- ব্রাউজারে Mac App Store-এ যেতে পারেন।

অনলাইন কম্পাইলার
অ্যাপ ডিপ্লয় না করলে Swift অনলাইন কম্পাইলার ব্যবহার করতে পারেন—শিখতে ও এক্সিকিউট করতে গেয়ে।
- Online Swift Playground: Swift 5 সাপোর্ট করে, কোড টেস্ট ও এক্সিকিউট করতে দেয়।
- Repl.it: Swift 4.2 সাপোর্ট করে (মে ২০১৯ পর্যন্ত), আপডেট আসছে।
Swift-এ একটি সিম্পল অ্যাপ লিখা
Xcode খুলুন → File → New → Project → টেমপ্লেট থেকে Single View App সিলেক্ট করুন।

অ্যাপের নাম দিন, Organization name (কোম্পানি বা নিজের নাম)। Organization Identifier সাধারণত কোম্পানির URL রিভার্স অর্ডারে (যেমন com.mycompany.myapp)।
Language: Swift সিলেক্ট করুন → Next → প্রজেক্টের লোকেশন বেছে নিন।

প্রজেক্ট তৈরি হলে নিচের স্ক্রিন আসবে:

এখানে একটি সিম্পল অ্যাপ বানাবো: ইউজার টেক্সট ফিল্ডে নাম লিখবে, বাটন চাপলে "Hello [নাম]" গ্রিটিং দেখাবে।
- বাম প্যানেল থেকে Main.storyboard খুলুন। খালি View দেখাবে। উপরের ডান কোণার গোল বাটন চাপে Object Library খুলুন। Text Field, Label, Button টেনে View-এ আনুন।


- Button সিলেক্ট করুন, ডান পাশের Utility Area-র Title ফিল্ডে "Generate greeting" লিখুন।

- ViewController.swift ডাবল-ক্লিক করুন (আলাদা উইন্ডোতে খুলবে)।
- Text Field সিলেক্ট করুন, Ctrl ধরে ViewController ক্লাসের টপে ড্র্যাগ করুন → IBOutlet তৈরি হবে, নাম দিন "textField"।

- Label-ও একইভাবে IBOutlet "label" নামে বানান। Button-এ IBAction তৈরি করতে Ctrl ধরে ক্লাসের বটমে ড্র্যাগ করুন, মেথড নাম "buttonTapped"।
- IBOutlets = স্টোরিবোর্ড কন্ট্রোল কোডে এক্সেস করা, IBActions = বাটন ইভেন্ট (ট্যাপ) হ্যান্ডেল করা।
- buttonTapped মেথডে নিচের কোড যোগ করুন:
if let name = textField.text {
self.label.text = "Hello " + name
} - ViewController.swift ফাইল এখন এমন দেখাবে:

- Run বাটন চাপুন—সিমুলেটরে অ্যাপ লঞ্চ হবে।
- নাম লিখে বাটন চাপলে লেবেলে "Hello [নাম]" দেখাবে।

Swift 5 কনসেপ্টস (বেসিক ও এডভান্সড)
সিম্পল অ্যাপ বানালাম। এখন নিজের প্রজেক্টে ব্যবহারযোগ্য কিছু মেথড ও কোড স্নিপেট দেখি।
টেক্সট প্রিন্ট করা
print("Hello, world!")
ভেরিয়েবল ডিক্লেয়ার করা
let = কনস্ট্যান্ট (মান পরিবর্তন হয় না), var = ভেরিয়েবল (মান পরিবর্তন হয়)। টাইপ এক্সপ্লিসিটলি লিখতে হয় না—মান দিয়ে কম্পাইলার ইনফার করে।
let constVar = 42
var numberVar = 27
টাইপ স্পেসিফাই করলেও: var numberVar: Int = 27
কমেন্ট
সিঙ্গেল লাইন: //This is a comment
মাল্টিলাইন: /* This is a
Multiline comment */
ডিসিশন মেকিং (if স্টেটমেন্ট)
if boolean_expression {
/* true হলে এক্সিকিউট */
}
উদাহরণ: 
if...else স্টেটমেন্ট
if boolean_expression {
/* true */
} else {
/* false */
}
উদাহরণ: 
if...else if...else চেইন
if boolean_expression_1 {
/* expr 1 true */
} else if boolean_expression_2 {
/* expr 2 true */
} else if boolean_expression_3 {
/* expr 3 true */
} else {
/* কোনো শর্ত true নয় */
}
উদাহরণ: 
Switch স্টেটমেন্ট
switch expression {
case expression1 :
statement(s)
fallthrough /* optional */
case expression2, expression3 :
statement(s)
fallthrough /* optional */
default : /* Optional */
statement(s);
}
উদাহরণ: 
অ্যারে (Arrays)
স্কোয়ার ব্র্যাকেট দিয়ে অ্যারে/ডিকশনারি বানান, ইনডেক্স/কি দিয়ে এক্সেস।
var arrayList = ["Swift", "JavaScript", "Java", "PHP"]
দ্বিতীয় এলিমেন্ট এক্সেস/মডিফাই: arrayList[2] = "React Native"
খালি অ্যারে: var emptyArray = [String]() বা emptyArray = []
ডিকশনারি (Dictionaries)
var occupations = ["Steve": "Developer", "Kate": "Designer"]
ভ্যালু এক্সেস/মডিফাই: occupations["Steve"] = "CTO"
খালি ডিকশনারি: occupations = [:]
সেট (Sets)
অ্যারে মতো কিন্তু ইউনিক ভ্যালু রাখে।
var a : Set = [1,2,3,4,5,6,7,8,9,0]
Swift-এ Optionals টাইপ আছে—ভ্যালু না থাকা হ্যান্ডেল করে। '?' বা '!' দিয়ে ডিফাইন করা হয়।
var myString: String?
'?' = ভ্যালু থাকতে পারে বা নাও থাকতে পারে।
'!' = শুরুর দিকে nil হতে পারে, পরে ইউজ করার সময় ভ্যালু থাকতে হবে (নাহলে রানটাইম এরর)।
কোনো সাইন না থাকলে = নন-অপশনাল, ভ্যালু অ্যাসাইন করা বাধ্যতামূলক (নাহলে কম্পাইলার এরর)।
ফাংশন (Functions)
func createStr(Number inputNum : Int) -> String
{
return "\(inputNum)"
}
কল করুন: createStr(Number: 345)
ক্লাস (Classes)
class Car
{
var numOfPersons : Int?
func displayDetails() {
}
}
ইন্সট্যান্স: var myCar : Car = Car()
numOfPersons সেট: myCar.numOfPersons = 5
ক্লোজার (Closures)
অনাম ফাংশন ব্লকে অর্গানাইজড, যেকোনো জায়গা কল করা যায়। ভেরিয়েবলে অ্যাসাইন করা যায়।
{
(parameters) -> return type in
statements
}
উদাহরণ: 
এক্সটেনশন (Extensions)
এক্সিস্টিং ক্লাস, স্ট্রাকচার, এনামের ফাংশনালিটি এক্সটেন্ড করা যায় (ওভাররাইড করা যায় না)।
উদাহরণ: 
টাপল (Tuples)
একাধিক ভ্যালু একসাথে গ্রুপ করার জন্য।
var TupleName = (Value1, value2, ...)
var error501 = (501, "Not implemented")
Swift 5-এ নতুন ফিচারগুলো
Raw Strings
Swift 5 রอ স্ট্রিংস আনে—কোট মার্কস ও ব্যাকস্ল্যাশ এস্কেপ সিকোয়েন্স ছাড়া লিটার্যালি ব্যবহার করা যায়। স্ট্রিংয়ের শুরু ও শেষে # দিন।

রো স্ট্রিং-এ ব্যাকস্ল্যাশ লিটার্যাল, তাই স্ট্রিং ইন্টারপোলেশনে ব্যাকস্ল্যাশের পর আরও একটি # দিন।

"#" সিকোয়েন্স একসাথে ব্যবহার করতে হলে শুরু ও শেষে ## দিন।

ইন্টিজার মাল্টিপল খুঁজে বের করা
Swift 4.2-এ মডুলো অপারেটর (%) ব্যবহার করতে হতো। Swift 5-এ ডেডিকেটেড মেথড: .isMultiple(of:)—কোড বেশি ক্লিয়ার।

ফিউচার Enum কেস হ্যান্ডলিং
Swift-এ switch স্টেটমেন্ট এক্সহাস্টিভ হতে হয় (সব কেস হ্যান্ডেল করতে হয় অথবা default দিয়ে)। সমস্যা: ফিউচারে নতুন enum কেস যোগ হলে কম্পাইলার ওয়ার্নিং দেয় না, default-এ পড়ে যায়।
Swift 5-এ @unknown অ্যাট্রিবিউট যোগ করা হয়েছে। default কেসের সাথে @unknown ব্যবহার করলে ফিউচারে নতুন কেস যোগ হলে কম্পাইলার ওয়ার্নিং দেবে—ডেভেলপার تصمیم নিতে পারবে হ্যান্ডেল করবে কিনা।


নেস্টেড অপশনালস ফ্ল্যাটেনিং
try? দিয়ে থ্রোইং কোড হ্যান্ডল করলে নেস্টেড অপশনাল বানত। Swift 5-এ এটি রেগুলার অপশনালে ফ্ল্যাটেন হয় (conditional type-casting ও optional chaining-এর মত)।

উদাহরণে model ভেরিয়েবল টাইপ String? (Swift 4.2-এ String?? ছিল)।
স্ট্যান্ডার্ড লাইব্রেরিতে Result টাইপ
Swift 5-এ Result টাইপ স্ট্যান্ডার্ড লাইব্রেরিতে যোগ হয়েছে। অ্যাসিনক্রোনাস কোডে এরর হ্যান্ডলিং এর জন্য ক্লিন ও সিম্পল উপায়। এটি enum হিসেবে ইমপ্লিমেন্টেড: success এবং failure কেস। উভয় জেনেরিকস দিয়ে। success-এ যেকোনো টাইপের ভ্যালু, failure-এ Error প্রোটোকল কনফর্মিং ভ্যালু।
উদাহরণ: 
ApiClient ইমপ্লিমেন্টেশন: names ফেচ করে URL থেকে। completion closure Result টাইপ এক্সেপ্ট করে—success-এ [String], failure-এ ApiError।
ব্যবহার: 
Swift-এর অন্যান্য গুরুত্বপূর্ণ ফিচার (পুরনো ভার্সন থেকে)
পুরনো ভার্সনের ফিচারগুলোও জানা দরকার। Swift 4-এ যোগ করা কিছু হাইলাইট:
স্ট্রিংস (Strings)
Swift 4 থেকে String Collection প্রোটোকল কনফর্ম করে—সিডি ইটারেট করা যায়। Collection মেথড/প্রোপার্টি (count, isEmpty, map, filter, index(of:)) String-এ ব্যবহার করা যায়।

মাল্টিলাইন স্ট্রিং: ট্রিপল কোট ("""...""") দিয়ে—ডাবল কোট এস্কেপ করার প্রয়োজন নেই।

JSON এনকোডিং ও ডিকোডিং
Swift 4 JSON আর্কাইভাল/সিরিয়ালাইজেশন সিম্পলিফাই করল। কাস্টম টাইপে Codable প্রোটোকল ইমপ্লিমেন্ট করলেই হয় (Encodable + Decodable)।

স্মার্টার কি পাথ (Key Paths)
অবজেক্টের প্রোপার্টি এক্সেস করা সহজ হয়েছে।

ক্লাস ও প্রোটোকল মিক্সিং
Swift 3-এ প্রোটোকল কম্বাইন করা যেতো। Swift 4-এ ক্লাসও মিক্স করা যায় একই সিনট্যাক্সে—Objective-C-এর মত।
swap vs swapAt
Swift 3: swap(_:_:) মিউটেটিং মেথড—দুই এলিমেন্ট ইনপুট প্যারামিটার হিসেবে পাস করলে স왪 হয়। ড্রব্যাক: ডায়রেক্ট এক্সেস।
Swift 4: swapAt(_:_:)—ইনডেক্স দিয়ে স왪 করে।
ডিকশনারি ও সেট
ডিকশনারির init(uniqueKeysWithValues:) ইলিশিয়ালাইজার দিয়ে টাপল অ্যারে থেকে নতুন ডিকশনারি বানানো যায়।

Swift 5 প্রোগ্রামিং শিখতে সেরা প্লেসগুলো
Swift 5 দিয়ে অ্যাপ বানাতে হেল্প করার রিসোর্সগুলো:
Apple Documentation: Swift 5 শিখতে সেরা জায়গা—অফিশিয়াল ডকুমেন্টেশন।
eBook: অ্যাপল রিলিজ করেছে আপডেটেড eBook: The Swift Programming Language (Swift 5.0)—খুব উপকারী।
Udemy: বড় অনলাইন ভিডিও লার্নিং প্ল্যাটফর্ম। Swift 5 কভার করে কয়েক কোর্স:
- Swift 5 Programming for Beginners
- iOS 12 & Swift 5: Build a To Do List App
Swift programming in easy steps (covers iOS 12 and Swift 5): এই আর্টিকেলের লেখক লিখিত বই—Amazon-এ পাওয়া যায়।
Hacking with Swift: পল হাডসনের মেইনটেইন করা ওয়েবসাইট—Swift ডেভেলপমেন্ট শিখতে চমৎকার। বই ও টিউটোরিয়াল আছে।
আরও রিসোর্স: Swift শিখার গাইড।