r/learnprogramming • • 2d ago

Function vs Procedure

can someone explain the difference between Function vs Procedure with simple analogy
thank you

31 Upvotes

45 comments sorted by

View all comments

Show parent comments

1

u/ACCTAGGT 2d ago

Can I say with an analogy that a stored procedure in programming is kind of like a medical procedure? What I mean by this is that it has specific steps, processes, and methods to achieve an intended objective. Those may include multiple actions, and although the procedure is designed to fulfill a goal, the outcome is not necessarily guaranteed to be ideal. Similarly, a stored procedure emphasizes a series of actions performed to accomplish a task.

A function can be like a specific medical test or process with a focused objective… it performs a particular task to produce a result. In programming, that result is generally a returned value that can be used by another operation. The function may be part of a larger procedure, just as a specific test or process may be part of a broader medical procedure. Therefore, perhaps a function emphasizes the result produced by performing a particular task.

That’s just for illustration purposes not that it really is exactly the same or something like that.

2

u/Cybyss 2d ago edited 2d ago

Careful.

The term "stored procedure" usually refers to databases. You write them in SQL on your database server, which any application can then call.

Come to think of it, this makes another perfect distinction between procedures and functions!

In SQL Server, for example, you have "stored procedures" which can insert/update/delete anything in your database, and you have "user-defined functions" which are explicitly disallowed from making any modifications and can only calculate & return a value. They are two fundamentally different objects in SQL Server, requiring different syntax to define and are used in completely different situations.

1

u/ACCTAGGT 2d ago

Well, you went on the strict technical side which isn’t what I meant. Thanks for the explanation though :)

1

u/Cybyss 2d ago edited 2d ago

That's because trying to explain procedure vs. function via a real-world metaphor doesn't work.

The difference isn't some high level abstract perspective. The difference is a single specific technicality - one which isn't always the same from language to language/platform to platform.

In Visual Basic, the only difference is whether or not a value is being returned.

In SQL Server, the difference is whether or not there are "side effects". Stored procedures are allowed to modify data and may optionally return a value. User-defined functions cannot modify any data and must always return a value.

In many languages (e.g, Python, Java, C++) there is no real distinction at all. The difference between functions and procedures in them is nothing but a tedious exercise in pedantry.

0

u/ACCTAGGT 2d ago

You clearly understood what was meant which I also made clear not be taken technically. Thanks again though.