this post was submitted on 25 Feb 2024
101 points (100.0% liked)
Programming
17668 readers
168 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
If anyone hasn't made the connection, mxcl is the infamous Google interview binary tree guy
What happened there?
He had an interview with Google and they asked him to invert a binary tree, which is essentially taking a tree of data and swapping the positions of all sibling nodes.
While most people agreed it was a pretty pointless question to ask at an interview, mxcl had a full "don't you know who I am" shit fit on social media.
Maybe this? https://www.quora.com/Whats-the-logic-behind-Google-rejecting-Max-Howell-the-author-of-Homebrew-for-not-being-able-to-invert-a-binary-tree (his own version of what happened)
I remember that from ages ago. It was very, very cringe-worthy. I think it's the fault of whatever shit bootcamp he attended to learn his 'craft' for using imperative languages to teach DSA, if they taught him DSA at all? That is why in real universities they mostly teach DSA with functional languages. I studied 'programming' (not CS, 'programming') in a college which by American standards would be considered 'junior', for 3 semesters, and they, too, did not touch on functional languages. It was not until I had dropped out that I learned how to do FP using SML, Ocaml, Haskell, Scheme etc. That was when I 'understood' DSA for real.
Truly, this person is an embarrassment. I am currently working on an implementation of Appel et al's ASDL (github.com/Chubek/ZephyrASDL, check the new_version branch!) and it now emits decent C code, so it is time to write the man page (it currently has a sucky one) and the TextInfo. I COULD potentially have ChatGPT make both, it is very decent at doing so. But see, I am not a moron. So I use write them in Markdown and have Pandoc make the final markups.
Truth is, if you know your tools, if you know how to use a DSL-driven approach to programming, you won't need to use AI to generate your code. You don't need to go to Harvard to know DSA, neither a junior college like mine. Just grab CSLR and read it on your spare time!
I think this person is the guy behind Homebrew. I don't know why he thought Homebrew is an accomplishment that would give him immunity from knowing basic DSA
which in real world, is what programming is about. Package managers have existed since the dawn of time. Linux has like dozens of package managers. His package manager being 'unique' on MacOS does not mean it's an accomplishment, it means MacOS sucks cocks!
Basically, when you start a project, think: can I turn this project into a paper? If you can't, then it's worthless. He could have just strapped Pacman to be built on MacOS and called it a day!
These days, employers are looking for people with theoretical, constitutional knowledge. Any monkey can code. I let ChatGPT aid me with a lot of my C code, it's very decent at generating C. Like I need a Makefile, it makes it for me. I need a print help function, it makes it for me. There's nothing wrong with using AI to 'help' you, but don't use it in vital shit!
But, if the code that AI generates is as good as the vital backbones of your software, maybe save up some money and go to college if you haven't, a 2-year degree at a junior college will be good. I am going back to college next year and I am 31! There's nothing wrong with being an old student.
Just don't expect people to suck your dick when you don't know how recursion works!
What's DSA ?
It's a term that generally refers to the more 'mathematical' side of programming, as opposed to the more 'practical' side of things. I believe it means 'Data Structures and Algorithm' so its a generalization of 'meaty' programming. Think, someone who writes shell scripts does not need 'DSA' to oil his grind, but someone needing to write a compiler does.
Now we live at an age where you can generate a shell script with a simple prompt, and hell, you could piece-meal a compiler, but it's not as straightforward. If one wishes to make moola in the post-LLM world, one needs to have strong theoretical and constitutional foundation.
At this point, any employer who hires more than 1 person for the 'simple tasks' is doing charity. And charity ain't what employers known for!
That is not to say, don't use AI in your work. I believe AI is the BEST way to learn DSA. In fact I straightened a lot of my misconceptions using ChatGPT. Like, I have written 2 compilers and abandoned them because I never meant to finish them, it was an excuse to prompt ChatGPT with more complex requests and do some reckon on my knowledge. I managed to do 'basic' SSA with ChatGPT, and anyone who has read a compiler book or taken a class knows SSA is not easy. I generated the SSA, and confirmed with the SSA book that I had. IT was very decent. But ther SSA book was very 'crude' and ChatGPT's example was really, well, 'uncrude'? So it was a GIANT help in me understanding SSA.
So if you need to learn DSA, I can recommend these three steps:
1- Learn a functional language or LISP-like language, Scheme, Racket, OCaml, SML, Haskell, etc. These langauges are extremely fluid and scientific.
2- Read books. Just go on Libgen or Zlibrary and read books. I recommended SIpser's above (or was it in another post?) but there's dozens. I remember a book called "Grokking Algorithms" which was really good. I read this book when I was sick with Covid, Steven Skiena's "The Algoritmh Design Manual" and it seems like everyone just LOVES this book. I mean it, try it, it's the best. If you can, buy it, because it's very precious. Also, keep a copy of CSLR/CLSR or whatever as a reference on your desk, PC everywhere.
3- Piece-meal ChatGPT into designing you a complex application. It really helps if you got an aim. One thing I recommend is Genealogy software. Make a Genealogy DSL perhaps. Or a simple compiler.
My advice may not be sound, but some aspects of these were helpful for me.
Thanks for the advice. I was already pretty sure that learning DSA would take my programing to the next level, my previous algorithms have been thoughtful but could definitely be improved.
I've done some haskell for school, I must say the quick sort was quite impressive and the language itself was interesting. Lisp on the other hand seems really crazy ; I've done some for my emacs config but the things I'm reading from the sources are from another world, I'll read the elisp introduction some day and maybe I'll become one of those magicians lol
I don't really use AI but I could ask for some advice on my next school project I guess. Do you ask it for straight up code or a more global archetecture ?
I give it half-baked code and ask it to complete it. Like say a few days ago, I wanted to implement NFA and Thompson Consturction. So I wrote this:
This is how you get good results from it. Do half the work.