2112
Legendary
Offline
Activity: 2128
Merit: 1073
|
|
January 17, 2015, 07:03:46 PM |
|
In Software Manufacturing the above pseudo code would have to be divided into two components - a looping specification and a separate specification that covers what to do within the loop. As all source code is "generated" you can't stop the resulting code from effectively being something like this:
Please elaborate your post and show how you propose to linearize your "software manufacturing" representation of this sample program. It has to have a one-dimensional representation to be really useful. All I saw in your links is this picture which (I cannot even post the link, because your Javascript & DOM are so complex that they completely don't render in Safari and in Opera I can't "Copy Image Address"). I have to transcribe the portion of the image: // [<start macros>]
#include "`{`$full_class_name`}.h"
If this is another attempt at "visual programming" then it will probably fail to provide progress in the same way as all previous attempts at two-dimensional programming degenerated into "freehand paint programs".
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 07:07:27 PM |
|
If this is another attempt at "visual programming" then it will probably fail to provide progress in the same way as all previous attempts at two-dimensional programming degenerated into "freehand paint programs".
Okay - it is not an attempt at "visual programming" at all but works more using "aspect oriented programming" methods. I can explain the details to you if you want (it isn't that hard to follow).
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 07:29:47 PM |
|
*sigh*
Expected a nice intelligent discussion starting with 18 posts already.....instead found trolls and whiners.....that is enough BTT for one day (all 5 mins of it).
Yes - but you are welcome to help further the topic with something more interesting (am sorry that I seem to attract a lot of trolls these days).
|
|
|
|
freequant
|
|
January 17, 2015, 07:32:06 PM |
|
In Software Manufacturing the above pseudo code would have to be divided into two components - a looping specification and a separate specification that covers what to do within the loop.
Sounds very much like functional programming with a recursive combinator to handle the looping using tail recursion and payload passed a lambda. Are you basing your work on some existing funtional language or starting from scratch? As all source code is "generated"
JIT compilation? Otherwise how do you deal with differences of architecture beween hosts? I'm a bit unclear about what you are proposing. My understanding so far is that you are working on a contract system using pure functional programming and just in time compilation to optimize the code so that it runs faster than a VM or interpreted stack based language and you count leveraging the nature of functional programming as side-effect free modular function objects to allow for something completely modular, and are planning on pushing that to the extreme where one would just need to connect functional boxes to do any type of program without having to actual write a program. Is that correct? PS: ok, that doesn't belong to alt-currencies, but I still think you should have this thread moved to projects. You'll get more attention from developers, and a better signal / noise ratio.
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 07:36:49 PM |
|
PS: ok, that doesn't belong to alt-currencies, but I still think you should have this thread moved to projects. You'll get more attention from developers, and a better signal / noise ratio.
If the mods see fit to move it to Projects then that is fine with me (it is often hard to know where best to start such a topic so I dropped in the Bitcoin Discussion forum to see where it would go). It is not functional programming although it does work close to that (Aspect Oriented Programming is probably the best analogy). It doesn't use anything like JIT as it actually generates C++ source code that is compiled. The efficiency is that the information passed is very minimal (think like SQL) so it can do a lot more processing with a lot less input.
|
|
|
|
freequant
|
|
January 17, 2015, 07:43:53 PM |
|
It is not functional programming although it does work close to that (Aspect Oriented Programming is probably the best analogy).
Do you have a spec of your language? It doesn't use anything like JIT as it actually generates C++ source code that is compiled.
LLVM? YACC parser generating C++ at run-time and calling the compiler? You mentionned earlier that your project is open-source. Did you already commit the code somewhere?
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 07:46:15 PM |
|
Do you have a spec of your language?
It is not a language (in any traditional sense) so that might take some time to explain (but it generates standard C++). Creating the documentation is a going to be my main task in the future - so please be patient with that (if you want to contact me more directly about the project then feel free to send me a PM). You mentioned earlier that your project is open-source. Did you already commit the code somewhere?
The project is here: https://github.com/ciyam/ciyam
|
|
|
|
Fuserleer
Legendary
Offline
Activity: 1064
Merit: 1020
|
|
January 17, 2015, 07:56:06 PM |
|
*sigh*
Expected a nice intelligent discussion starting with 18 posts already.....instead found trolls and whiners.....that is enough BTT for one day (all 5 mins of it).
Yes - but you are welcome to help further the topic with something more interesting (am sorry that I seem to attract a lot of trolls these days). Hey don't worry, I attract them just the same We're doing similar Turing complete development here with eMunie and have had many a discussion of how to solve problems just as while (1==1) { str += str; } Our interpreters run a Java/JavaScript hybrid, the bulk of the script code being JavaScript, with calls possible into native Java functions depending on the permissions granted to that script by the executor. Side stepping a lot of the technicalities, we investigated a number of ways to detect this behavior but couldn't come to a accepted method which allowed legitimate scripts to operate as intended, but malicious scripts to be detected (which was as we expected with a Turing complete implementation, but wanted to check it out anyway). Ultimately we have decided on an implementation which doesn't attempt to combat it directly via outright detection, but allows the script itself to provide meta-data which indicates how much memory it is likely to use, average time between heartbeat signals the interpreter can expect and various other metrics. The creator of the script can execute a benchmarker which generates this meta-data, before deployment, and packages it into the script header. With the parameters set, the executing nodes then have some information on expected behavior and requirements to execute. If the requirements are too great for that node, it can choose to not execute that script (Raspberry's for example), or pass it to the network for execution and receive a result, as similar to Hadoop Map-Reduce architecture. Additionally if the execution of that script exceeds the expectations, perhaps the script management module doesnt receive a heartbeat from that interpreter instance for a period of time beyond the expected average as per the meta data, that script can be terminated as each interpreter instance runs in its own sandboxed VM instance. This kind of implementation should suffice, as the issuer of the script has to provide some information on what the script requires, if it exceeds those expectations by being malicious, then its very easy to detect and act accordingly.
|
|
|
|
freequant
|
|
January 17, 2015, 07:59:19 PM |
|
Parser is handwritten!? Do you have the grammar specification of the input and/or example programs? Is the code on Github functional already?
Your site mentions that CIYAM is a linux distro but what you descibe here seems more like some sort of runtime environment. Are you booting directly into the runtime env or are these two separate projects with the same name?
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 08:00:26 PM |
|
Ultimately we have decided on an implementation which doesn't attempt to combat it directly via outright detection, but allows the script itself to provide meta-data which indicates how much memory it is likely to use, average time between heartbeat signals the interpreter can expect and various other metrics. The creator of the script can execute a benchmarker which generates this meta-data, before deployment, and packages it into the script header.
That is an interesting approach - the way that Software Manufacturing can solve the same problem is actually must easier (because the source code is *controlled* by the generation). So in a CIYAM system we don't need to do these checks (although of course you do need to check the app itself before you decide to run it).
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 08:03:07 PM |
|
Parser is handwritten!? Do you have the grammar specification of the input and/or example programs? Is the code on Github functional already?
All the code is there - the main "parser" you might be interested in is called "xrep" (there are actually a few parsers). Your site mentions that CIYAM is a linux distro but what you descibe here seems more like some sort of runtime environment. Are you booting directly into the runtime env or are these two separate projects with the same name?
The CIYAM Server OS is going to be the way to distribute CIYAM (my view is that VMs are the future).
|
|
|
|
Fuserleer
Legendary
Offline
Activity: 1064
Merit: 1020
|
|
January 17, 2015, 08:05:15 PM |
|
Ultimately we have decided on an implementation which doesn't attempt to combat it directly via outright detection, but allows the script itself to provide meta-data which indicates how much memory it is likely to use, average time between heartbeat signals the interpreter can expect and various other metrics. The creator of the script can execute a benchmarker which generates this meta-data, before deployment, and packages it into the script header.
That is an interesting approach - the way that Software Manufacturing can solve the same problem is actually must easier (because the source code is *controlled* by the generation). So in a CIYAM system we don't need to do these checks (although of course you do need to check the app itself before you decide to run it). Well, the spec of requirements for our scripting solution, and architecture, is quite different to what is currently being developed such as Ethereum and others (AT too no doubt). We have multiple execution domains/scopes, where the requirements for each domain may differ between them for the same script/s...so the solution I present is very tuned to our needs. I'm sure that with a lesser/looser set of solution requirements it could be implemented many ways, perhaps simpler.
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 08:08:19 PM |
|
Well, the spec of requirements for our scripting solution, and architecture, is quite different to what is currently being developed such as Ethereum and others (AT too no doubt). We have multiple execution domains/scopes, where the requirements for each domain may differ between them for the same script/s...so the solution I present is very tuned to our needs.
We are keen to work with any project that is furthering the concept of blockchains so if you think CIYAM can help then feel free to contact us.
|
|
|
|
Fuserleer
Legendary
Offline
Activity: 1064
Merit: 1020
|
|
January 17, 2015, 08:26:51 PM |
|
Well, the spec of requirements for our scripting solution, and architecture, is quite different to what is currently being developed such as Ethereum and others (AT too no doubt). We have multiple execution domains/scopes, where the requirements for each domain may differ between them for the same script/s...so the solution I present is very tuned to our needs.
We are keen to work with any project that is furthering the concept of blockchains so if you think CIYAM can help then feel free to contact us. Unfortunately we left blockchains behind around 2 years ago. What about channeled ledgers which are essentially many many distributed transaction trees?
|
|
|
|
CIYAM (OP)
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
January 17, 2015, 08:30:13 PM |
|
Unfortunately we left blockchains behind around 2 years ago. What about channeled ledgers which are essentially many many distributed transaction trees? CIYAM will let people create their own blockchains and their own apps on top of it. So perhaps we are not so different.
|
|
|
|
|
freequant
|
|
January 17, 2015, 08:39:01 PM |
|
Parser is handwritten!? Do you have the grammar specification of the input and/or example programs? Is the code on Github functional already?
All the code is there - the main "parser" you might be interested in is called "xrep" (there are actually a few parsers). Thanks. I'm not clear looking at the grammar how you specify loops. You have stuff to handle sets and running functions on sets, but what of the cases where you don't have a set? You create a dummy set just so that you can iterate on it? Maybe if you can point me to a good example of some basic loop which test something and quit when the test fails (like you gave in the first post), it will help me figure what in the language is to be interpreted as a loop. You answered to 2112 that you aren't using visual programming to create the programs but you also said that the paradigm doesn't require any actual programming. But looking at your example files, xrep still appears to be a form of script. Do you mean to say that the "developer" won't have to write anything in xrep to make applications? If so, in what form will the developer "develop" his application? Your site mentions that CIYAM is a linux distro but what you descibe here seems more like some sort of runtime environment. Are you booting directly into the runtime env or are these two separate projects with the same name?
The CIYAM Server OS is going to be the way to distribute CIYAM (my view is that VMs are the future). That's an interesting approach. If you ship the solution as a bootable iso, you have solved at the same time the problem of maintaining compatibility accross hosts since the host is standard so less work to make your make / autoconf and making sure the thing stays functional accross distribs and versions of linux, and also solved the problem of having to trust that the OS itself is secure (which it isn't in the overwhelming majority of cases). It also easier to run the thing as a VM.
|
|
|
|
freequant
|
|
January 17, 2015, 08:44:01 PM |
|
Other than price / market feedback (markets aren't efficient, specially on the cryptoscene), do you have any other reason to believe that MaidSafe isn't going to meet their objectives?
|
|
|
|
Come-from-Beyond
Legendary
Offline
Activity: 2142
Merit: 1010
Newbie
|
|
January 17, 2015, 08:46:46 PM |
|
Other than price, do you have any other reason to believe that MaidSafe isn't going to meet their objectives?
Meet objectives != Lead the way. I think their chance to meet objectives is quite high.
|
|
|
|
freequant
|
|
January 17, 2015, 08:59:22 PM |
|
Unfortunately we left blockchains behind around 2 years ago. What about channeled ledgers which are essentially many many distributed transaction trees? CIYAM will let people create their own blockchains and their own apps on top of it. So perhaps we are not so different. Perhaps a good start would be to reimplement Bitcoin over your plateform. Easier said than done, but without that as an exampe, I doubt anyone less knowledgeable of your system would manage to build a whole blockchain based application. When you say that people can develop their own blockchain, do you mean it in the Bitcoin sense of an actual chained list of blocks, or in the more general sense of a general datastructure / container with cryptographic operations to enforce determinically precedence of concurrent modifications? Another question regarding extensibility: do you plan to allow interfacing the high level code with custom modules written in a lower level language (C/C++ for instance)? do you plan to provide some GUI building toolkit usable directly from within your high level language? Many questions. The best would be to have some presentation page and tutorial pages that cover the concept, features and distinctive advantages of CIYAM so that people can make their own idea of whether they would have a use for that. Actually, for a 14-year project, I'm a bit surprised that there isn't much more documentation. If that's not asking too much, in what context did you develop this framework? Do you have a particular business model / pricing / licensing for the software or are you providing that totally free without any strings attached?
|
|
|
|
|