/tech/ - Technology

Technology & Computing

New Reply
Files Max 5 files32MB total
[New Reply]

[Hide] (55.9KB, 573x442)
What do you think is the most complicated piece of software? Like if someone were to attempt making an alternative that has comparable features and performance, what piece of software would be the hardest to match?

You might instinctively say operating systems, but I think they're actually pretty simple relatively speaking. I think the main reason many people don't make them from scratch is that there's a huge barrier of entry, you can't even program it normally and will have to set some assembly and weird data sections, you don't really get experience for that kind of thing anywhere so you have to learn from some half assed guides how to do it. And if you got it going, the most complicated part would be hardware drivers, but in my opinion those don't count as part of the OS, rather they're a bridge between the OS and the hardware. It would also be hard to define what drivers count as being part of the OS and what don't.

Next is web browsers, but similarly, I think they're not as complicated as they may at first seem. Instead of being somehow advanced, there's just a lot of shit in them, I'm sure a lot of people could make a web browser if given enough time in a time chamber. I suppose that counts as being complicated though.

My candidates for the most complex pieces of software are Photoshop and Unreal Engine. My reasoning is that if you wanted to make an alternative that has the same features, almost nobody could do it no matter how much time you gave them. A lot of the features they have and the performance they can accomplish would require a very high level of expertise in very specialized subjects. Photoshop for instance has some tools that simply no other program has, or they have some similar equivalent that isn't as good.
Replies: >>3412 >>8240
>if someone were to attempt making an alternative that has comparable features and performance, what piece of software would be the hardest to match
Anything with a large amount of backwards compatibility and legacy features. My picks would be Visual Studio and Microsoft Office. There's a reason LibreOffice is niche and it's not just because the developers are fags that rig mascot contests.
>web browsers, but similarly, I think they're not as complicated as they may at first seem
Here's another source of complexity: moving standards. You can, given enough time, implement a browser as it is this very moment. But it would already be outdated at the time of release. Maybe you also want your JS engine to be able to run all the piece of shit web apps at a comparable speed to your competitors. Now you have to track specific optimizations to something like V8 because JS is a retarded fucking language and the way to make it fast is to write code in a way that's optimized for specific JIT interpreters.
>very high level of expertise in very specialized subjects
You can say the same about ffmpeg, for example. I think implementing all the features Photoshop has isn't comparable to anything mentioned here if there was some kind of standard with all the theory behind them attached. I agree on large game engines.

The problem with this question is what you would define as complicated software and why. Hard to implement alone? Lack of open standards? Constantly moving targets? The need to implement additional hard stuff around your piece of software as well (as in the case of your OS example)?
Replies: >>3268
I think English doesn't have the word to describe what I mean by "complicated" or "difficult". Even the word "advanced" is up to interpretation, you could say that some half assed neural network that does a clever thing is very "advanced technology" even if anyone who knows neural networks could easily re-create it. You could say that copypasting text into 20 billion separate text files is "hard" even though anyone could do it even without programming skill, it just requires an unreasonable amount of grunt work.

Lack of- or changing standards don't count. The objective isn't to make a new web browser that runs all the shitty javascript features, it's to make a web browser that has the equivalent functionality. You could make it with completely new standards and replace Javascript and webassembly with a single compiled language that's more well defined and consistent. That would be BETTER than a web browser despite being easier to create compared to re-creating js/wasm. Therefore, complexity caused by shitty design decisions and decades of legacy crap also doesn't count. You don't need to re-create the fact that documents work despite being completely incorrectly formatted, unless that's an intentional and desired part of the software design for some reason (e.g. some save-file recovery function) rather than the result of web browsers competing for market share.

For the sake of argument let's also say that all software suddenly stops evolving. Nothing ever improves or evolves until you finish your alternative or give up. No new research or tutorials or presentations on the subject get released either though.

As far as specifications go, you only get to know what the features are along with a rough overview and some test cases to compare your own results to, but not how they do what they do or how to implement them. After all, if you're just handed all the secrets behind the feature on a silver platter, then anyone could do it and that defeats the point of the question. You'd have to research the subjects yourself.
Replies: >>3271 >>3410
If that's the definition, then this type of complicated would be implementing any kind of hard theory as an efficient algorithm. Mathematical models, compilers using latest comp sci research, computationally intense graphic visualizations etc.
The idea of a web browser is absurdly simple, but a browser that can browse the the HTML/CSS/JS/etc web IS absurdly complicated. 
This isn't inherent of the task itself but rather the standards are pure trash.

Web browsers that can browse the web we're posting on are the easy candidate for most complicated piece of osftware.
Replies: >>3410 >>8240
The problem with the web isn't so much the standards it runs on, the problem is that browsers at some point started compensating for common mistakes people made. This then morphed into people not considering those things mistakes anymore and making even more egregious mistakes. 
This, much like some features of modern compilers, made the actual display of websites unpredictable because the browsers have effectively ceased following the standards as written. 
A standard is holy and should never be implemented in anything but a literal way by any program. Otherwise it ceases to be a standard. If a standard needs a change, change the standard, not the implementation.

That being said, it's unrealistic not to count "displaying the web as-is" as a task and instead expect the entire world to switch to some new thing. The internet is too large for that, this isn't the 90s anymore. Otherwise, you may well count replacing the entire street network to be able to support hydrogen-fueled heavy tanks as the main vehicle an altogether easy job.
Replies: >>3411 >>8240
>much like some features of modern compilers
What are you thinking of here? I can think of multiple compilers that take the standard as "holy" and use it to justify all kinds of wack shit (especially in the C world) but not many that accept horribly wrong crap in some misguided attempt to "do what I mean". I guess you can find this in a few languages though.

It's also worth noting that many browsers don't follow the standard precisely because the standards are such rancid shit. It's the combination of bad standards and ignored standards that makes the web awful.
Replies: >>3414
>>3266 (OP) 
IBM Maximo
> I can think of multiple compilers that take the standard as "holy" and use it to justify all kinds of wack shit
And they're completely right.
I'm sorry but if you can't even follow your language's standard your code has severe bugs in it and it's not the compiler that is to blame.

If you want to look for something that compilers actually get wrong then have a look at clang/gcc adding security bugs to programs every time you clear sensitive data with memset, and how both refuse to fix this and we need functions like explicit_bzero.
Replies: >>3419
Well which one is it, are they completely right or do they get memset wrong? The exact same logic underlies both. Which category would (x + 12 < x) as a signed overflow check on a machine with wraparound fall into? When GCC started "optimizing" that one out, the responsible maintainer replied "the standard allows this so it's your problem, fix your code" to everyone who complained, like a broken record.
Replies: >>7975 >>7983
The grossly-scope-creeped-on-steroids systems of the US F35 Lightning II. That it even manages to fly at all is remarkable and a testament to the senior developers who pushed it through apparently by sheer will alone.
Your machine is not the C standard.
>to everyone who complained like a broken record.
People do tend to complain like broken records, particularly when it's not their own work that is in question. However, having undefined behavior frees implementors to create innovative, possibly game-changing solutions. Besides, C would never have obtained it's global stature as a systems tool w/o these undefineds. Efficiency on the metal is key, after all Anon.
You say it's not about sheer amount of grunt work but that's really what your definition is.

Somewhere out there there's a piece of software with like 500+ pages of requirements. Either space shuttles or taxes.
>>3266 (OP) 
>Most complicated piece of software
Depends on the category of complication.

Complication by sheer size? Operating systems, modern windows to be specific, due to the amount of backwards compatibility spearheaded by absolutely insane management. 

Complication of the GUI? Autodesk Maya. Jesus. fuck. I have never seen a software with such a complete shitshow of a GUI, and I've been around the block in terms of 3D modelling software.

Complication by overabundance of functions? I think VisualStudio would fit that bill. I was thinking GNU Emacs, but VS is a mess on a calibre of it's own.

Web browsers didn't need to be complicated, but they became complicated when language after language was introduced for the shiny factor. For whatever reason, browsers are seemingly-obligated to include every single one of these pieces of shit despite how much damage they can cause.
[New Reply]
14 replies | 1 file
Show Post Actions



Select the solid/filled icons
- news - rules - faq -
jschan 0.10.2