Introduction to Functional Reactive Programming

Phải hơn nửa năm rồi tôi không viết blog, chủ đề Functional Reactive Programming mà tôi hứa với các bạn trong bài trước về Declarative Programming vẫn còn bỏ ngỏ. Mặc dù  tôi vẫn học, vẫn tìm hiểu và làm việc với FRP hàng ngày, vẫn gặp những bài toán cũng như cách giải quyết theo hướng Reactive. Nhưng quả thật tôi không muốn viết những cái nhỏ lẻ, viết lại những cái mà bạn có thể dễ dàng tìm thấy trên mạng, nhất là = tiếng Việt. Tôi muốn mình phải thật sự hiểu, phải có cách diễn đạt của riêng mình để giúp các bạn có được tư duy theo cách Reactive, thứ  mà cá nhân tôi phải mất gần 9 tháng tổng hợp, ghép nối lại.

5k iMac Mod_Small

Đó là nguyên nhân sâu xa dẫn đến việc lỡ hẹn với các bạn, còn nguyên nhân trực tiếp thôi thúc tôi triển khai chủ đề này là vừa qua tôi có tham gia Tech Talk #4 chủ  đề dành cho Mobile. Tôi đăng ký làm speaker với chủ đề FRP và được thực hiện việc trình bày trong vỏn vẹn có 5 phút, Q&A trong vòng cũng 5 phút thôi (do nói gần cuối nên phần Q&A của tôi bị cắt còn đúng 1 câu hỏi).

Và bạn biết đấy, kiến thức, kinh nghiệm bạn có được trong 9 tháng dù ít dù nhiều cũng khó lòng mà gói gọn trong vòng 5 phút được. Tôi phải bỏ bớt 1 phần demo, không cho khán giả có thời gian suy nghĩ mà bắn liên thanh, ba hoa về  Reactive, Functional, Stream, Signal... Có thể tôi đã sai khi đăng ký chủ đề mới, khó và có quá nhiều cái để nói. Tôi có thể dùng 1 slide dài hơn, đầy đủ hơn sau đó để mọi người tìm hiểu thêm. Tuy nhiên vụ #đừngimlặng làm tôi suy nghĩ nhiều lắm. Với tinh thần chia sẻ, mong muốn share để được share không cho phép tôi ngồi yên được nữa. Cần phải có 1 bài đầy đủ, chi tiết hơn để chuộc lỗi, phải giữ lời hứa với anh em. Ai thắc mắc động cơ viết bài này là gì thì tôi trả lời luôn là động cơ quyền lực nhé!

Ahihi, deep thế đủ rồi, bắt tay vào chủ đề thôi.

Continue reading “Introduction to Functional Reactive Programming”

THỜI TRANG LẬP TRÌNH – SỰ TRỖI DẬY CỦA DECLARATIVE PROGRAMMING!

Kể từ sau loạt bài về Apple Watch + CI, tôi muốn chuyển sang các chủ đề khác nói về các món ăn chơi nhảy múa mà không phải là về code, công việc. Nhưng nói thật là các món ăn chơi thì nhiều, cũng lắm sự kỳ công đòi hỏi người chơi phải có niềm yêu thích thực sự, thời gian tìm hiểu nhất định. Thêm nữa là khi viết những bài như vậy cần phải có kiến thức rộng, bao quát cũng như khá khó để tạo được cảm hứng cho người đọc. Thế nên thôi, lại quay về với cái máng lợn là: CODE…

Chắc hẳn trong công việc, mọi người đều có những mục tiêu riêng, đích đến nhất định qua các quãng thời gian dài ngắn khác nhau. Là 1 một lập trình viên iOS đơn thuần, mục tiêu trong năm nay của tôi là học 1 ngôn ngữ lập trình mới, vốn đang rất hot trong cộng đồng cũng như nội bộ công ty: Swift của Apple. Nhưng lần mò, vâng vẫn là cái trò lần mò, tôi được biết tới Functional Programming. Nhưng nghe lạ tai quá, tìm hiểu mãi thì mới đi đến ngọn nguồn của vấn đề: Declarative Programming.

1425999742-1425306960-paradigm-cover

Mới đầu đọc thì tôi chỉ biết đến nó như là 1 lĩnh vực nhỏ trong thế giới Computer Science bao la và cao siêu khó lường. Nhưng các kết quả tìm kiếm thường có cụm từ: Declarative Programming vs Imperative Programming. Imperative Programming (IP) thường gắn liền với lập trình hướng đối tượng OOP mà lâu nay tôi và các bạn(xin lỗi nếu có vơ đũa cả nắm) vẫn nghĩ là tối ưu, là phương pháp hay nhất khi phát triển phần mềm. Imperative Programming là cách mà bao lâu nay tôi vẫn lập trình, từ thời học cấp 3, Đại học và cả khi đi làm. Và nó có 1 thế giới đối nghịch Declarative Programming (DP). Vậy là ngoài kia, ngoài cái thế giới mà tôi đang sống có 1 thế giới khác mà bao lâu nay tôi không hề hay biết. Trên đường đi khám phá thế giới mới tôi gặp rất nhiều lời ca ngợi về nó, càng thôi thúc sự tò mò, khát khao khám phá của bản thân.

Continue reading “THỜI TRANG LẬP TRÌNH – SỰ TRỖI DẬY CỦA DECLARATIVE PROGRAMMING!”