11 ms·
Vigil, the eternal morally vigilant programming language
- bitL 9y agoCan't wait until this is noticed by a manager with a PhD from protestant theology and decided to be used/implemented :D Referential self-punishment. Self-removing code during runtime based on a predestined moral functor.
- nickpsecurity 9y agoYou use this for high-level parts of the app. You drop down to HolyC for anything it can't handle.
- sillysaurus3 9y agoHolyC is awesome. Aw, Terry's YouTube channel was taken down. He did so many walkthroughs of HolyC and his dynamic programming engine. Oh well, 353 videos were archived at least. Thank goodness for archive.org! https://archive.org/details/TerryADavisTempleOSYouTubeChannelArchive https://archive.org/details/TerryADavisTempleOSYouTubeChanne... HolyC: https://archive.org/download/TerryADavisTempleOSYouTubeChannelArchive/20140907%20-%20160%20-%205gfoDHycEi0%20-%20TempleOS%20-%20HolyC.mp4 https://archive.org/download/TerryADavisTempleOSYouTubeChann... Flight simulator: https://ia801506.us.archive.org/2/items/TerryADavisTempleOSYouTubeChannelArchive/20131003%20-%20012%20-%20FxEq6IM43sA%20-%20TempleOS%20-%20Flight%20Simulator%20and%20First%20Person%20Shooter.mp4 https://ia801506.us.archive.org/2/items/TerryADavisTempleOSY...
- bitL 9y agoWhy? Because of "offensive" language?
- sillysaurus3 9y agoAn archive of Terry A. Davis' YouTube channel before it was taken down / removed around 2017-05-18. Due to copyright strikes not all content was available for download. Sounds like copyright strikes. He had 1,140 videos uploaded. That's like burning down a library.
- psyc 9y agoI lost an entire YouTube channel once. "TOS violation" was the only explanation given. No recovery option. It was almost entirely me playing instruments. No idea what the problem was. Absolutely no idea why they obliterated the whole channel. Surely not every video of me playing piano managed to violate the TOS. I wish there was a way to hold them accountable, but they're far too gargantuan.
- rjeli 9y agoWow, that’s terrible. Anyone know if he still streams? I enjoyed his casts of walking through the HolyC source
- sillysaurus3 9y agoWas he on Twitch? I'd follow. I'd guess if he streamed on Youtube, his account is terminated so that's no longer possible. I kind of want to go through the legwork of reuploading most of the 1100 videos and then giving Terry the username+password of the new channel. But I don't know if that will run afoul of Youtube's policies and I don't want to be banned for life myself. (Archive.org snagged most of the 1100 videos, not just ~300. But some of them are just missing.)
- staticautomatic 9y agoThis is so great.
- stephengillie 9y agoI made an automatic error fixer once in Powershell. When you load a module, it would catch missing commas between parameters, and update the module file with the missing commas. I want to extend it to catch many more common coding mistakes. This sounds like the opposite idea, remove the function instead of repairing it. Very aggressive idea.
- aetherson 9y agoYou get that this language is a joke, right?
- abhirag 9y agoFrom the docs -- "Eternal moral vigilance is no laughing matter" :P
- alimw 9y agoAdopting this scheme might really lead to improved code quality.
- mnemonicsloth 9y agoWell yes. The empty program is 100% bug-free. I don't think any other language can guarantee that your code will be 100% bug-free.
- chris_wot 9y agoThe contract is to do something specific. If it doesn't do that then it's a bug. It will need to delete itself.
- braveo 9y agoI would be interested in the technique you used to do this. specifically, how did you get your code to kick off and check on module load?
- stephengillie 9y ago
- tasty_freeze 9y agoIt seems unfair to punish a program lacking in free will.
- mwkaufma 9y agoVigil comes from Munificent, the principle developer of wren, an unironic language that fills lua's niche (portable c, embeddable, no dependencies), with a nicer syntax: https://github.com/munificent/wren https://github.com/munificent/wren
- shakna 9y agoAnd inbuilt concurrency through Fibers [0], which are co-operative threads on the VM. [0] http://wren.io/concurrency.html http://wren.io/concurrency.html
- altotrees 9y agoI believe he is also on the Dart lang team at google. He has a pretty awesome blog and is super insightful when it comes to programming languages. His Github projects inspired me to research language design further.
- jeff_petersen 9y agoYep his blog and books are great. Incidentally I started looking into Dart yesterday. Seems like a comfy language, more so than Typescript in my opinion.
- unkown-unknowns 9y agoLikewise, users ought to be punished for making mistakes as well. If someone has a typo in a command on the cli, delete a random file from their home dir.
- crehn 9y agoAlias ls to echo "Segmentation fault"
- 482794793792894 9y agoAlternatively: https://qntm.org/suicide https://qntm.org/suicide
- shakna 9y ago> I have invented Suicide Linux. Any time - any time - you type any remotely incorrect command, the interpreter creatively resolves it into rm -rf / and wipes your hard drive. That adds a level of terror... Maybe somebody will add it to a tech interview. I mean, it's got a Debian package.
- hliyan 9y agoWhy not: assert n >= 0 assert result >= 0 ?
- kmill 9y agoBecause those don't delete the offending code which must be punished. Also, implore specifies the caller is offensive, and any function which swears a falsehood is offensive. The latter is like assert, but the former is like lifting the assert to the caller.
- first_amendment 9y agoOne is a requirement, the other is a promise. The promise "result >= 0" is necessary because the compiler may not be able to prove that on its own.
- kmill 9y agoAn early computer-based Nomic game (which I've forgotten the name of) had its proposals in the form of patches to the PHP for the game website. The way they handled buggy submitted code was to excise offending blocks of code until it ran again.
- first_amendment 9y agoJokes aside, semantically "implore" and "swear" are actually really good primitives for static analysis. "swear" is only dangerous because there's a chance it gets out of sync with the code it's swearing for.
- vidarh 9y agoCheck out Eiffel if you want a serious version of pre/post conditions and invariants. Or any number of functional languages where the approach tends to be to use the type system for these type of guarantees instead.
- ComodoHacker 9y ago>any function that throws an exception which isn't caught is wrong and must be punished It's not obvious who's to blame here, the caller or the callee.
- steinuil 9y agoSo this is essentially a creative implementation of the contracts model from Eiffel. I like Racket's implementation a lot, which is coupled with its module system.
- JetSpiegel 9y agohttps://github.com/munificent/vigil/issues/24 https://github.com/munificent/vigil/issues/24 There's a proposition to not only delete the code but commit and push the git repo its a part of.
- chris_wot 9y agoThat only works if it rewrites the git history and removes the function completely.
- JetSpiegel 9y agohttps://github.com/munificent/vigil/issues/24#issuecomment-168464165 https://github.com/munificent/vigil/issues/24#issuecomment-1... The proposal goes further...
- chris_wot 9y agoDistributed punishment. Gives a new meaning to pulling changes.
- endgame 9y agoDeleting offensive code was an "accidental feature" of ghc at one point: https://twitter.com/bos31337/status/116372971509121025 https://twitter.com/bos31337/status/116372971509121025 > The best ghc bug ever involved a dev version of the compiler deleting your source file if it contained a type error. https://git.haskell.org/ghc.git/commitdiff/434ef2b14b37df405602a74838b8b38d0f5b4375 https://git.haskell.org/ghc.git/commitdiff/434ef2b14b37df405...
- INTPnerd 9y agoI was actually kind of excited until I started reading the sample code and that it deletes code that has bugs. Of course this coming from the guy who went on a reddit rant about how not having 100% coverage is usually irresponsible.
- carlmr 9y ago>rant about how not having 100% coverage is usually irresponsible. Well, that's because it is irresponsible.