The idea behind the state of Imperative languages
$begingroup$
I was reading about programming paradigms and I have a question about the state when speaking about Imperative languages. What does it mean to change the program's state? Is it just an abstract idea? I know that C
is in the Imperative paradigm (In fact in the Procedural paradigm), so it has a state, but I don't understand how it is expressed in language. Is there a special space in memory that contain 1
or 0
? But then, what 0
and 1
represent?
If for example we have:
int x = 5;
printf("%d,5);
How the state will be affected by each line? Also, why Functional languages does not have one and what is the impact of having one.
As you can see, I'm a bit confused about the idea behind the state. I think that a small example make a bit clear.
I also read the previous thread from the second site, but it didn't help me to understand.
programming-languages programming-paradigms imperative-programming
New contributor
$endgroup$
add a comment |
$begingroup$
I was reading about programming paradigms and I have a question about the state when speaking about Imperative languages. What does it mean to change the program's state? Is it just an abstract idea? I know that C
is in the Imperative paradigm (In fact in the Procedural paradigm), so it has a state, but I don't understand how it is expressed in language. Is there a special space in memory that contain 1
or 0
? But then, what 0
and 1
represent?
If for example we have:
int x = 5;
printf("%d,5);
How the state will be affected by each line? Also, why Functional languages does not have one and what is the impact of having one.
As you can see, I'm a bit confused about the idea behind the state. I think that a small example make a bit clear.
I also read the previous thread from the second site, but it didn't help me to understand.
programming-languages programming-paradigms imperative-programming
New contributor
$endgroup$
add a comment |
$begingroup$
I was reading about programming paradigms and I have a question about the state when speaking about Imperative languages. What does it mean to change the program's state? Is it just an abstract idea? I know that C
is in the Imperative paradigm (In fact in the Procedural paradigm), so it has a state, but I don't understand how it is expressed in language. Is there a special space in memory that contain 1
or 0
? But then, what 0
and 1
represent?
If for example we have:
int x = 5;
printf("%d,5);
How the state will be affected by each line? Also, why Functional languages does not have one and what is the impact of having one.
As you can see, I'm a bit confused about the idea behind the state. I think that a small example make a bit clear.
I also read the previous thread from the second site, but it didn't help me to understand.
programming-languages programming-paradigms imperative-programming
New contributor
$endgroup$
I was reading about programming paradigms and I have a question about the state when speaking about Imperative languages. What does it mean to change the program's state? Is it just an abstract idea? I know that C
is in the Imperative paradigm (In fact in the Procedural paradigm), so it has a state, but I don't understand how it is expressed in language. Is there a special space in memory that contain 1
or 0
? But then, what 0
and 1
represent?
If for example we have:
int x = 5;
printf("%d,5);
How the state will be affected by each line? Also, why Functional languages does not have one and what is the impact of having one.
As you can see, I'm a bit confused about the idea behind the state. I think that a small example make a bit clear.
I also read the previous thread from the second site, but it didn't help me to understand.
programming-languages programming-paradigms imperative-programming
programming-languages programming-paradigms imperative-programming
New contributor
New contributor
edited 4 hours ago
vesii
New contributor
asked 4 hours ago
vesiivesii
1133
1133
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
The simplest kind of state is the configuration of memory. In C this memory is accessed through variables (and arrays and pointers, but let us ignore those), so the state is the values of variables.
For example, suppose we have variables x
and y
whose values are 23
and 42
respectively (and no other variables). Then we could write the state as
$$[x mapsto 23, y mapsto 42]$$
If we run the program
x = 1 + y
the state will change to $[x mapsto 43, y mapsto 42]$. When we declare a local variable, the state will be extended temporarily with that variable.
There are many other kinds of state, such as:
- in an object-oriented language each object has its own state, namely the values of its attributes
- a finite state automaton has states, obviously
In general, there is going to be a set $S$ of all possible states. For instance, 1 GB of memory corresponds to $S$ with $2^{2^{30}}$ elements because that's how many states there are for 1 GB of memory. A program which uses state and computes a value of type $A$ can then be thought of as a function $S to A times S$: it takes the initial state $s in S$ and returns a pair $(a, s')$ where $a$ is the computed value and $s'$ the final state.
It is not true that functional languages have no state! The pure functional languages such as Haskell and do not have built-in state, but other functional languages do have state. For instance OCaml and SML both have references, which are just mutable memory locations, so they have state. Racket and Scheme have state as well, and they are functional languages.
Perhaps a clarification is in order: a language is functional if functions are values, which means that we can do with functions whatever we can do with other values (pass them around, make arrays of functions, etc.). For some reason people often confuse pure and functional languages.
$endgroup$
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "419"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
vesii is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f104565%2fthe-idea-behind-the-state-of-imperative-languages%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
The simplest kind of state is the configuration of memory. In C this memory is accessed through variables (and arrays and pointers, but let us ignore those), so the state is the values of variables.
For example, suppose we have variables x
and y
whose values are 23
and 42
respectively (and no other variables). Then we could write the state as
$$[x mapsto 23, y mapsto 42]$$
If we run the program
x = 1 + y
the state will change to $[x mapsto 43, y mapsto 42]$. When we declare a local variable, the state will be extended temporarily with that variable.
There are many other kinds of state, such as:
- in an object-oriented language each object has its own state, namely the values of its attributes
- a finite state automaton has states, obviously
In general, there is going to be a set $S$ of all possible states. For instance, 1 GB of memory corresponds to $S$ with $2^{2^{30}}$ elements because that's how many states there are for 1 GB of memory. A program which uses state and computes a value of type $A$ can then be thought of as a function $S to A times S$: it takes the initial state $s in S$ and returns a pair $(a, s')$ where $a$ is the computed value and $s'$ the final state.
It is not true that functional languages have no state! The pure functional languages such as Haskell and do not have built-in state, but other functional languages do have state. For instance OCaml and SML both have references, which are just mutable memory locations, so they have state. Racket and Scheme have state as well, and they are functional languages.
Perhaps a clarification is in order: a language is functional if functions are values, which means that we can do with functions whatever we can do with other values (pass them around, make arrays of functions, etc.). For some reason people often confuse pure and functional languages.
$endgroup$
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
add a comment |
$begingroup$
The simplest kind of state is the configuration of memory. In C this memory is accessed through variables (and arrays and pointers, but let us ignore those), so the state is the values of variables.
For example, suppose we have variables x
and y
whose values are 23
and 42
respectively (and no other variables). Then we could write the state as
$$[x mapsto 23, y mapsto 42]$$
If we run the program
x = 1 + y
the state will change to $[x mapsto 43, y mapsto 42]$. When we declare a local variable, the state will be extended temporarily with that variable.
There are many other kinds of state, such as:
- in an object-oriented language each object has its own state, namely the values of its attributes
- a finite state automaton has states, obviously
In general, there is going to be a set $S$ of all possible states. For instance, 1 GB of memory corresponds to $S$ with $2^{2^{30}}$ elements because that's how many states there are for 1 GB of memory. A program which uses state and computes a value of type $A$ can then be thought of as a function $S to A times S$: it takes the initial state $s in S$ and returns a pair $(a, s')$ where $a$ is the computed value and $s'$ the final state.
It is not true that functional languages have no state! The pure functional languages such as Haskell and do not have built-in state, but other functional languages do have state. For instance OCaml and SML both have references, which are just mutable memory locations, so they have state. Racket and Scheme have state as well, and they are functional languages.
Perhaps a clarification is in order: a language is functional if functions are values, which means that we can do with functions whatever we can do with other values (pass them around, make arrays of functions, etc.). For some reason people often confuse pure and functional languages.
$endgroup$
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
add a comment |
$begingroup$
The simplest kind of state is the configuration of memory. In C this memory is accessed through variables (and arrays and pointers, but let us ignore those), so the state is the values of variables.
For example, suppose we have variables x
and y
whose values are 23
and 42
respectively (and no other variables). Then we could write the state as
$$[x mapsto 23, y mapsto 42]$$
If we run the program
x = 1 + y
the state will change to $[x mapsto 43, y mapsto 42]$. When we declare a local variable, the state will be extended temporarily with that variable.
There are many other kinds of state, such as:
- in an object-oriented language each object has its own state, namely the values of its attributes
- a finite state automaton has states, obviously
In general, there is going to be a set $S$ of all possible states. For instance, 1 GB of memory corresponds to $S$ with $2^{2^{30}}$ elements because that's how many states there are for 1 GB of memory. A program which uses state and computes a value of type $A$ can then be thought of as a function $S to A times S$: it takes the initial state $s in S$ and returns a pair $(a, s')$ where $a$ is the computed value and $s'$ the final state.
It is not true that functional languages have no state! The pure functional languages such as Haskell and do not have built-in state, but other functional languages do have state. For instance OCaml and SML both have references, which are just mutable memory locations, so they have state. Racket and Scheme have state as well, and they are functional languages.
Perhaps a clarification is in order: a language is functional if functions are values, which means that we can do with functions whatever we can do with other values (pass them around, make arrays of functions, etc.). For some reason people often confuse pure and functional languages.
$endgroup$
The simplest kind of state is the configuration of memory. In C this memory is accessed through variables (and arrays and pointers, but let us ignore those), so the state is the values of variables.
For example, suppose we have variables x
and y
whose values are 23
and 42
respectively (and no other variables). Then we could write the state as
$$[x mapsto 23, y mapsto 42]$$
If we run the program
x = 1 + y
the state will change to $[x mapsto 43, y mapsto 42]$. When we declare a local variable, the state will be extended temporarily with that variable.
There are many other kinds of state, such as:
- in an object-oriented language each object has its own state, namely the values of its attributes
- a finite state automaton has states, obviously
In general, there is going to be a set $S$ of all possible states. For instance, 1 GB of memory corresponds to $S$ with $2^{2^{30}}$ elements because that's how many states there are for 1 GB of memory. A program which uses state and computes a value of type $A$ can then be thought of as a function $S to A times S$: it takes the initial state $s in S$ and returns a pair $(a, s')$ where $a$ is the computed value and $s'$ the final state.
It is not true that functional languages have no state! The pure functional languages such as Haskell and do not have built-in state, but other functional languages do have state. For instance OCaml and SML both have references, which are just mutable memory locations, so they have state. Racket and Scheme have state as well, and they are functional languages.
Perhaps a clarification is in order: a language is functional if functions are values, which means that we can do with functions whatever we can do with other values (pass them around, make arrays of functions, etc.). For some reason people often confuse pure and functional languages.
answered 3 hours ago
Andrej BauerAndrej Bauer
20.1k14585
20.1k14585
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
add a comment |
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
$begingroup$
Great answer, thank you!
$endgroup$
– vesii
3 hours ago
add a comment |
vesii is a new contributor. Be nice, and check out our Code of Conduct.
vesii is a new contributor. Be nice, and check out our Code of Conduct.
vesii is a new contributor. Be nice, and check out our Code of Conduct.
vesii is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Computer Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f104565%2fthe-idea-behind-the-state-of-imperative-languages%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown