|
Member 14971499 wrote: Life is a torture, whatever path in life you take... Sorry for all those messages, I'm so disapointed with life... |
I would very seriously advise you to seek help: talk to family and friends and don't let despair get the best of you. Pound for pound, grey matter and specially functioning grey matter is one of the rarest commodities on Earth and once you've be given a few pounds of it, you should take good care of it.
Getting back to your dissapoinmets with CS and without knowing anything about your program:
- Keep in mind that you cannot have any program tailored specifically for you. There are others in your class that might have different needs. Be considerate to them.
- There is no "perfect" method for teaching any science let alone "computer science". I put that in quotation marks because I'm not even sure it's truly a science or an art (Knuth titled his seminal work "The Art of Computer Programming"). Your instructor tries to teach you at the same time the syntax of a programming language, some basic data structures and algorithms and maybe give you a feeling for what real world problems might look like. It is hard to do all that. Be considerate of his efforts.
- There is always a balance between reinventing the wheel and blindly doing copy/paste from the Internet. Learn when you can get something already made and when you have to use your own grey matter.
To finish, let me tell you the story of my first program: first year; first CS course; language was FORTRAN (yes, I'm old). I meet a friend in second year and tell him I was bored with the homework (kind of like you) and he says "I have an interesting problem for you: write a program to find all the positions of 8 queens on a chessboard so that no one attacks another one."
I write the program and, surprise, it doesn't work. My logical conclusion is that the compiler has made a mistake and I decide to search for it. I get the assembly language listing of my program and start analyzing it. But to do that I have first to learn assembly. Then I start marveling at how the compiler knew how to translate program and in the process I learn about formal languages, LL(n) and LR(n) grammars.
Never finished my eight queens program but I've learned so much in the process. Don't get dispirited if you run into a silly problem like bubble sort or game of life. Turn it into an interesting problem if you can. For bubble sort read Knuth's volume on sorting an searching and try to solve some of his problems.
Mircea
|
|
|
|
|
Thank's It was intresting and funy story and nice advice. I feel much better after reading this
modified 3-Jun-21 21:01pm.
|
|
|
|
|
It lets you ace the Google interview process! My coding is entirely self-taught, and whilst I know I could learn about sorting algorithms, I never needed to. That is, until I tried interviewing at Google, and there some HR drone gave me technical questions that relied on one knowing the details of sorting algorithms for the majority of them. Capped off by a couple of other questions where the accepted answer was actually wrong, but given the interviewer was not technical, there being no possibility to point out where the answer was wrong, I think I managed a perfect duck's egg score (ie zero), in spite of more than 35 years of fairly intensive programming experience on quite advanced codebases.
|
|
|
|
|
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.
Ravings en masse^ |
---|
"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 |
|
|
|
|
|
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.
|
|
|
|
|
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!
|
|
|
|
|
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.
|
|
|
|
|
Well, OOP is good in that sense that it doesn't require from you that you copy and paste it line by line. You just import some library and call an appropriate method so that you can focus on solving problems which aren't solved yet.
modified 3-Jun-21 21:01pm.
|
|
|
|
|
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.
|
|
|
|
|
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.
|
|
|
|
|
Just get through it the best you can.
I have used very little of my CS degree in any of the work I have done in 16+ years as a developer.
bubble sort, never had to use it or understand it in any real world solution. That's me though. Other people's stories may be different.
get your CS degree so you can get your first couple of jobs, then after that, it is pure work experience.
If you are still doing this after 5-7 years, you will probably do it for life.
good luck.
|
|
|
|
|
Honestly I only ever use either quicksort or insertion sort. Though exactly once bubble sort has been the best choice due to particularities of the procedure that computed the results to be sorted AND particularities of the output I needed.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
I can 'sort' of relate.
Seriously though, I remember the boredom of learning to code by typing lines of code from a textbook, building silly little programs that did nothing original. In the intro level classes, one could get by just by following the spoon-fed examples from the book without much critical thinking. I can only guess that in the copy/paste age the boredom level has increased as you aren't even bothered with the typing aspect...actually reading through the program as you are constructing it.
If you are in a formal program, you are just going to have to play the game. The classes will get harder as you progress and hopefully you'll feel more challenged. If not, there's all kinds of coding boot-camps and on-line courses that may be more what you are looking for.
At any rate, I would suggest that you start by creating development tools that could prove useful down range...a better FTP utility, a database scripting utility, a password keeper...it doesn't matter, just something that helps in your daily activities...whatever, just make it your own...design it and build it from scratch.
Don't confuse college exercises for real-world development. We're not just a bunch of robots copy/pasting code. (though done correctly, is quite acceptable) This job is at it's core is about solving problems for people using software...and getting paid well when you succeed.
IMHO, software development is a craft where you can take nothing, make something, and charge people for it, just like artists, writers, poets, musicians, actors, etc. What we do might not always be sexy, but sometimes creativity is defined by not even noticing it. (a developer somewhere figured out how to get rid of a couple of nasty nested for loops by using a struct/array and your app loads much faster, who knows? If you noticed at all, it likely only increased your expectations.) Is that creativity, or just not being satisfied with the current incarnation of the wheel?...or quite possibly the result of an angry customer/boss who just expects them to do their job?
So figure out what personal project you want to do and design and build it. Given the vast wealth of information at your fingertips, you are really only limited by your imagination and your will power. Good luck! BTW, I'd probably stay away from being a writer as your post has a few grammatical/readability issues. (of course, so does mine, but I'd be the last to call myself a writer!)
"Go forth into the source" - Neal Morse
"Hope is contagious"
|
|
|
|
|
Think of it that way... Why do people learn Pythagoras theorem and its various proof? This thing is at least 2000 years old! Plus how does that help with everyday work?
Well, it's not at all about learning the algorithm by rote at all. It's about practicing your brain muscle, learning new ways of thinking, finding it yourself again easily when you forgot the theorem.
I see your complain 2 ways. Either learning algorithm is tedious, which often expresses itself as "boring", and you need to practice. Or it really is easy, and then you only have to spend 5 minutes on it and perhaps you can secretly do something else while the teacher is dronning on... Or add some fancy unrequested twist to your demo...
|
|
|
|
|
I spend a significant amount of time reading and analyzing stuff written by others.
I do this to learn, and the world is full of smart people willing to share their knowledge through papers and open source projects.
There is also no lack of software developers who manage to trick themselves into believing they have come up with simple a solution to a complex problem - here are two common examples:
- Synchronizing state across multiple systems is hard to get right, but can be done using Paxos or Raft. This needs to be properly handled when decisions will be made based on state information shared by multiple systems.
- Scheduling is hard, problems like job shop scheduling and nurse scheduling may sound easy, but you cannot even pick the right algorithm for a particular problem without understanding it.
There are often multiple algorithms that are known to provide a solution, but the performance can vary wildly depending in the input data.
So, IMHO, get on with the learning - don't just - as you say - copy and paste solutions written by others.
Espen Harlinn
Chief Architect - Powel AS
Projects promoting programming in "natural language" are intrinsically doomed to fail. Edsger W.Dijkstra
|
|
|
|
|
Basically you want to build starships without knowing what's a hammer.
I saw many like you, they think that being creative meant there was no need of knowledge. And they are fast to copy paste from other works without *thinking*. I fixed many of their "works" because they did not know what they needed, what they were doing, what they were copying and where.
If tomorrow I will enroll to run in the Olympics I will not win: I need to train from the very scratch to be able to participate, let alone compete. If you refuse to learn the basics then, by all means, change career now that it's easier.
There's no fault in realizing some path is not for you. Maybe you will find yourself better in electronics? The programming is easier and there's more tinkering, which seems to suit your mindset more than the somewhat rigid world of Computer Science.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
For a brief period, I was a teacher at the first year of an undergrad CS course. Most students where stunned, because for them computers were: internet, games and editing on Word. When they realized what it was like on the other side of the mirror, many simply gave up.
|
|
|
|
|
Having attended a Technical High School in Computer Science and then the Polytechnic University, I saw that happen twice. Behind the mirror sent many people running away way before they saw code, flow charts managed that on their own.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
Well, I don't find it easy at all. I think that I wrote my message in the way that people misunderstand. I don't say those exercises are easy. No, they are extremly hard for me. Otherwise I wouldn't need to memorize them from the book. What I'm sad about most is that I don't have freedom to do my own programs and by that I don't mean building a compiler or a chess engine. I mean using my basic knowledge and my own logic to create something from the beginning to the end. And I don't mean a gps-system for a car or new facebook. I can make a whole textbased console rpg with only if statements, System.out.println(), and Scanner in java. So yes, it's possible to make simple and fun programs that aren't just pure algorithms. You don't have to be programming virtuoso to build whole programs.
But I know that it isn't what software engineering is about. That's why I'm angry at myself that I didn't check that out before I enrolled in CS-courses. I thought programming was similiar to art making, just you did it with the code. But in programming you must follow the istructions and your creativity is hardly restricted. Imagine if all artists were only allowed to make art by using a brush of certain size, from particular shop, from a particular shelf, made by a particular branch on a A4-sized- paper that only is allowed to be white and is made of a particular tree from a particular jungle and the only thing that they were allowed to paint was a tree with only brown and green paint. And imagine that there was an artist who wanted to paint a dog, and every other artist would bash him and say" Why are you so full of yourself? Paint a leaf first and than think about the whole picture" and he would answer: "But I feel like my creativity is chocked by all those rules. I feel like I'm only copying the same tree that everyone else does" and they would bash him again: " You just lack imagination! Who is forcing you to copy? Just stop do it and do it yourself, paint the leafs in brown color and the tree in green. See how many possibilities you have?". This is how I feel about programming.
modified 3-Jun-21 21:01pm.
|
|
|
|
|
I think you are missing the point. Using the karate kid as a metaphor, Daniel wasn't learning how to wax a car. He was learning a fundamental movement, by repeating it over and over.
You are not copying other people's solution, you are learning those solutions, implementing them, and hopefully understanding then.
Because in the real world, you will be using other people's code and you need to understand how you can use it *without* reading it. And when it fails, you need to know where to look.
Take coding guidelines as an example. You might think of them as boring and stifling creativity, which is not true. They allowed me to dig into to the source of a program, fixing bugs and adding features *without* having to know how the program works in excruciating detail. For the most part, I could be confident that changing a couple of lines would not cause havock.
These boring tasks are not stifling creativity. They are the essential bedrock on which your creativity can stand. Quoting Edison, "genius is 1% inspiration and 99% transpiration".
|
|
|
|
|
Building software using pre-written, debugged, documented and supported components is the smartest thing we can do as developers. We absolutely should not re-invent the wheel.
You can choose to be either a low-level component developer - this is a huge market. You would get to employ all your raw computer science learning and be as close to the machine as you can to derive maximum performance from your components.
Or at the other end of the scale you could choose to be a high-level business systems developer, where re-assembling and integrating large components to build business software which fits the precise requirements of the corporation is the order of the day.
All developer roles have their own unique challenges and I personally welcome having the wide choice of components, allowing me to focus on solving actual customer problems where business communication skills are of equal importance than coding ability.
My advice would be find your preferred level. Low, mid, or high, or something in between? Change jobs if necessary. The software industry is going to be around for a long time and is incredibly varied.
Read the 'Mythical Man Month'. Only 17% of any software project is coding. That statistic may help you find your ideal role.
Garry Lowther
CEO and Founder
TriSys Business Software
Cambridge, England
www.trisys.co.uk
|
|
|
|
|
"Maybe I should be a writer instead?"
If you want to do that then start splitting your thoughts into paragraphs. Your posts in this thread are too dense to take in.
|
|
|
|
|
This is a forum, not a book. And besides, you probably noticed already. English It's not my motherlanguage You don't have to read my posts anyway. Why are you torturing yourself, are you a masochist?
modified 3-Jun-21 21:01pm.
|
|
|
|
|
Until you retire, a "job" pays for your "hobbies"; which includes being "creative" (like a "writer").
The chances of meeting similar-minded on any given job are slim to none ... because they're all "on the job". And no boss will ever let an underling be "creative". Too much of a threat.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|