Gave me nightmare flashbacks to when i learned prolog in my compilers course. I know they’re not the same thing but all those parentheses…
This seems like the right goal, but JavaScript is so weird that it seems like a bad thing to teach a kid. Python plus some kind of Arduino/Raspberry Pi type projects will be vastly less fussy while still creating a visceral reward. I also think most kids will respond more to making something happen in the material world with code than making a shitty webpage.
I vote python. Still very useful even if he doesn’t become a developer.
I’m not quite sure what kind of project we can do yet, I just wanna get him started on fundamentals first like control flow, looping, functions, list/string manipulation, objects, etc. this stuff is really easy in python.
For projects I think it would be fun to make a 2d game or something. But playing with a raspberry pi could be really, really fun for both of us too. I’ll look at cool pi projects. I’ll get a good sense in what he’s really interested in after a few meetings with him, it’s a pretty new thing.
Good idea. Very person dependent though. If they have an interest in design/art, then a webpage. If little robots or interfacing with their rainbird sprinkler system is more interesting, then python.
Don’t underestimate how much there is to learn though. Like people who are reasonably good users of computers nowadays don’t necessarily understand files, directories, what a command line is etc…
Teach him assembly so he can really learn the fundamentals.
Lol there are developers that dont understand these things either. Earlier this week I had to walk a developer through a few simple CLI commands and it became obvious to me after just a few minutes that he had never used the command line in his life.
I’m definitely gonna expose this kid to the command line because in my opinion if you wanna be a hacker or anyone who does any kind of systems level programming you gotta be intimately familiar with it.
It was a huge detriment to me that I never even touched the command line until my senior year. I didnt have to. I shouldve been forced from day one.
Shit, that just made me realize I’m probably gonna have to set this kid’s environment up. Didnt even think of that. Probably need some kind of noob IDE. I don’t want to expose him to vim yet. It’s too frustrating at first.
If he’s just getting started, does he really need an IDE? He could just go with Notepad++ and the console
What is weird about javascript other than type conversion quirks?
You should teach them javascript because python doesn’t look or feel like any other language.
Everything is weird about Javascript. The whole language is basically a thick but uneven shell of syntactic sugar around a seething ball of chaos, like some kind of demonic Tootsie Roll pop. Prototypes are weird, this
is weird, scoping is weird, the nested event loops are weird, the three different kinds of for
loops are weird, it’s all really strange.
Have you looked into javascript since 2009?
With python you won’t need any IDE or installation.
Just go to colab.research.google.com and you are in a python notebook and can just start going.
Her is my poor attempt at diagramming. Platform is blue, user is green.
Approach #1:
Platforms exposes APIs. User imports SDK (essentially a user-friendly wrapper around the APIs) and user calls SDK functionality wherever needed.
Approach #2:
User implements prescribed interfaces. Platform imports the user code and calls the interfaces whenever needed.
Does this make sense?
Still wondering: is there is a name for these patterns?
The diagrams help. But I still am curious the code that defines the prescribed interfaces comes from. Is it your code? Native code? 3rd party?
Or do you mean interfaces as actual code, or interfaces as in documentation that says “implement this method do X, implement this method to do Y, etc”?
I have no idea if either pattern has a name.
Or do you mean interfaces as actual code, or interfaces as in documentation that says “implement this method do X, implement this method to do Y, etc”?
This: we prescribe the structure and the interfaces, our users implement them.
I’ll give an example.
It’s python based. We ask you to add a folder to your repository called data_loader. In there you create a file called data_loader.py. It must define the DataLoader class with a method load_training_data. This methods must return either the feature set (X) and the labels (y), or a generator that yields X and y. As argument it takes an optional parameters and secrets object.
From our perspective this makes it possible to reason about your code. Using the example above, we know that when we need to load training data for you, we import data_loader, instantiate the DataLoader class and call the load_training_data method.
Maybe these patterns haven’t been defined formally yet. I’m looking to write about it, and because I do not have a CS background, I always feel like I miss part of the vocabulary to describe things that formally educated developers do seem to have.
If I would describe them informally, would it make sense to call pattern #1 a hands-off approach, and pattern #2 a hands-on approach?
In pattern #1 you get the means to use the platform’s capabilities and from there it’s up to you how to use it. The involvement is distant and needs to come from the user. I’d call this a hand-off approach, from the perspective of the platform.
In pattern #2 you are told how to structure your code, and the platform will be actively interacting with it. This is involvement is close, it’s a tighter embrace of your code. I’d call this a hands-on approach.
I’m not a native English speaker, so it’s hard for me to judge if this would be an fitting and accurate description.
Loosely Coupled pattern vs Tightly Coupled pattern?
EDIT: Joking, but aren’t you really talking about the difference between a service and a framework?
Isn’t this just a closed platform?
If I want to build an iPhone app I have to write code in a specified format and then upload it to the App Store. I can’t just host it on my side and use APIs.
A closed platform doesn’t have APIs, forces hosting on their servers, doesn’t expose the source code for me to edit, etc.
You are prescribing how to build certain parts of my software and then hosting it for me and adding value in some way as the trade off.