Tôi có cần phải hiểu Nội bộ của ngôn ngữ lập trình không?


11

Tôi mới bắt đầu sử dụng Python và tôi thực sự thích nó cho đến nay. Một câu hỏi xuất hiện trong đầu tôi rất thường xuyên là liệu tôi có cần phải hiểu và do đó học được phần Quốc tế của ngôn ngữ lập trình (như trong trường hợp của tôi là Python). Như bạn có thể biết, chính Python được viết bằng C.

Vì vậy, câu hỏi của tôi là: Làm thế nào sâu để đi sâu vào một ngôn ngữ lập trình để thành thạo hoặc thông thạo ngôn ngữ này. Tôi so sánh câu hỏi này với ngôn ngữ "tự nhiên". Tôi không biết mọi chi tiết về ngữ pháp trong ngôn ngữ mẹ đẻ của tôi nhưng tôi có thể thể hiện bản thân mà không gặp vấn đề gì trong ngôn ngữ đó. Đây là khi tôi nói tôi thông thạo một ngôn ngữ. Điều đó có áp dụng cho các ngôn ngữ lập trình không?


4
Nội bộ trở nên quan trọng khi bạn phải lo lắng về hiệu suất.
Gort Robot

7
Tôi biết một chút công bằng về nội bộ CPython và PyPy, nhưng 80% thời gian chúng không có tác dụng (hoặc thậm chí có hại, như để đánh lạc hướng) cho lập trình Python của tôi. Tôi rất vui vì tôi biết rằng mặc dù 20% còn lại, và nó không chỉ để thực hiện, mà còn để hiểu các thông báo lỗi ngu ngốc và tránh xa hành vi không mang theo.


2
Không và không. Chắc chắn không phải là một bản sao của một trong hai.

1
Nó phụ thuộc vào ý nghĩa của bạn bởi "các phần bên trong", nhưng tôi biết rằng không có gì lạ khi các lập trình viên C # và Java chuyên nghiệp có ít nhất một số hiểu biết về CLI hoặc JVM.
dùng16764

Câu trả lời:


8

Bạn không cần phải biết bất cứ điều gì về nội bộ của ngôn ngữ lập trình, để viết chương trình bằng ngôn ngữ đó. Tuy nhiên, bạn càng hiểu ngôn ngữ tốt hơn, các chương trình của bạn sẽ trở nên tốt hơn.

  1. Kiến thức về cấu trúc dữ liệu và thuật toán sẽ giúp bạn chọn cấu trúc dữ liệu phù hợp nhất cho nhiệm vụ cụ thể của bạn. Một số ngôn ngữ sở hữu các cấu trúc dữ liệu này trong nội bộ.

  2. Hiểu "văn hóa" của ngôn ngữ giúp bạn viết các chương trình tuân theo "thực tiễn tốt nhất", giúp chúng dễ hiểu hơn, dễ bảo trì hơn và hoạt động tốt hơn.

  3. Viết trình biên dịch cho ngôn ngữ đó (hoặc trình biên dịch cho ngôn ngữ khác trong ngôn ngữ đó) có thể giúp bạn hiểu sâu về ngôn ngữ và cải thiện các chương trình của bạn vượt ra ngoài mức trung bình.

  4. Thành thạo các ngôn ngữ khác (đặc biệt là các ngôn ngữ khác) giúp bạn trở thành một lập trình viên giỏi hơn trong ngôn ngữ chính của mình, bởi vì bạn có thể mang những kỹ năng và công cụ đó mang ngôn ngữ chính của mình.

Như một hệ quả tất yếu, bạn không cần biết gì về máy tính của mình để viết chương trình trên đó. Nhưng biết làm thế nào máy tính của bạn hoạt động làm cho bạn tốt hơn trong việc viết chương trình cho nó.


7

Tôi không biết mọi chi tiết về ngữ pháp trong ngôn ngữ mẹ đẻ của tôi nhưng tôi có thể thể hiện bản thân mà không gặp vấn đề gì trong ngôn ngữ đó. Đây là khi tôi nói tôi thông thạo một ngôn ngữ. Điều đó có áp dụng cho các ngôn ngữ lập trình không?

Đơn giản chỉ cần đặt, có. Miễn là bạn có thể thể hiện bản thân (và hiểu người khác) tốt, thì bạn được coi là thông thạo ngôn ngữ.

Điều đó nói rằng, chỉ đơn giản là thông thạo không đủ cho một số công việc. Một số loại tác giả, công việc đòi hỏi kỹ năng nói trước công chúng mẫu mực và một số học giả tập trung vào ngôn ngữ cần phải biết nó "tốt hơn thông thạo". Tương tự như vậy, một số chuyên gia lập trình đòi hỏi kiến ​​thức về ngôn ngữ bên trong, nhưng đối với hầu hết mọi người biết ngôn ngữ lập trình tương đương với cách yêu cầu số của cô ấy hoặc gọi món phô mai là đủ.


0

Tôi định nghĩa "thành thạo" với một ngôn ngữ là:

  • Hiểu phần lớn cú pháp và đủ kiến ​​thức để nghiên cứu bất kỳ tính năng mới nào bạn tìm thấy trong mã của người khác.
  • Kiến thức làm việc về bất kỳ thư viện và / hoặc khung tiêu chuẩn nào, và khả năng tìm, đọc và hiểu tài liệu chính thức về bất cứ điều gì mới mà bạn cần sử dụng.
  • Hiểu và khả năng sử dụng các thành ngữ phổ biến và quy ước đặt tên cho ngôn ngữ.

Lưu ý rằng cách ngôn ngữ hoạt động không có trong danh sách này, nhưng có rất nhiều "khả năng học hỏi". Có ít nhất một sự hiểu biết khó hiểu về nội bộ có thể hữu ích, nhưng không cần thiết phải thành thạo. Tuy nhiên, biết đủ về họ rằng bạn sẽ có thể hiểu bất kỳ tài liệu tham khảo nào trong tài liệu bạn đang đọc là một ý tưởng rất tốt.

Ví dụ: Tôi biết rằng cả VB.NET và C # đều được biên dịch sang IL (Ngôn ngữ trung gian) của .NET, sau đó được biên dịch cho khung đích. Tôi không biết nhiều về IL, nhưng tôi biết đủ để nhận ra nó khi tôi nhìn thấy nó và hiểu một cách tổng quát cách nó xử lý một số thứ nhất định. Tôi tự coi mình thành thạo C #, nhưng không phải trong VB.NET, mặc dù "nội bộ" là như nhau, và sự hiểu biết của tôi về chúng không sâu sắc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.