Có một triết lý lập trình Windows? [đóng cửa]


30

Tôi đã lập trình cả trong môi trường Unix và Windows. Chủ yếu là tôi đã làm việc trong Unix, nơi tôi đã học Triết lý Unix , có thể được tóm tắt là

  • Viết chương trình làm một việc và làm tốt.
  • Viết chương trình để làm việc cùng nhau.
  • Viết chương trình để xử lý các luồng văn bản, bởi vì đó là một giao diện phổ quát.

Dường như có một sự khác biệt rõ ràng trong văn hóa lập trình giữa thế giới Unix và Windows, ví dụ:

  • GUI vs CLI
  • Đăng ký vs tập tin cấu hình
  • Rất nhiều công cụ dành riêng cho bất kỳ nhu cầu cụ thể nào so với nhóm các công cụ trực giao chung có thể kết hợp

Có tương đương với "triết lý Unix" trong thế giới Windows không? Những gì lập trình viên Unix có thể học được từ Windows hoặc nên biết khi chuyển sang lập trình trong Windows?

Tôi muốn các câu trả lời tập trung vào các thực tiễn tốt nhất về lập trình Windows (và không phải là cuộc chiến giữa Windows và Unix).


15
Có nên biết? "Mọi thứ sẽ hút, hút xấu."
Orble

3
Chỉ có một triết lý đó, không có triết lý. ;)
Mudassir

6
Trên thực tế, Powershell đã đưa một số triết lý Unix vào Windows, đặc biệt là viết các chương trình nhỏ (thực ra là các lệnh ghép ngắn trong Powershell) chỉ làm một việc và kết hợp chúng với các lệnh ghép ngắn khác làm những việc khác. Tất nhiên, hầu hết người dùng bình thường vẫn không biết cách sử dụng Powershell, nhưng loại đó phụ thuộc vào loại phần mềm bạn đang viết.
JohnL

4
Chúng tôi sẽ nhận được nó ngay lần thứ ba.
aufather

7
Triết lý của Windows là mang lại doanh thu cho Microsoft.
dan04

Câu trả lời:


28

Thực sự có một cái gì đó giống như "triết lý Windows". Chủ yếu là về khái niệm thành phần và phần giao diện người dùng - các chương trình thiết kế cho người dùng không dành cho các lập trình viên khác.

Điêu đo co nghia la:

  • Giao diện người dùng đơn giản và trực quan
  • Quy trình làm việc tự nhiên
  • Nên làm việc ra khỏi hộp
  • Không có kiến ​​thức kỹ thuật cần thiết ở đó khi không yêu cầu

Đây là một bài đọc tốt:

Khó khăn

Với sự phổ biến của Windows, cách tiếp cận mã hóa của hacker bắt đầu trở nên bất lợi. Đầu tiên, nó viết các chương trình C / C ++ theo cách phức tạp và khó hiểu nhất, để chỉ những bộ não khó tính nhất mới có thể hiểu chúng, như một nghi thức thông qua. Trong Windows mọi thứ bắt đầu thay đổi và "phong cách mã" hiện đang rất bất lợi. Không chắc chắn nếu Windows ảnh hưởng trực tiếp của nó hay đúng hơn là mức độ hiểu biết mới về chất lượng mã, nhưng ít nhất là kịp thời chúng trùng khớp.


7
Tôi không nghĩ bất kỳ điểm đạn nào áp dụng đặc biệt tốt cho Windows.
Tom Hawtin - tackline

4
@Tom: Đó là một triết lý; nó không cần phải áp dụng cho bất cứ điều gì Tuy nhiên, tôi tin rằng nó áp dụng rất tốt cho hầu hết mọi thứ trong thế giới Windows.
Allon Guralnek

@Tom Tôi đồng ý với @ ALLon hơn vì với tôi có vẻ như câu hỏi của OP là lập trình Console và GUI nhiều hơn.
gideon

6
Gì?!? Hãy xem các nguồn BSD và AT & T cũ. Sạch sẽ, đơn giản, thanh lịch. Và tôi chưa bao giờ thấy bất cứ điều gì khó hiểu hơn một mã MFC thông thường.
SK-logic

Ngay cả khó khăn không có câu trả lời đúng duy nhất, tôi thích câu này nhất. Bài đăng trên blog của Joel là tuyệt vời.
Maglob

8

Tôi nghĩ rằng sự khác biệt mà bạn nói đến trong câu hỏi của bạn là về người dùng của các hệ thống này hơn là phong cách lập trình của các nhà phát triển của họ. Trong một thời gian dài, * nix là lĩnh vực của cả lập trình viên hoặc người đam mê điện toán. Có rất ít trong cách sử dụng "thông thường". Trường hợp như Windows có số lượng người dùng [nhà] lớn hơn.

Người dùng thông thường không muốn nhớ hàng tá cờ dòng lệnh khác nhau để chạy chương trình. Họ muốn bấm vào một nút.

Người dùng thông thường không muốn lo lắng về các tệp cấu hình hệ thống của họ hoặc cách Fluffy Kitties nhớ giống mèo yêu thích của họ.

Người dùng thông thường sẽ sử dụng một cái gì đó miễn là nó làm những gì họ muốn, ngay cả khi có sẵn các sản phẩm "tốt hơn".

Tôi nghĩ rằng điểm chính của tôi ở đây là ... Windows rất nhiều về việc tạo cho người dùng , hơn là người tạo . Đừng đi ngược lại các mô hình lâu đời tồn tại trong phát triển Windows. Đừng làm ô nhiễm người dùng Tài liệu của tôi bằng những thứ nhảm nhí hoặc tự nhét mình vào startup của họ mà không có lý do.

Có thể có tầm quan trọng tương tự: viết tài liệu người dùng.


7
Tài liệu người dùng? Người dùng các chương trình thành công sẽ không bao giờ phải chạm vào bất kỳ tài liệu nào.

@ Nghệ thuật phát triển - điều này đúng, nhưng khi bạn viết phần mềm để nói, vật lý hạt phải được hiểu bởi những người có quốc tịch khác nhau, khả năng nói "nhấp vào đây để mô tả những gì chúng tôi làm với dữ liệu của bạn ở đây "nếu dễ hơn viết một máy tính thần giao cách cảm sẽ có thể trích xuất sự mong đợi của người dùng từ tâm trí của họ.
TZHX

3
"Đừng làm ô nhiễm người dùng bằng những thứ nhảm nhí." - khá mỉa mai.
ocodo

1
Làm thế nào, Slomojo?
TZHX


4

Thỏa hiệp & tùy chỉnh

Nó không phải là tốt nhất ở bất cứ điều gì, nhưng nếu bạn sẵn sàng đưa ra thời gian và đưa ra một số quyết định không hấp dẫn ở một số nơi, có rất ít bạn không thể làm điều đó. Nếu bạn không thích những gì nó đang làm, có lẽ bạn có thể thay đổi nó. Có vài nơi chỉ có một cách hoặc thậm chí là một cách luôn luôn tốt nhất.

Đủ tốt để người dùng bắt đầu

Rất ít thứ là hiện tượng ra khỏi hộp, nhưng hầu hết mọi thứ đều có thể sử dụng được. Unix có xu hướng đi theo hướng không có gì hoạt động cho đến khi bạn định cấu hình nó và Apple làm cho mọi thứ trở nên hoàn hảo, nhưng với chi phí của một số cấu hình / tính linh hoạt.

Mong đợi một đuôi hỗ trợ đăng nhập

Người dùng Windows không nâng cấp chỉ vì có phiên bản mới hơn. Họ thậm chí không luôn nâng cấp vì lỗ hổng hoặc lỗi. Người dùng Windows thường cần phải buộc phải nâng cấp, nhưng nếu bạn buộc họ nâng cấp nhanh chóng, họ sẽ tìm kiếm các sản phẩm thay thế

Người dùng có nhiều cấp độ kỹ năng

Unix có một rào cản nhận thức cao để xâm nhập từ cấp độ kỹ thuật từ quan điểm của một người dùng gia đình bình thường. Apple có trình độ kỹ năng cần thiết rất thấp, nhưng không khuyến khích người dùng thông thường làm nhiều việc theo cách tùy biến HĐH của họ. Windows nằm ở giữa. Nó chỉ khó bắt đầu sử dụng hơn một chút so với các sản phẩm của Apple, nhưng có rất nhiều thông tin đơn giản, đôi khi ngay trong bản cài đặt, về cách thay đổi một số cấu hình hệ thống khá sâu. Điều này dẫn đến một cấp độ kỹ năng khá ngẫu nhiên trong tầng lớp trung lưu của người dùng bởi vì nếu họ đủ tự tin để thử một thứ gì đó thì rất có thể họ có thể tìm ra cách để làm điều đó. Nó cũng khiến những người dùng rụt rè hơn mà không có bất kỳ kinh nghiệm nào trong một số trường hợp vì họ cảnh giác với những cảnh báo rằng những điều tôi làm sai.



2

UNIX từ lâu đã dành cho các lập trình viên và những người như vậy và windows luôn dành cho những người dùng không biết cách viết các tập lệnh bash. Do đó, trong windows bạn nên quan tâm đến người dùng, điều đó có nghĩa là tạo một công cụ cho tất cả các tác vụ mà người dùng không cần phải lo lắng về việc cấu hình một vài chương trình để làm việc cùng nhau.


1

Tôi không chắc đó có phải là một triết lý hay không, nhưng IMHO có một loại mật độ suy nghĩ phù hợp với lập trình Windows. Cũng có một cảm giác ngạc nhiên về cách mọi thứ đôi khi hoạt động.

Tôi khuyên bạn nên kiên nhẫn nếu bạn chấp nhận phát triển Windows và quan tâm hơn một chút về các giả định của bạn.

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.