导航:首页 > 程序命令 > 程序员写博文

程序员写博文

发布时间:2022-12-07 16:02:42

程序员一般喜欢浏览哪些网站呢能否推荐一二

CSDN (Chinese Software Developer Network) 创立于1999年,是中国的IT社区和服务平台,为中国的软件开发者和IT从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多。很多大牌的老司机,还依然喜欢这个博客平台。

② 刚踏入职场的程序员,如何快速踏实地提升自己的能力

程序员提升主要靠实践,跟一个完整的项目能最大限度的提升项目能力,以后找工作不用愁啊,现实工作中很难达成,你可以去找找培养这方面人才的,提升一下自己,你看看愿码ChainDesk,有你需要的

③ 关于C加加和java

  1. C++之父评论C++与Java

    http://soft.yesky.com/info/223/2414723.shtml

  2. linux之父炮轰C++:

    http://os.51cto.com/art/200709/55562.htm?1366380720

  3. Java之父评价C语言之父:我用尽了形容词

    http://www.csdn.net/article/2011-10-19/306010?1366380958



如果人们非要拿C++和Java来作比较,我建议他们去阅读TheDesignandEvolutionofC++,看看C++为什么是今天这个样子,用我在设计C++时遵从的原则来检验这两种语言。这些原则与SUN的Java开发小组所持的理念显然是不同的。除了表面语法的相似性之外,C++与Java是截然不同的语言。在很多方面,Java更像Smalltalk。(Sun的培训教材清楚地写道:Java在设计上采用了与C++相似的语法,与Smalltalk相似的语义。所以可以说Java与C++是貌合神离,与Smalltalk才是心有灵犀。)Java语言相对简单,这部分是一种错觉,部分是因为这种语言还不完整。随着时间的推移,Java在体积和复杂程度上都会大大增长。在体积上它会增长两到三倍,而且会出现一些实现相关的扩展或者库。这是一条每个成功的商业语言都必须走过的发展之路。随便分析一种你认为在很大范围内取得了成功的语言,我知道肯定是无有例外者,而且实际上这非常有道理。

上边这段话是在Java1.1推出之前写的。我确信Java需要类似模板的机制,并且需要增强对于固有类型的支持。简单地说,就是为了基本的完整性也应该做这些工作。另外还需要做很多小的改动,大部分是扩展。1998年秋,我从JamesGosling(Java语言的创始人)那里得到一份建议书,说是要在Java中增加固有类型、操作符重载以及数学计算支持。

还有一篇论文,是数学分析领域的世界级大师,伯克利大学的W.Kahan教授所写的HowJava'sFloating-PointHurtsEveryoneEverywhere(且看Java的浮点运算如何危害了普天下的芸芸众生),揭露了Java的一些秘密。我发现在电视和出版物中关于Java的鼓吹是不准确的,而且气势汹汹,让人讨厌。大肆叫嚣凡是非Java的代码都是垃圾,这是对程序员的侮辱;建议把所有的保留代码都用Java重写,这是丧心病狂,既不现实也不负责任。Sun和他的追随者似乎觉得为了对付微软罪恶的“帝国时代”,就必须如此自吹自擂。但是侮辱和欺诈只会把那些喜欢使用不同编程语言的程序员逼到微软阵营里去。

Java并非平台无关,它本身就是平台。跟Windows一样,它也是一个专有的商业平台。也就是说,你可以为Windows/Intel编写代码,也可以为Java/JVM编写代码,在任何一种情况下,你都是在为一个属于某个公司的平台写代码,这些代码都是与该公司的商业利益扯在一起的。当然你可以使用任何一种语言,结合操作系统的机制来编写可供JVM执行的程序,但是JVM之类的东西是强烈地偏向于Java语言的。它一点也不像是通用的、公平的、语言中立的VM/OS。私下里,我会坚持使用可移植的C++作大部分工作,用不同的语言作余下的工作。

“Javaisnotplatform-independent,itistheplatform”,B.S的这句评语对于C++用户有着很大的影响,有些C++高手甚至把这句话作为自己的签名档,以表明对Java的态度和誓死捍卫C++的决心。

糟糕程序员的垃圾语言(1)2007-09-0913:33刘江刘江@图灵我要评论(14)字号:T|TLinux之父为Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注。DmitryKakurin查看源代码之后,发现使用的是纯C而非C++,表示不可理解。引起了Linux之父炮轰C++:糟糕程序员的垃圾语言。AD:2013大数据全球技术峰会低价抢票中

Linux之父炮轰C++:糟糕程序员的垃圾语言Linux之父话糙理不糙不得不看的两次从C++回归C的高手评论C++C语言是否该扔进垃圾桶为什么每个程序员都应该学习C语言?每个程序员都应该学习C语言?我可不这么认为C语言已经死了,5个需要忘却它的理由用C设计用C++编码为什么使用C++C++0x:崭新的C++,还是另一个Java?编程语言的三大定理动态语言为何难堪重任动态语言面面观Linux之父LinusTorvalds为了Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注。昨天,有一位DmitryKakurin老兄在查看了源代码之后,发现使用的是纯C而非C++,表示不可理解,他直言:“别拿可移植性说事儿,这是屁话(BS,bullshit)。“(此外,他还批评Git蛮力地直接操作文本,既啰嗦又易错,而且很难跟上高层代码逻辑。)”这个BS引起了Torvalds的强烈反应,他用“*YOU*arefullofbullshit.”(你才满嘴屁话呢)作为自己反驳的开场白。接着,他先转向了对C++的罕见的火药味十足的炮轰:“C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾(totalanttercrap)。老实说,选择C就是为了把C++程序员踢出去。……我有这样的结论,任何喜欢用C++而不是C开发项目的程序员可能都是我希望踢出去的人,免得他们来搞乱我参与的项目。C++会导致非常非常糟糕的设计选择。你们这些C++程序员总是一上来就用语言的那些‘漂亮的’库特性比如STL、Boost和其他彻头彻尾的垃圾,这可能对你们的程序有所‘帮助’,但是却会导致:

——当库无法工作时无穷无尽的折磨(别跟我说什么STL尤其是Boost很稳定而且可移植性很好,那全是屁话,而且一点都不可笑)

——低效的抽象编程模型,可能在两年之后你会注意到有些抽象效果不怎么样,但是所有代码已经依赖于围绕它设计的‘漂亮’对象模型了,如果不重写应用程序,就无法改正。也就是说,使用优秀的、高效的、系统级的和可移植的C++的唯一方式,最终还是限于使用C本身具有的所有特性。项目限制只用C,意味着参与的人不会捣乱,也意味着会得到许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’垃圾的程序员。

所以,我很抱歉,但是对于Git这样效率是主要目标的软件,C++的所谓优点只是巨大的错误。而我们将看不到这一点的人排除在外却成了一个巨大的附加优势。如果你想要用C++写的版本控制系统,去玩Monotone吧。他们确实使用了‘真格的数据库’,使用了‘漂亮的面向对象库’、使用了‘漂亮的C++抽象’。可是说老实话,所有这些对某些计算机专业人士而言富于吸引力的设计决定,其最终结果确是一堆可怕、难以维护的垃圾。”【070907更新】Torvalds和DmitryKakurin争论继续中。对Torvalds的回击,Dmitry反唇相讥:“随着只用C编程的恐龙们逐渐灭绝,你很快就会发现只剩下自己一个人在固执己见。用Git贡献者的数量是说明不了问题的。<显然C++开发者也能够贡献C代码。但是以为他们喜欢这种方式,那可就错了。

没有C的时候我用汇编编程。然后在C++诞生之前,我转向了C。现在我使用C++和C#,而且不再走回头路。差劲的程序员用任何语言都写不出好程序。但是为了将差劲的贡献者拒之门外这样一个没谱的理由而惩罚优秀的开发者,这简直是胡闹。”只过了10几分钟,Torvalds就回贴了:“和你不同的是,我实实在在地给出了不喜欢C++的原因,而且指出了它可能导致的各种问题的一些例子。而你呢,没有给出一条像样的使用C++的理由。事实上,Git比其他软件配置管理软件都要好,而好的品味(taste)和C正是原因之一。”

对上面的最后一句话,Torvalds后来又做了如下补充:

“说得更具体一些:

——简单和清晰的核心数据结构,非常精益(lean)且颇具雄心的暧昧管理着它们,将“简单胜于花哨”这一方法发挥到极致。

——有意识地不抽象数据结构和算法,因为它们恰恰是Git核心的全部要素(wholepoint)。 如果你想用更花哨的语言,C++绝对是最糟糕的选择。如果想要真正的高级特性,那就选择有垃圾回收或者好的系统集成的,而不是既缺乏C的简约(sparseness)又缺乏C的直接而且没有重要概念的高层绑定(high-)的东西。 一言以蔽之,C++正处在困境当中,它既无法帮助原型化或者简单的GUI编程足够简化从而真正可用,不是C那样积极地鼓励你使用简单和直接的语言构造的精益系统编程语言。” (另一位同学插了一句:这还没有提到很难找到两个C++编译器支持同样的特性。)“这与什么恐龙毫无关系。好的品味永远不会过时。将C与汇编语言相提并论,恰恰说明你对自己所讨论的问题缺乏起码的概念(don'thaveafrigginidea)。”


摘要:Java之父JamesGosling在上周发布了关于讨论C语言之父DennisRitchie的简短博文称:C语言撑起了一切,他的影响巨大,并超越了科技世界。

Java之父詹姆斯·高斯林(JamesGosling)在上周发布了关于讨论C语言之父丹尼斯·里奇(DennisRitchie)的简短博文:丹尼斯·里奇辞世的新闻如五雷轰顶。过去几天已经有很多资讯报道此事。他的影响巨大,并超越了科技世界,虽然他的大多影响都不为人知,但完全可以感受到。C语言撑起了一切。我的整个职业生涯也是从C语言和Unix中发展而来。对当今的大多数工程师而言,很难理解我在20世纪70年代感受到的幸福愉快感。当一种编程语言最终出现,我(其他人也)可以从汇编语言提升到一种真正的编程语言。我们可以做任何一切,过去我们得编写所有低级位系统。在C语言之前,编程语言达不到任务:开销太大了。系统的复杂性是真的阻碍了用汇编语言编写大型软件。C语言就像代码的JATO。(编注:“JATO”是“Jet-fuelassistedtakeoff”的缩写,字面意思:“辅助起飞的喷气燃料”。这个系统通过小型火箭提供辅助动力,以帮助超载的飞机起飞升空。)下面是詹姆斯·高斯林此文的一些评论:TruelyJames.,.dentertaining.RIPRitchie!!!说的很对,詹姆斯!对于每个计算机专业人士,他们所接触的第一种编程语言就是C语言。(C语言)有着如此多的令人惊奇的地方,这也使得学习过程非常有趣。安息,里奇!!!Greatonesarefalling.IstillloveC.Sosimple.Sopowerful.一位巨星的陨落。我仍然爱着C语言。如此简单,如此强大。:.'tfound.Itwasagoodtime.我记得C语言就是程序员的冒险:有很多小坑,一不小心就陷进去。即便很多年过后,还有一些我没有发现的。那是个美好时刻。Theequationisquitesimple:RichieislikeEinstein,pureGenius.AlltheITisbuiltonK&amp;Rworks.Thanksman,andRIP...等式非常简单:里奇就像爱因斯坦,纯粹的天才。IT业的所有都基于肯贝汉和里奇的成果。感谢,安息……文章出自:nighthacks译文来自:伯乐在线

④ 程序员6年只干了50个小时工作,被开后称是编写了自动化工作脚本

很久之前,Reddit上出现了一则匿名的自白帖子:“ 大概六年前到现在,我在公司什么活都没干 。”

这个化名为FiletOFish1066的程序员称自己供职于一家知名的 科技 公司,实际上无所事事。

他写道,谋得这份质量保证工作的八个月后,他使自己的全部工作完全自动化。“我可不是开玩笑。每周40个小时,我去上班,在办公室玩《英雄联盟》,浏览Reddit,想干啥就干啥。 在过去这六年,正儿八经的工作我可能也就干了50个小时 。”

上司意识到他在六年内所做的工作比大多数硅谷程序员在一周内所做的工作还少后,就把他开除了。

这个故事在网上的技术圈子迅速传播开来,最终促使这位主人公不仅删除了帖子,还删除了整个帐户。

我发现歪果仁也跟中国人一样爱看热闹,不嫌事大!

大概一年后,一个自称是Etherable的用户向互联网上最重要的程序员论坛之一Stack Exchange上的Workplace版块发了一个问询帖:

“我没有告诉雇主我的工作已自动化,这是否不道德?”这位内心矛盾的程序员说,他接受了一份美其名曰是“数据录入”的编程活;六个月前,他编写了使整份工作自动化的脚本。此后,“ 上一个人过去常花一个月才能完成的工作现在只要10分钟就能完成。 ”这份工作是专职性质的,带来的好处是Etherable可以在家办公。

这个程序取得了近乎完美的效果。

后来这个帖子引起了分歧,评论铺天盖地。(现在浏览量将近50万人次。)意见分成两大派,一派觉得Etherable在欺骗雇主,至少在蒙蔽雇主;另一派认为这个程序员只是找到了一种巧妙的方法来完成手头的工作。Etherable从未回应随至而来的讨论。也许是被受到的关注程度(世界各地的媒体都在竞相报道此事)吓坏了,这个用户销声匿迹,只留下了那则帖子,关于谁可以使工作自动化、在什么样的条件下这么做的讨论越来越备受关注。

可以称之为自发自动化(self-automation)或自行自动化(auto-automation)。在大规模自动化这个幽灵困扰一线员工的那一刻,自行其事的程序员表明这个威胁到了程序员的手里,如何变成天赐之物,不管雇主是不是知情。由于FiletOFish1066和Etherable都匿名发布帖子,随后很快消失,因此两人都联系不上,无法请他们发表评论。但他们的故事表明,职场自动化会有多种形式,并由高管以外的人来主导。

生性乐观的经济学家和未来学家吹嘘, 自动化的好处在于,将工作交给机器有望消除无须动脑子的重复性工作 ,让人们可以一心扑在有趣又有创造性的工作上,或者更要紧的工作上。

砖家你确定现在程序员干的都是不动脑子的工作?

你还确定,时间多出来之后,

程序员会干有创造性的工作?!

几十年来程序员们一直在编写使工作自动化的代码。编程通常需要用到在不同的层面(从代码格式化到合并至不同的代码库)添加自动化的工具,大多数人根本没有走到使工作完全自动化或几乎完全自动化这个极端。

我通过Reddit和电子邮件的私聊信息与十来个声称有类似经历的程序员聊天。这些自发自动化人士处理过库存管理、报表编制、图形渲染、数据库管理和各种各样的数据输入。

有个人还使他妻子的全部工作自动化。大多数人要求匿名,以保全工作和声誉。

一位很早是自发自动化人士的名为Gary的程序员告诉我:“一开始,我的工作每天实际上要干8个小时。”他在一家大型企业连锁酒店工作,这家连锁酒店在90年代开始实现计算机化工作流程。Gary很快意识到在花大量时间重复同样的任务,于是他开始 下班后学习编程 。他说:“大概 花了三个月的时间,我用Lotus 1-2-3(当时一款很流行的PC电子表格软件)编写了一段代码,不仅使个别的重复性任务自动化,实际上还使整份工作自动化 。”他没有一五一十地告诉上司,其职场生活的质量大大提高了。

他告诉我:“一整天很空闲感觉怪怪的,于是我趁空了解酒店的其他系统。”后来他帮助管理层消除了那些系统中的瓶颈。自行自动化消除了琐碎的工作,减轻了他的压力,并让他可以扑在真正感兴趣的事情上。他说:“实际上,我将这份岗位变成了自己喜爱的岗位,即排查故障。”在离开公司前两周,他交给老板一张软盘,里面装有这个程序和解释如何运行的说明文档。Gary说,老板对他辞职颇为不安,直到他交出了软盘,介绍程序如何运行,并告诉老板万一有问题可以打电话给他,老板才放下心来。 后来电话没来过一个。

在大多数领域,一线员工对于他们的工作是否自动化,或者如何实时、何时实施自动化很少有任何正式的意见。自发自动化人士明白,自由化由势必从中收益的一线员工、而不是由自上而下的公司命令来安排自动化会什么样。一些人欣然享受多出来的闲暇时间,另一些人利用多出来的时间来学习新技能,应对新的编程挑战。

ps:你确定不是玩手机?

不过,许多自发自动化人士害怕与办公室外面的人分享代码。即使一个程序无可挑剔地完成了工作,许多人还是觉得为牟私利而搞的自动化是错误的。人力劳动本质上是善良的(以及员工应始终最大限度地为雇主提高生产力),这比任何自动化脚本更深深地融入到美国的职场文化中。而大多数雇用合同明文规定,工作时间开发的知识产权属于雇主。因此,员工可能所做的任何效率提升或自动化改进都往往归雇主所有。

一位程序员没有把他使其工作完全自动化的真相告诉公司,因为担心公司到时声称知识产权归公司,并拒绝补偿他。另一位只肯自称是Jordan的人告诉我,他曾无意中使整个部门的工作自动化。现在他用自动化脚本每年省下“好几周”的时间。Jordan表示,他和同事们保持缄默,绝不透露自动化技术,以便控制使用自动化技术的方式:“我们通常不对外透露这些工具。”

另一位程序员竭力向老板隐瞒使其年薪5万美元的工作完全自动化的概况。管理层可能通过网络查看其电脑屏幕上的内容, 于是他运行预先录制的视频,掩盖他实际上没在工作的事实。 Etherable在寻求建议的帖子中写道:“我觉得这么做不对。”

一些程序员表示,就因为使工作自动化,自己已被公司炒鱿鱼。2011年,一个名为AcceptableLosses的用户写道:“ 公司拿去了我开发的软件,派一个白痴顶替我,并立即以“不服从”为由解雇了我 。我开发了一款每年让这家公司获利100万美元的软件,对方却仅仅为了省下每年约3万美元的工资而开除了我。我真是自掘坟墓啊。”

正因为如此,自发自动化人士担心的倒不是道德问题,而是不想被雇主开除或盘剥,正如伍德科克特别指出的那样,雇主“不仅要求我们的所有时间归他,我们开发的所有东西也归他。”他推测,谨慎的自发自动化人士“不信任我们的工作场所。上司会说‘谢谢你,干得漂亮。现在再做一次。’”

很少有员工渴望完全自我自动化,但似乎越来越多的员工对于使用脚本来处理繁忙工作感兴趣。网络上有众多这方面的博文和实用文章,比如《我如何用Node JS使我的工作实现自动化?》,也有众多播客介绍每一种想象得到的自动化:小公司、营销和智能手机。这简直就是一个蓬勃发展的家庭手工业。

照目前情况来看,自发自动化大有助益。但随着自动化技术变得更广为人知,它们可能完全成为管理层期望员工拥有或学会的另一种技能,并最终让企业受益,并以另外某种方式使这些人成为有用的员工。

《哈佛商业评论》杂志写道:“员工将越来越需要使自己的工作自动化,否则就滚蛋。放眼全球,我们会看到更多自上而下的管理层命令,要求搞自下而上的自动化项目。”而老板及员工开发的机器人软件会再次品尝胜果。

在此之前,任何使用代码的人都可能应该考虑自发自动化带来的好处。可以以此来测试自动化如何为普通员工带来更高的生活质量,尽管谈不上完美。伍德科克告诉我:“问题在于自动化要有效,自动化要民主化。不是公司企业在提供自动化,这向前迈出了一步。它仍然不是民主化过程。”自发自动化人士在单独行动,决定何时、如何把自己的工作换成代码。而理想情况下,自动化决策将在同事和同行给出意见的情况下共同做出,以便可以均匀分摊好处。

自发自动化人士表示,程序员有独特的条件,可以与雇主就员工应该保留哪些自动化带来的效益展开谈判,比如时间更短的工作周以及更灵活地从事自己感兴趣的工作。从理论上来讲,自发自动化人士可以在属于中产阶级和工薪阶级的程序员当中组织和分配自动化技术,从而打造有望实际上获得15小时工作周的一个行业。这似乎是千载难逢的机会,可以努力为把人放在首位的自动化模式创造条件。

你如何看到互联网蓬勃发展,越来越多产业自动化发展,今后人们能做什么呢?

欢迎评论

点击【右上角,关注 子瑜说IT 】持续更新IT资讯以及web前端开发教学

⑤ 如何看出一个程序员的技术能力和水平

其实,评论一个程序员技术的高低,不是看他会多少技术,又懂多少技术。参加过什么大型的项目,也不是看他有没有自己的博客,github有多少star。
而是看他解决问题,定位问题的能力。这个很重要,真的很重要。
技术可以很快上手使用,但是解决问题定位问题的能力不是轻易就行的。特别是在高压下解决问题的能力。
下面是师姐为大家整理的一些建议:

解决问题
1.代码的命名要规范。
代码是写给人看的好嘛!代码是写给人看的好嘛!代码是写给人看的好嘛!
headImg是什么鬼?我能以为是banner么,头部的图片,请原谅我蹩脚的中式英语!avatar这个呢、portrait这个呢?会不会更好些?英语不好就不能用好有道、google翻译么?还有用中文拼音命名的,亲,我们用的是英文做为脚本好么?你要用这样的,用易语言可好?!

疯了!
为什么要用框架?一个很重要的原因是命名规范,目录规范,结构规范,分层规范,有利于团队协作,不要本末倒置!
2.架构和规划能力很重要,模块分层,解耦设计什么的,文件目录嵌几层?
这其中又跟命名的能力能搭上点关系。命名都命不好,目录结构怎么建?
url不要做的漂亮些吗?不考虑seo了?
你喜欢addGoods还是喜欢goodsAdd?
请你尊重点我的那些初高中英语语法好么?

3.协助能力、可持续能力。
最好的程序代码是脱离其产生者的。
为自己程序处处救火的程序汪并不是一条好汪。
我记得一句话就是:别想着你的代码以后还有机会重构!
每次说,额,这里我后面会改的,会改的,但是可惜,现实情况是根本不会给你这个时间的。
代码写出来,一是要爽了自己,二是也要爽了别人。

4.debug的能力、总结能力、学习能力真的很重要,代码写出来真的花的时间不长,但擦屁股的时间比写代码的时间多多了!
出了问题不记录,写个博文都好啊,我可没那么强大的记忆力,所以最讨厌考记忆力。
5.不要一贯的使用各种算法,秀算法的你们够了,要写去写底层,应用的场景比较多。
应用层面的程序,算法的应用不是特别多,大部分都是业务代码。以这个作为评价标准的,真心然并卵。

⑥ 要成为一名专业的程序员,从零开始需要怎么一步步来比较好,要把最底层的先学精通吗(个人认为)求学长

前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)
建议:
不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。
回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。
一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。
启蒙入门
1、 学习一门脚本语言,例如python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用Javascript操纵HTML元件。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 网上有免费的章节,足够用了。或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
在一台机器上配置Apache 或 Nginx
学习php,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
学习一个javascript库(例如jQuery 或 ExtJS)+ Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。
HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
买个域名,租个空间,做个自己的网站。
进阶加深
1、 C语言和操作系统调用
重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。
学习(麻省理工免费课程)计算机科学和编程导论
学习(麻省理工免费课程)C语言内存管理
学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西。
用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)
用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。
用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。
学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)
学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)
IPC和Socket的东西可以放到高级中来实践。
学习Windows SDK编程(Windows 程序设计 ,MFC程序设计)
写一个窗口,了解WinMain/WinProcere,以及Windows的消息机制。
写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。
学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。
这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。
不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。
2、学习Java
Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)
学习JDK,学会查阅Java API Doc Java Platform SE 6
了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。
学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。
3、Web的安全与架构

学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。
学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章)
学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)
学习Web的静态页面缓存技术。
学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
实践任务:
使用HTML5的canvas 制作一些Web动画。
尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。
把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站
4、学习关系型数据库
你可以安装MSSQLServer或MySQL来学习数据库。
学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……
学习数据库的存过,触发器,视图,建索引,游标等。
学习SQL语句,明白表连接的各种概念(参看《SQL Join的图示》)
学习如何优化数据库查询(参看《MySQL的优化》)
实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。
5、一些开发工具
学会使用SVN或Git来管理程序版本。
学会使用JUnit来对Java进行单元测试。
学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。
推荐阅读《代码大全》《重构》《代码整洁之道》
高级深入
1、C++ / Java 和面向对象
我个人以为学好C++,Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++”
学习(麻省理工免费课程)C++面向对象编程
读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)
然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,异常,虚函数,等等。
实践任务:
用C++实现一个BigInt,支持128位的整形的加减乘除的操作。
用C++封装一个数据结构的容量,比如hash table。
用C++封装并实现一个智能指针(一定要使用模板)。
《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)
实践任务:
使用工厂模式实现一个内存池。
使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。
使用命令模式实现一个命令行计算器,并支持undo和redo。
使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。
学习STL的用法和其设计概念 - 容器,算法,迭代器,函数子。如果可能,请读一下其源码
实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能
做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。
做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片。
学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)
Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式)。
推荐阅读《Effective Java》 and 《Java解惑》
学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等。
Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。
学习使用Java做Web Service (官方教程在这里)
实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。
C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个。我个人的学习经历是:
深究C++(我深究C/C++了十来年了)
学习Java的各种设计模式。
2、加强系统了解
重要阅读下面的几本书:
《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。
《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。
《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。
实践任务:
理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。
写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。
写一个简易的HTTP服务器。
《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。
实践任务:
主要实践各种IPC进程序通信的方法。
尝试写一个管道程序,父子进程通过管道交换数据。
尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。
学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event, 信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。
实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。
有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)
实践任务:通过以上的所有知识,尝试
写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)
了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。
3、系统架构
负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)
多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。
CDN系统 – 就近访问,内容边缘化。
P2P式系统,研究一下BT和电驴的算法。比如:DHT算法。
服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。
虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。
学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
学习Hadoop。Hadoop框架中最核心的设计就是:MapRece和HDFS。MapRece的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapRece就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。
了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

⑦ 要做程序员需要学会什么

其实简单来说,程序员的工作就是使用编程语言,根据需求写出一个程序。
但是,在这个过程中,涉及如下几个方面:

使用的编程语言 程序员需要选择一门或者多门语言来编程,不同的语言适合编写不同的程序,目前主流编程语言包括,Java、JavaScript、Python、C++、php以及其他小语种等等,每种编程语言适合开发的程序有所不同。目前从程序应用分来,主要可以分为三类a 企业应用,主要用于解决企业业务。各种企业管理后台系统,银行系统,公安系统,图书管理系统等等。
b 互联网应用,面向互联网用户,为互联网用户提供各类服务。比如现在的京东淘宝各类电商系统等。
c 移动应用,各类在移动端使用的APP,有面向互联网用户的APP,也有面向企业内部的APP。
目前相对而言,在移动应用和互联网应用方面,资本投入比较热的风口,程序员的薪资较高。企业应用,发展了很多年,相对平稳。

2. 明白需求,实现需求
需求就是编写程序的要求。一个程序要编写成什么样子,具备哪些功能,都是由需求来具体说明。程序员要需要能看懂需求文档,并且能准确地使用编程语言,根据需求中的要求来编写成程序。企业开发的项目,往往会由该程序的架构师提供一个程序框架,程序员在该框架的规范下进行编程,实现需求的功能,以确保程序的规范、可读,以及可维护性。

3. 日常工作写程序
一个软件开发一般流程是产品经理根据用户需求做一个项目出来,然后UI设计师做一些图片设计,前端开发编写页面,后台开发编写核心编程,然后介入一些大数据和人工智能,通过测试之类上线实施,后期还有运维进行相关维护。
程序员一般大多指的是前端和后台写代码程序的开发人员,除了编写代码,可能还需要通过接口和其它系统对接,实现系统间的数据交换。像单体测试,是程序员对自己写好的程序单元进行测试,检测这个程序单元数据输入和数据输出是否符合预期等等。测试出来的问题,需要修改正确,然后再测试,直至没有问题。和同事共同开发的时候也需要联合测试,以及用户测试过后如果存在BUG继续进行修改。

⑧ 我又不是靠你吃饭什么意思

我又不是靠你吃饭,意思就是我又不吃你的,不喝你的,我自己养自己,所以我的事情你也没必要说

⑨ 请教,推荐几本java类书籍

1、《Effective Java(第三版)》(Effective Java 3rd Edition)
如果你还没读过这本书,那它绝对是 2019 年你必须读的第一本书。第三版是一个长期版本,其实它早就该出版了。这版书也囊括了 JDK 7、8、9 的新特性。
我在 1 月份的第一个星期就拿到了这本书,它绝对是约书亚·布洛克(Joshua Bloch)给 Java 程序员非常好的新年礼物。
我花了大概一个星期就读完了这本书。我发现读的过程中,时常碰到新的知识点,特别是关于 Java 8 和 Java 9 的。
2、《写给大忙人看的Java SE 9(第二版)》 (Core Java SE 9 for the Impatient (2nd Edition))
如果你急着学 Java 那我推荐这本书给你。我是凯 S·霍斯特曼 (Cay S. Horstmann)的一个忠实粉丝,他的文采之优美、涉猎之广,都让我很是佩服。
你读了他写的关于 Java 8、Scala 的书以及《Java 核心编程》之后,绝对也会成为他的粉丝。这本书已经针对 Java SE 9 全面更新。如果你想学习 Java 9,那2018年你应该先读读这本书。
3、《Spring 微服务实战》(Spring Microservices in Action)
软件开发世界正在加速转向微服务架构,它在开发、维护、部署、扩容性及可靠性等方面有很多优势。
感谢 Spring framework 提供这么多开发微服务的 Java 工具,比如 Spring Boot 和 Spring Cloud。
如果你对用 Spring framework 开发微服务有兴趣,那么这本书很适合你。
2019年Java学习,依旧正在进行时,身为一个踏入Java坑的老码农,深感技术学习就是一个无底洞,需要不断的去挖掘新的技术,为了跟上时代的发展,需要时时关注技术更新,进行学习,不过随着技术的不断深入学习,收获还是不小的,正在向着资深技术官迈进!

⑩ 程序员学习一般去哪些网站

学习网站大体分两类,一类国内网站,一类国外网站,国内的网站有w3c网,学习网页前端知识,python,php,java官网,mysql数据官网,当然也有综合类网站比如:菜鸟,最后就是论坛,官网都有友情链接过去。国外网站需要翻过去访问。下面是部分知识点

1.确保堆栈上至少有 n 个额外空位。如果不能把堆栈扩展到相应的尺寸,函数返回假。失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈;
void lua_close (lu a_State *L);
2.销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们),并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。
int lu a_compare (lua_State *L, int index1, int index2, int op);
比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件和丛满足,函数返回 1 。 这个函数遵循 Lua 对应的操作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。
3.连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。
void lu a_ (lua_State *L, int fromidx, int toidx);
从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。
void l ua_createtable (lua_State *L, int narr, int nrec);
4.创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会指棚嫌有多少个元素;参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数
lua_mp
把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_mp 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。
5.如果唯手 strip 为真, 二进制代码块将不包含该函数的调试信息。
最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。
该函数不会把 Lua 函数弹出堆栈。

希望能帮到你,谢谢!

阅读全文

与程序员写博文相关的资料

热点内容
怎么把电脑里文件夹挪出来 浏览:693
java流程处理 浏览:683
ftp创建本地文件夹 浏览:659
腰椎第一节压缩 浏览:738
xp去掉加密属性 浏览:117
2345怎么压缩文件 浏览:982
迷你夺宝新算法 浏览:407
服务器如何防止木马控制 浏览:715
压缩空气用电磁阀 浏览:742
微信为什么不能设置加密认证 浏览:672
邓伦参加密室逃脱视频 浏览:391
音频压缩编码标准 浏览:300
常提到的app是表示什么 浏览:261
天津程序员传销 浏览:349
下班之后的程序员 浏览:73
检测支持ssl加密算法 浏览:344
衢州发布新闻什么APP 浏览:85
中国移动长沙dns服务器地址 浏览:252
wifi密码加密了怎么破解吗 浏览:599
linux命令cpu使用率 浏览:70