HN user

omnigoat

141 karma
Posts2
Comments28
View on HN

"In reality" means that the working set of memory and time complexity on solving Chess (let alone Go) is vastly too large for computers now and in the future. I don't get why you tacked on computers beating grandmasters/9-dans, since that has nothing to do with solving the game.

Oh you added something on the end. Well, augmenting a human brain doesn't change the search space of solving Chess and Go (especially Go). You may be underestimating how large those problems are.

They're calling the Int 3 debugger instruction, I believe:

http://en.wikipedia.org/wiki/INT_%28x86_instruction%29

I'd prefer to see this either with inline assembly, or using __debugbreak() (and variants for other compilers). I'd say it's a deref because many compilers don't generate inline-asm for 64-bit skus. This makes the instruction always emitted, and then 64-bit platforms ignore it. But not always (recent claims say it works: http://stackoverflow.com/questions/3634124/where-did-int-3-g...).

I don't get your reasoning (mainly because all you've provided none). I wrote games, we used Boost heavily, on the PC, Xbox360, DS, Wii and PSP. I mean really heavily. Boost.Thread, Boost.SmartPtr, Boost.Bind, Boost.Function, Boost.MultiSet, Boost.Array, Boost.PreProcessor, Boost.LexicalCast... (more)...

We turned off exceptions (BOOST_NO_EXCEPTION) because the Wii and the DS didn't support exceptions. That was it. We never had a problem with spurious assertions, nor with unexpected behaviour from a lack of assertions. Compile times were about 5 to 7 minutes for partial builds. A full build was longer (I forget), something like 15. This is a huge code base, remember.

I honestly have no idea what you're talking about. It's certainly not a "general rule of thumb".

Well you've clearly never had to worry about memory paging and the cost of indirection, like I have (actually from memory I think you must have at some point?). The difference is real and significant. Try writing a particle system using a linked-list over a vector, the speed difference will be crippling. I really feel that most of the hatred for C++ stems from people not understanding why such complexity exists in the language.

It depends on which dojo you train at. In our (Shotokan) dojo, every couple of lessons or so, someone will ask "but that's illegal in a tournament, right?", to which our sensei laughs and says in a real fight there's no such rules. We are taught to end any fight in one strike. We are taught to destroy the three weak areas of the human body (can't fight if you can't see, can't fight if you can't breathe, can't fight if you can't walk). We're also taught judo, because most fights end up on the ground. We're taught a wide variety of self-defence moves, most of which end with us taking a joint or two or theirs.

I'm sure there's plenty of Shotokan dojos that don't have such a good sensei though. YMMV.

Remind HN: Vote 16 years ago

Also, the Greens are gaining like crazy right now. Probably for two reasons: One, before about 4 years ago, there was 13 years of Liberal government (once again, they are capital-L Liberals, not lowercase-l liberals). And then the "left" party came into government, and it turns out that hey, they're actually centre-right. I mean they're actually centre-right. They're not left at all, not on the economy (which I'm okay with), and not on moral issues (which I'm less okay with). So the greens are picking up voters that wanted a more progressive government, and whom voted Labor, and whom were then disappointed. The Greens picked up a seat in the Senate, are polling about 15% in Victoria for the State elections. So they're becoming influential at the expense of Labor.

Yes, that's fair for the PC (I was aware of this for the PC, which is why I said exceptions don't really matter on the PC). But (from memory) I don't believe the Xbox allows for this, even though it uses a very similar variant of the same compiler. It's a moot point, though, for all the other reasons I mentioned. When you've got a cross-platform codebase - and there are precious few platform-exclusive codebases these days - it is far easier to turn exceptions off across the board than deal with individual platform's quirks.

You're making two mistakes: One about how exceptions work, and another by not considering our constraints.

Exceptions don't just add an overhead when they're thrown, they add overhead for every function call. How else would the exception-handling runtime know to unwind the stack to the correct addresses? It is this performance degradation that we avoid. Why? For the PC, it doesn't really matter. The XBox360 doesn't handle the performance hit very well. The compilers for the Nintendo DS (edit: and the Wii) don't even support exceptions, and the PSP is so crazily architectured that things like floating point numbers or exceptions can cause a framerate to drop from 300 to 12. I've not worked on the PS3. You must understand that these consoles and handhelds are designed very differently from PCs, and are never as powerful.

We do check for errors, we just stay away from exceptions. And dynamic casting, when we can (the DS does a freaking string compare against the vtable!).

But then you'd have some of the population calling themselves a collection of humyn.

Back on topic: I still find both 'nerd' and 'geek' to be offensive. Although I don't find "geek chic" to be offensive... probably because it has never been associated negatively - it has always been a label for a particular style, which in itself carries no meaning.

My first, my very first C++ project, started in Year 9 - coming from VB6 - was a 3D graphics engine. Yeah, that failed. It failed 5 times (fun fact - the fourth rewrite occurred moments after exclaiming "oh those are references!"). But the 6th one was pretty neat! I'd written a file-loader for 3D Studio Max, an event system, input, etc. The seventh rewrite would have gotten rid of the hardware T&L and used shaders instead. I was in Year 12 by then. Then I went to uni, studying CS, and afterwards got a job at a video games company, implementing a 3D graphics engine.

Honestly, sometimes you just have to do it, even without any training. Maybe do it six times.

Trojan horse? Strawman, baby!

Using your gmail as a username isn't bad. It makes it easy to know where to send you emails for account details and such. However, I think GMail needs a revamp if it's going to be the focal point of many integrated systems. What I don't want is another Facebook clone. A developer-centric social layer, to integrate various components of their developer infrastructure (google code/analytics/adsense, etc), could work. Could. They've got a bad track-record at "social".

Hi! I live in Australia, where the majority of people on ADSL2+ have speeds less than or equal to 4mb/s. Due to the geography (technically, topography) of our country, high-speed internet is particularly tricky to roll-out. Not for perhaps four years more will we have any speeds greater than there are now.

So your comment sounds particularly naive, in this part of the world.

Man, these guys talk about $20 mil as if it were chump change. Probably because they have all that blog-money now.

If someone ever wants to buy my company for $20 mil, and I walk away with even half that, I will be a very, very happy man.

And for those wondering when you'd use this algorithm (as even academics don't seem to know!) - it is the go-to algorithm for implementing pathfinding in video games, and robotics.

Oh, coincidence. I did this about twelve minutes ago.

Yes, I've just tendered my resignation. I work in a large, large company. The place is okay, the people are good, the code is fine I guess. I just wanted a change of direction. I started in videogames, and compared to that, this job feels far more... stuffy. And boring. Anyhow, I wanted a shot at starting my own business writing web apps. I literally do not know: javascript, ruby (therefore rails), much of linux, or webservers (well, I've heard of a whole bunch).

But hey, I have good savings, I have low rent, I have a nice computer, and in addition - unlike when I was working in videogames - I have a sleep-cycle that has me up at 8:00am every day.

As for the actual experience, I've just informed my direct lead, and we'll have to talk to the head of our department later today. I guess I'll let you know how it goes!

I do believe this is why my university teaches Java for one year, then C for the second, before you even get to glance at (C++|Python|Perl|C#|other). I'm a compiler-writer, and we don't need different names - they have well defined meanings. What we need is people to stop misusing them. You've done it yourself, because C doesn't have pass-by-reference. C++ does (ie, references...), but C does not. Stop doing it! Stop misusing those terms! You just read an article that actually spelled it out, and still misused them!

I'm thinking about the (No Internet Explorer) -> Internet Explorer 3.0 jump, which has been cited before as an example of what Microsoft is capable of when it suddenly throws the 'code red' flag (ie, Netscape and the internet are suddenly important). I can also think of Win98 -> Win98SE jump, and Visual Studio 6 -> Visual Studio 2005 (remember, they didn't start development on VS.NET/2003 until around 2000/2001).

Don't mistake speed of releases or popularity or innovation for the speed of development. Nintendo is a particularly poor example, I think, since I'm currently working with their tools... they are last-decade. I'm not even talking about the Wii's capabilities (which are Gamecube-era), I'm talking about their software: IDEs, compilers, etc. They struck gold with the Wii, but Microsoft went from (No Console) -> XBox360 within... like, 5 years? Nintendo's been playing this game for 25+ years, and without the unmitigated success of the Wii their console division would be bankrupt now (seriously!)

Microsoft's ability to develop (notably, but not limited to) software is unparalleled save for Google. Innovation, iteration, or popularization are all different matters.

This post makes one incorrect statement, I think:

"And that cuts to heart of why developers and anyone with an interest in the using the web of the future today has long since lost faith in Internet Explorer: The competition continues to deliver improvements at a pace that far outstrips Internet Explorer."

The competitor's products are better, but they were waaay better before IE8 even existed. After IE9, assumedly, they'll still be better, but by far less a distance. Google is really the only company in the world that can rival Microsoft's speed in development (when it sets its mind to it). Honestly, here's what I think happened: Microsoft missed the internet-apps thing. They sort of grew, and Microsoft didn't notice for a while. Then they exploded and Microsoft was caught off-guard with a browser the developers didn't like, and a business strategy that was out-dated. But being Microsoft, and they're not dumb guys, they started improving their browser and began to write some neat cloud software (Web Office, anyone?).

You'll notice this thinking in what they concentrate on: To Microsoft, web apps are where it's at, and javascript speed is important! It makes things run better. But if you look to web standards, you'll see Microsoft talk about "real world cases", or however they put it. They don't care about 100% compliance, they don't have time. They're playing catch-up, and are focusing on the areas that will make the most difference first. It's sort of like Startup 101. My belief is that they'll continue to improve the standards, but will devote, say, %20 of their efforts to it, until their javascript engine and css rendering layout engine is humming in tune with V8 and Sunspider.

Maybe afterwards they'll decide to go with full-standards compliance, one would have to look at the development cost vs. the predicted returns, but it wouldn't be a terrible idea, really, to woo developers over from other platforms: "Yeah, our performance is the same, and we're at 100%. You can develop for us and on us with no problems, assuming the competitors follow the standards like us".

But that's probably wishful thinking.

I'd like to make two points in response...

1) I did say 'savvy'. Sort of because I don't get to use that word enough, but also because it is possible to abuse operator overloading. String concatenation with the addition operator isn't going to suprise anyone, even if you come from another language (well, it might, but the choice of the + operator isn't an unintuitive one). Furthermore, nobody's jumping at things with well-defined operators, like vectors/matrices, etc. I've written very little outside of a maths library that used operator overloading, but it's a godsend for the cases where it's appropriate... probably a truism.

Secondly, they're just functions. You can look them up (y'know, assuming you can), you can optimise them, and you can document them. A programmer encountering an operator doesn't have to rely on their interpretation alone, and indeed shouldn't. They should know what that operator does. Now of course, if the operator has absolutely no contextual reason for existing, or is suprising divergent from its apparent purpose... well, see point 1.

As for your example, how do you do a greater-than-or-equal comparison on strings? :D

Well, in the interests of actually furthering discussion:

I feel as if string and map simply could have been part of the standard library. My solution to the this for prism was to have a section of the standard library (which doesn't exist yet) marked as "integral", to effectively have an implicit "import string, map from std.__integral__" at the top of every translation unit.

The absence of overloading operators seems to contradict their claims of improving the visual "flow" and feel of programming. There are cases where savvy operator overloading works wonders: vectors/matrices/quaternions, strings, complex numbers, etc. To be able to write my_string + my_other_string is far more elegant than strcat(my_string, my_otherstring). Consider what happens when you have four of five strings you'd like to concatenate!

The choice of CSP reflects Google's mentality: Their problems lend themselves very well to CSP. Other domains (in my opinion) work better with a STM model. But that's clearly a design choice, and I think it's fine!

My word, a whole bunch of what I'm reading is exactly what I have/had intended to implement in my toy language, prism. Bit-specified integer (and real) types, increment/decrement operators as statements (prefix only!), hell, even using "var <X> ..." for variable declarations. The guiding principles are divergent though. And the bit about deducted type relations (http://golang.org/doc/go_lang_faq.html#inheritance) leaves me with mixed feelings.

I'm actually happy! It means my stupid little language has some validity :P

For those who wish to deride it: http://code.google.com/p/prism/