30/09/2018, 21:57
Một số khái niệm về lập trình chưa hiểu mong các bác giúp :(
Hi vọng các bác có thể giúp em, em đã tra google nhưng nó giải thích khá trừu tượng. Mong các bác giải thích 1 cách dễ hiểu nhất có thể, em xin cám ơn
- API là gì ?
- Framework là gì ? Để làm gì ?
- Thư viện là gì ? Để làm gì ?
- Sao lập trình Web có nhiều “đồ chơi thế” (Em không hiểu Node JS, laravel, SQL, Jquery, SQL để làm gì ?)
Mong các bác giúp em, cám ơn ạ
À đúng rồi em đang tự học C# trên mạng, nhưng em muốn có thể dùng C# tương tác với Web (Kiểu lấy dữ liệu từ Web, mở web, đi ra trang này trang kia, … v.v), tương tác với hệ thống File hay làm việc với phần mềm khác thì cần học những kĩ năng gì ạ ?
Bài liên quan
1_ API = Application Programming Interface tạm dịch Giao diện lập trình ứng dụng: một ứng dụng to lớn/ nền tảng nhiều người dùng như hệ điều hành/ hoặc web Facebook, Google muốn có nhiều người tham gia tương tác phát triển thêm thành một hệ sinh thái, sử dụng nền tảng đó làm việc gì đó thì người ta tạo ra API để dân lập trình theo đó mà gắn kết vào cho dễ. Nói cách khác nó là các tập lệnh người ta đã làm sẵn + có tài liệu tham khảo để theo đó lấy ra dùng thay vì ngồi loay hoay.
Khi một ứng dụng nền tảng có cung cấp API thì việc tương tác với nó thuận tiện hơn nhiều so với tự tìm cách lắp vào khi mà nó không có cửa cho lắp.
Hình dung trong thực tế thì API giống ổ cắm điện ở nhà bạn hoặc các chuẩn giao tiếp như USB, cáp điện thoại, tai nghe… nó có một bên lõm và một bên lồi và kích thước có thể gắn vào nhau được.
2_ Framework: hình dung đây là cái tủ vải / nhựa simili được đóng trong hộp giấy hình chữ nhật. Bạn mua tủ đó về, đổ ra thấy một đống gồm vải, cây sắt, cây nhựa,… để dựng thành cái tủ hoàn chỉnh hoặc thành sản phẩm (ghi trên vỏ hộp) mà bạn mong đợi. Hoặc một bộ đồ chơi Lego có thể xem là một framework.
3_ Thư viện là những mảnh ván / khúc gỗ được người ta cưa sẵn, đục lỗ sẵn hoặc có sẵn móc/ chốt,… để bạn có thể dùng những cái này lắp lại thành sản phẩm theo ý bạn. Nếu không thích mảnh ván/ khúc gỗ thì đó là một mớ gồm dao, kéo, hồ, giấy, tre,… giờ thì bạn làm cái lồng đèn ông sao chơi Trung Thu.
Vậy Framework và thư viện thì giống và khác nhau thế nào? Nói chung thì framework là các thư viện đã được gắn kết với nhau theo một bài bản nào đó rồi, còn thư viện một cách chung chung có thể là một tập lộn xộn đủ thứ món có bà con với nhau hoặc không liên quan gì nhau. Có nhiều lúc thư viện và framework đích thị một thứ, nhưng người ta thích gọi theo chủ quan của họ.
4_ Lập trình web có nhiều đồ chơi bởi vì web không phải là công nghệ độc quyền mà ngay từ thuở ban đầu (cho đến ngày nay) nó là một nền tảng được mở toang ra cho nhiều người dùng và có thể đệ trình cái đề xuất hay ho để được bổ sung vào. Tổ chức W3C duy trì các tiêu chuẩn về web và càng ngày qua thời gian thì người ta đẻ ra nhiều thứ để web có thể làm được nhiều chuyện/ việc hơn, bởi vì thời đại của web mà web không có chức năng gì sẽ là điều khôi hài.
Túm lại, mấy cái đó trên Wikipedia có viết rõ, giải thích chi tiết sao không đọc, đọc xong không hiểu chi tiết nào thì hỏi ở đây chứ hỏi kiểu này rất khó để trả lời thoả mãn.
Nói 1 cách dễ hiểu theo mình là:
1. API: (application programming interface) Là code viết 1 chỗ (1 dự án, 1 plugin hay 1 trang web…) xong từ chỗ khác gọi tới nó, cho nó input (hay ko cần input) để nó trả về 1 kết quả xong mình lấy kết quả đó dùng.
2. Framework: Tập hợp các library (thư viện) cho 1 mục đích cụ thể ví dụ như 1 web framework là 1 tập hợp các library để thuận tiện cho việc viết web.
3. Thư viện: (library) Là các hàm (function) hay lớp (class) được viết sẵn để tái sử dụng tại nhiều nơi.
4. Viết web cần ít nhất 3 mảng:
Front-End: Chạy ở client - trình duyệt. Ví dụ: HTML, CSS, Javascript. Để tiện lợi hơn trong việc làm front-end thì cộng đồng có làm ra các framework của front-end như Bootstrap, Jquery, Angular…
Back-End: Chạy trên server để tương tác với cơ sở dữ liệu hay xử lý I/O… Ví dụ: PHP, NodeJS, Python, Ruby và các framework tương tứng được sinh ra cho từng ngôn ngữ lập trình để thuận tiện khi làm việc: Laravel, Yii, Symfony cho PHP. ExpressJs, SailJs… cho NodeJS. Django, Flask… cho Python. Rails cho Ruby.
Database: Cơ sở dữ liệu để chứa dữ liệu phổ biến cho web là bọn MySql, PostgreSql, Oracle, MSSQL, Mongodb. Các cơ sở dữ liệu này sẽ có các API hay driver đại loại là code cho các ngôn ngữ lập trình tương ứng tương tác với nó (kết nối cơ sở dữ liệu, query…)
Mình không dùng C# nên ko đưa ra lời khuyên cho bạn ở câu hỏi cuối cùng được.
Câu trả lời tuyệt vời.