{"id":21595242,"url":"https://github.com/euank/qqqq","last_synced_at":"2025-03-18T11:09:32.687Z","repository":{"id":17893784,"uuid":"20844401","full_name":"euank/qQqq","owner":"euank","description":"A bad joke of a programming language. It's pronounced \"Qfrzkkndqy\"","archived":false,"fork":false,"pushed_at":"2014-06-15T00:01:52.000Z","size":156,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-24T17:19:47.480Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/euank.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-14T23:48:11.000Z","updated_at":"2014-06-15T14:32:28.000Z","dependencies_parsed_at":"2022-09-14T22:51:26.012Z","dependency_job_id":null,"html_url":"https://github.com/euank/qQqq","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euank%2FqQqq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euank%2FqQqq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euank%2FqQqq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/euank%2FqQqq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/euank","download_url":"https://codeload.github.com/euank/qQqq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244207736,"owners_count":20416107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T17:34:57.581Z","updated_at":"2025-03-18T11:09:32.668Z","avatar_url":"https://github.com/euank.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"qQqq\n====\n\nA bad joke of a programming language. It's pronounced \"Qfrzkkndqy\"\n\n## But WHY?\n\nAs was written in my Linear Algebra textbook, *Introduction to Linear Algebra,\n4th ed*, \"Stable computer codes use as many Qs as possible\". The topic of\ndiscussion was QR factorization, but the statement was otherwise unqualified.\n\nAs such, I decided that to make the most stable computer program possible, only\nthe characters 'q' and 'Q' should be used. Indeed, in qQqq using any other\ncharacter is a syntax error!\n\n## Syntax\n\nIt takes signficant inspiration from Brainfuck, but allows for a little more\nflexibility down the road. The following instructions are known right now:\n\n| Instruction | Effect |\n| ----------- | ------ |\n| QQ          | Increment the current cell's value |\n| qQ          | print the current cell's value as if it represents ascii |\n| qq          | Decrement the current cell's value |\n\nThe important thing to notice is that Qq as a pair of characters are unused.\nThese are reserved to add further functionality like being able to advance\nthrough cells and implement looping constructs. I thought I had already done\nthat, but looking at the code I guess not.\n\nBasically, Qq signals that the next characters will be significant as well so it\nneeds to read more to figure out what it could be. One way to do this would be\nto encode it as Qq, and then the Q-encoded size of the significant characters\nfollowed by said characters. I might do that.\n\n## Preprocessing\n\nFor the interpreter to be as stable as possible, it was necessary to create a\npreprocessor (preprocess.rb) that makes the interpreter use as many 'Q's as\npossible too. 'q.c' is the unprocessed source code while 'qQqq.c' is the\nprocessed interpreter which you should use to ensure your code is stable.\n\n\n## License\n\nI absolutely don't care what you do to this. Say you made it if you want because\nheck knows I won't be bragging about this dumb idea.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuank%2Fqqqq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feuank%2Fqqqq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feuank%2Fqqqq/lists"}