cross-posted from: https://lemmy.world/post/24857168

I would like to code for a living and to contribute to open source projects and things, but my coding skills are absolute shit after taking online courses and watching video tutorials. How can I learn to code for real?

What I would like to learn is algorithms, web development (“full stack”), how layouts work (both in like kotlin compose and HTML) and how to read other peoples code. Maybe thats more than I can chew, but its probably good for me to try out many things before getting settled on one.

Now I have been coding for a while already (~ 4 years), but I kind of feel like I need more guidance to be able to actually create code that works as intended intentionally, and not through trial and error / stack overflow. As for what level i am at, CS50 is probably my only qualification, I have played around with APIs (I.E. making discord bots), and made some html “apps” (horribly made, but things like the “genius” game and a calculator) and “prototype” react websites (as in, really bare bones, barely working).

I do plan on taking CS or something similar, but i’m not yet in college, and I would like to have a good head start before getting there.

Sorry for my bad English, and any help is appreciated.

  • @ChilledPeppersOP
    link
    English
    22 days ago

    I will try to guess how that works!

    keep in mind that I have no clue on how BASIC sintax works lol

    1 -> function declared
    2 -> variable x and y initiated to values 0 and 1.
    3 -> for loop created that goes from 1 to 26 (updating variable N)
    4 -> Variable R is created, its value is the square root of (x^2 + y^2). Xs and Ys values are set to be themselves divided by R.
    5 -> P variable created (it stores the value of PI), and set to (2 ^ N) * square root of (x - 1) ^ 2 + y ^ 2. Lastly X is increased by one
    6 -> Proceed only after for loop is done
    7 -> return the variable P

    (I do recognize I just transcribed the code, and I also made an implementation in python of it, lol)

    now for why that works ill figure another time, its 12:30 pm here and I am eepy :). But I have recognized that X tends to 2 and Y to 0.

    and I am pretty sure this implements the algorithm of creating higher and higher “resolution” circles so starting with a triangle and adding more and more vertices (vertex?). Ill edit in the full explanation late :)

    here is my implementation:

    
    def CalcPi():
        X = 0
        Y = 1
        P = 0
    
        for i in range(1,26):
            R = sqrt(X**2 + Y**2)
            
            X = X/R
            Y = Y/R
    
            P = (2**i) * sqrt((X-1)**2 + Y**2)
            X += 1
        return P
    
    • @over_clox
      link
      12 days ago

      Proceed way past 26 if you want more accuracy, assuming the CPU can handle more accuracy (most likely these days)…

    • @over_clox
      link
      12 days ago

      I’m impressed!

      Too lazy to test your version of the code, cuz I don’t think I even need to. You understand the code from the start!

      Wonderful! I love my π circles round…

    • @over_clox
      link
      12 days ago

      Looks perfect to me!

      Hell, resembles my first variation of the code back around the year 1999