-
-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
concepts for this track #513
Comments
Good to start this one off First off, @samWson kicked has already done some thinking around this: #444, and has specced out a His ideas of using the Ruby track concepts seems good, although it seems weird that they haven't stuck I really wouldn't borrow the C# list - the concepts are going to be too different as the languages are too different. @samWson We can do this slowly, and incrementally. So what would come after objects and message passing? We could cover:
Just a note to finish: think we'd have to explain blocks before we explain conditionals in Pharo! Isn't this an amazing language? |
Another thought: Pharo as a community is full of people who spend a lot of time thinking about how to teach Pharo. |
Final thought: we could just rip out examples from Pharo By Example and go with them. |
Whatever we do we'll need to introduce new tooling into the dev environment to create a concept exercise. |
There is already a list of concepts and challenges which can be used. |
Hi guys! My 2 cents here:
I agree with Dave, we don't need to create very comprehensive list of concept exercises, but start from very little things expading to more advanced details. Pharo (as direct successor of Smalltalk-80) have special unique features that might be diminished, if we will use traditional terminology used along other languages. |
can be, but that is the way the exercism maintainers want that concepts exercises looked like. But that is not what the users see. that document on #439 is too document our steps so the next maintainers or contributers know what they may change or not |
I don't understand much of your first 2 sentences. And I didn't propose any story telling. But anyway: I don't think there is any strict guideline/prescription how to prepare concepts by Exercism maintainers. It is up to us and I believe most of "Small Pharo-specific concepts" can hit one or more items in the terminology mentioned in the reference document. |
What I mean is that the exercism maintainers has written guides how a concept challenge must look like. |
I think I see the tension here. @Bajger is correct; we should try to make the concepts as atomic as possible. However, we still need them to be "big" enough to hang an exercise off. I'm not sure we could do that with something as small as Needs some thought... |
@gypsydave5 we can help out with that if you want |
The tension is that I think we need to use the concepts and challenges already present in exercism and David finds we have to make all the concepts and challenges ourselves. @SleeplessByte @gypsydave5 @Bajger |
You don't need to use concepts already present :) |
yes, but why think of something and making it when it's already present |
I think the point would be that the list of Exercism concepts and exercises are a starting point, not an exhaustive list for all languages. Take a look at the Common Lisp ❤️ track; quite happy to define their own very CL specific concepts (cons cells, lambda lists) outside of the concepts suggested. Sure, there'll be some crossover, and we can reuse some exercises. But we shouldn't feel constrained. Let's think about Pharo concepts! Then think about more general concepts, then think about some exercises - hopefully using some of the prior art in the other tracks. |
I can live with that but I think concepts like learning the pharo ide is not good. But if someone have a sort of list im happy to respond |
I agree, if only because it's hard to write an exercise around that! |
Hi guys! First of all, I don't think there is any 'tension' :) It's good to have correct discussion about how can be concept exercises approached. As explained before and from what I understood, we can have concepts tailored to Pharo (similar to Lisp) and are special in Smalltalk world. To be honest, it would be quite boring to explain "loops" "if statements" in regular way. Just an example: "Messsage sending" is key concept, where difference between "calling a function" (in mainstream OO languages) would be explained and why this important. What is Difference between Message and Method and what types of messages are implemented in Pharo, what is precedence, what is selector, etc. Such exercise can be mapped to "Duck typing" concept that is listed Exercism concepts.
@gypsydave5 Yes - definetely Objects needs to be preceding the Message sending. (MessageSend, Message instances are objects too ;) ) |
of course, we have to have concepts expecially for Pharo. Maybe time to make a list of 5 concepts which a real beginner should learn. IM thinking of
message sending string manupulation blocks if then. to learn that we use ifTrue and ifFalse but then the user schould first learn blocks |
@gypsydave5 @Bajger no feedback ? |
I'd say ...
doesn't really sound basic to me. Basic for me would be implementing a unary method that returns a constant object, which would cover message sending (and unary messages), and methods, and objects. Hey, if we can cover this as a class and an instance, we'd be covering what the blue book calls "the vocabulary with which Smalltalk is discussed":
Maybe that's a good measure of "basics"? Then I'd try to cover all the flavours of message: Then I'd introduce arithmetic as an example of binary messages, noting the evaluation order. Then keyword messages. And on from there to blocks (then conditionals), and another thing for strings, and then for the collections API... "Everything is an object" is actually a quite advanced concept when you think about it... 😄 |
I know for solving the lasanga challenge. You need to use the message with 1 argument and the message with zero arguments. but if you know a challenge about all kinds of messaging without the order Im happy to implement it |
When you go to detail, then it is, however purpose of this is not to show every detail of complete Pharo/Smalltalk object model (with metaclasses), but to express main difference compared to other languages (like that there aren't any primitive types and even usual syntactic elements (like control flow) are implemented via objects and messages). Pharo MOOC goes by similar way.
If you want, I can try to prepare .md file (via PR) with initial set of basic concepts with rough description what's inside (including code snippets to be done). It is better than to discuss particular items via issue comments. You can then do review of concepts on .md file. Such .md could serve as initial source for each concept exercise. |
Oke, I would say go ahead. Maybe then will be more specific. I know most of the tracks uses a format like done in the basics challenge #439 |
No respons. Then I think this project is dead |
Hello,
I think for the concepts track we can borrow the list from c#
like this one : https://exercism.org/tracks/csharp/concepts
What do you both think
@Bajger @gypsydave5
The text was updated successfully, but these errors were encountered: