Vài giới thiệu về Scala cho lập trình viên PHP
Cùng với xu hướng công nghệ của công ty trong thời gian tới, tôi có tìm hiểu thêm về Scala và chia sẻ một số so sánh từ góc độ là một lập trình viên PHP.
1. Giới thiệu
PHP :với tên gọi ban đầu “Personal Home Page” do Rasmus Lerdorf tạo ra năm 1995, như một tập đơn giản của perl cho server side script, đến năm 1997 với sự hợp tác của Andi, Rasmus và Zeev, phiên bản PHP 3.0 ra đời và đổi tên thành “Hypertext Preprocessor” đã nhận được đón nhận nhiệt tình của cộng đồng nhà phát triển trên thế giới.
PHP liên tục được cải tiến với Zend engine trong PHP 4 công bố 5/2000; Zend Engine 2.0 với hỗ trợ nhiều hơn cho OOP, xml.. công bố 7/2004. PHP phát triển mạnh mẽ, theo thống kê của Netcraft, PHP có 244 triệu sites, 2.1 triệu IP tại tháng giêng 2013 và là ngôn ngữ lập trình máy chủ phổ biến nhất thế giới. Cộng đồng PHP cung cấp rất nhiều mã nguồn mở nổi tiếng với: WordPress, Joomla, Drupal, Zencart, Magento..
Scala: tên gọi là viết tắt của Scalable language. tạo bởi Martin Odersky – người tham gia xây dựng trình biên dịch javac của Sun, với phiên bản đầu tiên 2003. Như tác giả của nó giải thích “why scala”:
“The central drive behind Scala is to make life easier and more productive for the developer — and that includes me. Scala does this with three principal techniques: It cuts down on boilerplate, so programmers can concentrate on the logic of their problems. It adds expressiveness, by tightly fusing object-oriented and functional programming concepts in one language. And it protects existing investments by running on the Java Virtual Machine and interoperating seamlessly with Java.”. Scala ngày càng chiếm được nhiều sự quan tâm của cộng đồng công nghệ. Hiện một số ông lớn công nghệ đã chuyển nền tảng sang Scala: Twitter, LinkedIn, Foursquare, Tumblr, Klout.
Như thế PHP được phát triển cho việc phát triển tiện lợi và dễ dàng các server side script nên nó rất dễ học điều này nhanh chóng tạo ra một cộng đồng sử dụng rộng lớn. Điều này là điều mà ngôn ngữ rất thịnh thời đó là Java đã không làm được. Điều này là một ưu điểm rất lớn của PHP, là cơ sở cho sự bùng nổ của các mã nguồn mở PHP. Nhưng cũng chính vì là một ngôn ngữ dễ dãi, nên ngôn ngữ cũng tạo ra rất nhiều lập trình viên “amateur” vốn chỉ quan tâm đến viết code để chạy được.
Scala với cơ sở là Java, lại là một ngôn ngữ chặt chẽ, “professional” nên nó dễ tiếp cận hơn nếu bạn có nền tảng Java vững chắc, và tôi nghĩ là khó học hơn cho lập trình viên PHP. Với việc ra đời sau, nó tiếp thu nhiều ý tưởng thiết kế tốt của Java, Ruby, C#, smalltalk, Algo..
2. Một số nét nổi bật
– Scala là ngôn ngữ “general purpose” nền Java, nghĩa là nó thể dùng để phát triển ứng desktop, web, mobile( Android) , cloud computing. Còn Php dù cũng được coi là “general purpose” nhưng hướng đến là server side script cho phát triển các web service( web development). Nên ngữ cảnh có thể sử dụng của PHP là hẹp hơn.
– Scala hoàn toàn tương thích với Java, nghĩa là nó có thể sử dụng lại các thư viện sẵn có của các ngôn ngữ ngày, nó cũng chạy trên JVM.
– Hoàn toàn hướng đối tượng , nhưng được thiết kế có thể dùng tốt cho cả lập trình hướng đối tượng OOP hay lập trình hàm FP. PHP cũng có thể dùng cho cả FP và OOP nhưng sự hỗ trợ OOP là sự cải tiến liên tục qua các phiên bản không nằm trong thiết kế ban đầu.
Ví dụ: 1 + 1 thì cũng có thể viết là (1).+(1) tức toán tử cũng là phương thức, số cũng là đối tượng.
– Khả năng mở rộng rất tốt, ngôn ngữ linh hoạt mạnh mẽ:
Ví dụ: chúng ta có thể định nghĩa toán tử +-*% cho hai đối tượng, có thể viết function trong function, có thể dùng closure, multi thread..
– Như Java, Scala có Multi thread có thể dùng cho lập trình song song, hỗ trợ mạnh mẽ các cấu trúc dữ liệu(vector, collections, set, list, queue..), cái này thì PHP không có. (PHP có thể cài multi process với pcntl_fork)
– Scala hướng đến sự tinh gọn (consise). ngắn hơn là dễ đọc hơn, dễ kiểm soát hơn.
Ví dụ:
def underAgePeopleNames(persons: List[Person]) = {
for (person <- persons; if person.age < 18)
yield person.name
}
tương đương với code sau trong PHP:
function underAgePeopleName($persons){
$names = [];
foreach($persons as $person){
if($person->age < 18){
$names[] = $person->name;
}
}
return $names;
}
3. Kết luận
Với những lợi thế của mình, Scala thực sự là nền tảng đáng được lựa chọn cho mảng ứng dụng doanh nghiệp( enterprise) tiếp nối sự thành công của Java. Tuy nhiên ngôn ngữ này đỏi hỏi lập trình viên (PHP) phải học tập và bổ xung nhiều kiến thức thì mới phát huy được sức mạnh vốn có của nó. Điều đó cũng đáng chứ ạ!
4. Tham khảo
http://vi.wikipedia.org/wiki/PHP