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

Referring to a character in 3rd person when they have amnesia

Why we learn compiler?

Working hours and productivity expectations for game artists and programmers

Can ThermodynamicData be used with NSolve?

Does a windmilling propeller create more drag than a stopped propeller in an engine out scenario

How would fantasy dwarves exist, realistically?

Cycling to work - 30mile return

Is my homebrew Awakened Bear race balanced?

How can sister protect herself from impulse purchases with a credit card?

Does the US Supreme Court vote using secret ballots?

Failing students when it might cause them economic ruin

Why is the S-duct intake on the Tu-154 uniquely oblong?

on the truth quest vs in the quest for truth

Is it possible to determine from only a photo of a cityscape whether it was taken close with wide angle or from a distance with zoom?

Why use a retrograde orbit?

How come Arya Stark wasn't hurt by this in Game of Thrones Season 8 Episode 5?

Save my secrets!

pwaS eht tirsf dna tasl setterl fo hace dorw

Why wear sunglasses in indoor velodromes?

When did Britain learn about the American Declaration of Independence?

How can I monitor the bulk API limit?

Why didn't Daenerys' advisers suggest assassinating Cersei?

Should I twist DC power and ground wires from a power supply?

Can I get the output of a command line program with TeX (using e.g. read18)?



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
    7 hours ago






  • 1




    $begingroup$
    Why are you studying in university at all? You could just take a professional course on programming.
    $endgroup$
    – Yuval Filmus
    7 hours ago










  • $begingroup$
    Well, I am learning other courses in computer science as well :P
    $endgroup$
    – AHF
    7 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
    7 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
    49 mins 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
    7 hours ago






  • 1




    $begingroup$
    Why are you studying in university at all? You could just take a professional course on programming.
    $endgroup$
    – Yuval Filmus
    7 hours ago










  • $begingroup$
    Well, I am learning other courses in computer science as well :P
    $endgroup$
    – AHF
    7 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
    7 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
    49 mins 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 7 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
    7 hours ago






  • 1




    $begingroup$
    Why are you studying in university at all? You could just take a professional course on programming.
    $endgroup$
    – Yuval Filmus
    7 hours ago










  • $begingroup$
    Well, I am learning other courses in computer science as well :P
    $endgroup$
    – AHF
    7 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
    7 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
    49 mins 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
    7 hours ago






  • 1




    $begingroup$
    Why are you studying in university at all? You could just take a professional course on programming.
    $endgroup$
    – Yuval Filmus
    7 hours ago










  • $begingroup$
    Well, I am learning other courses in computer science as well :P
    $endgroup$
    – AHF
    7 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
    7 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
    49 mins 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
7 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
7 hours ago




1




1




$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
7 hours ago




$begingroup$
Why are you studying in university at all? You could just take a professional course on programming.
$endgroup$
– Yuval Filmus
7 hours ago












$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
7 hours ago




$begingroup$
Well, I am learning other courses in computer science as well :P
$endgroup$
– AHF
7 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
7 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
7 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
49 mins 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
49 mins ago











3 Answers
3






active

oldest

votes


















3












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




















    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$

      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$













        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









        3












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

















          3












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















            3












            3








            3





            $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 6 hours ago









            Yuval FilmusYuval Filmus

            199k15190353




            199k15190353





















                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 7 hours ago









                    SiluPandaSiluPanda

                    3398




                    3398





















                        1












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

                          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












                            1








                            1





                            $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 1 hour 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 2 hours ago









                            Obmerk KronenObmerk Kronen

                            1113




                            1113




                            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.






















                                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

                                Log på Navigationsmenu

                                Wonderful Copenhagen (sang) Eksterne henvisninger | NavigationsmenurSide på frankloesser.comWonderful Copenhagen

                                Detroit Tigers Spis treści Historia | Skład zespołu | Sukcesy | Członkowie Baseball Hall of Fame | Zastrzeżone numery | Przypisy | Menu nawigacyjneEncyclopedia of Detroit - Detroit TigersTigers Stadium, Detroit, MITigers Timeline 1900sDetroit Tigers Team History & EncyclopediaTigers Timeline 1910s1935 World Series1945 World Series1945 World Series1984 World SeriesComerica Park, Detroit, MI2006 World Series2012 World SeriesDetroit Tigers 40-Man RosterDetroit Tigers Coaching StaffTigers Hall of FamersTigers Retired Numberse