Author

Topic: Was Satoshi's coding ability considered bad? (Read 1735 times)

legendary
Activity: 3066
Merit: 1147
The revolution will be monetized!
November 23, 2018, 10:18:05 AM
#47
Dare I say it was a little script-kitty like.

This is nonsense.  ...
Okay, okay "script kitty" is too strong.
legendary
Activity: 1456
Merit: 1177
Always remember the cause!
November 22, 2018, 02:14:21 PM
#46
I think it's fair to say it wasn't engineered code.
Great insights that got the codebase started but it wasn't written by a professional software engineer. It doesn't take anything away from the accomplishment though.
I denounce your claim as far as it is about textbooks and established science and not corporate invented fake engineering practices that involve a lot of generalization and abstraction layers and pointless application of void OOP ideas that have ended to software bloat and disasters like Windows.

newbie
Activity: 64
Merit: 0
November 22, 2018, 12:43:16 PM
#45
I think it's fair to say it wasn't engineered code.
Great insights that got the codebase started but it wasn't written by a professional software engineer. It doesn't take anything away from the accomplishment though.
newbie
Activity: 10
Merit: 0
November 19, 2018, 07:37:27 PM
#44
Looking at the code I think it's likely Satoshi wasn't a salaried developer. What people in the tech industry call good programmers usually has more to do with team play than sheer technical ability. It's hard to work with somebody else's mess. There's this breed of developers who will take pride at using the latest technologies, having 100% test coverage, elaborate CI setups but completely disregard the actual purpose of the software.

When you're a lone wolf it doesn't really matter.
legendary
Activity: 996
Merit: 1013
November 13, 2018, 09:20:23 AM
#43
The implementation of transaction states (UTXO) and Bitcoin Script, to
name just two aspects of the total system, indicate a remarkable mind at
work. If it originated from just one person, I would have no reservation using
the word genius.

Also, some more mundane programming constructs like the serialization
routines tell me that the author was well-versed in software design.

I think that the slightly odd choices in the presentation of the original source code
- the fact that it is a Visual Studio project, and the unfinished foundations
of a p2p market - are there because the author(s) wanted it to be easily
adopted by developers while also hinting at the possibilities.
legendary
Activity: 1232
Merit: 1080
November 11, 2018, 04:57:33 AM
#42
Why not download the code written by Satoshi and see it yourself? https://satoshi.nakamotoinstitute.org/code/

I'm not very experienced with C++, but IMO the code is pretty good, it's not messy and there are decent comments.

I'm not experienced enough and wanted the opinions of some of the experts in this forum. I think I got some insight comments.
legendary
Activity: 3038
Merit: 2162
Why not download the code written by Satoshi and see it yourself? https://satoshi.nakamotoinstitute.org/code/

I'm not very experienced with C++, but IMO the code is pretty good, it's not messy and there are decent comments.
legendary
Activity: 1988
Merit: 1077
Honey badger just does not care
The original Bitcoin software was unusually high quality. It was clean, minimal, relatively modern for its time, and largely (but not completely) free of defects.

Exactly. I always wonder if people who criticize his programming abilities ever stop to ponder the wast functionality that software had to have. Do they ask them selves: if they had Whitepaper in front of them, would they be able to produce Bitcoin 0.1.0 code, and how much time it would take them? I think majority of critics would not be able to do it if they life depends on it.

As far as I've read historic quotations he wrote that code in 1 1/2 years. It's decent speed even if you do only that in your life, if he had other activities like teaching or regular job it's amazing speed for a side project.

I believe he was active coder at least for some part of his life, probably using programming in his academic work, if he was an academic. People who never actively programmed have no chance of producing that 0.1.0 code.
staff
Activity: 4326
Merit: 8951
Dare I say it was a little script-kitty like.

This is nonsense.  A lot of people like to throw crap at other people's work because they think it makes them sound superior.

The original Bitcoin software was unusually high quality. It was clean, minimal, relatively modern for its time, and largely (but not completely) free of defects.

Anyone who says otherwise is either uncritically repeating rumours they heard elsewhere or is trying to make themselves look better.  Those who know better don't usually bother saying anything since his work stands on its own, but it makes me a bit sad to see since Satoshi isn't here to defend himself, and .. well XKCD386.
legendary
Activity: 3066
Merit: 1147
The revolution will be monetized!
Sato's basic mathematical idea about distributing time-stamped data on a chain of blocks was the breakthrough. Not the code itself. None of the code was really new, just the novel way it was cobbled together. Dare I say it was a little script-kitty like.
hero member
Activity: 1582
Merit: 759
Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.

The bigger problem is that he used Windows, which is an unforgivable sin.

You make a good point. In most open source projects there are many layers, and code is often developed w/ specific guidelines/structures in mind, etc. It could be argued that the way Satoshi developed the first release of BTC gave somewhat of an easier learning curve for other developers to pickup the project & provide aid; putting that structure & those guidelines into place.

When software is 100% fully developed, it:
1. Takes longer to build, MVP is quicker.
2. Doesn't attract open source developers quite as quickly (if everything is completed, why would developers pick it up). It's these developers which spearhead the project going forward.

Whether this was intentional or not is TBD.
newbie
Activity: 18
Merit: 0
Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.

Object/garbage oriented programming is not considered a professional technique. Ironically the more obsessed a programmer is with OOP, less he knows about it.
It is primarily about encapsulation (a genius idea) rather than inheritance, the most naive modelling technique ever. Such programmers have the tendency you mentioned here and always fall into useless abstractions, it is done in the name of re-usability and they do it like a teenager who is excessively addicted to masterbation.

Thanks god, bitcoin code is not poisoned by such garbages and navigating through it you are not lost in abstract ridiculous classes. Very limited and smart use of inheritance and more emphasis on encapsulation. I think it is due to Satoshi's neat approach to the first implementation, his legacy.


Guess it's also worth to mention loose coupling here, as an integral principle of encapsulation. Although, an initial bitcoin's source code release seems to look way tightly coupled from this standpoint.

As Satoshi is believed to be Mr. Szabo IRL, nothing here *in terms of coding style* seem to be contradicting.
legendary
Activity: 3388
Merit: 3154
I think all codes on the first versions are 'gruyère cheese' with all those holes and things to fix, i think is the same scenario like when linux comes to live. Linus Torvalds isn't a bad coder, but he know that with a community the project could grow really fast. And i think was the same with bitcoin, maybe satoshi wasn't the best coder but he code bitcoin, what more do you whant from him? and he know with a community this could grow fast and big.

Other theory is that satoshi changes his coding style to avoid getting chased by his style, just like when you want to do a fake letter and try to change your letter format.  Tongue
legendary
Activity: 1372
Merit: 1252
Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.

The bigger problem is that he used Windows, which is an unforgivable sin.

I've always wondered why he used Windows instead of Linux, if he wanted to developed an open source currency. I guess that's what he was most used to, and that's all. Some people learn to do things one way and keep doing it the same way. He probably learned how to code in Windows and couldn't be arsed to switch to Linux.
At the end of the day we got open source code which is all that maters.

I wonder if someone here in the forums or somewhere else asked him why he was a Windows guy.
legendary
Activity: 1456
Merit: 1177
Always remember the cause!
Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.

Object/garbage oriented programming is not considered a professional technique. Ironically the more obsessed a programmer is with OOP, less he knows about it.
It is primarily about encapsulation (a genius idea) rather than inheritance, the most naive modelling technique ever. Such programmers have the tendency you mentioned here and always fall into useless abstractions, it is done in the name of re-usability and they do it like a teenager who is excessively addicted to masterbation.

Thanks god, bitcoin code is not poisoned by such garbages and navigating through it you are not lost in abstract ridiculous classes. Very limited and smart use of inheritance and more emphasis on encapsulation. I think it is due to Satoshi's neat approach to the first implementation, his legacy.
full member
Activity: 123
Merit: 474
Only professional programmers would consider his code 'bad' or 'sloppy'. But professional programmers have a tendency to over-complicate everything behind twenty layers of abstraction and object-orientated garbage, so they see anything that doesn't do the same as bad code.

The bigger problem is that he used Windows, which is an unforgivable sin.
legendary
Activity: 1232
Merit: 1080
September 29, 2018, 04:46:21 AM
#31
I think Gavin said at one point that most of Satoshi's original code was replaced or tweaked and that very little of his original code is still in the protocol. I do not care if his code was sloppy or not, the basic concept worked and people all over the world started using it. All developers will criticize other people's work in hindsight, but looking back at that time, Satoshi delivered a working concept and a skeleton that needed some flesh.  Wink

As some people said, this might just be a ploy to hide his real identity.  Grin



Yes my original point wasnt to rubbish Satoshi even in the slightest. What he came up with has changed the world for the better. But in a technical stand point of view I wanted to know whether his coding was considered "bad". Hes obviously got a very capable mind and seemed to just learn a little coding to bring out his project rather than dedicating his life to coding.
hero member
Activity: 568
Merit: 703
Every post from @anunymint apparently was deleted.

Some of this thread was archived here and here.
legendary
Activity: 3542
Merit: 1966
Leading Crypto Sports Betting & Casino Platform
I think Gavin said at one point that most of Satoshi's original code was replaced or tweaked and that very little of his original code is still in the protocol. I do not care if his code was sloppy or not, the basic concept worked and people all over the world started using it. All developers will criticize other people's work in hindsight, but looking back at that time, Satoshi delivered a working concept and a skeleton that needed some flesh.  Wink

As some people said, this might just be a ploy to hide his real identity.  Grin

jr. member
Activity: 462
Merit: 2
It was pretty good: I'd give it a grade of B+. The worst problem was that there were only a few, huge files, but if you ignored that then it made a lot of sense. It was written in (then-)modern C++, clearly with a lot of care. It was clearly not written in a stream-of-consciousness manner. There were very few bugs that you could blame on lack of programming skill.

My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.


Agree.

Another important fact to consider is that satoshi never meant to roll out the code in 2009. His/her/they chose correctly to take advantage of the 2007/2008 US led monetary crash which caused the highest level of distrust in government to enter at that date and move forward perfecting the code.

just my 2 satoshis
legendary
Activity: 1274
Merit: 1006
Trainman
Was perfect, not bad. Satoshi first was a human and then was a programmer, in coding bugs are unavoidable because programmers are humans, the only way to avoid bugs is one Not Code..
legendary
Activity: 1232
Merit: 1080
Criticizing a source code of another programmer is purely subjective. If Satoshi Nakamoto is truly inferior in terms of coding then he should not have made his source code open to the public. I cannot say the same to Microsoft Windows Operating System.
Some of it might be purely subjective and as long as it works it works but laying down a good foundation for others that read the code is considered good programming.

Open source actually brings in the possibility of improving the existing code by having input from others so its not a bad idea to make it open source. Plus he was limited by his own standards and unless he wanted to dedicate more time in learning effective code Bitcoin would of been delayed. Nothing can be made perfect and I was not calling out Satoshi for having bad coding practices I was merely interested after stumbling upon a quote from D&T.
member
Activity: 462
Merit: 17
When creating a new product, it is absolutely normal when it is not perfect.
Initially there were mistakes well, so what? They have already been corrected.
full member
Activity: 294
Merit: 104
✪ NEXCHANGE | BTC, LTC, ETH & DOGE ✪
I've been reading some old posts of some prolific members here on the forum and here's a quote from DeathAndTaxes to seek your teeth into:


This.  The first time I learned about Bitcoin, I took a look at the whitepaper and code I found all kinds of "flaws".  It wasn't until hours (days?) of reading and researching that the elegance of the solution became visible (like a Polaroid appearing from the black).  It is humbling when you realize that you are looking at the product of someone far above your own capabilities and they have created what you previously considered impossible.  In a hundred years in a hundred parallel worlds I wouldn't have come up with the concept of Bitcoin, it was simply too alien.  It goes beyond just intelligence, the idea was simply outside my frame of reference.  The problem wasn't even one I considered that a solution existed.  

Now Satoshi's coding (nuts and bolts)?  Blech that is another story but nobody complains that Einstein's notes are hard to read because he had bad handwriting.

DeathAndTaxes is pretty famous around here for his ideas and intelligence. Even though he admits earlier in his statement that the idea of Bitcoin was completely out of his scope of intelligence he then goes on to slightly criticize Satoshi's coding ability.

I'm curious if this is the general view point of the community and also if it is true was there any major adaptions to the code following Gavin and other developers contributing to the project?

I'm trying to go through his other posts in an attempt to find any explanation of this as I've not found anything from some quick searches.

Criticizing a source code of another programmer is purely subjective. If Satoshi Nakamoto is truly inferior in terms of coding then he should not have made his source code open to the public. I cannot say the same to Microsoft Windows Operating System.
legendary
Activity: 2898
Merit: 1823
It's consensus opinion among programmers that Satoshi knew alot about cryptography, but was not an expert programmer. I seem to remember that Bitcoin 0.1.0 was just a bunch of functions and a main function, no classes (and that version was of course all Satoshi's work). It's not impossible that Satoshi was a good programmer, but deliberately chose to obscure any stylistic fingerprints by trying to appear to be amateurish. But there's no evidence for that, it's just a possibility.

Re: changes, IIRC the developing team are even today still untangling some of the messy dependencies introduced early on in the project, but who's responsible for those I don't know.

I read a quote somewhere that John Nash learned programming late in his life during the 1990's. He also had his own theory of what money should be called Ideal Money, https://en.wikipedia.org/wiki/Ideal_money#What_is_Ideal_Money?

He is mathematician and a cryptographer. Which also showed what Satoshi mainly was.

Besides Hal Finny and Nick Szabo, my top two for "Satoshi", could John Nash be a possible candidate?
member
Activity: 322
Merit: 54
Consensus is Constitution
Quote
The sudden ALS (a one-in-a-million terminal health defect) of Hal Finney after being a vigorous runner is quite an anomaly. What’s the odds that the one public guy who was closest to Satoshi (a one-in-a-billion circumstance) and who might have had information which would blow this discussion wide open, was suddenly erased from life. I have no information about whether it’s possible to induce ALS in a person. I’ve seen some vague implications that the CIA had a way to induce cancer. I’m not drawing any conclusions from this at all. Not weighing it at all in my thought process. Just noting it.

And when you realize that ALS is caused by Lyme disease and Lyme has been weaponized by the CDC...Ya you realize the C*A was probably involved.

http://als-cure.com/als-lyme/als-patients-infected-with-lyme-bacteria-borrelia-spirochetes/

http://truthstreammedia.com/2017/09/09/officially-ignored-connection-lyme-disease-plum-island/
legendary
Activity: 2646
Merit: 6681
Self-proclaimed Genius
Yes a Peer-to-peer decentralized digital currency was a great idea to be able to trade "everything" wordwide.
That's why "Satoshi's" "small project" became this big.
My guess is: Satoshi didn't expect this to be famous in just a short time, Bitcoin grew beyond his control that developing it with himself exposed was "too scary" for him.

-snip-
Whoa whoa, I take it as an insult to Einstein and the media, that's rude.
But really, "genius" is a state of mind and Einstein had lost it, stubbornly implied his theories even though he was not sure of it himself.
He even died without completing a "materialistic" reasoning to the theory of everything.

Speaking of frauds and Thieves, ask the one who "discovered" the DNA double Helix.
There's only one man that I know who's a Stable Genius: Donald Trump, Einstein and Satoshi are idiotic sometimes.
legendary
Activity: 1232
Merit: 1080
If his technology is the leading digital currency next to digital fiat, then I'd say he, or they had a pretty good idea of what they were doing. DOS for example was a pretty good operating system as flawed as it may be. It is the foundation for an operating system that millions use to this day. It needed allot more upgrades than bitcoin. I'd say brilliant but then I'm no coder so take it with a pinch of salt.

One can have brilliant ideas and do the basic legwork but has since been backed up by multiple people that his code wasn't perfect. I think a lot of people hold Satoshi in high regard and think he's perfect. It's always good to point this out to people and say he isn't perfect.

Yes he made Bitcoin and the revolutionary technology behind it and I'm sure we all thank him for loosening the chains of regulation for us but it was no where near a perfect implementation.This is expected though.
jr. member
Activity: 364
Merit: 4
If his technology is the leading digital currency next to digital fiat, then I'd say he, or they had a pretty good idea of what they were doing. DOS for example was a pretty good operating system as flawed as it may be. It is the foundation for an operating system that millions use to this day. It needed allot more upgrades than bitcoin. I'd say brilliant but then I'm no coder so take it with a pinch of salt.
member
Activity: 322
Merit: 54
Consensus is Constitution
What I gleaned from reading up on the beginnings of bitcoin was that his style was outdated and windows based.  Like he was an old hand, probably a software engineer that didn't typically get his hands too dirty in writing his own code and worked for UNIX and then later windows based corporate entities for many years.

And ahem...if you want to learn more about the man, you may want to look up a fellow named Dorian...  " I AM NOT DORIAN NAKAMOTO"
hero member
Activity: 568
Merit: 703
The same actually happened even with Satoshi's language. Those who paid attention noted the impeccable grammar and structure, others criticised (again, much later) the inconsistencies even with spelling.

The same happened with the analysis of the analysis of 9/11 also. Even the Mossad aren’t able to fool God.

(trying to stay on topic here with the implied reason that others want to analyze if Satoshi was an amateur hobbiest Japanese teenage hacker sleeping on his mother’s futon next their family kabota)
legendary
Activity: 3010
Merit: 3724
Join the world-leading crypto sportsbook NOW!
Most observations I can recall reading seem to agree that Satoshi was/were pretty decent at coding, stopping short of criticizing the work. Criticisms seem to have arrived much later. The same actually happened even with Satoshi's language. Those who paid attention noted the impeccable grammar and structure, others criticised (again, much later) the inconsistencies even with spelling.

As Carlton Banks points out, these could all be deliberate attempts at concealing identity, or simply a result of the multiple hands behind Satoshi.

It's hard to be a genius and not have people analyse every item connected to your personality.

But Satoshi's coding considered bad? I don't think anyone, not even DeathAndTaxes, would come close to thinking that.
drm
legendary
Activity: 1176
Merit: 1005
Who cares about his/her coding style.

My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.
Agree with you. It seems that Satoshi's code was pretty sloppy. Moreover, obviously he was a Windows guy.

Readme.txt from Bitcoin 0.01 ALPHA:
Code:
Operating Systems
-----------------
Windows NT/2000/XP (and probably Vista)

Vista hasn't been tested yet.  All the libraries used are cross-platform, so
there's nothing preventing future Linux and Mac builds.

Anyway, it doesn't matter if Satoshi Nakamoto was a full-time programmer or not. Although there were some bugs, the software worked fine.

OP is not saying it matters or that it forms an issue in any way, just trying to find out more.
And if we shouldn't discuss things that don't matter we can scrap more than half of the threads on this board.  Wink
legendary
Activity: 2674
Merit: 2334
Top-tier crypto casino and sportsbook
My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.
Agree with you. It seems that Satoshi's code was pretty sloppy. Moreover, obviously he was a Windows guy.

Readme.txt from Bitcoin 0.01 ALPHA:
Code:
Operating Systems
-----------------
Windows NT/2000/XP (and probably Vista)

Vista hasn't been tested yet.  All the libraries used are cross-platform, so
there's nothing preventing future Linux and Mac builds.

Anyway, it doesn't matter if Satoshi Nakamoto was a full-time programmer or not. Although there were some bugs, the software worked fine.
sr. member
Activity: 558
Merit: 295
Walter Russell's Cosmogony is RIGHT!
Einstein was a complete FRAUD thief plagiarist idiot who could not possibly have written the work he is credited for..
Was not competent enough to even understand it..
Did not even know the speed of sound when asked by Thomas Edison
FAILED his university entrance exam and never attended a single physics class.
The Nobel Prize in Physics has LONG been a REWARD for IDIOT SYCOPHANTS for their contribution in sustaining the fraud and increasing the level of confusion and obfuscation.

The legacy of Einstein's genius is a MEGA fallacy grotesquely ill deserved but a TESTAMENT to the overwhelming power and influence and control of ZIONIST propaganda over the media and Academia. He HIMSELF complained of being made a false idol.

His EX-wife SUCCESSFULLY SUED him for the prize money from the Nobel work on the PHOTO-ELECTRIC effect. And for divorce for adultery.
She was a very competent mathematician.

Special relativity and General Relativity are crimes against science and reason....
They have been fraudulently supported and proven idiotic complete nonsense many times over by REAL empirical observation and have absolutely NOT a single occasion of evidenciary support or relation to ACTUAL real world Physics/science and engineering.

These are the true KNOWN Immutable facts pertaining to the person that idiots use as a benchmark of genius.

Are you sure you want to compare that asshole to Satoshi?
We KNOW NOTHING about Satoshi...we can't even know if he wrote any of the code or if he was even a real singular person.
Odds are far greater that he was a front, a vehicle, a tool, a weapon. Of a collaborative effort, a scheme.
The product of a stratagem.






newbie
Activity: 8
Merit: 0
Why does it even matter?
I mean did you wonder if De Lorean from "Back to the future" had high fuel consumption?
hero member
Activity: 672
Merit: 526
It was pretty good: I'd give it a grade of B+. The worst problem was that there were only a few, huge files, but if you ignored that then it made a lot of sense. It was written in (then-)modern C++, clearly with a lot of care. It was clearly not written in a stream-of-consciousness manner. There were very few bugs that you could blame on lack of programming skill.

My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.

Is there any indication that he would be more familiar with another language, but chose to study and use C ++ because of its efficiency in memory usage compared to other languages? Since he believed that the easier it was to mine and maintain a node, the more widespread the network would be. And for that, the consumption of memory could not be high since many would hardly leave a computer exclusive to Bitcoin in the beginning.

Is it possible that he started the project using another language and started over again using C ++?
jr. member
Activity: 168
Merit: 3
#Please, read:Daniel Ellsberg,-The Doomsday *wk
I've been reading some old posts of some prolific members here on the forum and here's a quote from DeathAndTaxes to seek your teeth into:


This.  The first time I learned about Bitcoin, I took a look at the whitepaper and code I found all kinds of "flaws".  It wasn't until hours (days?) of reading and researching that the elegance of the solution became visible (like a Polaroid appearing from the black).  It is humbling when you realize that you are looking at the product of someone far above your own capabilities and they have created what you previously considered impossible.  In a hundred years in a hundred parallel worlds I wouldn't have come up with the concept of Bitcoin, it was simply too alien.  It goes beyond just intelligence, the idea was simply outside my frame of reference.  The problem wasn't even one I considered that a solution existed.  

Now Satoshi's coding (nuts and bolts)?  Blech that is another story but nobody complains that Einstein's notes are hard to read because he had bad handwriting.

DeathAndTaxes is pretty famous around here for his ideas and intelligence. Even though he admits earlier in his statement that the idea of Bitcoin was completely out of his scope of intelligence he then goes on to slightly criticize Satoshi's coding ability.

I'm curious if this is the general view point of the community and also if it is true was there any major adaptions to the code following Gavin and other developers contributing to the project?

I'm trying to go through his other posts in an attempt to find any explanation of this as I've not found anything from some quick searches.

Just start reading the code....

https://bitcointalksearch.org/topic/bitcoin-source-from-november-2008-382374

https://github.com/trottier/original-bitcoin

Thanks for the link ( last time I saw any code was at sourceforge host )

Today on my breakfast while trying to read the commentaries (Yes I love commentaries, the part of the code ignored by the compiler) because some are funny, others just mess with the coder mind state ) it somehow led[1] me the following path

Quote
Quote from: Mike Hearn on December 23, 2013, 08:30:45 PM
OP_CODESEPARATOR was in the first released version too. It was part of his broken method of running scripts via concatenation.

In the Bitcoin v0.1 release OP_CODESEPARATOR was always inserted between the scriptSig and scriptPubKey prior to calling EvalScript() This pre-release sourcecode implies that was not automatically done, which allows for scripts to take advantage of that after the fact to delegate signing authority after the fact. (though to fully take advantage of the idea you need the notion of a OP_CODESEPARATOR "stack")

The idea is "broken" only in that OP_RETURN originally could cause a script to return valid prematurely; now that OP_RETURN only fails a script prematurely an explicit OP_CODESEPARATOR design would work fine.

The concatenation thing reminds the post I read few days ago about shell script on unix systems ...
It let me thinking about RISC and CISC instruction sets and pipelining,

From the textbook

Reduced instruction set computing (RISC) refers to a system in which the
processor can execute a relatively small number of distinct fundamental,
highly optimised instructions, each consisting of a single operation. By
comparison, in complex instruction set computing (CISC), the processor
can execute many more distinct instructions, with each potentially consisting
of many operations.
To give you a flavour of the difference, consider two approaches to
multiplying two integers.
Use the existing circuit that adds two integers and use software to
repeatedly execute an ADD instruction to add the first integer to itself the
right number of times.
2 Build a circuit that multiplies two integers[2] and use a MULTIPLY
instruction to activate it.
The first approach is in the spirit of RISC (although, in fact, RISC processors
do have a multiply operation) – a more complex task is achieved by using
software to combine several more fundamental instructions.
The second approach is more aligned to a CISC approach – the emphasis is
put on building complex instructions directly into the hardware.
There are some other important differences between the RISC and CISC
approaches.
.
.
Each instruction executed on a RISC processor is fundamental enough
that it can be executed in a single clock cycle, whereas the more complex
CISC instruction to do the same job may take multiple clock cycles.
However, because a task generally takes many more instructions in RISC
than in CISC, the overall time is usually similar in each system.
Each instruction in a RISC processor can be represented in the same
number of bits because when data is moved to and from memory, only
one memory location is involved. However, CISC instructions are more
likely to need variable numbers of bits because a single instruction might
need to access multiple memory locations. This also means that as well as
taking more clock cycles, a CISC instruction takes a variable number of
clock cycles to complete, whereas a RISC instruction consistently takes
one.
So which approach is better? Certainly the general trend has been away from
CISC towards RISC, and except for some highly specialised computers, most
processors now take a RISC approach. This is partly because early computers
were born out of a world of switches and relays, so hardware solutions came
more naturally than software solutions for early computer pioneers. It was
also the case that RISC architectures relied on more main memory being
available (because there are many more instructions to be stored), and main
memory was very expensive in the early days. As software developed and
main memory became much cheaper, RISC moved into the ascendancy.
However, perhaps the most important advantage that RISC architectures have
is the predictability of the representation of an instruction, and the time it
takes to execute (one clock cycle) lends itself to pipelining, which is the
process of speeding up a task by splitting it into steps that can be executed in
parallel.





[1] CodersLed as the past tense of the verb lead, not the blood Diode ( https://en.wikipedia.org/wiki/Light-emitting_diode ) Makers
[2] In this case I was thinking about the the multiplication of the static const int64 COIN = 1000000; static const int64 CENT = 10000;
administrator
Activity: 5222
Merit: 13032
It was pretty good: I'd give it a grade of B+. The worst problem was that there were only a few, huge files, but if you ignored that then it made a lot of sense. It was written in (then-)modern C++, clearly with a lot of care. It was clearly not written in a stream-of-consciousness manner. There were very few bugs that you could blame on lack of programming skill.

My personal suspicion in this area is that Satoshi was never (or not recently) a full-time programmer, but he was pretty familiar with computer science (maybe a student or academic?), and he'd read some comprehensive C++ book just before starting on Bitcoin, so he made full and correct usage of C++ features in a slightly messy way.
jr. member
Activity: 30
Merit: 4
Nothing is perfect.

Espacially digital products, must keep developing it lifetime withut succeed the perfection.

Look at Facebook, Google, Microsoft and others, they are are prehistoric and they have been around for ages ... but from time to time someone find a bug (Notice in addition of that they are closed source projects), compared to open source project as Bitcoin where everyone can read clairely where a bug lies (If there one).

Purhapse he is right about the code, but for the first launch, if the product work well and idea realized then the goal is reached, after that community do the rest.
legendary
Activity: 2926
Merit: 1386
I've been reading some old posts of some prolific members here on the forum and here's a quote from DeathAndTaxes to seek your teeth into:


This.  The first time I learned about Bitcoin, I took a look at the whitepaper and code I found all kinds of "flaws".  It wasn't until hours (days?) of reading and researching that the elegance of the solution became visible (like a Polaroid appearing from the black).  It is humbling when you realize that you are looking at the product of someone far above your own capabilities and they have created what you previously considered impossible.  In a hundred years in a hundred parallel worlds I wouldn't have come up with the concept of Bitcoin, it was simply too alien.  It goes beyond just intelligence, the idea was simply outside my frame of reference.  The problem wasn't even one I considered that a solution existed.  

Now Satoshi's coding (nuts and bolts)?  Blech that is another story but nobody complains that Einstein's notes are hard to read because he had bad handwriting.

DeathAndTaxes is pretty famous around here for his ideas and intelligence. Even though he admits earlier in his statement that the idea of Bitcoin was completely out of his scope of intelligence he then goes on to slightly criticize Satoshi's coding ability.

I'm curious if this is the general view point of the community and also if it is true was there any major adaptions to the code following Gavin and other developers contributing to the project?

I'm trying to go through his other posts in an attempt to find any explanation of this as I've not found anything from some quick searches.

Just start reading the code....

https://bitcointalksearch.org/topic/bitcoin-source-from-november-2008-382374

https://github.com/trottier/original-bitcoin
legendary
Activity: 3430
Merit: 3083
I wasn't aware that the development team are still working on fixing some of the initial issues.

It's only circular dependency issues, not bugs or design issues. Which are only a problem when trying to restructure the code AFAIU (there's been a long-term mission to remove circular dependency between the wallet class and the server class, which I think blocks any attempt to separate the wallet code into a separate process from the node code)
legendary
Activity: 1232
Merit: 1080
It's consensus opinion among programmers that Satoshi knew alot about cryptography, but was not an expert programmer. I seem to remember that Bitcoin 0.1.0 was just a bunch of functions and a main function, no classes (and that version was of course all Satoshi's work). It's not impossible that Satoshi was a good programmer, but deliberately chose to obscure any stylistic fingerprints by trying to appear to be amateurish. But there's no evidence for that, it's just a possibility.

Re: changes, IIRC the developing team are even today still untangling some of the messy dependencies introduced early on in the project, but who's responsible for those I don't know.

You bring up some interesting points. My angle when proposing my question was to bring up the fact that Satoshi could of potentially tried to avoid fingerprinted by using generic code. Although this is purely speculation it's something which you would have to consider.

I wasn't aware that the development team are still working on fixing some of the initial issues.
legendary
Activity: 3430
Merit: 3083
It's consensus opinion among programmers that Satoshi knew alot about cryptography, but was not an expert programmer. I seem to remember that Bitcoin 0.1.0 was just a bunch of functions and a main function, no classes (and that version was of course all Satoshi's work). It's not impossible that Satoshi was a good programmer, but deliberately chose to obscure any stylistic fingerprints by trying to appear to be amateurish. But there's no evidence for that, it's just a possibility.

Re: changes, IIRC the developing team are even today still untangling some of the messy dependencies introduced early on in the project, but who's responsible for those I don't know.
legendary
Activity: 1232
Merit: 1080
Who cares about his/her coding style. This is all to explain:

Einstein's notes are hard to read because he had bad handwriting.

I think you are misunderstanding. I'm not looking to ridicule or say that everything Satoshi has done is discredited because of his coding but I'm interested if there's any truth to what DeathAndTaxes claimed and if so what was some of the major changes when new developers such as Gavin Andersen entered the scene.
copper member
Activity: 630
Merit: 420
We are Bitcoin!
Who cares about his/her coding style. This is all to explain:

Einstein's notes are hard to read because he had bad handwriting.
legendary
Activity: 1232
Merit: 1080
I've been reading some old posts of some prolific members here on the forum and here's a quote from DeathAndTaxes to seek your teeth into:


This.  The first time I learned about Bitcoin, I took a look at the whitepaper and code I found all kinds of "flaws".  It wasn't until hours (days?) of reading and researching that the elegance of the solution became visible (like a Polaroid appearing from the black).  It is humbling when you realize that you are looking at the product of someone far above your own capabilities and they have created what you previously considered impossible.  In a hundred years in a hundred parallel worlds I wouldn't have come up with the concept of Bitcoin, it was simply too alien.  It goes beyond just intelligence, the idea was simply outside my frame of reference.  The problem wasn't even one I considered that a solution existed.  

Now Satoshi's coding (nuts and bolts)?  Blech that is another story but nobody complains that Einstein's notes are hard to read because he had bad handwriting.

DeathAndTaxes is pretty famous around here for his ideas and intelligence. Even though he admits earlier in his statement that the idea of Bitcoin was completely out of his scope of intelligence he then goes on to slightly criticize Satoshi's coding ability.

I'm curious if this is the general view point of the community and also if it is true was there any major adaptions to the code following Gavin and other developers contributing to the project?

I'm trying to go through his other posts in an attempt to find any explanation of this as I've not found anything from some quick searches.
Jump to: