Discuss Scratch

-Io-
Scratcher
1000+ posts

Object-Oriented Programming

Hello, duplicate

Man, i'm not going to read the whole discussion. But it feels like an attack against DaSpud.

I agree with DaSpudLord. This whole idea is too complex for a language like this, a block-based language directed to kids.

  1. First of all, to people arguing against DaSpud, having programming knowledge doesn't give you the right to suggest concepts which not many people understand. You, Chibi (or should i call you Matoran?), even said that the current main community focus of Scratch is mostly not coding.
    It may have various projects where people do formally program, but most of them still not have as much programming as an ideal programming community, like most text-based programming communities, would have.
  2. Adding such complex features, does raise the low floor. Not in the way of features, but in the way of people's desire to program.
    Seeing complex stuff slows down people in wanting to learn something. Some people don't want to learn math because it's too complex. They feel like they will not succeed when they see older grades' text books. But when they reach it, if they understood, at least mildly, past concepts, they will grasp it easily, or at least they will grasp it.
    Also, there's a difference between math and Scratch. Math is completely obligatory, while in Scratch mostly only the basic features are obligatory, or not even in the educational program of school or even life, and that's why they keep going, and learning math, not because they want to, but because they have to.
  3. How do you plan to implement this? Direct translation?
    class [example] :: cstart custom
    public :: cstart custom
    variable [var1] :: custom
    list [list1] :: custom
    end
    private :: cstart custom
    variable [var2] :: custom
    list [list2] :: custom
    end
    init (arg) ◄► :: cstart custom // for some reason i can't use "constructor" in scratchblocks. I'll report it to blob
    set [var1] to [test] :: custom
    add [test] to [list2] :: custom
    end
    method [say aaaa] (arg) ◄► :: cstart custom
    say [aaaa]
    end
    property [type] :: cstart custom
    return [example] :: custom cap
    end
    end
    set [var v] to (new [example v] :: custom)
    set [prop v] to (property [type] of (var) :: custom)
    method [say aaaa] args: [] ◄► of (var) :: custom
    Or what? Because this seems to complex…

This is an extended version of my reasoning for no supporting the original topic describing this feature, and preferring BookOwl's suggestion instead.

EDIT: Little edit. Forgot to reply someone.

BurnedCrystal wrote:

Essentially you're saying the newcomers here are too unintelligent to understand something as simple as putting toys in a box based on their color
Problem is, this is not sorting toys, but a much more complex concept

Last edited by -Io- (April 9, 2016 21:05:12)


gdpr533f604550b2f20900645890
Scratcher
1000+ posts

Object-Oriented Programming

I said in my topic that I knew that other OOP suggestions existed already, but my way of implementation was different (mine uses variables and this uses clones). Honestly, I think my OP was more thorough than this one.

I think that OOP is an important concept to understand to succeed with today's popular languages.
BurnedCrystal
Scratcher
100+ posts

Object-Oriented Programming

-Io- wrote:

Hello, duplicate

Man, i'm not going to read the whole discussion. But it feels like an attack against DaSpud.

I agree with DaSpudLord. This whole idea is too complex for a language like this, a block-based language directed to kids.

  1. First of all, to people arguing against DaSpud, having programming knowledge doesn't give you the right to suggest concepts which not many people understand. You, Chibi (or should i call you Matoran?), even said that the current main community focus of Scratch is mostly not coding.
    It may have various projects where people do formally program, but most of them still not have as much programming as an ideal programming community, like most text-based programming communities, would have.
  2. Adding such complex features, does raise the low floor. Not in the way of features, but in the way of people's desire to program.
    Seeing complex stuff slows down people in wanting to learn something. Some people don't want to learn math because it's too complex. They feel like they will not succeed when they see older grades' text books. But when they reach it, if they understood, at least mildly, past concepts, they will grasp it easily, or at least they will grasp it.
    Also, there's a difference between math and Scratch. Math is completely obligatory, while in Scratch mostly only the basic features are obligatory, or not even in the educational program of school or even life, and that's why they keep going, and learning math, not because they want to, but because they have to.
  3. How do you plan to implement this? Direct translation?
    class [example] :: cstart custom
    public :: cstart custom
    variable [var1] :: custom
    list [list1] :: custom
    end
    private :: cstart custom
    variable [var2] :: custom
    list [list2] :: custom
    end
    init (arg) ◄► :: cstart custom // for some reason i can't use "constructor" in scratchblocks. I'll report it to blob
    set [var1] to [test] :: custom
    add [test] to [list2] :: custom
    end
    method [say aaaa] (arg) ◄► :: cstart custom
    say [aaaa]
    end
    property [type] :: cstart custom
    return [example] :: custom cap
    end
    end
    set [var v] to (new [example v] :: custom)
    set [prop v] to (property [type] of (var) :: custom)
    method [say aaaa] args: [] ◄► of (var) :: custom
    Or what? Because this seems to complex…

This is an extended version of my reasoning for no supporting the original topic describing this feature, and preferring BookOwl's suggestion instead.

EDIT: Little edit. Forgot to reply someone.

BurnedCrystal wrote:

Essentially you're saying the newcomers here are too unintelligent to understand something as simple as putting toys in a box based on their color
Problem is, this is not sorting toys, but a much more complex concept

Pfft
icallcheapshot
I was referring to the applying the folder based architecture to sprites, but then it becomes my fault for ignoring more than half of his post's meaning

That aside for the ‘scratch is directed to kids’ argument, I'm still only in 8th grade. I count still count as a kid, so that's no proper argument
It's also designed as an entry to programming as a whole, so inclusion of some of the features of an OOP language couldn't hurt. (I'll be honest with you I'm just here for the folders mostly)

edited for clarity

Last edited by BurnedCrystal (April 9, 2016 22:22:41)


A block idea or whatever.
go [in front of v] sprite [sprite1 v] :: looks

Wow, this is a really empty sig. needs some defining features… ah!
Have a RAINBOW :)
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

Chibi-Matoran wrote:

I said in my topic that I knew that other OOP suggestions existed already, but my way of implementation was different (mine uses variables and this uses clones). Honestly, I think my OP was more thorough than this one.

I think that OOP is an important concept to understand to succeed with today's popular languages.
But
too complex for a language like this, a block-based language directed to kids.
And also too complex to their philosophy.
There are other languages which are able to implement it much better, and that you can learn there. We don't have to teach every programming concept in Scratch, do we?

EDIT: I actually like that phrase. I put it on my sig now

Last edited by -Io- (April 9, 2016 22:23:53)


gdpr533f604550b2f20900645890
Scratcher
1000+ posts

Object-Oriented Programming

Let's coordinate the migration to Snap!. Everyone, abandon Scratch! Sadly, Snap! doesn't have a community website…
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

Chibi-Matoran wrote:

Let's coordinate the migration to Snap!. Everyone, abandon Scratch! Sadly, Snap! doesn't have a community website…
Never said someone moving on had to move on to another community too. And also, most people moving on from Scratch might not even move on from the community itself, or they would even just leave communities alone.

Last edited by -Io- (April 9, 2016 22:27:07)


Jonathan50
Scratcher
1000+ posts

Object-Oriented Programming

Chibi-Matoran wrote:

Let's coordinate the migration to Snap!. Everyone, abandon Scratch! Sadly, Snap! doesn't have a community website…
Scratch SHOULD take lambda and custom reporters from Snap!. Then literally everything that can be computed at all, and every possible data structure or WHATEVER can be made in Scratch. (Edit: This sounds wrong, I know that anything that can be computed at all can be done in Scratch already) Honestly.
Google “church numerals” and “church pairs” if you don't believe me. And look at page 40 of the Snap! reference manual for OOP.

Last edited by Jonathan50 (Aug. 8, 2018 07:48:01)


Not yet a Knight of the Mu Calculus.
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

Jonathan50 wrote:

Chibi-Matoran wrote:

Let's coordinate the migration to Snap!. Everyone, abandon Scratch! Sadly, Snap! doesn't have a community website…
Scratch SHOULD take lambda and custom reporters from Snap!. Then literally everything that can be computed at all, and every possible data structure or WHATEVER can be made in Scratch. Honestly.
Agreed
Ring blocks are great, and easy to grasp. Custom reporters are really useful and constantly suggested. The mix of both will help a lot.

BurnedCrystal
Scratcher
100+ posts

Object-Oriented Programming

Filthy, Filthy bump

yeaaaaaaaaaaah

Last edited by BurnedCrystal (April 14, 2016 15:15:11)


A block idea or whatever.
go [in front of v] sprite [sprite1 v] :: looks

Wow, this is a really empty sig. needs some defining features… ah!
Have a RAINBOW :)
LFP6
New to Scratch
92 posts

Object-Oriented Programming

***NOTE***
Sorry about the length. This is a difficult problem, and I hope that I get across that just because it's complex doesn't mean that it's impossible to work. What I took so long to outline here is background information, thought processes, and proposed solutions with details on implementation. Just because it takes long to describe doesn't necessarily mean that it's a complicated workflow. I just simply don't have the time to code the systems I wrote and show it (showing with words necessarily takes longer).

Thanks for bearing with me.

-Io- wrote:

First of all, to people arguing against DaSpud, having programming knowledge doesn't give you the right to suggest concepts which not many people understand. You, Chibi (or should i call you Matoran?), even said that the current main community focus of Scratch is mostly not coding.
It may have various projects where people do formally program, but most of them still not have as much programming as an ideal programming community, like most text-based programming communities, would have.

I beg to differ. Just because many members may not understand how a function works, does that mean they shouldn't exist in Scratch? No, because it is an important tool, and something to be LEARNED. You're making it sound like learning is a bad thing, and if it's not immediately intuitive that it should be scrapped. I don't really understand how making more complicated projects easier to understand is a bad thing. I've heard the argument that the current setup is meant so that anyone can understand all the code being written, but at this point complex code is still begin written and is practically unreadable. The issue should not be focusing around “we shouldn't add features because they're confusing.” That's making a huge assumption that because the concepts are on a higher level, they can't be portrayed simply. The WHOLE POINT of Scratch is making this stuff easy to understand. So really, we should be focused on just making ti easy to understand. That solves the actual problem. (See later in this post for my suggestion on this) As was said, if you don't understand it, don't use it (probably using progressive disclosure to hide these things initially would be good). But you have a good point…

-Io- wrote:

Adding such complex features, does raise the low floor. Not in the way of features, but in the way of people's desire to program.
Seeing complex stuff slows down people in wanting to learn something. Some people don't want to learn math because it's too complex. They feel like they will not succeed when they see older grades' text books. But when they reach it, if they understood, at least mildly, past concepts, they will grasp it easily, or at least they will grasp it.
Also, there's a difference between math and Scratch. Math is completely obligatory, while in Scratch mostly only the basic features are obligatory, or not even in the educational program of school or even life, and that's why they keep going, and learning math, not because they want to, but because they have to.

As I said before, for the more complex programs that currently exist, they're a complete mess, and unreadable. How does cleaning up code make people feel any more overwhelmed or inept? As long as they're portrayed in a way that is simple and obvious, there shouldn't even be a problem with this.

-Io- wrote:

How do you plan to implement this? Direct translation?
class [example] :: cstart custom
public :: cstart custom
variable [var1] :: custom
list [list1] :: custom
end
private :: cstart custom
variable [var2] :: custom
list [list2] :: custom
end
init (arg) ◄► :: cstart custom // for some reason i can't use "constructor" in scratchblocks. I'll report it to blob
set [var1] to [test] :: custom
add [test] to [list2] :: custom
end
method [say aaaa] (arg) ◄► :: cstart custom
say [aaaa]
end
property [type] :: cstart custom
return [example] :: custom cap
end
end
set [var v] to (new [example v] :: custom)
set [prop v] to (property [type] of (var) :: custom)
method [say aaaa] args: [] ◄► of (var) :: custom
Or what? Because this seems to complex…

That's because it is. That is obviously verbose and confusing in that it doesn't match with Scratch's block-based paradigm. What you're suggestig is just replicating programming but drag and drop. Scratch itself already handles things differently. Think about variables, are they declared it code? Nope. How about functions? Are they connected to the rest of the code? Also nope. Let's back this up for a minute. How are functions implemented currently?

define Myfunction (SomeArg)
DoSomething::grey

Our function is simply an item—an object, if you will. Not a piece of code, but a visible object. We need to come up with a different visual representation of OO concepts. What are the notable parts of OO?
  1. Classes
  2. Objects
  3. Scope
  4. Abstraction
  5. Inheritance
  6. Polymorphism
(Credit to my dad for assistance where I have a lack of formal knowledge/terminology)

Seems like a lot of big words and complicated concepts right? Well, lets look into it a bit. But first off:

Notable Mentions:
  • Scope. This is definitely related, but it doesn't quite fit. Why? It's already taken care of, more or less. You know when you define a variable, when you decide if it's for just the sprite, or global? Yeah, that's basically it. Just might need to add more options for more control, an easy thing to provide with a progressive disclosure model.
  • Code reusability. Again, already kinda taken care of with functions and variables. This is important so that you can reduce the code you write, make it simpler to read (by abstracting details, showing you only what you need at any given time), and easier maintenance (by only defining things once, you don't need to change them multiple places). Of course, there's limitations to broadcasts (they're all global), which is the biggest thing preventing them from completely filling the role. There's also the issue of a lack of distinction for instanes, but I'll cover that.
  • Abstraction. This is basically why we're implementing the whole thing, and is reliant on the user coding well. Maybe someone can come up with a way to present this concept in the UI, but I don't really think it's necessary.

  1. Classes & Encapsulation
    The Concept: This is one of the most important and useful aspects. Simply put, this is just putting things into groups. This is where the “sorting toys” comes in. If they're related, you can put them together, and treat them as a group of things. This can improve readability a lot, as instead of keeping everything in one big group, you can keep them all nice and tidy. Quick to find things, easy to understand their purpose.
    The Solution: Unity-esque scripts/components. Now hold on before you complain that I'm using Unity as an example, I use it because IT WORKS. So the current set up of adding code/costumes/sounds to a sprite is cool. You make it, and add stuff, it's really simple. You can already have multiple costumes and sounds, so why not extend that to scripts? Make a list like those. Now that we've done that, we can extend the entire concept even farther by adding references. Instead of having a script/costume/sound directly defined in a sprite, you can create a sound/image/script and have it live in the “sprites” panel (which would then be called something like “assets”, “resources”, “materials”, “supplies”, or whatever). From there, you can just add it to the sprite like you would if you were adding a sprite from the Scratch library or your backpack, but it's in your own library and instead of completely copying everything, it would just be a reference (THIS IS THE CRITICAL PART, again a UI treatment needs to be made for this to work, this is what would make it work, whether it be some sort of link, visual designation, or whatever), which you could then open up separately from the sprite. This may sound complex, but I think that's mainly because I need to describe it in words. If you actually used it, and saw it visually, I think it would be rather intuitive (this would really just be a UI design problem, how it would be displayed, ina way that younger kids can somewhat relate to or at least grasp). If you really wanted, you could just have scripts defined as I described, and have a list of scripts you want to include, but I think that would wind up being more confusing. Could also use a block, but still seems ambiguous:
    AddScript[MyScript v]::grey

    TL;DR: Make everything modular, but instead of it being conceptual, actually have visible components (sprites, scripts, etc would all be treated somewhat as classes). That's kinda what Scratch does.
  2. Objects
    The Concept: Basically clones. You create instances of your classes, the caveat being thatif it's a static function, you don't need to do so (something which JS and Python conviniently ignore, for better or for worse, so we can probably just use that same idea that you can either call the code ddirectly or from an instance). The class is the blueprint, and the obejcts are copies of the blueprints.
    The Solution: To be honest, this is one of the biggest things that confused me about Scratch: When you create a sprite, there is automatically an instance of it in the scene. I don't think it would be too far fetched, along with the asset-level idea explained prior, to just simply require a sprite to be dragged into the scene to have an instance of it. Drag it more than once, you have copies. Ideally, more instance-level control could also be added, so from your code you can directly reference a particular clone (ie to adjust its properties or call some method on it). Would also be nice to have some UI panel to adjust some default properties, but I can see this getting nasty and real complicated real quickly, turning into Unity's prefab system, which can get a bit complex, but there may be ways to handle it that would make sense (ie defining variables for the clone that have a default, can be overridden, and reset), but it may just add unneeded complication and a barely-used featureset. I'd need to see it implemented.
  3. Inheritance
    The Concept: A class can add more functionality to a preexisting class.
    The Solution: I would imagine it would be best to have an approach similar to how I discussed classes. Use the similar reference idea, but basically the whole sprite/script would include such a reference, designated by soe symbol in the UI, a property in the sprite, etc. Similar to script references, any inherited assets would simply be a reference back to the original sprite (if that in turn is a reference, maybe there could be some sort of tree so you can go back to the source asset). Honestly not sure how many people would use this, it's possible that it's unnecessary, but I think this treatment could make it viable.
  4. Polymorphism
    The Concept: A child class can implement its own version of functionality in its parent.
    The Solution: Basically just use the above, but have an option to “override” the original, so instead of just seeing a reference back to the original, it would be copied over, marked as an override (by some big red image or something), and you can manually adjust it (or maybe revert it). As above, honestly not sure how many people would use this, it's possible that it's unnecessary, but I think this treatment could make it viable.

So, yeah, THIS IS A HARD PROBLEM. Why did I write so much about it? Because simply dropping it in wouldn't work. I think everyone is perceiving many advanced concepts in a way that does not consider a well thought out visual representation that works with Scratch's paradigm. If that can be achieved, I think that this is VERY much doable, but it does take work. Just consider, prior to Scratch programming for kids probably would've seemed nuts, and I wish I had this when I first started out. But even with that, I talked to someone developing a PYTHON environment for ELEMENTARY SCHOOL kids: There are young kids making Minecraft mods. They may not be good, but it's not an impossible problem. It just needs the right presentation. Of course, what I presented probably doesn't work. I fully understand there's probably better ways. But I ask you not to shut down the idea before you even consider HOW it COULD work. If you find any specific issues with what I suggested, definitely point them out. I would love to flesh this out even farther.

LFP6
Catholic, Tech Enthusiast, Musician, Audiophile, Media Creator
Jonathan50
Scratcher
1000+ posts

Object-Oriented Programming

LFP6 wrote:

That's because it is. That is obviously verbose and confusing in that it doesn't match with Scratch's block-based paradigm. What you're suggestig is just replicating programming but drag and drop.
Maybe you should say ‘replicating Java’, or ‘replicating C++/Smalltalk/whatever’, not ‘replicating programming’. Not all programming languages are like that, and Scratch is definitely programming already.

EDIT: OOP doesn't necessarily mean classes – the Self language and BYOB 3.0 both use prototyping-based OOP rather than class-based OOP.

I think BYOB 3.0's prototyping/sprite-based OOP would work well for Scratch.

Last edited by Jonathan50 (April 15, 2016 23:59:54)


Not yet a Knight of the Mu Calculus.
LFP6
New to Scratch
92 posts

Object-Oriented Programming

And yeah, my first list has stuff that I moved to notable mentions. I really need to do some stuff around here so i can get editing privileges.

LFP6
Catholic, Tech Enthusiast, Musician, Audiophile, Media Creator
LFP6
New to Scratch
92 posts

Object-Oriented Programming

Jonathan50 wrote:

LFP6 wrote:

That's because it is. That is obviously verbose and confusing in that it doesn't match with Scratch's block-based paradigm. What you're suggestig is just replicating programming but drag and drop.
Maybe you should say ‘replicating Java’, or ‘replicating C++/Smalltalk/whatever’, not ‘replicating programming’. Not all programming languages are like that, and Scratch is definitely programming already.
Sorry, bad choice of words. What I was going for is “traditional text-based programming”. Again, need to do some stuff so I can edit (being that this'll probably happen again, I'll just not say that any more).

LFP6
Catholic, Tech Enthusiast, Musician, Audiophile, Media Creator
zekrom809
Scratcher
75 posts

Object-Oriented Programming

Haven't weighed in on this in a while, but I've read the discussion and I've got some thoughts.

First of all: Just because you add something doesn't mean you're raising the floor. When you start out, you probably don't understand loops, so you don't use them. Someone please explain why new users can't simply ignore the feature, whatever it is, until they know it better?

Second: At the point Scratch is in now, I'd say there isn't even a ceiling. People can make amazing games, animations, whatever already; and if anything, adding features like this will lower it.

Third: This also helps in that it prepares you for actual text-based coding. I admit that it isn't one of the first things you learn, but it's definitely important, and since we're trying to help people learn to code, why are we omitting it?

However, I think that the anti-OOP people do have a point. It is rather complicated for new people, isn't it? But speaking as someone who remembers when they started (around age 10), it's not really that hard to get a grasp on new techniques. Look at a few examples, mess around with them, and you might understand it better, right? It's no more complicated than some of the games that people have been putting out recently! If people really want to use it, want to understand it, they can as long as they put effort into it. And Scratch is a great place for this kind of learning, since you can see right into other projects, to mess around, to learn, to add to it.

I do support this idea and would love to see it implemented. But I think for users that think it may be too complicated, there should be a toggle, a different editor; something to separate it from non-OOP projects.
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

@LFP6
Dividing it to different parts, named accordingly to the content of the post piece i'm replying to.
  1. Feature complexity
    All of us, of course, should be focused in making suggestions/ideas easier. At the end of my post and on a later post, another Scratcher and I suggested two things that would make Scratch much more flexible, and have the ability of doing these (and much more!) complex things in an easy understandable way, but not directly.

    -Io- wrote:

    This is an extended version of my reasoning for no supporting the original topic describing this feature, and preferring BookOwl's suggestion instead.

    Jonathan50 wrote:

    Scratch SHOULD take lambda and custom reporters from Snap!. Then literally everything that can be computed at all, and every possible data structure or WHATEVER can be made in Scratch. Honestly.
    Google “church numerals” and “church pairs” if you don't believe me. And look at page 40 of the Snap! reference manual for OOP.
    Both concepts, easy to grasp. When I was starting to learn Scratch, I actually expected the list reporter to report the list I'm referencing to, instead of joining it with spaces.
    Then, ring blocks, which you basically insert a block inside them and then the ring actually reports the block and doesn't run it. With a run/call block you could make custom reporters, easier 1 sprite 1 script projects, etc.
    This is how it looks in the awesome Snap!

    So, you could do this:


    Looks complicated, i know, but if you look at it without just saying “Agh! A bunch of blocks that don't make sense!” you can get the sense of it easily.
    That's basically:
    define all but last of (list)
    repeat ((length of (list))-(1))
    change [i v] by (1)
    add (item (i) of (list)) to (result::list)
    end
    return (result::list) ::cap custom

    (all but last of [list v] ::custom) // assuming "list" is the list [a,b,c,d], it returns [a,b,c]
    Of course, we shouldn't just keep the ring blocks and not add custom reporters. Custom reporters would be much more comfortable.

  2. Complex projects already exist
    Sadly, this is a problem for every programming language you'll see
    There isn't really a clean way of making big projects without ending up in a mess that someone wouldn't get the first time they see it.
    The cleanest way I see of implementing OOP to Scratch (remember, not directly! Those features are for other things too!) would be by the suggestions referenced above.

    Also, you don't see the complexity while creating with what we have now. By adding a bunch of blocks like class, property, method, etc.; or making it so dropping sprites in the stage creates instances, just overcomplicates stuff for a language as simple as Scratch, and when a young kid sees the whole lot of stuff you need to do to make things works just slows them down. That gives us a small chance of them continuing to program and learn, because they don't know anything.

  3. Unity-esque features
    Oh man, this would change every aspect of Scratch :S
    Personally, I feel like implementing stuff like this is somewhat dirty, unorganized, and confusing. Although I do understand everything about this, making it into a UI just deorganizes stuff.

    I don't have any grudge against this other than it changing a lot of Scratch and it being confusing and unorganized when turned into an UI. I feel like young me, as a dumb kid starting to program, wouldn't get anything a would have just dropped out programming.
Remember there's no need for this to be in Scratch. There's no need to teach everything on Scratch, just like there's no need to teach everything at school, and that you later learn the complex stuff in the university. You learn the basics – maybe some complex stuff – with Scratch, and then move on to text-based programming for the real deal.

@zekrom809
1. Not everything raises the low floor, but doesn't a complex thing in your math book just makes you not learn and not continue anymore because you feel like you'll fail or simply because you don't understand anything?
If you don't, well, most people feel like that with many things. You can see it everyday at school, at work, on the streets, most probably in your house too.

Random person wrote:

How do you use pen?

Random person wrote:

I just looked at the last subject in my Math book. I'm not going to pass school D;
2. There is a ceiling, and Scratch has it lower than a lot of other languages
Things that affect Scratch's ceiling the most are the speed and the the lack of features.
You can't do many thing without both of them.
3. Because the feature is just too complex to come up with an understandable way of adding it

-Io- wrote:

Remember there's no need for this to be in Scratch. There's no need to teach everything on Scratch, just like there's no need to teach everything at school, and that you later learn the complex stuff in the university. You learn the basics – maybe some complex stuff – with Scratch, and then move on to text-based programming for the real deal.
——

zekrom809 wrote:

the anti-OOP people
Excuse me, what?

liam48D
Scratcher
1000+ posts

Object-Oriented Programming

-Io- wrote:

zekrom809 wrote:

the anti-OOP people
Excuse me, what?
*googles “OOP is bad”*
*finds this, this, this, etc*

202e-202e-202e-202e-202e UNI-CODE~~~~~
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

liam48D wrote:

-Io- wrote:

zekrom809 wrote:

the anti-OOP people
Excuse me, what?
*googles “OOP is bad”*
*finds this, this, this, etc*
Too lazy to read all that. But anyways, i'm not anti-OOP!

zekrom809
Scratcher
75 posts

Object-Oriented Programming

Okay, maybe I didn't put that the right way.
Rather than “anti-OOP”, say “people who don't like this idea”.
-Io-
Scratcher
1000+ posts

Object-Oriented Programming

zekrom809 wrote:

Okay, maybe I didn't put that the right way.
Rather than “anti-OOP”, say “people who don't like this idea”.
Yeah, I know, it just was a little joke i did

LFP6
New to Scratch
92 posts

Object-Oriented Programming

@-Io-
To be honest, what you're suggesting is MORE complex, and I don't find it straight forward at all. If you read what I said, I'm NOT suggesting adding blocks for structures like class/method/property because I DON'T think it would work in scratch, and if used, THAT would completely change the approach to writing in Scratch. I'm simply suggesting that you can create additional scripts per sprite to split up code, and you have the option of separating out code/images/sounds into “files”. Yes, big projects can get messy. But you're suggesting that splitting up a program into multiple files is just as bad as using a thought-out directory structure. You're suggesting more control over data structures, I'm suggesting code organization. Personally, the latter is more important to OO, and I am really not sure how sorting assets into folders is dirty, confusing, a huge change to scratch, or a huge holdup to newcomers (I think it would be easier to sort through folders and references that than sorting through tons of primitive code to replicate data structures that could otherwise just be abstracted). If it was block-based, definitely it would be an issue. But I'm not really seeing you talk about my idea, unless you didn't understand that I wasn't talking about that kind of implementation?

LFP6
Catholic, Tech Enthusiast, Musician, Audiophile, Media Creator

Powered by DjangoBB