Ask your own question, for FREE!
Computer Science 7 Online
OpenStudy (anonymous):

From a functional perspective does a procedure necessarily need to be a series of steps, or is it just the "how", of how the function is determined?

OpenStudy (anonymous):

what do you mean by "functional perspective"? Something scary and mathematical like lambda-calculus? Or is this more a lower level question of how procedures work in programming?

OpenStudy (anonymous):

@nczempin A functional perspective in all contexts, including math and comp sci, is one in which a given set of input values are always transformed into a specific set of output values. A procedure is how this transformation is made. Different procedures that compute the same function are considered to be functionally (behaviorally) equivalent. So, given this understanding, my question is do procedures allways have to be series of steps from a functionalist perspective?

OpenStudy (shadowfiend):

Arguably “just the how” is in and of itself a step. It may be a single step, but it is a step nonetheless. Honestly, we have a word for the steps needed to compute a particular function—it's called an algorithm. Procedure in CS generally refers to a “function”, but without the pure mathematical implications of that word. Generally speaking, though, procedure seems to have fallen into disuse.

OpenStudy (anonymous):

I disagree with "in all contexts"; what you're saying is not an absolute truth (and why are you suddenly using the word "functionalist'"?). There is a specific style of prgramming/languages called "functional programming", which assumes that functions never have any side effects, so that the programmed functions are more like mathematical functions (which in non-functional languages they don't have to be). Perhaps the question is getting at a critical difference between functions in Mathematics and functions in Computer Science: In Mathematics, it is sufficient to define what a function does ("The square root function for x returns the value y such that y squared = x") and you can reason with that function. In Computer Science, however, you need to describe HOW you get the y from the x, e. g. describe the algorithm to get from one to the other. This is actually one of the defining differences between Maths and CS. See, for example, the SICP lectures at ocw.mit.edu or the SICP book.

OpenStudy (anonymous):

@nczempin From my understanding of what you are saying, you are not defining functional differently in a structural sense. You are only looking at superficial differences regarind how its applied in different contexts. Functional computation still takes a set of inputs and reliably transforms them to output values. CompSci is the study of procedures. Functional CompSci, as opposed to, say imperative CompSci, is the study of how procedures compute functions. My switch from functional to functionalism was sloppy typing on my part. But, it still works, functionalism can be thought of as taking a functional perspective (defining things in terms of their function: that is, their input/output transformational relationships) in various fields of study. The root of my question is this: functions are deterministic. Does this mean their internal structure have to contain a series of mechanistic steps that is followed sequentially? And, please excuse me, this is more of a Philosophy of Sci question, but their isnt even a philosophy group here, so I've asked my question the in the cog sci group because functionalism is often closely coupled with comp sci, given that functions are often thought of in many fields (e.g. computational neuroscience) as being computed.

OpenStudy (anonymous):

I'm not equipped to help you with the philosphy part. Other than providing my own thoughts. I don't even know what "in a structural sense" means. Does that refer to some philosophical term "structural" or "structuralism"? cog sci (Cognitive Science) and comp sci (Computer Science)? sloppy again? (not trying to mock you or be difficult; just trying to follow what you're saying. It would make the conversation smoother if perhaps you tried a little harder not to introduce such mistakes, so that I don't have to ask each time "did you really mean that or did you mistype?") The description of what functional programming is is not my definition; I am relating what (my limited understanding is that) functional means in the context of computer science, as a particular style of programming that is usually contrasted with imperative and/or object-oriented programming. One of the most significant consequences of using the "functional paradigm" in programming is that it allows you to reason about program behaviour much more easily than in e. g. the object-oriented paradigm (where you can call a "function" twice and not be surprised when you receive a different result each time), because objects (more or less by definition have "state"). Oh, and did we go from "functionalism was sloppy typing" to "functionalism is actually something meaningful"? I've never heard the term, but that may just be me. In the end: Do you want an answer from a Computer Science point of view (in which case first I would ask you if you have any programming background, especially of functional background), or do you want to have a philosophical discussion (in which case openstudy.com may not be the first place you should look at; because it is based on the idea of 1 question- 1 answer, and not a deep discussion).

OpenStudy (anonymous):

@nczempin Cog Sci & Comp Sci are common shorthand in many academic settings for Cognitive science and Computer Science relatively. Please excuse my presumptions, the journals I read frequently use this shorthand, and I assumed the usage was widespread. I have a computer science and philosophy of science background with limited programing background. Functionalism is philosophic paradigm that, among other things, informed functional models of computation. The primary difference between functional and imperative models of computation is that functional models define computation as a transformation of a set of input values into a set of output values, whereas imperative models define computation a series of sequential commands (imperatives) that involve modifying computer memory or taking some action in the world. Imperative models don't require specified outputs in the sense that functional ones do. Functional and imperative programing languages are constructed using principles derived from their respective models of computation. Structuralism, in relation to functionalism, considers the internal structure, not just the input output relationship, to be an important aspect of, applied to computer science, computation. The imperative model of computation could be considered a structural model. For a brief introduction into what computation is from a computer science perspective I recommend reading Ian Horswill's "What is computation?": http://www.cs.northwestern.edu/~ian/What%20is%20computation.pdf Philosophic questions don't have to be open ended (not 1-question-1-answear), however they do, like most subjects, require relevant requisite background knowledge to discuss, address, and answer concisely. And, in that sense, you may be right: this might not be the right place to ask my question.

OpenStudy (anonymous):

So from what I know of computability, in order for a function to be computable, there must be an algorithm that computes it (Church's Thesis). So with regards to computers a series of steps is necessary. And maybe even in general as well.

OpenStudy (anonymous):

I haven't read the whole thread. To me a procedure is a part of program which may or may not return a value(s) where as a function always returns a single value.

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!