Chính xác thì lập trình Unix nghĩa là gì? [đóng cửa]


10

Tôi nghĩ rằng tôi đã hiểu thuật ngữ lập trình Unix có nghĩa là gì, nhưng bây giờ, sau khi đọc về nó trong ngữ cảnh lập trình kernel / C, tôi cảm thấy mình cần phải làm rõ ý nghĩa của thuật ngữ này.

Nó không rõ ràng với tôi nếu nó có nghĩa là:

  1. Lập trình Shell,
  2. Các công cụ lập trình Unix,
  3. một cách / mẫu cụ thể của lập trình các công cụ dòng lệnh Unix (ví dụ, để đồng ý với cách thức đường ống của "lập trình shell Unix"), hoặc
  4. thứ gì khác.

2
Bạn sẽ phải cung cấp một chút bối cảnh. Bạn đã đọc biểu thức này ở đâu? Ngoài ngữ cảnh, tôi muốn nói nó có nghĩa là lập trình cho HĐH Unix.
lgeorget

6
Câu hỏi này dường như lạc đề vì nó là về tiếng Anh cơ bản.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles Oh vì vậy đó là một dấu phân cách bây giờ: P
goldilocks

@Igeorget, Taoup.
Pacerier

@goldilocks, Ý nghĩa?
Pacerier

Câu trả lời:


14

"Lập trình Unix" đề cập đến lập trình rõ ràng cho một môi trường unix. Điều này sẽ bao gồm lập trình cho các vỏ phù hợp với một tiêu chuẩn có liên quan (như POSIX ). Tuy nhiên, nó cũng sẽ bao gồm lập trình bằng bất kỳ ngôn ngữ nào trong khi sử dụng rõ ràng các giao diện và tài nguyên hệ thống được tiêu chuẩn hóa tương tự, giả định rằng những thứ này là đặc trưng cho thế giới * nix.

Ví dụ, lập trình mạng mà không có thư viện bên thứ ba trong C hoặc C ++ thì không thể mang theo được, bởi vì cả hai tiêu chuẩn đều không nói gì về nó. Việc kết nối mạng trong C / C ++ được triển khai bằng giao diện được điều khiển bởi hệ điều hành và trong khi trên các hệ thống * nix-ish, tính phổ biến này ít nhiều, bạn không thể chuyển mã không đổi sang (ví dụ) Windows và ngược lại. Do đó, thực hiện các công cụ mạng trong C hoặc C ++ có nghĩa là sử dụng thư viện di động hoặc nhắm mục tiêu nền tảng và Unix là một khả năng trong trường hợp sau, do đó, đó là "lập trình unix" (và lập trình C hoặc C ++ và lập trình mạng). 1

Tuy nhiên, lập trình mạng bằng nhiều ngôn ngữ cấp cao hơn như perl hoặc python hoặc java di động; các ngôn ngữ này thường được triển khai trong C, nhưng trong khi các chi tiết triển khai khác nhau từ nền tảng này đến nền tảng khác, thì giao diện lại không. Do đó, bạn có thể viết mã mạng bằng perl sẽ chạy trên bất kỳ hệ thống nào mà perl chạy; trên một hệ thống Unix, điều này được dịch bởi trình thông dịch thực hiện thành các cuộc gọi riêng phù hợp và trên hệ thống windows, nó sẽ được dịch khác nhau. Vì mã perl thực tế của bạn không cụ thể cho bất cứ thứ gì ngoại trừ perl, nên nó không phải là chương trình unix. Đó là lập trình mạng và lập trình perl, nhưng không phải là lập trình unix.


1. Do mối quan hệ lịch sử mật thiết giữa C và Unix, thực tế C là ngôn ngữ được sử dụng nhiều nhất để viết các hệ điều hành nói chung và bản chất của "hệ điều hành" là gì, có rất nhiều thứ trong danh mục " Lập trình C cụ thể cho hệ điều hành "- một ví dụ hàng ngày khác ngoài việc kết nối mạng là các công cụ định hướng hệ thống tệp, chẳng hạn như lưu trữ tệp và thư mục đọc. Do đó, có nhiều loại sách "Lập trình Unix trong C" khác nhau, bởi vì lập trình cơ bản trong C chắc chắn liên quan đến rất nhiều yếu tố cụ thể của hệ điều hành. Đây không phải là trường hợp với các ngôn ngữ di động hơn như perl hoặc java; trong trường hợp này, chủ đề của cuốn sách có thể sẽ là " Lập trình hệ thống theo Perl", hoặc nhiều khả năng, chỉ đơn giản là "Lập trình với Perl".


1
prof goldilocks đình công một lần nữa!
mikeerv

@goldilocks, Vì linux đã giết Unix, bạn có nghĩa là bây giờ hầu như không có ai "lập trình Unix"?
Pacerier

1
Solaris và BSD đang được sử dụng rộng rãi (ngay cả khi người tiêu dùng PC trung bình không biết họ là gì) và về mặt kỹ thuật, OSX chính thức bị xử phạt theo tiêu chuẩn UNIX (có vẻ như tên đã chuyển về "macOS", vì vậy tôi sẽ phải không đồng ý với tiền đề của bạn.
goldilocks
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.