Bài viết được dịch từ trang web CNET

Swift được quảng cáo là 'Objective-C mà không có C'
Swift được quảng cáo là 'Objective-C mà không có C'

Mọi người có xu hướng quên mất rằng chữ "D" trong cụm từ về hội nghị WWDC của Apple là viết tắt của chữ "Developer (nhà phát triển)" -- đó thực sự là một hội nghị dành cho các nhà phát triển, một nơi mà các lập trình viên có thể đến và học được những thủ thuật mới cho nghề nghiệp mà họ đã lựa chọn.

Thông điệp này hoàn toàn rõ ràng bởi sự tập trung vào hai thứ: phần mềm và những người tạo ra nó.

Trong khi một số người tỏ vẻ thất vọng về sự thiếu hụt các thiết bị phần cứng mới từ hội nghị Worldwide Developers Conference năm nay (những chiếc iPhone mới, iWatch, v.v...), nhưng phần mềm mới chính là thứ giúp các thiết bị này có giá trị, và có lẽ một ngày nào đó nó còn giá trị hơn cả phần cứng. Vì vậy, nhiều cập nhật mà chúng ta thấy ngày nay khiến cho cuộc sống của các lập trình viên trở nên dễ dàng hơn. Các lập trình viên hạnh phúc hơn nghĩa là họ sẽ tạo ra nhiều ứng dụng hơn -- và chất lượng ứng dụng cũng trở nên tốt hơn.

Thông báo lớn nhất dành cho các nhà phát triển từ WWDC '14 là Swift, một ngôn ngữ lập trình hoàn toàn mới, mục đích không chỉ làm cho công việc viết ứng dụng trở nên dễ dàng hơn, mà cũng nhanh hơn và ổn định hơn, và kết quả là có tốc độ thực thi tốt hơn. Về cơ bản, nó hứa hẹn mang lại tất cả mọi thứ cho các lập trình viên. Liệu điều đó có thể hay không?

Tại hội nghị WWDC '15, Apple đã cập nhật Swift lên thành Swift 2, và biến nó trở thành Mã Nguồn Mở. Động thái này của Apple có thực sự làm thay đổi cuộc chơi?

Điều đó thì vẫn còn phải chờ xem, nhưng từ góc nhìn của tôi hôm nay, có vẻ là nó rất tiềm năng. Hãy cùng tôi tìm hiểu và phân tích Swift là gì và nó có ý nghĩa như thế nào. Hãy tin tôi đi, tôi là một lập trình viên -- hoặc ít nhất thì tôi cũng đã sử dụng nó.

Các loại ngôn ngữ lập trình

Ngôn ngữ Swift 2 với nhiều ưu điểm vượt trội

Có rất nhiều cách để khiến một thiết bị làm một điều gì đó, dù đó là một chiếc điện thoại thông minh hay một cái gì đó nhàm chán hơn một chút như một laptop hoặc máy PC. Cách khó nhất để làm điều này đó là viết ra một số mã bytecode dạng thô, hoặc một cái gì đó như assembler, nơi mà lập trình viên về cơ bản thực hiện mỗi lệnh thủ công bằng tay -- mỗi lần một số được thay đổi trong bộ nhớ, mỗi lần một pixel thay đổi trên màn hình, mỗi hành động riêng lẻ được thực thi. Các lập trình viên giỏi có thể làm rất nhiều thứ tuyệt vời theo cách lập trình kiểu này. Tuy nhiên, bạn có thể tưởng tượng, việc viết các ứng dụng kiểu này vô cùng tẻ nhạt và dễ bị lỗi.

Vì vậy mà các ngôn ngữ lập trình bậc cao xuất hiện để giúp đỡ. Ở đây, thay vì có một mối quan hệ 1:1 giữa cái mà lập trình viên viết ra và cái mà máy tính thực thi, một lập trình viên có thể viết một lệnh đưa ra và lệnh đó sẽ dẫn đến việc máy tính có thể làm nhiều thứ. Các ngôn ngữ lập trình bậc cao có rất nhiều điểm giống một ngôn ngữ thực sự, trong đó chúng có cú pháp và cấu trúc với một số sắc thái.

Hãy tưởng tượng khi nói với ai đó lấy dùm bạn một lon soda từ tủ lạnh. Trong một ngôn ngữ lập trình bậc cao, bạn sẽ nói, "Hãy ra khỏi chiếc ghế và lấy cho tôi một lon soda từ tủ lạnh" và người ta sẽ tìm ra cách làm điều đó. Với một ngôn ngữ cấp thấp, bạn sẽ cần phải nói một điều gì đó giống như thế này, "Để hai chân xuống sàn. Dùng hai tay chống vào ghế sofa để đứng lên. Đặt bàn chân phải của bạn trước bàn chân trái, sau đó bước chân trái lên trước chân phải..." Bạn đã hình dung được toàn bộ rồi nhỉ? Mọi hành động rời rạc để di chuyển từ ghế sofa đến nhà bếp cần phải mô tả chính xác.

C là một ngôn ngữ lập trình bậc cao cổ điển, và một ngôn ngữ có ảnh hưởng từ nó là Objective-C, được chọn là ngôn ngữ truyền thống của Apple. Thật đáng ngạc nhiên, Objective-C đã có tuổi đời trên 30 năm, và bản thân C đã tồn tại trên 40 năm. Bạn có thể tưởng tượng rằng đây là lúc để có một cái gì đó mới.

Trong số các ngôn ngữ lập trình, có một tập con được gọi là ngôn ngữ "kịch bản (scripting)". Sự phân biệt này có một chút khó giải thích, nhưng hãy để tôi nói tiếp. Về cơ bản, một ngôn ngữ lập trình bậc cao truyền thống cần phải được biên dịch trước khi bất cứ điều gì có thể xảy ra. Biên dịch là khi mà tất cả những dòng lệnh (như "go to" hoặc "get") được dịch sang các hướng dẫn cụ thể mà máy tính có thể hiểu được.

Cú pháp đó được chuyển từ một cái gì đó mà con người có thể đọc thành một cái gì đó mà một máy tính có thể đọc, và nếu tất cả mọi việc suôn sẻ, kết quả của nó là một ứng dụng thực sự làm điều bạn muốn. Quá trình biên dịch này thường chậm, và nó cần phải hoàn thành trước khi bạn có thể nhìn thấy liệu chương trình mà mình viết ra có làm việc được hay không. Bất kỳ một trục trặc nhỏ nào trong cú pháp của bạn thường sẽ không được xác định cho đến khi vào trong quá trình biên dịch đó, và nó làm chậm quá trình phát triển sản phẩm của bạn.

Mặt khác, một ngôn ngữ kịch bản (scripting language), thực thi trực tiếp hết dòng này đến dòng khác. Bạn có thể nhìn thấy các kết quả dễ dàng ngay khi bạn đang viết nó, và bạn không cần phải ngồi chờ biên dịch. Điều này khiến cho công việc phát triển sản phẩm được nhanh và dễ dàng hơn, nhưng các ngôn ngữ kịch bản thường bị giới hạn trong những khả năng của chúng -- chúng thường được sử dụng cho những việc đơn giản hơn. 

Python là một ví dụ của một ngôn ngữ thường được sử dụng cho việc viết các scripting, và thực sự nó là ngôn ngữ mà Apple đã đưa ra để so sánh với Swift trên sân khấu WWDC.

Swift: Tốt nhất so với những loại ngôn ngữ kể trên

Ngôn ngữ Swift 2 trong lập trình game

Các ngôn ngữ kịch bản như Python, có khuynh hướng dễ viết và dễ kiểm thử, nhưng chúng không phải là đặc biệt mạnh mẽ và nói chung là không có tốc độ thực thi tốt lắm. Không phù hợp khi bạn đang viết một trò game cần truy cập tới toàn bộ sức mạnh của thiết bị. Các ngôn ngữ lập trình truyền thống, như Objective-C, cho phép tiếp cận tốt hơn tới sức mạnh của thiết bị và tạo ra nhiều ứng dụng toàn diện hơn, nhưng rất khó để học và khá tẻ nhạt khi biên dịch và kiểm thử.

Swift hứa hẹn mang lại tất cả những ưu điểm và loại bỏ đi những nhược điểm đó. Apple hứa rằng, ít nhất là trong một số so sánh quan trọng, Swift nhanh hơn đáng kể so với Python và thậm chí còn nhanh hơn cả Objective-C. Nhưng mặc dù vậy, ngôn ngữ này hỗ trợ một cái gọi là "playgrounds" bên trong môi trường phát triển Xcode, hiển thị kết quả Swift code trong thời gian thực, giống như một ngôn ngữ kịch bản:

Ví dụ một nhà phát triển muốn tạo ra một trò game về một quả bóng di chuyển lên xuống theo một đường biến đổi đều. Để làm điều đó, anh ta sử dụng một hàm toán học đơn giản -- hàm sin, bạn có thể nhớ lại một số kiến thức lượng giác của mình. Hàm sin mang lại cho bạn một đường cung đồ thị biến thiên trên và dưới trục hoành, đồ thị này là hoàn hảo cho một đường đi của quả bóng.

Trong Swift, nhà phát triển đó có khả năng gán giá trị của hàm sin tới đường đi của quả bóng thật dễ dàng, và sau đó xem giá trị thay đổi ra sao theo quá trình thực thi của ứng dụng đó trong một biểu đồ đơn giản. Điều này vô cùng dễ dàng để hình dung quả bóng đó sẽ di chuyển như thế nào, và nếu thấy không thích hợp thì bạn có thể thay đổi ngay lập tức. Theo cách truyền thống, nhà phát triển sẽ phải chạy đoạn code qua một trình biên dịch và sau đó thực thi nó và hy vọng rằng sẽ cho kết quả tốt nhất. Quá trình đó phụ thuộc vào kích thước của ứng dụng, có thể mất từ một vài giây cho đến một vài phút hoặc nhiều hơn.

Những lợi ích trước mắt

Việc có khả năng nhanh chóng và dễ dàng kiểm thử một ứng dụng ngay khi bạn viết ra nó có tiềm năng cho phép các lập trình viên tạo ra nhiều ứng dụng phức tạp nhanh hơn. Quá trình biên dịch và kiểm thử có thể trở nên cực kỳ cồng kềnh trên một ứng dụng lớn. Nếu Swift tạo ra một tác động lớn ở đây, sẽ cho phép các nhà phát triển phát hành các ứng dụng đã kiểm thử kỹ lưỡng một cách nhanh chóng hơn.

Ngoài ra, Swift là một ngôn ngữ rất ngắn gọn. Nó giống như Python, bạn không cần phải viết nhiều code để hoàn thành công việc. Điều này cũng giúp làm tăng tốc độ phát triển sản phẩm.

Cuối cùng, nếu Swift chứng tỏ rằng nó tạo ra các ứng dụng thực thi nhanh hơn so với viết bằng Objective-C, chúng ta có thể nhìn thấy nhiều hiệu ứng đồ họa ấn tượng hơn trong game (cùng với sự giúp đỡ của interface Metal mới của Apple) và đáp ứng nhiều hơn từ những ứng dụng khác, mà không cần phải mua một chiếc điện thoại mới.

Những mối quan tâm trước mắt

Nhưng không phải tất cả đều là hoa hồng, và có những mối bận tâm lớn ngay trước mắt -- những ý kiến này tổng hợp từ một số nhà phát triển mà tôi đã nói chuyện cùng -- đó là yêu cầu phải học lại toàn bộ một ngôn ngữ hoàn toàn mới. Các lập trình viên nói chung thích làm chủ những thứ mới nhất và tuyệt vời nhất. Nhưng toàn bộ ngành công nghiệp này phải thay đổi để dạy người ta làm thế nào để viết các ứng dụng iPhone. (Vâng, bạn có thể tiếp tục tạo ra các ứng dụng bằng Objective-C, nhưng sẽ không còn ai muốn nữa.) 

Một mối bận tâm khác, nhưng cũng không đáng lo lắm, đó là điều này đã làm hạ thấp rào cản để người ta có thể tiến vào lĩnh vực phát triển phần mềm vì ngôn ngữ Swift dễ học và dễ sử dụng hơn, kết quả là sẽ có nhiều lập trình viên tân binh tung ra các ứng dụng có chất lượng không được tốt. Điều đó thực sự có thể xảy ra, nhưng điều tương tự có thể cũng đã được áp dụng tới bất kỳ sự cải tiến nào trong phát triển phần mềm từ khi ngôn ngữ lập trình đầu tiên xuất hiện vào những năm '40s. Chắc chắn là một số người ở đâu đó vẫn nghĩ rằng những người không làm việc trên những thẻ đục lỗ là mấy tay nghiệp dư.

Chuyển sang Swift 2, và Mã Nguồn Mở

Tại WWDC '15, Apple công bố Swift 2. Một số cập nhật bao gồm, việc debugging tốt hơn, mutability checking và hỗ trợ comment với cú pháp Markdown. Đó là những tính năng rất hay, nhưng lớn hơn cả là sự hỗ trợ cho những nền tảng khác. Swift 2 giờ đây sẽ có sẵn cho Linux, mở ra cánh cửa cho việc phát triển các ứng dụng trên những nền tảng không phải của Apple.

Tuy nhiên, tin tức lớn nhất là họ làm cho toàn bộ nền tảng này trở thành Mã Nguồn Mở. Điều đó nghĩa là tất cả các nhà phát triển sẽ có khả năng nhìn vào mã nguồn thực tế của chính Swift. Các lập trình viên sẽ có khả năng sử dụng thông tin này để phát triển các công cụ của riêng họ, và có khả năng là cả những trình biên dịch của họ nữa. Điều này có nghĩa là chúng ta có khả năng nhìn thấy các ứng dụng Swift thực sự chạy trên các nền tảng không phải của Apple.

Điều đó có vẻ hơi khó đối với tôi, nhưng với phiên bản mới này của Swift và các tính năng tốt hơn của nó, thì chúng ta sẽ nhìn thấy nhiều sức mạnh trong tay các nhà phát triển, nghĩa là sẽ có nhiều ứng dụng tốt hơn trong tương lai.

'Hello, world'

Ngôn ngữ Swift 2 là ngôn ngữ lập trình của tương lai

Swift ra đời tính đến nay đã hơn một năm và các nhà phát triển vẫn đang ở giai đoạn đầu trên nền tảng này. Với Swift 2 đang hiện diện ở phía chân trời, ngôn ngữ này thậm chí sẽ có nhiều sức mạnh hơn, và quan trọng hơn là nó sẽ có sẵn cho nhiều nhà phát triển trên nhiều nền tảng khác nhau. Nhiều sức mạnh hơn cho nhiều nhà phát triển hơn nghĩa là sẽ có nhiều ứng dụng, và các ứng dụng có chất lượng tốt hơn, đó là tin tức tốt lành cho tất cả chúng ta.