This essay explores the emerging formalist and intuitionist programmer factions in the crypto community. Formalists view software development as software engineering and treat it as a branch of mathematics. Intuitionists view software engineering as software development and treat writing software as poet writes a work of art. I will analyze both approaches to programming and the security implications. #ethereum #tauchain #tau #crypto #programming **Formalist vs intuitionist factions in software engineering.** Currently the development of software is led primarily by the intuitionist faction. As a result the languages are expressive, code is less like mathematics, software is not formally modeled and verified before construction, and Turing complete is the norm. This contrasts with the formalist approach which views programs as proofs, which treats software development as an engineer or architect treats building an electronic device or a house, where precision as important, where software is to be correct by construction, where langsec is critical, where functional dependently typed languages are preferred. In a recent article about Ethereum we can see clearly the flaw of the intuitionist approach to software development. Ethereum smart contracts have flaws and in an article titled “Ethereum contracts are going to be candy for hackers”. In the article it cites an important metric for tracking code which is the bugs per line of code ratio which tracks defects. Ethereum smart contracts on average contain 100 bugs per 1000 lines of code while NASA contains 0. The article highlights the fact that smart contracts which are buggy are dangerous. **Turing complete smart contracts follow the intuitionist school of programming.** [Generative Design Paradigm](https://upload.wikimedia.org/wikipedia/commons/7/70/Generative_Design_Process.png) The intuitionist school of programming is the mainstream and as a result the choice was made by the Ethereum team to go with Turing complete smart contracts. At the time and even to this day very few people have seriously considered the drawbacks of Turing complete. The risk vs benefit ratio of going with Turing complete smart contracts clearly is not in favor of it when you look at the fact that when you choose Turing complete you lose consistency, and as a result the expenses are actually increased due to the necessity of auditing code, of checking for bugs, and of course the halting problem which Ethereum dodged with gas. Ethereum’s security is delivered through the security by isolation approach. Virtual machines, principle of least privilege, separation of powers, all are used to provide security for Ethereum. Essentially the security of Ethereum is maintained through isolation of processes but the problems still remain in that while the virtual machine may be audited by many eyes, and while the halting problem may be dodged by gas, the majority of smart contracts themselves are not being made following a correct by construction approach and any bug at all which goes undetected could result in a financial black hole for unfortunate investors. **Logically consistent formally verified smart contracts are the path of the formalist school of programming.** [Formal verification process](https://upload.wikimedia.org/wikipedia/commons/7/7b/Formal_Verification.png) https://youtu.be/UzjfeFJJseU In the formalist school of thought all programs are proofs. This is factually evident as a result of Curry–Howard isomorphism. In addition because the formalist school treats software engineering as mathematics there is a very logical approach to programming. The security of smart contracts under the formal approach is through logic itself and the fact that you have decidability. This decidability means you always get a yes or no answer and you have total logical consistency. This contrasts with the approach taken by Turing complete imperative programming languages such as Solidity which have smart contracts which can avoid infinite loops using gas but which can still have bugs, underhanded code, and behaviors which are unpredictable. Formal smart contracts are verified as correct, are fully bug proof, are fully deterministic and predictable. Fully functional dependently typed programming languages are not as well known and for this reason many intuitionist developers may not be aware that it is possible to do write bug proof code. Tauchain is the only example of the formal approach being taken in the public blockchain space to date (perhaps because it’s developer Ohad Asor is a mathematician) and while other developers apply correct by construction approaches such as what we see with the Synereo team or with Casper, these projects still are built on top of a Turing complete foundation while the Tauchain project is building a new programming formal language called Tau from the ground up. **Formalist and intuitionist factions have to join forces and work together.** [Logo of Ethereum](https://blog.ethereum.org/wp-content/uploads/2015/01/blog_header3.png) [Logo of Tau](https://pbs.twimg.com/profile_images/663462278990295042/NiioaMj5.png) It may not be necessary or realistic to expect the developer community to choose one side or the other. Ethereum developers who choose to write serious smart contracts should consider taking the formal approach. This can be accomplished through correct by construction where their software is modeled , formally specified, using a design by contract method with software such as Perfect Developer. [Design by Contract](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/2000px-Design_by_contract.svg.png) To write smart contracts in this way may take longer but it should become the standard way for financial smart contracts or smart contracts which may be used in elections such as in the Ukraine. If lives or life savings may be at stake then it makes sense to use correct by construction and to rely on formal specification even if you must hire a mathematician to write up a formal spec. **Reducing the attack surface is the goal and Tauchain may offer a synergy.** When we look at the security reasons to favor blockchain technology the idea is to spread the risk and minimize the attack surface. When the risk is centralized and there is a central point of failure in a system then it is very easy to topple the system. We’ve seen these central points of failure as central points of trust, and we keep seeing the same picture over and over again. Blockchains are supposed to minimize trust yet the current culture of the moment is a culture where we must trust core developers, curators, auditors. What Tau offers is a separation of duties where the trust is further minimized so that you do not have to trust the programmers. The synergy Tau offers to Ethereum is that the critical portions of a smart contract can be written in Tau but the less critical portion can be written in Solidity. In cases where you don’t want to have to trust your programmer as an investor you can use Tau. This may be necessary because while with Ethereum there may be a shortage of developers who can write bug free code whom you can trust with your money it might be much cheaper to get bug free code on Tau. **Code or money, which comes first?**[Logo of Tau](https://pbs.twimg.com/profile_images/663462278990295042/NiioaMj5.png) On Tauchain there is to be built a market to be called Agoras. Agoras will allow for the hiring of coders who will code directly to a formal specification. If we remember that programs are proofs, and if we understand the implications of the Tau programming language, then we discover that a fully automated process can determine whether the code meets the specification precisely. As a result of this, there is no need for the community to trust the coder and the job of the coder can become similar to what you see on Amazon Turk where money is put up, a formal spec is provided, and many groups of coders can converge to generate the code. **Conclusion** The division between the formal and intuitionist school of programming began in 1960s and over time this has led to a decreasing reliability of software. At the same time society is depending on software more than ever before and at this point in time we trust our algorithms to know us better than we know ourselves. This trust in algorithms is a trust in mathematics, and it is just like building a bridge in or structure in ancient times. In ancient times when an architect built something such as a bridge it was a common practice for the architect to stand under the bridge while chariots crossed it to prove it could withstand the weight. In the era of smart contracts written by totally anonymous developers we now have no way to trust the code and this is evident from the controversy around Truecrypt, around Tor, around OpenSSL. When software must be written without trust then you gain benefit from the formal approach yet when software is written with trust then the developer who wrote it is held accountable. A formal approach reduces the risks for both developers and for the users in environments of low trust. References 1. http://vessenes.com/ethereum-contracts-are-going-to-be-candy-for-hackers/ 2. http://www.eschertech.com/products/correct_by_construction.php 3. http://www.idni.org/blog/code-and-money 4. https://ncatlab.org/nlab/show/computational+trinitarianism 5. http://c2.com/cgi/wiki?CorrectByConstruction 6. http://mcs.open.ac.uk/mj665/FormalismAndIntuition.pdf 7. https://youtu.be/UzjfeFJJseU 8. https://www.youtube.com/watch?v=o_d3YuM4Tcg 9. https://www.youtube.com/watch?v=uFwh3Uv8Nrw
author | dana-edwards |
---|---|
permlink | a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community |
category | crypto-news |
json_metadata | {"tags":["crypto-news","ethereum","tauchain","tau","crypto","programming"],"image":["https://upload.wikimedia.org/wikipedia/commons/7/70/Generative_Design_Process.png"],"links":["https://upload.wikimedia.org/wikipedia/commons/7/7b/Formal_Verification.png","https://blog.ethereum.org/wp-content/uploads/2015/01/blog_header3.png","https://pbs.twimg.com/profile_images/663462278990295042/NiioaMj5.png","https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/2000px-Design_by_contract.svg.png"]} |
created | 2016-05-20 18:25:03 |
last_update | 2016-06-19 02:33:06 |
depth | 0 |
children | 13 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 5.026 HBD |
curator_payout_value | 4.634 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 9,699 |
author_reputation | 353,623,611,191,427 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 9,939 |
net_rshares | 12,403,984,859,732 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
samupaha | 0 | 1,884,309,192,036 | 100% | ||
fuzzyvest | 0 | 5,681,580,993,831 | 100% | ||
recursive | 0 | 3,445,964,300,330 | 100% | ||
benjojo | 0 | 627,189,333,477 | 100% | ||
proctologic | 0 | 14,503,136,103 | 100% | ||
markopaasila | 0 | 10,556,075,848 | 100% | ||
tuck-fheman | 0 | 138,162,279,644 | 100% | ||
clains | 0 | 115,839,156,954 | 100% | ||
fbsvk | 0 | 691,136,459 | 100% | ||
jbradford | 0 | 686,641,705 | 100% | ||
jakev | 0 | 626,362,290 | 100% | ||
nikolai | 0 | 601,376,125 | 100% | ||
bobsunday | 0 | 594,329,273 | 100% | ||
void | 0 | 576,038,613 | 100% | ||
chryspano | 0 | 296,130,591,445 | 100% | ||
nenad-ristic | 0 | 551,248,760 | 100% | ||
idealist | 0 | 53,975,012,907 | 100% | ||
coinosphere | 0 | 461,842,848 | 100% | ||
help-yourself | 0 | 122,625,951,123 | 100% | ||
innuendo | 0 | 329,519,962 | 100% | ||
steemid | 0 | 7,307,059,648 | 100% | ||
herethengone | 0 | 385,422,577 | 100% | ||
endgame | 0 | 102,744,700 | 100% | ||
taurus | 0 | 0 | 100% | ||
darkfunction | 0 | 235,113,074 | 100% | ||
id-entity | 0 | 0 | 100% | ||
willsann | 0 | 0 | 100% | ||
woz.software | 0 | 0 | 100% |
Damn .. This is some hard core original content! Nicely done
author | bobsunday |
---|---|
permlink | re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160521t035043698z |
category | crypto-news |
json_metadata | {} |
created | 2016-05-21 03:50:45 |
last_update | 2016-05-21 03:50:45 |
depth | 1 |
children | 0 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.010 HBD |
curator_payout_value | 0.010 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 60 |
author_reputation | 5,451,367,204,252 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 10,206 |
net_rshares | 64,224,596,357 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
markopaasila | 0 | 10,249,583,450 | 100% | ||
idealist | 0 | 53,975,012,907 | 100% |
As a non-programmer and non-mathematician, I've been looking into tau for a few days, trying to understand what it's all about. It's really hard with the lack of education that I have, and it seems that it is [hard for programmers too](http://tpbit.blogspot.fi/2016/05/tau-chain-programmers-perspective.html). The benefits of decidable programs just don't become obvious to a layperson like me as long as the talk is at an abstract level, even though the concept is understandable. However, after you mentioned that bugs in software like Tor and OpenSSL are because of intuitionist/turing-complete programming, my eyes started to open to the potential of the project. Thanks! If I understand it right, it's easier to program in the intuitionist way, and practically all existing software libraries are such. Even Tau itself is being programmed in C++, which I find a little contradictory, but never mind. It seems to me that what the project is doing is starting a completely new ecosystem from a clean table, with an ever expanding library of totally new, bug-free, provable, reusable functions free for anyone to use. It will start off with practically nothing but the rules, and gradually accumulate a variety of libraries, which will make programming for Tau easier and easier. The libraries will provide perfect abstraction; you don't need to worry about the inner workings of it, because it will function consistently, and thus it will be a good platform to build upon. There is a huge uphill, where the benefits are small in the beginning, but which will become massive and obvious over time. Aside from the long term prospect, there is an immediate benefit from combining consistent programs with a blockchain, namely the possibility to "trustlessly" and automatically validate someone else's code or the results of running a program. This supposedly makes it possible to "trustlessly" outsource both computing power and programming, which hasn't been possible before (?). This will of course open up huge possibilities, and that's where Agoras comes in. Tauchain itself doesn't have a token or a revenue-model, but Agoras does. Agoras needs Tauchain to function, so the creators are crowdfunding Agoras and using the funds to create Tauchain. It will surely take many years to start generating any profit, but the potential is apparently huge. I think Agoras (AGRS) might be a hidden gem, an investment opportunity, because it is so hard to comprehend. Bitcoin is hard for people to understand, which made it a good opportunity for those who grasped the concept before the masses. So was Ethereum; it was hard to understand and very ambitious, but gave good returns for those who made the effort to understand. The benefits of Tauchain aren't obvious at all, and require quite some thinking to envision, and that is what makes it a possible hidden gem. The hidden-part is sure, while the gem-part remains to be seen. It will take many years to produce revenue, but once people start to see the potential and to talk more about it, the price will likely appreciate. I think I have to buy some. The price is at it's lowest. You certainly deserve more upvotes. This was a very enlightening article.
author | markopaasila |
---|---|
permlink | re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160620t090934979z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"],"links":["http://tpbit.blogspot.fi/2016/05/tau-chain-programmers-perspective.html"]} |
created | 2016-06-20 09:09:36 |
last_update | 2016-06-20 12:05:54 |
depth | 1 |
children | 9 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.476 HBD |
curator_payout_value | 0.476 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 3,210 |
author_reputation | 32,771,884,740,822 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 37,973 |
net_rshares | 1,994,377,697,666 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
samupaha | 0 | 1,921,995,375,877 | 100% | ||
markopaasila | 0 | 10,556,075,848 | 100% | ||
dana-edwards | 0 | 544,173,386 | 100% | ||
idealist | 0 | 53,975,012,907 | 100% | ||
steemid | 0 | 7,307,059,648 | 100% |
First, thanks for the compliment by saying I deserve more up votes. Now to give some clarification on the security mechanism of Tau as I currently understand it. Tau offers language security constraints through logical consistency.    An illustration would be if you take propositional logic and you look at a truth table and you know that at the end the result always must be True or False. It can never be both True and False. There can never be a contradiction or it could not be called logically consistent. The first practical benefit I can think of is that with Tau you do not have the halting problem anymore. This would mean Tauchain does not need "gas" as a way to avoid a smart contract running forever. Gas works to make sure all smart contracts on Ethereum can terminate but when you use Tau your termination is guaranteed because all smart contracts would be decideable. Decideability again is explained by propositional logic where with a truth table you can always be guaranteed a TRUE or FALSE at the end and maintain a result which is always logically valid. These are just the first two distinct differences between Ethereum and Tau but now I'll discuss some more wider implications. On security when you have logical consistency then the entire set of steps from input to output in a program can be determined in advance. The behavior of a program is predictable, quantifiable, exact, and you can use formal verification to guarantee that every program executes exactly in the predefined way. This is what in information security circles is called "Security by Correctness" while with Ethereum you have "Security by Isolation". When you deal with a smart contract which is Turing complete, undecideable, then you cannot rely on logic to predict with certainty how the program will behave prior to running it. What this means is a program will look like a black box with an input on one end and an output on the other end. You do not have a way to know what goes on in the black box so the only way to make sure the program is safe is to carefully craft your input and analyze the output. You cannot rely on logic to protect you from unintended behaviors. If we look at a smart contract then what the attack did was an input which produced an unexpected behavior. The input was valid to the smart contract because of some unknown bug or feature (the black box). But the input was deliberately crafted in such a way to exploit a common error that smart contract programmers make in Solidity. This puts the advantage permanently on the side of the attacker in the Ethereum ecosystem because the assumption is that most programmers are not going to be skilled enough to program defensively, to follow best practices, to formally verify, and so on. As a result this leads some to conclude that Solidity itself is somehow broken or that Ethereum by design is always going to have these problems and that maybe the best solution is to write mission critical smart contracts on a platform designed specifically for mission critical smart contracts. Tau is a programming language not a platform. Tauchain is Tau with a unique blockchain data structure. Agoras is an intelligent market place. In Tau if there is a place to make mistakes it is in the formal verification and design stage rather than in the implementation stage. This would mean Tau by design is a defensive programming language in the sense that the attacker cannot really attack the implementation or the code because it would be known that instead of a black box you have a transparent box where all the possible behaviors are mapped out in advance. It's possible to get that wrong and have a really stupid map of behaviors or model but this in my opinion is more the problem an architect faces when they come up with a bad design. These are two different approaches. Ethereum is easier to develop for with Solidity in some ways in that anyone can hack together a smart contract. Any one of us can go to the Ethereum site and create a democracy smart contract or a crypto-currency and that is beautiful. At the same time you would need a lot of very safe and secure templates which are known to be safe and at this point in time there aren't many and because the language is too new there aren't sufficient robust libraries with generally recognized safe code to draw from. As a result everyone has to sort of go alone and hope they are a good enough programmer to write a secure implementation of a smart contract and the average programmer just isn't going to be capable of this.   Tau on the other hand will be relatively easy to code. Anyone can work with Notation3 so the programming in Tau part will be even easier than programming in Solidity in many ways. The hard part is many people have no experience creating formal specifications, dealing with formal verification, modeling the behavior of software, it's just a different way of thinking about problem solving which for most programmers is unfamiliar. So because it's unfamiliar it's seen as being "hard". Agoras is important because you don't have to be a mathematician if you have enough tokens to pay a mathematician to come up with a formal spec for a design you specify in plain English. Then once there is a formal spec which is used to produce the "requirements" you can contract out globally to anyone the Amazon Turk style coding responsibility. You can literally reward in tokens per line of code to anyone who contributes a line or you can set up a keystroke lottery or whatever you want. Tauchain has many differences as well. You have the root context which is at the top of the family tree which all other context branch off from. The main rules of Tauchain are set at the root context. This context defines how Tauchain will define itself. All clients will download this proofchain or treechain (not quite sure how Ohad would explain it), and will run the exact same code which is guaranteed to run the exact same way on all clients all around the world. So you get something which is like a blockchain in that you have a shared state, but you also go much further because shared state literally means something more like the Raft protocol where the code itself or execution of the code itself is part of the shared state. This means it's like a decentralized Github, combined with a decentralized app store, combined with a proof chain or tree, which guarantees all apps behave exactly as defined by decideable logic. For mission critical smart contracts it might make the most sense to code the implementation in Tau, implement it as it's own context with it's blockchain on Tauchain, and through a side chain you can communicate with Ethereum smart contracts. In this way you can isolate the reliable components by putting it on the reliable platform from the unreliable components which could be put on any platform including Ethereum. References 1. https://simple.wikipedia.org/wiki/Halting_problem 2. https://en.wikipedia.org/wiki/Decidability_%28logic%29#Decidability_of_a_logical_system 3. https://en.wikipedia.org/wiki/Black-box_testing 4. http://searchwindevelopment.techtarget.com/definition/static-analysis 5. https://www.youtube.com/watch?v=OLGVhszBlq4
author | dana-edwards |
---|---|
permlink | re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160620t212628368z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"],"image":["https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Square_of_opposition,_set_diagrams.svg/2000px-Square_of_opposition,_set_diagrams.svg.png"]} |
created | 2016-06-20 21:26:27 |
last_update | 2016-06-20 22:13:36 |
depth | 2 |
children | 4 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.448 HBD |
curator_payout_value | 0.448 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 7,960 |
author_reputation | 353,623,611,191,427 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 38,612 |
net_rshares | 1,902,172,327,532 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
samupaha | 0 | 1,884,309,192,036 | 100% | ||
markopaasila | 0 | 10,556,075,848 | 100% | ||
steemid | 0 | 7,307,059,648 | 100% | ||
speedytheturtle | 0 | 0 | 100% |
> Agoras is important because you don't have to be a mathematician if you have enough tokens to pay a mathematician to come up with a formal spec for a design you specify in plain English. This step is the most controversial for me. Tau offers a guarantee that the code will fulfill the specification - that's great and I understand it. But what will guarantee that my plain English description is translated by a mathematician into a specification flawlessly? Don't we just move the problem one level up?
author | innuendo |
---|---|
permlink | re-dana-edwards-re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160621t091227856z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"]} |
created | 2016-06-21 09:12:24 |
last_update | 2016-06-21 09:12:24 |
depth | 3 |
children | 1 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 506 |
author_reputation | 31,739,740,997,875 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 39,208 |
net_rshares | 0 |
Thank you very much for the detailed explanation! Speaking of a appstore/repository, will the applications/libraries work only in the Tauchain context, or will there be applications meant for local/isolated use? Applications or contracts built on any other platform, like ethereum or bitcoin, have little or no use separated from the blockchain itself. The blockchain is what makes the applications useful, and that is why they are done on a blockchain in the first place. They are mostly applications that are made possible with the economic incentives that blockchains brought, and also the timestamping feature. They run locally somewhere - on some cpu - but return the outputs to the blockchain. Now if Tauchain is a beginning of a repository of reviewed and validated software, could it eventually replace centralized repositories of software for local use. Could it host a tor-browser, vpn, ssl, p2p chat, p2p voice, and p2p video software, cryptocurrency wallets or anything security related. They would be downloaded from the Tauchain but used outside of the context of the blockchain. They would provide no added value to the chain. It could even be a photo-editor or a game. The benefits of having Tauchain provide such software would be security, because as you explained, the software written in Tau is "secure by correctness". So to rephrase my question: Is it possible and do you foresee the possibility of Tauchain becoming a repository of software for non-blockchain use, or is it viable only for blockchain-related software?
author | markopaasila |
---|---|
permlink | re-dana-edwards-re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160621t071454004z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"]} |
created | 2016-06-21 07:14:54 |
last_update | 2016-06-21 07:14:54 |
depth | 3 |
children | 1 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,546 |
author_reputation | 32,771,884,740,822 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 39,106 |
net_rshares | 17,761,634,767 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
markopaasila | 0 | 10,454,575,119 | 100% | ||
steemid | 0 | 7,307,059,648 | 100% |
Tau itself is written/created in C++ because Tau is a compiler. All programming languages have compilers. All compilers must be created in an existing programming language. This would mean the Java virtual machine cannot be created in Java. This would mean the Rust compiler cannot be created in Rust. This would mean C cannot be created in C, because you have to program the compiler in a stand alone language to implement it. As a result the first implementation of Tau will be the C++ implementation. The C++ implementation does not have to be the only implementation. A Turing complete programming language must be used to implement Tau because according to my understanding you cannot put the constraints there. The constraints have to come in after the logic is put in place which happens in the compile process itself not in the compiler executable. This means Tau has to be programmed perfectly, and Tau itself will have to use correct by construction, which is actually possible to do with CompCert the verified C compiler. I do not know if you can do it using a C++ compiler but I know C and C++ aren't so different so someone could implement a C version of Tau with the verified compiler as long as Ohad releases a formal specification. I think also there is EscherTech which offers formal verification for C++ so Ohad might be able to use these tools to make an exact C++ implementation correct by construction. References 1. http://compcert.inria.fr/ 2. http://www.eschertech.com/products/ecv.php
author | dana-edwards |
---|---|
permlink | re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160620t223019392z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"]} |
created | 2016-06-20 22:30:18 |
last_update | 2016-06-20 22:35:24 |
depth | 2 |
children | 2 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,511 |
author_reputation | 353,623,611,191,427 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 38,686 |
net_rshares | 17,510,012,424 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
markopaasila | 0 | 10,349,093,969 | 100% | ||
steemid | 0 | 7,160,918,455 | 100% |
Ok, so writing the compiler in C++ doesn't necessarily make Tau unpredictable. Thanks!
author | markopaasila |
---|---|
permlink | re-dana-edwards-re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160621t064736714z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"]} |
created | 2016-06-21 06:47:36 |
last_update | 2016-06-21 06:47:36 |
depth | 3 |
children | 1 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 86 |
author_reputation | 32,771,884,740,822 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 39,090 |
net_rshares | 17,410,501,905 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
markopaasila | 0 | 10,249,583,450 | 100% | ||
steemid | 0 | 7,160,918,455 | 100% |
In specific the consensus on heartbleed is that it was caused by lack of bounds checking. This would indicate that language security may have prevented heartbleed from happening. This doesn't mean mistakes cannot be made but it only means it's much harder to make them with certain languages. My point by bringing up heartbleed is to show that if you use a notoriously difficult language for secure programming like C or C++, and you do not take all possible efforts to make sure your code is correct, such as correct by construction, formal verification, and all sorts of blackbox testing, then it's a situation where perhaps the entire world has to have faith in the competency of in some cases thousands of different programmers. The statistics do not look good when you consider that it only takes one of them to slip a bug in either deliberately or by accident. References https://en.wikipedia.org/wiki/Bounds_checking https://news.ycombinator.com/item?id=7548991
author | dana-edwards |
---|---|
permlink | re-markopaasila-re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160626t025559848z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"],"links":["https://en.wikipedia.org/wiki/Bounds_checking"]} |
created | 2016-06-26 02:56:00 |
last_update | 2016-06-26 02:56:00 |
depth | 2 |
children | 0 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 971 |
author_reputation | 353,623,611,191,427 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 44,048 |
net_rshares | 0 |
The recent events with #thedao made this more relevant than ever!
author | markopaasila |
---|---|
permlink | re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20160620t092450824z |
category | crypto-news |
json_metadata | {"tags":["thedao","crypto-news"]} |
created | 2016-06-20 09:24:51 |
last_update | 2016-06-20 09:24:51 |
depth | 1 |
children | 0 |
last_payout | 2016-08-19 19:41:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 65 |
author_reputation | 32,771,884,740,822 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 37,978 |
net_rshares | 17,410,501,905 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
markopaasila | 0 | 10,249,583,450 | 100% | ||
steemid | 0 | 7,160,918,455 | 100% |
Great piece and spot on. The rise of OO the final tipping point that moved the industry in the bad direction. The old languages like Lisp, ML and Haskell have stayed around in the background while people departed for the bright lights of the "easier" OO. Now things are starting to swing back again, Functional Programming is on the rise everywhere as people realize what they loast with OO. Now many OO languages are starting to get Functional language features. Such as C++ 11, Java 8 and C# 3.5 onward. I can't think why anyone would pick OO for blockchain, the entire nature of blockchain just screams functional code from its very core.
author | woz.software |
---|---|
permlink | re-dana-edwards-a-brief-analysis-and-discussion-on-formalist-vs-intuitionist-programming-factions-in-the-crypto-community-20170711t085947329z |
category | crypto-news |
json_metadata | {"tags":["crypto-news"],"app":"steemit/0.1"} |
created | 2017-07-11 08:59:48 |
last_update | 2017-07-11 08:59:48 |
depth | 1 |
children | 0 |
last_payout | 2017-07-18 08:59:48 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 648 |
author_reputation | 2,321,910,395,519 |
root_title | "A brief analysis and discussion on formalist vs intuitionist programming factions in the crypto community." |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 8,084,485 |
net_rshares | 0 |