Khoa hoc học lập trình embedded linux

Ngày nay chúng ta có nhiều ngôn ngữ lập trình tiên tiến như Java, C#, Python, Javascript, Go,v.v. để phát triển ứng dụng và có vẻ điên rồ nếu ai đó muốn phát triển ứng dụng Web hoặc dịch vụ phụ trợ bằng ngôn ngữ C/C++ thuần túy. Bởi vì các lĩnh vực ứng dụng đó đã được tiếp quản bởi các ngôn ngữ lập trình tiên tiến hơn như:

  • Web Front-End Development: Javascript/Typescript với các frontend frameworks như: Angular, React và Vue.
  • Web Back-End Service Development: Javascript [Node], Python [Flask, Django], Java và PHP là những công nghệ phổ biến được sử dụng.
  • Desktop Application Development: QT [PyQT, C++], Electron [Javascript], WPF [C#].
  • Mobile Application Development: iOS [Objective-C, Swift], Android [Java].
  • Distributed Systems, Big Data, Cloud Computing: Java, Go, Groovy, Scala.
  • Data Science, AI [Artificial Intelligence], ML [Machine Learning]: Python.

Có vẻ như C/C++ hiếm khi được sử dụng trong các lĩnh vực phát triển ứng dụng hiện đại này.
Vậy tại sao chúng ta vẫn nên học C/C++ ngay hôm nay? 

1.  Thành thạo các ngôn ngữ lập trình nâng cao khác nhanh hơn

  • Hầu hết tất cả các ngôn ngữ lập trình hiện đại khác và các thư viện phổ biến đều được xây dựng bằng C/C++. 
  • Dưới đây là một số ví dụ điển hình:
  • Java: Core của Java Virtual Machine được thực hiện bằng C++.
  • Python: Trình thông dịch Python được triển khai bằng C.
  • Javascript: Javascript Engine V8 phổ biến nhất được triển khai bằng C++.
  • Numpy: Một trong những thư viện khoa học phổ biến nhất trong Python và nó được sử dụng rộng rãi trong AI và Machine Learning [ML], nhưng mô-đun cốt lõi của nó được thực hiện bằng C/C++.
  • Điều kiện tiên quyết cho tất cả những điều trên là bạn phải biết C/C++ thật tốt.

2.  Mang lại hiệu suất cao

  • Nếu bạn biết C/C++ đủ tốt, thì nó sẽ hỗ trợ bạn đạt được hiệu suất tốt hơn vì bạn biết cách các ngôn ngữ lập trình nâng cao này chạy ở mức thấp nhất của nó. 
  • Bạn sẽ có thể phát hiện ra vấn đề nhanh hơn, để có những phương án tối ưu hơn.

3.  Hiểu rõ các lý thuyết máy tính cơ bản

  • Mạng máy tính, hệ điều hành, kiến ​​trúc máy tính và lý thuyết trình biên dịch là 04 lý thuyết máy tính cơ bản quan trọng nhất và hầu như tất cả các kỹ thuật mới đều được xây dựng dựa trên 04 lý thuyết này.
  • Nếu bạn hiểu rõ về mạng máy tính, bạn có thể xây dựng giao thức đáng tin cậy của riêng mình với các sơ đồ truyền gói tin đáng tin cậy và hiệu quả hơn. Sau đó, bạn cần tích hợp nó vào SDK của mạng và bạn có thể cần biết cách các giao thức mạng được triển khai trong Hệ điều hành. 
  • Việc triển khai của bạn sẽ hiệu quả vì vậy bạn biết rõ về kiến ​​trúc máy tính như sử dụng bộ đệm CPU, bộ nhớ và bộ điều hợp mạng một cách hiệu quả. 
  • Cuối cùng, nếu bạn muốn cung cấp giao diện API cho các ngôn ngữ nâng cao khác, như Python, Javascript, v.v., bạn cần biết cách thức hoạt động của ràng buộc ngôn ngữ và các lý thuyết trình biên dịch giúp thực hiện điều đó.
  • Quan trọng nhất, tất cả các kỹ thuật chính này đều dựa trên nền tảng lập trình C/C++.

4.  C/C++ tạo sức mạnh cho thế giới

  • Lập trình C/C++ có ở khắp mọi nơi. 
  • Đặc biệt, chúng cung cấp nhiều công nghệ hơn những gì chúng ta công nhận.
  • Hầu hết các nhân của hệ điều hành được viết bằng C, bao gồm nhưng không giới hạn ở Windows, Linux, Mac, iOS, Android, v.v.
  • Các trình duyệt hiện đại ngày nay cũng được viết bằng C/C++. như Chrome, Firefox, v.v.
  • Công cụ trò chơi hiện đại được viết bằng C/C++, như Unity3D, Unreal Engine, Cocos2d-x, v.v.
  • Như đã đề cập ở trên, các trình biên dịch và thông dịch ngôn ngữ lập trình cũng được thực hiện bằng C/C++.
  • Theo Chỉ số TIOBE vào tháng 3 năm 2018, C/C++ vẫn là ngôn ngữ phổ biến nhất. 
  • Vì vậy, đừng ngần ngại tiếp tục học 02 ngôn ngữ vẫn đang phát triển mạnh mẽ trên thế giới này.

5.  Lập trình C/C++ là tiền đề tốt nhất để tiếp cận các ngôn ngữ lập trình khác

  • Việc bạn đã có những kiến thức chuyên môn tốt về c/c++ nó sẽ giúp bạn tiếp cận rất nhanh với các ngôn ngữ lập trình mới hiện nay. 
  • Điều này đã được chứng minh qua rất nhiều thế hệ lập trình viên ở việt nam cũng như thế giới.

FPT Software là một trong những công ty hàng đầu trong lĩnh vực công nghệ thông tin, đặc biệt là trong lĩnh vực lập trình nhúng. Năm 2017 dự kiến FSOFT cần khoảng 500 nhân lực trong lĩnh vực này. Phần mềm cho hệ thống nhúng được gọi là phần mềm nhúng [embedded software] hay firmware. Đó là phần mềm do nhà sản xuất thiết bị cài sẵn vào sản phẩm và chúng được sử dụng ngay cùng với đồ điện tử đó mà không cần có sự cài đặt của người sử dụng

Học embedded không khó, cái khó là nó yêu cầu nhiều kiến thức ban đầu để có thể bắt đầu làm việc. Đạt làm Embedded Linux nên chỉ có thể đưa ra một số tài liệu có thể tự học Embedded Linux như sau.

Để làm Embedded Linux thì bạn cần phải hiểu về Linux, chọn một distro linux nào đấy mà bạn thấy thích rồi dùng thử. Đạt có viết một trả lời về việc cài đặt Linux cho người lần đầu tiên mới sử dụng.

Để tăng tốc độ học Linux và cũng là một yêu cầu cơ bản để trở thành một Embedded Linux Developer bạn phải biết sử dụng command line và viết Shell Script. Quyển The Linux Command Line hướng dẫn bạn rất chi tiết và cơ bản về cách sử dụng Linux Command Linux, chính xác là trên Ubuntu.

Để hình dung công việc của một Embedded Linux Programmer phải làm hàng ngày bạn nên đọc Embedded Linux Primer: A Practical Real-World Approach [2nd Edition]. Quyển này cho bạn khái niệm cơ bản về thế giới Embedded Linux bao gồm Linux cơ bản, cách hệ thống boot, các script được gọi, cách load firmware, cách debug và một số vấn đề chi tiết nho nhỏ khác.

Bạn cần phải biết cách build một hệ thống nhúng, cách tốt nhất là sở hữu một cái board và thực hành. Mình may mắn được học Embedded thông qua công việc hàng ngày nên không phải mua board về thực tập. Để tự học thì bạn có thể mua BeagleBone và thực thành với Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux

Sau khi build được hệ thống, bạn phải viết chương trình cho hệ thống nhúng. Tùy vào mức độ công việc mà bạn cần những kỹ năng khác nhau. Nhưng về cơ bản, bạn cần phải biết C. Nếu bạn chưa biết gì về C thì nên đọc C Primer Plus [6th Edition] [Developer’s Library], nếu bạn đã có cơ bản về lập trình, đọc thêm quyển The C Programming Language

Để lập trình trên Linux, đặt biệt là Embedded Linux có bao gồm Device Driver, bạn phải hiểu cách Kernel hoạt động. Linux Kernel Development [3rd Edition] sẽ cho bạn kiến thức về Kernel, bên cạnh đó một số quyển sách sau sẽ bổ sung thêm kiến thức cho bạn

  • Linux System Programming: Talking Directly to the Kernel and C Library
  • Linux Device Drivers

Hoặc học khóa học CS6210: Advanced Operating Systems

Học Embedded Linux không khó, nó chỉ khó ban đầu

Học Android sẽ dễ hơn ở bước đầu, bạn không cần nhiều kiến thức về Android vẫn có thể viết ứng dụng đầu tiên, sau đó độ khó sẽ tăng dần. Để master, bạn phải bỏ ra rất nhiều công sức.

Học Embedded Linux sẽ khó hơn, vì bạn cần phải hiểu rất nhiều thứ mới có thể viết được “hello world”. Có thể thấy bước đầu sẽ khó, nhưng về sau sẽ dễ hơn.

Chủ Đề