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













2












$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?










share|cite|improve this question







New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$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


















2












$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?










share|cite|improve this question







New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$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
















2












2








2


1



$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?










share|cite|improve this question







New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$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






share|cite|improve this question







New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|cite|improve this question







New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|cite|improve this question




share|cite|improve this question






New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked 9 hours ago









AHFAHF

111




111




New contributor



AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




AHF is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.














  • $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






  • 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












3 Answers
3






active

oldest

votes


















4












$begingroup$

Let me break up several possible interpretations of your question:



What is the purpose of learning compilation?



There are several possible answers:




  1. So that you know how to build a compiler should you have to. This is not a good answer nowadays.

  2. 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.

  3. 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.

  4. 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.






share|cite|improve this answer









$endgroup$





















    2












    $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.






    share|cite|improve this answer










    New contributor



    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.





    $endgroup$





















      1












      $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!






      share|cite|improve this answer









      $endgroup$














        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.










        draft saved

        draft discarded


















        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









        4












        $begingroup$

        Let me break up several possible interpretations of your question:



        What is the purpose of learning compilation?



        There are several possible answers:




        1. So that you know how to build a compiler should you have to. This is not a good answer nowadays.

        2. 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.

        3. 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.

        4. 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.






        share|cite|improve this answer









        $endgroup$


















          4












          $begingroup$

          Let me break up several possible interpretations of your question:



          What is the purpose of learning compilation?



          There are several possible answers:




          1. So that you know how to build a compiler should you have to. This is not a good answer nowadays.

          2. 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.

          3. 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.

          4. 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.






          share|cite|improve this answer









          $endgroup$
















            4












            4








            4





            $begingroup$

            Let me break up several possible interpretations of your question:



            What is the purpose of learning compilation?



            There are several possible answers:




            1. So that you know how to build a compiler should you have to. This is not a good answer nowadays.

            2. 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.

            3. 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.

            4. 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.






            share|cite|improve this answer









            $endgroup$



            Let me break up several possible interpretations of your question:



            What is the purpose of learning compilation?



            There are several possible answers:




            1. So that you know how to build a compiler should you have to. This is not a good answer nowadays.

            2. 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.

            3. 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.

            4. 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.







            share|cite|improve this answer












            share|cite|improve this answer



            share|cite|improve this answer










            answered 8 hours ago









            Yuval FilmusYuval Filmus

            199k15190354




            199k15190354























                2












                $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.






                share|cite|improve this answer










                New contributor



                Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.





                $endgroup$


















                  2












                  $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.






                  share|cite|improve this answer










                  New contributor



                  Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.





                  $endgroup$
















                    2












                    2








                    2





                    $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.






                    share|cite|improve this answer










                    New contributor



                    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.





                    $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.







                    share|cite|improve this answer










                    New contributor



                    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.








                    share|cite|improve this answer



                    share|cite|improve this answer








                    edited 3 hours ago





















                    New contributor



                    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.








                    answered 4 hours ago









                    Obmerk KronenObmerk Kronen

                    1213




                    1213




                    New contributor



                    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.




                    New contributor




                    Obmerk Kronen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.

























                        1












                        $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!






                        share|cite|improve this answer









                        $endgroup$


















                          1












                          $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!






                          share|cite|improve this answer









                          $endgroup$
















                            1












                            1








                            1





                            $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!






                            share|cite|improve this answer









                            $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!







                            share|cite|improve this answer












                            share|cite|improve this answer



                            share|cite|improve this answer










                            answered 8 hours ago









                            SiluPandaSiluPanda

                            3398




                            3398






















                                AHF is a new contributor. Be nice, and check out our Code of Conduct.










                                draft saved

                                draft discarded


















                                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.




                                draft saved


                                draft discarded














                                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





















































                                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







                                Popular posts from this blog

                                Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

                                Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

                                Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...