"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Dec 31 09:04AM -0500
On 12/28/2018 5:08 PM, Richard Damon wrote: > swap: >< > shortcut indirect: ~> which later became ~~ > modulus: -% The swap operator wasn't my idea. I just happen to think it's an excellent idea. I also introduced ><= as a follow-up, one which operates standalone and conveys more meaning than simply the "a >< b;" syntax on a stand-alone line, but it is otherwise synonymous when used in stand-alone. When ><= is used in-flight, it doesn't just swap the values for the remainder of the expres- sion, but rather permanently update the target variables. https://groups.google.com/d/msg/comp.lang.c/S0Y0yfuY8bk/JcW-H8p6AQAJ > and that doesn't count syntax changes like a < b < c I have also introduced the underscore-bang operator: _! https://groups.google.com/d/msg/comp.lang.c/TerqLu1Rvg4/bD4xkKizBgAJ It was added to augment legacy systems with new struct / class information the new additions to the app are aware of, but old code is not. It allows traditional uses of prior structures, such as dynamically linked external modules which have not been recompiled and are not aware of the new fields, to still operate properly while allowing the code that has been recompiled to use the new features. It doesn't work on legacy arrays, but does work apart from that, such as single instance structures that need to convey more cargo than their finite size allows. By passing the pointer, the pre and post portions remain visible to apps that are aware of it. And the _ptr! syntax indicates it's being conveyed with pre and/or post data. I've added predicates: // Old way: if (units > 1) qty /= units; // As a predicate ((units > 1)) qty /= units; I've added the /% divide-modulo operator, which operates to obtain the divide value and remainder in one op: // Old way: divide_value = a / b; remainder = a % b; // Using divide-modulo divide_value = a /% b : remainder; I've introduced the @ character for use when passing a variable to indicate it's being passed by reference. I've introduced the ability to perform a bit rotate operation using <<< and >>>, which include <<<= and >>>= as well as the ability to rotate a sub-portion using start#length syntax, as in <<7#4<< to begin rotating at the 7th bit and extend for 4 bits to the 7th,8th,9th,10th bit. x <<<= 5; // Rotate the bits in x 5 positions y >>>= 5 : carry; // Rotate the bits in y right 5 pos- // itions, and rotate not just in y, // but rotate each bit through the // carry variable. I've added mated ctors / dtors, so that when something is in- stantiated with a particular constructor it calls the associated destructor, which can then also call an explicitly named one by using the constructor's name, as ~name(). class Xyz { Xyz(void) name1 { /* ctor code */ } ~ { /* dtor code */ } Xyz(int a) name2 { /* ctor code */ } ~ { /* dtor code */ } }; I've added associated pre {} and post {} blocks to everything: pre { // Code here } if (x == 5) { // Code here } post { // Code here } It encapsulates code associated with the inner thing. Works with anything that can be in a block. Can also be explicitly moved to using pre; or post;, or you can name them and call the one explicit one if you have more than one defined using the pre name; and post name; syntaxes. Using a post block allows for easy structured exit from a multi-nested inner loop. ----- Many features in CAlive. They are all well into development, including most of the newer ones over the past couple months. -- Rick C. Hodgin |
Bart <bc@freeuk.com>: Dec 31 06:07PM
On 31/12/2018 14:04, Rick C. Hodgin wrote: >> modulus: -% > I have also introduced the underscore-bang operator: _! > https://groups.google.com/d/msg/comp.lang.c/TerqLu1Rvg4/bD4xkKizBgAJ I must have missed that one. Looking at it now, I still don't understand what it does or how it might be useful. Looking through your CAlive newgroup articles, I can see these new operators and symbols, in addition to those above: ((...)) as alternative to if (...) <<<, >>> rotates /% divide/mod, but used in very peculiar way ==# ? f32#2 The #2 means 2 decimals?? # Concatenation of some sort !+ +! ? [x] Same as *x ~|...|~ different kinds of 'casks' <|...|> [|...|] (|...|) /|...|/ \|...|/ | Alignment operator (to do away with {} and indents) <- Note sure (can't read the note I made) _ Dereference? (as in _x and x_f...) ? As in 'if (x?)' b<-a Means same as a->b |-, -| ? 'lbar' and 'rbar' <- To do with pointers again (3rd overload?) @ 'pass by pointer' #x 'before value of x'? ##x reset something or other #= ? i|++ I think still increment Together with the dozens of other puzzling features, I really look forward to seeing what a program in this language will look like that when using all this lot. And that's not meant to be complimentary. (Combining this with all of supercat's ideas would be even more intriguing.) > // As a predicate > ((units > 1)) qty /= units; Why is that better than: if (units > 1) qty /= units; > remainder = a % b; > // Using divide-modulo > divide_value = a /% b : remainder; People will want to write: divide_value, remainder = a /% b; (Your use of ":" interferes with "?:" if you still have that.) > I've introduced the @ character for use when passing a variable > to indicate it's being passed by reference. You seem to use & for that purpose, so what's the point of @? , which include <<<= and >>>= as well as the > ability to rotate a sub-portion using start#length syntax, as > in <<7#4<< << or <<<? to begin rotating at the 7th bit and extend for 4 > bits to the 7th,8th,9th,10th bit. > x <<<= 5; // Rotate the bits in x 5 positions > y >>>= 5 : carry; And yet one more use of ":". And another example where two things are modified in the same expression. (What happens with 'y>>>=5:y;' ?) > Many features in CAlive. Clearly. |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Dec 31 02:22PM -0500
On 12/31/2018 1:07 PM, Bart wrote: > /% divide/mod, but used in very peculiar way > ==# ? > f32#2 The #2 means 2 decimals?? These are used to compare floating point values to that many decimals in base-10. It allows values like 1.999999999 and 2.00000001 to compare as equal. > # Concatenation of some sort For readability. It allows a single operator to span multiple sources, with each one being together with its cohort in the nth position. The example I use is (c1#c2 == 13#10), rather than (c1 == 13 && c2 == 10). It conveys more clearly you're looking for a 13/10 (CR/LF) pair in two variables, where as c1 == 13 && c2 == 10 breaks it out and it's not completely clear. > !+ +! ? I don't remember these. I think they were going to be nested comments. I've since changed the syntax to be /+ and +/ to follow D's syntax. > [x] Same as *x A new pointer syntax. And [[x]] for pointer-to-pointer. > (|...|) > /|...|/ > \|...|/ Each has a particular purpose. ~|utility|~ for ad hoc code. <|logic|> for decisions, or responding to flow control. [|definition|] for def- ining things. (|reference|) for referencing things. Other syntaxes are not generally for visible use, but are internal, to be injected by the compiler, used by the gui editor, etc. > | Alignment operator (to do away with {} and indents) > <- Note sure (can't read the note I made) Pointers can go either way a->b or b<-a. It's provided to give con- textual meaning, such as prev<-p and p->next so they indicate visually their direction. > _ Dereference? (as in _x and x_f...) All variables have an implicit underscore variable form unless there is an explicitly created underscore variable name in scope. If you create "char* x" there's an implicit _x which is the unsigned integer equivalent value that can be used. > ? As in 'if (x?)' An immediate evaluation of x to 0, and returns true or false. It is not required, but has utility in something like "if (x? == validState)". It's the same as "if ((x != NULL) == validState)". > b<-a Means same as a->b > |-, -| ? 'lbar' and 'rbar' Same as <- and ->, except they categorize the data in the struct or class as being primary members, or lesser used members. An lbar or rbar member is typically set at instantiation, and then not altered. It's designed to provide a visual cue that this data is different than other oft-changing data. > <- To do with pointers again (3rd overload?) Only one. If there's more than one please point it out. > @ 'pass by pointer' This has changed since that content was originally posted. The @ is now used for reference members, and can be an enforced re- quirement. > #x 'before value of x'? During an assignment, it allows the value to be conveyed with its before-assignment value, such as "if ((x == f()))" would now return the value of f(x), but it allows the prior value of x before it was assigned. > ##x reset something or other Allows the before value to propagate through the expression from that point forward, even though it's now been assigned a new value. > #= ? Another syntax for #x, one which is specified on the equal operator. > i|++ I think still increment Yes. It adds a visual differentiation to let the person know the value being used is before the increment. It's only for postfix operations, since it really is two operations. I've also added "bit = x?<<;" to do a bit scan and report the position where the first bit is set. Same with "bit = >>?x;" to scan down from msb to lsb. I've also added ^ parent pointers, so you can reference an encapsulating structure when you know the pointer or variable you're referencing is contained in a parent structure. >> // Using divide-modulo >> divide_value = a /% b : remainder; > (Your use of ":" interferes with "?:" if you still have that.) The ?: syntax has the ?, then the colon. This syntax only has the colon. >> ability to rotate a sub-portion using start#length syntax, as >> in <<7#4<< > << or <<<? The syntax when you use n#m is two before, two after, so it would be more like <<<<, but with the n#m injected in the middle. >> y >>>= 5 : carry; > And yet one more use of ":". And another example where two things are > modified in the same expression. (What happens with 'y>>>=5:y;' ?) Everything in CAlive follows the logical sequence of operations. The code "y >>>= 5 : y;" will be processed in operator terms. The : y is an assignment, so after y is loaded, rotated through carry, it will store the result of the rotate into y, then it will overwrite y with the 1 or 0 from the carry? bit. -- Rick C. Hodgin |
Bart <bc@freeuk.com>: Dec 31 09:05PM
On 31/12/2018 19:22, Rick C. Hodgin wrote: > It conveys more clearly you're looking for a 13/10 (CR/LF) pair in two > variables, where as c1 == 13 && c2 == 10 breaks it out and it's not > completely clear. In my dynamic language, there is no specific operator like this, but there are several ways of expressing that using existing features: if (c1,c2) = (13,10) then # compare two lists if c1..c2 = 13..10 than # compare two ranges (ordering # doesn't matter here) case (c1,c2) when (13,10) then # test 1st of several pairs Such syntax can be adapted for static code. The advantage is that is much clearer what is being attempted. > I don't remember these. I think they were going to be nested comments. > I've since changed the syntax to be /+ and +/ to follow D's syntax. >> [x] Same as *x Assuming you are still using * from C, that means that for dereferencing a pointer to struct member, you can use: (*p).m p->m m<-p [p].m p~~m For dereferencing a double pointer to a struct member, the choices are: (*(*q)).m (*q)->m m<-(*q) [[q]].m [q]->m m<-[q] q~~m # ??? You see the problem? The syntax I use has ONE way to dereference a pointer (postfix "^"), and ONE way to select a member ("."): These examples must be written p^.m # one pointer level, one ^ q^^.m # two pointer levels, two ^ Both access one member, so both have one ".". Take out member select: p^ # access the whole struct q^^ Try and take out the member select part of the 10 or 12 examples in your syntax; you can't just remove the ".m", because most of them don't use it. C syntax has always been a mess that way. Your additions make it worse. > Each has a particular purpose. ~|utility|~ for ad hoc code. <|logic|> > for decisions, or responding to flow control. [|definition|] for def- > ining things. (|reference|) for referencing things. Who's ever going to remember that lot? And don't tell me the last two, /|...|/ and \|...|/ aren't going to get mixed up, unless that was a typo and the last was meant to be \|...|\ (although all of them are a complete pain to type). To add attributes, just have the ONE syntax. The name of the attribute will tell you which kind it is. > Pointers can go either way a->b or b<-a. It's provided to give con- In Algol 68, p.m or p->m would be written as m OF p. (There is no explicit dereferencing.) But it has just the one choice.) Most languages went with variations on p.m. > is an explicitly created underscore variable name in scope. If you > create "char* x" there's an implicit _x which is the unsigned integer > equivalent value that can be used. Say again? I expected you to say that _x means *x, some syntactic sugar. You mean that _x means '*(unsigned char)x'? (My old language could do the first example like this: ref char x ref. char _x @x char c:='A' x := &c print x # display pointer address print x^ # display A print _x # display A Again, features of more general use. The "." in the second line indicated an auto-deref point. This has now been dropped, while @ (equivalence) only works for a native target.) > An immediate evaluation of x to 0, and returns true or false. It is > not required, but has utility in something like "if (x? == validState)". > It's the same as "if ((x != NULL) == validState)". I actually have this in the form of 'istrue'. But it is so rarely used that I had to try it to see if it was available in user code. In any case, C programs can use 'if (!!x)' for exactly this purpose. > lbar or rbar member is typically set at instantiation, and then > not altered. It's designed to provide a visual cue that this data > is different than other oft-changing data. Ugh. How about some features that simplify coding and make it easier to write, read, and understand? > its before-assignment value, such as "if ((x == f()))" would > now return the value of f(x), but it allows the prior value > of x before it was assigned. I think this was discussed before in this group. No one could come up with a suitable syntax for it, and #x isn't it. It's a kind of assignment inside an expression, which returns the value of the lhs before it was assigned to. > I've also added "bit = x?<<;" to do a bit scan and report the > position where the first bit is set. Same with "bit = >>?x;" > to scan down from msb to lsb. What's the point of all these cryptic symbol that might be used once in a blue moon? There would be so long between each use, that you will have long forgotten what x?<< was ever supposed to be. x64 calls these ops BSF and BSR. Or bitscanforward and bitscanreverse. Just use those names, and no one will ever need to scratch their head about them. > I've also added ^ parent pointers, so you can reference an > encapsulating structure when you know the pointer or variable > you're referencing is contained in a parent structure. This is typical of your explanations that I have to read several and still can't grok the meaning or purpose of your feature. Maybe I am particularly thick, or not very receptive to new ideas. Or maybe I am fairly typical and this is a poor feature that is hard to get your head around. >> (Your use of ":" interferes with "?:" if you still have that.) > The ?: syntax has the ?, then the colon. This syntax only has > the colon. Can /% be used anywhere an expression can be, or only in conjunction with "="? If the former, than /% and ?: can be used in the same expression and there can be clashes. Even if only as above, then someone can write: x = a ? b /% c : d ? e @ r : d; I think the problem is clear. -- bart |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Dec 31 04:32PM -0500
On 12/31/2018 4:05 PM, Bart wrote: > when (13,10) then # test 1st of several pairs > Such syntax can be adapted for static code. The advantage is that is much > clearer what is being attempted. I like your language, Bart. I think you have some interesting ideas and perspectives. > /|...|/ and \|...|/ aren't going to get mixed up, unless that was a typo and > the last was meant to be \|...|\ (although all of them are a complete pain to > type). The last two are not designed to be typed by people. They are unique identifiers used by the compiler and GUI editor for the purposes of conveying compile-time information. \|cask|/ -- Side coding /|cask|\ -- Auto-injected content @|cask|@ -- Anchor cask They serve specific purposes that will be handled automatically and invisibly by the GUI editor. That's why they have that syntax. >> equivalent value that can be used. > Say again? I expected you to say that _x means *x, some syntactic sugar. You > mean that _x means '*(unsigned char)x'? char* x = "Hi, mom!"; x was assigned an address by the compiler to reference that data. Let us suppose it was 0x123456. That means printf("0x%x\n"), _x) would print out 0x123456. > In any case, C programs can use 'if (!!x)' for exactly this purpose. Yeah, and I still don't know what that operator does. :-) I think the x? conveys information similar to what we see in assembly, with the carry? flag, sign? flag, zero? flag, etc. It's actually where I got that inspiration. >> is different than other oft-changing data. > Ugh. How about some features that simplify coding and make it easier to > write, read, and understand? I have those too. And I would argue these do make it easier, because the editor can reveal the -| as a -> and put the variables in use in another color, so it's more clear they're not oft used. They can also be declared that way when created using [|lbar|] and [|rbar|] definition casks (to define something, an attribute about their data, type, or in this case, utility). It's all designed to make it easier to read in the editor. > suitable syntax for it, and #x isn't it. > It's a kind of assignment inside an expression, which returns the value of > the lhs before it was assigned to. Yes, it's like (auto t = x, x = f(x), t). #x is an excellent syntax for it, Bart. :-) If I had an anchor syntax, I would use it as I think that would be a better symbol. > forgotten what x?<< was ever supposed to be. > x64 calls these ops BSF and BSR. Or bitscanforward and bitscanreverse. Just > use those names, and no one will ever need to scratch their head about them. #define BSF(x) x?<< #define BSR(x) >>?x Done. > Maybe I am particularly thick, or not very receptive to new ideas. Or maybe I > am fairly typical and this is a poor feature that is hard to get your head > around. It allows you to pass in a single variable to a remote function, and gain access to it, it's parent, its grandparent if you know the scope it comes from, and all other variables of that struc or class relative to it. It's a notable stack saver. > Can /% be used anywhere an expression can be, or only in conjunction with > "="? If the former, than /% and ?: can be used in the same expression and > there can be clashes. It currently has no syntax for use anywhere outside of an explicit equal assignment as above. > Even if only as above, then someone can write: > x = a ? b /% c : d ? e @ r : d; > I think the problem is clear. That syntax is not allowed presently. I don't have a good syntax for using it as a stand-alone operator. It only makes sense with the double-assignment. I suppose it could use: {a /% b : divide_value, remainder}; That might work. I'll think about it. It might be better defined for CAlive in a cask: (||a /% b | divide_value | remainder ||) That way it's encapsulated no matter where it appears. Casks are always in this format: (|| left | middle | right ||) The ends determine what it is: () reference [] definition <> logic (like a flow chart) And the ~|utility|~ cask injects arbitrary code. If you only have a middle, it appears as: (|middle|) If you have a left and middle, it's: (||left|middle|) If you have a right and middle, it's: (|middle|right||) If you have all three, it appears as: (||left|middle|right||) It's very straight-forward, it's just not well known (yet). :-) -- Rick C. Hodgin |
Keith Thompson <kst-u@mib.org>: Dec 31 01:34PM -0800
Bart <bc@freeuk.com> writes: [...] > Looking through your CAlive newgroup articles, I can see these new > operators and symbols, in addition to those above: [...] Oh, there's a CAlive newsgroup? Wouldn't that be a better place to discuss CAlive than comp.lang.c *and* comp.lang.c++? -- Keith Thompson (The_Other_Keith) kst@mib.org <http://www.ghoti.net/~kst> Will write code for food. "We must do something. This is something. Therefore, we must do this." -- Antony Jay and Jonathan Lynn, "Yes Minister" |
fir <profesor.fir@gmail.com>: Dec 31 04:10AM -0800
W dniu poniedziałek, 31 grudnia 2018 12:46:31 UTC+1 użytkownik fir napisał: > do if(s) > { > } while(p) probably most full form would be something like that if(s) do { } if(p) repeat or if(s) do { } repeat while(p) though those keywords exact naming is a matter of language taste, also tthere are verious posibilities of chosing shortcuts to this full form and c had made some (not exacly those most fortunate) (also tehre is mentioned option to put some code in between those heywords and bracers /////// this option of using such things as for(static int ini = 0; !ini; ini = 1) { //.... } instead of static int initialised = 0; if(!initialised) { //.... initialised = 1; } is separate domain ; ifis for look like i said more idiotic but the advantage is it is compact, it visueally 'compacts' some spreaded pattern ant this is advantage hovever at least the ordes should be changed as i said for(i<100; int i=0; i++) is no doubt better also there is an option of for(i<100) { int i=0; //.... i++; } this is possible to consider, this rule local is not seen higher is posible to deny (its hovever not a proposition, i say only it may be cnsidered) note also using do repeat makes it possible to write loop without bracers do repeat and it better than for endf and that things becouse this "endf" is not physical just fat form of "}" and here this repat is machine-physical and that makes things better (fir) |
fir <profesor.fir@gmail.com>: Dec 31 04:53AM -0800
W dniu poniedziałek, 31 grudnia 2018 13:10:26 UTC+1 użytkownik fir napisał: > repeat > and it better than for endf and that things becouse this "endf" is not physical just fat form of "}" and here this repat is machine-physical and that makes things better > (fir) so the question is thet, so what could be the cleanest form of loop in c after that what was said, are im able to answer that? im not sure in fact if using full if-do-repeat-while schem there are two places where you can put loop code after do or after repaat before while and this second option seems gramatically better do int i=0 repeat i++ while i<100 do int i=0; repeat printf("\n%d", i); i++; while i<100; here do works more like setup only dosnt seem to much quick to eye compared to for(int i=0; i<100; i++) printf("\n%d", i); or more better for( i<100; int i=0; i++) printf("\n%d", i); but logically there is something in it do(int i=0) repeat { printf("\n%d", i); i++; } while (i<100) do(int i=0) printf("\n%d", i); repeat (i++) while(i<100) i dont know |
Siri Cruise <chine.bleu@yahoo.com>: Dec 31 05:13AM -0800
In article <f6636e54-5d8a-4c93-b531-588f377e3fb0@googlegroups.com>, > > this shows btw that someone if would be like in jjoking mood could turn all > > ifs in program into fors 'if (p) s' is equivalent to 'for (bool trip=true; trip && (p); trip=false) s' > do //loop > { > } The simplest form of a revised algol 68 loop is 'do series od'. Djiskstra's notion is do p1 then s1 else p2 then s2 else ... else pn then sn od if q1 then t1 else q2 then t2 else ... else qn then tn fi Repeat while any pi is true, and choose any i such that pi is true to evaluate si, otherwise terminate the loop. The do has no value. If any of the qi is true, and choose any i such that qi is true to evaluate ti. The value of the if is the value of ti. If no qi is true, the value of the if is undefined. -- :-<> Siri Seal of Disavowal #000-001. Disavowed. Denied. Deleted. @ 'I desire mercy, not sacrifice.' /|\ The first law of discordiamism: The more energy This post / \ to make order is nore energy made into entropy. insults Islam. Mohammed |
fir <profesor.fir@gmail.com>: Dec 31 05:17AM -0800
W dniu poniedziałek, 31 grudnia 2018 14:13:52 UTC+1 użytkownik Siri Cruise napisał: > > > this shows btw that someone if would be like in jjoking mood could turn all > > > ifs in program into fors > 'if (p) s' is equivalent to 'for (bool trip=true; trip && (p); trip=false) s' it would berather if(x) -> for(; x; break;) i not tested it though ;c |
fir <profesor.fir@gmail.com>: Dec 31 05:29AM -0800
W dniu poniedziałek, 31 grudnia 2018 14:13:52 UTC+1 użytkownik Siri Cruise napisał: > If any of the qi is true, and choose any i such that qi is true to evaluate ti. > The value of the if is the value of ti. If no qi is true, the value of the if is > undefined. i thinked on those loop forms yet and such forms like this 1) repeat beep(); 2) if(timer<100) repeat beep(); 3) while(timer<100) repeat beep(); 4) repeat beep() while(timer < 100) 5) do beep() if (timer < 1000) seem ok, this 2 and 3 difference is intended that if checks only once then repeat, while 3 checks in each loop turn the 5 is not loop itself but rightside if it is it that has its condithion written just in rightside do printf("kotek") if(toaday==sunday) that cou be possibly useful though om not sure if that if should be not a bit diffrent keyword to secure no confusion the problem is those forms aboe look good but in the case of most popular for int i = 0 to 100 id dont look to much good maybe this means that there is an eed of saying about normal loops and compact loops like c-for is compact-loop (and possibly also very compact loops which i want to heve for long time like fori(100) iterates on i o to 100) |
Siri Cruise <chine.bleu@yahoo.com>: Dec 31 06:12AM -0800
In article <356594ad-03a8-4e4a-a1b9-ae6242967875@googlegroups.com>, > if(x) -> > for(; x; break;) > i not tested it though ;c #include <stdio.h> int main (int argc, char **argv) { for (int j=0; j<10; j++) for (int k=0; !k; break) printf("%d %d\n", j, k); return 0; } t.c: In function 'main': t.c:4: error: expected expression before 'break' =========================================== #include <stdio.h> int main (int argc, char **argv) { for (int j=0; j<10; j++) for (int k=0; !k; ({break; k=1;})) printf("%d %d\n", j, k); return 0; } @ a.out 0 0 -- :-<> Siri Seal of Disavowal #000-001. Disavowed. Denied. Deleted. @ 'I desire mercy, not sacrifice.' /|\ The first law of discordiamism: The more energy This post / \ to make order is nore energy made into entropy. insults Islam. Mohammed |
fir <profesor.fir@gmail.com>: Dec 31 06:20AM -0800
W dniu poniedziałek, 31 grudnia 2018 15:12:19 UTC+1 użytkownik Siri Cruise napisał: > } > @ a.out > 0 0 seems like its idiotic error, yet if you may dodge it by writing something more stupid, as accepting ({break; k=1;}) where break; causes error seems much stupid ah, i see that break was counted probably as external loop break (?) not internal loop one. lol that seems language or compiler error, this break logically belongs to internal loop imo |
fir <profesor.fir@gmail.com>: Dec 31 06:52AM -0800
> enter { related_code_if_block_entered1 } > { > } this scheme seems idiotic but yhe fact is c uses it (in a form of for(setup; condition; final) to add some compactness to loops that without that are not so quick-for -eye fact tjat c uses it dont mean hovever it is not idiotic, imo c needs normal not-compact loops and possibly need extremally compact loops like for i(100) {} or maybe even shorter yhis middle form hovever is some option, named parts are also some option though knowing hodgin crappy language i rather see ho disaster he can build with that (yuck) |
fir <profesor.fir@gmail.com>: Dec 31 07:08AM -0800
W dniu poniedziałek, 31 grudnia 2018 15:52:44 UTC+1 użytkownik fir napisał: > for i(100) {} or maybe even shorter > yhis middle form hovever is some option, > named parts are also some option though knowing hodgin crappy language i rather see ho disaster he can build with that (yuck) yet i repeat what i said, which is quite banal, normal sentence but its just important: when making language you may do a lot of things, (more or less good or idiotic ) trouble is not to put there what comes to sombodys mind but only put those absolute top good ones, speaking rougly (i mean those to which you or anybody cant just find better, also speaking roughly ).. hodgin way is to put any insane crap that he produces on big stream hovever, remembering the above, some not absolutely downnish ideas can be considered as an ideas and matter on thinking and there is some value in seeing those options (buit still you would better know whats good and why, and whats bad and whu, too ;c) |
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Dec 31 10:20AM -0500
On 12/31/2018 9:52 AM, fir wrote: >> { >> } > this scheme seems idiotic... The code would actually be used with more lines of code, conventionally. I'm also not sure I like the syntax. It's confusing with many { and } characters, even with indentation. I'll have to think about it. One thing CAlive does allow is the use of { or {{ for every block, along with its mated } and }}. Maybe this syntax would work better. CAlive already uses the | prefix characters for related header information: if (some_test1) | | in {{ | // Multiple lines of code here | | }} out {{ | // Multiple lines of code here | | }} enter {{ | // Multiple lines of code here | }} | { // Normal if code goes here } Makes it clearer at least, especially if the editor performs some special syntax highlighting on the {{ and }} different than the { and }. CAlive currently uses: function name | params int a, int b | returns int r { r = 42; } It allows you to define things related to the above thing using the | character. CAlive also allows the ability to relate code using the ||| symbol, which is ignored as a whitespace, but allows the grouping of things in source code visually: if (state == HALT_BUTTON_PRESSED) { |||||||||| |||| Stop -- Stop current operations ||| reset_controller(); ||| reinitialize_controller(); ||| home_controller(); |||||||||| |||| Flush -- Make sure no half-completed instructions are in queue ||| flush_communications(); ||| send_ready_signal(); |||||||||| |||| Reset -- Reset the control panel ||| acknowledge_state(); ||| clear_halt_button_flag(); } This use of ||| is a visual syntax-in-text-file format of a feature my editor will introduce, which is the ability to code horizontally, rather than just vertically. These lines group things into logical casks, which are then manipulated on-screen like this, with the ability to collapse them into operations: |||||||||| _______\ |||||||||| _______\ |||||||||| |||| Stop / |||| Flush / |||| Reset They appear visually, and are linked by lines showing flow. It allows much more compact coding on-screen, with more information, and it's more visual. You can single-step debug at this level without going into the details of the related code lines. In addition, I've introduced something called side coding, which allows you to code a line like this: <left>Something<sc>if (state == HALT_BUTTON_PRESSED)<right>Something else It then translates it logically to this: Left Source Code Right ------------+-----------------------------------------+--------------- |Something | if (state == HALT_BUTTON_PRESSED) | Something else So you can have your source-code logically interspersed with any kind of comments, compiler-injected notes, etc. They do not affect the actual code being compiled, but they augment what the developer sees. The same kind of ||| block grouping can be used there as well. ----- As I say, CAlive is a comprehensive design, and it's for a new type of developer. It will take the way they think about coding to a new level. It will still provide C/C++-like abilities, but it will take the developer experience to a whole new level. -- Rick C. Hodgin |
fir <profesor.fir@gmail.com>: Dec 31 07:36AM -0800
W dniu poniedziałek, 31 grudnia 2018 15:52:44 UTC+1 użytkownik fir napisał: > yhe fact is c uses it (in a form of > for(setup; condition; final) yet there is potential optio0ns to allowing defining some kind of generalized functions that could take blocks of code (that direction was revently written on clc) this way one could fedine sometjing like for itself void deformed_for(block setup; block condition; block loop_epilogue) { block content; } : { steup; while(condition) { content; loop_epilogue; } } this might be than maybe more sane (maybe) [thsi above only being draft as it would need toi be done probably slightly different, but this is an option and maybe could have some interesting usaecases, im not sure) |
David Brown <david.brown@hesbynett.no>: Dec 31 06:09PM +0100
On 31/12/2018 05:21, Ralf Goertz wrote: >>> should say "For what are you looking?" instead? >> Yes, that is correct. > Hm, grammar girl seems to have a different opinion: https://www.quickanddirtytips.com/education/grammar/ending-a-sentence-with-a-preposition That article seems to be saying two things - both of which are reasonable, IMHO. One is that it is common usage - and therefore part of the language - to end a sentence in a preposition when the alternative is particularly awkward. The other is that in some cases, the preposition is part of a phrase, rather than joining two things. What you really should avoid is prepositions that are either superfluous, or leave information unsaid. For example, "I hadn't read about that before". The "before" means nothing here - before what? The sentence would make more sense as simply "I hadn't read about that", or alternatively with more information, such as "I hadn't read about that before yesterday". > rule at school.) Interestingly, for me both ending with a preposition > and splitting an infinitive feel very "English" probably because there > is no way you could use either construct in a German sentence. English grammar is based on a mix of Germanic and Latin grammar, with some of its own variations. In both German and Latin (AFAIK) infinitives are formed by verb endings - there is no way to "split" them. This may be the origin of the rule in English. |
rbowman <bowman@montana.com>: Dec 31 11:50AM -0700
On 12/30/2018 09:21 PM, Ralf Goertz wrote: > Interestingly, for me both ending with a preposition > and splitting an infinitive feel very "English" probably because there > is no way you could use either construct in a German sentence. Is 'Wo gehen Sie hin?' or splitting 'davon' acceptable? I have the opposite problem to you. When I read Schwedenkrimi I'm not sure if it is acceptable current usage or just crime novel slang. ( Scandinavian crime novels usually are translated to German before English, if they ever do get translated.) |
rbowman <bowman@montana.com>: Dec 31 12:06PM -0700
On 12/30/2018 09:43 PM, Ralf Goertz wrote: > Really? Fraktur was not taught at my time in German schools, I had to > learn it on my own and I only did it because we had some old books I > wanted to read. The US schools hadn't quite caught up in the early '60s. The copies of 'Emil und die Detektive' we had might have been pre-war. Our teachers were in their '50s so they were definitely pre-war. In college the focus was on technical literature and that was all in Roman type. The assumption for engineering students was a lot of literature would be published in German. The reality, for better or worse, was German engineers and scientists learned English. |
rbowman <bowman@montana.com>: Dec 31 12:22PM -0700
On 12/31/2018 10:09 AM, David Brown wrote: > some of its own variations. In both German and Latin (AFAIK) > infinitives are formed by verb endings - there is no way to "split" > them. This may be the origin of the rule in English. Not necessarily infinitives but German makes an art form of verb splitting. In a complex sentence the main bodies of the verbs pile up at the end, with the tense signifier as a place holder in the sentence. In programming speak you push a bunch of qualifiers on the stack and then pop them off at the end to figure out who was doing what when. It's been a long time but iirc Latin has a complex system for forming infinitives depending on the tense and voice. |
Horizon68 <horizon@horizon.com>: Dec 31 10:09AM -0800
Hello, Here is my poems.. I am a white arab from Morocco who speaks and writes arabic and french and english, here is all my poems of love, i have thought them in arabic and also wrote them in english , read them carefully because they are also full of wisdom, you can also share them with your friends, i will also invite you to read all my following poems of love listening at the same time at this really beautiful song of Robert Charlebois called Je Reviendrai à Montréal : https://www.youtube.com/watch?v=FhhlYq13fH0 Now i will start by explaining my first poem of love below: You have to understand "mathematically" my poem of love, because you have to put it in "context", because the "context" is that i am writing it from "earth" and when i say: "You are beautiful Like the sound of the divine silence of the universe Like the immensity of the universe That remind us of the preciousness of life" So since i am writing it from earth , so when i say: "Like the sound of the divine silence of the universe" I mean that it is the universe that is "outside" of earth. You have to understand how i am thinking my following poem of love, look at it, it starts by: "You are beautiful Like the sound of the divine silence of the universe Like the immensity of the universe That remind us of the preciousness of life" I was writing this by also imagining astronauts that go outside earth (to the moon or outside earth) that are feeling this complete "silence" of the universe that is like divine(because it is a great wisdom that makes us understand) and the immensity of the universe , so by seeing this divine silence of the universe and the immensity of the universe astronauts are capable of "feeling" more correctly beauty of earth and beauty of love, and notice that when i say that: "Like the sound of the divine silence of the universe", this divine silence of the universe symbolizes also the absence of life. And also when i say: "You are beautiful Like the sound of the divine silence of the universe Like the immensity of the universe That remind us of the preciousness of life" How can i say that: "You are beautiful Like the sound of the divine silence of the universe Like the immensity of the universe" Is it illogical ? Can we say that beauty is such things ? Yes we can say it, because the sound of the divine silence of the universe and the immensity of the universe is "great" wisdom that makes us indirectly "feel" and "understand" more correctly beauty and love ! so this great wisdom is beauty ! so it is logical and mathematical. This how my poetry can be understood. And now you are capable to understand more correctly my beautiful poem of love, read again my following poem of love that is "timeless" and you will notice it.. Here is my final version of my poem of love: Like a light heart and like an angel Who returns in the silence of winter To meet your beautiful and tender soul And like streets that do not end My love for you will always be in my heart Since love is like the time of the cherries For time speaks about sun and roses For time speaks about love and joy and peaceful Then i return to you Since as bees and pretty flowers My love for you is honey and Rainbow Because you are beautiful Like the sound of the divine silence of the universe Like the immensity of the universe That remind us of the preciousness of life You are beautiful Like the wild nature who thought and created beauty Like the wild nature who thought and created love Because your beauty is perfection of beauty Who is love and tolerance Because you are like the beauty of the oasis Who defies the tourmants of the desert Because your beauty is like the precious jewels Like the emeralds And like the rubbis And like the sapphires And like the diamonds You are beautiful and still beautiful You are the greatness of beauty and love That even the infinite time Is singing our destiny with love Because our love is divine perfume Because our love is timeless Because our love is infinite future and present Because our love is like the light that soften the hearts Like the beat of the wings of the Bees and little birds Because our love is divine and greatness Because our love is made of light and sweetness Because we are prophets and we are angels That even the angels are calling us to join the Lord Because our love has already joined God and the angels Because our love is eternal life Because our love live in the Garden of Eden Because my love is arabic And your love is divine Like the divine wisdom of angels Like rose and rosemary Our tomorrow is made of light and fragrance Because our love is immense and infinite That only the greatness of God can define As we are light as the beautiful angels So approach me infinite light I want you as wants us God Himself Because we will never die Because we are destiny of absolute love. Thank you, Amine Moulay Ramdane. == Here is my next poem of love: Hello, As a beautiful oasis that calls us And from the depths of our souls My love will stay forever Suspended to your infinite beauty You are like the moon that caresses my soul Since your light is like happiness Who comes out of the depths of my heart And the rose and the tulip As honey and bees As well as the heat and the sun As well as the sea and its depths As well as dawn and its pretty stars As well as the greatness of the universe Are all symbols of our union of love Because the pretty fir of our infinite Christmas is divine The nightingale sings smoothly Our love in chorus Because we are made of perfume As our life is made of light and Rainbow We are like love, joy and smiles Who are also like diamond and sapphire Who are also like Satin and Velvet Since it's like the Elixir of love Since our love is divine As dawn is beautiful and comes back And who plunges us into the secrets of our beautiful garden Like our emerald, ruby, sapphire and diamond souls We are sun and heat like lovers Your soul is a sea of pretty perfumes Where love and hope are intertwined You are like the beauty of dawn that comes back And who bathes me in the depths of our destiny Of our love which is divine Thank you, Amine Moulay Ramdane. == And here is my next poem of love: The pretty and the beautiful Look like your pretty eyes And our pretty little raft Who challenges storms and hurricanes Remember me your wisdom Because time is also to lovers Because lovers time is like a mason Who build skyscrapers! Because love is also powerful Thus the nightingale sings Our love in chorus Because love does not like war Because the sword is wound and tears And like rivers, fountains and streams The weather is like a raft! Because lightness and burden! But our love is like a pretty fir Because Christmas is our destiny And with your lovely pretty eyes You carry me on the wind and the Rainbow To drive us to a beautiful island Like our love and tenderness Rather for goods never I leave you! My sweet and beautiful goddess My sweet spring and my sweet princess Our hearts finally beat in unison Like a nice thrill and a nice song Because you are like the pretty flower that can not die! As if both of us were as one Let's be the flower and the perfum! And may infinity and depth bring us together Since our destiny has understood That the pretty Christmas fir is not cursed Because Christmas is divine Because Christmas is our destiny Thank you, Amine Moulay Ramdane. == And here is my next poem: Hello, Love the night and love the day This beauty and this contrast attracts Because beauty also speaks to us wisely The dawn also leads me to you Because of the dawn of our love That reminds me of the beautiful stars of the sky And reminds me of the divine silence of the universe And that's bring me closer to you Because your beauty is as the beauty of the dawn that comes back And do you feel the heartbeat of a little bird? It reminds me of your delicacy It reminds me of your wisdom Because a little bird is also beauty and wisdom And the depths of my love It is like water and bread Because wisdom comes with wisdom of passing time Because wisdom comes with wisdom of love And the weather is cold As if I hear your voice The sand of the desert is immense As I am small in front of our divine love Talk to me again and again Because the time is going away Because the time is ours As if I thought of our happiness Take me again and again in your arms The time of love is like divine Because the pretty and divine Christmas fir is not the evil one Because Christmas is our destiny The sea tells me about you Like the depths of our love And the wisdom of passing time As if you were here and always here It reminds me of your kindness It reminds me of your delicacy It remainds me of our divine love Because wisdom carries us in his arms Because wisdom is wisdom of love Thank you, Amine Moulay Ramdane. == Here is my final version of my next poem of love.. Read again my new extended poem of love, i have made it more beautiful and it is the final version of my poem of love, my below poem of love is like also a part of my philosophy, my poem is not just symbolism , but it is a part of my philosophy, because beauty symbolize perfection that also helps and solve problems, so from for example beauty of the tulip or the rose or the oasis you can feel the wisdom of life that life , from for example natural selection, has given more perfection that is also capable of solving problems and helping people, so "indirectly" from the symbolism of my poem of love , you get wisdom that shows what's love, because perfection of today that helps and solve problems is also love. Please read below my final version of my poem of love that is more beautiful, listening at the same time at this beautiful song: https://www.youtube.com/watch?v=Wdo-ZiHqbls&list=RDWdo-ZiHqbls&start_radio=1 Hello, Don't you see what's love ? The body of a little bird And the songs of a little bird It's like ocean of divine wisdom It's like the divine silence of the universe That's how they talk to me And so is the wisdom of life Since do not you hear the song of the nightingale? Do not you see the beauty of a tulip? Do not see the beauty of a blue sky ? Do not you see the beauty of the rainbow, clouds and sun ? It is like the diamond in your soul Do not you see the beauty of a rose? Do not you see the beauty of an oasis ? Who defies the tourmants of the desert It is too like the diamond in your soul And look at the beauty of the dawn that comes back With its beautiful stars and its divine silence of the universe It is as it is singing love to us like the pretty nightingale ! Do not you feel its wisdom? Do not beauty symbolize perfection ? And perfection also helps the sad as the desperate As the light of my poetry Is love for you Gushing from the bottom From my heart This is how love is so done Since love is coming from the stars Love is coming from the Big Bang Because love is heat and love is sun Because love is a light that carry our hope Because survival is like diversity Because life needs precious jewels And love is precious jewels So the light of the stars as a resonance In a life of tenderness in abundance And beauty of emerald , ruby , sapphire and diamond As the light for our way of life Because love is passion Since like a pretty candle Life tells us about swallows Since life is like a damsel Since life is contrasts of our reason Because the candle is light and passion Like the passion that consumes us Through silence and thunder Because the thunder reminds us That it's effervescence like bees And through the seasons of our mirror Where love and joy are the strength of our hope Because life is not a gift Because life is like a raft Because the seasons call the reason And the reason calls tolerance and compassion This is why I live in you And you live in me Because it is our love Because you are like the beauty of the oasis Who defies the tourmants of the desert Your bright hair Like gold and Satin And then a blue sky With our hearts And then a depth In our life of love And then an infinity With our strong and sincere love That neither the grave Neither the storms Can disturb or beat Because our love is strong and eternal Since our love is also a reminder For today and future generations As I am seeing the intensity of love In our warm souls It's like the oasis and the sun Since our love is like a perfume Since I see the silence In your heart of patience I see the whiteness In your savior hands I see passion In your spirit of reason I see the relevance In your eyes of romance I see the time ahead In our destiny in alliance Because love is hope Because the light of the stars as resonance In a life of tenderness in abundance Love is thus made of beauty and tenderness Because love is like the King and his Princess Thank you, Amine Moulay Ramdane. == And here is my next poem of love: Hello, Under the pretty stars of the universe And carry by the divine silence of the universe We will walk in the beautiful streets of our destiny Who is divine love in refrain Because our hearts are beating in armony And like a bird that flies away with joy Through the universe of secrets of love and tenderness And carried by the wind of the time of love We will unite our bodies and our souls And we will sing with love the rose flower and poppy flower That remind us of the song that surrounds us That remind us of the love song And a beautiful singing star Like our souls who breathes perfume We will bring back hope Like a happy and divine Christmas fir Who calls us until the twilight of our lives We will brave storms and hecatombs Since we are like the sun and the heat Since we are like honey and bees Because our love which unites us is divine Because beauty alone lives in our souls Because our destiny takes us to unison Like a song of love and tenderness Since the light of love has appeared Since the time of love has returned And since spring has come back And as a beautiful star who calls us On a gentle wind that takes us On the wings of a beautiful stream that is lost In the depths of our minds that lead us astray In the streets of love and tenderness And then our thoughts that go astray To the seaside shores of the sea And our eyes on the horizon Under a blue sky and foreign And our wandering souls Worn by unknown waves Bringing Love, Joy and Glee A peaceful time that runs away ... Under our bare and innocent feet And thoughts that inhabit us Like shadows of our shadows Shadows intertwined forever. And then a very gentle wind Carrier of tender murmurs Who ruffle the hair and undresses Of all its miles and wonderful aromas And a beautiful sunset With plenty of golden lights Who caress the sky of our lives Who caress your face and your emerald eyes And my words like nightingales Who come to brighten your life Full of multicolored songs |
fir <profesor.fir@gmail.com>: Dec 31 11:12AM -0800
> Because the pretty and divine Christmas fir is not the evil one though sleepy... |