Substantial postings about constructed languages and constructed worlds in general. Good place to mention your own or evaluate someone else's. Put quick questions in C&C Quickies instead.
Ever considered creating computer programming languages for your conworld? Did you create ancestor programming language and dominant paradigms as a base for programming languages currently used in your conworld? What about the keyboard layout in your conworld?
Here is my ultra-ugly legacy programming language:
C ALL CAPS DUE TO DISPLAY LIMITATIONS
C THIS IS A LINE COMMENT
C VARIABLE DECLARATIONS AND PREFIX SYMBOLS
$STR <= "STRING VALUE"
%REAL <= 3.14
#INT <= 123
?BOOL <= 1
_VARIANT <= 1
[#]INT-ARRAY <= [#][1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
C ASSIGNMENT AND EXPRESSIONS (SQUARES #INT AND ADDS 2)
#INT <- #(#INT * #INT + 2)
C #INT IS NOW 15131
_VARIANT <- #INT + #[_VARIANT] C VARIANTS CAN HOLD ANY TYPE, AND #[...], $[...] CAST TYPES
C _VARIANT IS NOW #[15132]
C LOOPING THROUGH ARRAYS (ZERO IS LENGTH, ONE IS FIRST)
LOOP #I FROM 1 TO #[INT-ARRAY:0] BEGIN
C THE // OPERATOR MEANS MOD
IF ?(#[INT-ARRAY:#I] // 2 = 0) THEN
[OUT #I]
END IF
END LOOP
C HELLO WORLD
[OUTL $HELLO]
C RECTANGLE AREA: FUNCTIONS AND SUBROUTINES ARE ENCLOSED BY %[REAL-FUNC ...] $[STR-FUNC ...] AND SO ON
FUNC %[RECTANGLE-AREA %W %H] = %(ABS[%W] * ABS[%H])
C ALTERNATE WAY
SUB %[RECTANGLE-AREA %W %H] BEGIN
RETURN %(ABS[%W] * ABS[%H])
END SUB
[OUT "ENTER THE LENGTH: "]
%LENGTH <= %[IN-REAL]
[OUT "ENTER THE WIDTH: "]
%WIDTH <= %[IN-REAL]
%AREA <= %[RECTANGLE-AREA %LENGTH %WIDTH]
C OR AS AN EXPRESSION:
C %( RECTANGLE-AREA[$LENGTH, $WIDTH] )
[OUT $[FORMAT "THE AREA IS ?%." %AREA]]
Title: Example Document
Section: Tests/ Examples
Keywords: example, document, heading, link
Author: Kazim T.
------------------
{1 Heading}
This is a paragraph.
This is the second line in the same paragraph.
This is another paragraph. {*bold text}, {/italic text}, {_ underline text} and a {={/home}link to home}
Inline {c code}, {k keyboard}, {ac{Three Letter Acronym} TLA}.
{2 Subheading}
This is under a subheading. \
A backslash will prevent line breaking. This is an inline image {i("../image", width=100, +proportional, +inline)}.
{p This is a paragraph and a line break{\} without syntactic sugars.}
{! This is a comment. You can use {*tags} inside comments but it's pointless.}
{c {:::
This is a code sample {*tags are not parsed}. Colons are like PHP and Perl heredocs, and they make CDATA as in XML.
:::}}
{2 Heading 2}
{2 A form}
{form("/process_form")
{vbox
{form_label}
{input_text("Username", "username",min=5,max=50)}
{input_password("Password", "username", min=5,max=50)}
{input_submit("Submit")}}}
The government controlling program in my conworld is written in a far-future dialect of Scheme, with all the keywords in my conlang. I even have an interpreter for it
I have thought about this since I have been planning making a conworld with advanced technology. I have always wondered what a programming language made by speakers of a polysynthetic language would look like.
"There was a particular car I soon came to think of as distinctly St. Louis-ish: a gigantic white S.U.V. with a W. bumper sticker on it for George W. Bush."
I dont know if this will interest you, but I might as well write it down for my own reference before I forget it all. Yes it sounds ridiculous but keep in mind I was six years old when I started with this concept and didn't really give it up until my early 20's. Writing this out got way longer than I expected, so if there was some way to hide the text in a collapse box I would. This is more about politics than programming, and doesnt even really make the distinction between a programming language and an operating system, but in this world I think the two things would actually be one.
I came up with two OS's used by rival empires, and since they each had full top-down control over all the software that ran on their computers, they each had one (and only one) programming language to go with them. They were known as Lilahaa and Kulapila in Andanese, used by empires that for now I'll also call Lilahaa and Kulapila for ease of understanding. I've carried these names through as Žirša and Turpera in Poswa, and Irasa and Wurabera in Pabappa, which makes no sense because Poswa and Pabappa were spoken thousands of years before computers were invented, but I did it because I figured I could explain the names as being named after famous people from even further back in the past that got passed down in the languages as if they were normal words. In my notes Kulapila is defined as an OS "reminiscent of ProDOS". Also Kulapila is very close to the word for "step, stair", so privately I've thought of it as being analogous to NeXTstep.
Anyway the concepts of the OS's themselves are very childish, in that Lilahaa is almost 100% perfect and Kulapila is basically a parody of every wrong decision made by Apple and Microsoft, combined, with no good features at all. Particularly the supposedly "user friendly" ideas that were aimed at making computers easier to use for casual users but ended up making it worse for everyone, including casual users. Whereas Lilahaa was essentially a "raw" OS that was aimed only at experts, and was far superior in performance to Kulapila in every way, and the people who used it were patriotic enough to learn how to use it the expert way, even if they had no general interest in computers. Thus all the groups in Lilahaa society that stereotypically are useless with computers were at a level beyond even the best of the Kulapilans, since Kulapila essentially made it impossible to be a computer expert by controlling everything from the top down at the highest level.
However, in the early years, "in the 20's" (I forget which century (maybe 3900’s?)), Kulapila's "make it easy" approach actually succeeded. Lilahaa expected to win in the long run, but knew that they would have to begin the war as the underdog. But they were up front with their citizens about the fact that they were using (for now) inferior technology, whereas Kulapila tried to hide the truths about those few things in Lilahaa that were superior even in the 20's, such as greater power for individual users.
Soon Kulapila became unbelievably perverse. Conflcit arose within the company about which direction to take the operating system, with one side sabotaging the efforts of the other at no gain to themselves and increasing costs to the customer. Even though they still had vastly superior resources, they began to fall behind Lilahaa in certain areas and again tried to hide this from their customers. Backdoors were built into the OS allowing the government to take full control of any citizen’s computer, even to the point of having them buy things online to raise more money for the government. A clock-like device with a numeric currency display was provided to each citizen to show how much money the government had cost them so far each day. The computers were also made to be easy to destroy, so that if the government wanted people to buy more computers they would send out a virus that would cause the computers to physically self-destruct. However the “debt meter” was not possible to destroy, and would continue to add up more money owed even when it wasn’t attached to a working computer.
By the middle of the 30’s, Kulapila was so bad that citizens were secretly buying up old computers from the 20’s since they were easier to use even though they had to keep on buying the new computers as well to satisfy the government’s insistence that everyone own a modern computer. Meanwhile, the Kulapila government ran itself mostly on computers from Lilahaa, since they were unable to produce anything of their own that was capable of running such a large nationwide network. Lilahaa programmers knew this, and periodically sent out viruses and other attacks to the few non-Lilahaa computers in order destroy the Kulapila government, as well as a few secret backdoors in Lilahaa itself. But Kulapila hired an army of programmers to write antivirus programs to fight off the Lilahaa programmers, and used these virus attacks as an excuse to their citizens for why the new computers ran so poorly. Antivirus programs were illegal for common citizens because the government had no way of designing one that could not also be used to keep out the government spies. (Generally viruses written by Lilahaa disguised themselbes as the Kulapila government, so any antivirus program designed by the Kulapila government would have to allow such viruses access anyway.) Thus the citizens of Kulapila were attacked by viruses both from Lilahaa’s children playing around and their own government deliberately targeting them. Meanwhile, Kulapila never attacked Lilahaa with viruses, because they knew that Lilahaa was immune to viruses because the Lilahaa government did not demand full control of its users’ computers.
Because of the way the software was designed, it generally was not possible to fix bugs in the software, only to write new software that fights teh bugs even if it also adds some bugs of its own. For example, since Kulapila could not read files larger than about 11 MB, when it became necessary to allow larger files to be created, the programmers came up with the idea of splitting files up into 11 MB chunks and creating a new type of file manager that displayed the groups as if they were a single file. The Kulapila of the 20’s had been a mostly textual interface, but GUI features were added throughout the 30’s to make it easier to use. But the programmers were never able to remove the underlying layers, so much like Windows 95/8 a lot of seemingly graphical programs would launch with a console in the upper left corner of the screen that was quickly hidden as if to pretend it were not real. This limitation affected both OS’s equally, but affected Kulapila in much worse ways because of the infighting and general aimlessness of the Kulapila programmers, such that most of the computer’s resources were spent on fighting different programs in the OS that were trying to delete each other. Sometimes a programmer being fired would deliberately add a virus to the OS that would only activate much later on, long after he was gone. Often a computer would encounter an error that required the user to press a certain key to bypass, and the person would have to call a technician who would come by with a special keyboard that had that key on it, press the key, and leave.
Kulapila realized now its product was vastly inferior, even without the government spying on its citizens, but continued to spend ever more money advertising to its people about how superior it supposedly was. In the early 40s, the Lilahaa government made a list of ways in which the Kulapila software was still arguably superior and exceeded all of them by wide margins in the next release of Lilahaa.
Eventually the situation got so bad that Kulapila realized they needed to start from scratch on a new OS that would work properly for everyone, even if it meant giving up total control. All of their code was contaminated now, so they made a new OS called People of the Meteors (Testapta). They were 30 years behind on programming, but still had roughly comparable hardware resources. At first the new OS was given to only a few people, since giving it to everyone would put the government’s hold on power at risk. In order to keep old software running properly, the programmers decided that every Testapta computer would come with a fully working Kulapila computer running its own OS, and to keep developing Kulapila as a side project even though it would only run within a window attached to the side of the Testapta monitor.
Lilahaa was scared that they might have a real enemy for the first time in almost 30 years, so they copied the source code of Testapta into Lilahaa and began to adopt some of its features in order to keep its own OS ahead in the race. Perversity was beginning to creep out from within the ranks of the Lilahaa government, as well, and for the same reasons; Lilahaa had been so much more successful than its competitor that the programmers realized nothing they did wrong would hurt them at all and they gave up trying to make anything more than incremental improvements to keep their bosses happy. A war of purity erupted in Lilahaa, with the programmers favoring adopting the Testapta source code fighting against those who did not. Eventually the pro-Testapta people won out, and Testapta itself took this as a sign that perhaps cooperation was the best way forward, even though the two empires were still at war.
Aurora Rossa wrote:I have thought about this since I have been planning making a conworld with advanced technology. I have always wondered what a programming language made by speakers of a polysynthetic language would look like.
I really like that idea, though I find it hard to see how it influence: I suppose it could be argued that object-orientated languages are agglutinative anyway and something like printf could be seen as being similiar to object agreement. However, with strictly enforced naming conventions (e.g. start variables with $, numbers with 0r, functions with _ or whatever) something like $a0d1_+ might be more likely in a polysynthetic programming language, though maybe that would be more likely in a logographic programming language (perhaps with one-symbol variable names).
A programming language and input system designed from the ground up for various types of writing systems seems like a fascinating project to me actually! It was very easy for early character sets when the Roman alphabet was used, independently invented Chinese computing would be interesting! Though perhaps, independently invented Korean computing would have been more interesting because you would be faced with the trade-off between being able to algorithmically determine syllable blocks (at the expense of valuable computing time) compared to storage of all the possibilities. You would also have the problems of fonts: simple and small bitmap fonts were perfectly sufficient for the Roman alphabet, but not so for even a subset of Chinese.
[quote]Great wit and madness near abide, and fine a line their bounds divide.[/quote]
The conculture's off-computer mathematical notation would need to be taken into account as well - in most programming languages, we type something like "if (x < y)" rather than "if x is (strictly) less than y".
This may present its own localization challenges if your conworld does not have a universally accepted mathematical notation.
Though be aware that most of them are either joke languages or variations on Brainfuck, but there are a lot of interesting programming paradigms represented here.
One day, I'll perhaps come up with an exceedingly ugly and bureaucratic programming language named COMSOMOL, which would make COBOL look elegant in comparison. However, I haven't even started working out the language, and also don't know yet what the acronym COMSOMOL stands for.
...brought to you by the Weeping Elf Tha cvastam émi cvastam santham amal phelsa. -- Friedrich Schiller ESTAR-3SG:P human-OBJ only human-OBJ true-OBJ REL-LOC play-3SG:A
Though be aware that most of them are either joke languages or variations on Brainfuck, but there are a lot of interesting programming paradigms represented here.
WeepingElf wrote:One day, I'll perhaps come up with an exceedingly ugly and bureaucratic programming language named COMSOMOL, which would make COBOL look elegant in comparison. However, I haven't even started working out the language, and also don't know yet what the acronym COMSOMOL stands for.
COmmon Metaprogramming Structured Objective Module-Oriented Language.
The conlanger formerly known as “the conlanger formerly known as Pole, the”.
If we don't study the mistakes of the future we're doomed to repeat them for the first time.
WeepingElf wrote:One day, I'll perhaps come up with an exceedingly ugly and bureaucratic programming language named COMSOMOL, which would make COBOL look elegant in comparison. However, I haven't even started working out the language, and also don't know yet what the acronym COMSOMOL stands for.
COmmon Metaprogramming Structured Objective Module-Oriented Language.
Nah, it is not at all object-oriented, modular or anything, not even block-structured! It is worse than even COBOL in these regards: flow control is handled by pointer arithmetics. And I now have a name for it:
COMpletely SOphoMOric Language
...brought to you by the Weeping Elf Tha cvastam émi cvastam santham amal phelsa. -- Friedrich Schiller ESTAR-3SG:P human-OBJ only human-OBJ true-OBJ REL-LOC play-3SG:A
I occasionally try my hand at making programming languages, mostly when I get annoyed by the existing ones, which is basically the same thought process that inspires me to make normal conlangs, or most other art forms for that matter.
Since my main conlang is syntactically unambiguous, it's already a good start towards some kind of programming language. I've also made an interpreter for it - type things in the conlang, watch them happen on the screen - but it's hardly programming.
I do think a few things would be different if my conpeople invented a programming language; for one thing, they would probably have strict prefix notation ("+ 1 2" rather than "1 + 2").
Not a programming language, but a friend of mine once proposed developing an Insecure Socket Layer protocol, and the accompanying Insecure Shell. Commands are in lolspeak.
I've always loved the parallel between Polish notation is Lisp and VSO languages. It seems much more logical, to me. If I was making a conlang with a con-programming language, that's what I'd do.
Gojera wrote:I've always loved the parallel between Polish notation is Lisp and VSO languages. It seems much more logical, to me. If I was making a conlang with a con-programming language, that's what I'd do.
Gojera wrote:I've always loved the parallel between Polish notation is Lisp and VSO languages. It seems much more logical, to me. If I was making a conlang with a con-programming language, that's what I'd do.