博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

ArLi Weng's blog -_~`

一个人不美丽也许是还未了解
  arli.cublog.cn

关于作者
身份Tags:1977,福建福清,上海乡下人,强逻辑,混乱性格,错别字,有妻徒刑,游手好闲

专业Tags:用户,任意编程语言,网络安全,系统集成
|| << >> ||
我的分类


温习程序员必备的基础知识
程序员应当具备的基础知识,欢迎有异议的人士pk来http://arli.go.6600.org,以下示例选用较接近自然语言的java语法,原创内容转载请保留此行
  • 编写程序代码,这是程序员的基本能力了,许多没有在基层干过的同志,永远不会知道程序是怎么被编译和执行的,我打个比方
    • 有限资源
      我们受到这方面教育时,最先学习的是认识有限的计算和存储硬件资源,还记得这个基础的同志,会很留意细节的
      byte[] z=new byte[2]
      for( int i=0; i<100; i++ ){
       z[0]=i;
       z[1]=0;
      }
      而不会是
      for( int i=0; i<100; i++ ){
       byte[] z=new byte[]{i,0};
      }
      尽管它们的区别(分配资源)在一些流行的编译环境并不明显,但确有原则上的问题,在其它各种情形放大后还是很可怕的。
    • 零值比较
      我们其次学习的是bit级别的计算,所以会优先考虑
      String[] columns = new String[resultSetMetaData.getColumnCount()];
      for ( int i = columns.length - 1; i >= 0; i-- )
      {
       columns[i] = resultSetMetaData.getColumnName( i + 1 );
      }
      而不会是
      String[] columns = new String[resultSetMetaData.getColumnCount()];
      for ( int i = 0; i < columns.length; i++ )
      {
       columns[i] = resultSetMetaData.getColumnName( i + 1 );
      }
      因为与0在bit位做比较计算是最快的。
    • 懒人代价
      然后我们开始学习的是撰写代码,人都有懒惰的天性,不象计算机对形势永远忠实,本来应该是
      if (arg1){
       for (int i=0; i < 100; i++ ){
        doabc();
       }
      }
      else {
       for (int i=0; i < 100; i++ ){
        dobcd();
       }
      }
      却写成了
      for (int i=0; i < 100; i++ ){
       if (arg1){
        doabc();
       }
       else {
        dobcd();
       }
      }
    • 然后我们拥有了程序员的基本能力,但往往毕业之后就不会记得在学习阶段所认识的那些知识。

  • 认识数据库,应该说,对于部分人特别是毕业于21世纪的程序员而言,自从有了数据库,整体程序员的代码质量直线下降。。因为许多人完全不考虑数据的存放、排放、分隔和计算问题。。
    往往因为现在提供有许多调用接口(尽管都提供有性能分析器类似的“装置”但那根本不是跟智能一词有关系的)的数据库可以帮我们做很多事,而忘记了,计算机就是用来做数据计算的,不注意数据本身,反而在各种output、视觉表现甚至于如何用ascii字符排成花感兴趣,那是不对的,因为程序员不是产品设计和营销人员,在职能上不要错位了。

    在1995年,我的第一个正式工作是在一个小工厂里用foxbase编写财务软件,我还清楚的记得,应发工资和成品率的最佳计算公式。在那个时代,数据库对我们而言,是对关系数据的计算和整理,然后发展到提供给高级语言做为数据存储组件的时代,我们仍然优秀的认识到它只是一堆数据的有序存放协定,许多工作都要用优良的算法和设计时方式来解决,尽最大可能只将关系结果保存到数据库实体文件中。而绝对不是一句 select where orderby 就可以的了。。
    时不时的在几十万条记录里做未考虑影响的各种数据调用时,那种事情对我们而言是非常难以想像的,尽管它对时下的CPU计算量跟SCSI的吞吐量算小意思的了,就好象许多网站仍然在拥挤的内存中保持着根本用不着那么长超时时间的"Session"对象(不仅是指各w3 server的session对象还意指会话的各关系数据)一样的可笑。

    我们要时刻记得那句实话:数据库只是存储数据之用,它无法象人脑一样具备强大的适应能力。我们不得不考虑缓存机制、数据存储规则的分配,而不要指望于建立索引增加物理内存等等治标的办法。

    有些时候,我们甚至可以忽略掉存储过程这一个概念,因为理论上来讲,如果那种结果数据是必然必需存在的,那就说明那种数据关系是重要的,应当考虑的是组织它,比如间隔刷新到另一个专用的库中。。这当然只是一种比喻,并不是说要拒绝使用存储过程,其意义在于考虑问题的剖面不同,应着力于关系数据的组织和设计,而不是如何实现它,MIS远不止复制一条SQL命令那么简单。
  • 程序员都是管理天才
    程序员,都拥有良好的组织能力和优秀的逻辑性,所以程序员都在不知觉中学会了拥有良好的管理潜能,在大多数情况下,难以置信于一些出奇的纯感性的想法和行为,特别是耦合性。
    所以在有机会从事管理或组织工作时,应相信自己在这方面的才能,辉煌的发扬我们优秀的首期设计对应的组织能力,良好的逻辑条理对应的有序管理机制。
  • 程序员就算上升到了设计、指挥层面,始终必须保持良好的求知、探索天性
    许多人选择了上升到侧重技术的设计层面,其实那更是一个对技术视野和知识要求严格的角色,其角色资格源自拥有广阔的技术视野和开放性思维。
    设计优势在于利用这些视野评估出最佳化的工程状态,需要熟悉各种开发语言、各种现成技术资源及涉及的标准协议、各种系统平台的优劣势,才可以精确出最重要的情报:最短工时(工人关注)、最低成本(经理关注)、最小风险(投资商关注)。
    部分升级后的设计人才幼稚的以为基于并停滞于发展他现有的技术视野,诸不知那样不但会限制了开发商、应用商的环境要求,更无法精确的得出上面提到的三个情报,同样以另一种开发语言、另一种标准或组件方式另一种构架能做到,但那对于企业而言,无形中是一种损失,甚至是竞争失败的主要因素。
    换句话说,程序员只需要了解团队所需要的技术知识,而升级到设计人才,需要了解的许多知识,许多甚至尚未用到的知识,其中当然也包括了程序员阶段对于开发技术其必要的求知和探索天性。

  • 做好思想准备,程序员是最低等的工人
    在现实社会中,计算机软件的代码是可以复制的,所以生产线就是一句复制指令,在这种情况下,程序员的价值就在于一时的利用了,换句俗语那就是:
    google 不是因为别人无法实现 youtube 而花钱收购它的,ebay 的成功也不在于技术层面。
    windows 操作系统并不是只有 microsoft 那些人才写的出来。。
    现今世界首富bill gates是当年在小黑屋里执鞭子的人,而不是之后写程序的人。

    在这种现实情况日益明显的形势下,越来越多并不尊重计算程序技术的情况出现了,比如越来越多的以公众兼容性甚至于为迎合懒惰性情而不是以性能统一为目的的公用类库被集成,许多编写代码的人已经与硬件资源的距离越来越远,甚至于与协议、原理越来越远,更多人甚至热衷于学习各种复杂而公众性极差的各个“厂商”独特的应用技术商品,这其中包括各种基于xmlhttp的东西,各种设计时的浮夸用理念(许多名词不必因为不知而耻,那只是某些人宣扬的属于他们的私自创造的新名词,当然这里面不包括具备整体先进性的公共性质名词)。

    更糟糕的是,连编译器提供商,也越来越多的考虑到的是技术工程队伍上方的管理者,极力的健全和加强这个位置的校对力度、透明组织能力跟绝对管理能力,其最基本的主旨是强化和保证技术工程队伍乖乖地闭着眼睛推磨。。

    还有象microsoft .net framework那样纯粹考虑为microsoft打造企业应用市场的东西,不要去奇怪为什么3.0不能支持Windows2000,每一个.net3的项目都意味着为microsoft多争取了一个肯花钱升级的企业顾客,所谓的某特性不能在Windows2000上实现那可能只是精心设计的借口,
    程序员在microsoft方面,就是那作用被日渐削弱、狭窄领域思维被不断强化的隧道工人,可悲的是,许多工人还都是盲目地忠诚,我也经常基于.net framework写程序,但都止步于利用它,最起码要排斥它的一些专有技术类库。
    警告:因为我跟microsoft几次交道所涉及的都是第三方企业应用技术而且都担当的是低级打手职能,始终没有能力介入microsoft核心团队,所以上文部分内容也许带有个人偏见,应保持客观理解。
    好比,C#的反编译问题,解决了大量的C#代码的学习和传播问题以降低fans大军的门槛,更得到得是越来越多的工人转向B/S模式应用,越来越少的人还会留下来写与microsoft垄断冲突的Windows本体应用。NT之后的microsoft更明显的转而争夺应用服务器市场,并积极地努力将fans们推向那个领域前线去为它抢地盘。
    许多的现实情况都反应出,这些相关商品的直接顾客和业务角色:程序员 却在其间没有任何决定权,甚至在某些企业/公司战略策定环节没有发言权,只能盲目地被蒙上眼睛牵着走,不计短时间内的薪酬待遇,起码所在的那个低阶级层次是毋容质疑的。

    要温习这方面的知识,请静下来花1个小时时间专心看广告节目,最好是广播里的广告节目,在超过20分钟后就会明显的触摸到广告背后的东西。
  • 要学会脱离愚民,保持清醒,随时质疑和审视
    计算机技术人员,跟大部分领域的中等知识分子一样,是一个拥有一定知识并且对自己的认知相当坚定的人群,他们首先容易接受并相信的是以良好逻辑性来描述的东西,所以这种人一旦被操纵,是比较自闭、盲目跟勇猛的。
    microsoft、google、mozilla 在业内所造的势得到了广泛的正面影响,他们慢得要命的邮箱跟网页被许多人所追捧,理由是一个壁上浮影似的词:“就是好”,它的原理跟晚清时花旗国在中国喊那边到处是黄金是一样,只不过,口号已经进化的更加科学和合理。。

    又如,世界上没有任何一个猎手黑客能超过google,它的应用面几乎深入用户的牙缝之中,从名为自动补齐的搜索记忆、集成在浏览器的虚假网站检测,到邮件、事务日历,到深入各个网站的监控广告代码,甚至于鼓励暴露位置的交流标记型地图软件、扫描并记录全部用户文件的桌面搜索。。
    基本上是着力于发展用户连他/她们每天的内裤颜色都要记录在google,换句话说,google拥有fans们的上网时的IP地址和时间、任意时刻所搜索的内容、所浏览的网站、所计划的事件、所收发的邮件甚至硬盘上的文件,房子的门牌号等几乎是全部所能努力收集到的资料。。
    而这一切,不少工程技术人员不但没有危机感,反而对之盲目崇拜,要知道google之有今天全是因为许多工程技术人员帮忙吹嘘的所谓的“高技术实力”,未充分客观某些误解一旦被传染,很可能会造成灾难性的蔓延,而凶手就是刚开始所谓有文化有理解能力却实际只有误解的那些“知识”分子。不知觉当中,也铸就了自己终将寄之蓠下的命运。
    当然这都是题外话了,但做为计算机技术人员,应当保持清醒,随时质疑和审视种种行为以保障我们个体的最大化利益,否则,被利用过程中,可能就意识不到自己所吃的亏。

    在许多时候,作为知识分子,不时刻自我审视,将成为被利用的第一对象,自古以来,书呆是最容易被遥控(未开化的愚民那沟通不顺,高等级智慧分子只谈实际效果,只有自以为拥有知识的中层人员最容易被教化和蛊惑),从以前的各种宗教团体到近代的知识分子动乱再到0x40事件,甚至于搞笑的法X教,其中坚力量都是那些愚笨不化的知识分子。。只要遥控者传播的是他用超强逻辑性打造的各种武器大炮,受捕获之后,其忠诚度和固执性得牛也拉不动。

    要温习这方面的知识,我的建议是健全了解社会影响,找时间阅读《全球通史》,我是学习自北京大学出版社05年的单本版本。

 TAG 程序员 基础知识
发表于: 2008-06-18,修改于: 2008-07-16 12:01,已浏览383次,有评论2条 推荐 投诉


网友评论
网友: 本站网友 时间:2008-06-18 18:07:33 IP地址:123.116.99.★
更多人甚至热衷于学习各种复杂而公众性极差的各个“厂商”独特的应用技术商品。有些学了就不是工人了~~叫顾问比如 SAP.......顾问的工资都可以到 3万-10万不等啊。。。。。。只要你背的过那些参数。做3年。
当顾问的机会 就有了。

Blog作者的回复:
是啊,私用民工头是各厂商都在极力争取的,实际上就是厂商的业务员,哪会不加大力度去推行,但那种影响是一种比较辛苦的资本主义体制下的自我压力,特别是丧失的领域视野,比较可惜。


网友: SAP99资料下载 时间:2008-08-01 06:49:18 IP地址:222.172.220.★
SAP99,支持下,也欢迎访问我的博客,
SAP资料多多
http://sap99.cublog.cn 


http://www.sap99.com

有很多的学习资料,推荐一下,

 发表评论