| ||||||
| 5/16 |
| 2006/1/17-20 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:41399 Activity:low |
1/17 Java compiler help please. I have some code like this:
import com.foocorp.foolibrary;
class myClass {
private static final boolean useFooLib=false;
{
if(useFooLib)
foolibrary.FooClass.doStuff();
}
}
And the problem is that if I turn off useFooLib and try to compile
with out foolibrary.jar the compile fails. Is there any way I can make
this work without distributing foolibrary.jar with every build?
\_ I haven't had to think about this for a while, but maybe you
can use a custom class loader? What about reflection?
\_ Yeah, I went with that, starting with Class.forName() as
suggested below. Between reflection and commenting out multiple
blocks it seemed like the lesser of two evils. Thanks. -OP
\_ Interesting I was not aware that javac allows you to delay
type checking, to see whether method doStuff() exists or not.
Thanks for pointing this out. Motd is great!
\_ Um, that's not what I said. I used Class.forName() to
dynamically load the class, then I used reflection to
get the methods I want, then invoke those methods on
the class object (thet are static methods).
\_ I think the cleaner way to do this is to create an
interface -- FooClassInterface. Include that in your
normal code path, but you don't need to provide an
implementation. Make FooClass implement that interface
then you can do:
if (useFooLib)
FooClassInterface foo =
(FooClassInterface) Class.forName(...).newInstance();
foo.doStuff();
I think that's preferable. - guy who made below suggestion.
\_ Won't work. FooClass is a partially-obfuscated JAR
licensed from another company.
\_ Java is not C. If this were C, the statement "if ..." would be seen
as dead code due to constant propagation. However javac does flow
analysis before optimizations so requires method/var resolution
first and you can't possibly compile with safety without foolibrary.
If you must include such a dead code, manually comment out the dead
code or just include the foolibrary.class|java with the distro.
Go compilers!!!
\_ Don't import foolibrary. Do this:
if (useFooLib)
Class.forName("com.foocorp.foolibrary.FooClass").doStuff(); |
| 2005/12/21-23 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:41104 Activity:nil |
12/21 I have a complex chuck of C code, and somewhere it in, I'm freeing
a bad pointer. However, this doesn't happen if I run it under
gdb. Does anyone know how I can figure out where it's crashing?
\_ Valgrind is usually pretty good at finding this stuff. It's slow,
though. If the program runs under FreeBSD, you can try running it
with MALLOC_OPTIONS=AJX.
\_ Is it running in gdb that causes the crash or is it running
a debug build that causes the crash? Debug builds null all
memory at allocation, I believe there is a way you can tell
gcc to set all the memory to some other value than null instead.
If all memory is nulled then freeing that null value will do
nothing, but in the non debug mode you will free a random int
and boom, your code will crash.
\_ No, running in gdb DOESN'T crash. Running it normally does.
\_ It's obviously freeing an uninitialized pointer. In a
a debug build all allocated memory is nulled so you are
going to free null, which is valid and doesn't cause a
crash. There is a way to make debug builds (or maybe gdb)
not null out memory. It has been a while since I debugged
c, but I know for a fact that is your issue.
\_ try attaching to the pid after it starts?
\_ gdb the core dump
\_ I don't seem to have a core dump. It just seg faults. (on
linux) Is there a way to force a core dump when it frees a
bad pointer? (Sometimes it gives an error: free(): invalid
pointer 0x9091420!)
\_ Don't segfaults dump core? Do you have ulimit set to 0?
\_ ulimit in unlimited. Apprently they don't always
dump.
\_ Is it setuid? -tom
\_ no.
\_ Above suggestion, and this sort of failure-to-reproduce could mean
the bug is in something time-dependant, either using a clock, net IO
or bad synchronization between threads. Heisenbugs suck.
\_ I think it's because I have lots of if(x) {free(x);} stuff.
I could see this happening if I didn't initialize all my
pointers to NULL. (I understand gdb helpfully
automatically initilizes pointers to NULL for you.) However,
I can't find any uninitialized variables.
\_ if (x) { free(x); } is pointless if you're using the standard
C library. free(NULL) is a no-op. Also, if it's a Heisenbug,
check that you're not overflowing stack frames. If you're
worried about uninitialized variables, make sure you compile
with all compiler warnings on.
\_ Good point.
\_ How about doing some good old-fashioned trace logging to pinpoint
the crash? Unless trace logging prevents the crash from happening
as well! |
| 2005/7/15-18 [Computer/SW/Compilers] UID:38645 Activity:nil |
7/15 I am curious how various employers rate job performance for SAs,
S/W engineers, and similar. Lines of code, bugs fixed, bugs
introduced, speed, optimization, and so on all have various
problems. Is it mostly by a gut feeling or are there good metrics
that can be applied? Similarly, how does one determine how many
SAs, S/W engineers, and such it might take to complete a given
project? I've always relied on a combination of observation (for
performance) and analogies to past projects but management would
like something more formalized. I'm curious how you and your company
do it. Projects could be large or small. If I need Widget X in
one year how would you determine how many people I'd need to
start as a rough estimate? --dim |
| 2005/5/27-6/2 [Computer/SW/Compilers] UID:37861 Activity:nil |
5/27 GDB quetion. On Linux, When I use gdb to attach to a process that has
many modules, does gdb automatically load all the symbol files for all
the modules? I'm trying to figure out why gdb itself is using so much
memory (100MB+) on my system. Thanks.
\_ why shouldn't it? 100MB sounds pretty standard for projects these days.
\_ why shouldn't it? 100MB sounds pretty standard for projects these
days.
days. -- OP
\_ Well, it's an embedded system with only 128MB of RAM.
\_ Well, it's an embedded system with only 128MB of RAM. -- OP
\_ thank god for virtual memory then
\_ The problem is that it swaps too much which slows down my
threads and screws up the timing. So it's hard to debug
problems that occurs only under certain timing condition.
--- OP
\_ You might want to look into remote debugging using gdb.
See the gdbserver and gdbreplay tools. -gm
\_ Will do. Thanks! |
| 2005/4/13-15 [Computer/SW/Compilers, Computer/SW/Editors/Vi] UID:37175 Activity:kinda low |
4/13 80 column is such a 70ish idea! It's year 2005, 3 whole decades
later. Come on guys! It's time to move on! Let's move to 110
columns. As our resolutions get higher and screens get bigger,
we can easily afford the 1 column per year trend. Let the 110
column revolution begin! -Revolutionist
\_ 80 columns isn't just about vt100; it is hard to visually
scan longer lines. -tom
\_ You know what's even harder to read? Code that spans multiple
lines. One statement = one line, them's the rules! It produces
better, more holistically aesthetic code.
\_ With Java long method and class names and all those objects
and fields calling().here().and().calling.there it's kind
of hard to avoid it sometimes. Sad.
\_ Heathen. Submit to 80 columns or the Fortan IV compiler
shall smite thee!
\_ Yeah, yeah get in the fuckin truck. Time for you to go where all
all the revolutionists go.
\_ 110 columns? I thought the next supported size is 132 columns.
\- what is the max width for "standard vi"?
\_ I've used traditional vi on fairly wide terminals (at least
140 columns); it seems to work fine as long as the terminal
width is a multiple of the tab size. --mconst |
| 2005/3/30-31 [Computer/SW/RevisionControl, Computer/SW/Compilers] UID:36979 Activity:high |
3/30 Is it Kosher to write a closed-source program which calles a GPL
program on the command line but does not link to it?
\_ Very likely yes, but people will disagree with you. For
instance, I'm sure there are many apps which call gcc, or
cvs/svn (not sure about the license on the latter 2, but for
gcc, I think it's GPL-not-LGPL.
\_ I think it depends whether you are bundling the GPL utility
with your program. If you just call "mv" or whatever,
GPL has nothing to say about that, but if you include a
binary in your closed-source distribution, I think that's
a violation. -tom
\_ What about a closed-source distribution which includes the
binary of the GPL as well as the source for only the GPL
component. The closed-source project would just call
"$GPLPROG $ARGS" through a shell.
\_ I believe one of the complaints a lot of people have
about the GPL is that it requires you to open-source your
entire project if you use any GPL code in your
distribution. So, I don't think you can use it the way
you describe. -tom
\_ This is a complicated issue. One point of view is that it is not
only the code that is GPL'ed but also the calling interface,
provided that the calling interface does not conform to an
external "standard" (a non-gpl program that implements the same
cli opts, might be a "standard" for this purpose).
Perhaps the more mainstream point of view is that the gpl only
applies to incorporation, ie you have one big binary in which
some src files are gpl'ed. As long as you don't distrubte the
gpl'ed pgm in binary only you are probably okay.
\_ Related question: Can a function from a GPL project be included into
a LGPL project, since the LGPL is *more* free? |
| 2005/3/21-24 [Computer/SW/Compilers] UID:36795 Activity:nil |
3/21 Is there a "skip" command in GDB? I want to see what happens when
I don't execute a certain command in a certain case.
\_ I don't know of any, but you could do this:
if (variable==1) { your command; };
then use the set command to change the variable at your whim. --PM
\_ If by "command" you mean "instruction in the program being debugged",
you can use the "jump" command -- it sets the PC to a value you
specify. -gm
\_ I think it is clear he means a gdb command that will allow him
to skip certain lines in the program, i.e. a pretend step.
\_ There are hairy ways to do this ... if to break copy protection ...
but there is no simple "skip" instruction in gdb.
\_ jump? |
| 2005/3/15 [Computer/SW/OS/Linux, Computer/SW/Compilers] UID:36700 Activity:high |
3/15 Anyone know what I'm doing wrong?
"In file included from fusd/test/zero.c:39:
/usr/include/linux/config.h:5:2: #error Incorrectly using glibc
headers for a kernel module"
Which correct -I path should I include in the compiler? -ok thx
\_ <kernel src dir>/include --jwm
\_ so actually I'm using /home/user/linux-2.6.10/include
which I downloaded from the web.
\_ use -nostdinc |
| 2005/3/14-16 [Computer/SW/Compilers] UID:36678 Activity:nil |
3/14 We have this licenced proprietary C++ library but no source, just
a dynamicaly-linked library and the .h file. We have some C++ code
that calls the library. I'd like to be able to call this closed-source
library from within Java. Since I already know how to call its
functions, can I just use System.loadLibrary("Proprietry"); to access
this library, or do I have to make a seperate C++->Java wrapper using
say JNI?
\_ You have to write some JNI wrappers. There's special code on
both the Java side and the C side to make JNI work. (Unless, of
course, they have some JNI wrappers included. Look for .java or
.class files.) -jrleek
\_ They have no Java wrappers and are out of business. I guess
I know my next project...
\_ Well, first, make sure their libraries were compiled with
the same compiler as your JVM. If it's Sun's JVM on
linux, it's gcc. In order to work with Sun's JVM, the
library needs to have been compiled with gcc, or icc 8.1
or later. Another possibility for an earlier version of
icc is Jrocket. -jrleek
\_ Presuming their libraries are compiled with some old wierd
obsolete compiler, if I make a JNI wrapper (in C++) for
their code and compile it with the right compiler, will I
be able to call my wrapper from Java? Or are we screwed?
\_ You are very likely screwed. Wierd stuff can happen
if your C++ compilers are not binary compatiable.
Although you may get lucky. In my experience
linking gcc compiled JNI with an icc 8.0 library,
everything was cool as long as the library didn't
throw an exception. If an exception was thrown,
everything always crashed. No matter who threw the
exception or from where or who was supposed to
catch it. Java can be touchy. -jrleek
\_ It's even worse. If it's not the same compiler /with
the same options when you compile/ you're probably
out of luck. -emarkp
\_ We have in-house C++ code that calls this old
library just fine when compiled with (I think)
the MSFT compiler. If I compile my JNI wrapper
with the same compiler, shouldn't that also work?
This funky library just sits there processing
input data and never throws exceptions.
\_ If I may make an architectural suggestion,
I believe that you shouldn't be utilizing
JNI to call this library. Instead, I believe
that you should utilize CORBA and write a
wrapper around your library in that fashion.
This is especially relevant if you plan on
utilizing this library in the future. I realize
that this may be a performance hit. Again,
use best judgement given time/performance/etc.
Just a suggestion.
\_ It might work out for you then. I'm pretty
sure the JNI on windows is compiled with
the MSFT compiler. I can't really say
though. I'm niether a C++ or windows
guru. -jrleek
\_ If that works, then, in the worst case, you
should be able to write a pure C wrapper
on the C++ code, compile the wrapper with
VC++, call the C wrapper in your JNI layer
and compile the JNI stuff using another
compiler. |
| 2005/2/18-20 [Computer/SW/Compilers] UID:36229 Activity:nil |
2/18 When you need to parse something simple do you usually use (f)lex/yacc
or just write a recursive-descent parser? I've done both in the past,
but I can't seem to justify using one approach over the other.
\_ the point of yacc is so that you can write a grammar for it so that
when things change you don't have to spend a lot of time
rewriting your hand-written C/Java recursive-descent parser. For
something really small then it may not be worthwhile to use the
parser, but for something that's big (parsing a real language) it's
best to write the grammar. You get the added advantage of the
compiler-compiler giving you grammar ambiguity messages. The other
thing is that flex/yacc use SLR(1) whereas recursive descent is
LL(1). SLR(x) is more powerful than LL(x) as it can handle a
bigger set of grammar so that's something to consider as well. |
| 2005/2/17 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:36210 Activity:high |
2/17 I need to write some code using sockets that will work on both
Windows and LINUX. Ideally, I'd like to just use the standard
POSIX sockets and have the code work on both platforms. Based on
info from MSDN, it looks like this is possible but I'd like to
ask people on the MOTD if they've encountered any inconsistencies
or other issues doing things this way. Thanks. -emin
\_ It mostly works, except for a few little things (WSAStartup,
closesocket, ioctlsocket, etc.). As long as you're not doing
anything complicated, a few #defines are all you need. --mconst
\_ What language? (I assume C or C++.)
Which compiler on Windows? Which on Linux?
What are your library options?
\_ Sorry, language=either C or C++ is fine, compilers=Visual C/C++
on Windows and gcc on LINUX, library options=whatever I need
to get it to work, but preferably standard stuff. Thanks. -emin
\_ I recommend wxWidgets (formerly wxWindows). It's got sockets
and should compile on both platforms without source code
changes.
\_ Someone else recommended sdl_net a while ago, but beware: it's
LGPL. |
| 2005/2/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:36174 Activity:moderate |
2/15 Technical question: we have a memory leak in our C code, we think,
but it's not the sort of memory leak where the memory's unreferenced.
What we'd like to do is sort of a poor-man's profile, we want
to know who calls our memory allocator "New"... Sorta like a stack
trace. Using an actual profiler is sort of difficult 'cause it's
a parallel application. Thanks, --peterm
\_ Not sure about parallel application, but how about looking into
ccured? It reads in code, analyzes it, then generates another C code
with annotation that could be useful. Never used it myself though.
\_ I've heard very good things about Purify but it is not free. Also
take a look at other tools used for Mozilla development:
http://www.mozilla.org/projects/xpcom/MemoryTools.html
Please tell us which tools you ended up using and what you thought
about it, thanks!
\_ seconded. it's been years, but I recall purify being able to
summarize how much memory was allocated by what code very much
like op is asking, e.g. counts of how many times a particular
calling context was used to hit malloc. don't recall whether
there were limits to how many levels of caller it tracked.
\_ What is your platform (OS, version, etc.)? What is your compiler
(vendor, version, etc.)?
\_ It's definitely a problem with our code. Three compilers,
3 platforms: gcc 3.2 linux, HP cc on 21264, xlc on AIX.
\_ The Boehm Collector is free, and can be used to detect leaks.
http://www.hpl.hp.com/personal/Hans_Boehm/gc
\_ valgrind is free, Linux only
\_ I thought you said Viagra |
| 2005/2/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers, Computer/SW/WWW/Browsers] UID:36090 Activity:moderate |
2/7 http://www.cs.ucla.edu/~kohler/pubs Read the first paper. Not too technical and quite readable. I hope it gets accepted into the prestigious WMCS, C&I conference. \_ That rules. \_ i guess it's nice to know that it's not just me. \_ Heh, ditto that. Maybe Phillip should write up a more in-depth study on the subject? \_ Cute. \_ The log graph on page 10 rocks. \- Did you actually submit that? \_ PROFESSOR Kohler doesn't have a csua account. |
| 5/16 |
| 2004/12/20-21 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:35368 Activity:kinda low |
12/20 Has anyone used the parser generator JavaCC? Is it just me, or is
it completely awful?
\_ what do you need it for? If you need to use the visitor and
traverse the syntax tree, I recommend JTB, available here
http://compilers.cs.ucla.edu/jtb It is built on top of
javacc and generates visitors that you can extend functionalities
on. There are tutorials you can use, here:
http://compilers.cs.ucla.edu/jtb/jtb-2003 -kchang
\_ I'm using it at work, I don't really have a choice about it.
A parser was written in it long ago by a guy who didn't know
anything about parsers, and now I have to update it.
\_ well, what's awful about it? What does it not have that
yacc and bison have? |
| 2004/12/14-15 [Computer/SW/Compilers] UID:35291 Activity:moderate |
12/14 If I have a C function like this
void foo(void) {
static const char unused1[] = "one";
const char * const unused2 = "two";
...... some code ......
return;
}
Is a compiler allowed to optimize away both unused1 and unused2? When
I do this in M$ C/C++ v13, it only optimizes away unused2 but not
unused1. I can't find any compiler switch to tell it to throw away
unused1. Any idea? TIA.
\_ I'm not certain of this, but I think the static declaration is
preventing the compiler from optimizing away unused1. If memory
serves, internal static variables, external static variables, and
global variables are all stored in the same region of memory
(though I could see how alternate implementations are possible).
Thus, at a certain point in the compilation process, static
variables become indistinguishable from global variables. Local
variables are much easier to optimize away than global variables.
I'm guessing that the optimizer either lacks the context needed
or simply isn't smart enough to make the distinction so it doesn't
even bother trying to optimize unused1 away. -dans
\_ A compiler can optimize away any code if it doesn't affect the
program. You describe a common implementation but one that isn't
required by the standard. This is really a QoI question (Quality
of Implementation).
\_ v13? What is that?
\_ I meant Version 13.
\_ And what is "Version 13" of an MS compiler? Is that the
version of cl.exe for Visual Studio .Net?
\_ It's the version of cl.exe that comes with my DDK.
"Microsoft (R) 32-bit C/C++ Optimizing Compiler Version
13.00.9176 for 80x86"
\_ Okay, that's from Visual Studio .Net (7.0), not the
latest from http://VS.Net2003 (7.1). Just checking. |
| 2004/12/9-10 [Computer/SW/Compilers] UID:35230 Activity:high |
12/9 c++ question: is this supposed to trigger a catch? Or do I
have to explicitly throw an exception for there to be something
to be catch'ed? My own testing shows that it doesn't throw
any exception on its own, not sure if I'm doing something wrong.
try {
....
char*c = new char[1000000000];
strcpy(c,"blahblahblah.....");
...
}
catch (...)
{
cout << "Out of memory or null ptr exception?" << endl;
}
\_ g++-compiled programs will automatically throw an exception;
VC6, no.
\_ VC6 was released before the C++ standard was ratified. In the
standard, when new fails, it throws an exception.
\_ Ah, I'm using Watcom C, which probably isn't up-to-date on the
recent standard changes. Thanks! -op
\_ Uh, the standard was ratified in 1998 IIRC. Not exactly
recent. However, many compilers allow 'nothrow' by default
for backwards compatibility.
\_ By compiler standards 1998 is probably still "the future".
\_ Actually, are there ANY C++ compilers that are
fully compliant with the standard? I remember
there weren't when I checked a year ago.
\_ You were wrong then. Comeau C++ has been compliant
for at least a year (using the EDG frontend). MS C++
7.1 (.Net 2003) is very compliant, missing only
export and exception specs. |
| 2004/11/11-12 [Computer/SW/Compilers] UID:34830 Activity:nil |
11/11 On a *nix machine with both cc and gcc, is there a generic way to find
out which include directories they use? (I think cc uses .h files in
/usr/include and gcc uses those somewhere else.) Thanks. |
| 2004/10/21 [Computer/SW/Compilers] UID:34258 Activity:nil |
10/20 When I compile gcc with the -g option, my binary becomes bigger
because I have extra debugging information for the debugger.
Let's say I'm writing my own primitive debugging tracker that
looks at offsets of variables (both global and local), how
do I read those debugging info? In another word, how do I
fetch those debugging information in a text readable format
without running or using the debugger? Thanks. |
| 2004/10/3-4 [Computer/SW/Compilers] UID:33894 Activity:nil |
10/2 Is there a way to disable specific warnings in gcc?
\_ Use the source, Luke!
\_ Even easier than source, use the manual, info gcc.
\_ I did. It doesn't help. It describes command-line options to
disable a few specific warnings, but it doesn't describe any
general mechanism. I guess what I'm looking for is something
like MSVC's #pragma warning(disable:xxxx)
\_ from the man page,
-w Inhibit all warning messages.
\_ Read the whole thread. It's not that long. I'm looking
for a general mechanism to disable *specific* warnings
(and preferably in a specific file, or better yet, in a
specific section of code). I don't want to disable all
warnings. That'd be retarded.
\_ It's more retarded to just ignore some warnings in
a single file. If it's a single file, FIX it.
Apologies if this sounds harsh; I'm actually
yelling at most of my coworkers. Btw, which
warning? Why is it unfixable?
\_ gcc foo.c |& grep -v unwanted_warnings |
| 2004/9/16-17 [Computer/SW/OS/Windows, Computer/SW/Compilers] UID:33574 Activity:kinda low |
9/16 I want to compile a simple Windows console app, are there any
gnu/free compilers for windows that would do it? I'd rather not
install visual studio and all its crap... my app is in C and calls
windows APIs.. thanks.
\_ I'd say Cygwin but it probably doesn't support your Windows calls.
Just out of curiosity, what sort of console app could you write
that uses the Windows (as opposed to POSIX or something) API?
\_ I have calls that access the windows registry...
\_ Cygwin supports all standard Win32 calls. --sky
\_ MS's C++ compiler is free now. If you want free as in speech,
you can look into mingw (which is better than cygwin in that the
produced binaries don't require the cygwin DLL). --jameslin
\_ LPTSTR, LPCTSTR is not defined?? geez, I have to define them
manually? Seems like a lot of windows constants are not defined
ie, windows.h, etc...
\_ In my SDK installation both are defined in WinNT.h.
\_ borland has free older compilers, but I'm not sure if they
support the window api's. |
| 2004/8/10-11 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:32805 Activity:high |
8/10 C question. Is there anything wrong with the following?
const my_struct_t **pp;
pp = malloc(sizeof(my_struct_t *));
pp = realloc(pp, sizeof (my_struct_t *) * 2);
"gcc -Wall" doesn't complain. But the M$ compiler (cl.exe) complains
about the realloc line:
t3.c(12) : warning C4090: 'function' : different 'const' qualifiers
t3.c(12) : warning C4022: 'realloc' : pointer mismatch for actual
parameter 1
Thanks in advance.
\_ Your code is correct. The warnings above are both wrong, and in
fact the same compiler recognizes the code as safe in C++ mode
(which is stricter about const). --mconst
\_ I'd ask why GCC isn't complaining. Consts shouldn't change.
It might be that because there's nothing between the malloc and
the realloc, GCC is noticing that the value of pp does not actually
changem while MS sees you are writing to a const and bitches.
\_ But what I'm trying to realloc is an array of variable pointers
to constant structures. The array elements (pointers to constant
structures, const my_struct_t *) are not consts and do change.
It's just that the structrues that the array elements point to
(const my_struct_t) don't change. I think it's just stupidity on
M$'s part, but I just want to make sure.
\_ YMWTS http://www.parashift.com/c++-faq-lite/const-correctness.html
\_ You sure you're not compiling in MS as a cpp file?
\_ It works as a CPP file -- see above. --mconst
\_ My file is a .c, and I compile like "cl t.c" with no options.
I tried both version 12 and version 13 and they gave the same
warning.
\_ Where is the 'function' name declared?
\_ BTW, pp = realloc(pp, ...) is a bad idea. If realloc fails, you've
just clobbered your old copy of pp and no longer can free it.
--jameslin
\_ Yeah I know. The above was just to illustrate the type checking
warning. But thanks.
\_ Does it still complain if you do something like:
typedef const struct foo *pfoo;
...
pfoo *p;
... |
| 2004/8/6 [Computer/SW/Compilers] UID:32738 Activity:high |
8/6 I'm trying to find the true dependencies that a particular shared
object has on other shared objects. Are there existing tools that
can do this automatically? Otherwise I was thinking of just using
nm and grepping out the undefined references and then correlating
that to the defined symbols in the other object files. Thanks
for any tips.
\_ like ldd, or are you trying to find out exactly which functions?
\_ yeah, sorry. i mean actual symbols. if you ask the compiler
to link in spurious shared libraries (that your other
library doesn't really depend on), i think it will. so ldd
won't give an accurate answer in that case.
\_ nm + perl is your best bet
\_ nm -u |
| 2004/6/22 [Computer/SW/Compilers] UID:30957 Activity:nil |
6/22 GCC macro question: If I create a macro that contains, say, __LINE__,
will __LINE__ be set to the line at which my macro is used or the line
at which it is #defined?
\_ I think it'll be the line at which it is #defined. Oops, I just
tried it out and it's actually the line it's used. Maybe the K&R
book says something about this. I don't have one here. |
| 2004/6/6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30635 Activity:nil |
6/5 How does typedef get compiled into machine code?
\_ what the hell are you talking about? C? It doesn't. It's merely
a type alias. C compilers don't even do strict type-checking
against typedefs; what makes you think it gets to the machine code
level?
\_ It doesn't get that far. The answer to your question is closer
to "How do ints, floats, structs, etc. get compiled into machine
code?" |
| 2004/5/28-29 [Computer/SW/Compilers] UID:30481 Activity:nil |
5/28 I just found out that bison inserts these lines of code
#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif
between the function declaration line and the actual definition lines.
That's causing compiler warnings about "const" not matching for my
function which has a parameter of type "const char*". Why would bison
want to define "const" to nothing? I'm writing C code. Thanks.
\_ I think "const" was introduced in C89. Non-ANSI compilers (i.e.
ones that don't define __STDC__) may not support it.
\_ I'm using at the command line "Microsoft (R) 32-bit C/C++
Optimizing Compiler Version 12.00.8168 for 80x06" which is pretty
recent.
\_ I'm not sure why it doesn't define __STDC__. Maybe you have
some non-compliant compiler extensions enabled or something.
If you want, you could try defining it yourself as a compiler
argument. |
| 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. |
| 2004/5/18 [Computer/SW/Security, Computer/SW/Compilers] UID:30276 Activity:nil |
5/18 http://anitaborg.org/events/careers_in_cs.htm Women in Computer Science, sponsored by Google. |
| 2004/5/12-13 [Computer/SW/Editors/Emacs, Computer/SW/Compilers] UID:30198 Activity:kinda low |
5/12 Are there any emacs modes for .l files (lex) and .y files (yacc)? I'm
running emacs20. Thanks.
\_ just use c-mode or c++-mode. |
| 2004/5/11-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30151 Activity:low |
5/10 On a 32 bit architecture, if I declare something boolean or byte,
does it still use 32 bits, or is it possible to have a different
offset for the alignment to pack it more efficiently? ok thx.
\_ For boolean, it's all up to your compiler. For byte, most likely
it's 8 bits, but it's still up to your compiler.
\_ I heard that if the alignment isn't 32, either the arch
would raise an off-alignment exception, or that there is
a tremendous run-time penalty for the memory access. Is
this true, and which architectures would this apply to?
\_ memory alignment has nothing to do with this, since
you're presumably not trying to load a 32 bit word
from an arbitrary offset. if bool is implemented as
a char, then typically it's 8 bits and alignment
doesn't matter. x86 allows loading words from arbitrary
offsets, but there can be a significant performance hit,
whereas many mips style chips just do not allow it.
\_ To clarify this: the 32-bit alignment the previous poster
was worried about is only for 32-bit data values. If you
have an 8-bit piece of data, it only needs 8-bit alignment.
\_ The OpenBSD guys were saying that Sparc64 was their
preferred dev/testing arch b/c it has strict memory
alignment requirements; i386 less so.
\_ On i386 or above, if you use 32-bits and it's not 32-bit
aligned, there is a performance penalty but no exception.
If you use 8 bits, I think for some instructions there is a
performance penalty just from using 8 bits instead of 32 bits
(excpet on the SX-variant processors.) However, I think there
is no additional performance penalty if the 8-bit datum is not
32-bit aligned.
\_ Do you mean 'bool' and 'char' in C++? Or some other language? |
| 2004/5/9-10 [Computer/SW/Compilers] UID:30117 Activity:nil |
5/9 In gcc how do you force a binary to be build even though there are
undefined references, which you know will never be called during
runtime? ok thx
\_ That's normally a linker setting - for instance on Solaris, using
native ld (not gnu ld), you'ld want the -z nodefs flag passed to
the linker during the link phase (and probably -z lazyload so it
doesn't complain when you try to run it). I don't know the GNU ld
flag. -alan-
\_ from the archive:
What's the flag to gcc that will ignore "undefined reference"?
\_ isn't this an error and not a warning? how can you ignore it?
\_ well if you know a symbol is never referenced then you can
get away with it. I did the same thing with ctwm. I forgot
which flag you use for linking and ignore symbol not found,
I just rtfm but I can't seem to find it anymore.
\_ you can fake an empty definition
\_ This is standard behavior on VM. I didn't know you can do this on
Unix. |
| 2004/5/6 [Computer/SW/Compilers] UID:30060 Activity:high |
5/6 I've been out of school for too long. If I want to write a simple
compiler, what tools do I need besides yacc and what do they do?
Thanks a bunch!
\_ well there's also lex (flex) for the lexical analyzer (tokenizing).
\_ java or c? if c, lex/flex=good tokenizer. yacc/bison are great
for grammar. both are LALR so they're pretty powerful.
\_ I'm not actually writing a compiler. What I really want is to
generate some C code that can read simple script files and
perform some actions. For example, if the C code reads this
file:
REPEAT 10
DELAY 3
FOO
END
it'll perform a for-loop 10 times calling sleep(3) and foo(). So
I thought what I need is pretty much the front part of a
compiler. Thanks for any help.
\_ I've been going through this with guys at work who always
want to add scripting capabilities to their apps. Check out
SWIG; it lets you call scripts from C code and vice versa,
and your scripts can be python, perl, ruby, java, lisp, scheme,
whatever you want to allow. |
| 2004/5/6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30054 Activity:moderate |
5/6 I'm trying to use "#define errno WSAGetLastError()" in a winsock
file, but the compiler says errno is already #def'ed. I can't
just run cpp on the file--it's a crappy ide-based compiler--so
I'd like to do something like printf("errno"), but of course that
just prints "errno" instead of the preprocessor's notion of what
errno is #def'ed to. What should I do instead?
\_ errno is already defined because it's part of the c-library. Do
One of the following:
call perror() : This will print an error description to stderr
use strerror(errno) to get the error string and print it however you
want
use strerror_r(errno, mybuffer, mybuffer_length) to put the error
string into your buffer mybuffer
\_ Sorry, should have explained myself a bit more-- this is a socket
protocol wrapper file that's compiled into windows, unix, cygwin,
and vxworks objects. I'm doing a lot of
rc = select(...);
if (rc && EWOULDBLOCK == errno) { /* handle blocking error */
so I really need the #def to work correctly. I could just undef
errno for winsock and then re-#define it, but I'd like to know
what it evaluates to first.
\_ Many compilers allow you to compile only the preprocessor step. For
instance, with Visual C++ 6 you can add "/E" to the compile options
and you'll get the preprocessor output in the build window (and .plg
file).
\_ May I ask why you need to alias WSAGetLastError() to the preexisting
#define errno? Why not use a different label?
\_ Every library except winsock uses errno to report the error, so it
seemed relatively natural to keep it consistent. I guess I could
use MY_FOO_ERROR instead, but that would require a #else to the
#ifdef _WINSOCK_H. Also, I'm kinda curious how to print the
evaluated macro at runtime.
\_ if you really wanted, you could #undef errno first. I don't see
what using a crappy IDE-based compiler has to do with anything;
it doesn't stop you from running cpp. Anyhow, if you want to see
what errno is #define'd to, see this:
http://www.eskimo.com/~scs/C-faq/q11.17.html
--jameslin
\_ Thanks, this is exactly it. Errno was #def'ed to *_GetErrno()
and I didn't want to #undef it if it was already "magically" set
to WSAGetLastError by <winsock.h>. Also, running cpp on the file
says that errno was #def'ed to *__errno(). |
| 2004/4/30-5/1 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:13508 Activity:moderate |
4/30 Quick C++ question. In Meyer's More Effective C++, Item 22, he has
a snippet of code like this:
template<class T>
const T operator+(const T& lhs, const T& rhs)
{
return T(lhs) += rhs;
}
My question is, why is it legal to do 'T(lhs) += rhs;'? T(lhs) yields
a temporary, which is AFAIK, an rvalue, so since operator+= is not a
const member function, the compiler shouldn't allow that line. My
reading of the C++ standard seems to support my line of thought. But
OTOH, g++ 3.4.0 happily accepts code similar to the above. So am I
missing something here? Thanks.
\_ T(lhs) is calling the copy constructor, which returns an object;
I don't think it counts as a temporary. Not sure though.
\_ No, T(lhs) is the functional cast expression, which may call a
constructor (but not the copy constructor). Section 5.2.3/1 of
the standard says that T(lhs) (that is, a type followed by parens
and a single argument) is equivalent to (T)lhs. 5.4/1 then says
that (T)lhs for a REFERENCE type is an lvalue, but for a
non-reference type it's an rvalue. -emarkp
\_ I agree with what you say, except for the part where you say
a copy constructor can't be called. That's illogical, and I
don't see where the standard says anything about that anyway.
\_ Well, that's the only part that isn't clearly in the
standard, so I'm glad you agree with the rest. :) Anyway,
the standard says that: T(x) is equivalent to (T)x, which
any compiler will turn into a noop if the type of x is T.
I guess one exception for this would be if the type of x is
T const. In which case I guess it would call the copy
constructor if T is not a reference type. T *is* a
reference type in the example though. -emarkp
\_ Oops, my bad. Yeah, this would call the copy
constructor (what was I thinking?) because of course lhs
can't be modified, but since lhs is a reference type the
copied object is an lvalue. I'm sure this is one of the
screwy type rules that was made precisely for operator
overloading. Sorry for the screwup. -emarkp
\_ Hmm, I don't think so. lhs may be of reference
type, but T(lhs), which is the same as (T)lhs, is of
type T, which is not necessarily a ref type. -op
\_ Okay, section 3.10/10: An lvalue for an object is
necessary in order to modify the object except
that an rvalue of class type can also be used to
modify its referent under certain circumstances.
[Example: a member function called for an object
(9.3) can modify the object.] So it *is* being
copied, and it *is* an rvalue, but non-const
member functions can modify an rvalue of class
type. -emarkp
\_ That's nasty, but thanks! -op
\_ Ob: And this is why C++ sucks.
\_ I agree it is often way too complex, but it has its moments. -op
\_ Ironically, the reason this is so complex is so that it will work
like you expect, or in a way that a compiler can optimize well.
\_ Disagree. At a certain point of complexity it's no longer
economical to expect anything. All of this would be irrelevant
with T.add(lhs, rhs).
\_ Are you arguing against overloaded operators? In your
expression, where does the sum go?
\_ It's returned as an instance of of T. I'm not being a
smartass here, I'm just wondering about cases where
operator overloading saves anything more than a few
characters of function name. What's the real win?
\_ Operator overloading is essential to having
user-defined types that don't feel like second-class
citizens. "Smart pointers" would be syntactically
ugly and cumbersome to use if you couldn't overload
pointer-ish operations, for example. I'm sure there
are lots more examples when you start using c++ as
more than just "a better C".
\_ To whoever asked why ocaml syntax is so warty
-- in part because ocaml has no operator
overloading. I sometimes wish it was there,
but I am not holding my breath. The ocaml way
\_ Perl.
is that the operator can only be the same if
the underlying algorithm is the same (so for
instance they have +. for floats and + for ints,
but < for both floats and ints). So they have
'polymorphism' instead of 'overloading'.
-- ilyas |
| 2004/4/20-21 [Computer/SW/Compilers] UID:13293 Activity:nil |
4/20 What is __attribute__ used for in gcc?
\_ do 'info gcc' and search for it, duh.
\_ Encyclopedia Galactica (aka google) found this for you:
http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Function-Attributes.html |
| 2004/4/9-10 [Computer/SW/Compilers, Computer/SW/Unix] UID:13121 Activity:nil |
4/9 Anybody using Eclipse's CDT package? Is it possible to sync the
gdb view with the current code that is being executed? |
| 2004/4/7 [Computer/SW/Compilers, Computer/SW] UID:13052 Activity:nil |
4/6 Has anyone been able to get the "certificates" auth stuff working
for localhost connections to the admin web ui of CUPS? I would
appreciate a pointer to sample config with this working (or instr.
on how to do it). tia. |
| 2004/2/16-17 [Computer/SW/Compilers] UID:12274 Activity:kinda low |
2/16 How do I figure out which macro defines my compiler is automatically
using? I need to do some conditional compilation based on platform or
compiler (g++ on Cygwin on W2k) and I'm looking for something that
that compiler defines that other compilers do not. Is there command to
g++ that will list all of this for me?
\_ g++ -dM -E - </dev/null
\_ yes. |
| 2004/1/21 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11861 Activity:nil |
1/20 Any candidates for the best way to prevent developers from #includeing
a header file accidentally. Aside from very loud comments to that
effect, what is a good way to make the compiler complain? I was
thinking something like
#ifndef MYLIB_I_REALLY_WANT_TO_USE_THE_PRIVATE_INTERFACE
// best way to cause compiler pain goes here
#endif
at the top of the private header file. This has to be straight C for
various reasons (I do prefer C++ and Java).
\_ #include Your_error_message_here
\_ Cannot find file Your_error_message_here
\_ If you want to raise a preprocessor error, there's a mechanism
for that: it's called #error. #error Don't include this file.
Anyhow, if you want to restrict access to, say, structure
internals, you can do:
#ifdef MYLIB_I_REALLY_WANT_TO_USE_THE_PRIVATE_INTERFACE
struct st
{
int field;
};
#else
struct st { };
#endif
\_ Document your code and fire any developers who ignore specs. If
they're ignoring something this major, they will hose your source
even worse somewhere else. |
| 2003/12/15 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11455 Activity:low |
12/14 Sorry about this, but about alternative to the Dragon Book in the
subject of Compiler. What is the name of the author for that
Programming Language book again?
\_ the Tiger Book by appel- a much better read.
\_ Michael Scott. Here's the Amazon link if you want to read
some reviews: http://tinyurl.com/z9rx
\_ thanks
some reviews. |
| 2003/12/12-13 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11427 Activity:nil |
12/11 Is there something like __FILE__ or __LINE__ macro that will give me
the class / method name in C++?
\_ it can't be a macro, because the preprocessor doesn't know anything
about classes or functions.
\_ __FUNCTION__, __PRETTY_FUNCTION__ in gcc, __func__ in C99
\_ gcc 2.95.4 on soda accepts __func__ too. |
| 2003/12/11-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11404 Activity:moderate |
12/10 I am not a programmer so this question may be stupid. What does
@"A string (might be empty)" mean in a gcc?
\_ The '@' character has no meaning other than '@' in standard C. Look
at the documentation for your nonstandard compiler.
\_ What's the meaning of '@' in standard C? I have no C book
near me and I can't find it in the documentation either.
\_ It isn't standard C syntax. If you post a code snippet with
a usage example maybe we can guess what it is.
\_ Sorry I wasn't clear. The '@' is not an operator, token, etc.
It's just another character, like '1' or '8' or '\' and has no
special meaning at all. However, it *does* have a special
meaning in C#. Specifically it means a verbatim string
literal. See:
http://www.softsteel.co.uk/tutorials/cSharp/lesson4.html#3
\_ Please give more context. Otherwise it looks like the program
may be run through a custom pre-processor (@ is expanded to
something else) before being passed to gcc.
\_ What's the source language? Objective-C?
\_ I think @ means something in Objective-C... unicode string maybe?
\_ Apparently an "NSString" object: http://csua.org/u/58b
\_ It means several things in ObjC. @"..." is a way to
create an NSString literal, but it's used in other places,
e.g., @class to predeclare a class name, @interface ... @end
is how you declare a class, etc.
\_ Thanks. Now I realize that the version of documentation
stored on my computer is outdated. It does not define the
@"string" directive even though it is is already in use by
then. Actually it is still not in the grammar section
of the current documentation as far as I see.
http://tinyurl.com/ytlp (developer.apple.com)
\_ What variant of C are you using exactly?
\_ I am reading some Objective C codes for Mac. As there
is no standard whatsoever for Objective C, I should
really say codes for the gcc compiler that comes with
OS X. I am confused why this compiler can
be called gcc: NSString is part of Cocoa, which
is not GPL or open source.
\_ NSString is part of GNUStep which is open src:
http://tinyurl.com/ytlw (gnustep.us)
Also there are some "standards" docs for the
language:
http://pages.cpsc.ucalgary.ca/~burrellm/objc/objc.pdf
\_ It probably should be listed in the grammar, but
you will find it here: http://csua.org/u/58h
This static string syntax, I believe, is an ObjC
thing, and not an Apple extension (GNUStep
as far as I see.
docs refer to it too), but I couldn't test it
it out on soda, as I couldn't find the Foundation
header files. http://csua.org/u/58i |
| 2003/12/11-12 [Computer/SW/Compilers] UID:11403 Activity:nil |
12/10 I never took a compiler class. I would like to at least start to
get some light reading on my own to get started. Are there any
"Compilers for Dummies" books out there? The Dragon Book is too much
for me.
\_ The Dragon Book is too much for most people. It seems to
intentionally avoid clear explanation.
\_ May want to check out Programming Language Pragmatics by Michael
Scott. My gf used it for her compiler class. I haven't read
it, just browsed through it, and it seems well organized, the
writing clear, with things explained and motivated in
a straight forward manner. It's still a thick book but I think
you can just read and read and get enlightened without
getting stuck. I wish I had it when I took cs164.
\_ thanks. I will do that. I have read other Programming
Language book before, so it shouldn't be that bad.
--kngharv |
| 2003/12/8-9 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11359 Activity:low |
12/7 Is there any reason to use bzero over memset(foo, 0, sizeof(foo))?
\_ ANSI! ANSI! is the STANDARD! C runtime library.
(use memset instead)
\_ Is ANSI the standard or is K&R (in the K&R C book) the standard?
I've always been using the K&R book as reference when I want to
write portable code.
\_ K&R 2nd edition has a big "ANSI C" label on the cover.
I think "K&R C" refers to K&R 1st edition.
\_ On some systems bzero used to have an optimized assembler
implementation. If you are not concerned with speed, stick
to memset() since it is part of C89.
\_ Wouldn't those systems also have a quick compiler check to
call the assembly when the second arg was 0? |
| 2003/10/31 [Computer/SW/Compilers] UID:10875 Activity:nil |
10/30 What is __P()? I've seen the DragonFlyBSD guys crowing about finally
getting rid of it. What does it do?
\_ Hackery for allowing old K&R non-prototype compilers to work
with ANSI/ISO C89 prototypes in headers.
\_ How does it work? Links? It's hard to get anything in google.
\_ look at sys/cdefs.h, and then look at how it is used. Like
was said before it is there to allow old non-prototype compilers
to work with prototype code. |
| 2003/10/24-25 [Computer/SW/Mail, Computer/SW/Compilers] UID:10768 Activity:nil |
10/24 Are there any pitfalls involved in using sendmsg/recvmsg over
send/recv? I finally got my problems solved with basic sockets,
and I'm looking for a good way to say "these bytes are msg1,
these are msg2" etc. Thanks
\_ These are two separate issues. (1) man sendmsg. (2) Since
TCP is byte-stream oriented, you will need to introduce some
message delimiting mechanism. Common ways are LF (like SMTP,
POP3, BGP) and having predictable message lengths
(e.g., constant for all messages, having an early size field
which indicates the size of the message, having an early type
field which you associate with a given size, etc.).
http://tangentsoft.net/wskfaq/articles/effective-tcp.html
\_ Thanks for the link. I've been using a length-header so
far, but I was thinking that perhaps MSG_EOR would be a
better solution. I can't use the delimiter option b/c the
module must also handle binary data, and I have no
guarantees on length either. I guess I'll stick w/ what
works.
\_ You can come up with a prefix code for your
messages. This can be a good idea for reasons other than
getting rid of delimiters (since a good prefix code will
compress what you send over the wire). -- ilyas
\_ I thought you had to have a known alphabet to do that.
And the binary data is totally unknown.
\_ If it's binary data, the alphabet is {0, 1},
by definition. -- ilyas
\_ kinda hard to compress 1 & 0, isn't it?
\_ I think you are unclear on the concept. Files
you compress with gzip are 1s and 0s, and they
compress just fine. -- ilyas
\_ I understand the concept, but if you can't
predict the expected distribution of your
data (even at the byte level) you probably
won't achieve much compression-- yes, I'll
probably get some compression just by using
a standard english distribution, but not
enough to make it worthwhile. You are
correct in the technical sense, but it's not
enough to break what works right now.
\_ Sure you will. It's what universal source
coding is all about. Why do you think it
works on files, where we can't predict
the distribution either? At any rate, the
original point of using a prefix code in
your case was to get rid of delimiters.
The compression (which will occur to
entropy in the limit, trust me) is just a
pleasant side effect. -- ilyas |
| 2003/9/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:10257 Activity:nil |
9/19 I have something like this:
unsigned char a;
char b;
unsigned short c;
short d;
if (a < 9999999) {}
if (b < 9999999) {}
if (c < 9999999) {}
if (d < 9999999) {}
When I compile this with gcc 2.8.1 on SunOS 5, it only complains
"comparison is always 1" for b and d, but not a or c. Why? Thanks.
\_ Perhaps in converting 99999999 to a signed char or signed short
the compiler wraps the number around the max (i.e. takes it
mod the max value) whereas for unsigned data types it saturates.
Another possibility might have something to do with the fact that
99999999 is negative for signed char and signed short. -emin
\_ I see. I just tried 65537 and I got the same result. Same for
gcc 2.95.4 on soda also.
\_ Try 65535.
\_ Same result. But in this case, not complaining about the
'c' line makes sense because the comparison is not always
1.
\_ from gcc 2.95.2 on sparc:
% gcc -o foo foo.c
foo.c: In function `main':
foo.c:7: warning: comparison is always true due to limited range of data type
foo.c:9: warning: comparison is always true due to limited range of data type
try b < 127 and d < 32677
--jon
\_ Arrr!
\_ Avast! |
| 2003/9/17-18 [Computer/SW/Compilers] UID:10234 Activity:nil |
9/17 For this snipet of code:
for (i = 0; i < 3; i++) {
printf("\n\n0x%x %d", ptr++, *ptr);
}
Is there anything machine dependent about the evaluation of ptr++?
I tried this on sparc/solaris and *ptr prints out the value AFTER
the ++ increment. But on a MIPS CPU, *ptr evaluates to before the
++. WTF?
\_ wtf is that you should learn c better. the order of evaluation
of arguments is implementation-dependent, so a compiler
is free to do whatever.
\_ And this is the winner. The comma operator evaluates left to
right (as in: (a=b, ++b) works just fine). However functions
can evaluate their arguments in any order. I don't understand the
need for people to do this anyway. Add the '++ptr' on its own
line.
\_ |>|_||>3!! 7|-|475 4|\| 3><7R4 |_i|\|3 0F <0|>3!!!!1!!
R34|_ |-|4X0R5 |/\|R173 5|\/|4|_|_ <0|>3!!!!1!|
\_ to match their 5|\/|4|_|_ heads (both of em)?
\_ http://www.embedded.com/story/OEG20020429S0037
\_ From the C9x Standard (section 5.1.2.3):
"The grouping of an expression does not
completely determine its evaluation ... the
actual increment ... can occur at any time
between the previous sequence point and the
next sequence point"
In your case, this means that ptr++ could occur
either before or after printf(); and both would
be completely valid (even in the same program).
\_ this C or C++ code?
\_ :-)
\_ I won't apply for your job unless you tell us which one! |
| 2003/9/4-5 [Computer/SW/Compilers] UID:10081 Activity:nil |
9/4 I have a legacy make system that needs to work on several platforms
w/ different compilers. To build for platform X, you type
"make -f X_make" at the top level. I'm trying to get to a modicum
of sanity about this by actually using dependencies correctly.
The problem: I need to have dependencies in subdirectories, and
those dependencies also need to be built using the X_make makefile,
not Makefile or Y_make. Is there a way to specify this without
actually setting up a target for each subdirectory that does
"cd subdir; make -f X_make; cd .." ? Thanks in advance.
\_ make depend? or "makedepend"? |
| 2003/8/28-29 [Computer/SW/Compilers] UID:29504 Activity:nil |
8/28 IBM has released a beta C/C++ compiler for MacOS X:
http://www-3.ibm.com/software/awdtools/ccompilers
http://www14.software.ibm.com/webapp/download/search.jsp?go=y&rs=vacpp3 |
| 2003/8/16 [Computer/SW/Compilers] UID:29368 Activity:high |
8/15 Are there significant C compilers out there that really don't support
C++ style "//" comments?
\_ No. So whomemever is requiring the use of /* */ only in whatever code
\_ No. So whoever is requiring the use of /* */ only in whatever code
can be safely ignored. The only time you'd limit this is if you are
stuck on a stove-pipe system.
\_ C99 added '//' comments. The only compilers I know of that might
have trouble are legacy/embedded compilers. |
| 2003/8/6 [Computer/SW/Compilers] UID:29251 Activity:moderate |
8/5 I'm contemplating on getting a set of Cleveland or Ping Irons. What
are the pros and cons of using graphite vs. steel? And should I get
flex/regular/stiff? Thanks motd god.
\_ get steel shafts, and the flex depends on your swing speed which
is typically measured with your driver and 5-iron. you can get
this done at any shop. and i've used ping irons and cleveland
wedges, and they're both fine, it's just what you're more
comfortable with.
\_ what is your handicap?
\_ if you have to ask you don't know |
| 2003/7/15 [Computer/SW/Compilers, Computer/Rants] UID:29042 Activity:nil |
7/14 http://www.cnn.com/2003/TECH/biztech/07/14/moves.offshore.ap/index.html |
| 2003/6/30-7/1 [Computer/SW/Compilers] UID:28870 Activity:moderate |
6/30 Follow-up question to the Academy of Arts thread last week. Someone
posted this answer:
\_ If you want to make $$$ then learn Inferno/Flame.
My gf worked for a large FX house and the
Flame artists all cleared $200K+. Maya is
good to know, but less specialized.
Any info on why Flame is in demand, and what are some FX houses
that use Flame? -thx
\_ There are fewer artists who know it, therefore they make more $$$.
Part of it is that it is expensive to buy. Any kid can sit down
and fool with Maya. Flame is UNIX-based, which throws a lot of
people off, too. My gf's company was Digital Domain, the company
that did Titanic, A Beautiful Mind, Apollo 13, Backdraft, and
others. --dim
\_ I also want to mention #1 talent needed is artistic. People take
classes to learn all the software and want to be digital artists.
That's only enough to get you grunt work. You have to have the
artistic talent. They would hire people who submitted drawings
who had hardly TOUCHED a computer and turn away people who knew
all of the software but still no talent. Imagine someone going
to ITT and then wanting to be a software engineer. They know
how to use the compiler, right?
all of the software but had no talent. Imagine someone going
to ITT and then wanting to be a software engineer. He knows
how to use a compiler, right? |
| 2003/6/26-27 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:28847 Activity:moderate |
6/26 What's a "constant function" in C? I ran across this term in the gcc
man page. Thanks.
\_ look at the info page. const functions are a gcc extension. gcc
assumes the function has no side effects and subjects it to
common subexpression elimination, for example when you call it
in a loop. -ali |
| 2003/6/25-26 [Computer/SW/Compilers] UID:28839 Activity:high |
6/25 When yacc man page refers to "LR(1) parser", is LR(1) a reference to
some other man page or does LR(1) have some other special meaning?
-clueless
\_ some other special meaning, LR(1) is a style of parse tree
generation that has certain limitatations. Sort of like how
reg exps can't search for all the things you want to search for
because they can only do context free searches (at least I think
that is the limitation of regexps, it has been a while.) Take 172
or 164 to learn more.
\_ LR(1) -> Left to right (scans input left to right) and builds
a Rightmost derivation in reverse by looking at one (1) input
token at a time. (yacc is actually a LALR(1)- Look Ahead, Left
to right, Rightmost deviation, One input token beastie. See
also Bison.)
\_ oooooo!
\_ Take 164. |
| 2003/6/13-14 [Computer/SW/Compilers] UID:28728 Activity:nil |
6/12 What are compiler intrinsics?
\_ obgoogle, etc. |
| 2003/5/30-31 [Computer/SW/Compilers] UID:28580 Activity:high |
5/29 There's a MIPS assembly file foo.s. It's unoptimized. The makefile
compiles it into foo.o and then links with the rest of the program.
I know there's a way to dump the actual assembly listings that is
produced by gcc -c foo.s. And this assembly is not the same as what's
in foo.s because compiler optimizes it and adds in a lot more stuff
to make it runnable. Anybody remember how to get the assembly listings
from a foo.o object file? I tried playing with GDB but can't seem
to find the options to do this. Thanks.
\_ no disassemble #5!
\_ Reference to "Short Circuit" duly noted.
\_ gcc -S, but I think you're barking up the wrong tree.
gcc is not optimizing your code, it is just calling
the assemble and then the linker.
\_ objdump -d
\_ YES! Thank you very much. I love the motd. :-)
\_ And we luv yermom. It's all good.
\_ When everyone starts to love yermom
that's when it becomes a tragedy of
the commons.
\_ this sounds like a violation of the DMCA.
\_ how is reverse engineering his own assembly code a violation of
anything? i think you should be violated for being stupid.
\_ it's not his code. he's reverse engineering the compiled
output from someone else's program. DMCA violation. you
can think anything you want, you'd still be a criminal.
\_ he has foo.s, he has foo.o which he generates using
gcc and foo.s. he can disassemble foo.o and take a
look at what gcc did with his foo.s without violating
the DMCA. |
| 2003/5/12 [Computer/SW/Compilers, Computer/SW/Languages] UID:28412 Activity:kinda low |
5/11 What is "software pipelining"? Is that like multithreaded stuff
doing the same task on different processors? I understand hardware
pipelining completely (took cs152), but don't understand what
software pipelining is. ok thx.
\_ It's a way of reducing loop overhead (much like loop-unrolling).
SW pipelining works by taking replicating the loop body several
times and staggering them in such a way that the instructions
appear in reverse order in the loop body but none of the
instructions have any dependencies within the same iteration.
This helps place distance between dependent instructions. The
major problem with SW pipelining is that you need a really
smart compiler to realize this and there's some startup and
cleanup code you need to tag on.
Original Code
-------------
L1: lw $1 <- MEM
add $2, $1, $1
sw MEM <- $2
bc L1
SW Pipelined Code
-----------------
lw $1 <- MEM
add $2, $1, $1 lw $1 <- MEM
L1: sw MEM <- $2 add $2, $1, $1 lw $1 <- MEM bc L1
sw MEM <- $2 add $2, $1, $1
sw MEM <- $2
\_ so does this require VLIW (issueing 3 cmds in 1 cycle?)
\_ I wrote it in column format to illustrate how to
convert the original code into SW pipelined code.
It has nothing to do with multi-issue.
\_ Multi-issue helps. There's two big reasons to SWP.
One is to take advantage of more instruction-level
parallelism (ILP), because you're running more
instructions concurrently. But even if you don't have
multi-issue, you can still get better latency tolerance
by interleaving instructions from other iterations
while waiting for a long-latency instruction to
complete (in the example above, the load [lw] might
take a long time to return).
\_ one way people use the term is in threaded programming models,
where you have a thread (or pool of threads) to handle a specific
task which then passes work on to another thread/threads.
\_ comment on my reply, the above poster has the more common usage. |
| 2003/4/10 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:28060 Activity:high |
4/9 Right now I have tons of snippets like
sprintf(errmsg, "Error %d: invalid type %d at %d\n", 1, myType, time);
QueueError(errmsg);
Is it possible to define a macro to take an arbitrary # of arguments--
#define ERROR(x) sprintf(globErrMsg, x); QueueError(globErrMsg);
Or will the x in the macro just take everything up to the first comma?
\_ #define ERR(args...) {sprintf(g_errMsg, args);QueueError(g_errMsg);}
\_ Yes, if you use recent gcc or other C99-ish compilers, no for
older ones.
\_ A reliable method for doing this is to write a function that
uses a va_list and vsnprintf:
#include <stdarg.h>
void Error (char *err, size_t sz, const char *fmt, ...) {
va_list vl;
if (err == null || sz <= 0)
return;
memset(err,'\0',sz);
va_start(vl,fmt);
vsnprintf(err,sz,fmt,vl);
va_end(vl);
QueueError(err);
}
BTW, You should really avoid sprintf since it doesn't have a
good way to check thesize of the input buffer.
\_ thanks for the code, I'll give that a try today. One question--
this is a real-time application, so there are a few common stdio
calls I use regularly and the rest are viewed warily. Are there
any non-constant performance implications for using vsnprintf?
I can handle a +foo hit, but foo*strlen(err) might be pushing it.
thanks.
\_ that only matters if the content of your variables comes from
input.
\_ thanks for the code, I'll give that a try today. One
question-- this is a real-time application, so there are
a few common stdio calls I use regularly and the rest
are viewed warily. Are there any non-constant
performance implications for using vsnprintf? I can
handle a +foo hit, but foo*strlen(err) might be pushing
it. thanks.
\_ vsnprintf calls vfprintf internally. In most cases
sprintf also calls vfprintf internally. The same
non-constant performance issues you may have with
your implementation of sprintf will most likely
apply to your implementation of vsnprintf.
\_ that only matters if the content of your variables comes
from input.
\_ Program defensively. |
| 2003/2/21 [Computer/SW/Compilers] UID:27474 Activity:nil |
2/20 I'm gonna install spim on my Linux box. How do I generate MIPS code
when I don't have access to any old DEC/MIPS based machines?
\_ Build a cross compiler. Check out the cs 162 web page, they
may have a gcc binary that is capable of cross-compiling to mips |
| 2003/2/14-19 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:27419 Activity:low |
2/14 Is there any way other than using "_asm" to access x86 registers as
variables in C code compiled with MS C++ Compiler version 12 or 13?
(In the BC++ for DOS, for example, I can use "_AX".) I tried
http://msdn.microsoft.com but couldn't find anything. Thanks. -- yuen
\_ What is wrong with _asm, is it bad?
\_ No, but I just want to do something like "if (_AX = 3) {...}".
If I use "_asm" blocks I need multiple lines and a label. -- yuen
\_Something seems fundamentally wrong with this kind of statement.
Specifically, mixing C and assembly that way just doesn't work.
I really think you must load the AX register into a short
variable, then test the contents of that variable. Otherwise
you may not get what you intend.
\_ Okay, I'll do that. Thanks. -- yuen |
| 2003/2/2 [Computer/SW/Compilers, Computer/SW] UID:27281 Activity:high |
2/2 i'm getting a "cc1: warnings being treated as errors" as I try to
compile this thing. But i don't WANT warnings treated as errors.
How do i make it stop? (specifically i'm getting a "warning: implicit
declaration of function `exit'" message but that's not the point.)
\_ how are you compiling it? this is gcc?
\_yes. From the make file : "gcc -O2 -Wall -Werror"
hey, i bet if i take out that With error flag, it might do the
trick eh? I bet if had just looked at the damn make file in the
first place i could have figured it out. O.k. if i had a clue
stick i'd beat myself with it, but i seem to have misplaced mine. |
| 2003/1/26-27 [Computer/SW/Compilers] UID:27202 Activity:nil |
1/24 Speaking of C++, I was working on refreshing my memory on it using
Soda, and I had a problem with the cin.getline() function. It
gcc claims not to have a function that inputs into a sting object
only one that uses a char buffer. But even then it doesn't work
completely correctly. We have Gcc 2.95 here, is that too old? |
| 2003/1/14-17 [Computer/SW/Compilers, Computer/SW] UID:27094 Activity:high |
1/15 Back to Mirzaian's strongly polytime LP claim. The link to the
announcement has vanished from his webpage (although the file itself
is still there, http://www.cs.yorku.ca/~andy/pubs/Announce.doc).
Would the original poster (or anyone in the know) care to comment?
\_ Apparently not.
\_ Looking into it, stay tuned. - OP
\_ We ll find out by February. - OP
\_ Which we, why February, and what will we find out? Or did you
mean by January 28th? If so, then that still wouldn't explain
the disappearance of the original announcement. |
| 2002/12/3 [Computer/SW/Compilers] UID:26695 Activity:high |
12/2 What does the following struct mean?
struct { instr_t :18, _i:1, :13; } u_i;
#define i_i u_i._i
#define getI(x) (((((uint32)(x)) << 18)) >> 31)
#define putI(x) ((((uint32)(x)) << 31) >> 18)
\_ it means you should read up on bit fields.
\_ Hi paolo!
\_ Ok, I give up. Why is this funny?
\_ Especially because paolo doesn't log in to soda.
\_ Well, not in the past week perhaps, but:
pst ttyEm 63.73.217.160 Fri Nov 22 12:32 - 12:33 (00:01)
pst ttyEH 63.73.217.160 Wed Nov 20 14:22 - 14:27 (00:05)
pst ttyCi 63.73.217.160 Tue Nov 19 20:04 - 21:35 (01:31)
pst ttyBS 63.73.217.160 Mon Nov 18 10:42 - 10:46 (00:03)
\_ yes yes that's nice. Why is this funny?
\_ The struct is composed of three members, one of
type instr_t that is 18 bits, one of type _i that
is 1 bit, and I think a signed int of 13 bits.
This might help:
http://www.cs.cf.ac.uk/Dave/C/node13.html
\_ they're commas, not semicolons. _i is the field identifier,
not the type. All three fields are of type instr_t, with
the first 18 and the last 13 bits being unnamed.
\_ As far as the macros are concerned, does the first
one return the value of the last 14 bits * 62?
I have no idea what the second one does since it
seems to deal with only the last bit.
\_ I think even the order of the bits in bitfields is up to
the compiler. So getI() only works for some compilers.
Why does he need getI() anyway? "foo = u_i._i;" will do.
--- yuen
\_ I would guess that it's for cases where that 32-bit
value got read as an integer rather than as the struct.
of course, this could have been easily solved with a
union.
\_ wha--? It's not that hard to understand. you've got a
32-bit value where you're only concerned with is the 19th
bit from the left. getI gets that bit. It shifts left 18
bits then shifts right by 31 bits (hint: there's only one
bit left). putI does the opposite; it takes a value for
that bit and places it in the right spot in the returned
value.
\_ But the problem is that you don't know whether _i is
the 19th bit from the left or from the right. You don't
know whether the 18-bits or the 13-bits are the more
significant bits. It's up to the compiler. -- yuen
\_ http://www.cs.cf.ac.uk/Dave/C/node13.html
Read Portability. They prefer shifting for
portability.
\_ shifting is preferable to the bitfields, but
I think masks would have been better than
the extra shifts and would be just as portable
(if not more so, since they wouldn't necessarily
be dependent on operating on 32-bit values.)
\_ yes. sorry, I didn't mean to imply that it wasn't
compiler-dependent. there's also the assumption
that there's an appropriate underlying type for
the uint32 typedef. my assumption is that the
code is for some specified compiler and
architecture. |
| 2002/11/27-28 [Computer/SW/Compilers] UID:26653 Activity:nil |
11/27 jal function_foo;
add a, b, c;
The add instruction is always excuted. I did some tests using
gcc -S on some simple routines. Sometimes I see stuff like this
in the output:
jal function_a;
jal function_b;
The compiler doesn't seem to explicitly insert a noop. But there must
be a noop after it. My question is: is an noop executed by the CPU
without the actual noop code? Or does the assembly insert it
automatically and I just don't see it with "gcc -S"? Thanks.
\_ Most ISAs do not have this branch delay slot. Of the major
ISAs, only MIPS (and maybe SPARC?) does. In any case, there
are directives that tell the assembler whether or not to
introduce its own delay slots as needed, or to interpret the
code as given. I believe it is .set noreorder and .set
reorder. |
| 2002/9/13-15 [Computer/SW/Compilers] UID:25883 Activity:high |
9/13 Any plans to install gcc-3.2?
\_ Is there any reason to other than it's kewl and gn00?
\_ Support for partial template specialization. New binary format.
Etc.
\_ So it has kewl new features. Is there any reason to install?
\_ so you can wank off to the binary's new features. duh.
\_ so ill guess we'll be stuck with a known-good version
of gcc that works just fine and does everything required
of a compiler until a version comes out that someone
actually _needs_ installed. wank at home.
\_ But gcc 3.2 is binary incompatible with C++ binaries
from previous versions! Don't you want to recompile
everything written in C++?
\_ and what about C99? |
| 2002/8/22-23 [Computer/SW/Compilers] UID:25645 Activity:high |
8/22 In C, Is there any advantage for writing "if (5 == i) {...}" instead
of "if (i == 5) {...}"? All the sample code in a book I'm reading uses
the former style.
\_ just code both versions, and have gcc dump the assembly out
and compare.
\- this is kind of interesting exercise if you really care about
perf in some opart of your code. we noticed and older gcc
generated diff asm for i++ and ++i in one instance where it
really shouldnt have mattered much and there was a measureable
perf diff. ok tnx.
\_ It depends on the compiler but this is such a simple bit of code
that any compiler should do the right thing no matter which way
you do it. Your book is a bit screwy. Does the author say why
they chose that style? It's definitely non-STANDARD.
\_ It's the "Developing Windows NT Device Drivers" book. The
preface explains the reasons behind other styles used in the
example but doesn't explain the "if" style.
\_ the former style causes a syntax error if you mistakenly
use the assignment operator '=' instead of compare '=='.
the same mistake in the latter style is harder to detect,
although some compilers (gnu) can generate a warning in
certain cases.
\_ Yeah but who reads warnings anyway? 95% of gpl stuff compiles
with screen fulls and still works and never gets fixed.
\_ Good point! That must be it. Thx.
\_ Yeah, that used to be the advice. However, in around 10 years of
programming, I've only been nailed by that a few times. And I
prefer my code to be easy to read.
\_ I second that. (5 == i) is annoying. |
| 2002/8/8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:25522 Activity:high |
8/8 Why do people declare functions as "static" all the time in C?
\_ one of the reasons is that static makes the function local
to the file.
to the file. Similar to a private method in C++ or java.
\_ So that's just a linker issue? Preventing namespace collision?
\_ that's one of the reasons. There are probably more, but
that's why I like to use static in C.
\_ Another is because some lame compilers barf if you declare a
function that doesn't have a prototype unless it is static. |
| 2002/4/4-5 [Computer/SW/Compilers, Computer/SW/OS/Windows, Computer/SW/Unix] UID:24320 Activity:kinda low |
4/3 Has anyone tried Cygwin? How is it?
\_ If you're willing to put in the effort to get it configured and
running you'll get a decent system. A friend of mine compiled and
ran apache on cygwin/nt with numerous mods for a production server.
It 'worked' but I would not do this in any place I cared about. I
provide this only as an example of what can be done, not what should
be done. Think of the children!
\_ If you're willing to put in the effort to get it configured
and running you'll get a decent system. A friend of mine
compiled and ran apache on cygwin/nt with numerous mods for
a production server. It 'worked' but I would not do this in
any place I cared about. I provide this only as an example
of what can be done, not what should be done. Think of the
Lorelai, is that you? _/
children!
\_ My laptop dual boots to Linux/Win2K. I got sick of rebooting
to do development, so installed cygwin and use it to this end.
I'm doing my whole 162 project using it this semester and
haven't encountered any problems. I even got the mips cross-
compiler to work using cygwin gcc (thanks to this guy:
http://upe.cs.berkeley.edu/~jeffpang/cs162 ) - rory
\_ If you want a half broken UNIX environment on your Windows
system, Cygwin is the way to go. If you are just interested
in a half broken UNIX environment, just install '1337 GN00
L1NUX instead. |
| 2001/11/9-10 [Computer/SW/Compilers] UID:22990 Activity:high |
11/9 Do the 386 and 486 versions of SETI@home work on 386 or 486SX PCs
without a 387 or 487SX?
\_ "Back in the day", you had to either get a math co-proc or the
software had to be written to use software emulation which meant
it would run at 1/10th the speed or so for things that normally
required a math co-proc. What's the point of grinding out a unit
per 2 months anyway? By the time you get your unit in, they'll
have already given up on your client/unit pair. As far as seti
goes, it depends totally on how they wrote it. Try it.
\_ I know it depends on how they wrote it, or more likely, what
compiler switches they passed to the compiler. But since I
don't have a 386/486SX PC, I can't try it out myself.
\_ Then why do you care?
\_ Okay, I'm just curious.
\_ Surely you've got better things to do than provide horribly
energy-inefficient computing power to SETI with negligible
results.
\_ Hey, at least it's not a 8088 or a Z80.
\_ It was either inefficient cycles going to SETI or wasted idle
cycles. Which one is worse?
\_ It was either inefficient cycles going to SETI, or wasted cycles
running idle loop or drawing flying toasters. Which one is
worse?
\_ Turn the fucking thing off, duh. Just because it still
works doesn't mean it should be on.
\_ Dude, chill. It seems unlikely that the wasted power
from an old machine is going to matter all that much
in the grand scheme of things. Try decaf next time....
\_ What about the wasted idle cycles when you're typing in
your source code, or your compiler is reading a file from
the hard disk or over the network, or you're downloading
something from the web, or your debugger is waiting for
the target machine to hit a breakpoint? I power on my
PC at work 8 or 9 hours a day, and at the end of the day
I usually find that only 10% of the CPU cycles went to
the ocmpilers/browser/OS etc, whereas the other 90% is
idle cycles which I use to run SETI@home. |
| 2001/10/17-18 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:22763 Activity:high |
10/17 Is "const volatile" or "volatile const" a valid type qualifier in plain
C? I want to define something for some read-only hardware registers.
I'm wondering if something like
typedef struct {
const volatile int reg1, reg2, ......;
} myRegs, *myRegsPtr;
will do the trick. I want the fields to be read-only but I don't want
the compiler to optimize away any read operations. I tried compiling
the above and there's no error, but I don't know if it'll always
compile to the right thing. Thanks.
\_ If the HW registers are read-only then you shouldn't need to do
anything like const. Just do volatile reg1, reg2, etc. This stuff
is memory mapped right? So when you write to hardware locations
that are read only, nothing will happen. When you read it back it
will still get the read-only value. (If the HW is designed
correctly). Things get trickier if you're using this struct to
keep a shadow copy of the registers due to some ASIC bug. But
generally, read-only means exactly that. Read-only.
\_ Does "const volatile" actually mean anything then?
\_ Yes it's memory mapped. I realize I don't need to use "const",
but I just want to use it so that the compile will generate an
error when someone accidentally writes code to assign a value
to that location.
to that location, just like what it does for an ordinary const
variable.
\_ Yes, it's defined in standard C, and it does exactly what you
want: you're not allowed to assign to the variable (const), but
the compiler will read the value from memory every time you
access it (volatile). --mconst
\_ You need volatile mconst. -John |
| 2001/10/8-10 [Recreation/Computer/Games, Computer/SW/Compilers] UID:22669 Activity:moderate |
10/8 How can one obtain a console development machine and
compiler? Can you simply pay Sony/Nintendo for a
the hardware/software?
\_ traditionally, you need to submit your game proposal first,
and if approved, then you sign an NDA and then pay for the
development hardware and software. for hobbists, Sony had
development hardware and software. for hobbyists, Sony had
the NetYaroze (PSOne) program and now PS2Linux in Japan.
these two would allow you to program technology demos on
\_ you also need to spend thousands of dollars
the hardware, but not full-fledged bootable games. --jwang
\_ what is the difference in the developing a tech demo
and a bootable game? Is the Playstation development
tool the same?
\_ licensed PlayStation 2 developers use different hardware and
costs of entry to reflect commercial vs hobbist interests.
software tools than PS2Linux users -- the two have different
costs of entry to reflect commercial vs hobbyist interests.
\_ the word is "hobbyist." A Hobbist is a follower of Hobbes.
a PS2Linux demo only runs out of PS2Linux -- you can't burn
the executable to a CD-R and boot another PS2 with it. --jwang |
| 2001/8/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:22133 Activity:moderate |
8/15 Is there a way in C to specify that I want a particular enum type
to be one byte or something small instead of the size of an int?
typedef enum {ME_FOO, ME_BAR} my_enum_t;
my_enum_t myVar;
myVar = ME_FOO;
I saw that gcc has an option "-fshort-enums", but I'm looking for a
compiler-independent way, preferably in the source code itself.
Another possible way is to do this instead
unsigned char myVar; /* It's really my_enum_t. */
myVar = (unsigned char) ME_FOO;
But that's ugly, plus "sizeof(my_enum_t)" is still the size of an int.
Thanks in advance. -- yuen
\_ if you read your K&R you see that this is left implementation
dependent. You have to use a compile pragma, or just use the
constants and not the enum type. BTW I saw witort today. -- pld
\_ Hi Paul! I never noticed pld was you until you mentioned witort!
-- yuen
\_ There's no portable way to do this in ANSI C (C++ doesn't force
a particular size either -- just a minimum size, AFAIK).
The following hack might be your best option:
enum my_enum_t_literals { ME_FOO, ME_BAR };
typedef unsigned char my_enum_t;
my_enum_t x; x = ME_FOO; /* Works, no warnings */
sizeof (my_enum_t) is 1 in this case. And the intent is
clear from the naming convention. -- misha.
\_ i don't see anywhere in the standard that an enum CAN
be converted to char. only int and larger (including float).
i believe that implies that the compiler is free to
issue a warning. but it would have to be a pretty
stupid compiler.
\_ Enum constants are the same as int constants (K&R2 A8.4),
and you can assign int to char in C. Compilers might
give warnings if the value doesn't fit, which shouldn't
happen here. C is liberal about primitive conversions,
which has some upsides (see Kahan's page about Java) -- misha. |
| 2001/8/8 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:22046 Activity:high |
8/7 Is there a way to assign values to a structure in one statement? e.g.
my_struct_t m1, m2;
m2 = m1; /* compiles*/
m2 = {1,2,3}; /* doesn't compile */
Thanks.
\_ give my_struct_t a constructor. pass 1,2,3 as arguments.
m2 = my_struct_t(1,2,3); --pld
\_ if he's using C++, another way to do it is to define
operator<< and/or operator,
then you can do intuitive looking things like:
Array ar;
ar << 1,3,4,5,6;
i don't remember the precedence of operator= but if it's
lower than that of operator,
you could also do
ar = 1,2,3,4,5;
\_ oh shit, you're asking for hell from the language lawyers.
you can't do that at runtime but you can use that syntax as an
initializer. that's why it's called "initializer" syntax.
\_ Yes, you can say my_struct_t m2 = {1, 2, 3};
\_ I need to assign different values multiple times, hence I can't
do it as initialization. Oh well, I'll just have to do it field
by field then.
\_ yeah, quit being such a lazy ass and do it by field.
\_ have you read up on these things called "classes" by the way?
\_ Been out of school for too long. I can't even find my K&R
book anymore.
\_ I have a copy, but it's in Russian :(. As for your
question -- yeah, you can't use struct initialization
as assignment in C. If you need it a lot, you can write
a macro. -- misha.
\_ this isn't terribly efficient, but can't you declare and
initialize a temporary structure, and then assign that to the
one you really want? e.g.:
{ my_struct temp = { x, y, z };
whatever = temp;
}
...? yeah, it's not a single line answer, but it's simple.
and if you're lucky, maybe your compiler will do the right
thing and ditch that temporary structure entirely. -jameslin
\_ i think c99 allows this. you are using c99, right? -ali |
| 2001/6/28-29 [Computer/SW/Compilers] UID:21669 Activity:very high |
6/28 Is there an equivalent for Perl's '-c' option in javac?
\_ JLint at http://www.ispras.ru/~knizhnik jikes -nowrite +B
\_ jikes is the superior Java compiler
\_ jikes is the STANDARD SUPERIOR JAVA COMPILER!
\_ JIKES! JIKES! JIKES is the STANDARD! Superior Java
Compiler.
\_ jikes is as useful as Essence of Emerile while eating
a shit sandwich. |
| 2001/6/18-19 [Computer/SW/Compilers, Computer/HW/CPU] UID:21569 Activity:nil |
6/18 So GCC 3.0 is released. Anyone know where I can find detailed info on
the contents?
\_ it doesn't build for mips-elf
\_ I'm more interested in the detailed changes of the release
(improved std C++ etc.). And if I were to build it, it would be
on win32.
\_ http://gnu.org ?
http://www.gnu.org/software/gcc/gcc-3.0/features.html
\_ EVIL COMMIE LIBERALS. USE VISUAL C++. |
| 2001/5/16-17 [Computer/SW/Compilers] UID:21286 Activity:low |
5/15 anyone know how to produce a linker map file in vj++?
\_ What exactly are you trying to do? |
| 2001/5/12 [Computer/SW/Compilers, Computer/SW/Languages/Perl, Computer/SW/Editors/Vi] UID:21252 Activity:nil |
5/11 http://www.grrl.com/hackerboy.html |
| 2001/4/18 [Computer/SW/Compilers] UID:21014 Activity:nil |
4/17 What is ld.config? What is it used for?
\_ It's a file used by some unix boxes to tell binaries and compilers
where to look for object library files (.so and .a). Man ldconfig.
Considered by evil communists to be a bad thing. -John |
| 2001/4/16-17 [Computer/SW/Compilers] UID:20990 Activity:high |
4/16 In a C statement like "if (foo > bar)" where foo is a int8 and
bar is in32, how does the compiler translate that? Does it turn
it into a int32 to int32 comparison? Or does it chop off bar and
turn it into int8 to int8 comparison? If it does turn foo into an
int32, where does it get the memory? Compiler assign it a new
register? If so, is there a possibility that you run out of registers
if you have lot of comparisons of different sizes? Thanks.
\_ 1. How a person writes a program has no bearing on how it will
look like in the procedure stack. If a function is a leaf
function and uses less registers than is actually available then
there's no need for a new procedure stack. Where does it get the
memory? The compiler figures this out.
2. Yes, you can run out of registers. What's the solution?
It's called register allocation. There exists a myriad of
algorithms to deal with this issue. Take 164 and you'll learn
all about them. Not everything in a function fits in the register
ints means "store in register and allow the automatic sign
extension to happen". don't let the above comment make you
think that int8<>int32 comparisons are somehow less efficient.
file.
\_ Uh, 164 with Savage Sue barely touched on register allocation.
\_ C does type promotion. In this case, foo will end up being a
32-bit value that is the same, numerically, as the original
8-bit value.
\_ It creates a temporary int32 for the comparison. The temporary
value is normally stored in a register, but it will end up in
memory instead if you run out of registers.
\_ note that this doesn't mean shit in a modern architecture.
your registers are 32 bits wide at least already, so that
additional 24 bits are already wasted. type promotion of
ints is actually a noop in a modern architecture: it's already
stored as a sign extended 32 bit value. don't let the above
comment make you think that int8<>int32 comparisons are somehow
less efficient.
\_ They are less efficient. ALU operations don't automatically
sign extend 8-bit values in a register. You need to do that
separately. For example, on a Sun:
foo.c
-----
int foo(char c, int i) { return c + i; }
int bar(int i1, int i2) { return i1 + i2; }
when you compile this with the -S option the two functions
are almost the same except:
stb %o0, [%fp-17]
ldub [%fp-17], %o0
sll %o0, 24, %o1
sra %o1, 24, %o0
ld [%fp+72], %o1
used to perform the sign extension
\_ can you turn on -O and rerun this, please?
\_ Similar results, though much shorter. For both Sun
cc and gcc, foo produces a sll and sra by 24 but
not for bar. So yes, C promotion does incur overhead.
foo:
sll %o0, 24, %o0
sra %o0, 24, %o0
retl
add %o0, %o1, %o0
bar:
retl
add %o0, %o1, %o0
\_ i based my initial assertion on the fact that
many architectures provide a load byte instruction
which does sign extension on load to register. |
| 2001/4/13 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:20960 Activity:very high |
4/13 What's up with forward declarations and member function pointers in C++?
I've got a bunch of classes that need to include each other, but when I
try using a pointer to a member function (fooclass::bar) I get some
bullshit about "incomplete type fooclass has no member named bar". Even
though it does. So I can't get this bitch to compile. Am I just screwed?
Happy Friday the 13th btw.
\_ platform? compiler? a smaller sample that doesn't work? From
here is sounds like you're screwed. I've done that web of
class dependencies before with no problems. -meyers
\_ Yes, post your code in /tmp or something for others to view.
\_ hmm. well i'm juggling other things right now so I'll try
doing that later. this is g++ on linux by the way.
i believe it would work if i change from calling class A's
constructor in class B's constructor to setting it up manually,
but that's not very elegant, and this is stuff other ppl will use.
\_ Hand coding kludged solutions are known as "job security".
\_ yeah, especially if you're stupid and your coding-fu is
weak.
\_ leave him alone, he's probably only taken cs61b.
\_ Right, sorry. I forgot about the "no-beating-
up-on-retarded-kids" rule on the motd. mea culpa.
\_ When you're laid off and during the exit interview
your manager thanks you for writing such clear and
easy to modify code, you'll think back on this.
\_ Talking from experience, huh? Poor guy. Have
you ever considered a job in a less technical
field?
\_ You'll see. It's easy to be 23 and think
you're hot shit and the world is your
oyster.
\_ not likely. People that do this sort of feeble
"job-security" crap get fired where I work.
Grow up and get a real job, kid.
\_ And the name of your New Age Enlightened
company is...? |
| 2001/3/15-16 [Computer/SW/Compilers] UID:20797 Activity:nil |
3/14 Which of the following is better?
#define intptr (int*)
typedef int * intptr;
I think the latter is better, but why?
\_ first, does #define intptr (int*) do what you want? afaik,
(int*) x is not a legal declaration. if you get rid of the
parentheses, consider the difference in the following if you use
typedef or #define :
intptr x, y;
\_ Correct answer moved to the top.
\_ The latter is better because the preprocessor will sometimes
\_ what's wrong with just using int* ?
\_ because it's not hungarian.
\_ because CIVILIZED people don't succumb to those primal pointer
urges, you sick monkey
\_ Use void *, it is used but never used up.
\_ first, does #define intptr (int*) do what you want? afaik,
(int*) x is not a legal declaration. if you get rid of the
parentheses, consider the difference in the following if you use
typedef or #define :
intptr x, y;
substitute (int*) for intptr in bad places. For example if you
hook up two components that both define intptr with #define
the preprocessor will silently choose one, whereas the compiler
will complain about conflicting typedefs.
\_ if you #define something twice, the preprocessor often will
give you a warning.
\_ #define's okay for smaller project. However, imagine you have
constants (#define CONST1 12345) compiled into your objects and
later on you change the semantics of your code. The compiler is
certainly not going to catch your mistakes. Preprocessing sucks,
save it for porting issues.
\_ preprocessing when used properly can be quite useful. Macros can
sometimes do things that inline functions cannot.
\_ The typedef is prefarable for the following reasons:
(1) This is EXACTLY what typedef is defined to do. Using
#define is being unconventional. Since there is no
good reason to buck the convention you might as well
follow it to make everyone's life easier.
For example, somebody reading your code who sees intptr will
probably assume it is a typedef (since that is the convention)
and do things that might break if it was a #define.
(2) Debuggers can figure out what intptr means if it is a typedef
but not if it is a define. For example, "p (intptr) x"
should work properly in gdb with typedef not with #define.
(3) Typedef is more likely to work properly in cases you haven't
considered since the compiler has more information about
what it's doing. Consequently, it is more likely that
compilers will generate proper warnings and error messages
using typedef than with define. Similiarly chaining typedefs
will work, can you guarantee the same with defines? |
| 2001/3/12-14 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:20753 Activity:high 71%like:20751 |
3/11 (define foo "there is a compiler that will take in java and ouput x86
machine")
\_ (what-is-it-called foo)
\_ (url? foo)
\_ (url-p foo), HEATHEN!
\_ "define" is a Scheme special form, not Lisp.
\_ defun. Lisp. Kids these days.
\_ my other car is a cdr.
|\_gcc does this. -ali
| \_ you mean gjc right? The code that is generated is quite poor
| and dumps core often.
| If you really want this M$ had a tool to do it in VJ++ and
\_ Yeah, gcj, I have having a dislexic moment.
| it worked pretty well. For non-M$ OSes SOL.
\_____\_ i believe he means gcj: http://gcc.gnu.org/java/index.html
but gcj seems to be broken (can't even build helloworld.java)
- paolo
\_ Yeah, gcj, I was having a dislexic moment.
dyslexic, you dysfunctionate _/
\_ Yeah, gcj, I was having a dyslexic moment.
I don't know about the current version, but at least two
versions last years *seemed* to be able to compile basic
stuff and run it. (At least that's what the guy in the cube
next to me said, I never tried it. Jikes + class file
obfusication worked well enough for me)
\_ obfuscation, you obsequious abstruse obstretrician
\_ Doesn't TowerJ claim to do this?
\_ We tried it about a year ago at work and it didn't work all
that well. In most cases, the speed up was less than 1.5x,
and the fastest the code ever ran was 2.2x. This was on x86
Linux though. It might be better on M$ Lose*. But still, its
not worth the money and time to retrofit everything to use
towerj. You can get better speedups by avoiding exceptions and
using java obfusication along with doing core pieces in native
code. - not the original poster
\_ This is not surprising, since well-coded java has regularly
run at very close to "regular" compiled C/C++.
The trick is in writing regular java in the first place.
But I want it for saving memory, in an ideal world.
\_ IBM has a compiler that does this. I believe it comes with VAJava.
I can find out references if you want.
\_ sure
FIRST!
\_ Your strategerie confounds me.
\_ my what now? |
| 2001/3/12 [Computer/SW/Compilers] UID:20751 Activity:nil 71%like:20753 |
3/11 there is a compiler that will take in java and ouput x86 machine
code - nameP
\_ t |
| 2001/2/27 [Computer/SW/Compilers] UID:20711 Activity:high |
2/26 I assume GDB will allow me to do a trace on any core dump. correct?
Is there a better way? (pedants: if so what?)
\_ I use gdb all the time to analyze core dumps. The problem is
that gdb gives this facad of a horribly complicated debugger
which scares people away. You just need to start off with
the basics. Compile and link everything with the -g option.
That's all you need. you can invoke gdb from the shell or emacs
by calling gdb a.out core (substitute a.out with your program).
bt is you best friend for finding where a program crashes.
You're on your own from there. It's sad, I'm not even a
software engineer and I use debuggers more often than most of
them do.
\_ I use Java. I don't need to debug. My programs are
guaranteed bug-free by Sun.
\_ i can't think of anything better than what gdb+emacs does.
what feature do you need? -ali |
| 2001/2/7-9 [Computer/SW/Compilers, Computer/SW/RevisionControl, Computer/SW/OS/Windows] UID:20531 Activity:high |
2/7 Any recommendations for Windoze NT/2000 backup software,
where each user keeps their files on local disk?
\_ Windoze is not recommended.
\_ Yech.... Legato I guess but why would you let users keep local
files? Your issue isn't backup software. It's the way you run
your system.
\_ What strategory would you suggest?
\_ What strategory would you suggest? Obviously I can force
everyone to compile files on a shared file system, but
this would make our programmers feel corporate and they
wouldn't like that.
\_ They can compile anything on anything they like but I
suggest either: store source on remote disk and set up
compiler to write all objects, etc, locally or much better
would be to use a revision control system like perforce
or others that have been discussed previously on the motd
and just backup the perforce server. Anyone stupid enough
to never checkin their code deserves to get fucked.
\_ Wrong. source control systems are meant to store
revisions, not to be used as primary backup systems.
\_ Duh, I didn't say it was a backup system. I said
you're backing up your revision control system
instead of dozens, hundreds, or however many desk
tops. Try reading before posting. Thank you for
playing "sysadmin for a day". Come back next year.
I wouldn't want to be the guy to answer to the VP
of Engineering when he asks why half his code base
went poof and you can't restore it. "It's a
revision control system, not a backup system, so I
didn't back it up". That makes no sense.
\_ Read my post again, hacker. I said they should
not be the PRIMARY backup. They are secondary
to having a PRIMARY backup of people's local
files. What you suggest is the easy way out.
\_ What I suggest makes it more likely the
files will get backed up even when people
turn off their machines at night. |
| 2001/1/25-27 [Uncategorized/Profanity, Computer/SW/Compilers] UID:20435 Activity:very high |
1/25 Which is a more efficient strcpy()? Is it copying each character
until you reach \0; or is it calling strlen() to get the length
of the string and executing a memcpy of that length?
\_ That probably depends on the CPU architecture, e.g. whether or not
it has string instructions and how efficient they are.
\_ Assume Pentium 3 with a Linux 2.x kernel and using gcc 2.95.2.
\_ with strlen() counting each character until \0 is found. :-)
\_ why?
\_ Relax, son, it's a joke. Move along.
\_ wc `locate strcpy.c bcopy.c`
50 337 2163 /usr/src/lib/libc/string/strcpy.c
47 328 2085 /usr/src/sys/libkern/strcpy.c
35 112 711 /usr/src/contrib/binutils/libiberty/bcopy.c
139 685 4175 /usr/src/lib/libc/string/bcopy.c
271 1462 9134 total
#include <string.h>
char *
strcpy(to, from)
register char *to;
register const char *from;
{
char *save = to;
for (; (*to = *from) != 0; ++from, ++to);
\_ != 0 not needed
return(save);
}
\_ Now do it in 6052, 80286, perl 4.036 (1 line or less),
and 3 other languages/scripts of your choice.
\_ by "6052" do you mean 6502? fucking hoszer.
\_ Holy shit! A typo! And you caught it! Wow!
You are *soooo* smart! Did you tell yermom?
I'd bag on _your_ typo but I'm not as smart as you.
\_ I'd bag on your misspelling too fag.
\_ Uhm, there wasn't one, son.... Either way,
if the best you can do is toss around "fag"
one liners, maybe you're better off just not
bothering. Maybe you should try again in a
few years when you're passed your 6th grade
tests.
\_ Suck my dick, cocksucker.
\_ gcc has a built-in implementation of strcpy, but i can't get it
to emit on linux, gcc 2.95.2. anyone have better results? -ali
\_ Try compiling with -Dstrcpy=__builtin_strcpy. The -fhosted or
-fbuiltin options sound like they should work, but they
don't. -asaddi |
| 2001/1/19-21 [Computer/SW/Compilers] UID:20380 Activity:nil |
1/19 First C compiler uncovered:
http://www.theregister.co.uk/content/4/16227.html |
| 2001/1/15-16 [Computer/SW/Compilers] UID:20327 Activity:high |
1/15 Stanfurd offers "Programming Language CS242" in conjunction with
CS243, their version of Berkeley's Advanced Compiler 264. How come
Berkeley doesn't have a Stanfurd equivalent of CS242?
\_ Look up the actual curricula for 263 and 264. Also look up "proper
use of plurals in Ennglish"
use of plurals in English"
\_ you must be some queen's english throwback.
\_ But there is only the *one* programming language, and there is
only the *one* advanced compiler. -troll |
| 2001/1/12-15 [Computer/SW/Compilers] UID:20307 Activity:insanely high |
1/12 Is it a property of the new compiler that it creates a local name
__func__ in every frame, at least when debug info is generated,
where the value of that local is the function name? I just noticed
that this is the case, but I'm not sure when it started happening.
\_ [moved idiot who stuck comment in the middle]
\_ What new compiler? "the new compiler"
doesn't make any sense without context.
\_ [ it has context. the context is right fucking there on
the screen. maybe you're from the post-mtv generation
that can't recall the point of a paragraph 2 sentences
later. stop sticking comments in the middle or get
purged again. the rest of us aren't as dumb as you]
\_ I see no where that it says what the "new compiler"
is. It could be gcc 2.96, javac 1.3, MSVC whatever,
or someone who just discovered a compiler the rest
of the world has been using for years. Pull your
head out of your ass nimrod.
\_ Dumbshit, try basic English. Your comment was
fine. You put your comment in the wrong fucking
place.
\_ Lay off the drugs.
\_ Remember to take your drugs.
\_ My dosage level is just fine. Saw my
therapist only two days ago.
\_ I believe this is a requirement of the new ISO standard C99.
--Galen
\_ c99 describes how to produce debugging symbols???
\_ <DEAD>web.onetelnet.ch/~twolf/tw/c/c9x_changes.html<DEAD>
\_ freaky things on that web page:
11. [introduction of] _Complex, _Imaginary, _Bool.
14. Array declarations may have a '*' between the square
brackets (used for variable arrays in parameter lists).
16. compound literals: create and init anonymous structs and
arrays.
23. the above mentioned __func__: it can actually be used
as a variable in your code to get the name of your
function
33. There are variable-length arrays, whose size depends not up\
on a constant expression but on a computed value. Variable-length arrays must no\
t be global or members of a struct or union. Multi-dimensional variable-length a\
rrays are allowed. (this rules because people were weary of using this feature
in gcc. now it's standard) |
| 2001/1/11 [Computer/SW/Compilers] UID:20293 Activity:nil |
1/9 Why can't somebody make a java compiler that generates machine
code? Screw the cross platform bytecode, then it'd be just as
fast as C/C++ and would still be the more cleanly-designed
language.
\_ They have. It's called gcj, and it's part of the Gnu Compiler
Collection, normally referred to as gcc. -mogul
\_ TowerJ is much better. |
| 2000/12/26-28 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:20177 Activity:high |
12/26 Does any one have any suggestions for debugging programs?
\_ try /csua/bin/clue
\_ printf is your friend!
\_ are you looking for debugging strategies or debuggers?
\_ If you are looking for debugging strategies, I would recommend
sprinkling assertion checks throughout your program. For example,
if you have a data structure, write a function to check that the
internals of the data structure are consistent. Then use the
assert macro (man assert for details) to verify that the
data structure is consistent when you modify it. You can also
use assertions to check that the inputs and outputs of your
functions satisfy your assumptions about what they should be.
Assertion checks are one of the best tools for finding bugs.
\_ aka: printf.
\_ Yes. Because we want to run helper debugging functions for
every little data structure we use. That's much easier
than using the gdb print command.
\_ print(3) doesn't call sigabrt for you.
\_ if your data structures are weird, try DDD (gui wrapper on GDB)
\_ on a somewhat related topic: whenever I try to use lint, it
complains that it can't find llib-lc.ln. How do I fix this?
\_ Install the lint libraries package(s) for your OS.
\_ you don't use lint. you use gcc -Wall -O3 (turn on optimization
for data flow) |
| 2000/12/17 [Computer/SW/Compilers, Computer/Theory] UID:20114 Activity:high |
12/14 I totally don't see any relevance in teaching Lambda calculus in an
undergrad course to describe stupid semantic rules. Fuck Aiken and
his stupid ambiguous exams!!!
researcher)
\_ usually to emphasize its distinction from an algebra. keep
in mind that "the calculus" taught in high school is
really "the calculus of infinitesimals."
\_ this is a simple question but: why do they call Lambda calculus
"calculus"?
\_ It's a way of calculating stuff. and it sounds cool (to a
researcher)
\_ usually to emphasize its distinction from an algebra. keep
in mind that "the calculus" taught in high school is
really "the calculus of infinitesimals."
\_ I actually wish Hilfinger covered some of that stuff.
\_ Hellfinger just asked you completely unrelated questions
pertaining to English lit or what happened on a certain
date in France that never existed. Often times those
answers were as simple as zero or nothing. Nevertheless,
I enjoyed pushing the very limits of my parasympathetic
nervous system.
\_ About dates that never existed? Then the answer is pretty
obvious: nothing.
\_ Has a Hellfinger exam question list been compiled?
I know two: one about some british poem and another
about some Spanish/Mexican revolutionary figure.
And i think it was french lit and english date.
\_ "someone" should definately do this... I remember two:
what was the HMS Java? I don't remember the answer
but can look it up. The other was a line from "Ode on
a Grecian Ern". If more people post them, I can
compile the list.
\_ this is a good idea. A question from one of my exams was
"Where do the poppies blow, between the crosses, row on
row?" (A: In Flanders Field)
\_ If you're going to teach language semantics,
at all, there are two ways to do it. (a) Operational
semantics, in which your language description is written
in something that works like Tcl. This is icky and went
out of vogue in the 70s. (b) Denotational semantics,
in which your language description is written in something
that works like Scheme (the Lambda calculus). Thank
God that your undergrad compiler class is not about stupid
shit like how to write a lexical analyzer, like mine was.
Also, http://m-w.com's definition of "calculus":
1 a : a method of computation or calculation in
a special notation (as of logic or symbolic logic)
If semantic rules are stupid, then what exactly is a
programming language? -blojo
\_ Programming languages are hard. Let's go shopping!
\_ lexical analyzers are not "stupid shit".
especially the practical applications of 172 stuff.
and neither are lambda calculus or type systems.
how can you justify asserting that they are? this whole
thread is just bizarre.
\_ well, they're kind of over-kill in general when all
you really need is an s-expr reader.
\_ How quaint; how '50s. Dude, humans were not made to
read s-expressions.
\_ I wasn't made. I was born. -human
\_ A lexical analyzer is a necessary component of a compiler
and it's worth maybe spending a week talking about them.
It is NOT worth spending 1/3 to 1/2 a semester talking
about them and doing major projects regarding them.
Any programmer with a clue can write a lexical analyzer.
It just takes general programming knowledge. The important
knowledge in compilers, the domain-specific stuff that the
class should be spent teaching, is all about semantic
analysis, code motion, and maybe provability. -blojo
\_ Um. I can write a lexer very quickly with automated tools
like Lex. Very quickly == hours, not days.
\_ Yeah, that's like my point, see. -blojo
\_ lexical analysers are good for building language -> machine
translators, but the underlying theory is useful as a basic
model of computation. knowing all the DFA, NFA, REGEXP
equivalence shit is really useful if you do CS.
also, there is a lot of theory that goes behind building
YACC. you could either use YACC as a customer (as in the
way compiler writers do) or you could delve into the theory,
like the way language people do. i think you're a lazy
bitch if you think this shit is bunk. -ali
\_ Bunk! Bunk! |
| 2000/12/12-14 [Computer/SW/Compilers, Industry/Startup] UID:20082 Activity:moderate |
12/12 This may sound wierd but is there a way for a program compiled
with the -g debugging option to examine its own stack frame?
I once ran a program that, whenever it crashed, did an automatic
backtrace on itself and dumped it to stderr.
\_ ~mconst/src/gdbcall will let your program run gdb commands
(like "backtrace") on itself. --mconst
\_ another toy, that helped destroy, the elder race of man.
\_ You can do this in assembly, catch an exception and simply
check your stack register and walk all the way up
\_ How about catching SIGBUS, dumping core and then running gdb
backtrace on the resulting core file. |
| 2000/12/9 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:20050 Activity:nil |
12/7 Eh, why are some virtuals set to 0 (pure virtual) and some are not?
\_ defining as virtual = 0 to create an interface definition or
abstract class
\_ Yes. In particular, pure virtual functions are a signal to both
the compiler and client code that this class is not expected
to be instantiated, only inherited from. It also requires any
child classes to provide the method, but doesn't provide a
default implementation. There are many situations where this
is exactly what you want. You may not really get this until
you're trying to make a framework of code that other people
are expected to use, but not modify... -mogul |
| 2000/12/4-5 [Computer/SW/Compilers] UID:19992 Activity:low |
12/3 Are there production C++ compilers that'll analyze the control flow
on pure virtual functions to optimize the overhead of polymorphism
calls?
\_ Yes.
\_ ugh, flow? pure virtual? Poly what? !??!??!?
\_ Poly want a cracker! |
| 2000/11/28-30 [Computer/SW/Compilers] UID:19936 Activity:moderate |
11/28 On an HP-UX system, how do I make a shared library? I tried the
procedure I normally use with other systems, but it fails. Here's
what happens:
gcc -c -fPIC a.c
[no errors]
gcc -shared -o a.so a.o
And I get this error message:
/usr/ccs/bin/ld: DP relative code in file /var/tmp/ccmAcwPp.o - shared
library must be position independent. Use +z or +Z to recompile.
collect2: ld returned 1 exit status
Neither +z nor +Z appear to be options for gcc though.
\_ gcc has always had broken so support for hpux. you may either need
to upgrade or give up (read the release notes for gcc to find out
which). you might have better luck with -fpic instead of -fPIC. -ali
\_ Check how your gcc was built. The *.a files there (libg2c.a,
libstdc++.a, libgcc.a etc.) probably have position dependent
code in them. --dim
\_ libc has nothingto do with making a .so. there is no check for
libc inthis step.
\_ Not sure if this is what you're asking for, but try:
ar -q library.a objectfile.o
\_ (S)he said shared
\_ *
\_ On a platform I don't know, I usually snag some random library
(say gnu readline) and run ./configure on it, then read the Makefile
(or just run make and see what the shlib link line looks like)
\_ *
\_ those branded with * are morons
\_ *
\_ * |
| 2000/11/28-29 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:19928 Activity:high |
11/27 Fuck Aiken, COOL, and semantic analysis!!!
\_ Don't you mean "Fuck'ken COOL, semantic analysis!!!"?
\_ Sorry to say but its your fault for taking it with him and
not with Hilfinger and Java... that's what I did and the
class ruled.
\_ Frankly, "wrote a java compiler" looks infinitely better on
a resume than "wrote a COOL compiler".
\_ And you're only doing this major because it looks good on the
resume right?
\_ And you're not? You bought in BH's whole thing about the
\_ And you're not? You bought into BH's whole thing about the
intrinsic value of education for it's own sake and blah,
blah, blah? The rest of us have bills to pay.
\_ If you're hiring java engineers, would you rather hire
someone who implemented a "java" compiler or a "COOL"
compiler? Gotta take this class anyway, might as well
get the best buck for it.
\_ Yeah, there were so many cases to cover with semantic
analysis. Ridiculous for a class project.
\_ It was 10x worse with Hilfinger, so shut the fuck up.
\_ But think about how much more you learned! You don't need
a high GPA, just a sense of personal satisfaction!
\_ I did. And I got an A in the class. I wasn't complaining,
it wasn't that bad if you put in your 100 hours...
I was just noting that it was way more work than Aiken's
lame projects. Now Graham, that's a killer.
\_ Life would be a lot easier if you figured out HOW to deal with
all of the cases and ambiguity BEFORE writing any code.
\_ Try Graham.
\_ was I the only person who liked Graham? -aspo
\_ yes.
\_ In a biblical sense? |
| 2000/10/26-27 [Computer/SW/Unix, Computer/SW/Compilers] UID:19572 Activity:nil |
10/25 I'm looking at some source code (bootp.c) and I see reference to
MACPY (...). I can't find the define anywhere in /usr/include/*
Anyone know what this does, where a definition exists?
\_ use grep -R
\_ man MACPY
\_ No manual entry for MACPY
\_ gcc -E
\_ (exuberant-)ctags -R --Galen |
| 2000/10/12-13 [Computer/SW/Compilers] UID:19465 Activity:insanely high |
10/12 OK, quick poll to see how many motd-readin' CSUAers were warez
kiddies at one point (Ever call a ware 0-day? Ever ask for elyt xs?
Or ever use leech zmodem? Don't be embarassed, you were 12!):
Yes ....
No .
\_ Does using your Apple][ to dial numbers to get free long distance
count? If so, count me in.
\_ Back when I was a kid, software was free or we had to write it
ourselves.
\_ Using ThinkC/TurboPascal on a MacSE.
\_ For me, using (floating-point) BASIC and machine code on
Apple ][+. -- yuen
\_ Actually my first computer was a TI 99/4A. I wrote
programs on it in basic and saved them to audio
tape. I used to be able to skip to exact programs
on a 45 min tape by listening to the sound made
when fast forwarding (it changes pitch as it gets
closer to the end of the tap). Those were the days.
The first computer that I had with a compiler was
the Mac SE. Damn it was a nice machine. Ran word,
pagemaker, photoshop and compilers with a 68000
and 1 MB Ram (eventually upgrade to a whopping 4).
\_ goddamn it, thats when programming was programming.
programs on modern computers may do more, but there
was a satisfaction in entering a whole program in
hex and having the thing work that can never be
matched with a compiler. -apple ][e haX0r
\_ Toggling in the entire OS on the front panel
of the computer a la Seymour Cray is *satisfaction*.
\_ yup, used zmodem.
\_ hmodem with simultaneous up/download with 4k chunks on
my 14.4 when everyone else is crawling at 2400...
\_ Used zmodem too, but not for warez.
\_ super zmodem with simultaneous tetris and hot/gay chat
\_ Using softICE to crack your momma's pussy.
\_ don't you mean yermom
\_ or yo mama
\_ dewd, you must be the 700th person to get in there
\_ I'm sure that lots of us were warez h0zers. I was, back in HS.
Still, that was a long time ago... the whole scene is very
different now. |
| 2000/10/10 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:19454 Activity:nil |
10/9 from: http://www.OCF.Berkeley.EDU/~summerm/keepOut/resume.html CS 188: Creating Intelligent Agents That Could Get a Better Grade in this Class Than You Will CS 174: How to Win at Blackjack Even if You Left Your Towel in Your Motel Room CS 170: How to Do Just About Anything if You Have a Computer the Size of a Small Planet (or the Most Advanced Graphics Calculator on the Market) CS 164: Writing Compilers That Can Change Your Grade for You (note: everyone who finished the project got an A in the class) Math 241: Derivating W.R.T. Inspector Gadget, If You Please Math 55: You. Me. Gauss. The connection. Math 54: The Cauchy-Schwarz Inequality Applied to Non-Euclidean Vectorspaces. Peace and Conflict Studies 222: The Lighter Side of Overpopulation, Famine, Ecological Disaster, Ethnic Hatred, Plague, and Poverty Political Science 2: Political Diary, An Episode by Episode Account |
| 2000/10/6 [Computer/SW/Compilers] UID:19425 Activity:nil |
10/5 phale the compiler god, are you REALLY that good w/164? Did you
take 264? What do you think about 264?
\_ First off, I'm not a god (although perhaps a minor diety). I took
264, and I'd say that 264 wasn't very useful for the most part.
Although it probably depends on who teaches it. Lately, I am
finding compilers really boring. But then again, in my current
work I am forced to use the piece of shit VC++. |
| 2000/10/5-6 [Computer/SW/Compilers] UID:19421 Activity:very high |
10/5 How do you know whether you're going to ace CS164 or barely going
to pass it? I kick ass in flex and regular expression, but I'm
having a little problem with this LL LR LALR theory. Help.
\_ I hate compilers and I didn't understand half of the material, but
for some reason the prof gave me an A+. So being good/bad at the
subject doesn't always mean you'll get a good/bad grade.
\_ regular expressions is just a small part. But I wouldn't worry
about LL, LR, LALR too much as you should have plenty of time to
digest it. And afterwards, the course takes a completely different
direction and becomes annoying anyway.
direction and becomes annoying anyway. -phale
\_ hey bitch, I liked cs164. Back off you little shit. -aspo
\_ hey slut, I liked 164 as well. Even TA'd for it. But just
because I liked it doesn't mean I'm going to sugar-coat my
answer. -phale
\_ bitch, after the LL, LR, LALR stuff is when it got
interesting
\_ Yeah! bitch! |
| 2000/10/3-4 [Computer/SW/Compilers] UID:19397 Activity:high |
10/02 What's a good supplemental reading for the oh-so-boring
Compilers, Principles, Techniques, and Tools, by Aho? I'm looking
for a Compilers for Dummies equivalence.
\_ "Compiling With Continuations", Andrew Appel. -blojo
\_ Compilers aren't for dummies.
\_ Computers are for dummies, duh. That's thhe whole point of
the web, ebusiness, etc.
\_ My girlfriend is using Programming Language Pragmatics by
Michael L. Scott. I flipped through it. It seems much better
than Aho. It's not for dummies though. Good reviews on Amazon
too, if that means anything.
\_ Thanks! Now I'm going to ace CS164!!!!!
BTW What's your gf's name?
\_ She is not in Berkeley, unfortunately. Otherwise, I
would be more than happy to introduce her to you.
\_ If you want to ace CS164, just date your TA.
\_ Cool, a whole new series concept: "programming for girlfriends".
\_ Instead of buying a Dummies book you could buy a Girlfriends
book. Wow!
\_ Don't laugh. I regretted the day when I robbed the
cradle and got myself a pretty but nerdy cs student
girlfriend. Don't do it if you don't want to go
through the whole darn CS curriculum all over again,
starting from implementing a string class. Feels like
going through hell a second time. Luckily, I have
finally reached the stage of helping her revise her
resume and graduate school statement.
\_ I'm not sure whether to laugh or cry.
\_ I'm sure. I wnt to cry. How can *I* pick up a
cute female CS student that is smart enough
to actually graduate?
\_ WTF, I had to help my boyfriend through his undergrad
career, and when I TA'ed 164, the guys were just as
clueless as the girls. In fact, due to the overall
M/F ratio, there are a lot more morons than moronettes.
Sounds to me like your girlfriend is trying hard
to feed your large ego to compensate for your small
penis. Sign your posts you idiots, I'm going to teach
your girlfriend the secret 164 death grip. -- alice
\_ Use motd for serious + helpful info please. Humor is
not allowed. -tom
\_ Hahaha!
\_ tom doesn't use that many spaces. I also don't think he
uses '+' like that. |
| 2000/9/27 [Computer/SW/Compilers] UID:19345 Activity:nil |
9/26 What's a good alternative, Cliff Notes like substitute to Aho, Sethi,
and Ullman's dry and *yawn* boring Compilers: Principles, Techniques,
and Tools? -desperate failing junior |
| 2000/8/18-21 [Computer/SW/Compilers] UID:19030 Activity:low |
8/17 Book review of the week: Linkers & Loaders, by John R. Levine.
The beauty of Levine's writing is the carefully crafted gorgeous run
on sentences (amazing in their delicacy of technical word choices)
contrasted with the gcc that spurts from his finely developed
compilers. After the first chapter I was hooked and wanted to read
more. Levine, without a doubt, is one of the best technical writers
of any technical genre.
\_ Levine seems pretty smart. (He also moderates http://comp.compilers.)
-brg
\_ Did Miss May 2000 give him oral sex, however? -yerpal-tjb
\_ does he make more money than hot shot developers & sys adms? |
| 2000/8/9-10 [Computer/SW/Compilers] UID:18930 Activity:high |
8/8 When I compile C++ with dynamic dispatch, will the actual generated
code (assembly) contain a lot of if-else check for each method
call? How about Java? Is the compiler smart enough to do flow
analysis and do type checking to narrow down types, thus speeding
up the method call?
\_ This sounds like one of the weenies 6-8 years ago who
always loathed the use of "virtual" in C++, afraid of what
the cost of a couple of table lookups would do to their
overhead.
\_ It uses a function dispatch table. Very efficient.
\_ If you are smart enough to worry about whether your compiler
does flow analysis, you should be smart enough to research your
vague assumptions. Check out _The C++ Object Model_, Stroustrup
\_ Yes, Java and C++ use runtime dispatching, which adds around 1-5
cycles of overhead per function call (for commonly executed
routines, where the function table is in cache) and 10+ cycles
(for infrequently executed ones, or where you're just executing
lots of functions or somehow else thrashing cache). If you're
invoking lots of small methods (which is how these
languages are typically used), that can be a huge loss of
performance. THere has been recent work on, e.g. dynamic
compilation to specialize away the function table lookup. Can't
recall the authors off the top of my head. -nick
\_ Sun HotSpot (and presumbly IBM/Tower equivalents) easily inline
and compile virtual calls at runtime. At least with Sun's, you are
back to very small methods because the compilation of a method is
triggered simply after several thousands iterations are counted -
if you inline everything into one flat main() or run(), it'll never
get compiled but you'll pay dearly for all the profiling. You won't
hear this from Sun. -muchandr |
| 2000/8/4-6 [Computer/SW/Languages, Computer/SW/Compilers] UID:18887 Activity:moderate |
8/5-1 Why is unstructured code (e.g. goto, jump, etc) hard to optimize?
Isn't control flow implicit anyway? Also, is it difficult to make
a transformation from unstructured code to a structured code? For
example, from byte code or a binary back to a structured intermediate
representation?
\_ GOTO LOOP_START:
\_ gotos aren't evil if they are just a low-level analog to structured
control flow (e.g. gotos can be used to implement a FOR loop).
Gotos are evil when they are used to create what is known as
"irreducible control flow", which essentially means that there
is no 1-1 correspondence between gotos and FOR loops. E.g. a goto
can enter a loop in the middle! It ends up that early exit
loops aren't as bad as entering in the middle. Irreducible
control flow makes many syntactic analysis algorithms barf, cause
those algorithms assume reducibility. -nick
\_ which nick are you? Mitchell? Kevin Mitchell's brother?
\_ concretely, compilers will reorder instructions and make lots
assumptions about what register contains what at what point.
if there are many points of entry to some piece of code, there
will exist many possible initial states for that piece of code,
and you end up with ltos of dependencies. -ali.
\_ Don't loop then. Write everything data-directed. -muchandr
\_ go APL!!!!!!!! -nick (yes, mitchell)
\_ nick mitchell, you a phd candidate? what's your area?
\_ yes, nick mitchell is a phd candidate, compilers
\_ data directed is much more difficult to optimize
\_ APL kicked ass. It depends what you are trying to optimize I
suppose. Data directed code is much easier to parallelize for instance
and in specific case of vector languages like APL you easily do
allocate lots of memory statically for some of those cases they are
making fancy garbage collectors that never work as advertised today.
-muchandr |
| 2000/8/4-5 [Industry/Jobs, Computer/SW/Compilers] UID:18878 Activity:moderate |
8/5-1 When people talk about flex dollars (for insurance and stuff)
they always say to use it or lose it. What does this mean?
I thought you could always elect to have the leftover money
go towards your salary or 401(k) contributions.
\_ Then you weren't paying attention, were you?
\_ I get leftover monies in a lump-sum around mid-year.
You can look at this as them "secretly" giving you a higher
salary, and having to pay for your own benefits. (tax-
advantaged, and at group rates)
\_ Most places if you don't use the leftover money it goes to the
company doing the flex plan. However, most places also let
you spend money you haven't put in yet (at least for medical)
so it's possible to spend money you haven't put in,
leave the company, and not have to pay it. |
| 2000/7/19 [Computer/SW/Compilers, Computer/SW/Unix] UID:18722 Activity:high |
7/19 I wrote a parser that outputs C source code. If I run the parser
on windoze I get CRLFs. If I run it on UNIX I get LFs. How
can I get the parser, running in windoze, to just output LFs
with a minimum of headache? The parser is itself written in C.
\_ man gcc
\_ Replace \n with \012 in string/char literals; most C compilers
will leave \012 alone even on a CRLF platform, but I can't vouch
for M$. If you have CRLF's being output without being in a
literal, your best bet is probably tr'ing the output
\_ Duh. Thanks. |
| 2000/7/11-12 [Computer/SW/Compilers] UID:18641 Activity:very high |
7/11 What's a good formal measure of how well a distribution is approximated
by a normal of the same mean and variance?
\_ least squares?
\_ Uh, the third moment, for starters.
\_ How valid is this as a statistical measurement? I.e. if
distr. A's skew is higher than distr. B's skew, is A expected
to deviate from normal more than B on other parameters as well?
\_ to see how bad this measure is, consider the distribution
delta(x) (which is infinity at 0 and 0 everywhere else)
and N(0,100) which is a zero mean gaussian with variance
100. the former is the narrowest distribution you'll find,
the former is very wide. yet their third moments are both 0.
a very bad measure indeed. in fact, all 0 mean even functions
have the same odd moments. -ali
\_ Life was much more pleasurable back in the old
days, when all I needed to go smack Rahimi's
pompous ass is going upstairs :) -muchandr
\_ This isn't applicable since I'm fixing the variance as
well. Of course the n+1'th moment is relatively useless
if the n'th moments are way off.
\_ the point is that if you have an even symmetric
zero mean distribution, the third moment will be
0, even if your second moments matches. You really
need to look at all moments to test for equality.
You should really look at mutual information (what
emin suggests) if don't have an application in mind
and just want a similarity measure with nice properties.
\_ noted, thx
\_ You could also look at the Kullback-Leibler distance which is
also known as relative entropy. This has some nice properties.
For example, if you build a Huffman code for distribution p
and use it to compress a source with distribution q, the
expected overhead for using the wrong distribution is D(p||q)
where D(p||q) is relative entropy. I don't remember the details
but I think that D(p||q) also comes up if you are doing
hypothesis testing where the true distribution is p but you
think the distribution is q. If you tell us what application
you want a difference measure, we might be able to give better
suggestions. P.S., you could also using p-norms where
p = 1,2, or infinity. -emin
\_ I'm trying to do an approximate analysis of a hideously
intractable numeric process, and this distribution, which
is (graphically) "somewhat" normal looking is about half-way
inside the bigger picture; since it's a sum over a bunch of
binomial coefficients, I was advised to assume normality
asymptotically to simplify things, but I want some way of
getting a feel for how off I am. Yes, generic and not
well-defined, but you really don't want to hear the gnarly
details.
\_ I'm not sure what you mean when you say "it's a sum over
a bunch of binomial coeffcients". However, if you are
interested in the random variable S_n = (1/n)*sum(1,n) X_i
then the cdf of S_n will converge to a normal distribution
with a convergance rate roughly 1/sqrt(n) provided that
the random variables X_i are reasonably well behaved.
Lookup Central Limit Theorems for the details. -emin
\_ Noted; although I have some doubts about the "reasonably
well-behaved" part
\_ one way to do stats is to always optimize the expected value of
some cost function, and depending on what that cost function is,
you pick the correct prbabilistic entity to be extremised (for
example, likelihood or entropy, or some other function). i think
the sensible way to answer your question is "what is the cost
you incur from using the wrong distribution" in terms of the cost
function you're trying to maximize. i would say mutual information
is a nice hint, but you really need to watch out for what you
use the distribution for. -ali
\_ see above; what i'm looking for to start with is the cost
function, and it's painfully intractable, both mathematically
and computationally
\_ it seems to be that you're saying you can't even SAMPLE from
p(x) where p is the correct distrib? if you can sample from
the dist, you can do what i'm suggesting.
\_ Dude. If you can sample independently from the
distribution, the distribution is your bitch. You need
about twelve samples to approximate it to the degree that
is generally needed (source: McKay).
\_ The problem is that I'm looking for asymptotic behaviour,
and while I can sample at my test sizes at the rate
of 5-20 hours per sample, sampling at any decent size
can take years per sample
\_ Aren't you in compilers ali? Stop studying AI!
\_ The Kolmogorov-Smirnov test might be useful as well -- used for
testing if two data sets come from the same parent
distribution, or whether a data set is consistent with a
predicted distribution.
\_ noted, thx |
| 2000/6/30-7/1 [Computer/SW/Compilers] UID:18572 Activity:nil |
6/30 anybody know where I can find documentation on linker scripts? I
have a .link file with stuff like:
.sbss . : {
__bss_start = .;
_fbss = .;
*(.sbss) *(.scommon)
. = ALIGN(32);
I have no idea what these things do. The manpages for ld doesn't
tell me anything either. Thanks.
\_ <DEAD>sourceware.cygnus.com/binutils/docs-2.10/ld_3.html<DEAD>
You should be able to find the same information by running
"info ld", but the info pages are harder to read than HTML
and aren't installed properly on many systems anyway. |
| 2000/6/2 [Computer/SW/Compilers] UID:18389 Activity:moderate |
6/1 Is g++ (gcc) installed anywhere other than /usr/bin/g++? Any newer
version than 2.7.2.1? (locate didn't help)
\_ So, get yourself added to the contrib group and install gcc-2.95.2
(or whatever is the lastest version).
\_ They weren't whining that it wasn't installed. They were
asking if it was installed.
\_ It might help if you actually read the question, fuckwit. |
| 2000/5/22-23 [Computer/SW/Compilers] UID:18316 Activity:high |
5/22 Rephrased question: suppose you have new system header files.
How do you change how the system searches for the default header
files if you do not have root permission?
\_ Rephrase it again, it's still not clear. Header files for what?
\_ ;
"system" searches for the default header files? Do you mean
how to change your compiler search order? If you have new system
header files, whoever installed them should've put them in the
right place. -oj
\_ #include <iostream.h> for example. You have a new compiler
you are trying out with a different iostream.h. You want
to make sure you are picking up the right iostream.h. What do
you do?
\_ Take out the hostage.
\_ what movie did that come from again?
\_ The Netrix
\_ Your new compiler should be using the new iostream.h if it
has one. Otherwise read the man pages on how to set your
search path. Since we're correcting, it's "shoot the hostage"
and it's from _Speed_. -oj
\_ Usual suspects had a very similar situation |
| 2000/5/12 [Computer/SW/Compilers] UID:18245 Activity:high |
5/11 What happens if you increment past MAXINT? Is this compiler
dependent or is this standard behavior?
\_ Short answer: overflow
Roundabout answer: take 61C (shame on you if you've taken it and
don't know.
Hands-on answer: What would the bit pattern be for MAXINT? It
would be a single zero followed by n-1 ones on an n-bit machine.
On a four-bit machine, this would be: 0111 (7 base 10)
What happens when you add 1 to said bit-pattern? You get a single
one followed by n-1 zeros;
Once again, on a four-bit machine, 1000 (-8 base 10)
Note that C does not generate an error, cause an exception, etc.
when overflow occurs. This is a feature.
-dans
\_ are you saying that overflow (as you've specified) is standard
behavior, that it's specified that this is the way it
should happen when you increment past MAXINT?
\_ C's specified behavior on integer overflow is
undefined (3.4.3 paragraph 3, 6.2.6.2 footnote 45,
6.5 paragraph 5, ISO 9899). but on many modern
machines with gcc and two's-complement arithmetic
you can expect that what dans has described will
happen. -brg |
| 2000/4/5 [Computer/SW/Unix, Computer/SW/Compilers] UID:17925 Activity:nil |
4/4 Is there a unix tool that will go through annoying text files
recently edited by an MSDOS based editor and eliminate all those
extraneous ^M characters? The compiler I'm using seems to hate them.
\_ /usr/local/bin/fromdos
\_ tr -d '\015'
\_ Do the Ctrl-M's say "Controlled by Microsoft?"
\_ My favorite is: perl -pi -e 's/\r\n?/\n/g' filename
as this will convert both DOS and Mac linefeed formats
to UNIX --dbushong |
| 2000/3/22-23 [Computer/SW/Compilers, Computer/SW/Languages/Misc] UID:17822 Activity:nil |
3/21 Is there a gcc option to force labels to be outputed and to be
included in the ELF symbol table. I'm trying to profile this
code:
beginloop:
for (i = 0; i < n; i++) {
y[i] = a*x[i] + y[i];
}
endloop:
and so I want gcc -S to produce those labels in the .s file and
for the assembler/linker to add those to the symbol table. I'm
trying to profile this code using a machine simulator that looks
at ELF symbol table code markers for performance simulations. -jefe
\_ I suggest using gcc's extended asm. Say __asm__("beginloop:\n");
instead of beginloop: and then the assembler will add these labels
to the symbol table. If you need them to be global symbols, it's
easy enough to do: __asm__(".globl beginloop\n"); -brg |
| 2000/3/8 [Computer/SW/Compilers] UID:17711 Activity:kinda low |
3/7 Aside from code aesthetics, is there a reason (e.g. optimization,
code-generation, etc) why switch/case is better than if/else?
\_ ooh ooh! finally a question about compilers! switch/case is
a subset of if/else: the special case (hehe) when the thing being
compared is a small fixed-point number. Analogy: switch/case is
to arrays as if/else is to lists. -nick
\_ Any tricks the compiler can do on switch it can probably do on
chained elses. So aethetics is the only good reason.
\_ "can probably do" means "does not" -- clauses are general
expressions, whereas case are constants known at compile-time.
\_ Maybe if the code does switch() on a char or something small
instead of an int, and there are many case statements, the compiler
can possibly optimize it into a jump table using the variable as
the search key or index. -- yuen
\_ I'm not saying you should, but if you want you can do something like
switch (foo) {
case 1:
if (bar) {
case 2:
baz();
}
break;
}
of course if you code like that you will be taken out and shot.
-aspo
\_ You can also use switches to unroll loops.
\_ Most compilers take "switch (foo)" as a pretty strong hint that
you're about to make many comparisons against foo and it would
be a good candidate to keep in a register. |
| 2000/3/6-7 [Computer/SW/Languages/C_Cplusplus, Computer/HW/Memory, Computer/SW/Compilers] UID:17696 Activity:nil |
3/4 What does a Segmentation fault mean? I have a program with and gdb
reveals that the program segfaults at
while (x == 0) {
It seems to segfault on one machine each time but never on another.
\_ what's "x"?
\_ did you malloc enuf space?
\_ IOW, did you allocate memory for x? Is x defined, or
just declared as a variable? What type is x?
\_ Illegal reference to memory not owned by the process |
| 1999/12/31-2000/1/1 [Computer/SW/Languages/Java, Computer/SW/Compilers, Computer/SW/Editors/IDE] UID:17127 Activity:nil |
12/30 Is there an editor out there that will analyze my code (C++, Java)
and tell me if I have a dead variable (dead code elimination),
visually optimize code, etc? I know that this happens in the
compiler, but I'd like to have some kind of editor that can
give me advice.
\_ ED, ED, ED is the STANDARD!!! Peephole/control-flow optimizer. |
| 1999/12/22-23 [Computer/SW/Compilers, Computer/SW/OS/Solaris] UID:17086 Activity:moderate |
12/21 Need solaris sparc 2.4 gcc binary. url/ftpP
\_ Get the source tarball from http://ftp.gnu.org and compile it on
a solaris machine that already has a C compiler. I am still
wondering though, _why_ would you want such an old gcc version?
Heck, may be you should try something even older, gcc 1.x maybe?
\_ he's asking for a version for solaris 2.4, not gcc version
2.4 you twink. -tom
\_ftp://sunsite.unc.edu/pub/packages/solaris/sparc/GNUgcc.2.8.1.SPARC.Solaris.2.4.pkg.tgz
bu Tom's answer is funnier. -ax
thanks - paolo (the app I'm looking at was designed for 2.4, hasn't
been ported to anything later than that. |
| 1999/11/23-25 [Computer/SW/Compilers] UID:16943 Activity:low |
11/23 Is there a cross-compiler installed on soda? What do I have to do
or install to compile a standard ANSI C program on soda and have it
run under MS-DOS? Just a very simple C program that manipulates
files, nothing graphical and nothing windows or unix specific.
\_ _why_ bother with setting up a cross compiler on soda when you
can download a precompiled for dos, working version of gcc from
http://www.delorie.com/djgpp ?
\_ thank you! that will work too. I thought there was a simple
way to do this on soda. But gcc on dos will work.
\_ In case there's no better answer, http://www.metaware.com used to sell a
cross compiler called High C. I've used its Sparc/SunOS4.1 -->
x86/DOS version. -- yuen |
| 1999/11/19-22 [Computer/SW/Compilers] UID:16916 Activity:nil |
11/18 So what's up with needing a compiler to install gcc? If i had one
i wouldn't need gcc. Also, anyone know where i can download Korn
or Bash for a Sun Ultra 5 running SunOS 5.7 (without a compiler!)
-new to this stuff.
\_ you need a compiler to bootstrap the compiler you want to make
from source. e.g. the gnu binaries cd will have one. you can
also download binaries from http://www.sunfreeware.com
\_ man pkgadd helps too
\_ Korn is already on Solaris - /bin/ksh
\_ Hand coded assembly. Wimp. |
| 1999/9/19-21 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:16550 Activity:very high |
9/18 what does the term "co-ed" mean?
\_ Co-Education. It is a old term used to differentiate those
who studied in single-sex (boys only or girls only) classes
and those whose classes had both sexes. In the vernacular
a co-ed means "a sexy little sorority slut".
1: a sexy little sorority slut
2: a sexy little sorority slut
3: a sexy little sorority slut
4: a sexy little sorority slut
\- dude, you got it all wrong. there are some fucking ugly bitches
in a sorority who are getting no dick whatsoever. for example,
i remember some fat chicks shaking their groove thing at a
fashion show, and all was not well.
\_ Not all sorority girls are there to get dicks. It's only the few
\_ that's why the term does not apply to them.
\_ BOOL Chick::isSexy() { return !this->isUglyBitch(); }
\_ Back in the old country, people would be grateful for
any pointers they could find.
\_ Get with the program. "bool" is now a fully qualified
type. You don't need to use "BOOL."
\_ Since when?
\_ Since November 1997. Of course, windows still
depends on it....
\_ true/false (all lowercase)
\_ This is ANSI C/C++ right? What are the values
ANSI C++ compiler - which last I checked no
for bool (true/false of TRUE/FALSE or 1/0)?
\_ ANSI C++ only. And only if you have a true
to work in egcs-2.91.66 19990314 (egcs-1.1.2).
I think that I'll stick to BOOL or int until I
can confirm that the SunPRO compilers handle it
C++ compiler had been certified as 100% compliant
\_ Only on the csua motd would a rant about ugly sorority
chicks which started as a simple semantic query turn into
a lesson on the latest aspects of coding.
\_ Which, of course, is why I started it.
\_ heehee, this garbage is too funny.
9/
16 How do I pipe to an rsh? Say I want to do
sort file | rsh machine -l user cat > file.sort
\_ Assuming you have rsh set up properly do something like
sort file | rsh machine -l user "cat > file.sort"
or
sort file | rsh machine -l user dd of=file.sort
-ERic
\_ I just tried a simple program and it seems
correctly. |
| 1999/8/23-24 [Computer/SW/Compilers] UID:16373 Activity:low |
8/22 Anyone know of free ansi cobol compiler for unix? Beta is ok.
\_ Y2K problems? |
| 1999/8/19-23 [Computer/SW/Compilers, Computer/SW/WWW/Server] UID:16344 Activity:moderate |
8/19 Anyone have any experience setting up name based virtual hosts using
Apache? This is fake but I have one IP, 128.56.139.5, and two
name entries http://foo.com and http://bar.com. In my httpd.conf file I have
<VirtualHost 128.56.139.5>
ServerName http://bar.com
DocumentRoot /~jondoe
<VirtualHost>
but now when I type http://foo.com or http://bar.com into the
browser it gives me the message
"Not Found The requested URL / was not found on this server."
Anyone know what's wrong with this.
\_ Apache doesn't grok "~"; use a full path. -tom
\_ grok? y00 R s0 ]<-00|_ !!!111
\_ D00de! Warez y0r dikshunary? Wutz 'gr0k' meen? U R K00l!11
\_
grok /grok/, var. /grohk/ /vt./ [from the novel
"Stranger in a Strange Land", by Robert A. Heinlein, where it
is a Martian word meaning literally `to drink' and metaphorically
`to be one with'] The emphatic form is `grok in
fullness'. 1. To understand, usually in a global sense. Connotes
intimate and exhaustive knowledge. Contrast {zen}, which is
similar supernal understanding experienced as a single brief flash.
See also {glark}. 2. Used of programs, may connote merely
sufficient understanding. "Almost all C compilers grok the
`void' type these days."
\_ d00de, t0m iz ay MARSHUN??? thatz r/-\d!!!11
\_ gr0k!!111 tom iz s0 k00l h3 kan gr0k!@111!11 d00ewde!!!@
\_ Y d0 yu kepe rem00vein mye k-rad c0mmetz 2 t0M? eye leik t0m,
hez s0 k00l cuz hez D gr0k mast0r!11 t0m iz rad!11 t0m iz rad!1
t0m iz rad!1 t0m iz raf!!1 yeh d00dez r0k 0n!1111
\_ Not only that, but grab the latest (1.3.9) for better
virtual hosting features. |
| 1999/8/18-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:16336 Activity:nil |
8/19 C question: I rarely, if ever, remember to include stdlib.h, which
includes malloc, atoi, etc. But I use these functions on a regular
basis. I haven't encountered a problem until I tried using atof(...)
also in stdlib.h. Once I included stdlib.h, my problems went away.
So why didn't I have problems with the other functions?
\_ your compiler was assuming that undefined functions returned an int.
\_ I think you misspelled "may have been"
that was not a valid assumption in the case of atof.
you should pay attention to those warnings from your compiler
instead of ignoring them. |
| 1999/8/9 [Computer/SW/Compilers] UID:16272 Activity:high |
08/08 After a release this crappy, how can I bring myself
to ever trust cygnus to maintain gcc?
They release a combination of gcc + "libgjc" especially for
that release..., where gcc 2.95 does not compile libgjc
(intel, solaris)
Not to mention their build dependancies are so crappy,
they insist on rebuilding .o files I have just
carefully built by hand. Gaaaah!!
You see no motd.
> go north |
| 1999/7/31 [Computer/SW/Compilers] UID:16218 Activity:high |
7/31 See the source code of one of the first C compilers by the creators
of BSD. It's surprisingly small:
http://www.cs.bell-labs.com/~dmr/primevalC.html
\_ try inventor of UNIX. BSD came around 10 years later. -dpetrou |
| 1999/7/11-14 [Computer/SW/Compilers] UID:16105 Activity:high |
7/11 Since bison/yacc/(f)lex all act like state machines is there any way
to implement a program with multiple context parsers (eg. a
multithreaded network deamon that needs to parse an input)?
\_ This problem is even worse in OpenGL that employ specialized
rendering hardware since the GL libraries act on the state of
the video card. In other words, there's only one rendering
pipeline and you can't have multiple GL renderers (except on SGIs).
\_ that's just sorry-ass driver design. 2D drivers also act
directly on hardware but have been abstracted to share between
clients efficiently.
\_ flex & bison both allow you to specify names for your parser/scanner
\_ Fuck bison and yak and all that shit! LINUX RULEZ! Use Linux
instead!
so you can have multiple per program - read the docs.
\_ name changing wouldn't work if you want to have multiple
instances of the same parser. too bad there's no OOP parser.
\_ There is. Search for PCCTS and ANTLR. Current development
is in java, but the C++ version still exists.
\_ search on bison++ and flex++ for generators to get
C++ encapsulated parser and scanner objects. these may be
simple option flags to standard bison and flex these days...
\_ -+ for flex |
| 1999/7/10-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:16101 Activity:low |
7/9 Know of any C++ compilers for Linux/x86?
Please add to the list: (--PeterM)
\_ egcs
\_ Kai C++ (KCC)
\_ Fujitsu C++ (FCC)
\_ Portland Group C++ (pgCC)
\_ Yermom C++ (ymCC)
\_ This one sucks.
\_ I thought it blows. |
| 1999/4/27-28 [Computer/SW/Compilers, Academia/Berkeley/CSUA/Motd] UID:15704 Activity:nil |
4/26 Have a friend recruiting for a company looking for a DRAM core
designer with a couple years experience. mail jed
\_ LJBF! LJBF!
( Subtle, desparate long-term torture plan )
\_ This is the WRONG place for a question like this. Do what you
think is right. Make sure you have no regrets, and make sure
you're proud of yourself after whatever you do in the name of love.
I'd call her and ask her why. It is not a question of whether
she is testing you, or if this is a game, it is about
communication -- if she still turns you down, then you know it's
the real thing. --female@soda
\_ Why is it wrong to ask for advice in relationship matters on
the motd? After all if you were having trouble in your relationship
with your compiler or your computer, asking for help on the motd
generates useful feedback. Anyway, since most of my friends read
and post on the motd, asking here or in person would be the same.
(Actually the motd is better since its anonymous).
In this particular case I'm betting that the post was made on
the motd, so that the female in question would read it and
reconsider her decision.
\_ You know, I bet a lot of these relationship questions that show
up on the motd are purely hypothetical, posed for the entertainment
value of the responses.
\_ "Go to her. Don't sleep on it. It's not always good to let things
calm down...The best thing you have going for yourself is your
willingness to embarass yourself." - Simon advising Melvin from
As Good As it Gets
\_ I say go for it. Who cares about experience? Just be yourself and
"go for the gold!" |
| 1999/4/4 [Computer/SW/Compilers] UID:15692 Activity:nil |
4/2 A while ago someone said that the difference between .so files and .a
files is that .so files are used for dynamic linking while .a files
are for static linking. Then what is the difference between .a files
and .o files?
\_ The .a file is a bunch of .o files, packed together with ar(1).
Most compiler tools understand .a files and let you use them just
like .o files. |
| 1998/12/19-20 [Computer/SW/Compilers] UID:15128 Activity:nil |
12/18 for you entertainment and amusement, the TenDRA c/c++
compilers have been installed. man tcc for a brief intro. |
| 1998/11/10-11 [Computer/SW/Compilers] UID:14939 Activity:moderate |
11/10 I'd like to implement a simple C compiler for a theoretical
architecture (a simple one) to have test code for a simulator.
Ideally, I'd just like to modify the backend of (say) gcc. What is
the simplest way to do this? I know that gcc can output assembler,
but can it output pseudo-code?
\_ I would check out the book "a retargetable c compiler"
and download lcc.
\_ don't forget that you also have to modify the backend of binutils.
I'm trying to do that myself for another architecture and it's not
easy.
\_ Actually, I'm not looking for a full implementation--don't
care about the linker etc. At least not to start with. |
| 1998/9/25-26 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:14671 Activity:moderate |
9/24 http://seanreilly.com/java/moneydance.html Quicken down, 1 less reason to use non-UNIX OSes...how many more to go? \_ Linux is pretty good for java apps because it has native processor support (kaffe) that no othe os's have. \_ what are you talking about, "native processor support"? That would normally mean "the processor natively supports java", which is obviously false. Do you mean "JIT compilation"? kaffe does that on lots of platforms. Do you mean "compiles to actual executables"? The kaffe web pages don't say it can do that, and I don't think it can. \_ there are java->native cpu compilers for other OS'es though linux loses \_ yah. What kaffe wins on will be its new awt implementation. That is, when it actually works. (it will run on DOS, though. wow. http://www.kaffe.org Do you mean "you can type the name of a java class, and it runs"? So WHAT? \_ From the RH linux package description on kaffe: "This is Kaffe, a virtula machine design to execute Java bytecode. This machine can be configured in two modes. In one it operates as a pure bytecode interpreter (not unlike Javasoft's machine); in the second mode it performs "just-in-time" code conversion from the abstract code to the host machine's native code. This will ultimately allow execution of Java code at the same spped as standard compiled code but while maintaining the advantages and flexibility of code independence." -RH linux installation guide \_ Note#1: linux was one of the LAST packages to get a JIT compiler, compared to other major platforms Note #2: THIS DOES NOT "allow execution ... at same speed" because real C code gets better optimization from the compiler. And incidentaly, kaffe supports JIT on linux, solaris, and a few other platforms. This is NOT linux-specific in any way, shape or form. \_short summary: the above linux bigot is an idiot who wouldn't know a java compiler from a hole in his head \_ this looks kinda neat :) |
| 1998/8/19-20 [Computer/SW/Compilers] UID:14482 Activity:nil |
8/19 http://www.trimaran.org |
| 1998/7/24 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:14379 Activity:nil |
7/23 What C/C++ compilers are being used in the workplace for Windows
software development?
\_ VC++ is probably the most widely used
\_ Borland C/C++ or C++ Builder. |
| 1998/5/6-8 [Computer/SW/OS/Misc, Computer/SW/Compilers] UID:14057 Activity:kinda low |
5/6 Can I use gdb on one host to debug a process running on a remote
host via the network (not serial line)?
\_ telnet to the host and start gdb. no, of course not, what is
the point? you do this over serial for kernel debugging
because it's necessary. why do you want to do this? why can't
you log into the host? how would this work? i mean something
has to sit on the host and interpret your commands and apply
them to the harnessed process -- why can't that be a shell and
gdb? i'm completely boggled by your POV. --aaron
\_.. yes. (Now we wait in suspense for you to ask how) --daveh
\_ i still think this is a "let me give you some artificial constraints
without telling you enough about the problem to make useful
suggestions" type of post. maybe if you gave us more info. --aaron
\_ Nobody said the remote host was running telnetd or even unix.
Debugging via tcp/netbios/ipx is very useful. To answer the
original question, no. Cygnus might have some custom shme
but all the gdb tethering I've seen so far is serial. --pld
\_ That is standard procedure in most Real Time OS like PSoS or
VxWorks/Tornado. You run the debugger on one host and connected
it via network or serial line to a target processor. What OS is
running on the target? And if this is work-related, shouldn't
you be asking your project leader?
\_ Fear. Maybe he *is* the project leader?!
\_ He did say "process", not "OS"... |
| 1998/4/10 [Computer/SW/Languages/Java, Computer/SW/Compilers] UID:13930 Activity:nil 60%like:14178 |
4/9 What's the difference between a programmer and a software engineer?
\_ programming is a specialization of engineering. A programmer, like
any engineer, CREATE things (programs) that IMPROVE the mankind.
However, an engineer doesn't necessarily know how to program.
\_ programmers write code, software engineers design it
\_ so software engineer never code, and programmers never design?
take a rhetoric class!
\_ software engineers can make their code run even in hostile
environments (crappy hardware, limited memory, buggy compilers,
tethered debuggers that make gdb look high-tech, and so on)
\_ Hiearchy is this:
-software engineer
-programmer
-hacker |
| 1998/4/8 [Computer/SW/Compilers, Health/Sleeping] UID:13921 Activity:very high 66%like:13922 |
4/8 So how much sleep does the average CS student get around here?
\_ depends on class and date. When I took 152 and 184 the same time I
average anywhere between 0-24 hours of sleep. Mean was like 5-6 hours
at best. It wasn't pleasant
\_ depends on professor too. FUCK YOU AIKEN!!!!!!!!!!!!!!!!!
\_ I had plenty of sleep when I took 164 under
Aiken. You must suck.
\_ If I get laid, maybe two hours a night. So I sleep
about an average of twenty hours a week.
\_ I spent some sleepless nights during the final phases of
writing my Cool compiler for 164, but I'm sure that I
did much better in Aiken's class, sleep-wise (and grade-
wise), than if I'd waited a semester to be part of
Hilfinger's first experimental "hey, let's write a Java
compiler" 164 class. Aiken was _hardly_ that bad.
\_ I've graduated. I get around 5 hours of sleep on average during
the week. Sometimes as much as 7 but thats pretty rare. 3 happens
too. |
| 1998/3/31-4/1 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:13877 Activity:kinda low |
3/30 Anyone using Stroustrup's The C++ Programming Language, 3rd ed?
I can't get the example code to compile, p61, the one about
iteraters. gcc doesn't even recognize #include <iostream> and
I was able to get the code to almost compile under VC++ 5.0 with
one final error, cannot convert parameter... for the vector line.
any hints? Thanks a lot.
\_ a) gcc doesn't even really support a lot of Stroustrup 2nd ed
features. Come to think of it, most C++ compilers are broken
in one way or another.
b) Try #include <iostream.h>
\_ C++ is dying. Anyone know of a hugely successful commercial app
written entirely in C++? Netscape is written in C. IE is written
in C. All of Windows API are in C. So are the X windows API.
C++ zealots, drop dead and die.
\_ iostream.h doesn't provide namespace, etc.
\_ troll deleted
\_ gcc does not support STL. iostream.h != iostream, the latter
is an STL thing - android
\_ so which compiler did Stroustrup use??#@$
\_ I'm not sure if one exists. C++ is in such a B0rKen state
semantically, and I'm not sure if the ANSIfication won't make
the problem worse. I doubt you will see compilers
properly supporting the whole standard for at least a year
after the "standard" is formalized. |
| 1998/3/13-14 [Computer/SW/Compilers] UID:13803 Activity:very high |
3/13 Anyone know of a better compiler for Linux than gcc/g++?
We're willing to pay for a compiler if we get a significant perf.
increase. --PeterM
\_ I heard that MSLinux for Windows will allow you to run MS C++ v5.5
\_ Hand code optimization (algorithm, method, etc) will do much more
improvement than small incremental compiler optimization. At any
rate, if you require performance on Linux and PeeCee, then perhaps
you should be looking at different platforms.
\-is the person actually trying to be helpful?
\_ Compiler is a lot cheaper, usually, than a new machine.
I want more performance without having to shell out for a
whole new machine. --PeterM
\_ I bet this guy is trying to run brute root crack.
\_ Why bother? There are plenty of exploits available on
the net. I doubt most systems are patched for all of them.
\_ I've always depended on the idiocy of motd entries.
-- Bland DuBois |
| 1998/3/9-10 [Computer/SW/Compilers] UID:13775 Activity:moderate |
3/8 I'm looking for help with gcc/gdb for HP-UX 10.30. I've got gcc
compiled, but gdb refuses to compile. If anyone knows of a site
with pre-compiled binaries, or has compiled these on HP-UX 10.X
before, please let me know. -davidf
\_ Also, if you have any ideas for other reliable compilers/
debuggers for HP-UX, I'd be interested in those. -davidf
\_ Buy HP-SUX's langtools package. Other than gcc you're
out of luck. |
| 1998/3/6-12 [Computer/SW/Compilers] UID:13766 Activity:nil |
3/6 gcc-2.8.1 & libstdc++-2.8.1 are in /csua/tmp/gcc for your bandwidth
preserving pleasure. There is no libg++-2.8.1. |
| 1998/1/21 [Computer/SW/Compilers, Academia/Berkeley/CSUA] UID:13534 Activity:nil |
1/14 gcc 2.8.0 & libstdc++2.8.0 are in /csua/tmp, courtesy of alanc & peterm
\_ what are the main improvements? Isit stable?
\_ /csua/tmp/gcc-2.8.0.changes |
| 1996/1/8 [Computer/SW/Compilers] UID:31791 Activity:nil |
12/30 gcc 2.5.8 is now installed and apparently working.
gcc 2.7.2 is installed as /usr/local/bin/gcc; it does NOT work with
the -g option, use gcc-2.5.8 or cc if you need -g.
gnu ld does not work properly yet.
PUBLIC MESSAGES BELOW THIS LINE |
| 1994/1/28 [Computer/SW/Compilers, Computer/SW/Unix] UID:31468 Activity:nil |
1/27 gnu as (gas) updated to version 2.2. It's not a perfect port, but it
works.
gcc updated to 2.5.8, supposedly the 'last' of the 2.5 line. (sheayah,
right!) lemme know if it breaks anything. -ERic
gmu make is now updated to 3.70. its /usr/local/bin/gmake. -ERic |
| 1993/5/12-13 [Computer/SW/Compilers] UID:31314 Activity:high |
5/11 g++ (GNU's C++ compiler) installed. Many thanks to mehlhaff for
finally getting gas working.
\_ Does this mean we can play xlords of Conquest on soda now? - norby |
| 5/16 |