CS-insanity and things that make me want to quit
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
I feel that the whole point of your CS training is that : - One day, you may be placed in charge of maintaining and extending those very libraries which you are using today, - For which you need to know the internals of how those libraries are written. This training is the drill for that.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
I think you will most likely find in the real world you will never be asked to write Conway's Game of Life. Most business problems are far more complex and require considerable thought. People who try to do it by cut and paste tend to fail quite quickly. Or, worse still, the business fails because the code does not work.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
You have to be given problems that are simple enough that beginners can do them in a reasonable time: a few hours (because if they can't do it in that time, its' not going to get done at all!) If you were given as your first task "write the code for an industrial inkjet printing machine for traded- and consumer- units, including the user interface to this 50 page document" you'd go "Urk!" and abandon the course. Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug (repeat as necessary all previous stages as a result), cope with spec changes on a daily basis, ... all the little bits that "real world" developers have to do all the time. And even if they did, they don't have the time, and teachers don't have the time to mark it effectively for a whole class full. So teachers set little problems you can do, and work up to more complex problems that build on the basics slowly enough that you don't feel overwhelmed.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
My impression is that he's in a world of copy-and-paste. He may think of it differently. He may describe himself differently. His first source is to see what someone else has done and copy it. I'm one of those self-taught types. Wallowing in errors - and the thrill of solving one - and even more, all the stuff learned in solving it. And - like "way back when" with a paper encyclopedia or dictionary: after you look something up, how can you resist looking at some other things that followed it or preceded it since, after all, the book's already opened and before you. In C, I looped through an array using indices. Then I came across someone incrementing a pointer, instead, and using that? Why? It was a tool in my mind for recursive functions (like English-to-Piglatin converter). So much overhead just went away. Ah Ha ! Even his complaint is a rehash of Ecclesiastes. The difference, of course, is that Solomon experimented with changing his views and developed insights. As you know, I occasionally get harsh - but this guy's so full of himself. It is the one facet of his arguments that is consistent. Admittedly, I follow the philosophical hubris of Hannibal:
"If I cannot find a way I shall make one!"
(or know the reason why)
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
There is no point "reinventing the wheel." So, if you need to do a bubble sort in c# then google that and take one that works. It's faster and easier, but of course test it. However, most of software development is making specific business functions and you can't copy and paste that off of the internet. Some pieces of code are reusable, and that's a good thing.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
ZurdoDev wrote:
Some pieces of code are reusable, and that's a good thing.
Quite so. That's essentially why we make functions/procedures to begin with. And templates. To get quickly (and safely) through the parts that are the same so that we may get on with doing the real work.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
One way of looking at this : (using the bubble sort example) Do you understand how the bubble sort works? ; do you understand the underlying algorithm it uses and how it behaves with small data size vs. large data size (google big O ... ), do you understand how other sorting algorithms work and how they behave with small and large data size (i.e. quick sort, heap sort ... ) When you are asked to do some simple basic things like that, it is only a building block upon the rest of your CS education.
I'd rather be phishing!
-
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
And of course ... the dreaded Ham and Pineapple ... :laugh: Truly the VB of pizza!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
semantics. Some people say copy/paste, some people say OOP.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
-
And of course ... the dreaded Ham and Pineapple ... :laugh: Truly the VB of pizza!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
(originally) a Hawaii/West Coast thing. When I heard of it I was to shocked to even gasp. What next? Washing one's hair and face with Vaseline (petroleum jelly)?
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
You have to be given problems that are simple enough that beginners can do them in a reasonable time: a few hours (because if they can't do it in that time, its' not going to get done at all!) If you were given as your first task "write the code for an industrial inkjet printing machine for traded- and consumer- units, including the user interface to this 50 page document" you'd go "Urk!" and abandon the course. Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug (repeat as necessary all previous stages as a result), cope with spec changes on a daily basis, ... all the little bits that "real world" developers have to do all the time. And even if they did, they don't have the time, and teachers don't have the time to mark it effectively for a whole class full. So teachers set little problems you can do, and work up to more complex problems that build on the basics slowly enough that you don't feel overwhelmed.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
OriginalGriff wrote:
Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug
Yet that is where they should start: At "analyze a problem". That is what software development really is about - far more than coding, testing and debugging it. Or, so it ought to be. If you don't have to implement / test / debug, you can, early in your studies, analyze quite large systems and design the solutions - far larger problems than those you have the resources to code / test / debug. While you are learning methodologies for problem analysis and solution design (at an implementation independent level!), you should, in parallel, learn implementation, testing and debugging techniques, applied to small, manageable problems for a beginning student. But that is not the main focus of a software developer's education. The problem analysis and (implementation independent) solution design is. Modern education programs start with a typing course: Student learn to type "int main(int argc, char *argv[]) {}" first, and taught the finer details of lambdas, and only after that start asking what the problem is all about. That is to turn things upside down. But that is how we want it nowadays. Even if it is upside down.
-
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
Of course, its a good analogy. You can add a pepperoni to it, but it still follow the same recipe. Just like conways life of game, you can add some function, you can create a class, but you have to implement four for loops, and there is no other solution to the problem, so even if you sit down and come up with that solution on your own is not any different than the code that other people copied from the internet, and the teacher and the interviewer will not see a difference between the code that you fought with for a week and the code someone copied and just learn how it works. Maybe your variable's name in your loops is int row and int column but in his is int i and int j. Just like in pizza, in Ahmed's pizza is pepperoni, in Steven's is chicken but still is made from same recipe. There is no pizza made of rice or made of noodles. The same goes for those common algortihms. You can't invent anything new here. Bubble sort has only one solution, and you can name your variables different and maybe use some function but still it follows only one formula which you have to memorize. It's not the same when you create your own program. Here your imagination is the limit. You can make it whatever you want it to be. You can create your own game, with even more complex logic than Conways game of life. That's why I start to hate programming because I just reinvent people's ideas. I would like to come up with my own ideas not follow someone's formula.
-
semantics. Some people say copy/paste, some people say OOP.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
-
Of course, its a good analogy. You can add a pepperoni to it, but it still follow the same recipe. Just like conways life of game, you can add some function, you can create a class, but you have to implement four for loops, and there is no other solution to the problem, so even if you sit down and come up with that solution on your own is not any different than the code that other people copied from the internet, and the teacher and the interviewer will not see a difference between the code that you fought with for a week and the code someone copied and just learn how it works. Maybe your variable's name in your loops is int row and int column but in his is int i and int j. Just like in pizza, in Ahmed's pizza is pepperoni, in Steven's is chicken but still is made from same recipe. There is no pizza made of rice or made of noodles. The same goes for those common algortihms. You can't invent anything new here. Bubble sort has only one solution, and you can name your variables different and maybe use some function but still it follows only one formula which you have to memorize. It's not the same when you create your own program. Here your imagination is the limit. You can make it whatever you want it to be. You can create your own game, with even more complex logic than Conways game of life. That's why I start to hate programming because I just reinvent people's ideas. I would like to come up with my own ideas not follow someone's formula.
It appears, in the real scheme of things, you've given up on life. Back to your pizza. No rice pizza? Wrong! An imaginative person or person(s) made that. And also cauliflower pizza crust - solving the problem for those who can't (or won't) eat gluten. And pizza made with noodles? Wrong again: pizza with ziti as a topping. Or, look at it another way - by various names there are casseroles made with noodles, tomato sauce, and cheese. Well - someone without imagination points out that the noodles are just flour-and-water, so it's just the same. Did you ever have sex? OK - if so, did you try it a second time? It's always basically the same. You know what's curious? My coding theme is to do treat things just as you think about them - to try to make everything the same. Solve an extremely generic problem with as much of neither TRUE nor FALSE as decisions, but more of "DON'T CARE". In fact, if you abstract it enough, everything is the same - but then there are the accessories. But that's not at all how you think. Aside from your outright obsession with "Corway's Game of Life", you think seeing things the same is a bore - I see that as a way to build from the lowest common denominator extreme functionality. Your problems extend far beyond your CS classes - they just brought them to your attention
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Eesh, this is why I had to stop making pizza; got tired of copy and pasting pepperoni from other companies. On the serious side, look at your pizza analogy a different way. Each ingredient is a piece that has already been solved. You might not care how that cheese or pepperoni came to be, and you'll probably not have an improvement on how it's made, but you know it goes on that pizza. At some point, you learned how to use that ingredient, and why you might want it in the first place. You likely know what makes a good pizza topping, and what does not. In some cases, maybe you'll want to make your own dough. Are you going to reinvent dough into something the world has never seen? -of course not, but it can still be satisfying to make, even knowing others have already done so. At the end of the day, appreciate the learning of why you might want that/a solution, rather than just, "I know where to copy the answer from." Your creativity will certainly not suffer.
-
There is some truth to what you're saying, but it's also difficult to design "real world problems" that can be solved in a university setting. Depending on what school you're at, many of your instructors may not even have much real world experience, because there's quite a gulf between pure CS and software engineering. Many of your classmates probably wouldn't be able to handle real world problems at this stage anyway. In later years, there's typically a course or two where you work in teams, the same way you would in industry, because this introduces issues that don't arise when working on your own. The project that a team implements, however, might be something that's already been done, like a microkernel or a simpler version of MS Word.
Robust Services Core | Software Techniques for Lemmings | Articles
The fox knows many things, but the hedgehog knows one big thing.I'm so mad at myself... I took a loan for be able to make this degree. I was so stupid, now I'm stuck and I have to continue that path to get a job. Well, nevermind I just memorize all those algorithms just to copy them from my memory and explain to the teachers and the interviews what it is that I copied - they don't even know the difference. Let them be glad. Let me copy and paste all this crap from my memory, and take money in the end of the day... Whatever... If there is something that you find you love to do, don't be too enthusiastic, it's a trap. You will never do in your life what you love to do even if it's related to what you love to do. Life is a torture, whatever path in life you take... Sorry for all those messages, I'm so disapointed with life...
-
OriginalGriff wrote:
Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug
Yet that is where they should start: At "analyze a problem". That is what software development really is about - far more than coding, testing and debugging it. Or, so it ought to be. If you don't have to implement / test / debug, you can, early in your studies, analyze quite large systems and design the solutions - far larger problems than those you have the resources to code / test / debug. While you are learning methodologies for problem analysis and solution design (at an implementation independent level!), you should, in parallel, learn implementation, testing and debugging techniques, applied to small, manageable problems for a beginning student. But that is not the main focus of a software developer's education. The problem analysis and (implementation independent) solution design is. Modern education programs start with a typing course: Student learn to type "int main(int argc, char *argv[]) {}" first, and taught the finer details of lambdas, and only after that start asking what the problem is all about. That is to turn things upside down. But that is how we want it nowadays. Even if it is upside down.
I had actually one project that I hade to do for my school, and it was a small program that have different functions, but it was a whole program. This was the only thing I really enjoyed and loved to do and I learned much more about problem solving and algorithms than from those stupid exercises.
-
Of course, its a good analogy. You can add a pepperoni to it, but it still follow the same recipe. Just like conways life of game, you can add some function, you can create a class, but you have to implement four for loops, and there is no other solution to the problem, so even if you sit down and come up with that solution on your own is not any different than the code that other people copied from the internet, and the teacher and the interviewer will not see a difference between the code that you fought with for a week and the code someone copied and just learn how it works. Maybe your variable's name in your loops is int row and int column but in his is int i and int j. Just like in pizza, in Ahmed's pizza is pepperoni, in Steven's is chicken but still is made from same recipe. There is no pizza made of rice or made of noodles. The same goes for those common algortihms. You can't invent anything new here. Bubble sort has only one solution, and you can name your variables different and maybe use some function but still it follows only one formula which you have to memorize. It's not the same when you create your own program. Here your imagination is the limit. You can make it whatever you want it to be. You can create your own game, with even more complex logic than Conways game of life. That's why I start to hate programming because I just reinvent people's ideas. I would like to come up with my own ideas not follow someone's formula.
Why do you assume that there is only one solution? There is one algorithm for the GoL, but there are a huge number of different ways to implement it, many of which don't use a single for loop, much less four! And that before you even start thinking about multithreading solutions, pointer arithmetic, and so forth. Think about the first "only way to do it" for GoL: why do you want a 2D "board" when you can use a 1D array much more efficiently? Think about Bubble Sort: there are as many different way to implement it as there are developers actually writing the code! And when you've written it, it's obvious that it's not very efficient for most "real world" collections to be sorted, and that a couple of simple changes would vastly improve the efficiency, and implementing that and a testing framework to measure the improvements. Going in with the mindset of "it's all been done" is a major limit on how you can think about problems, let alone solutions...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
My impression is that he's in a world of copy-and-paste. He may think of it differently. He may describe himself differently. His first source is to see what someone else has done and copy it. I'm one of those self-taught types. Wallowing in errors - and the thrill of solving one - and even more, all the stuff learned in solving it. And - like "way back when" with a paper encyclopedia or dictionary: after you look something up, how can you resist looking at some other things that followed it or preceded it since, after all, the book's already opened and before you. In C, I looped through an array using indices. Then I came across someone incrementing a pointer, instead, and using that? Why? It was a tool in my mind for recursive functions (like English-to-Piglatin converter). So much overhead just went away. Ah Ha ! Even his complaint is a rehash of Ecclesiastes. The difference, of course, is that Solomon experimented with changing his views and developed insights. As you know, I occasionally get harsh - but this guy's so full of himself. It is the one facet of his arguments that is consistent. Admittedly, I follow the philosophical hubris of Hannibal:
"If I cannot find a way I shall make one!"
(or know the reason why)
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
There is an argument for ignorance being really useful - not only for debugging, where describing a problem to a moron can really help you work out what you did wrong, but also in the sense that if you don't know something can't be done, there is no barrier to your trying. And sometimes, just sometimes, you can get it to work and then it was obvious all along! I've done that a few times, and it's wonderful when you have the impossible working ... but most of the time you fall flat on your face, or set fire to the desk by accident :-D But this one comes over as a child: he wants to be handed solutions but he wants to "solve" really complicated problems without the effort of learning how. Sad really - particularly since it's costing him a lot of money to ignore the opportunities he has in front of him.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
Member 14971499 wrote:
I don't know what is the point of copying and pasting other peoples algorithms?
there are a number of problems which show up again and again in programming (call them patterns or algorithms or whatever). and as a professional programmer, you're going to spend a lot of time recreating them in slightly different ways, in different languages, on different platforms, forever. might as well learn them.
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
Member 14971499 wrote:
The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial.
Then do it in a different way. Sure there is the "standard way" that every tutorial keeps copying, put that aside and find a more interesting way. Do it entirely with bitwise hacks, throw SIMD at it, use memoization on blocks, whatever you can think of. There is a standard way that perhaps you are expected to use in school, but there isn't actually only one way to do it.