If some software forces you to do things perfectly the first time you try them, and punishes you by making you repeat all you did because you made a little mistake in some part of the work, then that software is unforgiving, it is SoftwareThatPunishesTheUser. Typical examples are: * All the software without an undo command. * The del command in MsDos (no way to undo) * The rm command in Unix (no way to undo) ** worse, I have a nuke command that does the equivalent of rm -rf and doesn't take any options (it tries to delete them!) Oh, and its statically linked so redirecting the unlink call in libc doesn't help. * Sql Databases (Either you insert everything perfectly, or everything is rejected, Sql Databases refuse to help you with incomplete data, DatabasesPunishYou) * WebMail, WebForums, even Wikis (You spend 30 minutes writing an email, a post, an article, you hit the send button, you get an error message saying that the server was unavailable, and when you hit the back button you realize that all the text of your message is lost) ¿Perhaps the punishing software here is the WebBrowser?. * Some WebBrowsers You are happily browsing, with lots of open tabs, the browser crashes, and you have lost all those urls forever, note that this is not true for the latest versions of FireFox. ** I am suspicious of software that recovers from its own crashes so gracefully. It makes me wonder if the developers found it easier to create a recovery mechanism than to fix the actual source of the problem. *** The problem is not if you FailHard or if you FailGracefully, the problem is if you FailHypocritically * Hibernate ORM (You get a ConstraintValidationException when trying to delete an object, and your EntityManager gets in to an invalid state, you can not use that same EntityManager to remove the child objects and try to delete that object again) * Software based on vendor decisions rather than standards, so users can't depend on things to work at all unless doing exactly as the vendor approves it. Widespread examples include Microsoft Windows and PHP. ''Perhaps this indicates a need for FirstClassUndo? See also TheHumaneInterface and DontModeMeIn.'' ---- Language wars have no place on this page. Unless you can justify the below's existance with something ''more'' than the same old "BondageAndDiscipline" rhetoric that everyone's heard, and utterly disagreed with, in the past, I will remove this. --SamuelFalvo LanguageIsAnOs, SamuelFalvo, and NoApplication is a possible and likely path for the future. As consequence, the distinction between language, operating system, and software are blurring to near non-existence. ''I'' intend to help that blurring along, based on my own desires and wishes: DontModeMeIn -> NoApplication -> extensible OperatingSystem -> DontModeMeIn -> DistributedOperatingSystem -> LanguageIsAnOs -> extensible, distributed Language -> one big, distributed IntegratedDevelopmentEnvironment -> WikiIde (that, as much as possible, wont mode me in). So, I must say that I don't agree; I'm convinced that all arguments about software are ultimately about language. ''I don't know who initially created this page, but languages have users Samuel, ,and many consider strict languages something that punish the user. In my opinion a language that punishes a user in one way can save him in another way - and that a combination of punishing and not punishing in the right ways is the best compromise. So since '''languages do have users''', I think languages that punish the user are similar to software that punishes the user.. since computer programming languages are software. Even unix permission system punishes people, or leads to punishment.'' * Ada and Standard Pascal which were very strict languages ** I am not sure that Ada and Standard Pascal really punish you... at least not in the way intended in this page, because they don't actually force you to restart your work, on the other hand, by being restrictive they may force you start your coding from scratch when you realize you were going down the wrong path... but I am not sure if they actually cause you to do that... **''Users are developers.. i.e. the users of the pascal systems and compilers were punished by the BondageAndDiscipline compiler. At the same time, this is a good thing in some senses.. especially if there is '''an escape''' in which you can work around it when you need to.. as are available in modern languages. Standard pascal did not have a module system and forced you to recreate your programs each time (and no include files). That was a punishment since you had to reinvent algorithms in the programs over and over again. Luckily, NiklausWirth learned from his issues in his first language.'' ** [Standard Pascal was intended as a teaching language and to illustrate structured programming. Attempts to use it as a real language were an unfortunate mistake.] *** ''[Or perhaps the unfortunate mistake was not using real a language for teaching ]'' **** PHP is not a real language and is used across the internet. Probably even you use it. Snicker. ***** Actually some people think that PHP is an unfortunate mistake. ---- The opposite of TheHumaneInterface.