Solidity Basics

About the types video: I notice that you’re using ‘uint’, which upon closer inspection is ‘unsigned integer’, meaning there’s no sign bit and you can’t code negative numbers. Might want to mention that.

Upon closer closer inspection ‘uint’ is acting like a template for ‘uint32’, ‘uint64’, ‘uint128’, etc. As a scientific programmer I find that both very awesome and very sloppy (for hardware-in-the-loop purposes). Even C allows you to slice off memory by-the-bit for extreme efficiency.

And speaking of: where are the floating point types? What are we coding here, a BASIC Stamp?!? What if I wanted to send $4.95?

I’m not even asking for anything mathematically useful like Fortran’s ‘complex’ or a ‘rational’, or a ‘quaternion’ type. Solidity thus far seems useless for engineering problems like orbit mechanics or drone control systems. And I suppose that’s fair considering the gas costs.

So apparently Solidity is designed for bean counting–WHOLE beans only! None of that split pea nonsense.

1 Like

Where are mappings in ethereum stored?
somewhere in memory? storage? :thinking:

welcome to programming, where most of the time you are searching why something doesn’t work :grinning: #debugging

5 Likes

sending 4.95 dollars in ether is just some number in ‘Wei’

1 Like

That’s right, ethereum (the EVM) doesn’t support floating point numbers. Due to the nature of floats and their unpredictability we can’t use them in a consensus based system.

1 Like

Ok, I get why.
And all the floating points can be created in the JavaScript front-end.
I considered making a “Ye Olde Rational” type:

struct Rational {
    uint ordinal;
    uint numerator;
    uint denominator;
...
}

…but why waste all that gas.
Uncle.
After 25 years of scientific programming (in Fortran) Solidity feels like Flatland. https://www.youtube.com/watch?v=RbTUTNenvCY

2 Likes

@filip Seems using quotes on text in set function is not required. When pressing message with and without quotes result is the same.

3 Likes

Maybe it does. I can remember some time I had issues with that and I had to use quotes in remix. Maybe it has changed. However, it’s a good habit to have to put quotes around your strings. In truffle you would have to, for example.

1 Like

Dear @filip and colleagues, I have one question that I can’t figure out.
Why do I need to write Person memory newPerson; ?
Why can’t I populate the struct by writing Person.name / Person.age etc…

Is there a specific reason or it is just the syntax of Solidity?

The rest is all extremely clear :slight_smile: Thanks a lot!!

2 Likes

Great question!

The answer is that the struct that we create by writing struct Person {…} is just a definition of the structure. It’s like the architects drawing of a house, it’s just the definition of the house and not the actual house.

When we write Person memory newPerson we create an actual Person according to the definition we created. It would be like we built a house according to our drawings. And we can do that over and over again.

Was that clear? Let me know if you have more questions.

3 Likes

Hi Filip, you demonstrated in your first Solidity video how to increase the font size in the Remix editor by moving the mouse. But how do you do that? The Remix documentation seems to be outdated here. Thank you.

In the old remix editor you do it with these small + and minus signs. But I haven’t found them in the new version. But luckily, when you go to remix you can still choose to use the old version, which is fine.

image

Yes, I understand. However in your first video named “Build Tools - Remix Walkthrough” you are using the NEW remix editor as well (without these small +/- signs) and you are easily changing the font size, see your video at 2:40 min.

Oh right, I forgot about that. Thanks for reminding me of the timestamp. Makes it easy for me to check.

In the new editor you can zoom in with ctrl and “+” key or zoom out with ctrl and “-” key on your keyboard. Sorry for the confusion. With so many videos it’s easy to forget what I’m doing :smiley:

Perfect, now it’s working. Thank you.
This feature is quite hidden and the documentation is outdated, still showing the old +/- icons. Thanks again.

1 Like

Hey new to all this and I cannot find the “compile” tab… It’s on the left hand side in the course I’m watching but I don’t see it there on my screen. Anyone able to tell me how to find it?

If you press the Solidity button under Environments on the home page in Remix it should make all menus popup :slight_smile:

Hi Filip, I didn’t have any questions to answer in the Mapping Quiz. Regards

Can you see the quiz? You can try re-sizing the window, sometimes the quiz fails to display properly. Because I can see the questions correctly.

1 Like

I just took the mapping quiz and was confused about the last question: “What’s the main benefit of mappings compared to arrays?”
I said “Fast searches if the key is unknown”, but the right answer is: “Quick lookups if key is known”.
I thought that the problem with an array is, that the ID you assign to a user has to be memorized by the user. In a mapping we can just use their address. Therefore the user doesn’t have to remember anything to get his information. Did I misunderstood the answer or is there a mistake in my thinking?

1 Like