【新手向】程序员相关概念梳理

    PC机的时代来了又走了,网络的时代来了又走了,移动互联网的时代已经到来了这么久。在刚过去的互联网大会上大佬们又说移动互联网的风口也已结束了,接下来将是人工智能的时代。无论如何,这些日子中各类传统行业备受冲击,程序员的需求量则是越来越大(当然现在可能是中高端程序员)。我有很多中学同学大学同学转行成为了程序员,包括我自己也是。一路走来,确实有很多东西可以分享的。
    程序员又名码农,当然是要写代码的,但很可能这只占小部分时间。与同事沟通、思考方案、看代码、改错、学新技术等等同样是程序员的日常,接下来我就系统的来介绍程序员相关的方方面面。要了解程序员的生活可以看美剧《硅谷》 http://v.qq.com/detail/t/tfoqgmev13kk1ig.html?ptag=baidu.aladdin.tv  
        
     程序员的价值在于编写软件,操作系统就是最大的软件。软件和硬件一起,能大大提高生产、沟通的效率,并提供新的娱乐方式。 硬件是实实在在的硬盘、显示器、CPU等等,那么软件是什么?软件就是信息,是物质的排列规则,是硬件的灵魂。
     软件可分为面向企业和面向个人用户的,同样软件公司也可分为这两类。面向企业的更强调顺畅沟通、降低成本和后续维护,面向个人的更强调商业模式、市场运营和版本迭代。在一个软件公司中,岗位大致有:研发、产品、测试、美工(UI)、市场、人力资源(HR)、行政等。其中研发和产品一般是公司的核心,待遇也最高。产品是设计软件是什么样子,测试是测试软件有没有问题,美工是提供各种图片制定软件界面标准,市场是推广产品明确用户需求,人力资源是招人等。
     研发又分为产品开发和技术研发。产品开发是不断开发新版的软件,技术研发是研究更底层或者更先进的技术。产品开发又分为客户端和服务端,客户端开发用户使用的产品,服务端在服务器上负责为这些产品提供数据。客户端又分为移动端、电脑端和网页端,分别使用不同的语言进行开发。要了解具体要求和各大公司可以到看准网(我没收钱) http://www.kanzhun.com/ 。

     就像人类有多种语言一样,计算机语言也有很多,有的古老有的年轻。它们同样遵循语言学,有着明确的语法和单词,同时比人类的语言更为严密。目前流行的语言有java、javascript、python、html、object-c、swift、c#、c++、c、mathmatica、matlab等等。至于为什么它们叫这些奇奇怪怪的名字我也说不清,有中文语言“易语言” 但多用于中小学生入门。其中安卓开发、服务端开发用java,网页开发、测试用html、javascript、python,苹果开发用object-c、swift,windows开发用c#,linux开发、底层开发用c++、c,数值计算用mathmatica、matlab。
     虽然语言很多,但各类语言的结构是类似的,包括引用、定义、赋值、表达式、条件、循环、函数。具体可以买本《XXX30天从入门到精通》、《深入浅出XXX》等,或者到知乎上搜一搜推荐书单。要开始写程序,首先要搭好开发环境(即安装好各类软件),第一次做往往很蛋疼。因为这这意味你将开始接触底层,手动配置很多属性面对很多报错。
     程序写好后进行编译(翻译),编译器会将程序链接上相应的库(即需要引用的别的程序),然后把程序一步步翻译成操作系统和硬件可以接受的程序。如果没有错误的话程序就可以运行了。一般程序是调用相应语言的库和第三方库,这些库再调用操作系统给出的接口(api),操作系统再来操作具体的硬件。所以操作系统、计算机网络、编译原理是程序员的三大基础课,但写程序实际打交道的更多是各种库。要补各种计算机课的话,可以上网易云课堂 http://study.163.com/category/it 等等。

     充分了解自己语言相关的库,对于一个程序员来说是必要的。了解方式是可以看书、看代码、看博客,最根本也最难的方式是看官方文档(一般都是英文)。库分为控件库和逻辑库,控件即直接显示在界面上的各种东西,比如一个按钮、一个文本、一个进度条等。逻辑即处理各种事件,比如点击一个按钮后、收到从服务器获取的数据后。由于现在软件越来越庞大更新的越来越快,软件也像计算机系统、计算机网络一样分了很多层级。
     常见的一个分层方式是:界面层、逻辑层、数据层,即MVC模式。其中逻辑层又可再细分,分成高层逻辑、中层逻辑和底层逻辑。高层逻辑与功能相关,换了一个功能就得重写代码。中层逻辑与功能无关,但与语言有关,可以用在别的功能上,但不能用在别的语言上。底层逻辑与语言也无关,一般是用c++或者c写的,可以被任何语言调用,因而可以应用在各种设备上。通过这样的分层,减少了重复代码,减少了各个程序间的依赖关系,从而更适合大家协作更易于扩展和维护。
     在此基础上,框架和设计模式又出现了。框架就是别人帮我们设定好了程序的分层方式和各层级的联系,我们往里面填东西就好了。用写文章来打比喻,框架就是文章的目录,每一个章节的主题。而设计模式比框架更为抽象,是指一个框架应该遵循的原则。我们理解了设计模式,就可以去设计自己的框架了,在文章中就是对应议论文的总分总、小说的起承转合等。各类语言中正流行的库和框架可以上大名鼎鼎的https://github.com/上搜搜,这些我一直听人提起但很晚才接触到,目前也算是我的弱项。至于设计模式则可以一边多学习优秀框架,一边买两本书看看。

     终于说到git了,上面的github网站就是使用了git的一个代码管理平台。git是程序员的协作神器,是一个分布式版本控制工具。通过git我们可以同时在很多台电脑上保存同一个程序各种各样的版本,并快速方便的在这些版本间来回切换,这对于多个程序员一起写一个软件几乎是必须的。一般使用命令行来操作git,所以程序员还得学会命令行、vim(命令行文本编辑器 )的操作。
     除此之外,在一个企业中,客户端的程序员还得与服务端的程序员协作,得与产品协作、与美工协作,并及时的把进度报告给项目经理,所以还有其它的协作软件或网站。在此不一一细说,这些进了公司之后学起来还是挺快的。当然,如果是小公司或者个人开发者,很多协作的东西也可以不用会,可以当面沟通或者完全外包给别人。如果产品和美工什么的也都自己来解决,虽然没有任何沟通成本,但跨界这么多实在是有点难搞有些头大,我就试过这种感觉哈哈...

     好了,说了这么多。如果你没有任何基础而想成为程序员,那么你该怎么办呢?首先是瞄准好两三年后将会流行需求量较大的技术进行学习,具体可以上网搜搜。其次交学费不困难的话可以考虑报个短期培训班入个门熟悉下开发环境,当然更重要是选好方向找好书单。边学写程序、边学计算机理论,写程序的进阶路线:语法——逻辑——使用库,边看书边写代码边熟悉开发工具。学计算机理论的进阶路线:计算机组成原理——操作系统——计算机网络,边看视频边看书。这个不太好实践,兴趣不大的话把基础理论背熟能解决常见笔面试题就好了。此外还有个算法,越大的公司越为看重,如果你数学学的好可能对它很有兴趣,数学不好就还是别折磨自己了。总而言之算法就是减少重复、不必要的计算量和资源使用来提高程序性能,尽量最优的解决问题。关于算法有本圣经一样的书:《算法导论》。我就是学算法出身的,但实际工作中暂时还没有直接派上过用场。
     写了这么多,算是把程序员相关的概念大致介绍了一遍,希望你对写程序这个词的概念更了解了,也知道程序员的世界是怎么样的了。如果有更多相关疑问欢迎交流,睡了两天懒觉明天又得早起了诶,good night~ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值