ton-society / grants-and-bounties

TON Foundation invites talent to imagine and realize projects that have the potential to integrate with the daily lives of users.
https://ton.org/grants
314 stars 138 forks source link

Creating a FunC Language Track on Exercism.org #125

Open SwiftAdviser opened 1 year ago

SwiftAdviser commented 1 year ago

Summary

This project is about creating a FunC language track on Exercism, an open-source code-academy-like platform. The project will involve creating a FunC language repository, a test runner, and a first lesson on the Exercism platform which supports 62 languages. Let's add FunC as 63rd!

Context

Exercism is an open-source platform that provides users with code tutorials in various development languages.

Currently, it does not provide tutorials for the FunC language, which is used to write smart contracts on the TON Blockchain. To remedy this situation, you could create a FunC language track on Exercism with a first lesson “Hello World” hosted on the platform.

Example

You can use the Rust language track for inspiration.

image

Goals

Deliverables

Definition of Done

Reward

chakzefir commented 1 year ago

Description of the footstep covers only one "Hello World" lesson. Should we add minimal number of lessons to DOD or it's not implied in this footstep?

SwiftAdviser commented 1 year ago

@chakzefir Yes, this footstep is focused only on the infrastructure for future lessons. So Hello World is one example for that.

chakzefir commented 1 year ago

I've created post, would be nice to get some likes and comments there. This is first step create a new track.

https://forum.exercism.org/t/create-new-track-for-func/3933

SwiftAdviser commented 1 year ago

I've created post, would be nice to get some likes and comments there. This is first step create a new track.

https://forum.exercism.org/t/create-new-track-for-func/3933

Cool! Thank you!!!

chakzefir commented 1 year ago

@SwiftAdviser seems like during discussion there I've done a commitment to Excercism 😁

So you could assign me here

SwiftAdviser commented 1 year ago

Hey @chakzefir, any updates? 🙂

coalus commented 1 year ago

Hey guys! Any updates here? If u dont mind, i would like to work on this footstep

delovoyhomie commented 1 year ago

@chakzefir, are you here?

chakzefir commented 1 year ago

Hey there sorry folks for getting lost, I've been using different github account. Let me try to resurrect this bootstrap task, if next week here will be no success I'll let you know to find somebody else for this.

delovoyhomie commented 1 year ago

@chakzefir, will you be able to continue the work further?

coalus commented 1 year ago

Hey guys! Any updates here?

If no, i would like to start working on this footstep

chakzefir commented 1 year ago

Hey, sorry for being missed for this time. I've actually finished with basic repo for hello world, I just didn't upload it.

I can try to upload this to this topic and see what they will say https://forum.exercism.org/t/create-new-track-for-func/3933/7

Anyway, would be happy to share or reassign continuation of this footstep to @coalus @delovoyhomie up to you

chakzefir commented 1 year ago

Now waiting for the exercism moderators answer http://forum.exercism.org/t/create-new-track-for-func/3933/8

chakzefir commented 1 year ago

Still in discussion to clarify the track and publish it. More details in thread on exercism forum

chakzefir commented 1 year ago

Still waiting for response on new track initialisation. They try to make the whole track out classic tricky algorythmic tasks, while I find this not comprehensive to give for newcomers. So our discussion is about the type of lessons and tasks.

delovoyhomie commented 1 year ago

@Chakzefir, let's publish a track. Why does the discussion last so long?

https://forum.exercism.org/t/create-new-track-for-func/3933/14

chakzefir commented 1 year ago

Discussed in personal messages in Telegram. Looking for Erik Schierboom to get the final approval and publish the course.

delovoyhomie commented 1 year ago

We, @chakzefir and I, have been working for a long time to create a FunC track, so I can confidently say that it deserves an award and can be assigned to the footstep.

chakzefir commented 1 year ago

Erik finally gave an answer (kind ping in X helped).

So, seems like to publish the track it's required to "implement at least 20+ Practice Exercises". Available practice exercises listed here.

We have several options:

  1. Try to convince to start the track different way (IMO it's wasting of time)
  2. Close this footstep and create new one or several to solve at least 20 exercises
  3. Extend this footstep and decompose it by steps and create Func solutions for 20 exercises.

"Hello world" and initial preparation for the tracks is done, so I think we can complete this one and create consequent footstep and decompose it by steps. I'm happy to help with communication and publishing of the whole track, but we need to attract more developers to make a Func solution of exercises and put them in track.

@delovoyhomie wdyt?

delovoyhomie commented 1 year ago

@chakzefir, could you prepare a track with 20 milestones here, for each of which a reward will be assigned? I would like you to finish this footstep with a revised reward.

delovoyhomie commented 1 year ago

@yash0501, this footstep and #294 are very similar and could you please do the same things in footstep #294, as I described in the comment above?

yash0501 commented 1 year ago

Yeah sure @delovoyhomie. I got the repo set up by exercism for Tact track and would be completing the hello world and then creating a list of problem statements that we can do for this track from this pool of problems.

delovoyhomie commented 1 year ago

https://github.com/exercism/func

yash0501 commented 1 year ago

https://github.com/exercism/tact This is the tact repository

chakzefir commented 1 year ago

This week I have hard schedule, so I created only draft, next week I will finish and publish it here.

chakzefir commented 1 year ago

Context

Based on the rules of Exercism community, every new language learn track must have at least 20 Practice Exercises. I've chosen the most suitable (imo) exercises to demonstrate the basic things about Func lang.

DOD

  1. Every exercise has to correspond the guidelines, be executable and covered with tests.
  2. When ready, exercise has to be Pull Requested to https://github.com/exercism/func/tree/main/exercises
  3. When PR approved, exercise's author get their reward (see rewards in proposal)

Exercises proposal

# Name Reward Comment
1 Hello world - Already done, need to merge to main track
2 Armstrong numbers 200$ Show basic arithmetic operations here
3 Flatten array 200$ Maybe we can work with the dict here
4 Difference of squares 200$ Count and compare
5 Error handling 200$ Show how we can handle errors in Func
6 Forth 300$ Your favourite stack based operations
7 Gigasecond 200$ Work with dates and 9 zeros
8 Change 200$ Swap coins evenly
9 Isogram 300$ Something very classic to demonstrate how to work with letters
10 Bank account 400$ Almost wallet contract
11 Largest series product 200$ One more thing to show how to work with arithmetics
12 Leap year 150$ Should be easy if with some count
13 List operations 300$ Would be nice to show how people can work with lists in Func
14 Perfect numbers 300$ -
15 REST API 300$ Might be good to show how get methods works with REST
16 Reverse string 150$ Func string magic under the hood
17 Tic-tac-toe 400$ Play some games
18 Variable length quantity 300$ -
19 Poker 400$ One more game
20 Binary search 300$ Some classic CS stuff

The full list of available exercises is here. You are able to propose something more suitable for Func.

chakzefir commented 1 year ago

@delovoyhomie for you to validate the upper comment with continuation of current footstep.

chakzefir commented 1 year ago

Wallet for reward: EQA-3pWU9ty6RAuip13-cMm9GujAsEa0HfVmDTA4gInCjUNr

@delovoyhomie