Berkeley CSUA MOTD:Entry 30345
Berkeley CSUA MOTD
 
WIKI | FAQ | Tech FAQ
http://csua.com/feed/
2025/05/24 [General] UID:1000 Activity:popular
5/24    

2004/5/21-22 [Computer/SW/Compilers] UID:30345 Activity:very high
5/21    I was not a CS major and never took the compiler class.  What is
        a good book to help me write a compiler?  And what about interpreter?
        Do they basically involve the same issues except code generation and
        optimization?
        \_ Use the book by Robert Mak, called "Writing Interpreters and
           Compilers in C++." It's a practical, hands-on "lab" type book which
           doesn't get bogged down in too much theory. It's a lot of book to go
           through, but if you pace yourself and follow the examples you'll
           have a good, practical knowledge about writing interpreters and
           compilers. I would avoid theory books such as the Dragon book since
           from what you've indicated you probably want practice over theory,
           (I doubt you're planning to write the next ocaml or haskel or some
           other junk language that will never see the light of day...) Also,
           compilers and interpreters are no longer written in the sense that
           you think of. Nowadays people use metainterpreters/compilers to
           build stuff like this (i.e. lex and yacc).
        \_ Oh God!!! Here we go with everyone responding about how great the
           dragon book and CLR are.
           \_ Let me be the first to say what a piece of crap the dragon book
              was (is).  It's written so badly it often took me 5-6 reads to
              understand a paragraph, often requiring me to diagram what the
              author was writing.  The book seems to go to great lengths to
              avoid clear examples too, which makes it more fun.
                \_ agree, this book uses the most cryptic English ever.
        \_ You should take basic CS classes before reading the compiler book.
           Otherwise it'll be easy to get lost. Do you know regular/push-down
           and other Chomsky-hierarchy shit? If not you better get to know
           them before you get into compilers.
           \_ agree on basic CS courses, I dunno what chom-whatever was, and
              I still got thru this course. you basically need to know data
              structures and be reasonably decent at programming.
        \_ I took CS164 (w/ Hilfinger, no less) but by the time I graduated, I
           totally forgot most of the stuff I learned. What are some actual
           applications of writing a lexer/parser as opposed to taking
           something off the shelf or just putting together a very simple
           language that is easily parsed by Perl?
           \_ None whatsoever, since it's already been proven that current
             languages (C, Pascal, scheme, lisp, forth or any fully functional
             ALGOG type language) are as powerful as langauges can get. In
             other words all modern computer programming languages are
             essentially equivalent and it is impossible to write a more
             functional language than what is already out there. The
             people who are trying to invent new languages are merely
             wasting time and are essentially arguing about style rather
             than substance. --williamc
             \_ Not exactly. Though programming languages that are Turing
                Complete are equally powerful, some are more expressive
                than others -- this is something you can quantify using
                a model like Denotational Semantics.
                      \- if you think the dragon book is confusing, have you
                         tried reading anything by Christopher Strachey? --psb
                \_ That's true, certain languages are definitely more apt
                   at doing certain things than others (i.e. you can do
                   things in Perl much more quickly than in C or Java and
                   vice versa). However, the point is that there isn't
                   anything that really requires another language that
                   isn't already out there. We've been at OOP for what,
                   the past 20-30 years? Pattern programming has never
                   really taken off except in very fundemental class
                   design. So what's really left to "invent" in a
                   new language? If you argue for better parralleism
                   for MPAs I'd say we had languages like that with
                   Modula 2/3. --wllliamc
                   \_ One idea I was toying with was separating 'object' from
                      'data structure' in the language.  The language library
                      provides mathematical objects for you to use:
                      (graphs, sets, trees, etc), and changes the
                      implementation (at compile time) depending on how they
                      are used, in the same way that databases do query
                      optimization.  I don't think this has been done yet.
                      I think the field of 'improving tools' for programmers
                      and people representing knowledge is wide open. -- ilyas
                      \_ The Self virtual machine will change the machine
                         code implementation of your data structure depending

                         on how it is used. And in a prototype-based language,
                         like Self, it's pretty easy to define interfaces
                         that change behavior as you use them.
                         \_ I think what I want is for the compiler to do this,
                            not the programmer.  Say if you use a set but only
                            iterate over it, an array will do, but if you do
                            random access, you want a hashtable.  A compiler
                            can figure these things out, and substitute the
                            right data structure, while a programmer can think
                            about properties of sets themselves.  It's cool
                            that self does this, but I wonder if it does
                            'complexity analysis' to figure out what data
                            struct to use like "this set is accessed randomly
                            a linear number of times, so we want a data struct
                            which supports random access in constant time", and
                            so on.  These are the kinds of decisions a
                            programmer makes, and it would neat if occasionally
                            the compiler could take over this job. -- ilyas

           Actually, looking back, I think part of the reason I don't remember
           anything is that I took it with Hilfnger and was too busy
           deciphering his project specs and doing the projects and not busy
           enough learning the theory and applications... but at least I can
           still pick up something like the Java or JVM spec and understand it.
           \_ Manycompiler/interpreters are for some very specialized language.
           \_ Many compiler/interpreters are for some very specialized language.
              It only has one application, and you might not even recognize
              it as a programming language.
2025/05/24 [General] UID:1000 Activity:popular
5/24    

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
	...
2013/4/29-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:54665 Activity:nil
4/29    Why were C and Java designed to require "break;" statements for a
        "case" section to terminate rather than falling-through to the next
        section?  99% of the time poeple want a "case" section to terminate.
        In fact some compilers issue warning if there is no "break;" statement
        in a "case" section.  Why not just design the languages to have
        termination as the default behavior, and provide a "fallthru;"
	...
2012/12/18-2013/1/24 [Computer/SW/Languages/Perl] UID:54561 Activity:nil
12/18   Happy 25th birthday Perl, and FUCK YOU Larry Wall for fucking up
        the computer science formalism that sets back compilers development
        back for at least a decade:
        http://techcrunch.com/2012/12/18/print-happy-25th-birthday-perl
        \_ I tried to learn Perl but was scared away by it.  Maybe scripting
           lanauages have to be like that in order to work well?
	...
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
	...
2010/1/22-30 [Computer/HW/Laptop, Computer/SW/OS/OsX] UID:53655 Activity:high
1/22    looking to buy a new development laptop
        needs ssdrive, >6 hr possible batt life, and runs linux reasonably
        Anyone have a recommendation? Thx.
        \_ thinkpad t23 w ssdrive and battery inplace of drive bay
        \_ Ever wondered what RICHARD STALLMAN uses for a laptop?  Well,
           wonder no more!
	...
2010/1/12-29 [Computer/SW/Apps/Media] UID:53627 Activity:kinda low
1/12    How do I get a job NOT related to internet DNS social network cloud
        twitter GOOG EC2 amazon API ???
        \_ A CS job not related to API?
        \_ Chip design, or maybe software that does chip design. What is
           your major? How about game developer?
        \_ DNS? DNS? What era ado you live in? I agree that social network
	...
2009/8/31-9/9 [Computer/SW/Compilers] UID:53312 Activity:nil
8/31    I'm trying to learn ActionScript, like a step by step tutorial.
        The site at http://www.actionscript.org/resources/categories/Tutorials/Flash/Beginner
        isn't well organized. It doesn't explain how to get started with
        an editor, compiler, IDE. And should I even learn AS2 when you can
        learn AS3? Is Adobe Flash CS4 >>> CS3 or just CS4 > CS3?
	...
2009/5/6-14 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:52961 Activity:kinda low
5/6     I'm sure you've seen web sites that distribute software by making
        a user fill out a form and then e-mailing the user a randomly
        generate link to the software that works just once. What software
        is used to do this? I'd like to distribute software in such a way.
        \_ "Software"?  What web server/web application environment
           are you using?
	...
2009/2/28-3/11 [Computer/SW/Compilers] UID:52661 Activity:nil
2/28    I'm looking for a recommendation of a compiler/IDE to use to
        develop C/C++ code under Linux. In school, we used jove/gcc and
        I still use emacs/vi and gcc to this day. However, it is really
        lacking. Under Windows I tried Visual Studio and there were some
        really nice things about it, although it was so overwhelming that
        after 6 months of occasional use I still didn't really know what I
	...
2009/1/13-22 [Computer/Theory] UID:52367 Activity:kinda low
1/13    I am writing a commandline parser for a class and I could use some
        tips for algorithms to use. (The project is over and done so I am
        not cheating, but I am dissatisfied with my end result.) I STFW and
        didn't come up with too much I liked. I read the source for some
        shells like tcsh and that is *WAY* too complicated and relies on
        a lot of other code. I know that browsers and other apps have
	...
2008/6/9-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Security] UID:50194 Activity:nil
6/8     CSUA code guru please help. I need to see my random number
        generator with a good seed (I just need random 18 bit
        identifiers). The usual time(NULL) is OK, except my program
        might be invoked faster than once a second, and seeding using
        time() produced the same result. I tried clock() but it seems
        to return 0. My program needs to be run in Linux/DOS (Watcom
	...