Brazil is kickass in other ways too. I think its government just loves giving the finger to WTO et al:) They are one of the few countries who have decided to not respect pharmaceutical patents on essential drugs (e.g. against AIDS), and just produce cheap generics for their people, while the talks on making this legal are dragging on and on. It makes me happy to see that some countries see globalisation as a process that can be controlled, not as an unstoppable behemoth. Free trade -> maybe, but only if it represents a net gain for the citizens.
C++ Name Mangling Considered Harmful
on
Zeta Goes Gold
·
· Score: 1
Name mangling: completely compiler-dependant. This is why an API should be specified in C. Any language can have a C FFI. A C++ FFI, otoh, would be extremely brittle. In fact, as far as I know, most wrappers around C++ libs also feature a C wrapper around the C++. Unless, of course, you're opposed to both JITed and compiled languages and prefer to live with needlessly slow programs.
In this context (especially given the number of FP language researchers they have over at MS), I'd wager we're more talking about Monads in the context of category theory (c.f. Moggi). They're often used to have a clean way of describing imperative features: exceptions, side-effects, etc. From what I understand (I'm mostly a Common Lisper, which isn't purely functional), it can be implemented like an additional argument that's automatically threaded through each function call and continuation, and seems to be represented slightly like function composition... Sort of like pipes, but with better theoretical foundations, if you think about it.
Will someone better versed in PLanguage theory correct me?
That, or simply carry them in your wallet. You're probably pretty much as screwed as you can be if you lose. That'd mean (hopefully, anyway) you're protecting as well or better than you'd protect your passwords list...
Re the 19 decimal digits thing: what % of PHBs do you think you'd be able to convince to use a _20+_ digit code? I believe that code has to be entered at each repairing?
Also, the attack is trivially parallelisable (it's bruteforce, hence the exponential curve). Even without additional caching à la MD5, the amount of data describing the data is extremely small, and could easily be sent over the internet. 64 or 128 P4s aren't exactly hard to come by. Moreover, it seems like the researchers haven't used SIMD extensions. SSE2 supports a 2x64 format, and it seems like that could potentially nearly double the throughput. Admittedly, it'd complicate the parts that rely on LUTs, but, given enough memory, I believe that there are bit swizzling routines that'd allow to mask and shift only part of the register (it'd multiply the table's size by 4, though). This isn't an attack I'd dismiss as impractical, for both human and technological reasons.
"I don't know the numbers, but wouldn't it be cheaper to just not support Mac Office and let Apple die as a desktop platform? In the long run, wouldn't they stand to see more cash that way?"
Unfortunately, that isn't so sure. I've seen bundles for usable computers+LCD at approximately 500 CAD (the Mini starts at 629 CAD, iirc). If one goes for a pure cost comparison, the wintel box is more expensive only if one decides to buy XP Pro.
There is one guy working on synthesising a transputer/transputer-ish chip in an FPGA. He is supposedly pretty far along, enough to have started looking for community review on the comp.sys.transputer (? search the archives, around mid-april/early may, i believe).
You lost your credibility when you wrote: "Nor do I try to write OO code in LISP (despite the horrid OO extensions for LISP) because each language has it strengths and weaknesses." Given that Common Lisp is actually CLOS, an object-oriented language (one of the first ones, and one that has been called one of the few real OO language by Kay), I find it difficult to consider the standard as an "horrid extension".
I think that, a priori, we should read criticism as an opportunity to improve concepts, not merely dismiss them. The "each language has its strengths and weaknesses" PoV, while often true, makes it easy to fall into a trap where each language or concept evolves in a vacuum, instead of becoming better and unifying concepts together by generalisation.
Clarification re schooling: You can only send your children to an English school if at least one of the parents went to one. I've extremely ambiguous feelings regarding this rule. It seems to me that, mostly, it means that kids whose parents send them to private schools (which, given the average income of ~20k/year/person, isn't that expensive, but still non-negligible, at ~2-3k CAD/year) get a much better English education than the rest of us. The importance of this advantage varies a lot, since TV and neighbours can change a lot, but it's definitely still there. For example, I started English lessons in preschool. The education ministry only requires them from Grade 4 to 11, and then 6 (9 for some i believe) credits for CEGEP (~Grade 12-13). It seems to me the end result is that:
1. Québécois tend to live in a golden jail. Easily 1/3 of the Québécois I know have never left the province, and ~1/2 the country.
2. The difference between the rich and the poor is slightly perpetuated, rather than attenuated.
3. Most of the kids who can go to English schools are sent there, at least for Grade 1-6, since the option cost is minimal (imho, the schooling tended to be somewhat weaker in my region [Québec City], but it's only grade school), and the benefits potentially important for the next generation.
Actually, purely functional languages are much easier to optimise better. No aliasing, volatile, etc. problem. No side effects to mess things up. Conversion to SSA form, something that most optimising compilers will do to _enable_ a class of optimisation, is conversion to functional code (I believe Wadler has a paper on that). Basically, both functional and imperative languages have access to the same bag of optimisation. The difference is that, for some of these optimisations, it can be very hard to know if the compiler can apply them without changing the behaviour of the program. Of course, lower-level languages are often imperative and can describe fully optimised programs better.
In short, lower-level, more imperative, languages are better if you, the programmer, feel like doing more of the compiler's job (safety checking, low-level optimisations). Higher level languages, on the other hand, gives the compiler more information to do its job, leaving less tedium and less room for stupid mistakes for the programmer. When using a lower-level language, the compiler must somehow retrieve that information to be able to apply the same transformations. It is often possible, but, obviously, compilation loses information (one needs only look at decompilers).
Oh yeah, unlike you, I can point to references: OCaml, Stalin (scheme) and SBCL/CMUCL (Common Lisp).
At the state where DS hacking is, developpers wouln't be very productive. We've only been able to run our own programs a couple weeks ago, and hardware support is still very incomplete.
OK, so we link to wordpress.org by default. I just changed the link to wordpress.org.remove-me-they-google-bomb. I like the credit and helping others find good software, but I disapprove of the "fund raising" practice. Problem solved. I may put the correct link back once they stop the google bombing.
To others who want to do the same, there are two links in the index.php file (one in the right side menu, and the other in the bottom timer section), and another one in wp-comments-popup.php (again, the bottom timer).
Yup, this is only for communication between components (or processors). BTW, for an optical processors, I guess you'd probably want to think of it more like function composition (e.g., the register file could be threaded between transformations instead of actually being stored).
Backward conditional jumps are predicted taken on x86, so the longer the loop runs, the least overhead there is from misprediction. Moreover, main memory latency is huge, as we all know. Less instructions -> smaller memory footprint -> less loads from main memory. Loops are usually better left rolled.
Because learning languages is good for you, French especially, in light of the high proportion of galicisms in English. There must be a reason why private _French-immersion_ schools are popping up all over the country, especially in regions with next to no native francophones. We, Canadians, are lucky enough that native speakers of both languages usually aren't too far, yet people on both sides of the issue find reasons to complain about having to learn more than one language. Your own post gives a good reason: it'll help you save/make money (Imagine that, 70% [yeah, right] of a budget that ultimately only goes to bilingual French-English workers).
Americans are often described as closed-minded imperialists. Please don't make it true of yourself; study languages, cultures, history, etc... Not because you need to, but because it'll help you get more out of life and become a better person.
- Second generation immigrant, grew up in a suburb of Québec City, now at U de Montréal, where he frequently finds himself advocating bilingualism to strict francophones.
http://www.imdb.com/name/nm0914612/ :)
Emma Watson (II), a tad older than 15
At least the girl who's playing Hermione isn't "like a plank of wood"...And I mean that in a totally non-ephebophilic way.
;)
Just kiddin'! (but not really
Same for google. It will, for example, link to ACM or IEEE publications for which one must either pay or have access through a subscription.
Brazil is kickass in other ways too. I think its government just loves giving the finger to WTO et al :) They are one of the few countries who have decided to not respect pharmaceutical patents on essential drugs (e.g. against AIDS), and just produce cheap generics for their people, while the talks on making this legal are dragging on and on. It makes me happy to see that some countries see globalisation as a process that can be controlled, not as an unstoppable behemoth. Free trade -> maybe, but only if it represents a net gain for the citizens.
Name mangling: completely compiler-dependant. This is why an API should be specified in C. Any language can have a C FFI. A C++ FFI, otoh, would be extremely brittle. In fact, as far as I know, most wrappers around C++ libs also feature a C wrapper around the C++. Unless, of course, you're opposed to both JITed and compiled languages and prefer to live with needlessly slow programs.
In this context (especially given the number of FP language researchers they have over at MS), I'd wager we're more talking about Monads in the context of category theory (c.f. Moggi). They're often used to have a clean way of describing imperative features: exceptions, side-effects, etc. From what I understand (I'm mostly a Common Lisper, which isn't purely functional), it can be implemented like an additional argument that's automatically threaded through each function call and continuation, and seems to be represented slightly like function composition... Sort of like pipes, but with better theoretical foundations, if you think about it.
Will someone better versed in PLanguage theory correct me?
That, or simply carry them in your wallet. You're probably pretty much as screwed as you can be if you lose. That'd mean (hopefully, anyway) you're protecting as well or better than you'd protect your passwords list...
Agreed. Once they'd found that the kernel was crumbling when there were lots of threads, why did they not try the same tests on Linux/PPC?
Re the 19 decimal digits thing: what % of PHBs do you think you'd be able to convince to use a _20+_ digit code? I believe that code has to be entered at each repairing?
Also, the attack is trivially parallelisable (it's bruteforce, hence the exponential curve). Even without additional caching à la MD5, the amount of data describing the data is extremely small, and could easily be sent over the internet. 64 or 128 P4s aren't exactly hard to come by. Moreover, it seems like the researchers haven't used SIMD extensions. SSE2 supports a 2x64 format, and it seems like that could potentially nearly double the throughput. Admittedly, it'd complicate the parts that rely on LUTs, but, given enough memory, I believe that there are bit swizzling routines that'd allow to mask and shift only part of the register (it'd multiply the table's size by 4, though). This isn't an attack I'd dismiss as impractical, for both human and technological reasons.
"I don't know the numbers, but wouldn't it be cheaper to just not support Mac Office and let Apple die as a desktop platform? In the long run, wouldn't they stand to see more cash that way?"
iWorks/NeoOffice. I'm not so sure.
Unfortunately, that isn't so sure. I've seen bundles for usable computers+LCD at approximately 500 CAD (the Mini starts at 629 CAD, iirc). If one goes for a pure cost comparison, the wintel box is more expensive only if one decides to buy XP Pro.
There is one guy working on synthesising a transputer/transputer-ish chip in an FPGA. He is supposedly pretty far along, enough to have started looking for community review on the comp.sys.transputer (? search the archives, around mid-april/early may, i believe).
You lost your credibility when you wrote: "Nor do I try to write OO code in LISP (despite the horrid OO extensions for LISP) because each language has it strengths and weaknesses." Given that Common Lisp is actually CLOS, an object-oriented language (one of the first ones, and one that has been called one of the few real OO language by Kay), I find it difficult to consider the standard as an "horrid extension".
I think that, a priori, we should read criticism as an opportunity to improve concepts, not merely dismiss them. The "each language has its strengths and weaknesses" PoV, while often true, makes it easy to fall into a trap where each language or concept evolves in a vacuum, instead of becoming better and unifying concepts together by generalisation.
It's the libraries, ********. .dll, .so, or, in CL's case, the whole image.
Clarification re schooling: You can only send your children to an English school if at least one of the parents went to one. I've extremely ambiguous feelings regarding this rule. It seems to me that, mostly, it means that kids whose parents send them to private schools (which, given the average income of ~20k/year/person, isn't that expensive, but still non-negligible, at ~2-3k CAD/year) get a much better English education than the rest of us. The importance of this advantage varies a lot, since TV and neighbours can change a lot, but it's definitely still there. For example, I started English lessons in preschool. The education ministry only requires them from Grade 4 to 11, and then 6 (9 for some i believe) credits for CEGEP (~Grade 12-13). It seems to me the end result is that:
1. Québécois tend to live in a golden jail. Easily 1/3 of the Québécois I know have never left the province, and ~1/2 the country.
2. The difference between the rich and the poor is slightly perpetuated, rather than attenuated.
3. Most of the kids who can go to English schools are sent there, at least for Grade 1-6, since the option cost is minimal (imho, the schooling tended to be somewhat weaker in my region [Québec City], but it's only grade school), and the benefits potentially important for the next generation.
2. (quality) and 4. (e.g., it's 18 in Québec, 19 in Ontario, not sure about the rest) vary depending on the province.
erhm erhm. Not all of us. Please don't start gratuitously generalising too. I've enough on my hands with "pure laine" québécois doing it ;)
(To anyone wondering about anglophone and francophone, yeah, both words were missing a letter each)
Actually, purely functional languages are much easier to optimise better. No aliasing, volatile, etc. problem. No side effects to mess things up. Conversion to SSA form, something that most optimising compilers will do to _enable_ a class of optimisation, is conversion to functional code (I believe Wadler has a paper on that). Basically, both functional and imperative languages have access to the same bag of optimisation. The difference is that, for some of these optimisations, it can be very hard to know if the compiler can apply them without changing the behaviour of the program. Of course, lower-level languages are often imperative and can describe fully optimised programs better.
In short, lower-level, more imperative, languages are better if you, the programmer, feel like doing more of the compiler's job (safety checking, low-level optimisations). Higher level languages, on the other hand, gives the compiler more information to do its job, leaving less tedium and less room for stupid mistakes for the programmer. When using a lower-level language, the compiler must somehow retrieve that information to be able to apply the same transformations. It is often possible, but, obviously, compilation loses information (one needs only look at decompilers).
Oh yeah, unlike you, I can point to references: OCaml, Stalin (scheme) and SBCL/CMUCL (Common Lisp).
At the state where DS hacking is, developpers wouln't be very productive. We've only been able to run our own programs a couple weeks ago, and hardware support is still very incomplete.
OK, so we link to wordpress.org by default. I just changed the link to wordpress.org.remove-me-they-google-bomb. I like the credit and helping others find good software, but I disapprove of the "fund raising" practice. Problem solved. I may put the correct link back once they stop the google bombing.
To others who want to do the same, there are two links in the index.php file (one in the right side menu, and the other in the bottom timer section), and another one in wp-comments-popup.php (again, the bottom timer).
Yup, this is only for communication between components (or processors). BTW, for an optical processors, I guess you'd probably want to think of it more like function composition (e.g., the register file could be threaded between transformations instead of actually being stored).
Backward conditional jumps are predicted taken on x86, so the longer the loop runs, the least overhead there is from misprediction. Moreover, main memory latency is huge, as we all know. Less instructions -> smaller memory footprint -> less loads from main memory. Loops are usually better left rolled.
;)
Take that, -funroll-loops etc. people
Aahh, disinformation. Guess who makes just about every tablet's (except the, iirc, HPaq TC-1k) digitiser? Wacom.
Because learning languages is good for you, French especially, in light of the high proportion of galicisms in English. There must be a reason why private _French-immersion_ schools are popping up all over the country, especially in regions with next to no native francophones. We, Canadians, are lucky enough that native speakers of both languages usually aren't too far, yet people on both sides of the issue find reasons to complain about having to learn more than one language. Your own post gives a good reason: it'll help you save/make money (Imagine that, 70% [yeah, right] of a budget that ultimately only goes to bilingual French-English workers).
Americans are often described as closed-minded imperialists. Please don't make it true of yourself; study languages, cultures, history, etc... Not because you need to, but because it'll help you get more out of life and become a better person.
- Second generation immigrant, grew up in a suburb of Québec City, now at U de Montréal, where he frequently finds himself advocating bilingualism to strict francophones.
CH_4. Probably not gaseous, but still there :)