Sim, legalmente, eles podem ser patenteados (em muitos países, mas não em todos).
As patentes existem há muito tempo, e a ideia é exatamente como você descreve: proteger sua invenção para que você tenha tempo de construí-la, comercializá-la e lucrar com ela. Sem patentes, você poderia inventar algo e, em seguida, alguém com mais recursos e dinheiro poderia vir, construiu sua invenção e no momento em que você estava pronto para vendê-lo, eles já teriam encurralado o mercado.
Muitas pessoas acreditam que as mesmas proteções não são necessárias para o software, porque - falando em geral - não é preciso muito esforço para "construí-lo". Quando você está falando sobre objetos do mundo real, você precisa ter uma fábrica para fabricá-lo, precisa de máquinas, precisa de funcionários, precisa de uma rede de distribuição e assim por diante. Se você não consegue essas coisas, pode licenciar sua ideia patenteada para alguém que fez ter essas coisas, e elas poderiam fazer todas essas coisas extras para você.
Mas com o software, qualquer pessoa com um compilador e uma conexão com a Internet pode construir e distribuir o software, portanto, há menos necessidade de "proteger" a invenção para dar tempo de configurar sua rede de distribuição. p> Depois, há também o problema de que as pessoas no escritório de patentes geralmente não estão qualificadas para determinar se uma determinada invenção de software é patenteável ou não, deixando que os tribunais decidam se uma patente é válida quando o proprietário tenta afirmar seus direitos a ele. Isso significa que se você é uma pequena empresa e "infringe" uma patente inválida, provavelmente não tem recursos para combater a patente de qualquer maneira (mesmo que seja inválida).
Mas não vamos entrar em esse debate em particular :-) eu poderia continuar por dias ...