CX is the next generation programming language that goes beyond smart contract that was developed by the skycoin team that will be used to develop Skysuite applications.

Apart from using it to design and program smart contracts, CX can be used to create distributed applications, video games and program FPGA chips.

Smart contracts help you exchange money, property, shares, or anything of value in a transparent, conflict-free way while avoiding the services of a middleman.

The best way to describe smart contracts is to compare the technology to a vending machine. Ordinarily, you would go to a lawyer or a notary, pay them, and wait while you get the document. With smart contracts, you simply drop a cryptocurrency into a ledger and your escrow, driver’s license, or whatever drops into your account.

A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions without third parties. These transactions are track able and irreversible .

More so, smart contracts not only define the rules and penalties around an agreement in the same way that a traditional contract does, but also automatically enforce those obligations.

The aim of smart contracts is to provide security that is superior to traditional contract law and to reduce other transaction costs associated with contracting.

Smart contracts implemented over a cryptocurrency blockchain do, however, have important advantages over incumbent services. First, they function on a decentralized, open network where trust is established using deterministic software rather than reputation or law. In addition, because a blockchain publicly records transactions on a single ledger, it allows economic activity to be coordinated more easily. This could increase how well markets operate globally by, for example, enabling companies that are part of the same supply to chain to coordinate production in response to market conditions.

Smart contracts could therefore reduce the need for litigators, judges, and arbitrators.

The CX scripting language is a scripting language for blockchain development and is part of Skycoin’s overall development. It is the first language to ensure deterministicness at the language level.

It is designed specifically for skycoin ecosystem including any blockchain running on fiber.

Determinism refers to the same piece of code. No matter what kind of hardware, operating system or other environment it is running in, as long as the same data is input, the output will always be the same, providing a more reliable guarantee for smart contracts running on the blockchain.

For any node, determinism is both a network client and a router. The underlying protocol allows for the rapid formation of optimal routes between nodes, establishing a two-way communication link between the two nodes. The destroyed link or node function will be quickly replaced by other nodes or links, so the impact of attacking the network will be very limited.

Users contribute Skycoin by contributing resources to the Internet, and pay Skycoin to obtain network resources. The long-term goal is to achieve Internet resource sharing.

CX is both a specification and a programming language. The CX specification does not impose syntax, but rather the structures and processes that a CX dialect must implement in order to be considered a CX.

As a consequence, one could implement two CX dialects, one with a Lisp-like syntax, and another one with a C-like syntax.

This under laying language is called CX Base, or “the base language.”

CX is designed to embrace a new programming paradigm based on the concept of affordances. Affordances allow a program to know what actions can and cannnot be done by it. For example, Skycoin can ask the program what arguments can be sent to a function, and the program will return a list of possible actions. After having decided what action from the list is appropriate, they can choose one of the options and the program will apply the chosen action. As a consequence of CX’s affordance system, a genetic programming algorithm is built and provided as a native function, which can be used to optimize the program’s structure during runtime.

The CX specification states that both a compiler and an interpreter must be accessible to the programmer. The interpreter can be accessed through a read-eval-print loop, where the programmer can interactively add and remove elements to a program. Once the program has been finished, it can be compiled in order to increase its performance.

The typing system in CX is very strict. The only “implicit casting” occurs when the parser determines what is an integer, a float, a boolean, a string, or an array. If a function requires a 64 bit integer, for example, one has to use a cast function to explicitly convert it to the required type.

Lastly, a CX program can be completely serialized to byte arrays, maintaining its execution state and structure. This serialized version of a program can be deserialized later on, and continue its execution in any device that has a CX interpreter/compiler.

CX aims to bring digital hardware design within reach of any developer. The language focuses on being intuitive, easy to learn and use, and elegant; CX try to honor the principle of least surprise.

An application written in CX is described as a set of sequential tasks connected together and executed concurrently, which is probably the most natural way to describe parallelism that corresponds to how hardware behaves. The language has a familiar C-like syntax (but is not based on C), features strong bit-accurate static typing, and allows cycle-accurate behavior to be implicitly expressed with structured code.

CX is a clean slate design of a programming language rather than being hacked on top of an existing language inheriting decades of history ©, or being a subset of a language that is ill suited to hardware (pretty much any software language). It has been designed exclusively for creating digital hardware systems and applications in accordance with the needs of software and hardware engineers.

It’s written from the ground up to make it easy to write blockchain applications. Considering the current scarcity of blockchain developers, and the cost associated with them, skycoin designed CX so that any Python or Golang developer can start writing applications in CX with only a few hours of training. Therefore, the pool of blockchain application developers just expanded to the hundreds of thousands of developers who already know Python and Golang. Skycoin thinks this is necessary so that blockchain can be adopted en masse by corporations as well as individuals.

When skycoin designed CX, they looked at the problems seen with Ethereum and Bitcoin and fixed them.

Golang is resistant to remote code executions, which removes an attack vector. It is deterministic as well.

The language specification is available on-line, and the language can be extended to add custom semantics and custom source transformations. By the way, the ‘X’ of CX stands for extra, CX is a language that is kind of like C + extra features.

Compiling code from hardware languages to a configuration data to be loaded into a FPGA or to logic elements to create an ASIC is a fully mastered process. Hardware compilers (aka synthesizers) are especially effective, they are able to achieve all kinds of optimizations to deliver the best Quality of Result (QoR). What matter is to provide those synthesizers with a code that respects the right set of design rules.

This is why the CX code is compiled into a beautiful, readable, synthesizable, vendor-neutral hardware (VHDL or Verilog) code. This has been a requirement since day one for us, that it remains possible to describe code in CX that is competitive with hand-written VHDL or Verilog code.

The CX code can be compiled in hardware languages and also in C for fast, accurate, execution on C compilers. More importantly, it means you can write your own tests and integrate this with anything you like. Our software generates an API which makes it very easy to intercept data and inspect a design at runtime.

CX is language to create digital hardware systems and applications, not a verification language. CX is meant to integrate seamlessly with existing verification frameworks and languages.

Focus is on building scalable applications

What cx can accomplish?

Cx being a high-level programming language compiled and interpreted, it can be used in a wide variety of branches of computer science, such as can be used to create programs that optimize processes or even create systems highly complex. Thanks to its easy and intuitive syntax, very similar to the go or python programming language, the learning curve is very short and allows developers and software engineers to focus on solving the main problem, without having to worry about the syntax.

The great speed offered by a cx program allows the development of complex systems such as: * Databases, relational and non-relational * HTTP, FTP, SSH, SMTP, DNS servers and more. * Multi-platform games * Web, Desktop and Mobile frameworks * Command line software * Transpilators, Compilers and interpreted languages * Security tools * Blockchains * Emulators * Cryptocurrencies * Libraries * E-commerce * much more

But what makes cx stand out among hundreds and thousands of programming languages created over time, is not its syntax or its great speed, are actually its main features, which are:

• The Affordances, which represent a finite set of actions that can be performed on an element of the program, for example, the programmer can describe the environment where the module is compiled and run and the module will change its behavior according to those actions.

• The serialization, which can be done even when the program is running in its interpreted or compiled form. A cx program can fully or partially serialize itself and send that serialized content over the internet into a remote computer and then resume its execution.

• Program stepping, which allows the software developer to control the execution of the program in a desired number of steps.

.

Main benefits

CX has a very intuitive syntax and very similar to that of the go programming language, which allows beginners to get into the software world to start, develop their first programs and get in touch of the world of computer science and it allows expert software developers can migrate to language, learn very quickly their syntax and special features, and start developing all kinds of systems, libraries, tools, frameworks, among other things.

This is a new language, it was created on July 15, 2017, by Skycoin which means that it will have long-term support, besides that it has a large community behind that each day is growing more and more, and that will cause it to develop over time. Apart from being a general-purpose language, the main objective of CX is to be able to integrate with technologies and tools created by Skycoin. Being a compiled and interpreted language, it offers the benefits of both and provides a large field of software development.

CX is an extremely strict, statically typed, affordance based (based upon Alan Kay’s COLA architecture), mathematically deterministic language. CX is designed to support the whole range of applications from being embedded on blockchain, to programming for GPU, FPGAs and achieving power saving and performance on next generation CPU architectures (RISC-V) which have explicit cache load/store instructions.

The skycoin Foundation is at the moment training and developing interns who are interested in acquiring and honing their skills in CX

If you want to test some CX examples, you can do it in the CX Playground (http://cx.skycoin.net/).

Get more details at https://www.skycoin.net/blog/overview/cx-overview/

https://github.com/skycoin/cx-games

https://t.me/skycoin_game_dev

Find out more at https://www.skycoin.net

Buy skycoin directly from the website @ https://www.skycoin.net/buy/

Buy from the exchanges @ Binance, Cryptopia BitRabbit, C2CX, ChaoEX

sign for skyminer waiting list @ https://www.skycoin.net/skyminer/

Facebook: https://www.facebook.com/skycoinproject

Twitter: https://www.twitter.com/skycoinproject

Reddit: https://reddit.com/r/Skycoin

Telegram: https://t.me/Skycoin

follows me on twitter https://twitter.com/bivins1

If you find the article interesting, please send your skycoin donation to

ELoYH9tHCQPi7ePsUc2v6ELkTa7vuPgC8b