Die Frage ist eigentlich müssig. Heutzutage ist man sich weitgehend einig, dass die meisten Fortschritte im Softwarebereich dadurch entstanden sind, dass zwischen dem Programmierer und die Maschine Schichten geschaltet wurden, die für das menschliche Gehirn schwierige Sachen vom Programmierer wegabstrahieren, weil der Programmierer ist nicht die Maschine.
Sämtliche Programme die mit SQL auf relationale Datenbanken zugreifen wären nach einigen der unteren Definitionen keine "Programme", weil sie ja vom SQL-Interpreter abhängen. Was ist dann mit C++ Programmen, die bestimmte Standardbibliotheken oder dlls einbinden. Sind das dann auch nicht-Programme? Oder C++ Programme insgesamt, die ja von einem möglicherweise fehlerhaften Compiler erst in Maschinencode umgewandelt werden. Oder Java Programme, die von einer Java Virtual Maschine abhängen, die wiederum Teile des Zwischencodes in Maschinencode umwandeln. Oder .NET Programme, die auch von einer Virtual Maschine zwecks Just In Time Kompilierung, teilweise Interpretation abhängen. Oder alle Skriptsprachen.
Gruß Axel