Xu hướng công nghệ lập trình web và mobile 2016
Nội dung chính
Xu hướng công nghệ lập trình
Xu hướng lập trình thì thường xoay quanh ngôn ngữ lập trình, tuy nhiên trong bài viết này mình tập trung nói về các công nghệ giúp cho việc lập trình dễ dàng hơn như cải thiện tốc độ, chất lượng code cũng như dễ dàng cộng tác, làm việc nhóm. Những vấn đề về xu hướng công nghệ lập trình sẽ giúp bạn nâng cao khả năng lập trình cũng như chất lượng dự án.
Môi trường phát triển
- [Môi trường chạy code, build] Vagrant và Docker: mặc dù sự phát triển rất mạnh của docker trong năm 2015, nhưng với sự khác biệt giữa Docker và Vagrant thì mỗi môi trường đều sử dụng cho từng mục đích phù hợp. Một số bạn vẫn còn sử dụng máy cá nhân để cài đặt môi trường phát triển vẫn ổn, tuy nhiên sẽ rất khó cộng tác với các thành viên khác trong nhóm vì không thông nhất được môi trường phát triển. Nếu bạn vẫn chưa sử dụng 1 trong 2 công nghệ này, thì hãy tìm hiểu và áp dụng càng sớm càng tốt nhé. Mình có xu hướng ủng hộ Docker hơn vì tính đa năng và dễ làm việc cộng tác.
- [Task Runner/Automation] Grunt và Gulp: Cả 2 công cụ này với hàng ngàn plugin hỗ trợ giúp cho việc phát triển lập trình dễ dàng nhanh chóng khi tự động debug, test, build. Mình thiên về Gulp vì việc cấu hình tương tự như ngôn ngữ lập trình chứ không phải Over Configure phức tạp của Grunt.
- [IDE] Atom, Sublime Text: trước đây mình sử dụng khá nhiều IDE cho việc phát triển, lập trình web như Aptana Studio, Zend Studio, PHP Storm, Text Wrangler nhưng đều không đáp ứng nhu cầu công việc. Hoặc là nặng nề, chậm chạp hoặc thiếu plugin cần thiết, nhưng với Sublime Text thì mình hoàn toàn làm chủ được việc lập trình, Atom thì có xu hướng phát triển mạnh trong năm 2015 vừa rồi tuy khá mạnh mẽ nhưng do còn mới nên lượng plugin không phong phú bằng. Điểm mạnh của Atom là open source/free, nên mình dự đoán khi cộng đồng phát triển nhiều plugin thì sẽ có nhiều lập trình viên sử dụng hơn trong năm 2016 này.
Frontend Javascript Framework
- Angular Js/2[Beta]: Với lượng fan cực khủng từ 1.x, nên cùng những tính năng nổi trội từ phiên bản 2: nhanh và uyển chuyển, nâng cấp được từ 1.x, có thể render từ server, hỗ trợ TypeScript (chính) & Dart sẽ giúp cho AngularJs/2 tiếp tục củng cố thị phần của mình.
- React Js: Được sử dụng cho các sản phẩm chính thức của các tên tuổi lớn Facebook, Instagram, Mapbox, Box, Paypal, Reddit… [Xem thêm tại đây], phải nói rằng sự phát triển của ReactJs nhanh hơn rất nhiều so với AngularJs thời đầu [Mặc dù chỉ là phần V trong MVC]. Theo cá nhân mình, ReactJs sẽ tiếp tục phát triển mạnh mẽ trong các năm tiếp theo. Đọc thêm bài React là quyết định của doanh nghiệp, không hẳn là sự lựa chọn do công nghệ.
- Polymer Project: không nổi tiếng như 2 anh chàng trên, nhưng với xu hướng lập trình web component, Polymer sẽ dần có chỗ đứng vì bản chất là component sẽ giúp cho nó hoạt động 1 cách độc lập không phụ thuộc các frontend framework khác và đặc biệt là hỗ trợ hoàn toàn Material Design
Ngôn ngữ lập trình
- Javascript: với hi vọng là ngôn ngữ của tất cả, điều này chắc chắn gây tranh cãi :), nhưng… Tuy nhiên với sự ra đời Ecma Script 6(ES6) trong năm vừa rồi, đã đưa javascript lên đẳng cấp mới với những tính năng mới lạ như Arrow, Class, xử lý chuỗi dễ dàng, giá trị tham số (mặc định, không xác định, thông qua phần từ của mảng), Promise, Map, Module… . Những đặc tính của Javascript được sử dụng cho cả browser và server với Nodejs/V8 giúp cho việc sử dụng lại code chung logic cho cả browser và server, giúp cho việc phát triển ứng dụng web chạy nhanh, thời gian phát triển, lập trình nhanh. Với sự hỗ trợ từ V8/V8Js cho PHP, Python… việc thực thi javascript từ server không còn là mảnh đất riêng của Nodejs nữa!
- PHP 7: được chờ đợi nhất trong năm 2015 của dân lập trình PHP, việc ra đời chính thức phiên bản 7 đã giúp ngôn ngữ PHP nâng cao vị thế với các ngôn ngữ phát triển web như Rails, Python, Java, Nodejs, .Net, … . Với việc thay đổi cấu trúc khai báo hàm (Scalar Type Hints & Return Types) giúp cho PHP thoát kiếp “ngôn ngữ không chặt chẽ”, cùng với sự cải thiện tốc độ gấp đôi so với PHP 5.x đã khiến mình không còn khái niệm nghiên cứu thêm ngôn ngữ khác nhanh hơn nữa. Tuy nhiên một số PHP Framework có thể mất thêm 1 thời gian ngắn nữa để hoàn toàn tương thích với PHP7. Đối với các phiên bản PHP Framework còn hỗ trợ PHP 5.3 thì khả năng sẽ không chạy tốt trên PHP 7, vì PHP 7 đã loại bỏ các hàm deprecated từ PHP 5.3.
- Swift 3: Sự phát triển ngôn ngữ lập trình iOS mới này sẽ bước lên phiên bản 3 dự kiến vào mùa thu 2016. Với Swift, rõ ràng việc phát triển các sản phẩm cho iOS tiện lợi và nhanh chóng hơn rất nhiều. Mặc dù Objective-C chưa có thông báo hồi kết, nhưng với những đặc tính nổi trội của Swift và cũng như động thái phát triển lên phiên bản 3 đã cho thấy Apple đang tập trung vào Swift rất nhiều. Nếu bạn vẫn đang còn sử dụng Objective-C để phát triển cho iOS, hãy dành thời gian nghiên cứu xu hướng Swift!
- Sự phát triển ổn định của Python 3, Rails 4, Java thì không có gì đáng chờ đợi trong năm 2016 cả!
React Js/React Native [Mobile/Web/Desktop and …smartWatch or smartTv !!!]
Mình chia React Native ra thành một mục riêng vì đây không phải là một ngôn ngữ lập trình mà là một nền tảng để phát triển sản phẩm di động “native”, web, desktop và… bằng Javascript. Trước đây, để phát triển sản phẩm mobile [iOS/Android] “hybrid” bằng javascript có thể dùng Phonegap/Cordova với một số framework nổi tiếng như Ionic Framework hay Onsen UI, hoặc jQuery Mobile. Tuy nhiên, điểm yếu của Hybrid là tốc độ chậm vì phải thông qua Phonegap/Cordova và không hỗ trợ một vài tính năng native (Ví dụ: với Phonegap/Cordova phải mở Apple Map trong iOS, với React Native thì có thể chạy Apple Map ngay trong chính ứng dụng).
Tất nhiên, React Js và React Native là khác nhau, nhưng sự kết hợp của 2 framework này giúp chúng ta có thể build ứng dụng cho Web, Desktop [Node Webkit], Mobile Native chỉ bằng Javascript, với việc dùng lại code tới 80%, đúng như câu “learn once, write anywhere.” (học một lần, viết mọi nơi). Bạn có thể tham khảo dự án này: Calculate for web, mobile, desktop.
Kết luận
Với những xu hướng công nghệ lập trình web trên có thể cho những lập trình fullstack có thể kiếm thêm thu nhập cho những dự án riêng ngoài thời gian làm việc cho công ty. Riêng mình thì đặc biệt quan tâm nhóm javascript với nhóm “React Js/React Native/Nodejs/Node Webkit”. Nhóm này có thể build ra 1 ứng dụng từ A->Z chỉ với Javascript, đúng với chủ trương của full stack: càng đơn giản càng kiếm được nhiều.
Còn bạn có những xu hướng lập trình gì để chờ đợi trong 2016, hãy chia sẽ với mọi người nhé. Fullstack Station sẽ cố gắng cập nhật những công nghệ fullstack cho các bạn nhanh nhất có thể.