exercism / julia

Exercism exercises in Julia.
https://exercism.org/tracks/julia
MIT License
67 stars 69 forks source link

What was it like to learn Julia? #157

Open ErikSchierboom opened 5 years ago

ErikSchierboom commented 5 years ago

We’ve recently started a project to find the best way to design our tracks, in order to optimize the learning experience of students.

As a first step, we’ll be examining the ways in which languages are unique and the ways in which they are similar. For this, we’d really like to use the knowledge of everyone involved in the Exercism community (students, mentors, maintainers) to answer the following questions:

  1. How was your experience learning Julia? What was helpful while learning Julia? What did you struggle with? How did you tackle problems?
  2. In what ways did Julia differ from other languages you knew at the time? What was hard to learn? What did you have to unlearn? What syntax did you have to remap? What concepts carried over nicely?

Could you spare 5 minutes to help us by answering these questions? It would greatly help us improve the experience students have learning Julia :)

Note: this issue is not meant as a discussion, just as a place for people to post their own, personal experiences.

Want to keep your thoughts private but still help? Feel free to email me at erik@exercism.io

Thank you!

SaschaMann commented 5 years ago

Responded via email.

logankilpatrick commented 4 years ago

1) How was your experience learning Julia? What was helpful while learning Julia? What did you struggle with? How did you tackle problems?

2) In what ways did Julia differ from other languages you knew at the time? What was hard to learn? What did you have to unlearn? What syntax did you have to remap? What concepts carried over nicely?

The best thing you can do if you want to get started in Julia is to try and make stuff. Whether it be packages in some domain you have knowledge of, questions on Stack Overflow, or just basic programs for a class, making things and sharing them with the world is an awesome way of giving back to the community! Good luck on your Julia journey and always feel free to reachout for support/help along the way.

@iHiD

Donkeyfish87 commented 4 years ago
  1. How was your experience learning Julia? What was helpful while learning Julia? What did you struggle with? How did you tackle problems?

Nicer than other languages I've dabbled in, but not sure how much of that comes from me being a better programmer in general. Probably one of the most helpful things was reading exercism solutions from other people after solving it myself. Or similar write-read cycle in Project Euler or Rosettacode.

  1. In what ways did Julia differ from other languages you knew at the time? What was hard to learn? What did you have to unlearn? What syntax did you have to remap? What concepts carried over nicely?

Unlearn that loops are evil, which is what I'm used to from Python/Matlab/R. Multiple dispatch and how to overload things was difficult as a new concept. Python has similar syntax so most carried over, except writing in, and or or and get error a bunch of times.

At my level I'm still learning basics like algorithms and data structures, which probably carries over regardless of language.

Rigante-pl commented 3 years ago

I just started learning. And it's not like I'm advanced in other languages... so it's not a mater of adjusting syntax for me. I'm not sure If I'm target audience for this question, but here are some thoughts, about beginners perspective.

1) Tracks are very challenging for true beginners. Yes, you learn awesome things, looking into other solutions. But it's very hard to see them, unless you solve the problem on your own. Mentors are amazing. But from obvious reasons, waiting for their response if you are stuck, can take a while. And sometimes it's very hard to solve something without a hint.

For example, if you learned another language, you probably know some regex. But if this is your first track, you have no idea that it even exist. Before you'll look into how to use it to solve your problem (which is like learning micro-language on its own), you need to know, that it's something you need.

Possible solutions:

2) please make it mandatory to provide precise information about expected input and output - It's probably obvious, to you... just one look into test file right? But for beginners the test code is hard to decipher. Extremely demotivating if you're sure, that you have the right answer, but the test reject it due to wrong type, whitespace, or other "X" != 'X' type situation. And most project are very cryptic about inputs and outputs (refer to "triangles" project for example)

4) It's related to the previous one... please teach testing sooner (it'll probably increase the number of contributors as well - everybody has Ideas for a project... designing the test is a challenge).

5) That one is Julia specific: Do's and don't's of typing:

  • Python is slow, because no types
  • Numpy is faster, because arrays are one-type arrays
  • Julia is fast, and it can use types if you want... Conclusion: You should add types because it'll make your code faster....

And it isn't true, is it? It seems that Julia can do some fun things thanks to the functions that behave differently depending on the input type. It would be fun to see the challenge that take advantage of this.

That's it for now :)

Thank you for your amazing job!

iHiD commented 3 years ago

Hi @Rigante-pl Thanks for your comments. Very helpful to read. A lot of what you've said gets addressed in v3 of Exercism (coming soon), which has more formal "Concepts" that we teach with new exercises, focussed on giving clear instructions rather than relying on students using the tests. In fact we don't even show tests in Concept Exercises so you don't have to think about that. Also, a lot of what you say is true for more experienced developers, not just absolute beginners - learning a new language can introduce a whole load of new ideas that feel very familiar to more experienced people in that language. Please give v3 a good test once it's launched and let us know where you feel the areas we could improve are :)

Rigante-pl commented 3 years ago

Hi @iHiD, yes, I discovered a post about planned changes in v3 soon after I wrote it. Those are all great news. I do my best to test once it's released. But I'm a little disappointed that it's going to be all interactive challenges on the web-page. I know, It's a much smaller entry barrier. But instructions how to install, run, and submit projects are very clear now, and doing it makes me feel like I'm a real developer :) Like I'm lurking into arcane :)

Online exercises are great, but it can feel like doing Sudoku sometimes.

Congratulations you are at 10th level. Now please write siple program on your own. ... ... ... how?

I think there is some tangible value in learning how to work with terminal, file, editor...

iHiD commented 3 years ago

But I'm a little disappointed that it's going to be all interactive challenges on the web-page

It's not. The CLI is still there exactly the same as before :)

ErikSchierboom commented 3 years ago

We're closing this issue as it was part of our research for the v3 version of Exercism which has just been released.

Thanks everyone for chipping in! It has been greatly appreciated.

ErikSchierboom commented 3 years ago

We're closing this issue as it was part of our research for the v3 version of Exercism which has just been released.

Thanks everyone for chipping in! It has been greatly appreciated.

SaschaMann commented 3 years ago

I like this issue and there's still plenty of room in the WIP curriculum where it could be useful, so I'm gonna leave it up anyway.

ErikSchierboom commented 3 years ago

Sure!