I still remember my 12th Grade! Pointers in C was like a nightmare for me. 😄
What were the hardest concepts for you, and how did you approach them?
I have to take one step backward and say "Turing machine" and how we can perform a simple addition with this not that simple machine.
I have to admit, I'm still junior, but the thing that gave me most problems and still gives me some is the passage by reference.
I code mostly (almost exclusively) in PHP, and this concept is really the dumbest thing that gives me proble. I mean like "some vars are passed by reference by default, some aren't, but you can add & before some to force passing by reference" bla bla bla.
So in the end, I avoid using passing by reference and find other solutions.
For me it was C++ - pointers and STL/Templates. The most complicated feature of C++ is templates, because of their power and awkward syntax. It isn't hard to use pre-written ones, and it isn't hard to write a simple templated class or function.
Callbacks. For me they were so hard to grasp.
Monad.
Since I was at first learning by myself, I tried a lot of languages. I tried Haskell too, but Monad is very abstract. Sometimes people say it's in jQuery, sometimes people say it's in Promise, sometimes call it flatMap, sometimes in Category Theory. They are very confusing words. And Monad is never something so real that we can learn from the real world.
I read tens of posts on it after I read the guide(Learn you a Haskell). And years after I read the guide again and began to know it's a structure for computation defined with abstract data types that is common used. Turned out to be simple, it's from Math. However, took me so much time to understand the abstraction from so many facts I see during the years.
And even I have known it, I still can't write code very easily with it.
I would have to say the concept of memory, like Java's garbage collection, and virtual memory. Really less about the concepts of the language but the underlying architecture they never teach you about in college.
When I was still in school I struggled with pointers in C. I understood the higher level concept but struggled with the implementation. Other difficult concepts to grasp have been recursion and analyzing performance of an algorithm and representing it with Big O.
So the hardest part, which is not related to programming only, is to know that something already exists and all the terminology.
As a professional you never know everything, you only must know where to find.
I'm still newbie :) what I'm struggling with it now is recursion i got the concept but when it come to implementation i get dizzy so quick
Pointers indeed, but also arrays was complex for me to understand. Also I remember how it was hard to understand the process of an HTML input going to the backend :D
When I first started way back in 1984 with my Acorn Electron, programming itself was the challenge! There was nothing to lean on except INPUT magazine and the occasional snippet or two in the few books I could get my hands on and I knew just 1 other person with a computer but they weren't even aware that programming was a thing xD
In the beginning, to me, it was fluent API's; especially in Java. Writing REST API's was a pain with all those chains. And each Object had its variety or allowed only certain chains to appear in particular order. Defining a Response-header, the content type, the body and HTTP state was always a pain when I was forced to use fluent API's.
someone("me").can(new Task(Magic.class)).do("magic").stuff(new CardTrick("Know the number"));
"How can one know all the chains?"
Or
"It's impossible to write such by me!".
Then I got curious about Node.js and thankfully, some crazy genius people created the concept of 'then' - the later so-called 'Promise A+' spec. I read the documentation, and it did the trick to me.
Form method get and post, haha -
This was back in the mid 90s / mid teens - documentation was garbage obviously - I knew how to create a form and input fields but it took forever to realize that data had to post to some sort of language NOT html in order to do anything with it.
Which is why I probably fell in love with PHP. Compared to the only real alternative - CGI-Bin - PHP made it really easy to process that form request.
Wow, people always talk about pointers and OOP when asked about what was the hardest thing for them to grasp. But I grew up with OOP in Delphi and pointers are just that: pointers. In Delphi, you have to explicitely announce that you want to to use a pointer, else everything is auto-deduced, so I had an easy start into pointers by explicitely using them where I wanted instead of where needed.
Yeah, I never really had problems with them. My teacher at the time was awesome and explained to me, how a simple int-sized pointer could reference an array or any other structure in memory, so it was clear and easy.
So, thinking back, the hardest part about programming was finding the motivation. It took me nearly a year to find the motivation and the concept of "always learn" (or "never settle", to quote OnePlus). After that, I went on a programming spree, and never stopped, finding interest even in difficult principles (like Rust's Composition instead of Inheritance).
What a coincidence, the same pointers in C is what made me fall in love with Java. It was so hard for me to get into, I immediately started breaking up with C. All I did was, learn other concepts, pass the exam, do some small programs for understanding. Once that's done, I was off to Java land and till today sticking to it!
Marlen Garcia
Web Designer and Blogger
Object oriented programming in Java and VB.Net
It was a horrible experience. I have to import a lot of libraries just to accomplish a simple OOP-Java task. Then followed by OOP-VB.Net. Those two subjects almost stopped me from graduating because 6 months for those two to master is too short in my own opinion. And the worst part, I can't rely to my professor because even my professor doesn't know much about it. I cant believe she is my professor because she dont know much about coding and sometimes ask me what to do after that on our finals project, they ask me to create a system in VB.Net and a simple java drawing.
So I have to indulge myself to a lot of web tutorials to learn and to pass the finals project. It was so frustrating but glad I passed.