Mechanical devices need patents for the design, as a competitor can easily re-implement an absolutely identical design. It's often clear by inspection how it's made. A different device that accomplishes the same task in a slightly different way doesn't infringe on the patent.
Software already has protection against identical copies through copyright. The key difference is that software patents go farther; they claim to cover the concept. Any implementation of the concept violates the patent. Re-implementing software to accomplish the same mathematical concept in a different way still violates the patent.
idea: superhuman who flys around saving people
expression: superman, alternative expression: ultraman
both protected respectively by copyright (imagery, stories, movies etc)... do they also need patents?
i think the answer here is “no” and it’s the same for software... but again, please correct if i’m missing something
edit: spelling/formatting
Yes, yes you can.
While I'm sure that you can find examples of software patents that have patented a specific implementation of a given idea, you can also find mechanical patents that claim a broad concept. These patents exist for two main reasons: 1) They discourage competitors from attempting anything within the broad concept. Even if a judge would probably rule a patent unenforceable, the risk of litigation is enough to make legal departments recommend against doing things that are covered by the patent. 2) They give companies ammo when they do get to litigation. If Company A sues Company B for infringement on one of its patents, Company B can come back and countersue because it holds a large war chest of other broad patents. Even if most of them are unenforceable, each one poses its own risk that some part of it is held up and the infringing party is liable for damages. The quantity of patents involved (and the legal costs for litigating such a case) help push companies into a quicker out-of-court settlement.
The problem as I see it is not with software patents versus mechanical patents. It's with broad patents versus specific patents. There needs to be a mechanism for easily challenging the validity of a patent after it is issued.
Edit: For context, I'm a mechanical engineer who's worked on design & development of technical consumer products.
A smaller company could come up with a unique engine design, but without patent protection, a bigger company could just drop by and take the design and build it themselves. In other words, the larger company would get R&D "for free". In the engineering world, only by "building" the design can you make money (in general).
So without patents, there would be no reason for smaller companies to exist, simply because such companies would have no counter-measure for their lack of financial resources.
[1]: Nothing here means "no physical resources". The big costs would be labor and compute (depending on the idea). But I would argue that labor is a bigger cost for a company that would like to build an engine at scale (initial design, manufacturing, testing, supply chain, and so on).
So that might actually be an argument in favor of software patents, if they actually did protect the interests of small companies. Unfortunately it's almost impossible to implement a new idea in software without using a lot of other recent ideas at the same time, and if all the recent ideas are patented, no one will be able do anything that isn't 20 years out of date unless they have a defensive patent portfolio of their own.
Marketing budget is something inherent in small vs. big companies in all industries, so I do not agree that the fact that software and hardware share this makes them similar.
Your example does demonstrate a benefit of software patents in theory, but is this how they are typically used in practice?
So, I invent a method that dramatically improves search engines. How do I commercialize it for “nothing”, if I’m not one of the few companies with access to a huge data set, and cannot protect my invention with patents?
And yes, there are definitely exceptions, but my point is that the general case in software != the general case in engineering, which is why you cannot directly compare the effect the patent system has on the two fields.
(There really is no such thing as a software patent.)
Patenting software amounts to patenting algorithms, which is basically patenting math. It's far broader in scope by its very nature. On top of that, it's not hard to get software patents on things that are obvious, often by simply patenting "$well_established_process, but in software".