为什么学习编程?

来源:互联网 发布:软件模型分类 编辑:程序博客网 时间:2024/06/05 02:47

http://www.cprogramming.com/whyprogram.html

 

 

五年以前问为什么学习编程那答案可能很简单:为了得到一份不错的轻松的工作、坐办公室还有6位数的薪水。而现在程序员的市场已经失去了先前的光彩了——不再有谁和他的狗开一家技术公司,得到风险投资,还付给程序员值百万的股票期权价和高工资。

这看来给未来程序员的数量带来不好的影响;在一些大学,计算机推介课程出勤率总是最低的。这的确让人羞惭因为编程真的不是来赚大钱的。尽管如果你非常牛会得到很好的报酬,但是你的学医的同学也不见得会羡慕你的收入一旦还完了他们的医学贷款。但他们会羡慕你的无形资产的。


你可以无所不能


编程的时候你就是造物主。从空白的文本文件到能运行的程序除了你的想象外(可能还有类似你的程序能跑多长的问题)没有任何东西可以限制你。编程就像在乐高积木搭的世界因而没有质料的问题。或者更妙的是,建筑材料都完全可以从网上免费获得。太爽了!

能看到别人在用着你做的东西是件非常惬意的事情。你只要完全掌握了你的计算机那剩下的就是你的想法了,改善你自己你朋友的生活和家人的能力都不受限制。还有,你的工作可以变得极其高质量因为限制的因素不是灵手巧指和别的身体素质。如果你理解一门编程技术那你就可以实现并使用。


苦差事自动靠边


程序员就是出名的懒——实际上,懒就是人们被吸引编程的一个重要原因。既然机器能为你做那些程式的重复的工作你干嘛非得自己做呢?程序员们写了各种简单易用的小工具使得日常生活很轻松——特别是控制生产软件复杂度的工具(比如跟踪程序编写方式的工具,理解正在运行的程序的调试工具)。

每个程序员都有自己的一套简单的工具,这些工具每天都用,从自己写的一个日历提醒程序到大数据量的处理程序(对科学家特别有用)。真的,物理社区有过强大的工具让生活更轻松的历史——在HTTP上的HTML就是这样的一个工具,由蒂姆·伯纳斯一李(Tim Berners Lee)发明最终发展成互联网。最初也就是一个学物理的程序员想出来的为了方便生活的工具。


提高计算机文化 知道“为什么”


技术的故障总是让人们对技术厌烦。就算是像Windows这样的操作系统已经相当稳定了,可是每天还是暴出安全漏洞。对于一个非程序员的人,这些问题很神秘:从来不出错的机器自己就有很多问题,谁知道是怎么一回事?

而程序员却了解这些机器在限制——当花费好几分钟打开一个大文件的时候计算机里面发生了什么,为什么一个特定的安全漏洞是一个问题,为什么大规模的软件工程化这么难。

程序员们知道这些因为他们在自己的程序中就处理过很多这类问题并且和机器的这些东西为伍(根据不同的编程语言而异)。不过也有一些令人兴奋的发现。比如Windows的纸牌游戏变成拉斯维加斯的赌博机怎么能挣无数的美元。可能不如挣真的钱感觉那么好,不过你的朋友中有多少人能在一个小时玩纸牌赚$32000呢?总之,编程让你的思维解放自己,去创造有趣的有用的东西,而不囤于别人已经做过的东西,而当你使用别人的程序时,你会发现能更好的欣赏和理解。




-------------------------------------------------------------

中国人口上不谈钱,谈钱伤感情,可干的很多事直接就是冲着钱去的;外国人也不是不讲钱,可他们也提一份自己的兴趣和个人的意愿来。这篇小文章也是,谈编程的好处没谈职位啊发展啊前途竞争力什么的就那么几个小点,都是关乎自己的事。特别是改善生活方便生活的想法,学习一门知识一项技能为着能更好的生活,这大概能部分解释当代中国人的观念: 中国人直接把钱等同生活,更好的生活就是更多的钱~所以我估计这篇小文章根本不可能打动中国人去有尝试编程的想法,因为这篇小文提出的两个好处是直接与我国国民的理念冲突的:那就是一个人不可能无所不能按着自己的想法来干事;一个人你必须得给我下苦功别偷懒才能有那点子出息。现实中当然不能想干啥就干啥,但我国人是既然不能按着自己意志干那就甭给我扯这些没用的,他们不想也想不出还可以在一个虚拟的世界在精神的空间实现自己的想法。而勤恳的工作和踏实的作风也是赢得我国国民好感的因素。学校的教育就一直是如此,天天搞那些个题海还声称“即使你会了也应该老老实实再过一遍”,而实际这些重复性的匠艺操作到底有什么意义呢……评价别人认真踏实很重要,但对自己未必就那么一本正经,我其实怀疑国人有那么一点让别人当傻瓜自己作旁观的心理来。

中国人对这些技术性的细节只有在整人的时候搜集别人的污点的时候才感兴趣吧,平常对运行的机器和设备不会投以好奇不会想知道为什么,只知道就是这个样子费劲了解这东西有什么用处,但对人与人之间的那点关系学心理学,隐私秘闻却有不可遏制的强劲的兴趣,真不知是不是孔子老人家认为“人”才是最大的学问导致的恶果,反正国人对程序员这种给人下苦的活也鄙夷着呢……

 

 

原文:

Why Learn to Program?

Five years ago, the answer to "why learn to program" may have been simple: to get a nice, cushy job with beanbag chairs and a six-figure salary. Recently, the job market for programmers has lost some of its previous luster--no longer can anyone and his dog start a tech company, get venture capital, and pay programmers a combination of stock options and worth millions and a high salary. 

 

This seems to have taken its toll on the number of prospective programmers; at some colleges, intro computer science classes are at all-time lows in attendance. This is a real shame because programming isn't really about making the big bucks. Though you will certainly be well paid if you are very good, your doctor friends are unlikely to be jealous of your finances once they pay off their medical school loans. 

 

They will, however, be envious of the intangibles. 

You Can Play God

When you program, you are a creator. You go from a blank text file to a working program with nothing to limit you but your imagination (and maybe some issues like how long your program takes to run). Programming is like having access to the absolute best set of legos in the world in almost unlimited qualities. Even better, you can get all of your building materials completely for free (once you own a computer) on the internet. Amazing! 

 

It's also great fun to see someone using something that you made. Your ability to improve your life and the lives of your friends and family is limited only by your ideas once you can take full control of your computer. Moreover, your work can be extremely high quality because the limiting factor is not manual dexterity or other non-mental attributes. If you can understand a programming technique, you can implement and use it. 

Automate Away Daily Drudgery

Programmers are famous for being lazy--in fact, being lazy is one reason people are drawn to programing. After all, why do something routine and repetitive when you could have your computer do it for you? Programmers have written all sorts of simple-to-use tools that make life easier for them--especially tools to manage the complexity of creating software (for instance, tools to help keep track of all the ways of making a program, or debugers to help improve their understanding of a running program). 

 

But more than that, every programmer has a collection of simple tools that he or she uses on a day-to-day basis, from custom calendar reminder programs to processors for large data sets (especially useful for scientists!). Indeed, the physics community has a history of writing powerful tools that make their lives easier--one tool, HTML over HTTP, created by Tim Berners Lee, eventually became the world wide web. It was originally designed by a physicist programmer coming up with ways of simplifying his life. 

Improve Your Computer Literacy and Know the Answer to the "Why" Questions

People are often frustrated by technology when it fails. Although operating systems such as Windows have become much more stable, there are still many security holes exploited every day. For a non-programmer, these issues are mysteries: the machine that never makes mistakes is full of problems, and who knows why? 

 

Programmers, on the other hand, are familiar with the limits of the machine--what happens inside the computer when it takes several minutes to open large files, why a particular security hole is a problem, and why it's so difficult to get large-scale software projects right. 

 

They understand it because they've dealt with most of these issues in their own programs and work with the ``stuff'' of the machine (to varying degrees across different programming languages). This can lead to some exciting finds, such as realizing how you can earn thousands of dollars in Windows solitaire set to Las Vegas style. Maybe not as good as earning real money, but how many of your friends have made $32K on under an hour playing cards? 

 

In sum, programming lets you work with your mind to free yourself to create things that are interesting or useful instead of being limited by the confines of what others have done before, and even when using those other things, you'll find that you can better appreciate and understand them.