Câu hỏi Sự khác biệt giữa Lập trình Thủ tục và Thủ tục?


Trong một cuộc phỏng vấn của tôi, họ hỏi tôi sự khác biệt giữa Lập trình khai báo và Lập trình thủ tục loại.

Sự khác biệt giữa chúng với các ví dụ là gì?

P.S: Bạn có thể cho tôi biết ngoài hai chương trình hướng đối tượng và định hướng này, những ngôn ngữ lập trình loại nào? Bởi vì họ có thể yêu cầu sự khác biệt giữa các ngôn ngữ lập trình khác nữa. Và có những câu hỏi tương tự như thế này nhưng quá phân tán.


76


gốc


Câu hỏi tương tự: stackoverflow.com/questions/1784664/… - daCoda
Đáng buồn thay, không có mã ví dụ trong bất kỳ câu trả lời nào. - Bob Stein


Các câu trả lời:


Tuyên bố

Mô tả một kết quả và nhận được nó thông qua một hộp đen. Ngược lại bắt buộc. Ví dụ:

  • yacc
  • Ngọn cây
  • SQL
  • Cụm từ thông dụng
  • lex
  • XSLT
  • đánh dấu, troff, CSS, VHDL

Thủ tục hoặc bắt buộc

Mô tả các thuật toán và các bước quy trình, ở các mức trừu tượng khác nhau.

  • C, hầu hết các ngôn ngữ cũ
  • PHP, chủ yếu là
  • theo một nghĩa nào đó, tất cả các ngôn ngữ chính

Hướng đối tượng

  • Có xu hướng nằm trong danh mục thủ tục, thường đề cập đến các ngôn ngữ thể hiện một hệ thống phân cấp các kiểu kế thừa cả hai phương thức và trạng thái từ các kiểu cơ sở đến các kiểu có nguồn gốc, nhưng cũng bao gồm JavaScript dựa trên nguyên mẫu không bình thường. Một thứ nguyên riêng biệt từ các danh mục khác tại đây.

Chức năng

Bạn để cái này ra. Lập trình chức năng nhấn mạnh việc áp dụng các chức năng không có tác dụng phụ và không có trạng thái có thể thay đổi. Các hệ thống khai báo ở trên thể hiện các khía cạnh nhất định của lập trình hàm.

  • Kế hoạch
  • Erlang
  • OCaml
  • Haskell
  • Lisp, tùy thuộc. (Lisp có lẽ xứng đáng với danh mục độc đáo của riêng nó)
  • Clojure, phần nào
  • Ruby, hơi kém
  • F #
  • Scala

87



Tôi muốn thêm lisp vào danh sách các ngôn ngữ lập trình chức năng của bạn. - dave
Bạn cũng có thể thêm các ngôn ngữ logic như Prolog. - Toon Krijthe
@ ToonKrijthe, Prolog sẽ không rơi vào danh sách khai báo? - ChronoFish
Trên thực tế, lập trình describes algorithm and process steps được gọi là bắt buộc lập trình, là một siêu kiểu thủ tục lập trình mà đạt được mà dựa trên "thủ tục cuộc gọi" hoặc khái niệm tương tự khác. - minmaxavg
Tôi không nghĩ rằng lập trình hàm là ngược lại với lập trình bắt buộc. Ví dụ: Người ta có thể viết các chương trình kiểu hàm trong C, mặc dù C là một ngôn ngữ "bắt buộc". - djsmith


Lập trình khai báo là nơi bạn nói những gì bạn muốn mà không cần phải nói cách thực hiện. Với lập trình thủ tục, bạn phải chỉ định các bước chính xác để có được kết quả.

Ví dụ, SQL là khai báo nhiều hơn thủ tục, bởi vì các truy vấn không xác định các bước để tạo ra kết quả.


55



Bạn có thể vui lòng cho tôi biết các loại ngôn ngữ lập trình khác ngoài Tuyên bố, Thủ tục và OOP. Cảm ơn. - Tarik
1 cho ví dụ tốt về SQL. chúng ta có thể có thêm ví dụ không? - mauris
Mauris: Có thể không phải là một ngôn ngữ lập trình, nhưng HTML là khai báo, bởi vì bạn mô tả những gì bạn muốn (một đoạn với bit này in đậm), thay vì viết ra "chuỗi ký tự, đo chuỗi, vị trí nâng cao, v.v." Một ví dụ khác là Prolog, trong đó một "chương trình" là một tập hợp khai báo các sự kiện và các quan hệ / các khoản khấu trừ và một truy vấn. Động cơ Prolog tìm ra cách để đánh giá truy vấn: bạn không cần phải nói cho nó cách làm như thế. Cuối cùng, cụm từ thông dụng: bạn mô tả mẫu thay vì đánh vần các bước để kiểm tra kết quả phù hợp. - itowlson
MXML (một phần của khung công tác Flex) là khai báo: Bạn cho biết thứ tự bạn muốn đối tượng / vùng chứa của bạn hiển thị là gì và nó xử lý bố cục tùy thuộc vào việc bạn đã bảo nó nằm ngang hay dọc. ActionScript 3 là thủ tục với sự hỗ trợ cho các mô hình OOP. - Hooray Im Helping
makefiles là một ngôn ngữ khai báo khá nổi tiếng khác - Stefano Borini


Nói một cách đơn giản, tôi có một ví dụ thế giới thực, trong đó tôi cần một tách trà.

Thủ tục: 

  1. Đi nhà bếp
  2. Nhận đường, sữa và trà,
  3. Trộn chúng và đun nóng lửa cho đến khi nó sôi
  4. Cho vào cốc và mang nó cho tôi

Tuyên bố:

  1. Cho tôi một tách trà.

Trong ngôn ngữ thủ tục, bạn xác định toàn bộ quá trình và cung cấp các bước làm thế nào để làm điều đó. Bạn chỉ cần cung cấp các đơn đặt hàng và xác định cách thức hoạt động của quy trình.

Trong ngôn ngữ khai báo, bạn chỉ cần đặt lệnh hoặc thứ tự, và để cho nó được trên hệ thống làm thế nào để hoàn thành đơn đặt hàng đó. Bạn chỉ cần kết quả của bạn mà không cần đào sâu vào cách nó nên được thực hiện.

Trân trọng,


14



Bạn trộn lẫn khai báo và thủ tục trong lời giải thích, phải không? - opncow
Đã cập nhật. Cảm ơn. - Muhammad Zeeshan Tahir


Lập trình thủ tục :

Trong lập trình thủ tục, khi chương trình bắt đầu, nó tuân theo một tập hợp các hướng dẫn. Các hướng dẫn có thể thay đổi dựa trên một số nội dung tệp hoặc bộ nhớ, nhưng nhìn chung, nó không thay đổi rộng rãi. đầu vào cho chương trình thường không phải từ đầu vào của người dùng trong thời gian thực, mà là từ tập hợp dữ liệu được thu thập trước.

Lập trình khai báo:

Trong Declarative Event driven programming tập trung xung quanh một cơ thể dữ liệu với các hành động tùy chọn mà chương trình có thể thực hiện trên đó. Ví dụ: mỗi "sự kiện" trong một trình xử lý văn bản là bất kỳ thay đổi chuột hoặc bàn phím (hoặc tệp) nào ảnh hưởng đến dữ liệu, (các) tài liệu. Chúng không cần phải được thực hiện theo bất kỳ thứ tự nào. Lập trình hướng sự kiện có dạng các chương trình nhỏ (trình xử lý sự kiện) mà tất cả làm việc trên một tập dữ liệu chung, sao cho mỗi chương trình nhỏ có thể sử dụng cùng một dữ liệu, tài liệu trong ví dụ này.


5





Trong phương pháp tiếp cận thủ tục bạn mã hóa hướng dẫn của bạn để đạt được kết quả. Trong cách tiếp cận khai báo, bạn xác định những gì cần phải được giải quyết như là kiến ​​thức giải quyết vấn đề. Hãy xem Phương pháp thủ tục hoặc tuyên bố ví dụ tôi thực hiện trong cả hai cách tiếp cận.

Như bạn sẽ thấy trong ví dụ, trong cách tiếp cận khai báo, bạn không cần phải hướng dẫn CÁCH để giải quyết vấn đề.


-2



Bạn đang tham khảo các ví dụ ngoài trang web như thể chúng được viết ở đây. Đưa các ví dụ của bạn vào như một phần của câu trả lời của bạn. - ChronoFish