Why we learn compiler?How is a JIT compiler different from an ordinary compiler?compiler interaction with...
Why does Taylor’s series “work”?
Told to apply for UK visa before other visas, on UK-Spain-etc. visit
Managing heat dissipation in a magic wand
How can I monitor the bulk API limit?
Why does the setUID bit work inconsistently?
Why does the U.S military use mercenaries?
Why do academics prefer Mac/Linux?
I recently started my machine learning PhD and I have absolutely no idea what I'm doing
Divisor Rich and Poor Numbers
What's is the easiest way to purchase a stock and hold it
Does a windmilling propeller create more drag than a stopped propeller in an engine out scenario
Show that the characteristic polynomial is the same as the minimal polynomial
What were the "pills" that were added to solid waste in Apollo 7?
Why does string strummed with finger sound different from the one strummed with pick?
on the truth quest vs in the quest for truth
What technology would Dwarves need to forge titanium?
Should I twist DC power and ground wires from a power supply?
Why would you put your input amplifier in front of your filtering for an ECG signal?
Why we learn compiler?
How does this piece of code determine array size without using sizeof( )?
What do you call bracelets you wear around the legs?
Can a generation ship withstand its own oxygen and daily wear for many thousands of years?
Is my company merging branches wrong?
Alternative classical explanation of the Stern-Gerlach Experiment?
Why we learn compiler?
How is a JIT compiler different from an ordinary compiler?compiler interaction with OSWhat data is stored in the symbol table for a number token?Time complexity of a compilerc compiler source code for compiler constructionNew Assembler in compilerWhy would we want a self-hosting compiler?What is a batch compiler?Clear definitions of various terms related to top down parsers and classification of the sameLL1 grammer in compiler
$begingroup$
I am learning compiler in my Uni. I have been through all major compiler techniques like top-down parsing, bottom-up parsing, Lexical analyzer, Symbol table, etc. I have a good understanding of them, but I am still confused about the course.
What is the point of learning all these things? What are their applications? Where we use them? The main point is, if someone asks me, Why Compiler? What is the benefit of taking this course?
compilers
New contributor
$endgroup$
add a comment |
$begingroup$
I am learning compiler in my Uni. I have been through all major compiler techniques like top-down parsing, bottom-up parsing, Lexical analyzer, Symbol table, etc. I have a good understanding of them, but I am still confused about the course.
What is the point of learning all these things? What are their applications? Where we use them? The main point is, if someone asks me, Why Compiler? What is the benefit of taking this course?
compilers
New contributor
$endgroup$
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
3
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
1
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago
add a comment |
$begingroup$
I am learning compiler in my Uni. I have been through all major compiler techniques like top-down parsing, bottom-up parsing, Lexical analyzer, Symbol table, etc. I have a good understanding of them, but I am still confused about the course.
What is the point of learning all these things? What are their applications? Where we use them? The main point is, if someone asks me, Why Compiler? What is the benefit of taking this course?
compilers
New contributor
$endgroup$
I am learning compiler in my Uni. I have been through all major compiler techniques like top-down parsing, bottom-up parsing, Lexical analyzer, Symbol table, etc. I have a good understanding of them, but I am still confused about the course.
What is the point of learning all these things? What are their applications? Where we use them? The main point is, if someone asks me, Why Compiler? What is the benefit of taking this course?
compilers
compilers
New contributor
New contributor
New contributor
asked 9 hours ago
AHFAHF
111
111
New contributor
New contributor
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
3
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
1
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago
add a comment |
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
3
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
1
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
3
3
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
1
1
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
Let me break up several possible interpretations of your question:
What is the purpose of learning compilation?
There are several possible answers:
- So that you know how to build a compiler should you have to. This is not a good answer nowadays.
- Part of the goal of the computer science curriculum is to explain to you how a computer works, stopping at the hardware. This includes the operating system, file systems, the compiler, the network stack, and more.
- As a programmer, you will be using compilers. Sometimes it will be useful to know what happens under the hood. For example, understanding garbage collection will help you choose which language to use in embedded applications.
- Compilation is part of the standard curriculum, so you might get asked about it in interviews.
Why are they teaching me compilation?
Apart from the reasons listed above, there is an additional one: universities are very conservative. In the past it used to be more important to understand how compilers work. Nowadays this is less important, but change is slow, so material
that made sense 10 years ago is still being taught today.
That said, some universities might reform their compilation curriculum, for example by de-emphasizing parsing, concentrating on more exciting aspects such as optimization, memory management, dynamic and static analysis, and the like.
Why am I studying compilation?
As an aspiring programmer, your university training contains lots of apparently useless classes, for example calculus. People choose to go to university for various reasons - it's a rite of passage, an opportunity for socialization and finding a partner, and it might help you get a job; or even just family or peer pressure.
Some people do away with university training, preferring other formal training, or even self-training. Some of these people are very successful.
For whatever reason, you chose to attend university rather than any of these alternative routes. You should accept that university training is rather theoretical, and try to make the most out of it.
$endgroup$
add a comment |
$begingroup$
I have stumbled into this question ( and the whole CS site in general ), and I never actually studies CS officially, but I will try to answer. ( not in order of importance )
General :
I am not sure what country / terminology you are from but ( usually outside the US ) university is not a collage and a collage is not a university. while collages aim at precise jobs education, university is a broader education that aims at more general understanding and horizons.
On the same note, CS is more like Architecture rather than Building Engineering.
Architects aim at a broader, "big-picture" education. Building engineering is more about Details in the realization or application of the design.
You can learn to pilot an aircraft without knowing the mechanics of
how the aircraft works. But never a good pilot, let alone an
excellent one. same goes for a F-1 driver ( or any driver / operator
actually).In long terms contributions to society and progress and technology, who will score more : the aircraft pilot / Formula-1
driver or the people who designed the aircraft / car ( engines,
aerodynamics, technologies etc ? )
Designing a compiler means designing / creating the technology.
Using the language / programming / designing the software means
creating the application of that technology
More Specific
How do you think new languages / technologies are designed and born ? with old compilers ?
similar to above in one (important) word : research. this is where programming languages research is done. Not just a language that is the same in a new packaging. but a really new one.
Compiler teaches you how real world applications are working and how to design them.
Learning Compilers gives you with both theoretical and practical knowledge that is crucial in order to implement a programming language. It gives you a new level of understanding of a language in order to make better use of the language ( optimization is just one example ).
Sometimes just using a compiler is not enough. You need to optimize the compiler itself for your application.
There are certain things you can only do at compile time. see JIT as one exaple.
Compilers have a general structure that can be applied in many other applications, from debuggers to simulators to 3D applications to a browser and even a cmd / shell.
understanding compilers and how they work makes it super simple to understand all the rest. a bit like a deep understanding of math will help you to understand geometry or physics you can not do physics without the math. not on the same level.
Just using something (read: tool, device, software, programming language) is usually enough when everything goes as expected. But if something goes wrong, only a true understanding of the inner workings and details will help to fix it.
Even more specific ( to your concern regarding hiring )
Compilers are super elaborated / sophisticated systems ( architecturally speaking ).If you will say that can or have written a compiler by yourself - there will be no doubt as to your capabilities as a programmer. There is nothing you can not do in the SW realm. Interview over.
Pick your answer.
P.s.
try to change the "we" in your title to "anyone".
"Why would anyone learn compiler" ?
Does this question makes sense in a world that aims at progress ? ( even more - the High-tech world that supposed to lead that progress? )
If your question is aimed at yourself - e.g. why should you learn this subject - no one can really answer that but you. But you must agree that someone should...
.. and that someone will be from the cs field.
New contributor
$endgroup$
add a comment |
$begingroup$
Because you are a Computer Science major and you have to deal with all these.
A few months ago, I was also having the same question, while studying for the Computer Architecture finals, why am I even dealing with all these root level stuff, assembly code, optimizations while my friends from IT and Software development major learning new programming languages and frameworks which are going to help them in acing the software developer interviews.
Well, Computer Science deals with all that is involved between tiny logical gates to magical modern day software. While Software development is learning how to stay afloat in a vast ocean, Computer Science is advanced scuba diving. As you will go with the courses like, OS, Computer Architecture, Compilers, Theory of computation etc, everything will start making sense to you. I mean, EVERYTHING!
$endgroup$
add a comment |
Your Answer
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
});
}
});
AHF 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%2f109438%2fwhy-we-learn-compiler%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Let me break up several possible interpretations of your question:
What is the purpose of learning compilation?
There are several possible answers:
- So that you know how to build a compiler should you have to. This is not a good answer nowadays.
- Part of the goal of the computer science curriculum is to explain to you how a computer works, stopping at the hardware. This includes the operating system, file systems, the compiler, the network stack, and more.
- As a programmer, you will be using compilers. Sometimes it will be useful to know what happens under the hood. For example, understanding garbage collection will help you choose which language to use in embedded applications.
- Compilation is part of the standard curriculum, so you might get asked about it in interviews.
Why are they teaching me compilation?
Apart from the reasons listed above, there is an additional one: universities are very conservative. In the past it used to be more important to understand how compilers work. Nowadays this is less important, but change is slow, so material
that made sense 10 years ago is still being taught today.
That said, some universities might reform their compilation curriculum, for example by de-emphasizing parsing, concentrating on more exciting aspects such as optimization, memory management, dynamic and static analysis, and the like.
Why am I studying compilation?
As an aspiring programmer, your university training contains lots of apparently useless classes, for example calculus. People choose to go to university for various reasons - it's a rite of passage, an opportunity for socialization and finding a partner, and it might help you get a job; or even just family or peer pressure.
Some people do away with university training, preferring other formal training, or even self-training. Some of these people are very successful.
For whatever reason, you chose to attend university rather than any of these alternative routes. You should accept that university training is rather theoretical, and try to make the most out of it.
$endgroup$
add a comment |
$begingroup$
Let me break up several possible interpretations of your question:
What is the purpose of learning compilation?
There are several possible answers:
- So that you know how to build a compiler should you have to. This is not a good answer nowadays.
- Part of the goal of the computer science curriculum is to explain to you how a computer works, stopping at the hardware. This includes the operating system, file systems, the compiler, the network stack, and more.
- As a programmer, you will be using compilers. Sometimes it will be useful to know what happens under the hood. For example, understanding garbage collection will help you choose which language to use in embedded applications.
- Compilation is part of the standard curriculum, so you might get asked about it in interviews.
Why are they teaching me compilation?
Apart from the reasons listed above, there is an additional one: universities are very conservative. In the past it used to be more important to understand how compilers work. Nowadays this is less important, but change is slow, so material
that made sense 10 years ago is still being taught today.
That said, some universities might reform their compilation curriculum, for example by de-emphasizing parsing, concentrating on more exciting aspects such as optimization, memory management, dynamic and static analysis, and the like.
Why am I studying compilation?
As an aspiring programmer, your university training contains lots of apparently useless classes, for example calculus. People choose to go to university for various reasons - it's a rite of passage, an opportunity for socialization and finding a partner, and it might help you get a job; or even just family or peer pressure.
Some people do away with university training, preferring other formal training, or even self-training. Some of these people are very successful.
For whatever reason, you chose to attend university rather than any of these alternative routes. You should accept that university training is rather theoretical, and try to make the most out of it.
$endgroup$
add a comment |
$begingroup$
Let me break up several possible interpretations of your question:
What is the purpose of learning compilation?
There are several possible answers:
- So that you know how to build a compiler should you have to. This is not a good answer nowadays.
- Part of the goal of the computer science curriculum is to explain to you how a computer works, stopping at the hardware. This includes the operating system, file systems, the compiler, the network stack, and more.
- As a programmer, you will be using compilers. Sometimes it will be useful to know what happens under the hood. For example, understanding garbage collection will help you choose which language to use in embedded applications.
- Compilation is part of the standard curriculum, so you might get asked about it in interviews.
Why are they teaching me compilation?
Apart from the reasons listed above, there is an additional one: universities are very conservative. In the past it used to be more important to understand how compilers work. Nowadays this is less important, but change is slow, so material
that made sense 10 years ago is still being taught today.
That said, some universities might reform their compilation curriculum, for example by de-emphasizing parsing, concentrating on more exciting aspects such as optimization, memory management, dynamic and static analysis, and the like.
Why am I studying compilation?
As an aspiring programmer, your university training contains lots of apparently useless classes, for example calculus. People choose to go to university for various reasons - it's a rite of passage, an opportunity for socialization and finding a partner, and it might help you get a job; or even just family or peer pressure.
Some people do away with university training, preferring other formal training, or even self-training. Some of these people are very successful.
For whatever reason, you chose to attend university rather than any of these alternative routes. You should accept that university training is rather theoretical, and try to make the most out of it.
$endgroup$
Let me break up several possible interpretations of your question:
What is the purpose of learning compilation?
There are several possible answers:
- So that you know how to build a compiler should you have to. This is not a good answer nowadays.
- Part of the goal of the computer science curriculum is to explain to you how a computer works, stopping at the hardware. This includes the operating system, file systems, the compiler, the network stack, and more.
- As a programmer, you will be using compilers. Sometimes it will be useful to know what happens under the hood. For example, understanding garbage collection will help you choose which language to use in embedded applications.
- Compilation is part of the standard curriculum, so you might get asked about it in interviews.
Why are they teaching me compilation?
Apart from the reasons listed above, there is an additional one: universities are very conservative. In the past it used to be more important to understand how compilers work. Nowadays this is less important, but change is slow, so material
that made sense 10 years ago is still being taught today.
That said, some universities might reform their compilation curriculum, for example by de-emphasizing parsing, concentrating on more exciting aspects such as optimization, memory management, dynamic and static analysis, and the like.
Why am I studying compilation?
As an aspiring programmer, your university training contains lots of apparently useless classes, for example calculus. People choose to go to university for various reasons - it's a rite of passage, an opportunity for socialization and finding a partner, and it might help you get a job; or even just family or peer pressure.
Some people do away with university training, preferring other formal training, or even self-training. Some of these people are very successful.
For whatever reason, you chose to attend university rather than any of these alternative routes. You should accept that university training is rather theoretical, and try to make the most out of it.
answered 8 hours ago
Yuval FilmusYuval Filmus
199k15190354
199k15190354
add a comment |
add a comment |
$begingroup$
I have stumbled into this question ( and the whole CS site in general ), and I never actually studies CS officially, but I will try to answer. ( not in order of importance )
General :
I am not sure what country / terminology you are from but ( usually outside the US ) university is not a collage and a collage is not a university. while collages aim at precise jobs education, university is a broader education that aims at more general understanding and horizons.
On the same note, CS is more like Architecture rather than Building Engineering.
Architects aim at a broader, "big-picture" education. Building engineering is more about Details in the realization or application of the design.
You can learn to pilot an aircraft without knowing the mechanics of
how the aircraft works. But never a good pilot, let alone an
excellent one. same goes for a F-1 driver ( or any driver / operator
actually).In long terms contributions to society and progress and technology, who will score more : the aircraft pilot / Formula-1
driver or the people who designed the aircraft / car ( engines,
aerodynamics, technologies etc ? )
Designing a compiler means designing / creating the technology.
Using the language / programming / designing the software means
creating the application of that technology
More Specific
How do you think new languages / technologies are designed and born ? with old compilers ?
similar to above in one (important) word : research. this is where programming languages research is done. Not just a language that is the same in a new packaging. but a really new one.
Compiler teaches you how real world applications are working and how to design them.
Learning Compilers gives you with both theoretical and practical knowledge that is crucial in order to implement a programming language. It gives you a new level of understanding of a language in order to make better use of the language ( optimization is just one example ).
Sometimes just using a compiler is not enough. You need to optimize the compiler itself for your application.
There are certain things you can only do at compile time. see JIT as one exaple.
Compilers have a general structure that can be applied in many other applications, from debuggers to simulators to 3D applications to a browser and even a cmd / shell.
understanding compilers and how they work makes it super simple to understand all the rest. a bit like a deep understanding of math will help you to understand geometry or physics you can not do physics without the math. not on the same level.
Just using something (read: tool, device, software, programming language) is usually enough when everything goes as expected. But if something goes wrong, only a true understanding of the inner workings and details will help to fix it.
Even more specific ( to your concern regarding hiring )
Compilers are super elaborated / sophisticated systems ( architecturally speaking ).If you will say that can or have written a compiler by yourself - there will be no doubt as to your capabilities as a programmer. There is nothing you can not do in the SW realm. Interview over.
Pick your answer.
P.s.
try to change the "we" in your title to "anyone".
"Why would anyone learn compiler" ?
Does this question makes sense in a world that aims at progress ? ( even more - the High-tech world that supposed to lead that progress? )
If your question is aimed at yourself - e.g. why should you learn this subject - no one can really answer that but you. But you must agree that someone should...
.. and that someone will be from the cs field.
New contributor
$endgroup$
add a comment |
$begingroup$
I have stumbled into this question ( and the whole CS site in general ), and I never actually studies CS officially, but I will try to answer. ( not in order of importance )
General :
I am not sure what country / terminology you are from but ( usually outside the US ) university is not a collage and a collage is not a university. while collages aim at precise jobs education, university is a broader education that aims at more general understanding and horizons.
On the same note, CS is more like Architecture rather than Building Engineering.
Architects aim at a broader, "big-picture" education. Building engineering is more about Details in the realization or application of the design.
You can learn to pilot an aircraft without knowing the mechanics of
how the aircraft works. But never a good pilot, let alone an
excellent one. same goes for a F-1 driver ( or any driver / operator
actually).In long terms contributions to society and progress and technology, who will score more : the aircraft pilot / Formula-1
driver or the people who designed the aircraft / car ( engines,
aerodynamics, technologies etc ? )
Designing a compiler means designing / creating the technology.
Using the language / programming / designing the software means
creating the application of that technology
More Specific
How do you think new languages / technologies are designed and born ? with old compilers ?
similar to above in one (important) word : research. this is where programming languages research is done. Not just a language that is the same in a new packaging. but a really new one.
Compiler teaches you how real world applications are working and how to design them.
Learning Compilers gives you with both theoretical and practical knowledge that is crucial in order to implement a programming language. It gives you a new level of understanding of a language in order to make better use of the language ( optimization is just one example ).
Sometimes just using a compiler is not enough. You need to optimize the compiler itself for your application.
There are certain things you can only do at compile time. see JIT as one exaple.
Compilers have a general structure that can be applied in many other applications, from debuggers to simulators to 3D applications to a browser and even a cmd / shell.
understanding compilers and how they work makes it super simple to understand all the rest. a bit like a deep understanding of math will help you to understand geometry or physics you can not do physics without the math. not on the same level.
Just using something (read: tool, device, software, programming language) is usually enough when everything goes as expected. But if something goes wrong, only a true understanding of the inner workings and details will help to fix it.
Even more specific ( to your concern regarding hiring )
Compilers are super elaborated / sophisticated systems ( architecturally speaking ).If you will say that can or have written a compiler by yourself - there will be no doubt as to your capabilities as a programmer. There is nothing you can not do in the SW realm. Interview over.
Pick your answer.
P.s.
try to change the "we" in your title to "anyone".
"Why would anyone learn compiler" ?
Does this question makes sense in a world that aims at progress ? ( even more - the High-tech world that supposed to lead that progress? )
If your question is aimed at yourself - e.g. why should you learn this subject - no one can really answer that but you. But you must agree that someone should...
.. and that someone will be from the cs field.
New contributor
$endgroup$
add a comment |
$begingroup$
I have stumbled into this question ( and the whole CS site in general ), and I never actually studies CS officially, but I will try to answer. ( not in order of importance )
General :
I am not sure what country / terminology you are from but ( usually outside the US ) university is not a collage and a collage is not a university. while collages aim at precise jobs education, university is a broader education that aims at more general understanding and horizons.
On the same note, CS is more like Architecture rather than Building Engineering.
Architects aim at a broader, "big-picture" education. Building engineering is more about Details in the realization or application of the design.
You can learn to pilot an aircraft without knowing the mechanics of
how the aircraft works. But never a good pilot, let alone an
excellent one. same goes for a F-1 driver ( or any driver / operator
actually).In long terms contributions to society and progress and technology, who will score more : the aircraft pilot / Formula-1
driver or the people who designed the aircraft / car ( engines,
aerodynamics, technologies etc ? )
Designing a compiler means designing / creating the technology.
Using the language / programming / designing the software means
creating the application of that technology
More Specific
How do you think new languages / technologies are designed and born ? with old compilers ?
similar to above in one (important) word : research. this is where programming languages research is done. Not just a language that is the same in a new packaging. but a really new one.
Compiler teaches you how real world applications are working and how to design them.
Learning Compilers gives you with both theoretical and practical knowledge that is crucial in order to implement a programming language. It gives you a new level of understanding of a language in order to make better use of the language ( optimization is just one example ).
Sometimes just using a compiler is not enough. You need to optimize the compiler itself for your application.
There are certain things you can only do at compile time. see JIT as one exaple.
Compilers have a general structure that can be applied in many other applications, from debuggers to simulators to 3D applications to a browser and even a cmd / shell.
understanding compilers and how they work makes it super simple to understand all the rest. a bit like a deep understanding of math will help you to understand geometry or physics you can not do physics without the math. not on the same level.
Just using something (read: tool, device, software, programming language) is usually enough when everything goes as expected. But if something goes wrong, only a true understanding of the inner workings and details will help to fix it.
Even more specific ( to your concern regarding hiring )
Compilers are super elaborated / sophisticated systems ( architecturally speaking ).If you will say that can or have written a compiler by yourself - there will be no doubt as to your capabilities as a programmer. There is nothing you can not do in the SW realm. Interview over.
Pick your answer.
P.s.
try to change the "we" in your title to "anyone".
"Why would anyone learn compiler" ?
Does this question makes sense in a world that aims at progress ? ( even more - the High-tech world that supposed to lead that progress? )
If your question is aimed at yourself - e.g. why should you learn this subject - no one can really answer that but you. But you must agree that someone should...
.. and that someone will be from the cs field.
New contributor
$endgroup$
I have stumbled into this question ( and the whole CS site in general ), and I never actually studies CS officially, but I will try to answer. ( not in order of importance )
General :
I am not sure what country / terminology you are from but ( usually outside the US ) university is not a collage and a collage is not a university. while collages aim at precise jobs education, university is a broader education that aims at more general understanding and horizons.
On the same note, CS is more like Architecture rather than Building Engineering.
Architects aim at a broader, "big-picture" education. Building engineering is more about Details in the realization or application of the design.
You can learn to pilot an aircraft without knowing the mechanics of
how the aircraft works. But never a good pilot, let alone an
excellent one. same goes for a F-1 driver ( or any driver / operator
actually).In long terms contributions to society and progress and technology, who will score more : the aircraft pilot / Formula-1
driver or the people who designed the aircraft / car ( engines,
aerodynamics, technologies etc ? )
Designing a compiler means designing / creating the technology.
Using the language / programming / designing the software means
creating the application of that technology
More Specific
How do you think new languages / technologies are designed and born ? with old compilers ?
similar to above in one (important) word : research. this is where programming languages research is done. Not just a language that is the same in a new packaging. but a really new one.
Compiler teaches you how real world applications are working and how to design them.
Learning Compilers gives you with both theoretical and practical knowledge that is crucial in order to implement a programming language. It gives you a new level of understanding of a language in order to make better use of the language ( optimization is just one example ).
Sometimes just using a compiler is not enough. You need to optimize the compiler itself for your application.
There are certain things you can only do at compile time. see JIT as one exaple.
Compilers have a general structure that can be applied in many other applications, from debuggers to simulators to 3D applications to a browser and even a cmd / shell.
understanding compilers and how they work makes it super simple to understand all the rest. a bit like a deep understanding of math will help you to understand geometry or physics you can not do physics without the math. not on the same level.
Just using something (read: tool, device, software, programming language) is usually enough when everything goes as expected. But if something goes wrong, only a true understanding of the inner workings and details will help to fix it.
Even more specific ( to your concern regarding hiring )
Compilers are super elaborated / sophisticated systems ( architecturally speaking ).If you will say that can or have written a compiler by yourself - there will be no doubt as to your capabilities as a programmer. There is nothing you can not do in the SW realm. Interview over.
Pick your answer.
P.s.
try to change the "we" in your title to "anyone".
"Why would anyone learn compiler" ?
Does this question makes sense in a world that aims at progress ? ( even more - the High-tech world that supposed to lead that progress? )
If your question is aimed at yourself - e.g. why should you learn this subject - no one can really answer that but you. But you must agree that someone should...
.. and that someone will be from the cs field.
New contributor
edited 3 hours ago
New contributor
answered 4 hours ago
Obmerk KronenObmerk Kronen
1213
1213
New contributor
New contributor
add a comment |
add a comment |
$begingroup$
Because you are a Computer Science major and you have to deal with all these.
A few months ago, I was also having the same question, while studying for the Computer Architecture finals, why am I even dealing with all these root level stuff, assembly code, optimizations while my friends from IT and Software development major learning new programming languages and frameworks which are going to help them in acing the software developer interviews.
Well, Computer Science deals with all that is involved between tiny logical gates to magical modern day software. While Software development is learning how to stay afloat in a vast ocean, Computer Science is advanced scuba diving. As you will go with the courses like, OS, Computer Architecture, Compilers, Theory of computation etc, everything will start making sense to you. I mean, EVERYTHING!
$endgroup$
add a comment |
$begingroup$
Because you are a Computer Science major and you have to deal with all these.
A few months ago, I was also having the same question, while studying for the Computer Architecture finals, why am I even dealing with all these root level stuff, assembly code, optimizations while my friends from IT and Software development major learning new programming languages and frameworks which are going to help them in acing the software developer interviews.
Well, Computer Science deals with all that is involved between tiny logical gates to magical modern day software. While Software development is learning how to stay afloat in a vast ocean, Computer Science is advanced scuba diving. As you will go with the courses like, OS, Computer Architecture, Compilers, Theory of computation etc, everything will start making sense to you. I mean, EVERYTHING!
$endgroup$
add a comment |
$begingroup$
Because you are a Computer Science major and you have to deal with all these.
A few months ago, I was also having the same question, while studying for the Computer Architecture finals, why am I even dealing with all these root level stuff, assembly code, optimizations while my friends from IT and Software development major learning new programming languages and frameworks which are going to help them in acing the software developer interviews.
Well, Computer Science deals with all that is involved between tiny logical gates to magical modern day software. While Software development is learning how to stay afloat in a vast ocean, Computer Science is advanced scuba diving. As you will go with the courses like, OS, Computer Architecture, Compilers, Theory of computation etc, everything will start making sense to you. I mean, EVERYTHING!
$endgroup$
Because you are a Computer Science major and you have to deal with all these.
A few months ago, I was also having the same question, while studying for the Computer Architecture finals, why am I even dealing with all these root level stuff, assembly code, optimizations while my friends from IT and Software development major learning new programming languages and frameworks which are going to help them in acing the software developer interviews.
Well, Computer Science deals with all that is involved between tiny logical gates to magical modern day software. While Software development is learning how to stay afloat in a vast ocean, Computer Science is advanced scuba diving. As you will go with the courses like, OS, Computer Architecture, Compilers, Theory of computation etc, everything will start making sense to you. I mean, EVERYTHING!
answered 8 hours ago
SiluPandaSiluPanda
3398
3398
add a comment |
add a comment |
AHF is a new contributor. Be nice, and check out our Code of Conduct.
AHF is a new contributor. Be nice, and check out our Code of Conduct.
AHF is a new contributor. Be nice, and check out our Code of Conduct.
AHF 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%2f109438%2fwhy-we-learn-compiler%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
$begingroup$
I think that historically, compiler design has been a driving force behind a lot of research in math and (theoretical) computer science. Also, it's perhaps a nice example of a challenging program with many non-trivial pieces. The benefits of solving these problems efficiently has considerable practical value as well.
$endgroup$
– Juho
9 hours ago
3
$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
9 hours ago
$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
9 hours ago
1
$begingroup$
Compilers, Context Free Grammars and such are a great example on how you can "understand" the exact meaning of a program, while only knowing the formalism of the language the program is written in, which is its syntax.
$endgroup$
– Emanuele Giona
8 hours ago
$begingroup$
As a practical matter you should know that compilers, like other complex programs, have bugs in them. I have found and documented compiler bugs in projects I've worked on over the years and it was immensely helpful to have been exposed to basic compiler design to understand the bugs and figure out how to work around them. The same goes for assembly language basics in order to spot the coding errors the compilers made.
$endgroup$
– Kyle Jones
2 hours ago