Shortcut for chapter specific information

Monday, September 26, 2011

Fellows, don't plagiarize in programming

Unlike many, I don't think the word plagiarism is equivalent to copying.   Some copying can be good, for example, when you have a book filled with text, if you want to make another copy.  Before Gutenberg, that means you would need to create a new print to print it.   On the other, you can simply do a command cp to copy an existing file to make an copy verbatim.   Behind that mechanism, bunch of system calls were made but essentially it's just to duplicate something.   Honestly, that is a rather fascinating things. 

That's said, that means I believe there are good copying as there are bad.   I tend to believe copying in academia is bad because promoting copying could easily discredit the person who really generate the idea in the first place - as a result, not many would then be motivated in thinking of a new idea.   This is indeed the case.  A good example is the Academia in China and India.   It's not unheard of that some Universities from Mainland China copy famous research and claim that it is theirs.    The general public is relentless on pirating software and there is always a way to do so.  As a results, you seldom hear a new idea generated from a Chinese academic publication.   Many are small tweaks.   Those are actually good.   Some are plain-right copy to take care of some kind of requirements in the University.  

Ideas are the source of innovations, innovation is the source of greater efficiency.   If you kill ideas, innovation is gone, when innovation is gone, efficiency will leave you as well.   That's why in general, you would generally feel that an economy based on copying can be glimicky and shallow.  

Now, all being said, programming is not such an academic discipline.   In fact, there are moments we just have to use other people's program.  So why should you care whether you copy something from the internet?    At the end, it depends on whether you want to finish *your job* by *yourself*.   If you copied and you understand how it works, there act of copying is not much different from an act of extracting convenience.  For example, if you understand quicksort, getting a quicksort implementation will allow you to change the partition function.   If your goal is to do an experiment on different quicksort, it sorts of make no sense to implement quicksort from scratch.  

On the other hand, if you are working on a project and require you to write an algorithm from scratch but you decided to choose copy the program *without understanding it), this usually spells trouble in future.  What if you were asked to change the behavior of the program?    What if some body to extend it?  How would you take care of your job?  Those would be moments when your temporary gain in time now will cost you much time in future. 

Another point I would make is that thinking through or grok the nature of one thing, usually bring understand on the other.    What is the act of programming anyway?   All the grandiose theories aside, once you know a certain algorithm, programming is just typing.    Think about insertion sort, I spend quite a bit of time to practice how to write one. Now I can pretty much put it on paper and it will run.  Time taken? depends on my typing. Usually around 2 minutes including compilation and test.  If you know what you are doing for sure, many of your tasks would usually take you 10 minutes to write the first version of the program.    The time which is really costly is the time of debugging.    This is efficiency. 

So my friends who were directed here by Google, allow me to advise you on this.  Don't plagiarize in programming.  You are actually getting slower and slower each time when you copy programs and treat it as your work.  NOT FASTER. NOT FASTER because you hadn't learnt a single thing of the problem.  You are the one who got hurt most in the process. Not me. 

33_P

No comments:

Post a Comment