Tìm kiếm ngôn ngữ fullstack hoàn hảo

2581

Thời gian đã trôi qua được gần 1 năm kể từ bài viết gần đây nhất của tôi. Trong thời gian này đã có nhiều thứ thay đổi. Tôi trở thành một lập trình viên chuyên nghiệp tại một công ty lớn, không còn phải làm việc một mình đơn độc nữa. Tôi nhận ra backend, frontend và mobile code đang dần kết hợp và cùng nhau đứng dưới một cái tên khác là fullstack developer.

Không có gì bất ngờ khi ngôn ngữ tôi sử dụng nhiều nhất là JavaScript.

Vốn không hề khoái gì nó khi mới vào học, thậm chí thì tôi vẫn chẳng thể thực sự ưa được ngôn ngữ này. Tuy vậy, tôi đã trở nên thành thạo với nó và học được nhiều điều về Node, Express, Angular, React, Appcelerator và React Native.
Không chỉ vậy, tôi còn sử dụng JavaScript trên Salesforce Commerce Cloud Project và Endless Aisle Project (không phải phần mềm nguồn mở) cho một số khách hàng e-commerce.

Điều duy nhất mà tôi thật sự biết ơn ngôn ngữ này là nó đã cho sự linh hoạt để di chuyển nhanh giữa các dự án và cũng như hiệu suất được cải thiện với hiệu quả rõ rệt.

Do đó, tôi cũng không mơ mộng học một ngôn ngữ cho từng lĩnh vực riêng, thay vào đó, tôi tìm kiếm một ngôn ngữ toàn năng có thể áp dụng cho nhiều lĩnh vực khác nhau.

Mặt khác, tôi cũng không thích những hệ sinh thái lớn vì rất lộn xộn và thường xuyên bị hỏng cũng như cực kì khó khăn trong việc bảo đảm tính nhất quán, đặc biệt là với các project nhóm, do đó, tất cả các điểm mạnh của JavaScript thường lại trở thành điểm yếu tồi tệ nhất.

Tuy vậy, chính sự mạnh mẽ của cộng đồng JavaScript đã tạo ra sự phát triển liên tục mang lại sức sống cho nhiều dự án và rõ ràng là nó hiện tại vẫn rất cần thiết cho phát triển frontend web.

Năm ngoái tôi đã thử functional programming (với Elixir) và kết quả khá hiệu quả với code có chất lượng rất tốt. Nhưng thật không may là bạn lại không thể viết ứng dụng di động với Elixir.

Do đó mà tôi đã thử Clojure nhưng lại không thích cú pháp của nó.

Trong khoảng thời gian này, tôi đã đọc và rất thích “Domain Modelling Made Functional” của Scott Wlaschin. Vì vậy, tôi liền thử học  F # và nó thực sự gần với những gì mà bản thân tôi luôn mong muốn. Thế nhưng, F# vẫn còn chậm trong việc biên dịch cũng như quá trình kết hợp tất cả mọi thứ lại không phải lúc nào cũng đơn giản.

Gần đây nhất, chúng tôi quyết định sử dụng React Native trong dự án của mình. React không chỉ được sinh ra dựa trên hình mẫu của javascript mà người sáng tạo nó, @jordwalke, cũng là cha đẻ của ReasonML, một cú pháp mới cho ngôn ngữ OCaml, vô cùng dễ học với những người đã có kinh nghiệm với Javascript.

Không dừng lại đó, nó còn có thể biên dịch và sử dụng hệ sinh thái của Javascript (với Bucklescript rất hiệu quả) hoặc trong Native Code ( để phát triển backend code nhanh chóng).

Vì vậy, các javascript được tạo sẽ trông không khác gì so được viết bởi chính tay người lập trình, ví dụ như hàm giai thừa sau trong Reason:

Sẽ trở thành như thế này, sau khi được biên soạn bởi Bucklescript:

Điều này cho phép bất kỳ công ty nào dần dần làm quen với ReasonML, cũng như đạt được hiệu quả và những lợi thế có được từ nó như safe type inference, nhờ đó bạn sẽ hiếm khi phải chú thích type, nhưng mọi thứ đều vẫn được kiểm tra cho bạn.

Bạn có thể sử dụng Domain Model như được mô tả trong cuốn Scott Wlaschin, để ít phải viết test hơn và có được code vừa an toàn mà chuyên nghiệp.

Sau đây là những nguồn mà tôi sẽ học và tìm hiểu vào năm 2019 để áp dụng vào trong công việc khi có thể cũng như là cho các dự án phụ của mình.

Exploring ReasonML and functional programming bởi Dr. Axel Rauschmayer

Web Development with ReasonML bởi J. David Eisenberg

Get Started with Reason bởi Nik Graf

Reason bootcamp bởi Vladimir Novick


Năm nay tôi cũng đã học một ngôn ngữ khác, Dart, mà tôi nghĩ sẽ rất mạnh mẽ những năm tới, đặc biệt là mảng backend.

Tuy vậy, mọi người dường như vẫn chưa thật sự chú ý tới nó bởi vì sự hiện diện của Flutter.

Xin đừng hiểu sai ý tôi: Flutter thật sự rất ngoạn mục! Nếu tôi chỉ tập trung vào phát triển ứng dụng di động hoặc frontend thì nó chắc chắn sẽ là lựa chọn đầu tiên.

Techtalk via hackernoon
CHIA SẺ