Unfortunately, Java is a backwards language with zero interesting features whatsoever. The C++ you seemingly abolish allows degrees of polymorphism and modularity Java will never, ever reach. No, I am not talking about low-level C hacking. Look up generic programming in C++, for starters. Or the functional stuff you can do in C#. Or anything you can do in Haskell, which might be an academic language, but is the ultimate eye opener regarding the essential features Java lacks, such as a proper lambda, closures, first class functions, "real" generics. (Anonymous classes are only a very rough approximation to the first two.)
Yes, I have worked with Java for real. If possible, I use C++ or C# instead. Or Python, Ruby, Lua,... almost any other language out there is more powerful than Java these days. Note that I am deliberately not including the virtual machine or the standard library in this - I am talking about the language only.
However, there is a point where CGI is "good enough" for most purposes. Yes, the maximum scene complexity may grow, but even there you may reach a "good enough" point, where you can easily fake the bits that cannot be done. Example: an outdoor scene with a forest in the distance. If the scene is rather static, with little action, the forest in the background may be just a picture. If more movement is involved, but the forest is always far away, impostors can be used. These tricks are cheap to implement and very effective.
You don't need hyper-realistic spectral rendering for typical CGI movies. You could even get away with the CryEngine 2 or 3 for several low/mid budget flicks, provided you do some work on the animation. In my opinion, *animation* is the one factor that is still significantly better in offline rendering.
What Google will do is advertise their own browser as the one who CAN playback videos properly, while FF requires an extra Flash plugin for this. Mozilla is hugely dependent on Google, the reverse is not true.
Mozilla has no real power over the web. They have a browser that is somewhat popular, but that's it. They made money from their deal with Google. Mozilla is no king of the internet. If anything, Google is. Google uses h264, Chrome supports h264. Go figure. As for the MP3 thing, there hasn't been a Youtube for audio, and even if one had existed, it would have used Flash, precisely because mp3/aac playback is a mess with the current browsers.
Either, the Mozilla developers recognize this, stop their nonsense, and use system codecs, or Firefox will be the browser that "doesn't play Youtube". I doubt this will do its popularity any good. Quite possibly, people will switch to other browsers, like Chrome, or back to IE.
I want to see a comparison Dirac vs. h264 where Dirac wins. As for "better technology", wavelets for video are overly hyped and have many problems which is the reason why block-based DCT codecs are still around. As for patents, Dirac certainly violates patents, as does every software under the sun. However, the situation is particularly bad for video coding, which is filled to the brink with bogus patents. Let Dirac become popular, and somebody WILL sue.
Also it is not "laziness". Many websites storing h264 content means that transcoding to theora would take them tons of processing power and additional storage space, since Theora is still vastly inferior to h264 at the same perceived quality (not necessarily PSNR). As for hardware acceleration, software decoding is no option. Hardware is the only way to go. It uses less energy, and increases responsiveness, since the CPU does not have to do the decoding.
You can post this as often as you want, the comparison is still full of errors as a result of an ffmpeg bug (it was previously believed to be intentional). It uses x264, which is an opensource h264 encoder. The x264 developers responded to this comparison on reddit, highlighting the many errors in it: http://www.reddit.com/r/programming/comments/8iphn/theora_encoder_improvments_comparable_to_h264/
Depends on the computer, really. Self-assembled stuff can last for a very long time. I have a backup PC that has been around for about 10 years, and still works flawlessly. My main PC is about two years old, no problems. PC's I've assembled for relatives all work, and these machines have been around for 3-5 years.
On the other hand, laptops DO break easily. But again, the electronics last - it is the battery and the mechanical component, most notably the hinge, that break down quickly.
Then you better don't look at large Lisp codebases, because Javascript is Lisp with C syntax. Also, your pointless rants will get you nowhere. Give us a list of things about Javascript you dislike. No "ohh JS sucks so bad because.... well it just sucks" nonsense.
So where do you see that I don't understand that? Hm? btw: I do. Your conclusion is wrong. The code I mentioned wasn't mine. In fact, I was called to help fix the memory consumption problem, and spotted this peculiar loop.
But the GC does not solve two things: 1) Freeing up resources other than memory (this is only possible with a deterministic GC and RAII/destructors, or with refcounting instead of a GC) 2) Taking up tons of RAM because of unnecessary allocations (I've seen Java code that allocates MBs in tight loops...)
These lasers almost certainly work with pulses. A continuous beam is both wasteful and very difficult to maintain. That said, a megawatt laser pulse is enough to annihilate many types of targets.
It is in fact this mentality I'm arguing against. Again, if 95%+ of all copies in programs are shallow, why have deep copies as default?
If headers are used in 99,99999% of all cases as module interfaces, why don't we have proper modules?
As for your copy solution: this is called return value optimization, and depends on the compiler, which is really bad. As mentioned before, rvalue references exist for getting rid of unnecessary deep copies.
The primary problems with C++ are its hideous syntax, C legacy, and severe lack of standard library components. A C++ syntax with no C compatibility would be useful. To interface with C, reuse the extern "C" {} blocks.
Then you want to return an instance of a fairly complex class, and this nice line does a deep copy. Not good. 95%+ of all copies in a typical program are shallow, not deep.
Solutions: - Allocate on the heap, which introduces smart pointers, or requirements to the coder to deallocate the result manually later - rvalue references; not here yet
Note that popular patterns, especially the factory pattern, need to address this issue.
The stackheap issue is a real pain if you want to automate object deletion, because if you then add an object allocated on the stack to such a system, and it then tries to delete said object, you have a nice segmentation fault. The only other option is to stricly require for the objects to be allocated in the heap.
I too see it as a mixed bag. It has real closures, which is a big advantage over C++, a cleaner syntax, but has no generics, not even primitive ones like the Java generics. Also, it seems to lack reflection (the reflection interface appears to be something different).
You cannot shoehorn a GC into C++. Explicit memory management is so tightly coupled to C++ that most attempts at introducing something automatic automatically impose significant restrictions on what you can do. This is OK for specific scenarios, not OK for a core language component.
Also, generic programming and template metaprogramming are one distinct advantages of C++ over other languages. The ability to metaprogram and use structural typing there is priceless, and some forms of metaprogramming are quite common in languages like Javascript, Lua, Python, Ruby, Lisp, Haskell. Without such features, C++ becomes little more than a Java without GC. No wonder the C++ committee put their focus on them.
I do agree however that a replacement is needed. Compile times are awful, memory usage while compiling goes through the roof, compiling errors fill several pages, the syntax is an abomination (especially in metaprograms), and it does not even have an optional GC.
But people who get to maintain a codebase written by someone else they don't know will be quite thankful for a readable syntax. This drives maintenance costs down, since it takes less time to fix issues. I take it you never had to fix some old perl code?
I still have to write destructors that clean up all the pointers to an object, and all garbage collection does is force me to call the destructor as a function, rather than a more clear 'delete' statement.
Um, no. The whole point of a GC is that you don't have to explicitely deallocate something. RAII is a problems with GCs, but you didn't mention that. As for the cache hit thing, it sounds quite suspicious to me, more details please. Also, to get that last bit of performance, you have to go low-level, that is true. Note however that explicit memory management is unnecessary in 90% of a typical application's code.
Now, since the ownership problem is passed over to the GC, things become possible that were previously hard to do. Try real closures for instance: C++0x is struggling with this, since they may extend the lifespan of a variable, which is bad if said variable was lying on the stack. Such problems simply go away with a GC. Note that C++0x rvalue references are in fact a solution to a problem caused by the explicit memory management in C++.
There is a reason many people want an opt-in GC in C++0x..
No its not. Video playback with an audio lag of several seconds? Not good. Playing games with an audio lag of several seconds? Not good.
As for the networked audio stuff, you mention UPnP. All you need for UPnP to work is a dedicated UPnP server like Mediatomb to stream your audio to the client. You do NOT need an audio daemon for this.
At least Stargate remained more or less consistent with what they discovered in earlier episodes. Found nice alien device X? Expect X to appear sometime later. Perfect example: the Naquadah generator. In Star Trek, on the other hand, things just vanish. They had a kickass cloaking device that allows the ship to travel through matter, like a ghost. Disappeared. They got experimental Slipstream drives and Coaxial warp drive stuff from Voyager. Disappeared. Etc.
Unfortunately, Stargate got cheesier in the latter seasons, and didn't make much sense by the end. On one hand, I like it that Earth actually got to deploy shiny new tech and ships, and didn't get stuck with current technology forever (sci-fi shows often seem to go this route). On the other hand, things got seriously out of control, and now Earth is the most powerful civilization in at least two galaxies.
What I would have liked as a spin-off is Stargate in the near future. Say, the Stargate has been revealed only a month ago, and there are riots and panic all over the planet. The Wraith finally make a bold move and start invading the Milky Way galaxy (perhaps let them find a few ZPMs). Maybe throw in remnants of the Ori fleet, who degenerated to a (huge) bunch of raiders pillaging and terrorizing whole worlds. Show how the population on Earth deals with this situation, produced in a Space Above & Beyond style.
The matrix calculations required for rendering are done by OpenGL, not the caller programming language (the advantage of doing this way is that it can be hardware accelerated).
No they are not. The vertex transformations are hardware accelerated. The matrices itself are done either by the application of by the driver (when calling something like glTranslate). Matrix manipulations never ever are done by the graphics hardware.
Unfortunately, Java is a backwards language with zero interesting features whatsoever. The C++ you seemingly abolish allows degrees of polymorphism and modularity Java will never, ever reach. No, I am not talking about low-level C hacking. Look up generic programming in C++, for starters. Or the functional stuff you can do in C#. Or anything you can do in Haskell, which might be an academic language, but is the ultimate eye opener regarding the essential features Java lacks, such as a proper lambda, closures, first class functions, "real" generics. (Anonymous classes are only a very rough approximation to the first two.)
Yes, I have worked with Java for real. If possible, I use C++ or C# instead. Or Python, Ruby, Lua, ... almost any other language out there is more powerful than Java these days. Note that I am deliberately not including the virtual machine or the standard library in this - I am talking about the language only.
Move Zig!
However, there is a point where CGI is "good enough" for most purposes. Yes, the maximum scene complexity may grow, but even there you may reach a "good enough" point, where you can easily fake the bits that cannot be done. Example: an outdoor scene with a forest in the distance. If the scene is rather static, with little action, the forest in the background may be just a picture. If more movement is involved, but the forest is always far away, impostors can be used. These tricks are cheap to implement and very effective.
You don't need hyper-realistic spectral rendering for typical CGI movies. You could even get away with the CryEngine 2 or 3 for several low/mid budget flicks, provided you do some work on the animation. In my opinion, *animation* is the one factor that is still significantly better in offline rendering.
What Google will do is advertise their own browser as the one who CAN playback videos properly, while FF requires an extra Flash plugin for this. Mozilla is hugely dependent on Google, the reverse is not true.
No they can't.
Mozilla has no real power over the web. They have a browser that is somewhat popular, but that's it. They made money from their deal with Google. Mozilla is no king of the internet. If anything, Google is. Google uses h264, Chrome supports h264. Go figure. As for the MP3 thing, there hasn't been a Youtube for audio, and even if one had existed, it would have used Flash, precisely because mp3/aac playback is a mess with the current browsers.
Either, the Mozilla developers recognize this, stop their nonsense, and use system codecs, or Firefox will be the browser that "doesn't play Youtube". I doubt this will do its popularity any good. Quite possibly, people will switch to other browsers, like Chrome, or back to IE.
I want to see a comparison Dirac vs. h264 where Dirac wins. As for "better technology", wavelets for video are overly hyped and have many problems which is the reason why block-based DCT codecs are still around. As for patents, Dirac certainly violates patents, as does every software under the sun. However, the situation is particularly bad for video coding, which is filled to the brink with bogus patents. Let Dirac become popular, and somebody WILL sue.
Also it is not "laziness". Many websites storing h264 content means that transcoding to theora would take them tons of processing power and additional storage space, since Theora is still vastly inferior to h264 at the same perceived quality (not necessarily PSNR). As for hardware acceleration, software decoding is no option. Hardware is the only way to go. It uses less energy, and increases responsiveness, since the CPU does not have to do the decoding.
You can post this as often as you want, the comparison is still full of errors as a result of an ffmpeg bug (it was previously believed to be intentional). It uses x264, which is an opensource h264 encoder. The x264 developers responded to this comparison on reddit, highlighting the many errors in it: http://www.reddit.com/r/programming/comments/8iphn/theora_encoder_improvments_comparable_to_h264/
Chronicles Of Riddick: Escape From Butcher Bay.
Absolutely rocks.
Ehm, what is the conclusion of this? Abolish sitting altogether? What about office work? Sitting for 8 hours is pretty common, you know..
Depends on the computer, really. Self-assembled stuff can last for a very long time. I have a backup PC that has been around for about 10 years, and still works flawlessly. My main PC is about two years old, no problems. PC's I've assembled for relatives all work, and these machines have been around for 3-5 years.
On the other hand, laptops DO break easily. But again, the electronics last - it is the battery and the mechanical component, most notably the hinge, that break down quickly.
Then you better don't look at large Lisp codebases, because Javascript is Lisp with C syntax. .... well it just sucks" nonsense.
Also, your pointless rants will get you nowhere. Give us a list of things about Javascript you dislike. No "ohh JS sucks so bad because
So where do you see that I don't understand that? Hm? btw: I do. Your conclusion is wrong. The code I mentioned wasn't mine. In fact, I was called to help fix the memory consumption problem, and spotted this peculiar loop.
Next time, try to read postings correctly.
But the GC does not solve two things:
1) Freeing up resources other than memory (this is only possible with a deterministic GC and RAII/destructors, or with refcounting instead of a GC)
2) Taking up tons of RAM because of unnecessary allocations (I've seen Java code that allocates MBs in tight loops...)
These lasers almost certainly work with pulses. A continuous beam is both wasteful and very difficult to maintain. That said, a megawatt laser pulse is enough to annihilate many types of targets.
It is in fact this mentality I'm arguing against. Again, if 95%+ of all copies in programs are shallow, why have deep copies as default?
If headers are used in 99,99999% of all cases as module interfaces, why don't we have proper modules?
As for your copy solution: this is called return value optimization, and depends on the compiler, which is really bad. As mentioned before, rvalue references exist for getting rid of unnecessary deep copies.
The primary problems with C++ are its hideous syntax, C legacy, and severe lack of standard library components. A C++ syntax with no C compatibility would be useful. To interface with C, reuse the extern "C" {} blocks.
Then you want to return an instance of a fairly complex class, and this nice line does a deep copy. Not good. 95%+ of all copies in a typical program are shallow, not deep.
Solutions:
- Allocate on the heap, which introduces smart pointers, or requirements to the coder to deallocate the result manually later
- rvalue references; not here yet
Note that popular patterns, especially the factory pattern, need to address this issue.
The stackheap issue is a real pain if you want to automate object deletion, because if you then add an object allocated on the stack to such a system, and it then tries to delete said object, you have a nice segmentation fault. The only other option is to stricly require for the objects to be allocated in the heap.
I too see it as a mixed bag. It has real closures, which is a big advantage over C++, a cleaner syntax, but has no generics, not even primitive ones like the Java generics. Also, it seems to lack reflection (the reflection interface appears to be something different).
You cannot shoehorn a GC into C++. Explicit memory management is so tightly coupled to C++ that most attempts at introducing something automatic automatically impose significant restrictions on what you can do. This is OK for specific scenarios, not OK for a core language component.
Also, generic programming and template metaprogramming are one distinct advantages of C++ over other languages. The ability to metaprogram and use structural typing there is priceless, and some forms of metaprogramming are quite common in languages like Javascript, Lua, Python, Ruby, Lisp, Haskell. Without such features, C++ becomes little more than a Java without GC. No wonder the C++ committee put their focus on them.
I do agree however that a replacement is needed. Compile times are awful, memory usage while compiling goes through the roof, compiling errors fill several pages, the syntax is an abomination (especially in metaprograms), and it does not even have an optional GC.
But people who get to maintain a codebase written by someone else they don't know will be quite thankful for a readable syntax. This drives maintenance costs down, since it takes less time to fix issues. I take it you never had to fix some old perl code?
I still have to write destructors that clean up all the pointers to an object, and all garbage collection does is force me to call the destructor as a function, rather than a more clear 'delete' statement.
Um, no. The whole point of a GC is that you don't have to explicitely deallocate something. RAII is a problems with GCs, but you didn't mention that. As for the cache hit thing, it sounds quite suspicious to me, more details please. Also, to get that last bit of performance, you have to go low-level, that is true. Note however that explicit memory management is unnecessary in 90% of a typical application's code.
Now, since the ownership problem is passed over to the GC, things become possible that were previously hard to do. Try real closures for instance: C++0x is struggling with this, since they may extend the lifespan of a variable, which is bad if said variable was lying on the stack. Such problems simply go away with a GC. Note that C++0x rvalue references are in fact a solution to a problem caused by the explicit memory management in C++.
There is a reason many people want an opt-in GC in C++0x..
Latency is Good
No its not. Video playback with an audio lag of several seconds? Not good. Playing games with an audio lag of several seconds? Not good.
As for the networked audio stuff, you mention UPnP. All you need for UPnP to work is a dedicated UPnP server like Mediatomb to stream your audio to the client. You do NOT need an audio daemon for this.
At least Stargate remained more or less consistent with what they discovered in earlier episodes. Found nice alien device X? Expect X to appear sometime later. Perfect example: the Naquadah generator. In Star Trek, on the other hand, things just vanish. They had a kickass cloaking device that allows the ship to travel through matter, like a ghost. Disappeared. They got experimental Slipstream drives and Coaxial warp drive stuff from Voyager. Disappeared. Etc.
Unfortunately, Stargate got cheesier in the latter seasons, and didn't make much sense by the end. On one hand, I like it that Earth actually got to deploy shiny new tech and ships, and didn't get stuck with current technology forever (sci-fi shows often seem to go this route). On the other hand, things got seriously out of control, and now Earth is the most powerful civilization in at least two galaxies.
What I would have liked as a spin-off is Stargate in the near future. Say, the Stargate has been revealed only a month ago, and there are riots and panic all over the planet. The Wraith finally make a bold move and start invading the Milky Way galaxy (perhaps let them find a few ZPMs). Maybe throw in remnants of the Ori fleet, who degenerated to a (huge) bunch of raiders pillaging and terrorizing whole worlds. Show how the population on Earth deals with this situation, produced in a Space Above & Beyond style.
Did the Ghostbusters' Stay Puft morph into a shark or what?
The matrix calculations required for rendering are done by OpenGL, not the caller programming language (the advantage of doing this way is that it can be hardware accelerated).
No they are not. The vertex transformations are hardware accelerated. The matrices itself are done either by the application of by the driver (when calling something like glTranslate). Matrix manipulations never ever are done by the graphics hardware.