it-swarm-vi.com

Lập trình cấp thấp - những gì trong đó cho tôi?

Trong nhiều năm, tôi đã cân nhắc việc đào sâu vào những gì tôi coi là ngôn ngữ "cấp thấp". Đối với tôi điều này có nghĩa là C và hội. Tuy nhiên tôi chưa có thời gian cho việc này, nó cũng không cần thiết.

Bây giờ vì tôi không thấy bất kỳ sự cần thiết nào phát sinh, tôi cảm thấy mình chỉ nên sắp xếp thời gian để học môn học hoặc bỏ kế hoạch mãi mãi.

Vị trí của tôi

Trong 4 năm qua tôi đã tập trung vào "công nghệ web", có thể thay đổi và tôi là nhà phát triển ứng dụng, không có khả năng thay đổi.

Trong phát triển ứng dụng, tôi nghĩ khả năng sử dụng là điều quan trọng nhất. Bạn viết các ứng dụng sẽ được "tiêu thụ" bởi người dùng. Các ứng dụng đó càng có thể sử dụng được, bạn càng tạo ra nhiều giá trị.

Để đạt được khả năng sử dụng tốt, tôi tin rằng những điều sau đây là khả thi

  • Thiết kế tốt: Các tính năng được suy nghĩ kỹ có thể truy cập thông qua giao diện người dùng chu đáo.
  • Correctness: Thiết kế tốt nhất không có giá trị gì, nếu không được thực hiện đúng.
  • Tính linh hoạt: Một ứng dụng A cần liên tục phát triển, để người dùng không cần phải chuyển sang một ứng dụng B khác, có các tính năng mới, mà A có thể thực hiện. Các ứng dụng giải quyết cùng một vấn đề không nên khác nhau về tính năng nhưng về triết lý.
  • Hiệu suất: Hiệu suất đóng góp cho trải nghiệm người dùng tốt. Một ứng dụng lý tưởng luôn đáp ứng và thực hiện các nhiệm vụ của nó một cách hợp lý nhanh chóng (dựa trên tần số của chúng). Giá trị của tối ưu hóa hiệu suất vượt quá điểm mà người dùng có thể nhận thấy là đáng nghi ngờ.

Tôi nghĩ rằng lập trình cấp thấp sẽ không giúp tôi điều đó, ngoại trừ hiệu suất. Nhưng viết toàn bộ ứng dụng bằng ngôn ngữ cấp thấp vì mục đích hiệu suất là tối ưu hóa sớm đối với tôi.

Câu hỏi của tôi

Những gì lập trình cấp thấp có thể dạy tôi, những ngôn ngữ khác sẽ không dạy tôi? Tôi có thiếu một cái gì đó không, hay nó chỉ là một kỹ năng, được sử dụng rất ít để phát triển ứng dụng? Xin hãy hiểu rằng tôi không đặt câu hỏi về giá trị của C và hội. Chỉ là trong cuộc sống hàng ngày của tôi, tôi khá vui khi tất cả những điều phức tạp của thế giới đó được trừu tượng hóa và quản lý cho tôi (chủ yếu là các lớp được viết bằng C/C++ và hội tự). Tôi chỉ không thấy bất kỳ khái niệm nào, có thể là mới đối với tôi, chỉ có chi tiết tôi sẽ phải nhét đầu vào. Vì vậy, những gì trong đó cho tôi?

Kết luận của tôi

Cảm ơn tất cả mọi người cho câu trả lời của họ. Tôi phải nói rằng, không ai thực sự làm tôi ngạc nhiên, nhưng ít nhất bây giờ tôi khá chắc chắn rằng tôi sẽ bỏ lĩnh vực quan tâm này cho đến khi có nhu cầu về nó.
[.__.] Theo hiểu biết của tôi, việc viết hội ngày nay cho các bộ xử lý khi chúng được sử dụng trong các CPU ngày nay không chỉ phức tạp một cách bất thường, mà còn có nguy cơ dẫn đến hiệu năng thời gian chạy kém hơn so với đối tác C. Tối ưu hóa bằng tay gần như không thể do OOE, trong khi bạn không nhận được tất cả các loại tối ưu hóa mà trình biên dịch có thể thực hiện tự động. Ngoài ra, mã này là di động, bởi vì nó sử dụng một tập hợp nhỏ các lệnh có sẵn hoặc được tối ưu hóa, nhưng sau đó nó có thể chỉ hoạt động trên một kiến ​​trúc.
[.__.] Viết C gần như không còn cần thiết nữa, như trong quá khứ. Nếu tôi viết một ứng dụng bằng C, tôi sẽ sử dụng nhiều thư viện và khung đã được kiểm tra và thiết lập, điều đó sẽ giúp tôi thực hiện các thói quen sao chép chuỗi, sắp xếp thuật toán và các loại công cụ khác phục vụ như bài tập ở trường đại học. Mã riêng của tôi sẽ thực thi nhanh hơn với chi phí an toàn loại. Tôi không quan tâm đến việc tái cấu trúc bánh xe trong quá trình phát triển ứng dụng thông thường, cũng không cố gắng gỡ lỗi bằng cách xem xét các bãi rác cốt lõi: D
[.__.] Tôi hiện đang thử nghiệm ngôn ngữ và thông dịch viên, vì vậy nếu có bất cứ điều gì tôi muốn xuất bản, tôi cho rằng tôi sẽ chuyển một khái niệm làm việc sang C, mặc dù C++ cũng có thể thực hiện thủ thuật này.
[.__.] Một lần nữa, cảm ơn mọi người vì câu trả lời và cái nhìn sâu sắc của bạn.

32
back2dos

Lập trình cấp thấp dành cho các trường hợp góc trong đó có một yêu cầu không xuất hiện ngay trên các máy tính để bàn thông thường. Đây có thể là một nút cổ chai tốc độ, hoặc tắc nghẽn bộ nhớ hoặc một cái gì đó hoàn toàn khác, và rất thường xuyên rất thú vị để xem những gì có thể được thực hiện theo những yêu cầu đó.

Hãy nghĩ về nó như Haikus hoặc Limericks, nơi những hạn chế làm cho nó thú vị.

Để cho bạn một ý tưởng về những gì có thể xảy ra trong những điều dường như không thể ngày nay, đây là một trong những vụ hack lớn nhất từ ​​trước đến nay. Cờ vua trong 1 Kb RAM! http://users.ox.ac.uk/~uzdm0006/scans/1kchess/

9
user1249

Tôi chỉ nghĩ về điều này gần đây. Hiện tại tôi đang xem mình là nhà phát triển C # - điều này hoàn toàn tốt cho sự nghiệp của tôi.

Tuy nhiên, thường thì tôi thường bỏ lỡ những thứ thực sự ở cấp độ thấp (về cơ bản là 'làm bẩn tay' bằng cách lắp ráp trình điều khiển hoặc trình điều khiển thiết bị trong C). Tôi chỉ nhớ chương trình. Tôi không hy vọng điều đó sẽ giúp tôi trong sự nghiệp một cách ồ ạt. Nếu trình điều khiển thiết bị hoặc hệ thống nhúng là thứ của bạn, thì nó có thể giúp ích rất nhiều.

Tôi càng lập trình bằng các ngôn ngữ trừu tượng, tôi càng nhớ những gì đã đưa tôi vào máy tính ngay từ đầu: chọc vào máy tính và xem những gì co giật. Trình biên dịch và C rất phù hợp để chọc :)

Bằng cách sử dụng các ngôn ngữ cũ hơn, tôi nghĩ rằng bạn buộc phải tự mình làm mọi thứ. Trong C # tôi có thể làm một cái gì đó như myArray.SortBy(x=>x.Name). Không có cách nào tôi có thể làm điều đó trong C. Tôi chấp nhận rằng ngôn ngữ sẽ phân loại tốt nhất cho tôi. Nếu tôi làm điều đó trong C, tôi có thể quay lại thời của các mô-đun đại học của tôi và sửa đổi các thuật toán tìm kiếm và sắp xếp khác nhau của tôi.

Vì vậy, tôi nghĩ rằng các ngôn ngữ cấp thấp hơn sẽ giúp bạn sửa đổi bất kỳ bit nào bị lãng quên từ lâu đã bị trừu tượng hóa. Nhiều hơn một thách thức cá nhân hơn là một sự nghiệp tiến bộ.

29
Jonathon

Đề nghị của tôi là chơi xung quanh với C như một sự tò mò trí tuệ. Đừng đầu tư nhiều thời gian vì nó không đáng.

Mục tiêu đề xuất:

  • Làm mới bộ nhớ của bạn về cấu trúc dữ liệu và thuật toán cơ bản. [.__.]
    • Nó chỉ là một số điều tốt để biết, như đại số và hình học.
    • Cố gắng làm một số bài tập trong sách giáo khoa đại học hoặc câu đố chương trình trong C.
  • Sự đánh giá tốt hơn về hệ thống phân cấp bộ nhớ (băng thông), tất cả các cách từ bộ đệm CPU đến độ trễ mạng transoceanic. Điều này sẽ giúp các kỹ năng phát triển ứng dụng của bạn ở tất cả các cấp. [.__.]
    • Quan trọng nhất, thật tốt khi tìm hiểu về các kịch bản trong đó a nhỏ sắp xếp lại không rõ ràng của mã cấp cao có thể dẫn đến một kịch tính cải thiện tốc độ. [.__.]
      • Đôi khi lý do chỉ có thể được hiểu trong việc thực hiện cấp thấp trong bối cảnh phân cấp bộ nhớ.
      • Không hiểu nguyên nhân tự nhiên của khả năng này dẫn đến thiếu hiểu biết , sợ hãi , và cuối cùng là từ chối , cho rằng thật sai lầm khi các nhà phát triển cấp cao khai thác loại tối ưu hóa này. Trong thực tế không có gì sai với điều đó.
  • Đánh giá cao tính thẩm mỹ của các hệ thống phần mềm dựa trên thành phần , cho phép các thành phần cấp thấp được phát triển trong C/C++/hội được sử dụng bởi các hệ thống cấp cao. [.__.]
    • Tính thẩm mỹ hoàn toàn giống với khả năng sử dụng phần mềm: [.__.]
      • Thiết kế tốt (mạnh mẽ, dễ sử dụng, chu đáo)
      • Đúng
      • Tính linh hoạt (phần mở rộng và hành vi mới thông qua thành phần của các bộ phận hiện có, mỗi phần có mục đích được xác định rõ ràng)
      • Hiệu suất (không làm phức tạp khả năng sử dụng)
    • Mặc dù bạn có thể không thiết kế các thành phần cấp thấp của riêng mình, nhưng sự hiểu biết của bạn sẽ giúp bạn đánh giá và chọn các thành phần tốt để sử dụng trong các dự án cấp cao của mình.
  • Cuối cùng, đánh giá cao rằng các thành phần cấp thấp hầu như luôn luôn phức tạp hơn trong việc triển khai , khác xa với việc chỉ nhìn vào giao diện. [.__.]
    • Mức độ thấp luôn phức tạp. Một thư viện tốt che giấu sự phức tạp mà không làm giảm sức mạnh của nó.
    • Tìm hiểu cách đọc "ghi chú kỹ thuật" được viết bởi các nhà phát triển thành phần, đó là những gợi ý cho người dùng thành phần cấp cao hơn về cách sử dụng tốt nhất các thành phần.
15
rwong

nếu bạn muốn hiểu cách máy hoạt động và không chỉ máy ảo mà ngôn ngữ cấp cao của bạn phụ thuộc, thì hội sẽ dạy điều này cho bạn

nếu bạn không có lý do để quan tâm - và hầu hết các lập trình viên thực sự không có những ngày này - thì đừng lo lắng về điều đó.

nó sẽ cải thiện nền tảng của bạn, nhưng có lẽ nó sẽ không cải thiện các ứng dụng web của bạn

8
Steven A. Lowe

Mỗi ngôn ngữ lập trình thay đổi một chút về cách bạn nghĩ về lập trình nói chung. Một ví dụ cụ thể mà tôi có thể đưa ra cho bạn là khi tôi bắt đầu học haskell và đột nhiên các bit chức năng của javascript, Ruby và python hoàn toàn có ý nghĩa hơn nhiều. Tôi chưa bao giờ sử dụng gấp trong bất kỳ mã nào của tôi trước nhưng sau haskell tôi thấy khá nhiều ở mọi nơi tôi thấy mảng. Vì vậy, rất có thể nếu bạn học một số C, bạn sẽ nhận thức rõ hơn về các đặc tính hiệu suất tương đối của các cấu trúc khác nhau trong ngôn ngữ yêu thích của bạn. Cách đây ít phút, tôi đã nghe một bài nói về việc viết javascript nhanh chóng và được tối ưu hóa và người nói đã nói "Nếu khó thực hiện bằng C thì nó sẽ rất chậm trong javascript." Ý định của anh ấy là javascript là ngôn ngữ được thông dịch và trình thông dịch được viết bằng C hoặc C++. Điều này diễn ra ngay trên đầu tôi vì tôi có rất ít kinh nghiệm về C và tôi không biết điều gì khó hay dễ trong C.

8
davidk01

Nếu bạn không làm điều đó chỉ để giải trí, bởi vì các chuyên viên máy tính thực sự thích kiểm soát hoàn toàn phần cứng của họ, thì ít nhất bạn có thể cảm nhận rõ hơn về việc một chương trình có thể trở nên nhanh hơn như thế nào khi được viết bằng C thay vì, nói, Java. Bạn cũng có thể học cách thực sự đánh giá cao các tính năng của các ngôn ngữ cấp cao hơn, như bộ sưu tập rác.

7
user281377

Hoan hô cho sự tò mò!

Thật tốt khi có một số khái niệm những gì thực sự đang diễn ra ở mức thấp nhất của một hệ thống phức tạp, ngay cả khi không có nhu cầu logic để biết về nhiệm vụ hàng ngày của một người. Cho đến nay, cách tốt nhất để tìm kiếm mọi thứ ở cấp độ bit là xây dựng CPU của riêng bạn. Bạn phải suy nghĩ về các opcodes cấp ngôn ngữ máy, hiểu tại sao các bộ hướng dẫn trực giao lại tốt như vậy, các biến chứng của việc xử lý ngắt, đánh đổi giữa các mạch phức tạp so với microcode (ví dụ như trong các đơn vị nhân), và rất nhiều niềm vui khác!

Nhưng điều đó, rõ ràng, cần có bí quyết điện tử và tốn thời gian, vì vậy điều tốt nhất tiếp theo là đồ chơi xung quanh với CPU 8 bit kiểu cổ. Các vi điều khiển như 8051 vẫn được sử dụng rộng rãi và có sẵn cho những người có sở thích. Điều đó vẫn cần một số bí quyết trong việc chăn gia súc điện tử và làm cho đèn LED phát sáng khi hút thuốc và chi phí $$ nếu bạn chưa được trang bị cho thiết bị điện tử.

Điều tốt nhất tiếp theo sau đó: đồ chơi xung quanh trong một trình giả lập CPU (trình giả lập? Tôi nhận được các thuật ngữ đó lẫn lộn) - những điều này tồn tại cho Z80, 6502, 8086 ... tất cả các 8-bit cũ. Đó có thể là điều thú vị và giáo dục nhất đối với một lập trình viên ứng dụng, người không biết nên sử dụng đầu hàn nào (mặc dù người ta học được khá nhanh :) Làm thế nào văn bản được ghi vào bộ nhớ video, cách các thủ thuật mã hội giúp hiệu suất. .. có rất nhiều điều thú vị để khám phá ở cấp độ này.

Tôi không chắc chắn về việc học C như một ngôn ngữ khác, không có sự hiểu biết ban đầu về hoạt động bên trong của CPU. Biết cách các bit được gửi giữa các thanh ghi CPU và cách bộ nhớ được truy cập, giúp ích rất nhiều với việc thực sự nhận được các con trỏ và các khái niệm ngôn ngữ C khác.

5
DarenW

Trong một từ, vui vẻ. Khi tôi thường chơi xung quanh với trình biên dịch chương trình (đã làm việc từ VB sang C++, C, v.v.), thật tuyệt vời khi chuyển dữ liệu từ một phần của bộ xử lý sang phần khác. Thật tuyệt vời cảm giác muốn biết chính xác những gì đang xảy ra bên trong CPU, không phải lo lắng về những gì đang diễn ra bên dưới mà bạn không biết. Thêm vào đó là một cảm giác tự do tuyệt vời - bạn có thể làm mọi thứ, bởi vì không có giới hạn sẵn có mà bạn tìm thấy trong các ngôn ngữ cấp cao hơn.

Ngoài ra, việc có thể quay vòng với bất kỳ ai lập trình bằng bất kỳ ngôn ngữ nào khác và đi 'tốt, nếu bạn không đủ khó tính ...' là trò đùa trẻ con, trẻ con.

4
Dan O

Có bất kỳ lý do tốt để học/thực hành lập trình cấp thấp. Tôi có bản thân câu trả lời khác nhau tùy thuộc vào bối cảnh.

Đầu tiên, tôi đang dạy lập trình C (nhưng cũng là OCaml và Java), thúc đẩy sinh viên học lập trình từ phần khó có lẽ là phần khó nhất trong nhiệm vụ. Lập luận tốt nhất mà tôi đã tìm thấy cho đến nay là "sự hiểu biết": các ngôn ngữ cấp cao hơn ẩn giấu rất nhiều cơ chế cơ bản và đôi khi không tốt, chúng cũng đẩy bạn ở cấp độ cao hơn ngay cả khi một số thủ thuật cấp thấp có thể thực sự hữu ích ( cho hiệu suất, hầu hết thời gian.) Hiểu những gì bạn đang sử dụng thực sự có thể giúp sử dụng nó tốt hơn. Kinh nghiệm giảng dạy của tôi chứng minh cho tôi rằng những sinh viên học lập trình cấp thấp hơn (và những người khác không hướng đến người dùng, những trình biên dịch như vậy) có khả năng thích ứng cao hơn và học nhanh hơn các khái niệm hoặc công cụ cấp cao mới.

Thứ hai, như bạn nêu, hiệu suất là một phần của trải nghiệm người dùng. Hầu hết thời gian, hiệu suất được coi là một vấn đề viết phức tạp và gần mã máy. Điều này không phải lúc nào cũng đúng, hiệu suất không chỉ là vấn đề của thuật toán và cấu trúc dữ liệu mà còn là sự tương tác giữa thuật toán và dữ liệu. Tôi sử dụng một dự án đặc biệt về chủ đề này, về cơ bản nó là một tìm kiếm đường dẫn đơn giản, nhưng vấn đề thực sự là kích thước của dữ liệu: biểu đồ là vô hạn. Cách duy nhất để đạt được hiệu suất giảm dần và phù hợp với bộ nhớ là viết bộ cấp phát bộ nhớ chuyên dụng (thực tế là hai, bộ cấp phát nhóm và bộ phân bổ tái chế.) Đây là điều mà bạn không thể làm trong hầu hết các ngôn ngữ cấp cao hơn. Trong thực tế, hầu hết các ngôn ngữ được thu gom rác sẽ có vấn đề về hiệu năng và bộ nhớ.

Có lẽ có nhiều tranh luận hơn như sự ổn định (theo nghĩa lịch sử và tuổi thọ) của các ngôn ngữ cấp thấp hơn so với các ngôn ngữ "cường điệu" (thực tế là một ngôn ngữ được coi là tài liệu tham khảo trong tương lai để lập trình có thể biến mất trong một vài năm Câu chuyện, người ta không thể dự đoán tuổi thọ của một công cụ mới, nhưng lập luận này vẫn đúng với các ngôn ngữ cũ ...), tất nhiên cũng có vấn đề về hương vị, hoặc thực tế là những gì có thể được thực hiện trong hầu hết các ngôn ngữ cấp cao cũng có thể là được thực hiện bằng các ngôn ngữ cấp thấp hơn nhưng không phải theo cách khác (nhưng xem xét điều đó, tất cả chúng ta chỉ nên viết mã trong hội ...)

Bản thân tôi bị mắc kẹt trong cả hai thế giới (hoàn toàn khác nhau), tôi dành nhiều năm để nghiên cứu về khái niệm lập trình lý thuyết, thiết kế và chứng minh hệ thống, và vì vậy tôi chỉ sử dụng và nghiên cứu các ngôn ngữ cấp cao (chủ yếu là chức năng, nhưng cũng thuần túy hướng đối tượng.) Gần đây tôi quay trở lại phía bên kia (chủ yếu là lập trình hệ thống và kernel) và thấy mình khá thoải mái trong lĩnh vực này Tôi đang có rất nhiều niềm vui! Đối với tôi, bước tiếp theo là tìm điểm chung: các tính năng ngôn ngữ cấp cao hơn để lập trình cấp thấp hơn! Vì vậy, cho đến nay không có ngôn ngữ nào cho điều đó (có lẽ Google sẽ lập trình hệ thống người dùng) và tôi đang xem xét ý tưởng xây dựng ngôn ngữ của riêng mình, nhưng đây là một câu chuyện khác.

2
Marwan Burelle

Tôi sẽ nói rằng không có nhiều lý do trong miền của bạn, tuy nhiên nếu bạn làm điện toán hiệu năng cao (ví dụ: Chơi game, Khoa học, v.v.) thì điều đó sẽ hợp lý.

1
Darknight

Tôi nghĩ rằng ngày nay lập trình cấp thấp và cấp cao có thể khá tách biệt. Về cơ bản điều này có nghĩa là bạn có thể sống cả đời chuyên nghiệp mà không cần biết C và trình biên dịch mà không có vấn đề gì cả. Điều đó nói rằng ngôn ngữ lập trình C không thể dạy bạn rất nhiều từ quan điểm lập trình và thiết kế.

Chỉ cần tò mò bạn có thể tìm hiểu cách mọi thứ hoạt động ở cấp độ thấp hơn. Khi tôi ở trường đại học chẳng hạn, tôi rất thích sử dụng gcc để tạo mã trình biên dịch mã từ C++. Nó rất hữu ích để hiểu làm thế nào đa hình và ngoại lệ được thực hiện. Nhưng ngoài ra, điều duy nhất bạn có thể học được từ C hiện nay là:

1) thủ thuật bộ nhớ bẩn. C là cách tốt nhất để hiểu rằng không có sự điên rồ trong lập trình viên :)

2) GOTO thực sự được sử dụng (và hữu ích) cho các lỗi rollback

3) tìm hiểu tốt hơn cách phân bổ bộ nhớ hoạt động (sự khác biệt giữa heap và stack ai?).

Vì vậy, về cơ bản luận án của tôi là: nếu bạn đã học xong Đại học và bạn vẫn không cần C, hơn là không học nó :)

1
Emiliano

Bạn không cần phải hiểu ngôn ngữ cấp thấp, nhưng bạn nên hiểu những gì đang diễn ra bên dưới vỏ bọc của ngôn ngữ cấp cao bạn đã chọn. Sử dụng ngôn ngữ cấp thấp sẽ dạy bạn điều này, nhưng đó không phải là cách duy nhất.

Dưới đây là một số ví dụ về các khái niệm cấp thấp có thể tác động đến các ngôn ngữ cấp cao.

Con trỏ:

List<object> listOne = new List<object>();
List<object> listTwo = listOne;

listTwo.Add(new object());

Debug.WriteLine(listOne.Count); //do you know what this will be?

Dây:

string initial = "initial";
string another = initial;

another = "changed!";
Debug.WriteLine(initial); //what about this?

Danh sách:

Khi nào bạn sử dụng danh sách so với danh sách liên kết? (Hầu như không thể biết điều này mà không hiểu ở mức độ khá thấp về cách danh sách hoạt động)

-

Có cần thiết phải biết tất cả những thứ này? Không, nhưng nó có thể có tác động và nếu bạn muốn trở thành một bậc thầy về ngôn ngữ cấp cao, bạn cần phải có một ý tưởng khá tốt về hoạt động bên trong.

1
Alistair

Những gì lập trình cấp thấp có thể dạy tôi, những ngôn ngữ khác sẽ không dạy tôi?

Đáng chú ý nhất là nó sẽ dạy cho bạn cách máy tính thực sự hoạt động. Không có cách nào khác để học điều này hơn là thông qua lập trình cấp thấp. Cho dù bạn lập trình loại ứng dụng nào, điều này sẽ luôn có ích. Bạn sẽ thực sự hiểu những gì đang diễn ra sâu bên dưới tất cả những thứ trên web. Và nếu bạn đang làm việc với Windows, toàn bộ API được viết bằng C, vì vậy biết rằng ngôn ngữ đó sẽ giúp bạn có thể giao tiếp trực tiếp với HĐH, bất cứ khi nào bạn cần sử dụng một tính năng mà ngôn ngữ hiện tại và thư viện của họ thiếu.

Tất nhiên lập trình cấp thấp sẽ cho phép bạn làm việc với những thứ hoàn toàn khác nhau, như lập trình nhúng và lập trình thời gian thực trong đó asm/C/C++ là bắt buộc. Nếu bạn không có hứng thú với các loại ứng dụng này, thực sự không cần phải học asm/C/C++.

Ngoài ra, bạn sẽ học bit và byte. Thao tác bit, thập lục phân, vv Những điều bạn có thể gặp phải bây giờ và ngay cả khi lập trình web/máy tính để bàn. Các thuật toán mã hóa là một ví dụ như vậy nơi nó được sử dụng.

1
user29079